From e9f09254203dc7f98edc0d012498ffd477193bbf Mon Sep 17 00:00:00 2001 From: samhere06 <118881732+samhere06@users.noreply.github.com> Date: Fri, 22 Aug 2025 15:48:13 +0530 Subject: [PATCH 01/91] Upgrade Angular to version 19 and other dependencies as well (#319) * updated override version * removed override core * updated for angular 19 * updated material and other packages for angular 19 compatibility * updated package.json in packages/components * updated based on comment * refactor: remove unused imports and clean up component code --------- Co-authored-by: mohas22 Co-authored-by: Siva Rama Krishna --- package-lock.json | 5464 +++++++++++------ package.json | 64 +- packages/angular-sdk-components/package.json | 6 +- .../component-mapper.component.ts | 1 - .../alert-banner/alert-banner.component.ts | 1 - .../alert/alert.component.ts | 1 - .../banner/banner.component.ts | 1 - .../case-create-stage.component.ts | 1 - .../field-group/field-group.component.ts | 1 - .../material-case-summary.component.ts | 1 - .../material-details-fields.component.ts | 1 - .../material-details.component.ts | 1 - .../material-summary-item.component.ts | 1 - .../material-summary-list.component.ts | 1 - .../material-vertical-tabs.component.ts | 1 - .../operator/operator.component.ts | 1 - .../pulse/pulse.component.ts | 1 - .../rich-text-editor.component.ts | 1 - .../wss-quick-create.component.ts | 1 - .../auto-complete/auto-complete.component.ts | 1 - .../cancel-alert/cancel-alert.component.ts | 1 - .../field/check-box/check-box.component.ts | 1 - .../field/currency/currency.component.ts | 1 - .../field/date-time/date-time.component.ts | 1 - .../_components/field/date/date.component.ts | 1 - .../field/decimal/decimal.component.ts | 1 - .../field/dropdown/dropdown.component.ts | 1 - .../field/email/email.component.ts | 1 - .../field/group/group.component.ts | 1 - .../field/integer/integer.component.ts | 1 - .../list-view-action-buttons.component.ts | 1 - .../multiselect/multiselect.component.ts | 7 +- .../field/percentage/percentage.component.ts | 1 - .../field/phone/phone.component.html | 6 +- .../field/phone/phone.component.scss | 9 + .../field/phone/phone.component.ts | 18 +- .../radio-buttons/radio-buttons.component.ts | 1 - .../field/rich-text/rich-text.component.ts | 1 - .../scalar-list/scalar-list.component.ts | 1 - .../semantic-link/semantic-link.component.ts | 1 - .../field/text-area/text-area.component.ts | 1 - .../text-content/text-content.component.ts | 1 - .../field/text-input/text-input.component.ts | 1 - .../_components/field/text/text.component.ts | 1 - .../_components/field/time/time.component.ts | 1 - .../_components/field/url/url.component.ts | 1 - .../user-reference.component.ts | 1 - .../flow-container.component.ts | 1 - .../hybrid-view-container.component.ts | 1 - .../modal-view-container.component.ts | 1 - .../view-container.component.ts | 1 - .../action-buttons.component.ts | 1 - .../assignment-card.component.ts | 1 - .../infra/assignment/assignment.component.ts | 1 - .../dashboard-filter.component.ts | 1 - .../infra/defer-load/defer-load.component.ts | 1 - .../error-boundary.component.ts | 1 - .../infra/multi-step/multi-step.component.ts | 1 - .../infra/navbar/navbar.component.ts | 1 - .../infra/region/region.component.ts | 1 - .../root-container.component.ts | 3 - .../infra/stages/stages.component.ts | 1 - .../_components/infra/view/view.component.ts | 1 - .../template/app-shell/app-shell.component.ts | 1 - .../banner-page/banner-page.component.ts | 1 - .../case-summary/case-summary.component.ts | 1 - .../template/case-view/case-view.component.ts | 1 - .../confirmation/confirmation.component.ts | 1 - .../data-reference.component.ts | 1 - .../default-form/default-form.component.ts | 1 - .../details-narrow-wide.component.ts | 1 - .../details-one-column.component.ts | 1 - .../details-sub-tabs.component.ts | 1 - .../details-three-column.component.ts | 1 - .../details-two-column.component.ts | 1 - .../details-wide-narrow.component.ts | 1 - .../template/details/details.component.ts | 1 - .../dynamic-tabs/dynamic-tabs.component.ts | 1 - .../field-group-list.component.ts | 1 - .../field-group-template.component.ts | 1 - .../field-value-list.component.ts | 1 - .../inline-dashboard-page.component.ts | 1 - .../inline-dashboard.component.ts | 1 - .../template/list-page/list-page.component.ts | 1 - .../template/list-view/list-view.component.ts | 1 - .../multi-reference-readonly.component.ts | 1 - .../narrow-wide-form.component.ts | 1 - .../one-column-page.component.ts | 1 - .../one-column-tab.component.ts | 1 - .../one-column/one-column.component.ts | 1 - .../template/page/page.component.ts | 1 - .../promoted-filters.component.ts | 1 - .../repeating-structures.component.ts | 1 - .../simple-table-manual.component.ts | 1 - .../simple-table-select.component.ts | 1 - .../simple-table/simple-table.component.ts | 1 - .../single-reference-readonly.component.ts | 1 - .../template/sub-tabs/sub-tabs.component.ts | 1 - .../three-column-page.component.ts | 1 - .../three-column/three-column.component.ts | 1 - .../two-column-page.component.ts | 1 - .../two-column-tab.component.ts | 1 - .../two-column/two-column.component.ts | 1 - .../wide-narrow-form.component.ts | 1 - .../wide-narrow-page.component.ts | 1 - .../wss-nav-bar/wss-nav-bar.component.ts | 1 - .../app-announcement.component.ts | 1 - .../widget/attachment/attachment.component.ts | 6 +- .../case-history/case-history.component.ts | 1 - .../feed-container.component.ts | 1 - .../file-utility/file-utility.component.ts | 1 - .../list-utility/list-utility.component.ts | 1 - .../quick-create/quick-create.component.ts | 1 - .../_components/widget/todo/todo.component.ts | 1 - .../widget/utility/utility.component.ts | 1 - .../lib/angular-sdk-components.component.ts | 3 +- .../_samples/embedded/embedded.component.ts | 1 - .../embedded/header/header.component.ts | 1 - .../main-screen/main-screen.component.ts | 1 - .../full-portal/full-portal.component.ts | 1 - .../main-content/main-content.component.ts | 1 - .../navigation/navigation.component.ts | 1 - .../side-bar/side-bar.component.ts | 1 - .../angular-test-app/src/app/app.component.ts | 1 - projects/angular-test-app/src/styles.scss | 4 - projects/angular-test-app/src/theme.scss | 3 +- 126 files changed, 3561 insertions(+), 2146 deletions(-) diff --git a/package-lock.json b/package-lock.json index 951cc7d1..b4728110 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,20 +9,20 @@ "version": "24.2.12", "license": "SEE LICENSE IN LICENSE", "dependencies": { - "@angular/animations": "^18.2.12", - "@angular/cdk": "^18.2.13", - "@angular/common": "^18.2.12", - "@angular/compiler": "^18.2.12", - "@angular/core": "^18.2.12", - "@angular/forms": "^18.2.12", - "@angular/material": "^18.2.13", - "@angular/material-experimental": "^18.2.13", - "@angular/material-moment-adapter": "^18.2.13", - "@angular/platform-browser": "^18.2.12", - "@angular/platform-browser-dynamic": "^18.2.12", - "@angular/router": "^18.2.12", - "@danielmoncada/angular-datetime-picker": "^18.1.0", - "@pega/auth": "~0.2.28", + "@angular/animations": "^19.2.14", + "@angular/cdk": "^19.2.19", + "@angular/common": "^19.2.14", + "@angular/compiler": "^19.2.14", + "@angular/core": "^19.2.14", + "@angular/forms": "^19.2.14", + "@angular/material": "^19.2.19", + "@angular/material-experimental": "^19.2.19", + "@angular/material-moment-adapter": "^19.2.19", + "@angular/platform-browser": "^19.2.14", + "@angular/platform-browser-dynamic": "^19.2.14", + "@angular/router": "^19.2.14", + "@danielmoncada/angular-datetime-picker": "^19.0.0", + "@pega/auth": "~0.2.31", "@tinymce/tinymce-angular": "^8.0.1", "core-js": "^3.39.0", "dayjs": "^1.11.13", @@ -30,26 +30,26 @@ "fast-deep-equal": "^3.1.3", "libphonenumber-js": "^1.10.53", "lodash.clonedeep": "^4.5.0", - "ngx-currency": "^18.0.0", - "ngx-mat-intl-tel-input": "^5.0.0", + "mat-tel-input": "19.0.5-0", + "ngx-currency": "^19.0.0", "rxjs": "^7.8.1", "tslib": "^2.8.1", - "zone.js": "~0.14.10" + "zone.js": "~0.15.1" }, "devDependencies": { - "@angular-builders/custom-webpack": "^18.0.0", - "@angular-devkit/build-angular": "^18.2.12", - "@angular-devkit/core": "^18.2.12", + "@angular-builders/custom-webpack": "^19.0.1", + "@angular-devkit/build-angular": "^19.2.15", + "@angular-devkit/core": "^19.2.15", "@angular-eslint/eslint-plugin": "^18.4.0", "@angular-eslint/eslint-plugin-template": "^18.4.0", "@angular-eslint/template-parser": "^18.4.1", - "@angular/cli": "^18.2.12", - "@angular/compiler-cli": "^18.2.12", - "@angular/language-service": "^18.2.12", - "@pega/configs": "^0.16.2", + "@angular/cli": "^19.2.15", + "@angular/compiler-cli": "^19.2.14", + "@angular/language-service": "^19.2.14", + "@pega/configs": "^0.16.3", "@pega/constellationjs": "~24.2.2", "@pega/pcore-pconnect-typedefs": "~3.2.2", - "@playwright/test": "^1.40.1", + "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", "@types/node": "^20.10.8", @@ -58,9 +58,9 @@ "brotli": "^1.3.3", "codelyzer": "^6.0.2", "compressing": "^1.10.1", - "copy-webpack-plugin": "^12.0.2", + "copy-webpack-plugin": "^13.0.1", "eslint": "^8.56.0", - "eslint-plugin-import": "^2.31.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-jest": "^28.9.0", "fs-extra": "^11.2.0", "jasmine-core": "~5.1.1", @@ -70,15 +70,15 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "md5-file": "^5.0.0", - "ng-packagr": "^18.2.1", + "ng-packagr": "^19.2.2", "npm-force-resolutions": "0.0.10", "npm-run-all": "^4.1.5", "postcss": "^8.4.49", - "shx": "^0.3.4", + "shx": "^0.4.0", "tinymce": "^6.8.6", "ts-node": "~10.9.2", - "typescript": "^5.4.5", - "webpack": "^5.96.1" + "typescript": "^5.5.4", + "webpack": "^5.101.2" } }, "node_modules/@ampproject/remapping": { @@ -96,49 +96,49 @@ } }, "node_modules/@angular-builders/common": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@angular-builders/common/-/common-2.0.0.tgz", - "integrity": "sha512-O5YJc++DtJVJhqA/OomRKN2jGYzvU/YXtfrPAqcA9Is3Ob5jvV0L0JHSAjSw/KaLvk/FjBIqoRVcYdLp5LKddA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@angular-builders/common/-/common-3.0.1.tgz", + "integrity": "sha512-AIIqWtlr3sc2+CTEOqbDsrpVvkT6ijfYzvzPk1HLFrcP9Y2tYLXVFc+gGThlE+e1Om0pKminXcINEqm3J/yY5g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "^18.0.0", + "@angular-devkit/core": "^19.0.0", "ts-node": "^10.0.0", "tsconfig-paths": "^4.1.0" }, "engines": { - "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" } }, "node_modules/@angular-builders/custom-webpack": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-18.0.0.tgz", - "integrity": "sha512-XSynPSXHq5+nrh7J2snfrcbvm6YGwUGQRzr7OuO3wURJ6CHOD9C+xEAmvEUWW8c1YjEslVNG7aLtCGz7LA4ymw==", + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/@angular-builders/custom-webpack/-/custom-webpack-19.0.1.tgz", + "integrity": "sha512-UXsMg0UgttwAwKAuKduwr9fUrQbN//ylaL4+qbBzdZcfEwyHYGzqprvdEgCcx0CgFKED72Z3OmY8ekNJZ5panA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-builders/common": "2.0.0", - "@angular-devkit/architect": ">=0.1800.0 < 0.1900.0", - "@angular-devkit/build-angular": "^18.0.0", - "@angular-devkit/core": "^18.0.0", + "@angular-builders/common": "3.0.1", + "@angular-devkit/architect": ">=0.1900.0 < 0.2000.0", + "@angular-devkit/build-angular": "^19.0.0", + "@angular-devkit/core": "^19.0.0", "lodash": "^4.17.15", - "webpack-merge": "^5.7.3" + "webpack-merge": "^6.0.0" }, "engines": { - "node": "^14.20.0 || ^16.13.0 || >=18.10.0" + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0" + "@angular/compiler-cli": "^19.0.0" } }, "node_modules/@angular-devkit/architect": { - "version": "0.1802.20", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.20.tgz", - "integrity": "sha512-nNUv2541/X4V0vtT2F6wCT+/GAY8v+J8MRMh8kGBVdyV9EdtSTWxHAvE1WhX5uE7VUCNegDfElxvAR9Vq8qSig==", + "version": "0.1902.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.15.tgz", + "integrity": "sha512-RbqhStc6ZoRv57ZqLB36VOkBkAdU3nNezCvIs0AJV5V4+vLPMrb0hpIB0sF+9yMlMjWsolnRsj0/Fil+zQG3bw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.20", + "@angular-devkit/core": "19.2.15", "rxjs": "7.8.1" }, "engines": { @@ -158,17 +158,17 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.20.tgz", - "integrity": "sha512-wjWFSpu4PJgASB6ZkYMFspK1oLuzdyZhyjB14y+/5+qqoCRroFyaEhhOHfzqHF2dwH8+rOg6E2r4vkre94duPQ==", + "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==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.20", - "@angular-devkit/build-webpack": "0.1802.20", - "@angular-devkit/core": "18.2.20", - "@angular/build": "18.2.20", + "@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", @@ -178,48 +178,43 @@ "@babel/plugin-transform-runtime": "7.26.10", "@babel/preset-env": "7.26.9", "@babel/runtime": "7.26.10", - "@discoveryjs/json-ext": "0.6.1", - "@ngtools/webpack": "18.2.20", + "@discoveryjs/json-ext": "0.6.3", + "@ngtools/webpack": "19.2.15", + "@vitejs/plugin-basic-ssl": "1.2.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", - "babel-loader": "9.1.3", + "babel-loader": "9.2.1", "browserslist": "^4.21.5", "copy-webpack-plugin": "12.0.2", - "critters": "0.0.24", "css-loader": "7.1.2", - "esbuild-wasm": "0.23.0", - "fast-glob": "3.3.2", + "esbuild-wasm": "0.25.4", + "fast-glob": "3.3.3", "http-proxy-middleware": "3.0.5", - "https-proxy-agent": "7.0.5", "istanbul-lib-instrument": "6.0.3", "jsonc-parser": "3.3.1", "karma-source-map-support": "1.4.0", - "less": "4.2.0", + "less": "4.2.2", "less-loader": "12.2.0", "license-webpack-plugin": "4.0.2", "loader-utils": "3.3.1", - "magic-string": "0.30.11", - "mini-css-extract-plugin": "2.9.0", - "mrmime": "2.0.0", + "mini-css-extract-plugin": "2.9.2", "open": "10.1.0", "ora": "5.4.1", - "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.6.1", - "postcss": "8.4.41", + "piscina": "4.8.0", + "postcss": "8.5.2", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.77.6", - "sass-loader": "16.0.0", - "semver": "7.6.3", + "sass": "1.85.0", + "sass-loader": "16.0.5", + "semver": "7.7.1", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.31.6", + "terser": "5.39.0", "tree-kill": "1.2.2", - "tslib": "2.6.3", - "watchpack": "2.4.1", - "webpack": "5.94.0", + "tslib": "2.8.1", + "webpack": "5.98.0", "webpack-dev-middleware": "7.4.2", "webpack-dev-server": "5.2.2", "webpack-merge": "6.0.1", @@ -231,22 +226,23 @@ "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.23.0" + "esbuild": "0.25.4" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "@angular/localize": "^18.0.0", - "@angular/platform-server": "^18.0.0", - "@angular/service-worker": "^18.0.0", - "@web/test-runner": "^0.18.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", + "@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": "^18.0.0", + "ng-packagr": "^19.0.0 || ^19.2.0-next.0", "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.4 <5.6" + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.5 <5.9" }, "peerDependenciesMeta": { "@angular/localize": { @@ -258,6 +254,9 @@ "@angular/service-worker": { "optional": true }, + "@angular/ssr": { + "optional": true + }, "@web/test-runner": { "optional": true }, @@ -284,31 +283,49 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/@angular-devkit/build-angular/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-12.0.2.tgz", + "integrity": "sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.1", + "globby": "^14.0.0", + "normalize-path": "^3.0.0", + "schema-utils": "^4.2.0", + "serialize-javascript": "^6.0.2" + }, + "engines": { + "node": ">= 18.12.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "node_modules/@angular-devkit/build-angular/node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, "node_modules/@angular-devkit/build-angular/node_modules/eslint-scope": { @@ -335,6 +352,67 @@ "node": ">=4.0" } }, + "node_modules/@angular-devkit/build-angular/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@angular-devkit/build-angular/node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -342,17 +420,101 @@ "dev": true, "license": "MIT" }, - "node_modules/@angular-devkit/build-angular/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==", + "node_modules/@angular-devkit/build-angular/node_modules/less": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", + "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@angular-devkit/build-angular/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } }, "node_modules/@angular-devkit/build-angular/node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.5.2", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", + "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", "dev": true, "funding": [ { @@ -370,9 +532,9 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -388,102 +550,130 @@ "tslib": "^2.1.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/@angular-devkit/build-angular/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.13.0" + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@angular-devkit/build-angular/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "node_modules/@angular-devkit/build-angular/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "0BSD" + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "node_modules/@angular-devkit/build-angular/node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, "bin": { - "webpack": "bin/webpack.js" + "terser": "bin/terser" }, "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } + "node": ">=10" } }, - "node_modules/@angular-devkit/build-angular/node_modules/webpack-merge": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", - "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", + "node_modules/@angular-devkit/build-angular/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", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/webpack": { + "version": "5.98.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", + "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", "dev": true, "license": "MIT", "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.1" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=18.0.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1802.20", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.20.tgz", - "integrity": "sha512-710EUKGXJ0HlETDOlkiFWA6Ddku0vdNumbPzi2gb5UnjFo297BIOHgHt77auDhpKj1qffHTvvoiA2UseOX85QA==", + "version": "0.1902.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1902.15.tgz", + "integrity": "sha512-pIfZeizWsViXx8bsMoBLZw7Tl7uFf7bM7hAfmNwk0bb0QGzx5k1BiW6IKWyaG+Dg6U4UCrlNpIiut2b78HwQZw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.20", + "@angular-devkit/architect": "0.1902.15", "rxjs": "7.8.1" }, "engines": { @@ -507,9 +697,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.20.tgz", - "integrity": "sha512-VNxI2e9EZQNqKYtUJ4u43QRJ9kObeyG9f69caxnj28cg4qim3H1vX/sglnodP8EsTIRbzwBKc884ebHWFdQJkQ==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.15.tgz", + "integrity": "sha512-pU2RZYX6vhd7uLSdLwPnuBcr0mXJSjp3EgOXKsrlQFQZevc+Qs+2JdXgIElnOT/aDqtRtriDmLlSbtdE8n3ZbA==", "dev": true, "license": "MIT", "dependencies": { @@ -526,7 +716,7 @@ "yarn": ">= 1.13.0" }, "peerDependencies": { - "chokidar": "^3.5.2" + "chokidar": "^4.0.0" }, "peerDependenciesMeta": { "chokidar": { @@ -545,15 +735,15 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.20.tgz", - "integrity": "sha512-eKoFeWOxwheaGK+aguyTs9utxxmFsrI/aHQttiyhBy+HzmgX/E0grzx6ZpuipUpBA8lYMtxfTJ7AC12fGJMvFA==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.15.tgz", + "integrity": "sha512-kNOJ+3vekJJCQKWihNmxBkarJzNW09kP5a9E1SRNiQVNOUEeSwcRR0qYotM65nx821gNzjjhJXnAZ8OazWldrg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.20", + "@angular-devkit/core": "19.2.15", "jsonc-parser": "3.3.1", - "magic-string": "0.30.11", + "magic-string": "0.30.17", "ora": "5.4.1", "rxjs": "7.8.1" }, @@ -646,9 +836,9 @@ } }, "node_modules/@angular/animations": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.13.tgz", - "integrity": "sha512-rG5J5Ek5Hg+Tz2NjkNOaG6PupiNK/lPfophXpsR1t/nWujqnMWX2krahD/i6kgD+jNWNKCJCYSOVvCx/BHOtKA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.14.tgz", + "integrity": "sha512-xhl8fLto5HHJdVj8Nb6EoBEiTAcXuWDYn1q5uHcGxyVH3kiwENWy/2OQXgCr2CuWo2e6hNUGzSLf/cjbsMNqEA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -657,56 +847,65 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.13" + "@angular/common": "19.2.14", + "@angular/core": "19.2.14" } }, "node_modules/@angular/build": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.20.tgz", - "integrity": "sha512-9VW/zSQoSwc9e5OBjtnroj9feacD2HgkSYx7TsfmDyefIlOCeNxbhkm83Px/4B8VG6kzZUBzLBJ4QULl2E1Y/Q==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.15.tgz", + "integrity": "sha512-iE4fp4d5ALu702uoL6/YkjM2JlGEXZ5G+RVzq3W2jg/Ft6ISAQnRKB6mymtetDD6oD7i87e8uSu9kFVNBauX2w==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.20", - "@babel/core": "7.25.2", - "@babel/helper-annotate-as-pure": "7.24.7", + "@angular-devkit/architect": "0.1902.15", + "@babel/core": "7.26.10", + "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.24.7", - "@inquirer/confirm": "3.1.22", - "@vitejs/plugin-basic-ssl": "1.1.0", + "@babel/plugin-syntax-import-attributes": "7.26.0", + "@inquirer/confirm": "5.1.6", + "@vitejs/plugin-basic-ssl": "1.2.0", + "beasties": "0.3.2", "browserslist": "^4.23.0", - "critters": "0.0.24", - "esbuild": "0.23.0", - "fast-glob": "3.3.2", - "https-proxy-agent": "7.0.5", - "listr2": "8.2.4", - "lmdb": "3.0.13", - "magic-string": "0.30.11", - "mrmime": "2.0.0", + "esbuild": "0.25.4", + "fast-glob": "3.3.3", + "https-proxy-agent": "7.0.6", + "istanbul-lib-instrument": "6.0.3", + "listr2": "8.2.5", + "magic-string": "0.30.17", + "mrmime": "2.0.1", "parse5-html-rewriting-stream": "7.0.0", "picomatch": "4.0.2", - "piscina": "4.6.1", - "rollup": "4.22.4", - "sass": "1.77.6", - "semver": "7.6.3", - "vite": "~5.4.17", - "watchpack": "2.4.1" + "piscina": "4.8.0", + "rollup": "4.34.8", + "sass": "1.85.0", + "semver": "7.7.1", + "source-map-support": "0.5.21", + "vite": "6.2.7", + "watchpack": "2.4.2" }, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, + "optionalDependencies": { + "lmdb": "3.2.6" + }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "@angular/localize": "^18.0.0", - "@angular/platform-server": "^18.0.0", - "@angular/service-worker": "^18.0.0", + "@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", + "karma": "^6.4.0", "less": "^4.2.0", + "ng-packagr": "^19.0.0 || ^19.2.0-next.0", "postcss": "^8.4.0", - "tailwindcss": "^2.0.0 || ^3.0.0", - "typescript": ">=5.4 <5.6" + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "typescript": ">=5.5 <5.9" }, "peerDependenciesMeta": { "@angular/localize": { @@ -718,9 +917,18 @@ "@angular/service-worker": { "optional": true }, + "@angular/ssr": { + "optional": true + }, + "karma": { + "optional": true + }, "less": { "optional": true }, + "ng-packagr": { + "optional": true + }, "postcss": { "optional": true }, @@ -729,106 +937,186 @@ } } }, - "node_modules/@angular/build/node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "node_modules/@angular/build/node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=6.9.0" + "node": ">=8.6.0" + } + }, + "node_modules/@angular/build/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "engines": { + "node": ">= 6" } }, - "node_modules/@angular/build/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@angular/build/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@angular/build/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "node_modules/@angular/build/node_modules/vite": { + "version": "6.2.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.7.tgz", + "integrity": "sha512-qg3LkeuinTrZoJHHF94coSaTfIPyBYoywp+ys4qu20oSJFbKMYoIJo0FWJT9q6Vp49l6z9IsJRbHdcGtiKbGoQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" }, "engines": { - "node": ">=6.9.0" + "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/@angular/build/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/@angular/build/node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } }, "node_modules/@angular/cdk": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.14.tgz", - "integrity": "sha512-vDyOh1lwjfVk9OqoroZAP8pf3xxKUvyl+TVR8nJxL4c5fOfUFkD7l94HaanqKSRwJcI2xiztuu92IVoHn8T33Q==", + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.19.tgz", + "integrity": "sha512-PCpJagurPBqciqcq4Z8+3OtKLb7rSl4w/qBJoIMua8CgnrjvA1i+SWawhdtfI1zlY8FSwhzLwXV0CmWWfFzQPg==", "license": "MIT", "dependencies": { + "parse5": "^7.1.2", "tslib": "^2.3.0" }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, "peerDependencies": { - "@angular/common": "^18.0.0 || ^19.0.0", - "@angular/core": "^18.0.0 || ^19.0.0", + "@angular/common": "^19.0.0 || ^20.0.0", + "@angular/core": "^19.0.0 || ^20.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/cdk-experimental": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/cdk-experimental/-/cdk-experimental-19.2.19.tgz", + "integrity": "sha512-ThKXKdZK4J/XDKYcZxiorMQ15GWr7ybo8ZnNMs0Fqnq7SWpOGZMdPaMjxjjRqy+wWfQUyWinMZmAU2TKhLgfpQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "19.2.19", + "@angular/core": "^19.0.0 || ^20.0.0" + } + }, "node_modules/@angular/cli": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.20.tgz", - "integrity": "sha512-uu8XM+vvVQxTgCJAAQtCu6aLErbdCh/xqYpawgTaoOjiDkyWonTC+iGUUy0AEk5no/pbg2TCoZZx0AXWM1yLVA==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.15.tgz", + "integrity": "sha512-YRIpARHWSOnWkHusUWTQgeUrPWMjWvtQrOkjWc6stF36z2KUzKMEng6EzUvH6sZolNSwVwOFpODEP0ut4aBkvQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1802.20", - "@angular-devkit/core": "18.2.20", - "@angular-devkit/schematics": "18.2.20", - "@inquirer/prompts": "5.3.8", - "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.20", + "@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", "@yarnpkg/lockfile": "1.1.0", - "ini": "4.1.3", + "ini": "5.0.0", "jsonc-parser": "3.3.1", - "listr2": "8.2.4", - "npm-package-arg": "11.0.3", - "npm-pick-manifest": "9.1.0", - "pacote": "18.0.6", - "resolve": "1.22.8", - "semver": "7.6.3", + "listr2": "8.2.5", + "npm-package-arg": "12.0.2", + "npm-pick-manifest": "10.0.0", + "pacote": "20.0.0", + "resolve": "1.22.10", + "semver": "7.7.1", "symbol-observable": "4.0.0", "yargs": "17.7.2" }, @@ -841,10 +1129,23 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular/cli/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@angular/common": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.13.tgz", - "integrity": "sha512-4ZqrNp1PoZo7VNvW+sbSc2CB2axP1sCH2wXl8B0wdjsj8JY1hF1OhuugwhpAHtGxqewed2kCXayE+ZJqSTV4jw==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.14.tgz", + "integrity": "sha512-NcNklcuyqaTjOVGf7aru8APX9mjsnZ01gFZrn47BxHozhaR0EMRrotYQTdi8YdVjPkeYFYanVntSLfhyobq/jg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -853,38 +1154,30 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.13", + "@angular/core": "19.2.14", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.13.tgz", - "integrity": "sha512-TzWcrkopyjFF+WeDr2cRe8CcHjU72KfYV3Sm2TkBkcXrkYX5sDjGWrBGrG3hRB4e4okqchrOCvm1MiTdy2vKMA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.14.tgz", + "integrity": "sha512-ZqJDYOdhgKpVGNq3+n/Gbxma8DVYElDsoRe0tvNtjkWBVdaOxdZZUqmJ3kdCBsqD/aqTRvRBu0KGo9s2fCChkA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "18.2.13" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.13.tgz", - "integrity": "sha512-DBSh4AQwkiJDSiVvJATRmjxf6wyUs9pwQLgaFdSlfuTRO+sdb0J2z1r3BYm8t0IqdoyXzdZq2YCH43EmyvD71g==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.25.2", + "@babel/core": "7.26.9", "@jridgewell/sourcemap-codec": "^1.4.14", "chokidar": "^4.0.0", "convert-source-map": "^1.5.1", @@ -902,27 +1195,27 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.13", - "typescript": ">=5.4 <5.6" + "@angular/compiler": "19.2.14", + "typescript": ">=5.5 <5.9" } }, "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.9.tgz", + "integrity": "sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@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", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -954,40 +1247,10 @@ "semver": "bin/semver.js" } }, - "node_modules/@angular/compiler-cli/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@angular/compiler-cli/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/@angular/core": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.13.tgz", - "integrity": "sha512-8mbWHMgO95OuFV1Ejy4oKmbe9NOJ3WazQf/f7wks8Bck7pcihd0IKhlPBNjFllbF5o+04EYSwFhEtvEgjMDClA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.14.tgz", + "integrity": "sha512-EVErpW9tGqJ/wNcAN3G/ErH8pHCJ8mM1E6bsJ8UJIpDTZkpqqYjBMtZS9YWH5n3KwUd1tAkAB2w8FK125AjDUQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -997,13 +1260,13 @@ }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.10" + "zone.js": "~0.15.0" } }, "node_modules/@angular/forms": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.13.tgz", - "integrity": "sha512-A67D867fu3DSBhdLWWZl/F5pr7v2+dRM2u3U7ZJ0ewh4a+sv+0yqWdJW+a8xIoiHxS+btGEJL2qAKJiH+MCFfg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.14.tgz", + "integrity": "sha512-hWtDOj2B0AuRTf+nkMJeodnFpDpmEK9OIhIv1YxcRe73ooaxrIdjgugkElO8I9Tj0E4/7m117ezhWDUkbqm1zA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1012,16 +1275,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.13", - "@angular/core": "18.2.13", - "@angular/platform-browser": "18.2.13", + "@angular/common": "19.2.14", + "@angular/core": "19.2.14", + "@angular/platform-browser": "19.2.14", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-18.2.13.tgz", - "integrity": "sha512-4E4VJDrbOAxS69F9C1twQPbR9AjY47Qlz8+lwg5lJOyUJ4GoEThLbXKfadt/vIeYBwMJ7fIsYWXD0Dlmxh4k+w==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.2.14.tgz", + "integrity": "sha512-XgzZdBCe/obCrck5I6GIG4qSI9UGaOtbrvNuw0QAK0DySKaW5inRm6/QwCMPRmPkJBY0wLeYUVz//rtHpEjeTQ==", "dev": true, "license": "MIT", "engines": { @@ -1029,59 +1292,58 @@ } }, "node_modules/@angular/material": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.14.tgz", - "integrity": "sha512-28pxzJP49Mymt664WnCtPkKeg7kXUsQKTKGf/Kl95rNTEdTJLbnlcc8wV0rT0yQNR7kXgpfBnG7h0ETLv/iu5Q==", + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-19.2.19.tgz", + "integrity": "sha512-auIE6JUzTIA3LyYklh9J/T7u64crmphxUBgAa0zcOMDog6SYfwbNe9YeLQqua5ek4OUAOdK/BHHfVl5W5iaUoQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^18.0.0 || ^19.0.0", - "@angular/cdk": "18.2.14", - "@angular/common": "^18.0.0 || ^19.0.0", - "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/forms": "^18.0.0 || ^19.0.0", - "@angular/platform-browser": "^18.0.0 || ^19.0.0", + "@angular/cdk": "19.2.19", + "@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", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material-experimental": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@angular/material-experimental/-/material-experimental-18.2.14.tgz", - "integrity": "sha512-OW1HeMGBYA1ExAkse0GuZwtehI+YMnvzACFa9FtuVLrR09+sSIAATnaW8M/z1f79ubeMZJAOSpVXC4GhpGU2jw==", + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/material-experimental/-/material-experimental-19.2.19.tgz", + "integrity": "sha512-6KwCuCyGu1gD9QhaihX1ZPlwQcFRK6B1QI8wQ51rDlFOgtQ3hWhXEVUtkUtaMXKWh6RRNojOHXXXjBza7etTEA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^18.0.0 || ^19.0.0", - "@angular/cdk": "18.2.14", - "@angular/common": "^18.0.0 || ^19.0.0", - "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/forms": "^18.0.0 || ^19.0.0", - "@angular/material": "18.2.14", - "@angular/platform-browser": "^18.0.0 || ^19.0.0" + "@angular/cdk": "19.2.19", + "@angular/cdk-experimental": "19.2.19", + "@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/material": "19.2.19", + "@angular/platform-browser": "^19.0.0 || ^20.0.0" } }, "node_modules/@angular/material-moment-adapter": { - "version": "18.2.14", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-18.2.14.tgz", - "integrity": "sha512-igICm+qQl/KeglU4LcCHgSaaoJR6RUlDzpCs2+kfLSnsvAy5Z0ZauW3pbIsCEIDb0zknBqos9d8x+pXg/bncCQ==", + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-19.2.19.tgz", + "integrity": "sha512-yL7ES1HgtEW5D3iOkio/PD/UwBgXuyNDkxBdcrRYih+8ihhbaU6rBzCT5juUujjmRtt8Aj+3M80PSq5dlsingA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/material": "18.2.14", + "@angular/core": "^19.0.0 || ^20.0.0", + "@angular/material": "19.2.19", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.13.tgz", - "integrity": "sha512-tu7ZzY6qD3ATdWFzcTcsAKe7M6cJeWbT/4/bF9unyGO3XBPcNYDKoiz10+7ap2PUd0fmPwvuvTvSNJiFEBnB8Q==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.14.tgz", + "integrity": "sha512-hzkT5nmA64oVBQl6PRjdL4dIFT1n7lfM9rm5cAoS+6LUUKRgiE2d421Kpn/Hz3jaCJfo+calMIdtSMIfUJBmww==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1090,9 +1352,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.13", - "@angular/common": "18.2.13", - "@angular/core": "18.2.13" + "@angular/animations": "19.2.14", + "@angular/common": "19.2.14", + "@angular/core": "19.2.14" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1101,9 +1363,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.13.tgz", - "integrity": "sha512-kbQCf9+8EpuJC7buBxhSiwBtXvjAwAKh6MznD6zd2pyCYqfY6gfRCZQRtK59IfgVtKmEONWI9grEyNIRoTmqJg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.14.tgz", + "integrity": "sha512-Hfz0z1KDQmIdnFXVFCwCPykuIsHPkr1uW2aY396eARwZ6PK8i0Aadcm1ZOnpd3MR1bMyDrJo30VRS5kx89QWvA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1112,16 +1374,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.13", - "@angular/compiler": "18.2.13", - "@angular/core": "18.2.13", - "@angular/platform-browser": "18.2.13" + "@angular/common": "19.2.14", + "@angular/compiler": "19.2.14", + "@angular/core": "19.2.14", + "@angular/platform-browser": "19.2.14" } }, "node_modules/@angular/router": { - "version": "18.2.13", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.13.tgz", - "integrity": "sha512-VKmfgi/r/CkyBq9nChQ/ptmfu0JT/8ONnLVJ5H+SkFLRYJcIRyHLKjRihMCyVm6xM5yktOdCaW73NTQrFz7+bg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.14.tgz", + "integrity": "sha512-cBTWY9Jx7YhbmDYDb7Hqz4Q7UNIMlKTkdKToJd2pbhIXyoS+kHVQrySmyca+jgvYMjWnIjsAEa3dpje12D4mFw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -1130,9 +1392,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.13", - "@angular/core": "18.2.13", - "@angular/platform-browser": "18.2.13", + "@angular/common": "19.2.14", + "@angular/core": "19.2.14", + "@angular/platform-browser": "19.2.14", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1369,27 +1631,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.16.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", @@ -1734,13 +1975,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3908,23 +4149,23 @@ } }, "node_modules/@danielmoncada/angular-datetime-picker": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/@danielmoncada/angular-datetime-picker/-/angular-datetime-picker-18.1.0.tgz", - "integrity": "sha512-hNp0DBFlCMIKa6yvZKocmm2ZCVzevX60z/ZIhRlNVaKwU+Wwh9B/KfvqwT03uvmZWSFQSnNUoPGBTyx0fyTayw==", + "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==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" }, "peerDependencies": { - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0" + "@angular/cdk": "^19.0.0", + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0" } }, "node_modules/@discoveryjs/json-ext": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.1.tgz", - "integrity": "sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.6.3.tgz", + "integrity": "sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==", "dev": true, "license": "MIT", "engines": { @@ -3955,9 +4196,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", - "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz", + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", "cpu": [ "ppc64" ], @@ -3972,9 +4213,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", - "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz", + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", "cpu": [ "arm" ], @@ -3989,9 +4230,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", - "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz", + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", "cpu": [ "arm64" ], @@ -4006,9 +4247,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", - "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz", + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", "cpu": [ "x64" ], @@ -4023,9 +4264,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", - "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz", + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", "cpu": [ "arm64" ], @@ -4040,9 +4281,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", - "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz", + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", "cpu": [ "x64" ], @@ -4057,9 +4298,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", - "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz", + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", "cpu": [ "arm64" ], @@ -4074,9 +4315,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", - "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz", + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", "cpu": [ "x64" ], @@ -4091,9 +4332,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", - "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz", + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", "cpu": [ "arm" ], @@ -4108,9 +4349,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", - "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz", + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", "cpu": [ "arm64" ], @@ -4125,9 +4366,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", - "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz", + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", "cpu": [ "ia32" ], @@ -4142,9 +4383,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", - "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz", + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", "cpu": [ "loong64" ], @@ -4159,9 +4400,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", - "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz", + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", "cpu": [ "mips64el" ], @@ -4176,9 +4417,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", - "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz", + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", "cpu": [ "ppc64" ], @@ -4193,9 +4434,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", - "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz", + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", "cpu": [ "riscv64" ], @@ -4210,9 +4451,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", - "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz", + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", "cpu": [ "s390x" ], @@ -4227,9 +4468,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", - "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz", + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", "cpu": [ "x64" ], @@ -4244,9 +4485,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", - "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz", + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", "cpu": [ "arm64" ], @@ -4261,9 +4502,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", - "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz", + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", "cpu": [ "x64" ], @@ -4278,9 +4519,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", - "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz", + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", "cpu": [ "arm64" ], @@ -4295,9 +4536,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", - "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz", + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", "cpu": [ "x64" ], @@ -4312,9 +4553,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", - "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz", + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", "cpu": [ "arm64" ], @@ -4329,9 +4570,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", - "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz", + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", "cpu": [ "x64" ], @@ -4346,9 +4587,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", - "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz", + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", "cpu": [ "arm64" ], @@ -4363,9 +4604,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", - "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz", + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", "cpu": [ "ia32" ], @@ -4380,9 +4621,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", - "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz", + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", "cpu": [ "x64" ], @@ -4570,111 +4811,159 @@ "license": "BSD-3-Clause" }, "node_modules/@inquirer/checkbox": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.5.0.tgz", - "integrity": "sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.2.1.tgz", + "integrity": "sha512-bevKGO6kX1eM/N+pdh9leS5L7TBF4ICrzi9a+cbWkrxeAeIcwlo/7OfWGCDERdRCI2/Q6tjltX4bt07ALHDwFw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - } + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, "node_modules/@inquirer/confirm": { - "version": "3.1.22", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.22.tgz", - "integrity": "sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.6.tgz", + "integrity": "sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.0.10", - "@inquirer/type": "^1.5.2" + "@inquirer/core": "^10.1.7", + "@inquirer/type": "^3.0.4" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "version": "10.1.15", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.15.tgz", + "integrity": "sha512-8xrp836RZvKkpNbVvgWUlxjT4CraKk2q+I3Ksy+seI2zkcE+y6wNs1BVhgcv8VyImFecUhdQrYLdW32pAjwBdA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", + "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "node_modules/@inquirer/editor": { + "version": "4.2.17", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.17.tgz", + "integrity": "sha512-r6bQLsyPSzbWrZZ9ufoWL+CztkSatnJ6uSxqd6N+o41EZC51sQeWOzI6s5jLb+xxTWxl7PlUppqm8/sow241gg==", "dev": true, "license": "MIT", "dependencies": { - "mute-stream": "^1.0.0" + "@inquirer/core": "^10.1.15", + "@inquirer/external-editor": "^1.0.1", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.16.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.5.tgz", - "integrity": "sha512-bJFoMATwIGaxxx8VJPeM8TonI8t579oRvgAuT8zFugJsJZgzqv0Fu8Mhp68iecjzG7cnN3mO2dJQ5uUM2EFrgQ==", + "node_modules/@inquirer/expand": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.17.tgz", + "integrity": "sha512-PSqy9VmJx/VbE3CT453yOfNa+PykpKg/0SYP7odez1/NWBGuDXgPhp4AeGYYKjhLn5lUUavVS/JbeYMPdH50Mw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-2.2.0.tgz", - "integrity": "sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==", + "node_modules/@inquirer/external-editor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz", + "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", - "external-editor": "^3.1.0" + "chardet": "^2.1.0", + "iconv-lite": "^0.6.3" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, - "node_modules/@inquirer/expand": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-2.3.0.tgz", - "integrity": "sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==", + "node_modules/@inquirer/external-editor/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": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", - "yoctocolors-cjs": "^2.1.2" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=18" + "node": ">=0.10.0" } }, "node_modules/@inquirer/figures": { @@ -4688,129 +4977,190 @@ } }, "node_modules/@inquirer/input": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", - "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.2.1.tgz", + "integrity": "sha512-tVC+O1rBl0lJpoUZv4xY+WGWY8V5b0zxU1XDsMsIHYregdh7bN5X5QnIONNBAl0K765FYlAfNHS2Bhn7SSOVow==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-1.1.0.tgz", - "integrity": "sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.17.tgz", + "integrity": "sha512-GcvGHkyIgfZgVnnimURdOueMk0CztycfC8NZTiIY9arIAkeOgt6zG57G+7vC59Jns3UX27LMkPKnKWAOF5xEYg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/password": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-2.2.0.tgz", - "integrity": "sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.17.tgz", + "integrity": "sha512-DJolTnNeZ00E1+1TW+8614F7rOJJCM4y4BAGQ3Gq6kQIG+OJ4zr3GLjIjVVJCbKsk2jmkmv6v2kQuN/vriHdZA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/prompts": { - "version": "5.3.8", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-5.3.8.tgz", - "integrity": "sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz", + "integrity": "sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^2.4.7", - "@inquirer/confirm": "^3.1.22", - "@inquirer/editor": "^2.1.22", - "@inquirer/expand": "^2.1.22", - "@inquirer/input": "^2.2.9", - "@inquirer/number": "^1.0.10", - "@inquirer/password": "^2.1.22", - "@inquirer/rawlist": "^2.2.4", - "@inquirer/search": "^1.0.7", - "@inquirer/select": "^2.4.7" + "@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" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/rawlist": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-2.3.0.tgz", - "integrity": "sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.5.tgz", + "integrity": "sha512-R5qMyGJqtDdi4Ht521iAkNqyB6p2UPuZUbMifakg1sWtu24gc2Z8CJuw8rP081OckNDMgtDCuLe42Q2Kr3BolA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.15", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/search": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-1.1.0.tgz", - "integrity": "sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.1.0.tgz", + "integrity": "sha512-PMk1+O/WBcYJDq2H7foV0aAZSmDdkzZB9Mw2v/DmONRJopwA/128cS9M/TXWLKKdEQKZnKwBzqu2G4x/2Nqx8Q==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/select": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", - "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.3.1.tgz", + "integrity": "sha512-Gfl/5sqOF5vS/LIrSndFgOh7jgoe0UXEizDqahFRkq5aJBLegZ6WjuMh/hVEJwlFQjyLq1z9fRtvUMkb7jM1LA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", + "@inquirer/core": "^10.1.15", + "@inquirer/figures": "^1.0.13", + "@inquirer/type": "^3.0.8", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.8.tgz", + "integrity": "sha512-lg9Whz8onIHRthWaN1Q9EGLa/0LFJjyM8mEUbL1eTi6yMGvBf8gvyDLtxSXztQsxMvhxxNpJYrwa1YHdq+w4Jw==", "dev": true, "license": "MIT", - "dependencies": { - "mute-stream": "^1.0.0" - }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } } }, "node_modules/@isaacs/cliui": { @@ -4909,6 +5259,19 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", @@ -4986,17 +5349,74 @@ "tslib": "2" } }, + "node_modules/@jsonjoy.com/buffers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", + "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/@jsonjoy.com/json-pack": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.4.0.tgz", - "integrity": "sha512-Akn8XZqN3xO9YGcgvIiTauBBXTP92QSvw6EcGha+p5nm7brhbwvev5gw4fi+ouLGrBpfPpb72+S5pxl4mkMIGQ==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.10.0.tgz", + "integrity": "sha512-PMOU9Sh0baiLZEDewwR/YAHJBV2D8pPIzcFQSU7HQl/k/HNCDyVfO1OvkyDwBGp4dPtvZc7Hl9FFYWwTP1CbZw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "^1.1.1", - "@jsonjoy.com/util": "^1.1.2", + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.1", + "@jsonjoy.com/util": "^1.9.0", "hyperdyperid": "^1.2.0", - "thingies": "^1.20.0" + "thingies": "^2.5.0" + }, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.1.tgz", + "integrity": "sha512-tJpwQfuBuxqZlyoJOSZcqf7OUmiYQ6MiPNmOv4KbZdXE/DdvBSSAwhos0zIlJU/AXxC8XpuO8p08bh2fIl+RKA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/util": "^1.3.0" }, "engines": { "node": ">=10.0" @@ -5010,11 +5430,15 @@ } }, "node_modules/@jsonjoy.com/util": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.8.0.tgz", - "integrity": "sha512-HeR0JQNEdBozt+FrfyM5T0X3R+fIN0D+BRDkxPP5o41fTWzHfeZEqtK16aTW8haU+h+SG7XYq9PP5kobvOmkSA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" + }, "engines": { "node": ">=10.0" }, @@ -5042,25 +5466,48 @@ "license": "MIT" }, "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-2.0.15.tgz", - "integrity": "sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==", + "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==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/type": "^1.5.1" + "@inquirer/type": "^1.5.5" }, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@inquirer/prompts": ">= 3 < 6" + "@inquirer/prompts": ">= 3 < 8" + } + }, + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@listr2/prompt-adapter-inquirer/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.0.13.tgz", - "integrity": "sha512-uiKPB0Fv6WEEOZjruu9a6wnW/8jrjzlZbxXscMB8kuCJ1k6kHpcBnuvaAWcqhbI7rqX5GKziwWEdD+wi2gNLfA==", + "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==", "cpu": [ "arm64" ], @@ -5072,9 +5519,9 @@ ] }, "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.0.13.tgz", - "integrity": "sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==", + "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==", "cpu": [ "x64" ], @@ -5086,9 +5533,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.0.13.tgz", - "integrity": "sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==", + "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==", "cpu": [ "arm" ], @@ -5100,9 +5547,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.0.13.tgz", - "integrity": "sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz", + "integrity": "sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==", "cpu": [ "arm64" ], @@ -5114,9 +5561,9 @@ ] }, "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.0.13.tgz", - "integrity": "sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==", + "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==", "cpu": [ "x64" ], @@ -5128,9 +5575,9 @@ ] }, "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.0.13.tgz", - "integrity": "sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==", + "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==", "cpu": [ "x64" ], @@ -5225,284 +5672,606 @@ "win32" ] }, - "node_modules/@ngtools/webpack": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.20.tgz", - "integrity": "sha512-6LscOXPMPZlS67aDPj6dkjT/RDySX4GLtk1JErzkUOco6pxsp8qeCzRWqjU63q/8OfZPYLCGIZKfXgXwBP9bgg==", + "node_modules/@napi-rs/nice": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.1.1.tgz", + "integrity": "sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==", "dev": true, "license": "MIT", + "optional": true, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">= 10" }, - "peerDependencies": { - "@angular/compiler-cli": "^18.0.0", - "typescript": ">=5.4 <5.6", - "webpack": "^5.54.0" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@napi-rs/nice-android-arm-eabi": "1.1.1", + "@napi-rs/nice-android-arm64": "1.1.1", + "@napi-rs/nice-darwin-arm64": "1.1.1", + "@napi-rs/nice-darwin-x64": "1.1.1", + "@napi-rs/nice-freebsd-x64": "1.1.1", + "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", + "@napi-rs/nice-linux-arm64-gnu": "1.1.1", + "@napi-rs/nice-linux-arm64-musl": "1.1.1", + "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", + "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", + "@napi-rs/nice-linux-s390x-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-gnu": "1.1.1", + "@napi-rs/nice-linux-x64-musl": "1.1.1", + "@napi-rs/nice-openharmony-arm64": "1.1.1", + "@napi-rs/nice-win32-arm64-msvc": "1.1.1", + "@napi-rs/nice-win32-ia32-msvc": "1.1.1", + "@napi-rs/nice-win32-x64-msvc": "1.1.1" + } + }, + "node_modules/@napi-rs/nice-android-arm-eabi": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", + "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 8" + "node": ">= 10" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@napi-rs/nice-android-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", + "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">= 8" + "node": ">= 10" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@napi-rs/nice-darwin-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-arm64/-/nice-darwin-arm64-1.1.1.tgz", + "integrity": "sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 8" + "node": ">= 10" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "node_modules/@napi-rs/nice-darwin-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", + "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "node_modules/@napi-rs/nice-freebsd-x64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", + "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/git": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", - "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", + "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", + "cpu": [ + "arm" + ], "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "ini": "^4.1.3", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/@napi-rs/nice-linux-arm64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", + "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=16" + "node": ">= 10" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/@napi-rs/nice-linux-arm64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", + "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", - "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "node_modules/@napi-rs/nice-linux-ppc64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", + "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "node_modules/@napi-rs/nice-linux-riscv64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", + "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/package-json": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", - "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", + "node_modules/@napi-rs/nice-linux-s390x-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", + "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", + "cpu": [ + "s390x" + ], "dev": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/@napi-rs/nice-linux-x64-gnu": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", + "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "node_modules/@napi-rs/nice-linux-x64-musl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", + "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", + "cpu": [ + "x64" + ], "dev": true, - "license": "ISC", - "dependencies": { - "which": "^4.0.0" - }, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/@napi-rs/nice-openharmony-arm64": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", + "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "ISC", + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], "engines": { - "node": ">=16" + "node": ">= 10" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "dependencies": { + "node_modules/@napi-rs/nice-win32-arm64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", + "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-ia32-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", + "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@napi-rs/nice-win32-x64-msvc": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", + "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@ngtools/webpack": { + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-19.2.15.tgz", + "integrity": "sha512-H37nop/wWMkSgoU2VvrMzanHePdLRRrX52nC5tT2ZhH3qP25+PrnMyw11PoLDLv3iWXC68uB1AiKNIT+jiQbuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.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", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-3.0.0.tgz", + "integrity": "sha512-S79NdEgDQd/NGCay6TCoVzXSj74skRZIKJcpJjC5lOq34SZzyI6MqtiiWoiVWoVrTcGjNeC4ipbh1VIHlpfF5Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/fs": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-4.0.0.tgz", + "integrity": "sha512-/xGlezI6xfGO9NwuJlnwz/K14qD1kCSAGtacBHnGzeAIuJGazcp45KP5NuyARXoKb7cwulAGWVsbeSxdG/cb0Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-6.0.3.tgz", + "integrity": "sha512-GUYESQlxZRAdhs3UhbB6pVRNUELQOHXwK9ruDkwmCv2aZ5y0SApQzUJCg02p3A7Ue2J5hxvlk1YI53c00NmRyQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-3.0.0.tgz", + "integrity": "sha512-fkxoPuFGvxyrH+OQzyTkX2LUEamrF4jZSmxjAtPPHHGO0dqsQ8tTKjnIS8SAnPHdk2I03BDtSMR5K/4loKg79Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-4.0.0.tgz", + "integrity": "sha512-+t5DZ6mO/QFh78PByMq1fGSAub/agLJZDRfJRMeOSNCt8s9YVlTjmGpIPwPhvXTGUIJk+WszlT0rQa1W33yzNA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-6.2.0.tgz", + "integrity": "sha512-rCNLSB/JzNvot0SEyXqWZ7tX2B5dD2a1br2Dp0vSYVo5jh8Z0EZ7lS9TsZ1UtziddB1UfNUaMCc538/HztnJGA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.5.3", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-8.0.2.tgz", + "integrity": "sha512-/bNJhjc+o6qL+Dwz/bqfTQClkEO5nTQ1ZEcdCkAQjhkZMHIh22LPG7fNh1enJP1NKWDqYiiABnjFCY7E0zHYtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/redact": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", - "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-3.2.2.tgz", + "integrity": "sha512-7VmYAmk4csGv08QzrDKScdzn11jHPFGyqJW39FyPgPuAp3zIaUmuCo1yxw9aGs+NEJuTGQ9Gwqpt93vtJubucg==", "dev": true, "license": "ISC", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/run-script": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", - "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-9.1.0.tgz", + "integrity": "sha512-aoNSbxtkePXUlbZB+anS1LqsJdctG5n3UVhfU47+CDdwMi6uNTBMF9gPcQRnqghQd2FGzcwwIFBruFMxjhBewg==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@npmcli/run-script/node_modules/isexe": { @@ -5516,25 +6285,357 @@ } }, "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, "bin": { - "node-which": "bin/which.js" + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=0.10" } }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, "node_modules/@pega/auth": { - "version": "0.2.28", - "resolved": "https://registry.npmjs.org/@pega/auth/-/auth-0.2.28.tgz", - "integrity": "sha512-H3wsZjQp/9reClNaPWurN/Qr1rEn6mfVk1PnGwXDgEtbKY2kADR4bqMwqVOvBpkOsE6up1ivfC9CaWvjY4DuYg==", + "version": "0.2.31", + "resolved": "https://registry.npmjs.org/@pega/auth/-/auth-0.2.31.tgz", + "integrity": "sha512-QQxuiK1Xzl9O/dGZ6iKuCRcncuhJZqYQHu9WklGODtp16OwA00SgRe2Qapit4/h/asj8lWCIquSnQ2NoNTEJlA==", "license": "Apache-2.0", "dependencies": { "node-fetch": "^3.3.2", @@ -5695,13 +6796,13 @@ } }, "node_modules/@playwright/test": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.54.1.tgz", - "integrity": "sha512-FS8hQ12acieG2dYSksmLOF7BNxnVf2afRJdCuM1eMSxj6QTSE6G4InGF7oApGgDb65MX7AwMVlIkpru0yZA4Xw==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", + "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.54.1" + "playwright": "1.55.0" }, "bin": { "playwright": "cli.js" @@ -5744,31 +6845,6 @@ } } }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", - "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/pluginutils": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz", @@ -5793,9 +6869,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.4.tgz", - "integrity": "sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==", + "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==", "cpu": [ "arm" ], @@ -5807,9 +6883,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.4.tgz", - "integrity": "sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", + "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", "cpu": [ "arm64" ], @@ -5821,9 +6897,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.4.tgz", - "integrity": "sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", + "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", "cpu": [ "arm64" ], @@ -5835,9 +6911,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.4.tgz", - "integrity": "sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==", + "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==", "cpu": [ "x64" ], @@ -5848,10 +6924,38 @@ "darwin" ] }, + "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==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "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==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.4.tgz", - "integrity": "sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==", + "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==", "cpu": [ "arm" ], @@ -5863,9 +6967,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.4.tgz", - "integrity": "sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==", + "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==", "cpu": [ "arm" ], @@ -5877,9 +6981,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.4.tgz", - "integrity": "sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==", + "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" ], @@ -5891,9 +6995,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.4.tgz", - "integrity": "sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==", + "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==", "cpu": [ "arm64" ], @@ -5904,10 +7008,24 @@ "linux" ] }, + "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==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.4.tgz", - "integrity": "sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==", + "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==", "cpu": [ "ppc64" ], @@ -5918,10 +7036,25 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", + "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.4.tgz", - "integrity": "sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==", + "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==", "cpu": [ "riscv64" ], @@ -5932,10 +7065,25 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", + "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.4.tgz", - "integrity": "sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==", + "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==", "cpu": [ "s390x" ], @@ -5947,9 +7095,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.4.tgz", - "integrity": "sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==", + "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==", "cpu": [ "x64" ], @@ -5961,9 +7109,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.4.tgz", - "integrity": "sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==", + "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==", "cpu": [ "x64" ], @@ -5975,9 +7123,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.4.tgz", - "integrity": "sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==", + "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==", "cpu": [ "arm64" ], @@ -5989,9 +7137,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.4.tgz", - "integrity": "sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==", + "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==", "cpu": [ "ia32" ], @@ -6003,9 +7151,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.4.tgz", - "integrity": "sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==", + "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==", "cpu": [ "x64" ], @@ -6017,9 +7165,9 @@ ] }, "node_modules/@rollup/wasm-node": { - "version": "4.46.1", - "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.46.1.tgz", - "integrity": "sha512-3vOhhqH3c3YJoIvyHsAOqdnH8KOl+LhvVjyfzd/BI1RvhnfA3RMRCporxlQCriUtEoA1JzCok1UWDrMqj5nejQ==", + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.46.2.tgz", + "integrity": "sha512-lZRiZl+B1R3VhqZgORtuUpc2YYbgIv+X6g3LgQHS5sjlf1ENiK1HZ6N5e8pEZ04nAWiwYM0JX7rP0eyxflkJRg==", "dev": true, "license": "MIT", "dependencies": { @@ -6044,14 +7192,14 @@ "license": "MIT" }, "node_modules/@schematics/angular": { - "version": "18.2.20", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.20.tgz", - "integrity": "sha512-32bJycGtePm8X994hGl9PChBVgw9bbc+ehDpxeeaIZzcFHWlM06+cJu8Jr2FA8SASg3TwdnEybxFiYS14884OQ==", + "version": "19.2.15", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.15.tgz", + "integrity": "sha512-dz/eoFQKG09POSygpEDdlCehFIMo35HUM2rVV8lx9PfQEibpbGwl1NNQYEbqwVjTyCyD/ILyIXCWPE+EfTnG4g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "18.2.20", - "@angular-devkit/schematics": "18.2.20", + "@angular-devkit/core": "19.2.15", + "@angular-devkit/schematics": "19.2.15", "jsonc-parser": "3.3.1" }, "engines": { @@ -6061,32 +7209,32 @@ } }, "node_modules/@sigstore/bundle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", - "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-3.1.0.tgz", + "integrity": "sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/protobuf-specs": "^0.4.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", - "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-2.0.0.tgz", + "integrity": "sha512-nYxaSb/MtlSI+JWcwTHQxyNmWeWrUXJJ/G4liLrGG7+tS4vAz6LF3xRXqLH6wPIVUoZQel2Fs4ddLx4NCpiIYg==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.3.tgz", - "integrity": "sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.4.3.tgz", + "integrity": "sha512-fk2zjD9117RL9BjqEwF7fwv7Q/P9yGsMV4MUJZ/DocaQJ6+3pKr+syBq1owU5Q5qGw5CUbXzm+4yJ2JVRDQeSA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6094,50 +7242,50 @@ } }, "node_modules/@sigstore/sign": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", - "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-3.1.0.tgz", + "integrity": "sha512-knzjmaOHOov1Ur7N/z4B1oPqZ0QX5geUfhrVaqVlu+hl0EAoL4o+l0MSULINcD5GCWe3Z0+YJO8ues6vFlW0Yw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "make-fetch-happen": "^14.0.2", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/tuf": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", - "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-3.1.1.tgz", + "integrity": "sha512-eFFvlcBIoGwVkkwmTi/vEQFSva3xs5Ot3WmBcjgjVdiaoelBLQaQ/ZBfhlG0MnG0cmTYScPpk7eDdGDWUcFUmg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" + "@sigstore/protobuf-specs": "^0.4.1", + "tuf-js": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sigstore/verify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", - "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-2.1.1.tgz", + "integrity": "sha512-hVJD77oT67aowHxwT4+M6PGOp+E2LtLdTK3+FC0lBO9T7sYwItDMXZ7Z07IDCvR1M717a4axbIWckrW67KMP/w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.2" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@sindresorhus/merge-streams": { @@ -6225,17 +7373,17 @@ } }, "node_modules/@tufjs/models": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", - "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-3.0.1.tgz", + "integrity": "sha512-UUYHISyhCU3ZgN8yaear3cGATHb3SMuKHsQ/nVbHXcmnBf+LzQ/cQfhNG+rfaSHgqGKNEm2cOCLVLELStUQ1JA==", "dev": true, "license": "MIT", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" + "minimatch": "^9.0.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/@types/body-parser": { @@ -6410,16 +7558,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/node": { "version": "20.19.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.9.tgz", @@ -6454,13 +7592,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/retry": { "version": "0.12.2", "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", @@ -6518,13 +7649,6 @@ "@types/node": "*" } }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/ws": { "version": "8.18.1", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", @@ -6997,16 +8121,16 @@ "license": "ISC" }, "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", - "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "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==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.6.0" + "node": ">=14.21.3" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" } }, "node_modules/@webassemblyjs/ast": { @@ -7202,13 +8326,13 @@ "license": "BSD-2-Clause" }, "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz", + "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/accepts": { @@ -7248,16 +8372,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-import-phases": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", @@ -7333,20 +8447,6 @@ "node": ">= 14" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -7814,9 +8914,9 @@ } }, "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.2.1.tgz", + "integrity": "sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==", "dev": true, "license": "MIT", "dependencies": { @@ -7928,6 +9028,59 @@ "dev": 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==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "htmlparser2": "^10.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.49", + "postcss-media-query-parser": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/beasties/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/beasties/node_modules/htmlparser2": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -8206,13 +9359,13 @@ } }, "node_modules/cacache": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", - "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "version": "19.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-19.0.1.tgz", + "integrity": "sha512-hdsUxulXCi5STId78vRVYEtDAjq99ICAUktLTeTYsLoTE6Z8dS0c8pWNCxwdrk9YfJeobDZc2Y186hD/5ZQgFQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^3.1.0", + "@npmcli/fs": "^4.0.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^10.0.1", @@ -8220,13 +9373,23 @@ "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/cacache/node_modules/glob": { @@ -8257,6 +9420,50 @@ "dev": true, "license": "ISC" }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/cacheable": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz", @@ -8392,9 +9599,9 @@ } }, "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.0.tgz", + "integrity": "sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==", "dev": true, "license": "MIT" }, @@ -8409,41 +9616,19 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, "node_modules/chownr": { @@ -8458,22 +9643,12 @@ }, "node_modules/chrome-trace-event": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=6.0" } }, "node_modules/clear-module": { @@ -8956,6 +10131,16 @@ "dev": true, "license": "MIT" }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -9108,18 +10293,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.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-13.0.1.tgz", + "integrity": "sha512-J+YV3WfhY6W/Xf9h+J1znYuqTye2xkBUIGyTPWuBAT27qajBa5mR4f8WBmfDY3YjRftT2kqZZiLi1qf0H+UOFw==", "dev": true, "license": "MIT", "dependencies": { - "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" @@ -9132,106 +10316,6 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "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" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/copy-webpack-plugin/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/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", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/core-js": { "version": "3.44.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.44.0.tgz", @@ -9331,76 +10415,6 @@ "dev": true, "license": "MIT" }, - "node_modules/critters": { - "version": "0.0.24", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.24.tgz", - "integrity": "sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==", - "deprecated": "Ownership of Critters has moved to the Nuxt team, who will be maintaining the project going forward. If you'd like to keep using Critters, please switch to the actively-maintained fork at https://github.com/danielroe/beasties", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "postcss-media-query-parser": "^0.2.3" - } - }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/critters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/critters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -9908,16 +10922,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/default-browser": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", @@ -10044,6 +11048,7 @@ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", "dev": true, "license": "Apache-2.0", + "optional": true, "engines": { "node": ">=8" } @@ -10632,9 +11637,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", - "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz", + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10645,38 +11650,38 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.8", - "@esbuild/android-arm": "0.25.8", - "@esbuild/android-arm64": "0.25.8", - "@esbuild/android-x64": "0.25.8", - "@esbuild/darwin-arm64": "0.25.8", - "@esbuild/darwin-x64": "0.25.8", - "@esbuild/freebsd-arm64": "0.25.8", - "@esbuild/freebsd-x64": "0.25.8", - "@esbuild/linux-arm": "0.25.8", - "@esbuild/linux-arm64": "0.25.8", - "@esbuild/linux-ia32": "0.25.8", - "@esbuild/linux-loong64": "0.25.8", - "@esbuild/linux-mips64el": "0.25.8", - "@esbuild/linux-ppc64": "0.25.8", - "@esbuild/linux-riscv64": "0.25.8", - "@esbuild/linux-s390x": "0.25.8", - "@esbuild/linux-x64": "0.25.8", - "@esbuild/netbsd-arm64": "0.25.8", - "@esbuild/netbsd-x64": "0.25.8", - "@esbuild/openbsd-arm64": "0.25.8", - "@esbuild/openbsd-x64": "0.25.8", - "@esbuild/openharmony-arm64": "0.25.8", - "@esbuild/sunos-x64": "0.25.8", - "@esbuild/win32-arm64": "0.25.8", - "@esbuild/win32-ia32": "0.25.8", - "@esbuild/win32-x64": "0.25.8" + "@esbuild/aix-ppc64": "0.25.9", + "@esbuild/android-arm": "0.25.9", + "@esbuild/android-arm64": "0.25.9", + "@esbuild/android-x64": "0.25.9", + "@esbuild/darwin-arm64": "0.25.9", + "@esbuild/darwin-x64": "0.25.9", + "@esbuild/freebsd-arm64": "0.25.9", + "@esbuild/freebsd-x64": "0.25.9", + "@esbuild/linux-arm": "0.25.9", + "@esbuild/linux-arm64": "0.25.9", + "@esbuild/linux-ia32": "0.25.9", + "@esbuild/linux-loong64": "0.25.9", + "@esbuild/linux-mips64el": "0.25.9", + "@esbuild/linux-ppc64": "0.25.9", + "@esbuild/linux-riscv64": "0.25.9", + "@esbuild/linux-s390x": "0.25.9", + "@esbuild/linux-x64": "0.25.9", + "@esbuild/netbsd-arm64": "0.25.9", + "@esbuild/netbsd-x64": "0.25.9", + "@esbuild/openbsd-arm64": "0.25.9", + "@esbuild/openbsd-x64": "0.25.9", + "@esbuild/openharmony-arm64": "0.25.9", + "@esbuild/sunos-x64": "0.25.9", + "@esbuild/win32-arm64": "0.25.9", + "@esbuild/win32-ia32": "0.25.9", + "@esbuild/win32-x64": "0.25.9" } }, "node_modules/esbuild-wasm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.23.0.tgz", - "integrity": "sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g==", + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.25.4.tgz", + "integrity": "sha512-2HlCS6rNvKWaSKhWaG/YIyRsTsL3gUrMP2ToZMBIjw9LM7vVcIs+rz8kE2vExvTJgvM8OKPqNpcHawY/BQc/qQ==", "dev": true, "license": "MIT", "bin": { @@ -11893,24 +12898,123 @@ "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/execa/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "node_modules/execa/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": "MIT" + "license": "ISC" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/exponential-backoff": { @@ -12040,34 +13144,6 @@ "dev": true, "license": "MIT" }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/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", @@ -12203,7 +13279,6 @@ "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, "license": "MIT", - "peer": true, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -12674,6 +13749,19 @@ "dev": true, "license": "MIT" }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -13080,16 +14168,16 @@ "peer": true }, "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/hosted-git-info/node_modules/lru-cache": { @@ -13289,13 +14377,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -13370,16 +14458,16 @@ } }, "node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-7.0.0.tgz", + "integrity": "sha512-T4gbf83A4NH95zvhVYZc+qWocBBGlpzUXLPGurJggw/WIOwicfXJChLDP/iBZnN5WqROSu5Bm3hhle4z8a8YGQ==", "dev": true, "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/image-size": { @@ -13397,9 +14485,9 @@ } }, "node_modules/immutable": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.3.tgz", + "integrity": "sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==", "dev": true, "license": "MIT" }, @@ -13465,16 +14553,6 @@ "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -13495,13 +14573,13 @@ "license": "ISC" }, "node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/injection-js": { @@ -13540,15 +14618,11 @@ } }, "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", + "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", "dev": true, "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, "engines": { "node": ">= 12" } @@ -13832,13 +14906,6 @@ "node": ">=8" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -13852,13 +14919,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true, - "license": "MIT" - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -14004,6 +15064,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -14371,13 +15441,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT" - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -14413,13 +15476,13 @@ "license": "MIT" }, "node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-4.0.0.tgz", + "integrity": "sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==", "dev": true, "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/json-schema-traverse": { @@ -14716,6 +15779,31 @@ "concat-map": "0.0.1" } }, + "node_modules/karma/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/karma/node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -14755,6 +15843,19 @@ "dev": true, "license": "MIT" }, + "node_modules/karma/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/karma/node_modules/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", @@ -14778,6 +15879,32 @@ "node": "*" } }, + "node_modules/karma/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/karma/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/karma/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -14803,16 +15930,6 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/karma/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -14909,9 +16026,9 @@ } }, "node_modules/launch-editor": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.0.tgz", - "integrity": "sha512-R/PIF14L6e2eHkhvQPu7jDRCr0msfCYCxbYiLgkkAGi0dVPWuM+RrsPu0a5dpuNe0KWGL3jpAkOlv53xGfPheQ==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", + "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", "dev": true, "license": "MIT", "dependencies": { @@ -15081,9 +16198,9 @@ "license": "MIT" }, "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "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": { @@ -15166,29 +16283,30 @@ } }, "node_modules/lmdb": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.0.13.tgz", - "integrity": "sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/lmdb/-/lmdb-3.2.6.tgz", + "integrity": "sha512-SuHqzPl7mYStna8WRotY8XX/EUZBjjv3QyKIByeCLFfC9uXT/OIHByEcA07PzbMfQAM0KYJtLgtpMRlIe5dErQ==", "dev": true, "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "msgpackr": "^1.10.2", + "msgpackr": "^1.11.2", "node-addon-api": "^6.1.0", "node-gyp-build-optional-packages": "5.2.2", - "ordered-binary": "^1.4.1", + "ordered-binary": "^1.5.3", "weak-lru-cache": "^1.2.2" }, "bin": { "download-lmdb-prebuilds": "bin/download-prebuilds.js" }, "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.0.13", - "@lmdb/lmdb-darwin-x64": "3.0.13", - "@lmdb/lmdb-linux-arm": "3.0.13", - "@lmdb/lmdb-linux-arm64": "3.0.13", - "@lmdb/lmdb-linux-x64": "3.0.13", - "@lmdb/lmdb-win32-x64": "3.0.13" + "@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" } }, "node_modules/load-json-file": { @@ -15596,9 +16714,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { @@ -15629,27 +16747,44 @@ "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", - "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-14.0.3.tgz", + "integrity": "sha512-QMjGbFTP0blj97EeidG5hk/QhKQ3T4ICckQGLgz38QF7Vgbk6e6FTARN8KhKxyBbWn8R0HU+bnw8aSoFPD4qtQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mat-tel-input": { + "version": "19.0.5-0", + "resolved": "https://registry.npmjs.org/mat-tel-input/-/mat-tel-input-19.0.5-0.tgz", + "integrity": "sha512-PkNTFhpanhxYP4f61r0agtDxNzykgHqzHM33iqwHXdM1MMauoxkQmob09cuakxU7wOolEoqC2aVvyvweZTvREw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.x" + }, + "peerDependencies": { + "@angular/common": "19.x", + "@angular/core": "19.x", + "@angular/forms": "19.x", + "@angular/material": "19.x", + "@angular/platform-browser": "19.x", + "@angular/platform-browser-dynamic": "19.x", + "libphonenumber-js": "^1.11.16" } }, "node_modules/math-intrinsics": { @@ -15706,9 +16841,9 @@ } }, "node_modules/memfs": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.23.0.tgz", - "integrity": "sha512-SucHN2lcWf0jrnw+jP6FoVW6l/zGJiXfNMdApZzG0x/0mAIMdwAeR5mjfsCH5U3BoqpUEtqzz+dSQSO0H/eqxg==", + "version": "4.36.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.36.0.tgz", + "integrity": "sha512-mfBfzGUdoEw5AZwG8E965ej3BbvW2F9LxEWj4uLxF6BEh1dO2N9eS3AGu9S6vfenuQYrVjsbUOOZK7y3vz4vyQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -15872,9 +17007,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", - "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dev": true, "license": "MIT", "dependencies": { @@ -15949,18 +17084,18 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-4.0.1.tgz", + "integrity": "sha512-j7U11C5HXigVuutxebFadoYBbd7VSdZWggSe64NVdvWNBqGAiXPL2QVCehjmw7lY1oF9gOllYbORh+hiNgfPgQ==", "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -16066,39 +17201,18 @@ "license": "ISC" }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": ">=8" + "node": ">= 18" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, "node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -16123,9 +17237,9 @@ } }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { @@ -16145,6 +17259,7 @@ "integrity": "sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA==", "dev": true, "license": "MIT", + "optional": true, "optionalDependencies": { "msgpackr-extract": "^3.0.2" } @@ -16187,13 +17302,13 @@ } }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nanoid": { @@ -16255,9 +17370,9 @@ } }, "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "dev": true, "license": "MIT", "engines": { @@ -16272,34 +17387,32 @@ "license": "MIT" }, "node_modules/ng-packagr": { - "version": "18.2.1", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-18.2.1.tgz", - "integrity": "sha512-dy9ZDpZb3QpAz+Y/m8VAu7ctr2VrnRU3gmQwJagnNybVJtCsKn3lZA3IW7Z7GTLoG5IALSPouiCgiB/C8ozv7w==", + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-19.2.2.tgz", + "integrity": "sha512-dFuwFsDJMBSd1YtmLLcX5bNNUCQUlRqgf34aXA+79PmkOP+0eF8GP2949wq3+jMjmFTNm80Oo8IUYiSLwklKCQ==", "dev": true, "license": "MIT", "dependencies": { "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/wasm-node": "^4.18.0", - "ajv": "^8.12.0", + "@rollup/wasm-node": "^4.24.0", + "ajv": "^8.17.1", "ansi-colors": "^4.1.3", "browserslist": "^4.22.1", - "cacache": "^18.0.0", - "chokidar": "^3.5.3", - "commander": "^12.0.0", + "chokidar": "^4.0.1", + "commander": "^13.0.0", "convert-source-map": "^2.0.0", "dependency-graph": "^1.0.0", - "esbuild": "^0.23.0", - "fast-glob": "^3.3.1", + "esbuild": "^0.25.0", + "fast-glob": "^3.3.2", "find-cache-dir": "^3.3.2", "injection-js": "^2.4.0", - "jsonc-parser": "^3.2.0", + "jsonc-parser": "^3.3.1", "less": "^4.2.0", "ora": "^5.1.0", - "piscina": "^4.4.0", - "postcss": "^8.4.31", + "piscina": "^4.7.0", + "postcss": "^8.4.47", "rxjs": "^7.8.1", - "sass": "^1.69.5" + "sass": "^1.81.0" }, "bin": { "ng-packagr": "cli/main.js" @@ -16308,13 +17421,13 @@ "node": "^18.19.1 || >=20.11.1" }, "optionalDependencies": { - "rollup": "^4.18.0" + "rollup": "^4.24.0" }, "peerDependencies": { - "@angular/compiler-cli": "^18.0.0 || ^18.2.0-next.0", - "tailwindcss": "^2.0.0 || ^3.0.0", + "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0 || ^19.2.0-next.0", + "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", "tslib": "^2.3.0", - "typescript": ">=5.4 <5.6" + "typescript": ">=5.5 <5.9" }, "peerDependenciesMeta": { "tailwindcss": { @@ -16323,9 +17436,9 @@ } }, "node_modules/ng-packagr/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, "license": "MIT", "engines": { @@ -16458,65 +17571,24 @@ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/ngx-currency": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/ngx-currency/-/ngx-currency-18.0.0.tgz", - "integrity": "sha512-+TkZZ3wS9/D8zCFqGeh0DXnd4Ava/YUKVHKOc1xbnSV1CC8j+mJ2AkQCSPy3pN59bJDQtZfNwthWzByCUz8uLQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.5.0" - }, - "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0" - } - }, - "node_modules/ngx-mat-intl-tel-input": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ngx-mat-intl-tel-input/-/ngx-mat-intl-tel-input-5.0.0.tgz", - "integrity": "sha512-3XwA0zzcxBF/p+BQqBuGxPa7Mi+upehbrR6WvgwWcd+T9NcjImNEAf/Pd8R37OarN3fLrxFq/8g6B2zqYZtBCg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.x" - }, - "peerDependencies": { - "@angular/common": ">=14.x", - "@angular/core": ">=14.x", - "@angular/forms": ">=14.x", - "@angular/platform-browser": ">=14.x", - "@angular/platform-browser-dynamic": ">=14.x", - "libphonenumber-js": "^1.10.11" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, + "node_modules/ngx-currency": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/ngx-currency/-/ngx-currency-19.0.0.tgz", + "integrity": "sha512-N7SdB8D+ttPAf9GNiMyhChPUJs0t0mRTMiJ2UILWN83Vnx9dGc1ytjFrV7q3pCVA66svl1bpSFOfbZ2rhJ7zHA==", "license": "MIT", - "optional": true, - "os": [ - "!win32" - ], "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" + "tslib": "^2.5.0" + }, + "peerDependencies": { + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0", + "@angular/forms": "^19.0.0" } }, - "node_modules/nice-napi/node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -16529,7 +17601,8 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/node-domexception": { "version": "1.0.0", @@ -16580,41 +17653,28 @@ } }, "node_modules/node-gyp": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", - "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-11.3.0.tgz", + "integrity": "sha512-9J0+C+2nt3WFuui/mC46z2XCZ21/cKlFDuywULmseD/LlmnOrSeEAE4c/1jw6aybXLmpZnQY3/LmOJfgyHIcng==", "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" + "tar": "^7.4.3", + "tinyglobby": "^0.2.12", + "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/node-gyp-build-optional-packages": { @@ -16623,6 +17683,7 @@ "integrity": "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { "detect-libc": "^2.0.1" }, @@ -16632,25 +17693,14 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/node-gyp/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/node-gyp/node_modules/isexe": { @@ -16663,10 +17713,44 @@ "node": ">=16" } }, + "node_modules/node-gyp/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-gyp/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", "dependencies": { @@ -16676,7 +17760,17 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/node-releases": { @@ -16687,34 +17781,19 @@ "license": "MIT" }, "node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-8.1.0.tgz", + "integrity": "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==", "dev": true, "license": "ISC", "dependencies": { - "abbrev": "^2.0.0" + "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/normalize-path": { @@ -16738,16 +17817,16 @@ } }, "node_modules/npm-bundled": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", - "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-4.0.0.tgz", + "integrity": "sha512-IxaQZDMsqfQ2Lz37VvyyEtKLe8FsRZuysmedy/N06TU1RyVppYKXrO4xIhR0F+7ubIBox6Q7nir6fQI3ej39iA==", "dev": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-force-resolutions": { @@ -16766,91 +17845,91 @@ } }, "node_modules/npm-install-checks": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", - "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-7.1.1.tgz", + "integrity": "sha512-u6DCwbow5ynAX5BdiHQ9qvexme4U3qHW3MWe5NqH+NeBm0LbiH6zvGjNNew1fY+AZZUtVHbOPF3j7mJxbUzpXg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", - "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-4.0.0.tgz", + "integrity": "sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-package-arg": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", - "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-12.0.2.tgz", + "integrity": "sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==", "dev": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-9.0.0.tgz", + "integrity": "sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==", "dev": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.4" + "ignore-walk": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-pick-manifest": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", - "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-10.0.0.tgz", + "integrity": "sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==", "dev": true, "license": "ISC", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-registry-fetch": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", - "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-18.0.2.tgz", + "integrity": "sha512-LeVMZBBVy+oQb5R6FDV9OlJCcWDU+al10oKpe+nsvcHnG24Z3uM3SvJYKfGJlfGjVU8v9liejCrUR/M5HO5NEQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/redact": "^2.0.0", + "@npmcli/redact": "^3.0.0", "jsonparse": "^1.3.1", - "make-fetch-happen": "^13.0.0", + "make-fetch-happen": "^14.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm-run-all": { @@ -17024,6 +18103,29 @@ "which": "bin/which" } }, + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -17384,17 +18486,8 @@ "resolved": "https://registry.npmjs.org/ordered-binary/-/ordered-binary-1.6.0.tgz", "integrity": "sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ==", "dev": true, - "license": "MIT" - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "optional": true }, "node_modules/own-keys": { "version": "1.0.1", @@ -17414,6 +18507,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", @@ -17447,16 +18550,13 @@ } }, "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17508,35 +18608,35 @@ "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", - "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-20.0.0.tgz", + "integrity": "sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/parent-module": { @@ -17593,7 +18693,6 @@ "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "devOptional": true, "license": "MIT", "dependencies": { "entities": "^6.0.0" @@ -17634,7 +18733,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -17782,13 +18880,13 @@ } }, "node_modules/piscina": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.6.1.tgz", - "integrity": "sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz", + "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==", "dev": true, "license": "MIT", "optionalDependencies": { - "nice-napi": "^1.0.2" + "@napi-rs/nice": "^1.0.1" } }, "node_modules/pkg-dir": { @@ -17825,13 +18923,13 @@ } }, "node_modules/playwright": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.54.1.tgz", - "integrity": "sha512-peWpSwIBmSLi6aW2auvrUtf2DqY16YYcCMO8rTVx486jKmDTJg7UAhyrraP98GB8BoPURZP8+nxO7TSd4cPr5g==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", + "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.54.1" + "playwright-core": "1.55.0" }, "bin": { "playwright": "cli.js" @@ -17844,9 +18942,9 @@ } }, "node_modules/playwright-core": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.1.tgz", - "integrity": "sha512-Nbjs2zjj0htNhzgiy5wu+3w09YetDx5pkrpI/kZotDlDUaYk0HVA5xrBVPdow4SAUIlhgKcJeJg4GRKW6xHusA==", + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", + "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -18135,13 +19233,13 @@ } }, "node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-5.0.0.tgz", + "integrity": "sha512-Azwzvl90HaF0aCz1JrDdXQykFakSSNPaPoiZ9fm5qJIMHioDZEi7OAdRwSm6rSoPtY3Qutnm3L7ogmg3dc+wbQ==", "dev": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/process-nextick-args": { @@ -18151,13 +19249,6 @@ "dev": true, "license": "MIT" }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true, - "license": "ISC" - }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -18411,29 +19502,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/rechoir": { @@ -18640,19 +19719,22 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18773,13 +19855,13 @@ } }, "node_modules/rollup": { - "version": "4.22.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.22.4.tgz", - "integrity": "sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==", + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", + "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -18789,29 +19871,32 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.22.4", - "@rollup/rollup-android-arm64": "4.22.4", - "@rollup/rollup-darwin-arm64": "4.22.4", - "@rollup/rollup-darwin-x64": "4.22.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.22.4", - "@rollup/rollup-linux-arm-musleabihf": "4.22.4", - "@rollup/rollup-linux-arm64-gnu": "4.22.4", - "@rollup/rollup-linux-arm64-musl": "4.22.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.22.4", - "@rollup/rollup-linux-riscv64-gnu": "4.22.4", - "@rollup/rollup-linux-s390x-gnu": "4.22.4", - "@rollup/rollup-linux-x64-gnu": "4.22.4", - "@rollup/rollup-linux-x64-musl": "4.22.4", - "@rollup/rollup-win32-arm64-msvc": "4.22.4", - "@rollup/rollup-win32-ia32-msvc": "4.22.4", - "@rollup/rollup-win32-x64-msvc": "4.22.4", + "@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", "fsevents": "~2.3.2" } }, "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "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" }, @@ -18944,14 +20029,14 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.77.6", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.6.tgz", - "integrity": "sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==", + "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", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -18959,12 +20044,15 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/sass-loader": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.0.tgz", - "integrity": "sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==", + "version": "16.0.5", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-16.0.5.tgz", + "integrity": "sha512-oL+CMBXrj6BZ/zOq4os+UECPL+bWqt6OAC6DWS8Ln8GZRcMDjlJ4JC3FBDuHJdYaFWIdKNIBYmtZtK2MaMkNIw==", "dev": true, "license": "MIT", "dependencies": { @@ -19385,13 +20473,14 @@ } }, "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.9.2.tgz", + "integrity": "sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "glob": "^7.0.0", + "execa": "^1.0.0", + "fast-glob": "^3.3.2", "interpret": "^1.0.0", "rechoir": "^0.6.2" }, @@ -19399,24 +20488,24 @@ "shjs": "bin/shjs" }, "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/shx": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz", - "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.4.0.tgz", + "integrity": "sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.3", - "shelljs": "^0.8.5" + "minimist": "^1.2.8", + "shelljs": "^0.9.2" }, "bin": { "shx": "lib/cli.js" }, "engines": { - "node": ">=6" + "node": ">=18" } }, "node_modules/side-channel": { @@ -19509,21 +20598,21 @@ } }, "node_modules/sigstore": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", - "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-3.1.0.tgz", + "integrity": "sha512-ZpzWAFHIFqyFE56dXqgX/DkDRZdz+rRcjoIk/RQU4IX0wiCv1l8S7ZrXDHcCc+uaf+6o7w3h2l3g6GYG5TKN9Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "@sigstore/sign": "^2.3.2", - "@sigstore/tuf": "^2.3.4", - "@sigstore/verify": "^1.2.1" + "@sigstore/bundle": "^3.1.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.4.0", + "@sigstore/sign": "^3.1.0", + "@sigstore/tuf": "^3.1.0", + "@sigstore/verify": "^2.1.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/slash": { @@ -19702,13 +20791,13 @@ } }, "node_modules/socks": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.6.tgz", - "integrity": "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA==", + "version": "2.8.7", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", + "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", "dev": true, "license": "MIT", "dependencies": { - "ip-address": "^9.0.5", + "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" }, "engines": { @@ -19893,16 +20982,16 @@ "license": "BSD-3-Clause" }, "node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-12.0.0.tgz", + "integrity": "sha512-S7iGNosepx9RadX82oimUkvr0Ct7IjJbEbs4mJcTxst8um95J3sDYU1RBEOvdu6oL1Wek2ODI5i4MAw+dZ6cAQ==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/statuses": { @@ -20255,6 +21344,16 @@ "node": ">=4" } }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -20790,6 +21889,33 @@ "node": ">=8" } }, + "node_modules/tar/node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -20893,14 +22019,18 @@ "license": "MIT" }, "node_modules/thingies": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", - "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.5.0.tgz", + "integrity": "sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==", "dev": true, - "license": "Unlicense", + "license": "MIT", "engines": { "node": ">=10.18" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, "peerDependencies": { "tslib": "^2" } @@ -20933,7 +22063,6 @@ "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" @@ -20952,16 +22081,13 @@ "license": "MIT" }, "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", + "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", "dev": true, "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, "engines": { - "node": ">=0.6.0" + "node": ">=14.14" } }, "node_modules/to-buffer": { @@ -21311,18 +22437,18 @@ "peer": true }, "node_modules/tuf-js": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", - "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "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": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" + "@tufjs/models": "3.0.1", + "debug": "^4.4.1", + "make-fetch-happen": "^14.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/type-check": { @@ -21576,29 +22702,29 @@ } }, "node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-4.0.0.tgz", + "integrity": "sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==", "dev": true, "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-5.0.0.tgz", + "integrity": "sha512-9OdaqO5kwqR+1kVgHAhsp5vPNU0hnxRa26rBFNfNgM7M6pNtgzeBn3s/xbyCQL3dcjzOatcef6UUHpB/6MaETg==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/universalify": { @@ -21652,149 +22778,476 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true, + "license": "MIT" + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-6.0.2.tgz", + "integrity": "sha512-IUoow1YUtvoBBC06dXs8bR8B9vuA3aJfmQNKMoaPG/OFsPmoQvw8xh+6Ye25Gx9DQhoEom3Pcu9MKHerm/NpUQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "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_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", + "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", + "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", + "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", + "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", + "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", + "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", + "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", + "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", + "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", + "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/vite/node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", + "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">=6" - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", + "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "cpu": [ + "riscv64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", + "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", + "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", + "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "cpu": [ + "x64" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", + "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", + "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "cpu": [ + "ia32" + ], "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", + "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.8" - } + "optional": true, + "os": [ + "win32" + ], + "peer": true }, - "node_modules/vite": { - "version": "5.4.19", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz", - "integrity": "sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==", + "node_modules/vite/node_modules/rollup": { + "version": "4.46.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", + "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "@types/estree": "1.0.8" }, "bin": { - "vite": "bin/vite.js" + "rollup": "dist/bin/rollup" }, "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" + "node": ">=18.0.0", + "npm": ">=8.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "@rollup/rollup-android-arm-eabi": "4.46.2", + "@rollup/rollup-android-arm64": "4.46.2", + "@rollup/rollup-darwin-arm64": "4.46.2", + "@rollup/rollup-darwin-x64": "4.46.2", + "@rollup/rollup-freebsd-arm64": "4.46.2", + "@rollup/rollup-freebsd-x64": "4.46.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", + "@rollup/rollup-linux-arm-musleabihf": "4.46.2", + "@rollup/rollup-linux-arm64-gnu": "4.46.2", + "@rollup/rollup-linux-arm64-musl": "4.46.2", + "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", + "@rollup/rollup-linux-ppc64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-gnu": "4.46.2", + "@rollup/rollup-linux-riscv64-musl": "4.46.2", + "@rollup/rollup-linux-s390x-gnu": "4.46.2", + "@rollup/rollup-linux-x64-gnu": "4.46.2", + "@rollup/rollup-linux-x64-musl": "4.46.2", + "@rollup/rollup-win32-arm64-msvc": "4.46.2", + "@rollup/rollup-win32-ia32-msvc": "4.46.2", + "@rollup/rollup-win32-x64-msvc": "4.46.2", + "fsevents": "~2.3.2" } }, "node_modules/void-elements": { @@ -21862,7 +23315,8 @@ "resolved": "https://registry.npmjs.org/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz", "integrity": "sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true }, "node_modules/web-streams-polyfill": { "version": "3.3.3", @@ -21874,9 +23328,9 @@ } }, "node_modules/webpack": { - "version": "5.100.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.100.2.tgz", - "integrity": "sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw==", + "version": "5.101.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", + "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "dev": true, "license": "MIT", "dependencies": { @@ -21890,7 +23344,7 @@ "acorn-import-phases": "^1.0.3", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", + "enhanced-resolve": "^5.17.3", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -22010,6 +23464,44 @@ } } }, + "node_modules/webpack-dev-server/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/webpack-dev-server/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { "version": "2.0.9", "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", @@ -22035,6 +23527,32 @@ } } }, + "node_modules/webpack-dev-server/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/webpack-dev-server/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.18.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", @@ -22058,18 +23576,18 @@ } }, "node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-6.0.1.tgz", + "integrity": "sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==", "dev": true, "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.0" + "wildcard": "^2.0.1" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, "node_modules/webpack-sources": { @@ -22669,9 +24187,9 @@ } }, "node_modules/zone.js": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", - "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", + "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", "license": "MIT" } } diff --git a/package.json b/package.json index 6e67e24e..5ab426cf 100644 --- a/package.json +++ b/package.json @@ -55,47 +55,47 @@ "test-report": "playwright show-report" }, "dependencies": { - "@angular/animations": "^18.2.12", - "@angular/cdk": "^18.2.13", - "@angular/common": "^18.2.12", - "@angular/compiler": "^18.2.12", - "@angular/core": "^18.2.12", - "@angular/forms": "^18.2.12", - "@angular/material": "^18.2.13", - "@angular/material-experimental": "^18.2.13", - "@angular/material-moment-adapter": "^18.2.13", - "@angular/platform-browser": "^18.2.12", - "@angular/platform-browser-dynamic": "^18.2.12", - "@angular/router": "^18.2.12", - "@danielmoncada/angular-datetime-picker": "^18.1.0", - "@pega/auth": "~0.2.28", + "@angular/animations": "^19.2.14", + "@angular/cdk": "^19.2.19", + "@angular/common": "^19.2.14", + "@angular/compiler": "^19.2.14", + "@angular/core": "^19.2.14", + "@angular/forms": "^19.2.14", + "@angular/material": "^19.2.19", + "@angular/material-experimental": "^19.2.19", + "@angular/material-moment-adapter": "^19.2.19", + "@angular/platform-browser": "^19.2.14", + "@angular/platform-browser-dynamic": "^19.2.14", + "@angular/router": "^19.2.14", + "@danielmoncada/angular-datetime-picker": "^19.0.0", + "@pega/auth": "~0.2.31", "@tinymce/tinymce-angular": "^8.0.1", "core-js": "^3.39.0", "dayjs": "^1.11.13", "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", + "mat-tel-input": "19.0.5-0", "libphonenumber-js": "^1.10.53", "lodash.clonedeep": "^4.5.0", - "ngx-currency": "^18.0.0", - "ngx-mat-intl-tel-input": "^5.0.0", + "ngx-currency": "^19.0.0", "rxjs": "^7.8.1", "tslib": "^2.8.1", - "zone.js": "~0.14.10" + "zone.js": "~0.15.1" }, "devDependencies": { - "@angular-builders/custom-webpack": "^18.0.0", - "@angular-devkit/build-angular": "^18.2.12", - "@angular-devkit/core": "^18.2.12", + "@angular-builders/custom-webpack": "^19.0.1", + "@angular-devkit/build-angular": "^19.2.15", + "@angular-devkit/core": "^19.2.15", "@angular-eslint/eslint-plugin": "^18.4.0", "@angular-eslint/eslint-plugin-template": "^18.4.0", "@angular-eslint/template-parser": "^18.4.1", - "@angular/cli": "^18.2.12", - "@angular/compiler-cli": "^18.2.12", - "@angular/language-service": "^18.2.12", - "@pega/configs": "^0.16.2", + "@angular/cli": "^19.2.15", + "@angular/compiler-cli": "^19.2.14", + "@angular/language-service": "^19.2.14", + "@pega/configs": "^0.16.3", "@pega/constellationjs": "~24.2.2", "@pega/pcore-pconnect-typedefs": "~3.2.2", - "@playwright/test": "^1.40.1", + "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", "@types/node": "^20.10.8", @@ -104,9 +104,9 @@ "brotli": "^1.3.3", "codelyzer": "^6.0.2", "compressing": "^1.10.1", - "copy-webpack-plugin": "^12.0.2", + "copy-webpack-plugin": "^13.0.1", "eslint": "^8.56.0", - "eslint-plugin-import": "^2.31.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-jest": "^28.9.0", "fs-extra": "^11.2.0", "jasmine-core": "~5.1.1", @@ -116,18 +116,18 @@ "karma-jasmine": "~5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "md5-file": "^5.0.0", - "ng-packagr": "^18.2.1", + "ng-packagr": "^19.2.2", "npm-force-resolutions": "0.0.10", "npm-run-all": "^4.1.5", "postcss": "^8.4.49", - "shx": "^0.3.4", + "shx": "^0.4.0", "tinymce": "^6.8.6", "ts-node": "~10.9.2", - "typescript": "^5.4.5", - "webpack": "^5.96.1" + "typescript": "^5.5.4", + "webpack": "^5.101.2" }, "overrides": { - "@angular/core": "^18.2.12", + "@angular/core": "^19.2.14", "esbuild": "^0.25.0" } } diff --git a/packages/angular-sdk-components/package.json b/packages/angular-sdk-components/package.json index 6c173c08..bbf4584a 100644 --- a/packages/angular-sdk-components/package.json +++ b/packages/angular-sdk-components/package.json @@ -2,11 +2,11 @@ "name": "@pega/angular-sdk-components", "version": "24.2.12", "peerDependencies": { - "@angular/common": "^18.2.12", - "@angular/core": "^18.2.12" + "@angular/common": "^19.0.0", + "@angular/core": "^19.0.0" }, "dependencies": { - "tslib": "^2.6.2" + "tslib": "^2.8.1" }, "sideEffects": false } diff --git a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts index 3ba9910b..30a35d10 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts @@ -9,7 +9,6 @@ const componentsRequireDisplayOnlyFAProp: string[] = ['HybridViewContainer', 'Mo selector: 'component-mapper', templateUrl: './component-mapper.component.html', styleUrls: ['./component-mapper.component.scss'], - standalone: true, imports: [CommonModule] }) export class ComponentMapperComponent implements OnInit, OnDestroy, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert-banner/alert-banner.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert-banner/alert-banner.component.ts index 5268dc17..dc70a269 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert-banner/alert-banner.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert-banner/alert-banner.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-alert-banner', templateUrl: './alert-banner.component.html', styleUrls: ['./alert-banner.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class AlertBannerComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.ts index 6fff7226..fdcd70b4 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.ts @@ -6,7 +6,6 @@ import { MatIconModule } from '@angular/material/icon'; selector: 'app-alert', templateUrl: './alert.component.html', styleUrls: ['./alert.component.scss'], - standalone: true, imports: [CommonModule, MatIconModule] }) export class AlertComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.ts index cbeb54d8..7ffc1519 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-banner', templateUrl: './banner.component.html', styleUrls: ['./banner.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class BannerComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.ts index 0e93b90c..5b2f52f1 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.ts @@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-case-create-stage', templateUrl: './case-create-stage.component.html', styleUrls: ['./case-create-stage.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class CaseCreateStageComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/field-group/field-group.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/field-group/field-group.component.ts index 893a652e..83dc7c86 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/field-group/field-group.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/field-group/field-group.component.ts @@ -7,7 +7,6 @@ import { MatIconModule } from '@angular/material/icon'; selector: 'app-field-group', templateUrl: './field-group.component.html', styleUrls: ['./field-group.component.scss'], - standalone: true, imports: [CommonModule, MatGridListModule, MatIconModule] }) export class FieldGroupComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.ts index 7e922d7e..1c5bdc25 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-material-case-summary', templateUrl: './material-case-summary.component.html', styleUrls: ['./material-case-summary.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class MaterialCaseSummaryComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.ts index b98f2591..4c6048e0 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-material-details-fields', templateUrl: './material-details-fields.component.html', styleUrls: ['./material-details-fields.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class MaterialDetailsFieldsComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.ts index 83f49329..56578cf9 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-material-details', templateUrl: './material-details.component.html', styleUrls: ['./material-details.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class MaterialDetailsComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.ts index ac7dc7e3..325cadc7 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.ts @@ -8,7 +8,6 @@ import { Utils } from '../../../_helpers/utils'; selector: 'app-material-summary-item', templateUrl: './material-summary-item.component.html', styleUrls: ['./material-summary-item.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule] }) export class MaterialSummaryItemComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.ts index 01b157d6..396220c2 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-material-summary-list', templateUrl: './material-summary-list.component.html', styleUrls: ['./material-summary-list.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class MaterialSummaryListComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts index 4a0476d9..2196cf9d 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.ts @@ -7,7 +7,6 @@ import { MatButtonToggleModule } from '@angular/material/button-toggle'; selector: 'app-material-vertical-tabs', templateUrl: './material-vertical-tabs.component.html', styleUrls: ['./material-vertical-tabs.component.scss'], - standalone: true, imports: [CommonModule, MatButtonToggleModule, MatBadgeModule] }) export class MaterialVerticalTabsComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts index f009154d..ba8e2fb8 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts @@ -7,7 +7,6 @@ import { Utils } from '../../../_helpers/utils'; selector: 'app-operator', templateUrl: './operator.component.html', styleUrls: ['./operator.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule] }) export class OperatorComponent implements OnInit, OnChanges, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.ts index b2eccc9a..18e03df0 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.ts @@ -10,7 +10,6 @@ interface PulseProps { selector: 'app-pulse', templateUrl: './pulse.component.html', styleUrls: ['./pulse.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class PulseComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.ts index d17e78c2..98b8bbf0 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.ts @@ -9,7 +9,6 @@ declare let tinymce: any; selector: 'app-rich-text-editor', templateUrl: './rich-text-editor.component.html', styleUrls: ['./rich-text-editor.component.scss'], - standalone: true, imports: [CommonModule, EditorModule, ReactiveFormsModule], providers: [{ provide: TINYMCE_SCRIPT_SRC, useValue: 'tinymce/tinymce.min.js' }] }) diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.ts index 95ac8c92..b048b2e2 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.ts @@ -6,7 +6,6 @@ import { Component, Input } from '@angular/core'; selector: 'wss-quick-create', templateUrl: './wss-quick-create.component.html', styleUrls: ['./wss-quick-create.component.scss'], - standalone: true, imports: [CommonModule] }) export class WssQuickCreateComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts index b48014a1..c8560062 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts @@ -34,7 +34,6 @@ interface AutoCompleteProps extends PConnFieldProps { selector: 'app-auto-complete', templateUrl: './auto-complete.component.html', styleUrls: ['./auto-complete.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, diff --git a/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.ts b/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.ts index 08f7e78c..bc79fa21 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.ts @@ -8,7 +8,6 @@ import { ProgressSpinnerService } from '../../../_messages/progress-spinner.serv selector: 'app-cancel-alert', templateUrl: './cancel-alert.component.html', styleUrls: ['./cancel-alert.component.scss'], - standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule] }) export class CancelAlertComponent implements OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts index de2e3c23..da4bfcac 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts @@ -32,7 +32,6 @@ interface CheckboxProps extends Omit { selector: 'app-check-box', templateUrl: './check-box.component.html', styleUrls: ['./check-box.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatCheckboxModule, MatFormFieldModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)] }) export class CheckBoxComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts index c2d9776c..1189afb9 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts @@ -24,7 +24,6 @@ interface CurrrencyProps extends PConnFieldProps { selector: 'app-currency', templateUrl: './currency.component.html', styleUrls: ['./currency.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, NgxCurrencyDirective, forwardRef(() => ComponentMapperComponent)] }) export class CurrencyComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts b/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts index 827e2c25..0c628109 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts @@ -24,7 +24,6 @@ interface DateTimeProps extends PConnFieldProps { selector: 'app-date-time', templateUrl: './date-time.component.html', styleUrls: ['./date-time.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, diff --git a/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts b/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts index 0242b9ff..02a6d589 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts @@ -43,7 +43,6 @@ class MyFormat { selector: 'app-date', templateUrl: './date.component.html', styleUrls: ['./date.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, diff --git a/packages/angular-sdk-components/src/lib/_components/field/decimal/decimal.component.ts b/packages/angular-sdk-components/src/lib/_components/field/decimal/decimal.component.ts index c1acc404..089e820e 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/decimal/decimal.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/decimal/decimal.component.ts @@ -25,7 +25,6 @@ interface DecimalProps extends PConnFieldProps { selector: 'app-decimal', templateUrl: './decimal.component.html', styleUrls: ['./decimal.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, diff --git a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts index e631b093..f40af442 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts @@ -68,7 +68,6 @@ interface DropdownProps extends PConnFieldProps { selector: 'app-dropdown', templateUrl: './dropdown.component.html', styleUrls: ['./dropdown.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatSelectModule, MatOptionModule, forwardRef(() => ComponentMapperComponent)] }) export class DropdownComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts index c6e97e47..d31dd644 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts @@ -18,7 +18,6 @@ interface EmailProps extends PConnFieldProps { selector: 'app-email', templateUrl: './email.component.html', styleUrls: ['./email.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class EmailComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/group/group.component.ts b/packages/angular-sdk-components/src/lib/_components/field/group/group.component.ts index 851d88dd..c97c1501 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/group/group.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/group/group.component.ts @@ -18,7 +18,6 @@ interface GroupProps extends PConnFieldProps { selector: 'app-group', templateUrl: './group.component.html', styleUrls: ['./group.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class GroupComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts b/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts index a7e1852f..8a2765a8 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts @@ -18,7 +18,6 @@ interface IntegerProps extends PConnFieldProps { selector: 'app-integer', templateUrl: './integer.component.html', styleUrls: ['./integer.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class IntegerComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.ts b/packages/angular-sdk-components/src/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.ts index bb930c42..58d76f64 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.ts @@ -7,7 +7,6 @@ import { MatGridListModule } from '@angular/material/grid-list'; selector: 'app-list-view-action-buttons', templateUrl: './list-view-action-buttons.component.html', styleUrls: ['./list-view-action-buttons.component.scss'], - standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule] }) export class ListViewActionButtonsComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts b/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts index 9c58f998..d4d8cd99 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core'; +import { Component, Input, OnDestroy, OnInit } from '@angular/core'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatChipsModule } from '@angular/material/chips'; @@ -9,7 +9,6 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatIconModule } from '@angular/material/icon'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; -import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; import { Utils } from '../../../_helpers/utils'; import { doSearch, getDisplayFieldsMetaData, getGroupDataForItemsTree, preProcessColumns } from './utils'; import { deleteInstruction, insertInstruction } from '../../../_helpers/instructions-utils'; @@ -19,7 +18,6 @@ import { handleEvent } from '../../../_helpers/event-util'; selector: 'app-multiselect', templateUrl: './multiselect.component.html', styleUrls: ['./multiselect.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, @@ -29,8 +27,7 @@ import { handleEvent } from '../../../_helpers/event-util'; MatOptionModule, MatCheckboxModule, MatIconModule, - MatChipsModule, - forwardRef(() => ComponentMapperComponent) + MatChipsModule ] }) export class MultiselectComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts b/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts index 1c7f15ee..6d61be80 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts @@ -24,7 +24,6 @@ interface PercentageProps extends PConnFieldProps { selector: 'app-percentage', templateUrl: './percentage.component.html', styleUrls: ['./percentage.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, NgxCurrencyDirective, forwardRef(() => ComponentMapperComponent)] }) export class PercentageComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html index bf1d01da..0e1b2cd2 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html +++ b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html @@ -5,10 +5,10 @@
- - + {{ label$ }} {{ getErrorMessage() }} diff --git a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.scss b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.scss index 5aa69dea..0a887a33 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.scss @@ -24,6 +24,15 @@ font-size: 0.7rem; } +::ng-deep .cdk-overlay-pane { + left: 32rem !important; + top: 20rem !important; +} + +::ng-deep .mat-mdc-menu-panel { + max-width: 20rem; +} + // ::ng-deep .iti { // display: block !important; // margin-bottom: 20px; diff --git a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts index 1ba5579a..59505ba7 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts @@ -3,7 +3,8 @@ import { CommonModule } from '@angular/common'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; import { interval } from 'rxjs'; -import { NgxMatIntlTelInputComponent } from 'ngx-mat-intl-tel-input'; +import { MatTelInput } from 'mat-tel-input'; +import { parsePhoneNumberFromString } from 'libphonenumber-js'; import { Utils } from '../../../_helpers/utils'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { handleEvent } from '../../../_helpers/event-util'; @@ -18,8 +19,7 @@ interface PhoneProps extends PConnFieldProps { selector: 'app-phone', templateUrl: './phone.component.html', styleUrls: ['./phone.component.scss'], - standalone: true, - imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, NgxMatIntlTelInputComponent, forwardRef(() => ComponentMapperComponent)] + imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatTelInput, forwardRef(() => ComponentMapperComponent)] }) export class PhoneComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; @@ -45,6 +45,7 @@ export class PhoneComponent implements OnInit, OnDestroy { actionsApi: Object; propName: string; + preferredCountries: string[] = ['us']; constructor( private angularPConnect: AngularPConnectService, @@ -111,6 +112,7 @@ export class PhoneComponent implements OnInit, OnDestroy { if (this.configProps$.value != undefined) { this.value$ = this.configProps$.value; this.fieldControl.setValue(this.value$); + this.updatePreferredCountries(); } this.helperText = this.configProps$.helperText; @@ -170,6 +172,16 @@ export class PhoneComponent implements OnInit, OnDestroy { } } + updatePreferredCountries() { + if (this.value$ && typeof this.value$ === 'string') { + const phoneNumber = parsePhoneNumberFromString(this.value$); + this.preferredCountries = + phoneNumber?.country && !this.preferredCountries.includes(phoneNumber?.country.toLowerCase()) + ? [phoneNumber?.country?.toLowerCase(), ...this.preferredCountries] + : this.preferredCountries; + } + } + getErrorMessage() { let errMessage = ''; diff --git a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts index e5730881..0373e8e1 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts @@ -27,7 +27,6 @@ interface RadioButtonsProps extends PConnFieldProps { templateUrl: './radio-buttons.component.html', styleUrls: ['./radio-buttons.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, MatRadioModule, forwardRef(() => ComponentMapperComponent)] }) export class RadioButtonsComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts b/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts index 7ead0b5d..024d0054 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts @@ -15,7 +15,6 @@ interface RichTextProps extends PConnFieldProps { selector: 'app-rich-text', templateUrl: './rich-text.component.html', styleUrls: ['./rich-text.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)] }) export class RichTextComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/scalar-list/scalar-list.component.ts b/packages/angular-sdk-components/src/lib/_components/field/scalar-list/scalar-list.component.ts index 6bafa0ec..09c0d290 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/scalar-list/scalar-list.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/scalar-list/scalar-list.component.ts @@ -17,7 +17,6 @@ interface ScalarListProps extends Omit { selector: 'app-scalar-list', templateUrl: './scalar-list.component.html', styleUrls: ['./scalar-list.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class ScalarListComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts index a9a7268c..e8b089d8 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts @@ -15,7 +15,6 @@ interface SemanticLinkProps extends PConnFieldProps { selector: 'app-semantic-link', templateUrl: './semantic-link.component.html', styleUrls: ['./semantic-link.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class SemanticLinkComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts index 1583c42f..37f757a1 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts @@ -19,7 +19,6 @@ interface TextAreaProps extends PConnFieldProps { selector: 'app-text-area', templateUrl: './text-area.component.html', styleUrls: ['./text-area.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class TextAreaComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-content/text-content.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-content/text-content.component.ts index 85a3ea1e..96e98d99 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-content/text-content.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-content/text-content.component.ts @@ -14,7 +14,6 @@ interface TextContentProps extends PConnFieldProps { selector: 'app-text-content', templateUrl: './text-content.component.html', styleUrls: ['./text-content.component.scss'], - standalone: true, imports: [CommonModule] }) export class TextContentComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts index 87200ae8..d43ba783 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts @@ -19,7 +19,6 @@ interface TextInputProps extends PConnFieldProps { selector: 'app-text-input', templateUrl: './text-input.component.html', styleUrls: ['./text-input.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class TextInputComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/text/text.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text/text.component.ts index d8675f8c..8350bdfa 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text/text.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text/text.component.ts @@ -15,7 +15,6 @@ interface TextProps extends PConnFieldProps { selector: 'app-text', templateUrl: './text.component.html', styleUrls: ['./text.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class TextComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts b/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts index a0d6108a..e01c8d51 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts @@ -19,7 +19,6 @@ interface TimeProps extends PConnFieldProps { selector: 'app-time', templateUrl: './time.component.html', styleUrls: ['./time.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class TimeComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts b/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts index 4df88f8f..4c0ac7ad 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts @@ -18,7 +18,6 @@ interface URLProps extends PConnFieldProps { selector: 'app-url', templateUrl: './url.component.html', styleUrls: ['./url.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class UrlComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts index 8a761f52..22ed2261 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts @@ -30,7 +30,6 @@ interface UserReferenceProps extends Omit { selector: 'app-user-reference', templateUrl: './user-reference.component.html', styleUrls: ['./user-reference.component.scss'], - standalone: true, imports: [ CommonModule, ReactiveFormsModule, diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts index 2ef06673..55a7aec9 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts @@ -29,7 +29,6 @@ interface FlowContainerProps { templateUrl: './flow-container.component.html', styleUrls: ['./flow-container.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatCardModule, forwardRef(() => ComponentMapperComponent)] }) export class FlowContainerComponent extends FlowContainerBaseComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts index ea87c07a..8cb9029d 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.ts @@ -14,7 +14,6 @@ import { FormGroup } from '@angular/forms'; selector: 'app-hybrid-view-container', templateUrl: './hybrid-view-container.component.html', styleUrls: ['./hybrid-view-container.component.scss'], - standalone: true, imports: [CommonModule] }) export class HybridViewContainerComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts index ecb04412..af562bb0 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts @@ -18,7 +18,6 @@ import { ReferenceComponent } from '../../reference/reference.component'; selector: 'app-modal-view-container', templateUrl: './modal-view-container.component.html', styleUrls: ['./modal-view-container.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class ModalViewContainerComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts index 32a20151..fd56f8a9 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts @@ -28,7 +28,6 @@ interface ViewContainerProps { selector: 'app-view-container', templateUrl: './view-container.component.html', styleUrls: ['./view-container.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class ViewContainerComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.ts index e424e5b2..967c0501 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.ts @@ -7,7 +7,6 @@ import { MatGridListModule } from '@angular/material/grid-list'; selector: 'app-action-buttons', templateUrl: './action-buttons.component.html', styleUrls: ['./action-buttons.component.scss'], - standalone: true, imports: [CommonModule, MatGridListModule, MatButtonModule] }) export class ActionButtonsComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.ts index 176895bc..04f9fbfe 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.ts @@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-assignment-card', templateUrl: './assignment-card.component.html', styleUrls: ['./assignment-card.component.scss'], - standalone: true, imports: [CommonModule, ReactiveFormsModule, forwardRef(() => ComponentMapperComponent)] }) export class AssignmentCardComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts index b0185dd4..8c78d5f7 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts @@ -27,7 +27,6 @@ interface AssignmentProps { selector: 'app-assignment', templateUrl: './assignment.component.html', styleUrls: ['./assignment.component.scss'], - standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)] }) export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/dashboard-filter/dashboard-filter.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/dashboard-filter/dashboard-filter.component.ts index eaa0456a..90c2405d 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/dashboard-filter/dashboard-filter.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/dashboard-filter/dashboard-filter.component.ts @@ -14,7 +14,6 @@ import { getFilterExpression, getFormattedDate, createFilter, combineFilters } f selector: 'app-dashboard-filter', templateUrl: './dashboard-filter.component.html', styleUrls: ['./dashboard-filter.component.scss'], - standalone: true, imports: [ CommonModule, MatFormFieldModule, diff --git a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts index a199976a..803ecd9f 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts @@ -15,7 +15,6 @@ import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/an selector: 'app-defer-load', templateUrl: './defer-load.component.html', styleUrls: ['./defer-load.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/error-boundary/error-boundary.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/error-boundary/error-boundary.component.ts index 61931822..50717d84 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/error-boundary/error-boundary.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/error-boundary/error-boundary.component.ts @@ -5,7 +5,6 @@ import { CommonModule } from '@angular/common'; selector: 'app-error-boundary', templateUrl: './error-boundary.component.html', styleUrls: ['./error-boundary.component.scss'], - standalone: true, imports: [CommonModule] }) export class ErrorBoundaryComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/multi-step/multi-step.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/multi-step/multi-step.component.ts index 8efb9e5c..eda8e174 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/multi-step/multi-step.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/multi-step/multi-step.component.ts @@ -9,7 +9,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp templateUrl: './multi-step.component.html', styleUrls: ['./multi-step.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class MultiStepComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts index e7a70394..43729f28 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts @@ -17,7 +17,6 @@ interface NavBarProps { templateUrl: './navbar.component.html', styleUrls: ['./navbar.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatListModule, MatMenuModule] }) export class NavbarComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/region/region.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/region/region.component.ts index bdbe3d3b..b3a70553 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/region/region.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/region/region.component.ts @@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-region', templateUrl: './region.component.html', styleUrls: ['./region.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class RegionComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts index c5c820b7..c02a74f6 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts @@ -8,7 +8,6 @@ import { ProgressSpinnerService } from '../../../_messages/progress-spinner.serv import { ReferenceComponent } from '../reference/reference.component'; import { PreviewViewContainerComponent } from '../Containers/preview-view-container/preview-view-container.component'; import { ModalViewContainerComponent } from '../Containers/modal-view-container/modal-view-container.component'; -import { HybridViewContainerComponent } from '../Containers/hybrid-view-container/hybrid-view-container.component'; import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; /** @@ -23,11 +22,9 @@ const options = { context: 'app' }; selector: 'app-root-container', templateUrl: './root-container.component.html', styleUrls: ['./root-container.component.scss'], - standalone: true, imports: [ CommonModule, MatProgressSpinnerModule, - HybridViewContainerComponent, ModalViewContainerComponent, PreviewViewContainerComponent, forwardRef(() => ComponentMapperComponent) diff --git a/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.ts index a023315c..87a04350 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.ts @@ -13,7 +13,6 @@ interface StagesProps { selector: 'app-stages', templateUrl: './stages.component.html', styleUrls: ['./stages.component.scss'], - standalone: true, imports: [CommonModule] }) export class StagesComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts index a3b7db31..8ecaaa82 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts @@ -82,7 +82,6 @@ interface ViewProps { selector: 'app-view', templateUrl: './view.component.html', styleUrls: ['./view.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class ViewComponent implements OnInit, OnDestroy, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts index 757ede97..07553ae9 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts @@ -31,7 +31,6 @@ interface AppShellProps { selector: 'app-app-shell', templateUrl: './app-shell.component.html', styleUrls: ['./app-shell.component.scss'], - standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)] }) export class AppShellComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/banner-page/banner-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/banner-page/banner-page.component.ts index da86a9ef..911eb81c 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/banner-page/banner-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/banner-page/banner-page.component.ts @@ -16,7 +16,6 @@ interface BannerPageProps { selector: 'app-banner-page', templateUrl: './banner-page.component.html', styleUrls: ['./banner-page.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class BannerPageComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts index 49c7fd59..d2d39f5b 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts @@ -16,7 +16,6 @@ interface CaseSummaryProps { selector: 'app-case-summary', templateUrl: './case-summary.component.html', styleUrls: ['./case-summary.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class CaseSummaryComponent implements OnInit, OnDestroy, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.ts b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.ts index 427c7d5d..39d5e29d 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.ts @@ -21,7 +21,6 @@ interface CaseViewProps { templateUrl: './case-view.component.html', styleUrls: ['./case-view.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatToolbarModule, MatButtonModule, MatMenuModule, forwardRef(() => ComponentMapperComponent)] }) export class CaseViewComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/confirmation/confirmation.component.ts b/packages/angular-sdk-components/src/lib/_components/template/confirmation/confirmation.component.ts index 07f02062..8ad4b196 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/confirmation/confirmation.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/confirmation/confirmation.component.ts @@ -18,7 +18,6 @@ interface ConfirmationProps { selector: 'app-confirmation', templateUrl: './confirmation.component.html', styleUrls: ['./confirmation.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)] }) export class ConfirmationComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts index 87c23306..8a9fd63a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts @@ -10,7 +10,6 @@ const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' }; selector: 'app-data-reference', templateUrl: './data-reference.component.html', styleUrls: ['./data-reference.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class DataReferenceComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts b/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts index c341334c..131c7191 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts @@ -28,7 +28,6 @@ interface DefaultFormProps { selector: 'app-default-form', templateUrl: './default-form.component.html', styleUrls: ['./default-form.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class DefaultFormComponent extends FormTemplateBase implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-narrow-wide/details-narrow-wide.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-narrow-wide/details-narrow-wide.component.ts index 80f36dfe..e1dd3298 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-narrow-wide/details-narrow-wide.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-narrow-wide/details-narrow-wide.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-narrow-wide', templateUrl: './details-narrow-wide.component.html', styleUrls: ['./details-narrow-wide.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsNarrowWideComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-one-column/details-one-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-one-column/details-one-column.component.ts index d418b823..623413c5 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-one-column/details-one-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-one-column/details-one-column.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-one-column', templateUrl: './details-one-column.component.html', styleUrls: ['./details-one-column.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsOneColumnComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-sub-tabs/details-sub-tabs.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-sub-tabs/details-sub-tabs.component.ts index 8bca9561..e2970daa 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-sub-tabs/details-sub-tabs.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-sub-tabs/details-sub-tabs.component.ts @@ -9,7 +9,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-sub-tabs', templateUrl: './details-sub-tabs.component.html', styleUrls: ['./details-sub-tabs.component.scss'], - standalone: true, imports: [MatTabsModule, CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class DetailsSubTabsComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-three-column/details-three-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-three-column/details-three-column.component.ts index 88e154b8..443993cf 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-three-column/details-three-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-three-column/details-three-column.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-three-column', templateUrl: './details-three-column.component.html', styleUrls: ['./details-three-column.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsThreeColumnComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-two-column/details-two-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-two-column/details-two-column.component.ts index 219de1c8..4a5887aa 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-two-column/details-two-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-two-column/details-two-column.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-two-column', templateUrl: './details-two-column.component.html', styleUrls: ['./details-two-column.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsTwoColumnComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details-wide-narrow/details-wide-narrow.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details-wide-narrow/details-wide-narrow.component.ts index 18d91414..3d20a667 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details-wide-narrow/details-wide-narrow.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details-wide-narrow/details-wide-narrow.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details-wide-narrow', templateUrl: './details-wide-narrow.component.html', styleUrls: ['./details-wide-narrow.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsWideNarrowComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/details/details.component.ts b/packages/angular-sdk-components/src/lib/_components/template/details/details.component.ts index eaa92239..76eb53cb 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/details/details.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/details/details.component.ts @@ -6,7 +6,6 @@ import { DetailsTemplateBase } from '../base/details-template-base'; selector: 'app-details', templateUrl: './details.component.html', styleUrls: ['./details.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class DetailsComponent extends DetailsTemplateBase { diff --git a/packages/angular-sdk-components/src/lib/_components/template/dynamic-tabs/dynamic-tabs.component.ts b/packages/angular-sdk-components/src/lib/_components/template/dynamic-tabs/dynamic-tabs.component.ts index 1bd06cbe..957aa180 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/dynamic-tabs/dynamic-tabs.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/dynamic-tabs/dynamic-tabs.component.ts @@ -17,7 +17,6 @@ interface DynamicTabsProps { selector: 'app-dynamic-tabs', templateUrl: './dynamic-tabs.component.html', styleUrls: ['./dynamic-tabs.component.scss'], - standalone: true, imports: [CommonModule, MatTabsModule, forwardRef(() => ComponentMapperComponent)] }) export class DynamicTabsComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.ts b/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.ts index a1ab1fad..6be1d62a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-field-group-list', templateUrl: './field-group-list.component.html', styleUrls: ['./field-group-list.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class FieldGroupListComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/field-group-template/field-group-template.component.ts b/packages/angular-sdk-components/src/lib/_components/template/field-group-template/field-group-template.component.ts index b3152f97..d69ac68d 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/field-group-template/field-group-template.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/field-group-template/field-group-template.component.ts @@ -29,7 +29,6 @@ interface FieldGroupTemplateProps { selector: 'app-field-group-template', templateUrl: './field-group-template.component.html', styleUrls: ['./field-group-template.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)] }) export class FieldGroupTemplateComponent implements OnInit, OnDestroy, OnChanges, AfterViewInit { diff --git a/packages/angular-sdk-components/src/lib/_components/template/field-value-list/field-value-list.component.ts b/packages/angular-sdk-components/src/lib/_components/template/field-value-list/field-value-list.component.ts index bcdf2502..543313e2 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/field-value-list/field-value-list.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/field-value-list/field-value-list.component.ts @@ -5,7 +5,6 @@ import { Component, Input } from '@angular/core'; selector: 'app-field-value-list', templateUrl: './field-value-list.component.html', styleUrls: ['./field-value-list.component.scss'], - standalone: true, imports: [CommonModule] }) export class FieldValueListComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts index cbf4df8e..a739b5b3 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts @@ -15,7 +15,6 @@ interface InlineDashboardPageProps { selector: 'app-inline-dashboard-page', templateUrl: './inline-dashboard-page.component.html', styleUrls: ['./inline-dashboard-page.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class InlineDashboardPageComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard/inline-dashboard.component.ts b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard/inline-dashboard.component.ts index 88b1b2c0..9fd43d01 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard/inline-dashboard.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard/inline-dashboard.component.ts @@ -13,7 +13,6 @@ interface InlineDashboardProps { selector: 'app-inline-dashboard', templateUrl: './inline-dashboard.component.html', styleUrls: ['./inline-dashboard.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class InlineDashboardComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-page/list-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/list-page/list-page.component.ts index 3b08060a..2cdec41d 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-page/list-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-page/list-page.component.ts @@ -5,7 +5,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-list-page', templateUrl: './list-page.component.html', styleUrls: ['./list-page.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class ListPageComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts index 381d621d..b2fbd55f 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts @@ -58,7 +58,6 @@ export class Group { selector: 'app-list-view', templateUrl: './list-view.component.html', styleUrls: ['./list-view.component.scss'], - standalone: true, imports: [ CommonModule, MatFormFieldModule, diff --git a/packages/angular-sdk-components/src/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.ts b/packages/angular-sdk-components/src/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.ts index 3af67f66..a91c724f 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.ts @@ -12,7 +12,6 @@ interface MultiReferenceReadOnlyProps { selector: 'app-multi-reference-readonly', templateUrl: './multi-reference-readonly.component.html', styleUrls: ['./multi-reference-readonly.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class MultiReferenceReadonlyComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/narrow-wide-form/narrow-wide-form.component.ts b/packages/angular-sdk-components/src/lib/_components/template/narrow-wide-form/narrow-wide-form.component.ts index cbf66833..f55ce0e0 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/narrow-wide-form/narrow-wide-form.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/narrow-wide-form/narrow-wide-form.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-narrow-wide-form', templateUrl: './narrow-wide-form.component.html', styleUrls: ['./narrow-wide-form.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class NarrowWideFormComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/one-column-page/one-column-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/one-column-page/one-column-page.component.ts index 7a4ab24a..c5fb31da 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/one-column-page/one-column-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/one-column-page/one-column-page.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-one-column-page', templateUrl: './one-column-page.component.html', styleUrls: ['./one-column-page.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class OneColumnPageComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.ts b/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.ts index 6d8fd4f8..324cb255 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-one-column-tab', templateUrl: './one-column-tab.component.html', styleUrls: ['./one-column-tab.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class OneColumnTabComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/one-column/one-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/one-column/one-column.component.ts index 0951e075..5ccb7b64 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/one-column/one-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/one-column/one-column.component.ts @@ -8,7 +8,6 @@ import { FormTemplateBase } from '../base/form-template-base'; selector: 'app-one-column', templateUrl: './one-column.component.html', styleUrls: ['./one-column.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class OneColumnComponent extends FormTemplateBase implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/page/page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/page/page.component.ts index eef282bd..3c605a5a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/page/page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/page/page.component.ts @@ -14,7 +14,6 @@ interface PageProps { selector: 'app-page', templateUrl: './page.component.html', styleUrls: ['./page.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class PageComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/promoted-filters/promoted-filters.component.ts b/packages/angular-sdk-components/src/lib/_components/template/promoted-filters/promoted-filters.component.ts index 8c4c9c06..cbb405d5 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/promoted-filters/promoted-filters.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/promoted-filters/promoted-filters.component.ts @@ -26,7 +26,6 @@ const SUPPORTED_TYPES_IN_PROMOTED_FILTERS = [ selector: 'app-promoted-filters', templateUrl: './promoted-filters.component.html', styleUrls: ['./promoted-filters.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)] }) export class PromotedFiltersComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts b/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts index 9610121d..e0f45c8e 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts @@ -18,7 +18,6 @@ interface RepeatingStructuresProps { selector: 'app-repeating-structures', templateUrl: './repeating-structures.component.html', styleUrls: ['./repeating-structures.component.scss'], - standalone: true, imports: [CommonModule, MatFormFieldModule, MatIconModule, MatInputModule, MatTableModule, MatSortModule, MatPaginatorModule] }) export class RepeatingStructuresComponent implements OnInit, AfterViewInit { diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index 2abc3bc8..19a70486 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -62,7 +62,6 @@ class Group { selector: 'app-simple-table-manual', templateUrl: './simple-table-manual.component.html', styleUrls: ['./simple-table-manual.component.scss'], - standalone: true, imports: [ CommonModule, MatTableModule, diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-select/simple-table-select.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-select/simple-table-select.component.ts index 3934b070..915f120b 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-select/simple-table-select.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-select/simple-table-select.component.ts @@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-simple-table-select', templateUrl: './simple-table-select.component.html', styleUrls: ['./simple-table-select.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class SimpleTableSelectComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts index 8f0d5ffd..7704713e 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts @@ -28,7 +28,6 @@ interface SimpleTableProps { selector: 'app-simple-table', templateUrl: './simple-table.component.html', styleUrls: ['./simple-table.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class SimpleTableComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts index f633e881..253f6ea0 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-single-reference-readonly', templateUrl: './single-reference-readonly.component.html', styleUrls: ['./single-reference-readonly.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class SingleReferenceReadonlyComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/sub-tabs/sub-tabs.component.ts b/packages/angular-sdk-components/src/lib/_components/template/sub-tabs/sub-tabs.component.ts index e6b5b75e..813653aa 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/sub-tabs/sub-tabs.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/sub-tabs/sub-tabs.component.ts @@ -10,7 +10,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-sub-tabs', templateUrl: './sub-tabs.component.html', styleUrls: ['./sub-tabs.component.scss'], - standalone: true, imports: [MatTabsModule, CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class SubTabsComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/three-column-page/three-column-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/three-column-page/three-column-page.component.ts index 90473116..fd4c2eff 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/three-column-page/three-column-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/three-column-page/three-column-page.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-three-column-page', templateUrl: './three-column-page.component.html', styleUrls: ['./three-column-page.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class ThreeColumnPageComponent { diff --git a/packages/angular-sdk-components/src/lib/_components/template/three-column/three-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/three-column/three-column.component.ts index 276de00e..aef4dfea 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/three-column/three-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/three-column/three-column.component.ts @@ -8,7 +8,6 @@ import { FormTemplateBase } from '../base/form-template-base'; selector: 'app-three-column', templateUrl: './three-column.component.html', styleUrls: ['./three-column.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class ThreeColumnComponent extends FormTemplateBase implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/two-column-page/two-column-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/two-column-page/two-column-page.component.ts index cea47bab..9db9706b 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/two-column-page/two-column-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/two-column-page/two-column-page.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-two-column-page', templateUrl: './two-column-page.component.html', styleUrls: ['./two-column-page.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class TwoColumnPageComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/two-column-tab/two-column-tab.component.ts b/packages/angular-sdk-components/src/lib/_components/template/two-column-tab/two-column-tab.component.ts index f26297f3..d4be8725 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/two-column-tab/two-column-tab.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/two-column-tab/two-column-tab.component.ts @@ -7,7 +7,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-two-column-tab', templateUrl: './two-column-tab.component.html', styleUrls: ['./two-column-tab.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class TwoColumnTabComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/two-column/two-column.component.ts b/packages/angular-sdk-components/src/lib/_components/template/two-column/two-column.component.ts index 27c7a721..8e485b93 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/two-column/two-column.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/two-column/two-column.component.ts @@ -8,7 +8,6 @@ import { FormTemplateBase } from '../base/form-template-base'; selector: 'app-two-column', templateUrl: './two-column.component.html', styleUrls: ['./two-column.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class TwoColumnComponent extends FormTemplateBase implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-form/wide-narrow-form.component.ts b/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-form/wide-narrow-form.component.ts index c6a9b5da..b59a0a6f 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-form/wide-narrow-form.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-form/wide-narrow-form.component.ts @@ -8,7 +8,6 @@ import { FormTemplateBase } from '../base/form-template-base'; selector: 'app-wide-narrow-form', templateUrl: './wide-narrow-form.component.html', styleUrls: ['./wide-narrow-form.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class WideNarrowFormComponent extends FormTemplateBase implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-page/wide-narrow-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-page/wide-narrow-page.component.ts index 66b35217..8c51571a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-page/wide-narrow-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/wide-narrow-page/wide-narrow-page.component.ts @@ -8,7 +8,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-wide-narrow-page', templateUrl: './wide-narrow-page.component.html', styleUrls: ['./wide-narrow-page.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class WideNarrowPageComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.ts b/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.ts index 48e152cf..80021c7a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.ts @@ -19,7 +19,6 @@ interface WssNavBarProps { templateUrl: './wss-nav-bar.component.html', styleUrls: ['./wss-nav-bar.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatListModule, MatMenuModule, MatIconModule, MatToolbarModule] }) export class WssNavBarComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.ts index cc59a11c..2d8fed8e 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.ts @@ -15,7 +15,6 @@ interface AppAnnouncementProps { selector: 'app-app-announcement', templateUrl: './app-announcement.component.html', styleUrls: ['./app-announcement.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule] }) export class AppAnnouncementComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts index 94eaf6bd..0f05a267 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, NgZone, forwardRef, OnDestroy, ViewChild, ElementRef } from '@angular/core'; +import { Component, OnInit, Input, NgZone, OnDestroy, ViewChild, ElementRef } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; @@ -8,7 +8,6 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import download from 'downloadjs'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { Utils } from '../../../_helpers/utils'; -import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; import { PConnFieldProps } from '../../../_types/PConnProps.interface'; interface AttachmentProps extends Omit { @@ -22,8 +21,7 @@ interface AttachmentProps extends Omit { selector: 'app-attachment', templateUrl: './attachment.component.html', styleUrls: ['./attachment.component.scss'], - standalone: true, - imports: [CommonModule, MatProgressSpinnerModule, MatMenuModule, MatIconModule, MatButtonModule, forwardRef(() => ComponentMapperComponent)] + imports: [CommonModule, MatProgressSpinnerModule, MatMenuModule, MatIconModule, MatButtonModule] }) export class AttachmentComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; diff --git a/packages/angular-sdk-components/src/lib/_components/widget/case-history/case-history.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/case-history/case-history.component.ts index 1fbd1dae..be31746a 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/case-history/case-history.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/case-history/case-history.component.ts @@ -11,7 +11,6 @@ interface CaseHistoryProps { selector: 'app-case-history', templateUrl: './case-history.component.html', styleUrls: ['./case-history.component.scss'], - standalone: true, imports: [CommonModule, MatTableModule] }) export class CaseHistoryComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts index e3962ca7..2bd17b70 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts @@ -14,7 +14,6 @@ import { Utils } from '../../../_helpers/utils'; templateUrl: './feed-container.component.html', styleUrls: ['./feed-container.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatFormFieldModule, MatInputModule, MatGridListModule, MatButtonModule] }) export class FeedContainerComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.ts index 980e92f1..8706b3fa 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.ts @@ -17,7 +17,6 @@ interface FileUtilityProps { selector: 'app-file-utility', templateUrl: './file-utility.component.html', styleUrls: ['./file-utility.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatInputModule, forwardRef(() => ComponentMapperComponent)] }) export class FileUtilityComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/list-utility/list-utility.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/list-utility/list-utility.component.ts index 2eaf0dcf..b1fee6de 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/list-utility/list-utility.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/list-utility/list-utility.component.ts @@ -10,7 +10,6 @@ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/comp selector: 'app-list-utility', templateUrl: './list-utility.component.html', styleUrls: ['./list-utility.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule, MatMenuModule, MatProgressSpinnerModule, forwardRef(() => ComponentMapperComponent)] }) export class ListUtilityComponent implements OnInit { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/quick-create/quick-create.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/quick-create/quick-create.component.ts index b85deaa5..57cda527 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/quick-create/quick-create.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/quick-create/quick-create.component.ts @@ -14,7 +14,6 @@ interface QuickCreateProps { selector: 'app-quick-create', templateUrl: './quick-create.component.html', styleUrls: ['./quick-create.component.scss'], - standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) export class QuickCreateComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts index 61a32d35..ae3bf1ea 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts @@ -64,7 +64,6 @@ interface ToDoProps { templateUrl: './todo.component.html', styleUrls: ['./todo.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatButtonModule] }) export class TodoComponent implements OnInit, OnDestroy { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/utility/utility.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/utility/utility.component.ts index c2f5ced9..822e7c98 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/utility/utility.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/utility/utility.component.ts @@ -13,7 +13,6 @@ interface UtilityProps { selector: 'app-utility', templateUrl: './utility.component.html', styleUrls: ['./utility.component.scss'], - standalone: true, imports: [forwardRef(() => ComponentMapperComponent)] }) export class UtilityComponent implements OnInit, OnChanges { diff --git a/packages/angular-sdk-components/src/lib/angular-sdk-components.component.ts b/packages/angular-sdk-components/src/lib/angular-sdk-components.component.ts index 4789ec3e..b6981735 100644 --- a/packages/angular-sdk-components/src/lib/angular-sdk-components.component.ts +++ b/packages/angular-sdk-components/src/lib/angular-sdk-components.component.ts @@ -3,6 +3,7 @@ import { Component } from '@angular/core'; @Component({ selector: 'lib-angular-sdk-components', template: `

angular-sdk-components works!

`, - styles: [] + styles: [], + standalone: false }) export class AngularSdkComponentsComponent {} diff --git a/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts b/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts index 6e084ac7..7153a9dc 100644 --- a/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts +++ b/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts @@ -28,7 +28,6 @@ declare global { templateUrl: './embedded.component.html', styleUrls: ['./embedded.component.scss'], providers: [Utils], - standalone: true, imports: [CommonModule, MatProgressSpinnerModule, MatToolbarModule, MatIconModule, MatButtonModule, HeaderComponent, MainScreenComponent] }) export class EmbeddedComponent implements OnInit, OnDestroy { diff --git a/projects/angular-test-app/src/app/_samples/embedded/header/header.component.ts b/projects/angular-test-app/src/app/_samples/embedded/header/header.component.ts index 829c3ec9..1104140f 100644 --- a/projects/angular-test-app/src/app/_samples/embedded/header/header.component.ts +++ b/projects/angular-test-app/src/app/_samples/embedded/header/header.component.ts @@ -8,7 +8,6 @@ import { MatToolbarModule } from '@angular/material/toolbar'; selector: 'app-header', templateUrl: './header.component.html', styleUrls: ['./header.component.scss'], - standalone: true, imports: [CommonModule, MatToolbarModule, MatIconModule, MatButtonModule] }) export class HeaderComponent implements OnInit { diff --git a/projects/angular-test-app/src/app/_samples/embedded/main-screen/main-screen.component.ts b/projects/angular-test-app/src/app/_samples/embedded/main-screen/main-screen.component.ts index c8b5a97d..0648a38b 100644 --- a/projects/angular-test-app/src/app/_samples/embedded/main-screen/main-screen.component.ts +++ b/projects/angular-test-app/src/app/_samples/embedded/main-screen/main-screen.component.ts @@ -11,7 +11,6 @@ import { shoppingOptions } from '../utils'; selector: 'app-main-screen', templateUrl: './main-screen.component.html', styleUrls: ['./main-screen.component.scss'], - standalone: true, imports: [CommonModule, ShoppingCardComponent, ComponentMapperComponent, ResolutionScreenComponent] }) export class MainScreenComponent implements OnInit, OnDestroy { diff --git a/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts b/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts index 21fbe010..a357427c 100644 --- a/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts +++ b/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts @@ -22,7 +22,6 @@ declare global { selector: 'app-full-portal', templateUrl: './full-portal.component.html', styleUrls: ['./full-portal.component.scss'], - standalone: true, imports: [CommonModule, MatProgressSpinnerModule, ComponentMapperComponent] }) export class FullPortalComponent implements OnInit, OnDestroy { diff --git a/projects/angular-test-app/src/app/_samples/simple-portal/main-content/main-content.component.ts b/projects/angular-test-app/src/app/_samples/simple-portal/main-content/main-content.component.ts index 9f42b12a..d3ee562e 100644 --- a/projects/angular-test-app/src/app/_samples/simple-portal/main-content/main-content.component.ts +++ b/projects/angular-test-app/src/app/_samples/simple-portal/main-content/main-content.component.ts @@ -6,7 +6,6 @@ import { ComponentMapperComponent } from '../../../../../../../packages/angular- selector: 'app-main-content', templateUrl: './main-content.component.html', styleUrls: ['./main-content.component.scss'], - standalone: true, imports: [CommonModule, ComponentMapperComponent] }) export class MainContentComponent implements OnInit { diff --git a/projects/angular-test-app/src/app/_samples/simple-portal/navigation/navigation.component.ts b/projects/angular-test-app/src/app/_samples/simple-portal/navigation/navigation.component.ts index c93ccf84..a81b2fa8 100644 --- a/projects/angular-test-app/src/app/_samples/simple-portal/navigation/navigation.component.ts +++ b/projects/angular-test-app/src/app/_samples/simple-portal/navigation/navigation.component.ts @@ -27,7 +27,6 @@ declare global { selector: 'app-navigation', templateUrl: './navigation.component.html', styleUrls: ['./navigation.component.scss'], - standalone: true, imports: [ CommonModule, MatProgressSpinnerModule, diff --git a/projects/angular-test-app/src/app/_samples/simple-portal/side-bar/side-bar.component.ts b/projects/angular-test-app/src/app/_samples/simple-portal/side-bar/side-bar.component.ts index 442ded65..59d018f3 100644 --- a/projects/angular-test-app/src/app/_samples/simple-portal/side-bar/side-bar.component.ts +++ b/projects/angular-test-app/src/app/_samples/simple-portal/side-bar/side-bar.component.ts @@ -12,7 +12,6 @@ import { DatapageService } from '../../../../../../../packages/angular-sdk-compo selector: 'app-side-bar', templateUrl: './side-bar.component.html', styleUrls: ['./side-bar.component.scss'], - standalone: true, imports: [CommonModule, MatButtonModule] }) export class SideBarComponent implements OnInit, OnDestroy { diff --git a/projects/angular-test-app/src/app/app.component.ts b/projects/angular-test-app/src/app/app.component.ts index ce8634a6..7afd9ef4 100644 --- a/projects/angular-test-app/src/app/app.component.ts +++ b/projects/angular-test-app/src/app/app.component.ts @@ -5,7 +5,6 @@ import { RouterOutlet } from '@angular/router'; selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], - standalone: true, imports: [RouterOutlet] }) export class AppComponent {} diff --git a/projects/angular-test-app/src/styles.scss b/projects/angular-test-app/src/styles.scss index 1e3a0aa1..8e52bbab 100644 --- a/projects/angular-test-app/src/styles.scss +++ b/projects/angular-test-app/src/styles.scss @@ -82,7 +82,3 @@ a.mat-mdc-menu-item > mat-icon { .mat-mdc-form-field { margin: 8px 0; } - -.ngx-mat-tel-input-container button { - margin-top: auto; -} diff --git a/projects/angular-test-app/src/theme.scss b/projects/angular-test-app/src/theme.scss index 5005ffa9..3b475c9e 100644 --- a/projects/angular-test-app/src/theme.scss +++ b/projects/angular-test-app/src/theme.scss @@ -15,7 +15,8 @@ $my-theme: mat.m2-define-light-theme( ) ); -@include mat.core(); +@include mat.elevation-classes(); +@include mat.app-background(); :root { @include mat.all-component-themes($my-theme); From 0b29c939e372aacc197fccf06d1963d4996b815f Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Thu, 4 Sep 2025 23:33:03 +0530 Subject: [PATCH 02/91] chore: update @pega/constellationjs to version 0.25.1 in package.json (#320) --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index b4728110..28f9182e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "@angular/compiler-cli": "^19.2.14", "@angular/language-service": "^19.2.14", "@pega/configs": "^0.16.3", - "@pega/constellationjs": "~24.2.2", + "@pega/constellationjs": "^0.25.1", "@pega/pcore-pconnect-typedefs": "~3.2.2", "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", @@ -6699,9 +6699,9 @@ } }, "node_modules/@pega/constellationjs": { - "version": "24.2.2", - "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-24.2.2.tgz", - "integrity": "sha512-TJB8eKrIs40t2CsO5D+qBGr5ByoYXnBGbNQPAVnSFiCyWdMF8NspW5PMos8ttYEI3yzfaYSmyvDWVU4ucd4Vbg==", + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-0.25.1.tgz", + "integrity": "sha512-Tu+4ktczEnnbkz87uFPVeECcPA7QFDhQ3/B6ooBhrIZG4GUbnhvma8neYwNUzV2fevM4eSxk57qU6nlGZyjfqA==", "dev": true, "license": "See LICENSE in LICENSE file or 'ConstellationJS Engine License.pdf' in dist/", "dependencies": { diff --git a/package.json b/package.json index 5ab426cf..abe68100 100644 --- a/package.json +++ b/package.json @@ -93,7 +93,7 @@ "@angular/compiler-cli": "^19.2.14", "@angular/language-service": "^19.2.14", "@pega/configs": "^0.16.3", - "@pega/constellationjs": "~24.2.2", + "@pega/constellationjs": "^0.25.1", "@pega/pcore-pconnect-typedefs": "~3.2.2", "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", From ec1ecfe1613affdb50eba1da1a7c1db5cbd7bdf7 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Tue, 9 Sep 2025 19:42:38 +0530 Subject: [PATCH 03/91] Hiding the EmbedListUUID column in embeddedData table and default labels not displaying in embedded data issue fixed (#323) * Hiding the EmbedListUUID column in embeddedData table * default labels not displaying in embedded data issue fixed * fix: label visibility issue --------- Co-authored-by: manasa Co-authored-by: Siva Rama Krishna --- .../template/simple-table-manual/helpers.ts | 118 +++++++++++++++++- .../simple-table-manual.component.ts | 59 ++++++--- 2 files changed, 156 insertions(+), 21 deletions(-) diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts index 8a1dca81..07d1bcd8 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts @@ -126,11 +126,125 @@ export const buildMetaForListView = (fieldMetadata, fields, type, ruleClass, nam }; }; -export const buildFieldsForTable = (configFields, fields, showDeleteButton) => { +const PRIMARY_FIELDS = 'pyPrimaryFields'; +const SUPPORTED_FIELD_TYPES = [ + 'Address', + 'TextArea', + 'TextInput', + 'Phone', + 'Email', + 'Time', + 'URL', + 'Percentage', + 'Integer', + 'Decimal', + 'Date', + 'DateTime', + 'Currency', + 'Checkbox', + 'Dropdown', + 'AutoComplete', + 'UserReference', + 'RichText' +]; + +export const getConfigFields = (rawFields, contextClass, primaryFieldsViewIndex) => { + let primaryFields: any = []; + let configFields: any = []; + + if (primaryFieldsViewIndex > -1) { + let primaryFieldVMD: any = PCore.getMetadataUtils().resolveView(PRIMARY_FIELDS); + if (Array.isArray(primaryFieldVMD)) { + primaryFieldVMD = primaryFieldVMD.find(primaryFieldView => primaryFieldView.classID === contextClass); + primaryFields = primaryFieldVMD?.children?.[0]?.children || []; + } else if (primaryFieldVMD?.classID === contextClass) { + primaryFields = primaryFieldVMD?.children?.[0]?.children || []; + } + + if (primaryFields.length) { + primaryFields = primaryFields.filter(primaryField => SUPPORTED_FIELD_TYPES.includes(primaryField.type)); + } + } + + configFields = [...rawFields.slice(0, primaryFieldsViewIndex), ...primaryFields, ...rawFields.slice(primaryFieldsViewIndex + 1)]; + // filter duplicate fields after combining raw fields and primary fields + return configFields.filter((field, index) => configFields.findIndex(_field => field.config?.value === _field.config?.value) === index); +}; + +export function isFLProperty(label) { + return label?.startsWith('@FL'); +} + +/** + * [getFieldLabel] + * Description - A utility that returns resolved field label for "@FL" annotation i.e from data model. + * @param {Object} fieldConfig + * @returns {string} resolved label string + * + * example: + * fieldConfig = {label: "@FL .pyID", classID: "TestCase-Work"}; + * return "Case ID" + */ +export function getFieldLabel(fieldConfig) { + const { label, classID, caption } = fieldConfig; + let fieldLabel = (label ?? caption)?.substring(4); + const labelSplit = fieldLabel?.split('.'); + const propertyName = labelSplit?.pop(); + const fieldMetaData: any = PCore.getMetadataUtils().getPropertyMetadata(propertyName, classID) ?? {}; + fieldLabel = fieldMetaData.label ?? fieldMetaData.caption ?? propertyName; + return fieldLabel; +} + +export const updateFieldLabels = (fields, configFields, primaryFieldsViewIndex, pConnect, options) => { + const labelsOfFields: any = []; + const { columnsRawConfig = [] } = options; + fields.forEach((field, idx) => { + const rawColumnConfig = columnsRawConfig[idx]?.config; + if (field.config.value === PRIMARY_FIELDS) { + labelsOfFields.push(''); + } else if (isFLProperty(rawColumnConfig?.label ?? rawColumnConfig?.caption)) { + labelsOfFields.push(getFieldLabel(rawColumnConfig) || field.config.label || field.config.caption); + } else { + labelsOfFields.push(field.config.label || field.config.caption); + } + }); + + if (primaryFieldsViewIndex > -1) { + const totalPrimaryFieldsColumns = configFields.length - fields.length + 1; + if (totalPrimaryFieldsColumns) { + const primaryFieldLabels: any = []; + for (let i = primaryFieldsViewIndex; i < primaryFieldsViewIndex + totalPrimaryFieldsColumns; i += 1) { + let label = configFields[i].config?.label; + if (isFLProperty(label)) { + label = getFieldLabel(configFields[i].config); + } else if (label.startsWith('@')) { + label = label.substring(3); + } + if (pConnect) { + label = pConnect.getLocalizedValue(label); + } + primaryFieldLabels.push(label); + } + labelsOfFields.splice(primaryFieldsViewIndex, 1, ...primaryFieldLabels); + } else { + labelsOfFields.splice(primaryFieldsViewIndex, 1); + } + } + return labelsOfFields; +}; + +export const buildFieldsForTable = (configFields, pConnect, showDeleteButton, options) => { + const { primaryFieldsViewIndex, fields } = options; + + // get resolved field labels for primary fields raw config included in configFields + const fieldsLabels = updateFieldLabels(fields, configFields, primaryFieldsViewIndex, pConnect, { + columnsRawConfig: pConnect.getRawConfigProps()?.children.find(item => item?.name === 'Columns')?.children + }); + const fieldDefs = configFields?.map((field, index) => { return { type: 'text', - label: fields[index].config.label || fields[index].config.caption, + label: fieldsLabels[index], fillAvailableSpace: !!field.config.fillAvailableSpace, id: `${index}`, name: field.config.value.substr(4), diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index 19a70486..9fd05a90 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -306,6 +306,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { this.defaultView = editModeConfig ? editModeConfig.defaultView : viewForAddAndEditModal; this.bUseSeparateViewForEdit = editModeConfig ? editModeConfig.useSeparateViewForEdit : useSeparateViewForEdit; this.editView = editModeConfig ? editModeConfig.editView : viewForEditModal; + const primaryFieldsViewIndex = resolvedFields.findIndex(field => field.config.value === 'pyPrimaryFields'); // const showDeleteButton = !this.readOnlyMode && !hideDeleteRow; // Nebula has other handling for isReadOnlyMode but has Cosmos-specific code @@ -316,8 +317,11 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { // Nebula does). It will also have the "label", and "meta" contains the original, // unchanged config info. For now, much of the info here is carried over from // Nebula and we may not end up using it all. - this.fieldDefs = buildFieldsForTable(rawFields, resolvedFields, showDeleteButton); - + this.fieldDefs = buildFieldsForTable(rawFields, this.pConn$, showDeleteButton, { + primaryFieldsViewIndex, + fields: resolvedFields + }); + this.fieldDefs = this.fieldDefs?.filter(field => !(field.meta?.config?.hide === true)); this.initializeDefaultPageInstructions(); // end of from Nebula @@ -333,10 +337,15 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { // from from the fieldDefs. This "name" is the value that // we'll share to connect things together in the table. + const labelsMap = this.fieldDefs.reduce((acc, curr) => { + return { ...acc, [curr.name]: curr.label }; + }, {}); + this.processedFields = []; this.processedFields = resolvedFields.map((field, i) => { field.config.name = this.displayedColumns[i]; // .config["value"].replace(/ ./g,"_"); // replace space dot with underscore + field.config.label = labelsMap[field.config.name] || field.config.label; return field; }); @@ -992,24 +1001,36 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { this.referenceList.forEach((element, index) => { const data: any = []; this.rawFields?.forEach(item => { - item = { - ...item, - config: { ...item.config, label: '', displayMode: this.readOnlyMode || this.allowEditingInModal ? 'DISPLAY_ONLY' : undefined } - }; - const referenceListData = getReferenceList(this.pConn$); - const isDatapage = referenceListData.startsWith('D_'); - const pageReferenceValue = isDatapage ? `${referenceListData}[${index}]` : `${this.pConn$.getPageReference()}${referenceListData}[${index}]`; - const config = { - meta: item, - options: { - context, - pageReference: pageReferenceValue, - referenceList: referenceListData, - hasForm: true + if (!item?.config?.hide) { + let label = ''; + if (!this.readOnlyMode) { + label = item.config.readOnly ? '' : item.config.label; } - }; - const view = PCore.createPConnect(config); - data.push(view); + item = { + ...item, + config: { + ...item.config, + label, + displayMode: this.readOnlyMode || this.allowEditingInModal ? 'DISPLAY_ONLY' : undefined + } + }; + const referenceListData = getReferenceList(this.pConn$); + const isDatapage = referenceListData.startsWith('D_'); + const pageReferenceValue = isDatapage + ? `${referenceListData}[${index}]` + : `${this.pConn$.getPageReference()}${referenceListData}[${index}]`; + const config = { + meta: item, + options: { + context, + pageReference: pageReferenceValue, + referenceList: referenceListData, + hasForm: true + } + }; + const view = PCore.createPConnect(config); + data.push(view); + } }); eleData.push(data); }); From 80866023e95faaa7bc3f664779e9e84996ae61c7 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Thu, 11 Sep 2025 16:58:22 +0530 Subject: [PATCH 04/91] reverted the label change (#324) Co-authored-by: manasa --- .../simple-table-manual/simple-table-manual.component.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index 9fd05a90..e1cc887b 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -1002,15 +1002,11 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { const data: any = []; this.rawFields?.forEach(item => { if (!item?.config?.hide) { - let label = ''; - if (!this.readOnlyMode) { - label = item.config.readOnly ? '' : item.config.label; - } item = { ...item, config: { ...item.config, - label, + label: '', displayMode: this.readOnlyMode || this.allowEditingInModal ? 'DISPLAY_ONLY' : undefined } }; From f48811ffc7e0fb9b7e0efdf2ded47712145555d0 Mon Sep 17 00:00:00 2001 From: samhere06 <118881732+samhere06@users.noreply.github.com> Date: Mon, 22 Sep 2025 12:37:11 +0530 Subject: [PATCH 05/91] Selectable card support in angular (#322) * Selectable card support in angular --------- Co-authored-by: mohas22 --- .../_bridge/helpers/sdk-pega-component-map.ts | 2 + .../field/check-box/check-box.component.html | 20 +- .../field/check-box/check-box.component.ts | 7 +- .../field/phone/phone.component.html | 3 +- .../field/phone/phone.component.ts | 3 +- .../radio-buttons.component.html | 20 +- .../radio-buttons/radio-buttons.component.ts | 4 + .../selectable-card.component.html | 40 +++ .../selectable-card.component.scss | 0 .../selectable-card.component.spec.ts | 22 ++ .../selectable-card.component.ts | 255 ++++++++++++++++++ .../case-summary/case-summary.component.ts | 27 +- .../template/list-view/list-view.component.ts | 3 - .../template/list-view/listViewHelpers.ts | 5 +- .../src/lib/_helpers/utils.ts | 70 +++++ 15 files changed, 438 insertions(+), 43 deletions(-) create mode 100644 packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts diff --git a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts index ba595e9d..e5ed73f4 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts @@ -42,6 +42,7 @@ import { TimeComponent } from '../../_components/field/time/time.component'; import { UrlComponent } from '../../_components/field/url/url.component'; import { UserReferenceComponent } from '../../_components/field/user-reference/user-reference.component'; import { ScalarListComponent } from '../../_components/field/scalar-list/scalar-list.component'; +import { SelectableCardComponent } from '../../_components/field/selectable-card/selectable-card.component'; import { RichTextComponent } from '../../_components/field/rich-text/rich-text.component'; // Template components @@ -210,6 +211,7 @@ const pegaSdkComponentMap = { RichTextEditor: RichTextEditorComponent, RootContainer: RootContainerComponent, ScalarList: ScalarListComponent, + SelectableCard: SelectableCardComponent, SemanticLink: SemanticLinkComponent, SimpleTable: SimpleTableComponent, SimpleTableManual: SimpleTableManualComponent, diff --git a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.html b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.html index cf41a983..fad09037 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.html +++ b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.html @@ -1,9 +1,11 @@ -
- +
+
+ +
@@ -48,3 +50,9 @@ + +

{{ label$ }}

+
+ +
+
diff --git a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts index da4bfcac..d6d0760f 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts @@ -26,6 +26,8 @@ interface CheckboxProps extends Omit { primaryField: string; readonlyContextList: any; referenceList: string; + variant?: string; + renderMode: string; } @Component({ @@ -70,6 +72,7 @@ export class CheckBoxComponent implements OnInit, OnDestroy { listOfCheckboxes: any[] = []; actionsApi: Object; propName: string; + variant?: string; fieldControl = new FormControl('', null); @@ -90,7 +93,7 @@ export class CheckBoxComponent implements OnInit, OnDestroy { // this.updateSelf(); this.checkAndUpdate(); - if (this.selectionMode === 'multi' && this.referenceList?.length > 0) { + if (this.selectionMode === 'multi' && this.referenceList?.length > 0 && !this.bReadonly$) { this.pConn$.setReferenceList(this.selectionList); updateNewInstructions(this.pConn$, this.selectionList); } @@ -146,6 +149,7 @@ export class CheckBoxComponent implements OnInit, OnDestroy { this.actionsApi = this.pConn$.getActionsApi(); this.propName = this.pConn$.getStateProps().value; + this.variant = this.configProps$.variant; // multi case this.selectionMode = this.configProps$.selectionMode; @@ -154,6 +158,7 @@ export class CheckBoxComponent implements OnInit, OnDestroy { this.selectionList = this.configProps$.selectionList; this.selectedvalues = this.configProps$.readonlyContextList; this.primaryField = this.configProps$.primaryField; + this.bReadonly$ = this.configProps$.renderMode === 'ReadOnly' || this.displayMode$ === 'DISPLAY_ONLY' || this.configProps$.readOnly; this.datasource = this.configProps$.datasource; this.selectionKey = this.configProps$.selectionKey; diff --git a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html index 0e1b2cd2..79224691 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html +++ b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.html @@ -4,13 +4,14 @@
- + - +
+
+ +
@@ -32,3 +34,9 @@
+ +

{{ label$ }}

+
+ +
+
diff --git a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts index 0373e8e1..bc34ba73 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts @@ -20,6 +20,7 @@ interface RadioButtonsProps extends PConnFieldProps { // If any, enter additional props that only exist on RadioButtons here inline: boolean; fieldMetadata?: any; + variant?: string; } @Component({ @@ -62,6 +63,7 @@ export class RadioButtonsComponent implements OnInit, OnDestroy { localizedValue = ''; actionsApi: Object; propName: string; + variant?: string; constructor( private angularPConnect: AngularPConnectService, @@ -132,6 +134,8 @@ export class RadioButtonsComponent implements OnInit, OnDestroy { this.helperText = this.configProps$.helperText; this.placeholder = this.configProps$.placeholder || ''; + this.variant = this.configProps$.variant; + // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError setTimeout(() => { if (this.configProps$.required != null) { diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.html b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.html new file mode 100644 index 00000000..dac1b73d --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.html @@ -0,0 +1,40 @@ +
+
+ + {{ cardContent.cardImage.alt }} + +
+ + {{ cardContent.commonCardProps.label }} + +
+
+ {{ cardContent.commonCardProps.label }} +
+
+
{{ field.name }}
+
{{ field?.value?.getPConnect().getConfigProps().value ?? '--' }}
+
+
+
+
+
diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.scss b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.spec.ts new file mode 100644 index 00000000..3730dbce --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SelectableCardComponent } from './selectable-card.component'; + +describe('SelectableCardComponent', () => { + let component: SelectableCardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [SelectableCardComponent] + }).compileComponents(); + + fixture = TestBed.createComponent(SelectableCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts new file mode 100644 index 00000000..0b3ef2fd --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts @@ -0,0 +1,255 @@ +import { Component, Input, OnInit, OnDestroy, EventEmitter, Output } from '@angular/core'; +import { MatCardModule } from '@angular/material/card'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; +import { PConnFieldProps } from '../../../_types/PConnProps.interface'; +import { CommonModule } from '@angular/common'; +import { deleteInstruction, insertInstruction } from '../../../_helpers/instructions-utils'; +import { handleEvent } from '../../../_helpers/event-util'; +import { Utils } from '../../../_helpers/utils'; + +interface SelectableCardProps extends PConnFieldProps { + selectionList: any; + readonlyContextList: any; + image: string; + primaryField: string; + selectionKey: string; + renderMode: string; + hideFieldLabels?: boolean; + additionalProps?: any; + imagePosition?: string; + imageSize?: string; + showImageDescription?: boolean; + datasource?: any; +} + +@Component({ + selector: 'lib-selectable-card', + imports: [MatCardModule, CommonModule, MatRadioModule, MatCheckboxModule], + templateUrl: './selectable-card.component.html', + styleUrl: './selectable-card.component.scss' +}) +export class SelectableCardComponent implements OnInit, OnDestroy { + @Input() pConn$: typeof PConnect; + @Input() type: string; + @Output() valueChange: EventEmitter = new EventEmitter(); + + // Used with AngularPConnect + angularPConnectData: AngularPConnectData = {}; + configProps$: SelectableCardProps; + value$: any; + readOnly = false; + disabled = false; + displayMode$: string | undefined; + radioBtnValue; + additionalProps; + testId; + showNoValue = false; + selectionKey?: string; + defaultStyle = {}; + specialStyle = {}; + cardStyle = {}; + selectedvalues: any; + selectionList: any; + primaryField: string; + commonProps: any = {}; + contentList: [ + { + commonCardProps: { id: string; key: string; fields: any; label: string; selected: boolean }; + cardImage: { src: string; alt: string; style: any }; + } + ]; + + actionsApi: Object; + propName: string; + + constructor( + private angularPConnect: AngularPConnectService, + private utils: Utils + ) {} + + ngOnInit(): void { + // First thing in initialization is registering and subscribing to the AngularPConnect service + this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); + // styles used in displaying common field props + this.defaultStyle = { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + margin: '0.5rem', + wordBreak: 'break-word', + fontSize: '0.875rem' + }; + this.specialStyle = { + margin: '0.5rem', + fontSize: '0.875rem' + }; + this.checkAndUpdate(); + } + + ngOnDestroy(): void { + if (this.angularPConnectData.unsubscribeFn) { + this.angularPConnectData.unsubscribeFn(); + } + } + + // Callback passed when subscribing to store change + onStateChange() { + this.checkAndUpdate(); + } + + checkAndUpdate() { + // Should always check the bridge to see if the component should + // update itself (re-render) + const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this); + + // ONLY call updateSelf when the component should update + if (bUpdateSelf) { + this.updateSelf(); + } + } + + updateSelf(): void { + this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as SelectableCardProps; + + this.actionsApi = this.pConn$.getActionsApi(); + this.propName = this.pConn$.getStateProps().value; + + const hideFieldLabels = this.configProps$.hideFieldLabels; + const datasource: any = this.configProps$.datasource; + const additionalProps: any = this.configProps$.additionalProps; + const imageSize: string = this.configProps$.imageSize ?? ''; // not using + const showImageDescription: boolean = this.configProps$.showImageDescription ?? false; + let recordKey = ''; + let cardLabel = ''; + let image: any; + + this.disabled = this.configProps$.disabled; + this.readOnly = this.configProps$.renderMode === 'ReadOnly' || this.displayMode$ === 'DISPLAY_ONLY' || this.configProps$.readOnly; + const imagePosition = this.configProps$.imagePosition; + + // dynamic styling based on image position and readOnly option + let imageWidth = '100%'; + this.cardStyle = { display: 'flex', flexDirection: 'column', height: '100%' }; + if (imagePosition && imagePosition !== 'block-start') { + imageWidth = '30%'; + if (imagePosition === 'inline-start') { + this.cardStyle = { display: 'flex', flexDirection: 'row', alignItems: this.readOnly ? 'center' : '' }; + } else if (imagePosition === 'inline-end') { + this.cardStyle = { + display: 'flex', + flexDirection: 'row-reverse', + justifyContent: this.readOnly ? 'space-between' : '', + alignItems: this.readOnly ? 'center' : '' + }; + } + } + if (this.type === 'radio') { + const stateProps = this.pConn$.getStateProps(); + image = { + imagePosition, + imageSize, + showImageDescription, + imageField: stateProps.image?.split('.').pop(), + imageDescription: stateProps.imageDescription?.split('.').pop() + }; + + recordKey = stateProps.value?.split('.').pop() ?? ''; + cardLabel = stateProps.primaryField?.split('.').pop() ?? ''; + + this.value$ = this.configProps$.value; + this.radioBtnValue = this.value$; + } + + if (this.type === 'checkbox') { + this.testId = this.configProps$.testId; + this.displayMode$ = this.configProps$.displayMode; + + this.selectionKey = this.configProps$.selectionKey; + recordKey = this.selectionKey?.split('.').pop() ?? ''; + cardLabel = this.configProps$.primaryField.split('.').pop() ?? ''; + + image = { + imagePosition, + imageSize, + showImageDescription, + imageField: this.configProps$.image?.split('.').pop(), + imageDescription: (this.pConn$?.getRawMetadata()?.config as any).imageDescription?.split('.').pop() + }; + + this.selectionList = this.configProps$.selectionList; + this.selectedvalues = this.configProps$.readonlyContextList; + this.showNoValue = this.readOnly && this.selectedvalues.length === 0; // not used + this.primaryField = this.configProps$.primaryField; + } + + this.commonProps = { hideFieldLabels, datasource, additionalProps, image, recordKey, cardLabel, radioBtnValue: this.radioBtnValue ?? '' }; + const imageDescriptionKey = this.commonProps?.image?.showImageDescription ? this.commonProps?.image?.imageDescription : undefined; + const cardDataSource = this.readOnly || this.displayMode$ == 'DISPLAY_ONLY' ? this.selectedvalues || [] : this.commonProps?.datasource?.source; + + this.contentList = cardDataSource.map(item => { + const resolvedFields = this.utils.resolveReferenceFields(item, this.commonProps.hideFieldLabels, this.commonProps.recordKey, this.pConn$); + const commonCardProps = { + id: item[this.commonProps.recordKey], + key: item[this.commonProps.recordKey], + fields: resolvedFields, + label: item[this.commonProps.cardLabel], + selected: this.selectedvalues + ? this.selectedvalues?.some?.(data => data[this.commonProps.recordKey] === item[this.commonProps.recordKey]) + : false + }; + const cardImage = item[this.commonProps.image.imageField] + ? { + src: item[this.commonProps.image.imageField], + alt: this.commonProps.image.showImageDescription && imageDescriptionKey ? item[imageDescriptionKey] : '', + style: { + width: imageWidth, + backgroundColor: 'rgb(233, 238, 243)', + aspectRatio: '16/9', + maxHeight: '100%', + objectFit: 'contain', + maxWidth: '100%', + height: this.readOnly && imagePosition !== 'block-start' ? '5rem' : '' + } + } + : undefined; + + return { cardImage, commonCardProps }; + }); + } + + fieldOnChange(value: any) { + handleEvent(this.actionsApi, 'changeNblur', this.propName, value); + } + + fieldOnBlur() { + this.pConn$.getValidationApi().validate(this.selectedvalues, this.selectionList); + } + + handleChangeMultiMode(event, element) { + if (!element.selected) { + insertInstruction(this.pConn$, this.selectionList, this.selectionKey, this.primaryField, { + id: element.id, + primary: element.label + }); + } else { + deleteInstruction(this.pConn$, this.selectionList, this.selectionKey, { + id: element.key, + primary: element.label + }); + } + this.pConn$.clearErrorMessages({ + property: this.selectionList, + category: '', + context: '' + }); + } + + cardSelect(event, element) { + if (this.type === 'radio') { + this.fieldOnChange(element.key); + } else if (this.type === 'checkbox') { + this.handleChangeMultiMode(event, element); + } + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts index d2d39f5b..2cb2daa7 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.ts @@ -3,6 +3,7 @@ import { FormGroup } from '@angular/forms'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ReferenceComponent } from '../../infra/reference/reference.component'; import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { Utils } from '../../../_helpers/utils'; interface CaseSummaryProps { // If any, enter additional props that only exist on this component @@ -32,7 +33,10 @@ export class CaseSummaryComponent implements OnInit, OnDestroy, OnChanges { primaryFields$: any[] = []; secondaryFields$: any[] = []; - constructor(private angularPConnect: AngularPConnectService) {} + constructor( + private angularPConnect: AngularPConnectService, + private utils: Utils + ) {} ngOnInit(): void { // First thing in initialization is registering and subscribing to the AngularPConnect service @@ -100,30 +104,11 @@ export class CaseSummaryComponent implements OnInit, OnDestroy, OnChanges { }); } - prepareComponentInCaseSummary(pConnectMeta, getPConnect) { - const { config, children } = pConnectMeta; - const pConnect = getPConnect(); - - const caseSummaryComponentObject: any = {}; - - const { type } = pConnectMeta; - const createdComponent = pConnect.createComponent({ - type, - children: children ? [...children] : [], - config: { - ...config - } - }); - - caseSummaryComponentObject.value = createdComponent; - return caseSummaryComponentObject; - } - prepareCaseSummaryData(summaryFieldChildren) { const convertChildrenToSummaryData = kid => { return kid?.map((childItem, index) => { const childMeta = childItem.getPConnect().meta; - const caseSummaryComponentObject = this.prepareComponentInCaseSummary(childMeta, childItem.getPConnect); + const caseSummaryComponentObject = this.utils.prepareComponentInCaseSummary(childMeta, childItem.getPConnect); caseSummaryComponentObject.id = index + 1; return caseSummaryComponentObject; }); diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts index b2fbd55f..54c7c836 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts @@ -155,8 +155,6 @@ export class ListViewComponent implements OnInit, OnDestroy { query: any = null; paging: any; fieldDefs: any; - xRayApis = PCore.getDebugger().getXRayRuntime(); - xRayUid = this.xRayApis.startXRay(); checkBoxValue: string; label?: string = ''; @@ -237,7 +235,6 @@ export class ListViewComponent implements OnInit, OnDestroy { listContext: this.listContext, ref: this.ref, showDynamicFields: this.showDynamicFields, - xRayUid: this.xRayUid, cosmosTableRef: this.cosmosTableRef, selectionMode: this.selectionMode }).then(response => { diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/listViewHelpers.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/listViewHelpers.ts index f70fa893..aab719ea 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/listViewHelpers.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/listViewHelpers.ts @@ -12,7 +12,6 @@ export function init(props) { ref, showDynamicFields, isDataObject, - xRayUid, cosmosTableRef } = props; let { editing, selectionMode } = props; @@ -67,8 +66,7 @@ export function init(props) { pConn$, compositeKeys, isSearchable, - isCacheable: true, - xRayUid + isCacheable: true }).then(async context => { return readContextResponse(context, { ...props, @@ -76,7 +74,6 @@ export function init(props) { selectionCountThreshold, ref, selectionMode, - xRayUid, cosmosTableRef }); }); diff --git a/packages/angular-sdk-components/src/lib/_helpers/utils.ts b/packages/angular-sdk-components/src/lib/_helpers/utils.ts index 43808611..a618f20d 100644 --- a/packages/angular-sdk-components/src/lib/_helpers/utils.ts +++ b/packages/angular-sdk-components/src/lib/_helpers/utils.ts @@ -455,4 +455,74 @@ export class Utils { return currentObj[key] || key; } + + prepareComponentInCaseSummary(pConnectMeta, getPConnect) { + const { config, children } = pConnectMeta; + const pConnect = getPConnect(); + + const caseSummaryComponentObject: any = {}; + + caseSummaryComponentObject.name = pConnect.resolveConfigProps({ label: config.label }).label; + + const { type } = pConnectMeta; + const createdComponent = pConnect.createComponent({ + type, + children: children ? [...children] : [], + config: { + ...config + } + }); + + caseSummaryComponentObject.value = createdComponent; + return caseSummaryComponentObject; + } + + resolveReferenceFields( + item: { + [key: string]: unknown; + }, + hideFieldLabels: boolean, + recordKey: string, + pConnect: typeof PConnect + ) { + const presets: { + children?: { + children?: { + config; + type; + }; + config?; + }; + } = (pConnect.getRawMetadata()?.config as any).presets ?? []; + + const presetChildren = presets[0]?.children?.[0]?.children ?? []; + + const maxFields = 5; + return presetChildren.slice(0, maxFields).map((preset, index) => { + const fieldMeta = { + meta: { + ...preset, + config: { + ...preset.config, + displayMode: 'DISPLAY_ONLY' + } + }, + useCustomContext: item + }; + const configObj = PCore.createPConnect(fieldMeta); + const meta = configObj.getPConnect().getMetadata(); + const fieldInfo: { + name?: string; + value?: any; + } = meta ? this.prepareComponentInCaseSummary(meta, configObj.getPConnect) : {}; + return hideFieldLabels + ? { id: `${item[recordKey]} - ${index}`, value: fieldInfo.value } + : { + id: `${item[recordKey]} - ${index}`, + name: fieldInfo.name, + value: fieldInfo.value, + type: preset.type + }; + }); + } } From 5761d821fa9e8b6b5993e448a2503f10c8fecf0f Mon Sep 17 00:00:00 2001 From: tammy-a11y Date: Mon, 22 Sep 2025 15:13:16 +0530 Subject: [PATCH 06/91] Added location component support for SDK-A (#325) Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- package-lock.json | 22 + package.json | 1 + .../_bridge/helpers/sdk-pega-component-map.ts | 2 + .../field/location/config-ext.json | 8 + .../field/location/location.component.html | 45 ++ .../field/location/location.component.scss | 18 + .../field/location/location.component.spec.ts | 22 + .../field/location/location.component.ts | 385 ++++++++++++++++++ .../google-maps-loader.service.spec.ts | 16 + .../_services/google-maps-loader.service.ts | 31 ++ 10 files changed, 550 insertions(+) create mode 100644 packages/angular-sdk-components/src/lib/_components/field/location/config-ext.json create mode 100644 packages/angular-sdk-components/src/lib/_components/field/location/location.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/field/location/location.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/field/location/location.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.ts diff --git a/package-lock.json b/package-lock.json index 28f9182e..678bdea5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@angular/compiler": "^19.2.14", "@angular/core": "^19.2.14", "@angular/forms": "^19.2.14", + "@angular/google-maps": "^19.2.19", "@angular/material": "^19.2.19", "@angular/material-experimental": "^19.2.19", "@angular/material-moment-adapter": "^19.2.19", @@ -1281,6 +1282,21 @@ "rxjs": "^6.5.3 || ^7.4.0" } }, + "node_modules/@angular/google-maps": { + "version": "19.2.19", + "resolved": "https://registry.npmjs.org/@angular/google-maps/-/google-maps-19.2.19.tgz", + "integrity": "sha512-BScWHIVQ1PoROvzIcEM/URK+WdUx+F7uB/tQdiBi9IuYTIjKq305yJQlpNzm1LI8S0UohKAENC5ZDmobLPxU/A==", + "license": "MIT", + "dependencies": { + "@types/google.maps": "^3.54.10", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^19.0.0 || ^20.0.0", + "@angular/core": "^19.0.0 || ^20.0.0", + "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", @@ -7503,6 +7519,12 @@ "@types/send": "*" } }, + "node_modules/@types/google.maps": { + "version": "3.58.1", + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.58.1.tgz", + "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ==", + "license": "MIT" + }, "node_modules/@types/http-errors": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", diff --git a/package.json b/package.json index abe68100..fff8f267 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "@angular/compiler": "^19.2.14", "@angular/core": "^19.2.14", "@angular/forms": "^19.2.14", + "@angular/google-maps": "^19.2.19", "@angular/material": "^19.2.19", "@angular/material-experimental": "^19.2.19", "@angular/material-moment-adapter": "^19.2.19", diff --git a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts index e5ed73f4..398c103f 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts @@ -30,6 +30,7 @@ import { EmailComponent } from '../../_components/field/email/email.component'; import { GroupComponent } from '../../_components/field/group/group.component'; import { IntegerComponent } from '../../_components/field/integer/integer.component'; import { ListViewActionButtonsComponent } from '../../_components/field/list-view-action-buttons/list-view-action-buttons.component'; +import { LocationComponent } from '../../_components/field/location/location.component'; import { PercentageComponent } from '../../_components/field/percentage/percentage.component'; import { PhoneComponent } from '../../_components/field/phone/phone.component'; import { RadioButtonsComponent } from '../../_components/field/radio-buttons/radio-buttons.component'; @@ -183,6 +184,7 @@ const pegaSdkComponentMap = { ListUtility: ListUtilityComponent, ListView: ListViewComponent, ListViewActionButtons: ListViewActionButtonsComponent, + Location: LocationComponent, MaterialDetails: MaterialDetailsComponent, MaterialUtility: MaterialUtilityComponent, ModalViewContainer: ModalViewContainerComponent, diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/config-ext.json b/packages/angular-sdk-components/src/lib/_components/field/location/config-ext.json new file mode 100644 index 00000000..a12a9efc --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/location/config-ext.json @@ -0,0 +1,8 @@ +{ + "name": "Location", + "label": "Location", + "description": "Location", + "type": "Field", + "subtype": "Location", + "properties": [] +} diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.html b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.html new file mode 100644 index 00000000..6e2f2a7a --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.html @@ -0,0 +1,45 @@ +
+ + + {{ label$ }} + + {{ getErrorMessage() }} + + + + + {{ option }} + + + + +
+ + + +
+
+
diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.scss b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.scss new file mode 100644 index 00000000..aaecc8e8 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.scss @@ -0,0 +1,18 @@ +.psdk-full-width { + width: 100%; +} + +.map-wrapper { + position: relative; +} + +.map-blocker { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: transparent; + z-index: 10; + cursor: not-allowed; +} diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.spec.ts new file mode 100644 index 00000000..f92c95fb --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LocationComponent } from './location.component'; + +describe('LocationComponent', () => { + let component: LocationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [LocationComponent] + }).compileComponents(); + + fixture = TestBed.createComponent(LocationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts new file mode 100644 index 00000000..a354a95c --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts @@ -0,0 +1,385 @@ +import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; +import { MatIconModule } from '@angular/material/icon'; +import { MatButtonModule } from '@angular/material/button'; +import { GoogleMapsModule } from '@angular/google-maps'; + +import { debounceTime, from, interval, of, switchMap } from 'rxjs'; + +import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; +import { GoogleMapsLoaderService } from '../../../_services/google-maps-loader.service'; +import { Utils } from '../../../_helpers/utils'; +import { handleEvent } from '../../../_helpers/event-util'; + +import { PConnFieldProps } from '../../../_types/PConnProps.interface'; + +interface LocationProps extends PConnFieldProps { + coordinates: string; + showMap: boolean; + onlyCoordinates: boolean; + showMapReadOnly: boolean; +} + +@Component({ + selector: 'app-location', + imports: [ + CommonModule, + GoogleMapsModule, + MatAutocompleteModule, + MatButtonModule, + MatFormFieldModule, + MatIconModule, + MatInputModule, + MatProgressSpinnerModule, + ReactiveFormsModule + ], + templateUrl: './location.component.html', + styleUrl: './location.component.scss' +}) +export class LocationComponent implements OnInit, OnDestroy { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; + + private autocompleteService!: google.maps.places.AutocompleteService; + private geocoder!: google.maps.Geocoder; + + // Dom variables + mapReady = false; + isLocating = false; + searchControl = new FormControl(''); + showMap = true; + filteredOptions: string[] = []; + center: google.maps.LatLngLiteral; + markerPosition: google.maps.LatLngLiteral | null = null; + + // Used with AngularPConnect + angularPConnectData: AngularPConnectData = {}; + configProps$: LocationProps; + label$ = ''; + onlyCoordinates: boolean; + coordinates: string; + bRequired$ = false; + bReadonly$ = false; + showMapReadOnly$: boolean; + bDisabled$ = false; + bVisible$ = true; + controlName$: string; + bHasForm$ = true; + testId = ''; + helperText: string; + placeholder: string; + actionsApi: Object; + valueProp: string; + coordinatesProp: string; + + constructor( + private loader: GoogleMapsLoaderService, + private angularPConnect: AngularPConnectService, + private utils: Utils, + private cdRef: ChangeDetectorRef + ) {} + + async ngOnInit() { + // Loading map + const apiKey = this.pConn$.getGoogleMapsAPIKey(); + await this.loader.load(apiKey); + this.mapReady = true; + this.initializeGoogleServices(); + this.getPlacePredictions(); + + this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); + this.controlName$ = this.angularPConnect.getComponentID(this); + this.checkAndUpdate(); + + if (this.formGroup$) { + // add control to formGroup + this.formGroup$.addControl(this.controlName$, this.searchControl); + this.bHasForm$ = true; + } else { + this.bReadonly$ = true; + this.bHasForm$ = false; + } + } + + ngOnDestroy(): void { + if (this.formGroup$) { + this.formGroup$.removeControl(this.controlName$); + } + + if (this.angularPConnectData.unsubscribeFn) { + this.angularPConnectData.unsubscribeFn(); + } + } + + checkAndUpdate() { + const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this); + if (bUpdateSelf) { + this.updateSelf(); + } + } + + onStateChange() { + setTimeout(() => { + this.checkAndUpdate(); + }, 0); + } + + updateSelf(): void { + this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as LocationProps; + if (this.configProps$.visibility != null) { + this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility); + } + this.onlyCoordinates = !!this.configProps$.onlyCoordinates; + this.label$ = this.configProps$.label; + this.testId = this.configProps$.testId; + + this.helperText = this.configProps$.helperText || ''; + this.placeholder = this.configProps$.placeholder || ''; + this.showMapReadOnly$ = !!this.configProps$.showMapReadOnly; + if (this.configProps$.readOnly != null) { + this.bReadonly$ = this.utils.getBooleanValue(this.configProps$.readOnly); + } + this.showMap = this.bReadonly$ ? this.showMapReadOnly$ : !!this.configProps$.showMap; + if (this.configProps$.coordinates) { + const latAndLong: number[] = this.configProps$.coordinates.split(',').map(Number); + const latitude = Number(latAndLong[0]); + const longitude = Number(latAndLong[1]); + this.updateMap(latitude, longitude, this.configProps$.value); + } + // // timeout and detectChanges to avoid ExpressionChangedAfterItHasBeenCheckedError + setTimeout(() => { + if (this.configProps$.required != null) { + this.bRequired$ = this.utils.getBooleanValue(this.configProps$.required); + } + this.cdRef.detectChanges(); + }); + // // disabled + if (this.configProps$.disabled != undefined) { + this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled); + } + + if (this.bDisabled$ || this.bReadonly$) { + this.searchControl.disable(); + } else { + this.searchControl.enable(); + } + + this.actionsApi = this.pConn$.getActionsApi(); + this.valueProp = this.pConn$.getStateProps().value; + this.coordinatesProp = this.pConn$.getStateProps().coordinates; + + // // trigger display of error message with field control + if (this.angularPConnectData.validateMessage != null && this.angularPConnectData.validateMessage != '') { + const timer = interval(100).subscribe(() => { + this.searchControl.setErrors({ message: true }); + this.searchControl.markAsTouched(); + + timer.unsubscribe(); + }); + } + } + + onOptionSelected(event: any) { + const value = event.option.value; + if (this.isCoordinateString(value)) { + const [lat, lng] = value.split(',').map(Number); + this.updateMap(lat, lng, value); + this.updateProps(); + } else { + this.geocoder.geocode({ address: value }, (res, status) => { + if (status === google.maps.GeocoderStatus.OK && res && res[0]) { + const loc = res[0].geometry.location; + this.updateMap(loc.lat(), loc.lng(), value); + this.updateProps(); + } + }); + } + } + + fieldOnBlur() { + this.updateProps(); + } + + locateMe() { + if (!navigator.geolocation) { + alert('Geolocation not supported by this browser.'); + return; + } + + this.isLocating = true; + this.tryGetLocation(0); + } + + onMapClick(event: google.maps.MapMouseEvent) { + if (!event.latLng) return; + + const lat = event.latLng.lat(); + const lng = event.latLng.lng(); + + if (this.onlyCoordinates) { + this.updateMap(lat, lng); + this.updateProps(); + } else { + this.geocoder.geocode({ location: { lat, lng } }, (res, status) => { + if (status === google.maps.GeocoderStatus.OK && res && res[0]) { + this.updateMap(lat, lng, res[0].formatted_address); + } else { + this.updateMap(lat, lng); + } + this.updateProps(); + }); + } + } + + getErrorMessage() { + let errMessage = ''; + + // look for validation messages for json, pre-defined or just an error pushed from workitem (400) + if (this.searchControl.hasError('message')) { + errMessage = this.angularPConnectData.validateMessage ?? ''; + return errMessage; + } + if (this.searchControl.hasError('required')) { + errMessage = 'You must enter a value'; + } else if (this.searchControl.errors) { + errMessage = this.searchControl.errors.toString(); + } + + return errMessage; + } + + private tryGetLocation(retryCount: number) { + navigator.geolocation.getCurrentPosition( + position => { + const lat = position.coords.latitude; + const lng = position.coords.longitude; + if (this.onlyCoordinates) { + this.updateMap(lat, lng); + this.updateProps(); + this.isLocating = false; + } else { + this.geocoder.geocode({ location: { lat, lng } }, (res, status) => { + this.isLocating = false; + if (status === google.maps.GeocoderStatus.OK && res && res[0]) { + this.updateMap(lat, lng, res[0].formatted_address); + } else { + this.updateMap(lat, lng); + } + this.updateProps(); + }); + } + }, + err => { + console.error('Geolocation error', err); + + if (err.code === err.POSITION_UNAVAILABLE && retryCount < 2) { + console.warn('Retrying location fetch...'); + setTimeout(() => this.tryGetLocation(retryCount + 1), 2000); + } else { + this.isLocating = false; + + switch (err.code) { + case err.PERMISSION_DENIED: + alert('Location permission denied. Please allow access in your browser settings.'); + break; + case err.POSITION_UNAVAILABLE: + alert('Location unavailable. Please check your internet or GPS.'); + break; + case err.TIMEOUT: + alert('Timed out while trying to get your location. Try again.'); + break; + default: + alert('Could not get your location. Please try again.'); + } + } + }, + { + enableHighAccuracy: true, + timeout: 10000, + maximumAge: 0 + } + ); + } + + private initializeGoogleServices() { + this.autocompleteService = new google.maps.places.AutocompleteService(); + this.geocoder = new google.maps.Geocoder(); + } + + private getPlacePredictions() { + this.searchControl.valueChanges + .pipe( + debounceTime(300), + switchMap(value => this.getSuggestions(value || '')) + ) + .subscribe(predictions => { + this.filteredOptions = predictions; + }); + } + + private isCoordinateString(value: string): boolean { + const regex = /^-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?$/; + return regex.test(value.trim()); + } + + private getSuggestions(input: string) { + if (!input.trim()) return of([]); + + if (this.isCoordinateString(input)) { + return of([input]); + } + + return from( + new Promise(resolve => { + this.autocompleteService.getPlacePredictions({ input }, (preds, status) => { + if (status === google.maps.places.PlacesServiceStatus.OK && preds) { + if (this.onlyCoordinates) { + // only first exact match as coordinates + this.geocoder.geocode({ placeId: preds[0].place_id }, (response, geocoderStatus) => { + if (geocoderStatus === google.maps.GeocoderStatus.OK && response && response[0]) { + const loc = response[0].geometry.location; + resolve([`${loc.lat()}, ${loc.lng()}`]); + } else { + resolve([]); + } + }); + } else { + resolve(preds.map(p => p.description)); + } + } else { + resolve([]); + } + }); + }) + ); + } + + private updateMap(lat: number, lng: number, value?: string) { + this.center = { lat, lng }; + this.markerPosition = { lat, lng }; + this.setCoordinates(lat, lng); + if (this.onlyCoordinates) { + this.setLocationValue(this.coordinates); + } else { + this.setLocationValue(value || ''); + } + } + + private updateProps() { + handleEvent(this.actionsApi, 'change', this.valueProp, this.searchControl.value); + handleEvent(this.actionsApi, 'change', this.coordinatesProp, this.coordinates); + } + + private setCoordinates(latitude: number, longitude: number) { + this.coordinates = `${latitude}, ${longitude}`; + } + + private setLocationValue(value: string) { + this.searchControl.setValue(value, { emitEvent: false }); + } +} diff --git a/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.spec.ts b/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.spec.ts new file mode 100644 index 00000000..28d73ca9 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { GoogleMapsLoaderService } from './google-maps-loader.service'; + +describe('GoogleMapsLoaderService', () => { + let service: GoogleMapsLoaderService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(GoogleMapsLoaderService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.ts b/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.ts new file mode 100644 index 00000000..13582cec --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_services/google-maps-loader.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class GoogleMapsLoaderService { + private loadingPromise?: Promise; + + load(apiKey: string): Promise { + if (typeof google !== 'undefined' && google.maps) { + return Promise.resolve(); + } + if (this.loadingPromise) { + return this.loadingPromise; + } + + this.loadingPromise = new Promise((resolve, reject) => { + const script = document.createElement('script'); + script.src = `https://maps.googleapis.com/maps/api/js?key=${apiKey}&libraries=places`; + script.async = true; + script.defer = true; + + script.onload = () => resolve(); + script.onerror = error => reject(error); + + document.head.appendChild(script); + }); + + return this.loadingPromise; + } +} From 14bce76f0a741b7b4862fa1db6bb5bd7543373fa Mon Sep 17 00:00:00 2001 From: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> Date: Thu, 25 Sep 2025 18:04:56 +0530 Subject: [PATCH 07/91] refactor: Moving dependency packages to angular-sdk-components package (#327) --- packages/angular-sdk-components/package.json | 20 ++++++++++++++++++-- packages/angular-sdk-overrides/package.json | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/angular-sdk-components/package.json b/packages/angular-sdk-components/package.json index bbf4584a..57eed759 100644 --- a/packages/angular-sdk-components/package.json +++ b/packages/angular-sdk-components/package.json @@ -1,9 +1,25 @@ { "name": "@pega/angular-sdk-components", - "version": "24.2.12", + "version": "0.25.1", "peerDependencies": { + "@angular/animations": "^19.0.0", + "@angular/cdk": "^19.0.0", "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0" + "@angular/core": "^19.0.0", + "@angular/forms": "^19.0.0", + "@angular/google-maps": "^19.2.19", + "@angular/material": "^19.2.19", + "@angular/material-moment-adapter": "^19.2.19", + "@danielmoncada/angular-datetime-picker": "^19.0.0", + "@pega/auth": "^0.2.0", + "@tinymce/tinymce-angular": "^8.0.1", + "dayjs": "^1.11.13", + "downloadjs": "^1.4.7", + "fast-deep-equal": "^3.1.3", + "mat-tel-input": "19.0.5-0", + "libphonenumber-js": "^1.10.53", + "lodash.clonedeep": "^4.5.0", + "ngx-currency": "^19.0.0" }, "dependencies": { "tslib": "^2.8.1" diff --git a/packages/angular-sdk-overrides/package.json b/packages/angular-sdk-overrides/package.json index 22716708..d816446d 100644 --- a/packages/angular-sdk-overrides/package.json +++ b/packages/angular-sdk-overrides/package.json @@ -1,6 +1,6 @@ { "name": "@pega/angular-sdk-overrides", - "version": "24.2.12", + "version": "0.25.1", "description": "Angular SDK - Code for overriding components", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" From 629f05c1d239692b3cb22d43e2b4c5292b9117d9 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Fri, 26 Sep 2025 12:59:24 +0530 Subject: [PATCH 08/91] Added support for Advance Search feature in DataReference (#326) * Added Advanced search feature support in DataReference --------- Co-authored-by: manasa Co-authored-by: Siva Rama Krishna --- package.json | 2 +- .../component-mapper.component.ts | 6 +- .../_bridge/helpers/sdk-pega-component-map.ts | 6 + .../field/currency/currency.component.ts | 4 +- .../field/text-input/text-input.component.ts | 2 - .../assignment-card.component.html | 2 +- .../assignment-card.component.ts | 25 +- .../infra/assignment/assignment.component.ts | 10 +- .../defer-load/defer-load.component.html | 8 +- .../infra/defer-load/defer-load.component.ts | 24 +- .../infra/view/view.component.html | 2 +- .../_components/infra/view/view.component.ts | 1 - .../advanced-search.component.html | 12 + .../advanced-search.component.scss | 0 .../advanced-search.component.spec.ts | 0 .../advanced-search.component.ts | 112 ++++++ .../advanced-search.service.ts | 27 ++ .../search-group/persist-utils.ts | 58 +++ .../search-groups.component.html | 32 ++ .../search-groups.component.scss | 0 .../search-groups.component.spec.ts | 0 .../search-groups/search-groups.component.ts | 294 ++++++++++++++ .../advanced-search/search-groups/utils.ts | 29 ++ .../data-reference-advanced-search.service.ts | 16 + .../data-reference.component.html | 27 +- .../data-reference.component.ts | 372 ++++++++++++++---- .../search-form/search-form.component.html | 39 ++ .../search-form/search-form.component.scss | 11 + .../search-form/search-form.component.spec.ts | 0 .../search-form/search-form.component.ts | 167 ++++++++ .../data-reference/search-form/tabsData.ts | 160 ++++++++ .../template/data-reference/utils.ts | 92 +++++ .../default-form/default-form.component.ts | 12 +- .../list-view/list-view.component.html | 11 +- .../list-view/list-view.component.scss | 18 +- .../template/list-view/list-view.component.ts | 153 +++++-- .../_components/template/list-view/utils.ts | 25 +- .../src/lib/_helpers/tab-utils.ts | 111 ++++++ 38 files changed, 1709 insertions(+), 161 deletions(-) create mode 100755 packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.service.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.spec.ts create mode 100755 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/utils.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference-advanced-search.service.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/data-reference/utils.ts diff --git a/package.json b/package.json index fff8f267..a31cfa5d 100644 --- a/package.json +++ b/package.json @@ -75,9 +75,9 @@ "dayjs": "^1.11.13", "downloadjs": "^1.4.7", "fast-deep-equal": "^3.1.3", - "mat-tel-input": "19.0.5-0", "libphonenumber-js": "^1.10.53", "lodash.clonedeep": "^4.5.0", + "mat-tel-input": "19.0.5-0", "ngx-currency": "^19.0.0", "rxjs": "^7.8.1", "tslib": "^2.8.1", diff --git a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts index 30a35d10..d268c177 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts @@ -18,7 +18,7 @@ export class ComponentMapperComponent implements OnInit, OnDestroy, OnChanges { public componentRef: ComponentRef | undefined; public isInitialized = false; - @Input() name = ''; + @Input() name?: string = ''; @Input() props: any; @Input() errorMsg = ''; @Input() outputEvents: any; @@ -43,7 +43,7 @@ export class ComponentMapperComponent implements OnInit, OnDestroy, OnChanges { } loadComponent() { - const component = getComponentFromMap(this.name); + const component = getComponentFromMap(this.name || ''); if (this.dynamicComponent) { this.dynamicComponent.clear(); @@ -67,7 +67,7 @@ export class ComponentMapperComponent implements OnInit, OnDestroy, OnChanges { if (propsValues[i] !== undefined) { // We'll set 'displayOnlyFA$' prop only to the components which really need it // Eventual plan is to get rid of this particular prop - if (propsKeys[i] === 'displayOnlyFA$' && !componentsRequireDisplayOnlyFAProp.includes(this.name)) { + if (propsKeys[i] === 'displayOnlyFA$' && !componentsRequireDisplayOnlyFAProp.includes(this.name || '')) { // eslint-disable-next-line no-continue continue; } diff --git a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts index 398c103f..cab9ac15 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts @@ -43,10 +43,12 @@ import { TimeComponent } from '../../_components/field/time/time.component'; import { UrlComponent } from '../../_components/field/url/url.component'; import { UserReferenceComponent } from '../../_components/field/user-reference/user-reference.component'; import { ScalarListComponent } from '../../_components/field/scalar-list/scalar-list.component'; +import { SearchFormComponent } from '../../_components/template/data-reference/search-form/search-form.component'; import { SelectableCardComponent } from '../../_components/field/selectable-card/selectable-card.component'; import { RichTextComponent } from '../../_components/field/rich-text/rich-text.component'; // Template components +import { AdvancedSearchComponent } from '../../_components/template/advanced-search/advanced-search.component'; import { AppShellComponent } from '../../_components/template/app-shell/app-shell.component'; import { BannerPageComponent } from '../../_components/template/banner-page/banner-page.component'; import { CaseSummaryComponent } from '../../_components/template/case-summary/case-summary.component'; @@ -77,6 +79,7 @@ import { OneColumnPageComponent } from '../../_components/template/one-column-pa import { OneColumnTabComponent } from '../../_components/template/one-column-tab/one-column-tab.component'; import { PageComponent } from '../../_components/template/page/page.component'; import { PromotedFiltersComponent } from '../../_components/template/promoted-filters/promoted-filters.component'; +import { SearchGroupsComponent } from '../../_components/template/advanced-search/search-groups/search-groups.component'; import { SimpleTableComponent } from '../../_components/template/simple-table/simple-table.component'; import { SimpleTableManualComponent } from '../../_components/template/simple-table-manual/simple-table-manual.component'; import { SimpleTableSelectComponent } from '../../_components/template/simple-table-select/simple-table-select.component'; @@ -128,6 +131,7 @@ import { WssQuickCreateComponent } from '../../_components/designSystemExtension // Also, note that "Checkbox" component is named/exported as CheckboxComponent const pegaSdkComponentMap = { + AdvancedSearch: AdvancedSearchComponent, ActionButtons: ActionButtonsComponent, Alert: AlertComponent, AlertBanner: AlertBannerComponent, @@ -213,6 +217,8 @@ const pegaSdkComponentMap = { RichTextEditor: RichTextEditorComponent, RootContainer: RootContainerComponent, ScalarList: ScalarListComponent, + SearchForm: SearchFormComponent, + SearchGroups: SearchGroupsComponent, SelectableCard: SelectableCardComponent, SemanticLink: SemanticLinkComponent, SimpleTable: SimpleTableComponent, diff --git a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts index 1189afb9..59c3019d 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts @@ -129,8 +129,10 @@ export class CurrencyComponent implements OnInit, OnDestroy { nValue = parseFloat(nValue); } this.value$ = nValue; - this.fieldControl.setValue(this.value$); + } else { + this.value$ = null; } + this.fieldControl.setValue(this.value$); this.helperText = this.configProps$.helperText; this.placeholder = this.configProps$.placeholder || ''; const currencyISOCode = this.configProps$?.currencyISOCode ?? ''; diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts index d43ba783..d0c3d69a 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts @@ -63,7 +63,6 @@ export class TextInputComponent implements OnInit, OnDestroy { // call updateSelf when initializing // this.updateSelf(); this.checkAndUpdate(); - if (this.formGroup$) { // add control to formGroup this.formGroup$.addControl(this.controlName$, this.fieldControl); @@ -105,7 +104,6 @@ export class TextInputComponent implements OnInit, OnDestroy { updateSelf(): void { // moved this from ngOnInit() and call this from there instead... this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as TextInputProps; - if (this.configProps$.value != undefined) { this.value$ = this.configProps$.value; } diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html index 1514318a..b82309f6 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html @@ -1,5 +1,5 @@
-
+
= new EventEmitter(); ngOnInit(): void { // Children may contain 'reference' component, so we need to // normalize them - this.arChildren$ = ReferenceComponent.normalizePConnArray(this.arChildren$); + this.childrenArray = ReferenceComponent.normalizePConnArray(this.arChildren$); } - ngOnChanges() { + ngOnChanges(changes: SimpleChanges) { // Children may contain 'reference' component, so we need to // normalize them - this.arChildren$ = ReferenceComponent.normalizePConnArray(this.arChildren$); + + const { arChildren$ } = changes; + if (isChildrenUpdated(arChildren$)) { + this.childrenArray = ReferenceComponent.normalizePConnArray(this.arChildren$); + } } onActionButtonClick(oData: any) { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts index 8c78d5f7..c39387a2 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts @@ -1,5 +1,5 @@ /* eslint-disable no-case-declarations */ -import { Component, OnInit, Input, NgZone, forwardRef, OnDestroy, OnChanges } from '@angular/core'; +import { Component, OnInit, Input, forwardRef, OnDestroy, OnChanges } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatSnackBarModule, MatSnackBar } from '@angular/material/snack-bar'; import { FormGroup } from '@angular/forms'; @@ -56,6 +56,7 @@ export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { bHasNavigation$ = false; bIsVertical$ = false; + prevNavigationSteps: any[] = []; arCurrentStepIndicies$: number[] = []; arNavigationSteps$: any[] = []; @@ -82,7 +83,6 @@ export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { private angularPConnect: AngularPConnectService, private psService: ProgressSpinnerService, private erService: ErrorMessagesService, - private ngZone: NgZone, private snackBar: MatSnackBar, public bannerService: BannerService ) {} @@ -250,9 +250,11 @@ export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { // iterate through steps to find current one(s) // immutable, so we want to change the local copy, so need to make a copy - this.ngZone.run(() => { + + if (!PCore.isDeepEqual(this.prevNavigationSteps, oCaseInfo.navigation.steps)) { // what comes back now in configObject is the children of the flowContainer this.arNavigationSteps$ = JSON.parse(JSON.stringify(oCaseInfo.navigation.steps)); + this.prevNavigationSteps = JSON.parse(JSON.stringify(oCaseInfo.navigation.steps)); this.arNavigationSteps$.forEach(step => { if (step.name) { step.name = PCore.getLocaleUtils().getLocaleValue(step.name, undefined, this.localeReference); @@ -260,7 +262,7 @@ export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { }); this.arCurrentStepIndicies$ = []; this.arCurrentStepIndicies$ = this.findCurrentIndicies(this.arNavigationSteps$, this.arCurrentStepIndicies$, 0); - }); + } } findCurrentIndicies(arStepperSteps: any[], arIndicies: number[], depth: number): number[] { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.html b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.html index 0ab77d12..144f785d 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.html +++ b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.html @@ -1,3 +1,7 @@ -
- +
+
diff --git a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts index 803ecd9f..72f39d5a 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, forwardRef, OnDestroy, OnChanges } from '@angular/core'; +import { Component, OnInit, Input, forwardRef, OnDestroy, OnChanges, SimpleChanges } from '@angular/core'; import { CommonModule } from '@angular/common'; import { publicConstants } from '@pega/pcore-pconnect-typedefs/constants'; import { ReferenceComponent } from '../../infra/reference/reference.component'; @@ -19,11 +19,10 @@ import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/an }) export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { @Input() pConn$: typeof PConnect; - @Input() loadData$: any; + @Input() formGroup$; @Input() name; - componentName$: string; - loadedPConn$: any; + childComponentPConnect: typeof PConnect; bShowDefer$ = false; angularPConnectData: AngularPConnectData = {}; @@ -45,7 +44,7 @@ export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { ngOnInit(): void { this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); // The below call is causing an error while creating/opening a case, hence commenting it out - // this.loadActiveTab(); + this.updateSelf(); } ngOnDestroy(): void { @@ -62,11 +61,17 @@ export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { if (theRequestedAssignment !== this.currentLoadedAssignment || (lastUpdateCaseTime && lastUpdateCaseTime !== this.lastUpdateCaseTime)) { this.currentLoadedAssignment = theRequestedAssignment; this.lastUpdateCaseTime = lastUpdateCaseTime; - this.loadActiveTab(); + this.updateSelf(); } } - ngOnChanges() { + ngOnChanges(changes: SimpleChanges) { + if (!Object.values(changes).every(val => val.firstChange === true)) { + this.updateSelf(); + } + } + + updateSelf() { this.loadViewCaseID = this.pConn$.getValue(this.constants.PZINSKEY) || this.pConn$.getValue(this.constants.CASE_INFO.CASE_INFO_ID); let containerItemData; const targetName = this.pConn$.getTarget(); @@ -119,8 +124,9 @@ export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { }; const configObject = PCore.createPConnect(config); configObject.getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY'); - this.loadedPConn$ = ReferenceComponent.normalizePConn(configObject.getPConnect()); - this.componentName$ = this.loadedPConn$.getComponentName(); + + this.childComponentPConnect = ReferenceComponent.normalizePConn(configObject.getPConnect()); + if (this.deferLoadId) { PCore.getDeferLoadManager().stop(this.deferLoadId, this.pConn$.getContextName()); } diff --git a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.html b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.html index 577803cd..abf9e1c1 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.html +++ b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.html @@ -17,7 +17,7 @@
diff --git a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts index 8ecaaa82..2e1d3c1a 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/view/view.component.ts @@ -165,7 +165,6 @@ export class ViewComponent implements OnInit, OnDestroy, OnChanges { this.showLabel$ = this.inheritedProps$.showLabel || this.showLabel$; // children may have a 'reference' so normalize the children array this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren()); - this.visibility$ = this.configProps$.visibility ?? this.visibility$; /** diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.html b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.html new file mode 100755 index 00000000..9aed8ffa --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.html @@ -0,0 +1,12 @@ + diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.scss b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.ts new file mode 100644 index 00000000..a13fd9ee --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.component.ts @@ -0,0 +1,112 @@ +import { Component, forwardRef, Input, OnInit, OnChanges } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormGroup } from '@angular/forms'; +import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { DataReferenceAdvancedSearchService } from '../data-reference/data-reference-advanced-search.service'; +import { getFirstChildConfig } from '../data-reference/utils'; + +@Component({ + selector: 'app-advanced-search', + templateUrl: './advanced-search.component.html', + styleUrls: ['./advanced-search.component.scss'], + imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] +}) +export class AdvancedSearchComponent implements OnInit, OnChanges { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; + @Input() searchSelectCacheKey; + + isInitialized = false; + + configProps$: any; + showRecords: any; + searchGroupsProps: any; + editableFieldComp: any; + + constructor(private advancedSearchService: DataReferenceAdvancedSearchService) {} + + ngOnInit(): void { + this.isInitialized = true; + this.updateSelf(); + } + + ngOnChanges() { + if (this.isInitialized) { + this.updateSelf(); + } + } + + // updateSelf + updateSelf(): void { + this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()); + const targetObjectClass = this.configProps$.targetObjectClass; + const localeReference = this.configProps$.localeReference; + const data: any = this.advancedSearchService.getConfig(); + const { dataReferenceConfigToChild, isCreateNewReferenceEnabled, disableStartingFieldsForReference, pyID, searchSelectCacheKey } = data; + const { selectionMode, value: singleSelectFieldValue, readonlyContextList: multiSelectField } = dataReferenceConfigToChild; + + // let isSelectionExist = false; + const { MULTI } = PCore.getConstants().LIST_SELECTION_MODE; + + if (selectionMode === MULTI) { + this.showRecords = this.pConn$.getValue(multiSelectField)?.length || false; + } else { + this.showRecords = this.pConn$.getValue(singleSelectFieldValue) || false; + } + + const rawViewMetadata = this.pConn$.getRawMetadata() as any; + + const searchFieldsSet = new Set(); + const searchFields: any = []; + rawViewMetadata?.config?.searchGroups?.forEach((group: any) => { + group.children.forEach((child: any) => { + if (!searchFieldsSet.has(child.config.value) && !child.config.validator) { + searchFields.push(child); + searchFieldsSet.add(child.config.value); + } + }); + }); + + const firstChildPConnect = this.pConn$.getChildren()[0].getPConnect as any; + const [firstChildMeta] = rawViewMetadata.children; + + const localizedVal = PCore.getLocaleUtils().getLocaleValue; + // @ts-ignore + const cache = PCore.getNavigationUtils().getComponentCache(searchSelectCacheKey) ?? {}; + + this.editableFieldComp = firstChildPConnect().createComponent({ + type: firstChildMeta.type, + config: { + ...getFirstChildConfig({ + firstChildMeta, + getPConnect: this.pConn$, + rawViewMetadata, + contextClass: targetObjectClass, + dataReferenceConfigToChild, + isCreateNewReferenceEnabled, + disableStartingFieldsForReference, + pyID + }), + searchFields, + showRecords: this.showRecords, + label: localizedVal('Search results', 'DataReference'), + searchSelectCacheKey, + cache + } + }); + + const { selectionList, dataRelationshipContext } = this.editableFieldComp.getPConnect().getConfigProps(); + const editableField = selectionMode === MULTI ? selectionList.substring(1) : dataRelationshipContext; + + this.searchGroupsProps = { + getPConnect: this.pConn$, + editableField, + localeReference, + setShowRecords: (value: boolean) => { + this.showRecords = value; + }, + searchSelectCacheKey: dataReferenceConfigToChild.searchSelectCacheKey, + cache + }; + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.service.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.service.ts new file mode 100644 index 00000000..febb89fc --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/advanced-search.service.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class AdvancedSearchService { + initializeSearchFields(rawViewMetadata: any): any[] { + const searchFieldsSet = new Set(); + const searchFields: any[] = []; + + rawViewMetadata.config.searchGroups.forEach((group: any) => { + group.children.forEach((child: any) => { + if (!searchFieldsSet.has(child.config.value) && !child.config.validator) { + searchFields.push(child); + searchFieldsSet.add(child.config.value); + } + }); + }); + + return searchFields; + } + + getLocalizedValue(key: string, context: string): string { + // Mock implementation for localized value retrieval + return `${context}: ${key}`; + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts new file mode 100644 index 00000000..8ecb73df --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts @@ -0,0 +1,58 @@ +const SKIP_CACHE_KEY = ''; + +export function getMappedKey(key) { + const mappedKey = PCore.getEnvironmentInfo().getKeyMapping(key); + if (!mappedKey) { + return key; + } + return mappedKey; +} + +const getComponentStateKey = (getPConnect, propertyName: string) => { + const pConnect = getPConnect; + const caseID = `.${getMappedKey('pyID')}`; // Enhance this later when use-case arrives for data objects using S&S. + const resolvedCaseID = pConnect.getValue(caseID); + + if (!resolvedCaseID) { + return SKIP_CACHE_KEY; + } + + return `Search-${resolvedCaseID}-${pConnect.getPageReference()}-${propertyName}-${pConnect.getCurrentView()}`; +}; + +const getComponentStateOptions = getPConnect => { + return { clearOnCancelForContext: getPConnect.getContextName() }; +}; + +interface SearchCategory { + // tabId of search category selected + selectedCategory: string; +} + +interface SearchGroup { + // searchFields can be any object based on what fields are authored. + searchFields: unknown; + activeGroupId: string; +} + +const setComponentCache = ({ + cacheKey, + state, + options +}: { + cacheKey: string; + state: SearchCategory | SearchGroup; + options: ReturnType; +}) => { + if (cacheKey !== SKIP_CACHE_KEY) { + (PCore.getNavigationUtils() as any).setComponentCache(cacheKey, state, options); + } +}; + +const componentCachePersistUtils = { + getComponentStateKey, + getComponentStateOptions, + setComponentCache +}; + +export default componentCachePersistUtils; diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.html b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.html new file mode 100644 index 00000000..eeffe4b5 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.html @@ -0,0 +1,32 @@ +
+ +
+ + Search By + + + {{ group.config.label }} + + + +
+ + +
+ +
+ + +
+ + +
+
diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.scss b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts new file mode 100755 index 00000000..f3f97744 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts @@ -0,0 +1,294 @@ +import { Component, Input, OnInit, OnDestroy, forwardRef, OnChanges, ChangeDetectorRef, signal } from '@angular/core'; +import { FormGroup, ReactiveFormsModule } from '@angular/forms'; +import componentCachePersistUtils from '../search-group/persist-utils'; +import { MatRadioModule } from '@angular/material/radio'; +import { MatOptionModule } from '@angular/material/core'; +import { MatSelectModule } from '@angular/material/select'; +import { MatButtonModule } from '@angular/material/button'; +import { CommonModule } from '@angular/common'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component'; +import { getCacheInfo, isValidInput } from '../search-groups/utils'; +import { Subscription } from 'rxjs'; + +const listViewConstants = { + EVENTS: { + LIST_VIEW_READY: 'LIST_VIEW_READY' + } +}; + +export function flattenObj(obj: any): any { + const result: any = {}; + Object.keys(obj).forEach(key => { + if (!['context_data', 'pageInstructions'].includes(key)) { + if (typeof obj[key] === 'object' && !Array.isArray(obj[key])) { + const temp = flattenObj(obj[key]); + Object.keys(temp).forEach(nestedKey => { + result[`${key}.${nestedKey}`] = temp[nestedKey]; + }); + } else { + result[key] = obj[key]; + } + } + }); + return result; +} + +export const initializeSearchFields = (searchFields, getPConnect, referenceListClassID, searchFieldRestoreValues = {}) => { + const filtersProperties = {}; + searchFields?.forEach(field => { + let val = ''; + const { value, defaultValue = '' } = field.config; + const propPath = PCore.getAnnotationUtils().getPropertyName(value); + + if (searchFieldRestoreValues[propPath]) { + val = searchFieldRestoreValues[propPath]; + } else if (PCore.getAnnotationUtils().isProperty(defaultValue)) { + val = getPConnect().getValue(defaultValue.split(' ')[1]); + } else if (defaultValue.startsWith('@L')) { + val = defaultValue.split(' ')[1]; + } else { + val = defaultValue; + } + + filtersProperties[propPath] = val; + + const valueSplit = value.split('@P ')[1]?.split('.').filter(Boolean) ?? []; + valueSplit.pop(); + + if (valueSplit.length) { + let path = ''; + let currentClassID = referenceListClassID; + valueSplit.forEach(item => { + path = path.length ? `${path}.${item}` : item; + currentClassID = (PCore.getMetadataUtils().getPropertyMetadata(item, currentClassID) as any).pageClass; + if (currentClassID) { + filtersProperties[`${path}.classID`] = currentClassID; + } + }); + } + }); + return filtersProperties; +}; + +@Component({ + selector: 'app-search-groups', + templateUrl: './search-groups.component.html', + styleUrls: ['./search-groups.component.scss'], + imports: [ + CommonModule, + ReactiveFormsModule, + MatFormFieldModule, + MatRadioModule, + MatOptionModule, + MatSelectModule, + MatButtonModule, + forwardRef(() => ComponentMapperComponent) + ] +}) +export class SearchGroupsComponent implements OnInit, OnDestroy, OnChanges { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; + @Input() searchGroupsProps; + + configProps$: any; + cache: any; + previousFormValues: any; + isValidatorField: any; + searchSelectCacheKey: any; + activeGroupId: string; + getPConnect: any; + searchFields: any; + referenceListClassID: any; + transientItemID: any; + useCache: boolean; + searchFieldsC11nEnv: any = signal(null); + referenceFieldName: any; + viewName: any; + subs: Subscription[] = []; + localizedVal = PCore.getLocaleUtils().getLocaleValue; + setShowRecords: any; + groups: any; + state: any = {}; + rawGroupsConfig: any; + initialSearchFields: {}; + constructor(private cdRef: ChangeDetectorRef) {} + + ngOnInit(): void { + console.log('SearchGroupsComponent - ngOnInit'); + } + + ngOnChanges() { + this.updateSelf(); + } + + // updateSelf + updateSelf(): void { + this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()); + const { searchGroups: groups, referenceList } = this.configProps$; + const { getPConnect, editableField, searchSelectCacheKey, cache } = this.searchGroupsProps; + this.searchSelectCacheKey = searchSelectCacheKey; + this.getPConnect = getPConnect; + this.cache = cache || {}; + const referenceFieldName = editableField.replaceAll('.', '_'); + const { classID: referenceListClassID } = PCore.getMetadataUtils().getDataPageMetadata(referenceList) as any; + const { useCache, initialActiveGroupId } = getCacheInfo(cache, groups); + this.activeGroupId = initialActiveGroupId; + const rawGroupsConfig = this.pConn$.getRawConfigProps().searchGroups; + const activeGroupIndex = groups.findIndex(group => group.config.id === this.activeGroupId); + const { children: searchFieldsChildren = [] } = activeGroupIndex !== -1 ? rawGroupsConfig[activeGroupIndex] : {}; + this.searchFields = searchFieldsChildren.map(field => ({ + ...field, + config: { ...field.config, isSearchField: true } + })); + this.initialSearchFields = initializeSearchFields( + this.searchFields, + getPConnect, + referenceListClassID, + useCache && cache.activeGroupId === this.activeGroupId ? cache.searchFields : {} + ); + const filtersWithClassID = { + ...this.initialSearchFields, + classID: referenceListClassID + }; + const viewName = this.pConn$.getCurrentView(); + const transientId = getPConnect.getContainerManager().addTransientItem({ id: `${referenceFieldName}-${viewName}`, data: filtersWithClassID }); + this.transientItemID = transientId; + this.createSearchFields(); + } + + createSearchFields() { + const searchFieldsViewConfig = { + name: 'SearchFields', + type: 'View', + config: { + template: 'DefaultForm', + NumCols: '3', + contextName: this.transientItemID, // can be null initially; will be replaced after transient creation + readOnly: false, + context: this.transientItemID, + localeReference: this.searchGroupsProps.localeReference + }, + children: [ + { + name: 'Fields', + type: 'Region', + children: this.searchFields + } + ] + }; + + // Create c11n env (Angular will render this via the SDK host component) + this.searchFieldsC11nEnv.set( + PCore.createPConnect({ + meta: searchFieldsViewConfig, + options: { + hasForm: true, + contextName: this.transientItemID + } + }) + ); + + this.cdRef.detectChanges(); + } + + getFilterData(): void { + let changes = PCore.getFormUtils().getSubmitData(this.transientItemID, { + isTransientContext: true, + includeDisabledFields: true + }); + + if (Object.keys(this.cache.searchFields ?? {}).length > 0 && Object.keys(changes).length === 1) { + changes = this.cache.searchFields; + } + + const formValues = flattenObj(changes); + + if ( + !PCore.isDeepEqual(this.previousFormValues, formValues) && + PCore.getFormUtils().isFormValid(this.transientItemID) && + isValidInput(formValues) + ) { + if (this.isValidatorField) { + // @ts-ignore + PCore.getMessageManager().clearContextMessages({ context: transientItemID }); + } + + this.previousFormValues = formValues; + // this.setShowRecords(true); + + PCore.getPubSubUtils().publish(PCore.getEvents().getTransientEvent().UPDATE_PROMOTED_FILTERS, { + payload: formValues, + showRecords: true, + viewName: this.getPConnect.getCurrentView() + }); + } + + this.state.activeGroupId = this.activeGroupId; + this.state.searchFields = changes; + this.state.selectedCategory = this.getPConnect.getCurrentView(); + const options = componentCachePersistUtils.getComponentStateOptions(this.getPConnect); + componentCachePersistUtils.setComponentCache({ + cacheKey: this.searchSelectCacheKey, + state: this.state, + options + }); + } + + resetFilterData(): void { + PCore.getNavigationUtils().resetComponentCache(this.searchSelectCacheKey); + const resetPayload = { + transientItemID: this.transientItemID, + data: initializeSearchFields(this.searchFields, this.getPConnect, this.referenceListClassID), + options: { reset: true } + }; + PCore.getContainerUtils().updateTransientData(resetPayload); + } + + /** NEW: update existing transient data when active group changes */ + updateTransientDataForActiveGroup() { + const filtersWithClassID = { + ...this.initialSearchFields, + classID: this.referenceListClassID + }; + + if (this.transientItemID) { + // this mirrors the React: PCore.getContainerUtils().replaceTransientData(...) + PCore.getContainerUtils().replaceTransientData({ transientItemID: this.transientItemID, data: filtersWithClassID }); + } + } + + onActiveGroupChange(event: any) { + this.activeGroupId = event.value; + // update searchFields for the newly selected group (mirror how React recalculates) + const activeGroupIndex = this.groups.findIndex(g => g.config.id === this.activeGroupId); + const searchFieldsChildren = activeGroupIndex !== -1 ? this.rawGroupsConfig[activeGroupIndex]?.children || [] : []; + this.searchFields = searchFieldsChildren.map(field => ({ + ...field, + config: { ...field.config, isSearchField: true } + })); + + // IMPORTANT: call replaceTransientData to update the transient with the new group's search fields + this.updateTransientDataForActiveGroup(); + } + + private setupCacheReplayOnListViewReady(): void { + if (Object.keys(this.cache?.searchFields ?? {}).length > 0) { + const sub: any = PCore.getPubSubUtils().subscribe( + listViewConstants.EVENTS.LIST_VIEW_READY, + ({ viewName }: { viewName: string }) => { + if (viewName === this.viewName && this.useCache) { + this.getFilterData(); + } + }, + `${this.searchSelectCacheKey}-listview-ready` + ); + this.subs.push(sub); + } + } + + ngOnDestroy(): void { + PCore.getPubSubUtils().unsubscribe(listViewConstants.EVENTS.LIST_VIEW_READY, `${this.searchSelectCacheKey}-listview-ready`); + this.subs.forEach(s => s.unsubscribe()); + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/utils.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/utils.ts new file mode 100644 index 00000000..bd836b04 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/utils.ts @@ -0,0 +1,29 @@ +function isEmpty(value: any): boolean { + return ( + // null or undefined + value === null || + value === undefined || + ((Array.isArray(value) || typeof value === 'string') && value.length === 0) || + // is an Object and has no keys + (value.constructor === Object && Object.keys(value).length === 0) + ); +} + +export function getCacheInfo( + cache: { selectedCategory: string; activeGroupId: string; searchFields: unknown }, + groups: { config: { id: string } }[] +) { + let initialActiveGroupId = groups.length ? groups[0].config.id : ''; + + let useCache = false; + if (cache.activeGroupId && groups?.find(group => group.config.id === cache.activeGroupId)) { + initialActiveGroupId = cache.activeGroupId; + useCache = true; + } + + return { useCache, initialActiveGroupId }; +} + +export function isValidInput(input: { [s: string]: unknown }) { + return Object.values(input).some(value => !isEmpty(value)); +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference-advanced-search.service.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference-advanced-search.service.ts new file mode 100644 index 00000000..26251234 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference-advanced-search.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject } from 'rxjs'; + +@Injectable({ providedIn: 'root' }) +export class DataReferenceAdvancedSearchService { + private configSubject = new BehaviorSubject(null); + config$ = this.configSubject.asObservable(); + + setConfig(config) { + this.configSubject.next(config); + } + + getConfig() { + return this.configSubject.getValue(); + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html index 1436efea..b0271939 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html @@ -1,13 +1,18 @@ -
-
-
- +
+ +
+ +
+
+
+ +
+
+
+ +
+
+
-
- -
-
- -
-
+ diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts index 8a9fd63a..bf05cd19 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts @@ -3,6 +3,10 @@ import { CommonModule } from '@angular/common'; import { FormGroup } from '@angular/forms'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { getMappedKey } from '../advanced-search/search-group/persist-utils'; +import componentCachePersistUtils from '../advanced-search/search-group/persist-utils'; +import { getFirstChildConfig } from '../data-reference/utils'; +import { DataReferenceAdvancedSearchService } from './data-reference-advanced-search.service'; const SELECTION_MODE = { SINGLE: 'single', MULTI: 'multi' }; @@ -38,46 +42,67 @@ export class DataReferenceComponent implements OnInit, OnDestroy { displaySingleRef: boolean; displayMultiRef: boolean; refList: any; + displayAs: any; + isDDSourceDeferred: any; + showPromotedFilters: any; + displayMode: any; + refFieldMetadata: any; + contextClass: any; + selectionList: any; + inline: any; + isCreationOfNewRecordAllowedForReference: any; + showAdvancedSearch: boolean; + pyID: any; + allowImplicitRefresh: any; - constructor(private angularPConnect: AngularPConnectService) {} + constructor( + private angularPConnect: AngularPConnectService, + private advancedSearchService: DataReferenceAdvancedSearchService + ) {} ngOnInit(): void { // First thing in initialization is registering and subscribing to the AngularPConnect service this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); this.children = this.pConn$.getChildren(); this.updateSelf(); - if (this.firstChildMeta?.type === 'Dropdown' && this.rawViewMetadata.config?.parameters) { + + if ( + this.rawViewMetadata.config?.parameters && + !this.isDDSourceDeferred && + ['Checkbox', 'Dropdown', 'RadioButtons'].includes(this.firstChildMeta?.type) + ) { const { value, key, text } = this.firstChildMeta.config.datasource.fields; - PCore.getDataApiUtils() - .getData( - this.refList, - { + + if (this.firstChildMeta.config.variant !== 'card' || this.firstChildMeta.config.variant === 'card') { + PCore.getDataApiUtils() + .getData(this.refList, { dataViewParameters: this.parameters - }, - '' - ) - .then(res => { - if (res.data.data !== null) { - const ddDataSource = res.data.data - .map(listItem => ({ - key: listItem[key.split(' .', 2)[1]], - text: listItem[text.split(' .', 2)[1]], - value: listItem[value.split(' .', 2)[1]] - })) - .filter(item => item.key); - // Filtering out undefined entries that will break preview - this.dropDownDataSource = ddDataSource; - this.updateSelf(); - } else { - const ddDataSource: any = []; - this.dropDownDataSource = ddDataSource; - } - }) - .catch(() => { - return Promise.resolve({ - data: { data: [] } + }) + .then(res => { + if (res.data.data !== null) { + const ddDataSource = this.firstChildMeta.config.datasource.filterDownloadedFields + ? res.data.data + : res.data.data + .map(listItem => ({ + key: listItem[key.split(' .', 2)[1]], + text: listItem[text.split(' .', 2)[1]], + value: listItem[value.split(' .', 2)[1]] + })) + .filter(item => item.key); // Filtering out undefined entries + this.dropDownDataSource = ddDataSource; + this.updateSelf(); + } else { + const ddDataSource: any = []; + this.dropDownDataSource = ddDataSource; + } + }) + .catch(err => { + console.error(err?.stack); + return Promise.resolve({ + data: { data: [] } + }); }); - }); + } } } @@ -113,7 +138,15 @@ export class DataReferenceComponent implements OnInit, OnDestroy { this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && (displayAs === 'autocomplete' || displayAs === 'dropdown'); // this.childrenToRender = this.children; this.isDisplayModeEnabled = ['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(displayMode); + this.refFieldMetadata = this.pConn$.getFieldMetadata(this.rawViewMetadata?.config?.authorContext); + this.pyID = getMappedKey('pyID'); + // @ts-ignore + const { allowImplicitRefresh } = PCore.getFieldDefaultUtils().fieldDefaults?.DataReference || {}; + this.allowImplicitRefresh = allowImplicitRefresh; + this.isDDSourceDeferred = + (this.firstChildMeta?.type === 'Dropdown' && this.selectionMode === SELECTION_MODE.SINGLE && this.refFieldMetadata?.descriptors) || + this.firstChildMeta.config.deferDatasource; if (this.firstChildMeta?.type !== 'Region') { this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect; @@ -154,8 +187,14 @@ export class DataReferenceComponent implements OnInit, OnDestroy { this.selectionMode = theConfigProps.selectionMode; this.parameters = theConfigProps.parameters; this.hideLabel = theConfigProps.hideLabel; - + this.displayAs = theConfigProps.displayAs; + this.showPromotedFilters = theConfigProps.showPromotedFilters; + this.displayMode = theConfigProps.displayMode; this.propsToUse = { label, showLabel, ...this.pConn$.getInheritedProps() }; + this.contextClass = theConfigProps.contextClass; + this.selectionList = theConfigProps.selectionList; + this.inline = theConfigProps.inline; + this.isCreationOfNewRecordAllowedForReference = theConfigProps.isCreationOfNewRecordAllowedForReference; if (this.propsToUse.showLabel === false) { this.propsToUse.label = ''; } @@ -163,29 +202,64 @@ export class DataReferenceComponent implements OnInit, OnDestroy { generateChildrenToRender() { const theRecreatedFirstChild = this.recreatedFirstChild(); - const viewsRegion = this.rawViewMetadata.children[1]; - if (viewsRegion?.name === 'Views' && viewsRegion.children.length) { - this.childrenToRender = [theRecreatedFirstChild, ...this.children.slice(1)]; - } else { + if (this.firstChildMeta?.type !== 'Region') { + const viewsRegion = this.rawViewMetadata.children[1]; + + if (viewsRegion?.name === 'Views' && viewsRegion.children.length) { + viewsRegion.children.map(child => { + child.config.isEmbeddedInDataReference = true; + return child; + }); + this.childrenToRender = [theRecreatedFirstChild, ...this.children.slice(1)]; + } else { + this.childrenToRender = [theRecreatedFirstChild]; + } + } else if (this.displayAs === 'advancedSearch') { this.childrenToRender = [theRecreatedFirstChild]; } + + // Render + if (this.childrenToRender.length === 1) { + return this.childrenToRender[0] ?? null; + } } handleSelection(event) { const caseKey = this.pConn$.getCaseInfo().getKey(); - const refreshOptions = { autoDetectRefresh: true }; - if (this.canBeChangedInReviewMode && this.pConn$.getValue('__currentPageTabViewName')) { - this.pConn$.getActionsApi().refreshCaseView(caseKey, this.pConn$.getValue('__currentPageTabViewName'), '', refreshOptions); - PCore.getDeferLoadManager().refreshActiveComponents(this.pConn$.getContextName()); - } else { - const pgRef = this.pConn$.getPageReference().replace('caseInfo.content', ''); - this.pConn$.getActionsApi().refreshCaseView(caseKey, this.viewName, pgRef, refreshOptions); + const refreshOptions: any = { autoDetectRefresh: true, propertyName: '' }; + + if (this.pConn$?.getRawMetadata()?.children?.length > 0 && this.pConn$?.getRawMetadata()?.children[0].config?.value) { + refreshOptions.propertyName = this.pConn$?.getRawMetadata()?.children[0].config.value; + refreshOptions.classID = (this.pConn$.getRawMetadata() as any).classID; } - // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value + // AutoComplete sets value on event.id whereas Dropdown sets it on event.target.value if event.id is unset + // When value is empty propValue will be undefined here and no value will be set for the reference const propValue = event?.id || event?.target?.value; - if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) { - PCore.getDataApiUtils() + const propName = + this.firstChildMeta.type === 'SimpleTableSelect' && this.selectionMode === SELECTION_MODE.MULTI + ? PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.selectionList) + : PCore.getAnnotationUtils().getPropertyName(this.firstChildMeta.config.value); + + const hasAssociatedViewConfigured = this.rawViewMetadata.children[1].children?.length; + + if (this.pConn$.getContextName().includes('modal') || this.pConn$.getContextName().includes('workarea')) { + if (hasAssociatedViewConfigured || this.allowImplicitRefresh) { + const pageReference = this.pConn$.getPageReference(); + let pgRef: any = null; + if (pageReference.startsWith('objectInfo')) { + pgRef = pageReference.replace('objectInfo.content', ''); + } else { + pgRef = pageReference.replace('caseInfo.content', ''); + } + const viewName = this.rawViewMetadata.name; + this.pConn$ + .getActionsApi() + .refreshCaseView(caseKey, viewName, pgRef, refreshOptions) + .catch(() => {}); + } + } else if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) { + PCore.getCaseUtils() .getCaseEditLock(caseKey, '') .then(caseResponse => { const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.'); @@ -200,7 +274,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy { }); // expecting format like {Customer: {pyID:"C-100"}} - const propArr = this.propName.split('.'); + const propArr = propName.split('.'); propArr.forEach((element, idx) => { if (idx + 1 === propArr.length) { curr[element] = propValue; @@ -220,49 +294,185 @@ export class DataReferenceComponent implements OnInit, OnDestroy { } } - // Re-create first child with overridden props - // Memoized child in order to stop unmount and remount of the child component when data reference - // rerenders without any actual change recreatedFirstChild() { - const { type, config } = this.firstChildMeta; - if (this.firstChildMeta?.type !== 'Region') { - this.pConn$.clearErrorMessages({ - property: this.propName, - category: '', - context: '' - }); - if (!this.canBeChangedInReviewMode && this.isDisplayModeEnabled && this.selectionMode === SELECTION_MODE.SINGLE) { - this.displaySingleRef = true; + if (this.firstChildMeta?.type === 'Region' && this.displayAs !== 'advancedSearch') { + return; + } + const { type } = this.firstChildMeta; + this.firstChildPConnect = this.pConn$.getChildren()[0].getPConnect; + // this.pConn$.getChildren()[0].getPConnect + /* Read-only variants */ + if ( + (this.displayAs === 'readonly' || this.isDisplayModeEnabled) && + !this.canBeChangedInReviewMode && + this.selectionMode === SELECTION_MODE.SINGLE + ) { + this.displaySingleRef = true; + } + + if ((['readonly', 'readonlyMulti', 'map'].includes(this.displayAs) || this.isDisplayModeEnabled) && this.selectionMode === SELECTION_MODE.MULTI) { + this.displayMultiRef = true; + } + + /* Editable variants */ + // Datasource w/ parameters cannot load the dropdown before the parameters + if (type === 'Dropdown' && this.dropDownDataSource === null && !this.isDDSourceDeferred && this.rawViewMetadata.config?.parameters) { + return null; + } + + // Meta prep + // 1) Cleanup + if (this.firstChildMeta.config?.readOnly) { + delete this.firstChildMeta.config.readOnly; + } + + // 2) Set datasource + if ( + ['Dropdown', 'Checkbox', 'RadioButtons'].includes(this.firstChildMeta?.type) && + !this.firstChildMeta.config.deferDatasource && + this.firstChildMeta.config.datasource + ) { + // If data page doesn't exist within shared object when card component is mounted, then we need to set source to dropdownDataSource + const isDeferDataPageCallEnabled = + this.rawViewMetadata.config?.parameters && + this.firstChildMeta.config.variant === 'card' && + // @ts-ignore + !firstChildPConnect()?.getSharedDataPageForReferenceList(); + this.firstChildMeta.config.datasource.source = + (this.firstChildMeta.config.variant === 'card' && (this.dropDownDataSource || isDeferDataPageCallEnabled)) || + (this.firstChildMeta.config.variant !== 'card' && this.rawViewMetadata.config?.parameters) + ? this.dropDownDataSource + : '@DATASOURCE '.concat(this.refList).concat('.pxResults'); + } else if (this.firstChildMeta?.type === 'AutoComplete') { + this.firstChildMeta.config.datasource = this.refList; + + if (this.rawViewMetadata.config?.parameters) { + this.firstChildMeta.config.parameters = this.parameters; } + } + + // 3) Pass through configs + if (this.firstChildMeta.config) { + this.firstChildMeta.config.showPromotedFilters = this.showPromotedFilters; + if (!this.canBeChangedInReviewMode) { + this.firstChildMeta.config.displayMode = this.displayMode; + } + } - if (this.isDisplayModeEnabled && this.selectionMode === SELECTION_MODE.MULTI) { - this.displayMultiRef = true; + // 4) Define field meta + let fieldMetaData: any = null; + if (this.isDDSourceDeferred && !this.firstChildMeta.config.deferDatasource) { + fieldMetaData = { + datasourceMetadata: this.refFieldMetadata + }; + if (this.rawViewMetadata.config?.parameters) { + fieldMetaData.datasourceMetadata.datasource.parameters = this.parameters; } + fieldMetaData.datasourceMetadata.datasource.propertyForDisplayText = this.firstChildMeta?.config?.datasource?.fields?.text.startsWith('@P') + ? this.firstChildMeta?.config?.datasource?.fields?.text?.substring(3) + : this.firstChildMeta?.config?.datasource?.fields?.text; + fieldMetaData.datasourceMetadata.datasource.propertyForValue = this.firstChildMeta?.config?.datasource?.fields?.value.startsWith('@P') + ? this.firstChildMeta?.config?.datasource?.fields?.value?.substring(3) + : this.firstChildMeta?.config?.datasource?.fields?.value; + fieldMetaData.datasourceMetadata.datasource.name = this.rawViewMetadata.config?.referenceList; + } - // In the case of a datasource with parameters you cannot load the dropdown before the parameters - if (type === 'Dropdown' && this.rawViewMetadata.config?.parameters && this.dropDownDataSource === null) { - return null; + const { disableStartingFieldsForReference = false } = PCore.getEnvironmentInfo().environmentInfoObject?.features?.form || ({} as any); + + const isEnvLP: any = PCore.getEnvironmentInfo().environmentInfoObject?.features?.form; + // Create Link in Reference Field: For legacy views where isCreationOfNewRecordAllowedForReference is absent, Infinity should treat it as turned off. However, in LP, it should be considered as turned on by default. + const isCreateNewRefEnabledInAuthoring = this.isCreationOfNewRecordAllowedForReference ?? isEnvLP?.isCreateNewReferenceEnabled; + const isCaseRef = this.referenceType === 'Case' || this.firstChildMeta?.config?.referenceType === 'Case'; + // In infinity supported only for case reference @todo add user access check. For LP case and data both are supported given user has access. + const isCreateNewRefEnabledForUser = isEnvLP + ? isEnvLP.isCreateNewReferenceEnabled && PCore.getAccessPrivilege().hasCreateAccess(this.contextClass) + : isCaseRef; + + const isCreateNewReferenceEnabled = isCreateNewRefEnabledInAuthoring && isCreateNewRefEnabledForUser; + + const startingFields: any = {}; + const createNewRecord = () => { + if (this.referenceType === 'Case' || this.firstChildMeta?.config?.referenceType === 'Case') { + if (!disableStartingFieldsForReference) { + startingFields.pyAddCaseContextPage = { pyID: this.pConn$.getCaseInfo().getKey()?.split(' ')?.pop() }; + } + return this.pConn$.getActionsApi().createWork(this.contextClass, { + openCaseViewAfterCreate: false, + startingFields + }); + } + if (this.referenceType === 'Data' || this.firstChildMeta?.config?.referenceType === 'Data') { + return getPConnect().getActionsApi().showDataObjectCreateView(this.contextClass); } + }; - return this.firstChildPConnect().createComponent({ - type, - config: { - ...config, - required: this.propsToUse.required, - visibility: this.propsToUse.visibility, - disabled: this.propsToUse.disabled, - label: this.propsToUse.label, - viewName: this.pConn$.getCurrentView(), - parameters: this.rawViewMetadata.config.parameters, - readOnly: false, - localeReference: this.rawViewMetadata.config.localeReference, - ...(this.selectionMode === SELECTION_MODE.SINGLE ? { referenceType: this.referenceType } : ''), - dataRelationshipContext: - this.rawViewMetadata.config.contextClass && this.rawViewMetadata.config.name ? this.rawViewMetadata.config.name : null, - hideLabel: this.hideLabel, - onRecordChange: this.handleSelection.bind(this) + const additionalInfo = this.refFieldMetadata?.additionalInformation + ? { + content: this.refFieldMetadata.additionalInformation } - }); + : undefined; + + const dataReferenceConfigToChild = { + selectionMode: this.selectionMode, + additionalInfo, + descriptors: this.selectionMode === SELECTION_MODE.SINGLE ? this.refFieldMetadata?.descriptors : null, + datasourceMetadata: fieldMetaData?.datasourceMetadata, + required: this.propsToUse.required, + visibility: this.propsToUse.visibility, + disabled: this.propsToUse.disabled, + label: this.propsToUse.label, + displayAs: this.displayAs, + readOnly: false, + ...(this.selectionMode === SELECTION_MODE.SINGLE && { + referenceType: this.referenceType + }), + ...(this.selectionMode === SELECTION_MODE.SINGLE && + this.displayAs === 'advancedSearch' && { + value: this.rawViewMetadata.config.value, + contextPage: this.rawViewMetadata.config.contextPage + }), + ...(this.selectionMode === SELECTION_MODE.MULTI && + this.displayAs === 'advancedSearch' && { + selectionList: this.selectionList, + readonlyContextList: this.rawViewMetadata.config.readonlyContextList + }), + dataRelationshipContext: this.rawViewMetadata.config.contextClass && this.rawViewMetadata.config.name ? this.rawViewMetadata.config.name : null, + hideLabel: this.hideLabel, + onRecordChange: this.handleSelection.bind(this), + createNewRecord: isCreateNewReferenceEnabled ? createNewRecord : undefined, + inline: this.inline + }; + + const searchSelectCacheKey = componentCachePersistUtils.getComponentStateKey(this.pConn$, this.rawViewMetadata.config.name); + + const dataReferenceAdvancedSearchContext = { + dataReferenceConfigToChild, + isCreateNewReferenceEnabled, + disableStartingFieldsForReference, + pyID: this.pyID, + searchSelectCacheKey + }; + + if (this.displayAs === 'advancedSearch') { + this.showAdvancedSearch = true; + this.advancedSearchService.setConfig(dataReferenceAdvancedSearchContext); + return; } + + return this.firstChildPConnect().createComponent({ + type, + config: { + ...getFirstChildConfig({ + firstChildMeta: this.firstChildMeta, + getPConnect: this.pConn$, + rawViewMetadata: this.rawViewMetadata, + contextClass: this.contextClass, + dataReferenceConfigToChild, + isCreateNewReferenceEnabled, + disableStartingFieldsForReference, + pyID: this.pyID + }) + } + }); } } diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.html b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.html new file mode 100644 index 00000000..6d36b7c2 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.html @@ -0,0 +1,39 @@ +
+
{{ propsToUse.label }}
+
+ + + {{ tab.name }} + + +
+
+ + {{ tab.name }} + +
+ + +
+
+
+ +
+
+
+ + +

Discard selections?

+ +

When changing search categories, any previous selections will be lost.

+
+ + + + +
+
diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.scss b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.scss new file mode 100644 index 00000000..da91d5d8 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.scss @@ -0,0 +1,11 @@ +.psdk-full-width { + width: 100%; +} + +::ng-deep { + mat-tab-group { + .mat-mdc-tab-header .mat-mdc-tab-label-container .mat-mdc-tab-list { + display: none; + } + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.ts new file mode 100644 index 00000000..ab9e6067 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/search-form.component.ts @@ -0,0 +1,167 @@ +import { Component, forwardRef, Input, OnChanges, OnInit, TemplateRef, ViewChild } from '@angular/core'; +import { FormGroup, ReactiveFormsModule } from '@angular/forms'; +import { getFirstVisibleTabId, getActiveTabId, searchtabsClick } from '../../../../_helpers/tab-utils'; +import { MatRadioModule } from '@angular/material/radio'; +import { CommonModule } from '@angular/common'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatOptionModule } from '@angular/material/core'; +import { MatSelectModule } from '@angular/material/select'; +import { MatTabsModule } from '@angular/material/tabs'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDialog, MatDialogModule, MatDialogActions, MatDialogContent, MatDialogTitle } from '@angular/material/dialog'; +import { ComponentMapperComponent } from '../../../../_bridge/component-mapper/component-mapper.component'; +import { getTabCountSources, getData } from './tabsData'; +import { getFieldMeta } from '../utils'; + +@Component({ + selector: 'app-search-form', + templateUrl: './search-form.component.html', + styleUrls: ['./search-form.component.scss'], + imports: [ + CommonModule, + ReactiveFormsModule, + MatFormFieldModule, + MatRadioModule, + MatOptionModule, + MatSelectModule, + MatTabsModule, + MatDialogModule, + MatDialogActions, + MatDialogContent, + MatDialogTitle, + MatButtonModule, + forwardRef(() => ComponentMapperComponent) + ] +}) +export class SearchFormComponent implements OnInit, OnChanges { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; + @Input() searchSelectCacheKey; + + configProps$: any; + isInitialized = false; + + currentTabId: string; + nextTabId: string; + openDialog = false; + tabItems: any[] = []; + searchCategoriesComp: any; + propsToUse: any; + tabData: any = []; + tabCountSources: any; + deferLoadedTabs: any; + @ViewChild('dialogTemplate') dialogTemplate!: TemplateRef; + dialogRef: any; + constructor(private dialog: MatDialog) {} + + ngOnInit(): void { + this.isInitialized = true; + this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()); + this.propsToUse = { ...this.pConn$.getInheritedProps() }; + this.deferLoadedTabs = this.pConn$.getChildren()[2]; + const cache: any = PCore.getNavigationUtils().getComponentCache(this.searchSelectCacheKey) ?? {}; + const { selectedCategory } = cache; + const firstTabId = getFirstVisibleTabId(this.deferLoadedTabs, selectedCategory); + this.currentTabId = getActiveTabId(this.deferLoadedTabs.getPConnect().getChildren(), firstTabId); + this.updateSelf(); + } + + ngOnChanges() { + if (this.isInitialized) { + this.updateSelf(); + } + } + + // updateSelf + updateSelf(): void { + this.tabCountSources = getTabCountSources(this.deferLoadedTabs); + this.tabData = getData(this.deferLoadedTabs, this.tabCountSources, this.currentTabId, this.tabData); + this.tabItems = this.tabData?.filter(tab => tab.visibility()) || []; + this.initializeSearchCategories(); + } + + initializeSearchCategories(): void { + if (this.tabItems.length >= 3) { + this.searchCategoriesComp = 'dropdown'; + } else if (this.tabItems.length > 1) { + this.searchCategoriesComp = 'radio'; + } + } + + handleTabClick(event) { + const tabId = event.target.value; + const viewName = this.tabData + .find((tab: any) => tab.id === this.currentTabId) + ?.getPConnect() + .getConfigProps().name; + + if (this.checkIfSelectionsExist(this.pConn$)) { + event.preventDefault(); + this.nextTabId = tabId; + this.dialogRef = this.dialog.open(this.dialogTemplate, { + width: '400px' + }); + } else { + // @ts-ignore + this.publishEvent({ viewName, tabId }); + this.currentTabId = tabId; + this.tabData = getData(this.deferLoadedTabs, this.tabCountSources, this.currentTabId, this.tabData); + this.tabItems = this.tabData?.filter(tab => tab.visibility()) || []; + } + } + + clearSelectionAndSwitchTab(): void { + const viewName = this.tabItems + .find((tab: any) => tab.id === this.currentTabId) + .getPConnect() + .getConfigProps().name; + + this.publishEvent({ clearSelections: true, viewName }); + searchtabsClick(this.nextTabId, this.tabData, this.currentTabId); + this.onDialogClose(); + this.currentTabId = this.nextTabId; + this.tabData = getData(this.deferLoadedTabs, this.tabCountSources, this.currentTabId, this.tabData); + this.tabItems = this.tabData?.filter(tab => tab.visibility()) || []; + } + + onDialogClose(): void { + this.dialogRef.close(); + } + + publishEvent({ clearSelections, viewName }) { + const payload: any = {}; + + if (clearSelections) { + payload.clearSelections = clearSelections; + } + + if (viewName) { + payload.viewName = viewName; + } + + PCore.getPubSubUtils().publish('update-advanced-search-selections', payload); + } + + get activeTabPConnect() { + const tabData = this.tabItems.find(tab => tab.id === this.currentTabId); + return tabData.content?.getPConnect(); + } + + checkIfSelectionsExist(getPConnect) { + const { MULTI } = PCore.getConstants().LIST_SELECTION_MODE; + const { selectionMode, readonlyContextList, contextPage, contextClass, name } = getPConnect.getConfigProps(); + const isMultiSelectMode = selectionMode === MULTI; + + const dataRelationshipContext = contextClass && name ? name : null; + + const { compositeKeys } = getFieldMeta(getPConnect, dataRelationshipContext); + + let selectionsExist = false; + if (isMultiSelectMode) { + selectionsExist = readonlyContextList?.length > 0; + } else if (contextPage) { + selectionsExist = compositeKeys?.filter(key => !['', null, undefined].includes(contextPage[key]))?.length > 0; + } + return selectionsExist; + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts new file mode 100644 index 00000000..0ad8d9b0 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts @@ -0,0 +1,160 @@ +import { getTabLabel } from 'packages/angular-sdk-components/src/public-api'; + +export function getTabCountSources(deferLoadedTabs) { + const availableTabs = deferLoadedTabs.getPConnect().getChildren() || []; + const viewName = deferLoadedTabs?.getPConnect()?.options?.viewName || null; + return availableTabs.reduce( + (prev, tab, index) => { + const config = tab.getPConnect().getConfigProps(); + const { value: showTabCount } = config.inheritedProps?.find(item => item.prop === 'showTabCount') || {}; + const { value } = config.inheritedProps?.find(item => item.prop === 'count') || {}; + const tabCountSource = config.inheritedProps?.find(item => item.prop === 'tabCount'); + const name = getTabLabel(tab.getPConnect()); + const tabId = `${viewName}-${config.name || name}-${index}`; + if (showTabCount) { + if (tabCountSource?.value?.fields?.count) { + const isPrefixedByDot = tabCountSource.value.fields.count.substring(0, 1) === '.'; + return { + ...prev, + dataPageSources: [ + ...prev.dataPageSources, + { + dataPageName: tabCountSource.value.source, + tabId, + tabCountProp: isPrefixedByDot ? tabCountSource.value.fields.count.substring(1) : tabCountSource.value.fields.count, + dataViewParameters: tabCountSource.value?.parameters || {} + } + ] + }; + } + if (Number.isInteger(value) && value % 1 === 0) { + return { + ...prev, + calculatedFields: [ + ...prev.calculatedFields, + { + count: value, + context: tab.getPConnect().getContextName(), + tabId + } + ] + }; + } + if (value?.isDeferred) { + return { + ...prev, + calculatedFields: [ + ...prev.calculatedFields, + { + propertyName: value.propertyName, + context: 'content', + tabId + } + ] + }; + } + } + return prev; + }, + { + dataPageSources: [], + calculatedFields: [] + } + ); +} + +function tabContent(id, index, overideTabContent, tab, data, currentTabId, template) { + if (id === currentTabId || template === 'HierarchicalForm') { + if (overideTabContent) { + return tab.getPConnect().getComponent(); + } + if (data[index]?.content) { + return data[index]?.content; + } + return tab.getPConnect().getComponent(); + } + if (template !== 'HierarchicalForm') { + return overideTabContent ? null : data[index]?.content; + } +} + +function getTabsData(deferLoadedTabs, countMetadata, currentTabId, data) { + const availableTabs = deferLoadedTabs.getPConnect().getChildren() || []; + const viewName = deferLoadedTabs?.getPConnect()?.options?.viewName || null; + return availableTabs.map((tab, index) => { + const config = tab.getPConnect().getConfigProps(); + const name = getTabLabel(tab.getPConnect()); + const tabId = `${viewName}-${config.name || name}-${index}`; + const count = countMetadata.find(item => item.tabId === tabId)?.count; + + return { + name, + id: tabId, + getPConnect: tab.getPConnect, + content: tabContent(tabId, index, '', tab, data, currentTabId, ''), + loaded: tabId === currentTabId || Boolean(data[index]?.content), + visibility: () => { + const tabConfig = tab.getPConnect().getConfigProps(); + const isVisible = !('visibility' in tabConfig) || tabConfig.visibility === true; + if (!isVisible) { + tab.getPConnect().removeNode(); + } + return isVisible; + }, + count + }; + }); +} + +export function getData(deferLoadedTabs, tabCountSources, currentTabId, data) { + let countMetadata; + let tabData; + const pConn = deferLoadedTabs.getPConnect(); + const { dataPageSources, calculatedFields } = tabCountSources; + const calculatedFieldsWithoutValue = calculatedFields.filter(item => item.propertyName); + if (dataPageSources.length) { + Promise.all(dataPageSources.map(item => PCore.getDataPageUtils().getPageDataAsync(item.dataPageName, '', item.dataViewParameters))) + .then(res => { + const temp = res.map((r, index) => ({ + ...dataPageSources[index], + count: r[dataPageSources[index].tabCountProp] + })); + countMetadata = temp; + tabData = getTabsData(deferLoadedTabs, countMetadata, currentTabId, data); + }) + .catch(err => { + console.log(err); + }); + } else if (calculatedFieldsWithoutValue.length) { + PCore.getViewRuleApi() + // @ts-ignore + .getCalculatedFields( + pConn.getCaseInfo().getKey(), + pConn.getCurrentView(), + calculatedFieldsWithoutValue.map(({ propertyName, context }) => ({ + name: propertyName, + context + })) + ) + .then(res => { + const values = res?.data?.caseInfo?.content || {}; + const temp = calculatedFields.map(field => ({ + ...field, + count: values[field.propertyName?.substring(1)] || field.count + })); + countMetadata = temp; + tabData = getTabsData(deferLoadedTabs, countMetadata, currentTabId, data); + }) + .catch(err => { + console.log(err); + }); + } else { + countMetadata = calculatedFields.map(field => ({ + ...field, + count: field.count + })); + tabData = getTabsData(deferLoadedTabs, countMetadata, currentTabId, data); + } + + return tabData; +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/utils.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/utils.ts new file mode 100644 index 00000000..d160a504 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/utils.ts @@ -0,0 +1,92 @@ +const isSelfReferencedProperty = (param, referenceProp) => { + const [, parentPropName] = param.split('.'); + const referencePropParent = referenceProp?.split('.').pop(); + return parentPropName === referencePropParent; +}; + +export function getFieldMeta(getPConnect, dataRelationshipContext) { + const pConn = getPConnect; + const { selectionMode, selectionList } = pConn.getConfigProps(); + const { MULTI } = PCore.getConstants().LIST_SELECTION_MODE; + + const isMultiSelectMode = selectionMode === MULTI; + + const pageReference = pConn.getPageReference(); + let referenceProp = isMultiSelectMode ? selectionList.substring(1) : pageReference.substring(pageReference.lastIndexOf('.') + 1); + // Replace here to use the context name instead + let contextPageReference = null; + if (dataRelationshipContext !== null && selectionMode === 'single') { + referenceProp = dataRelationshipContext; + contextPageReference = pageReference.concat('.').concat(referenceProp); + } + + const fieldMetadata = + (isMultiSelectMode ? pConn.getFieldMetadata(`${referenceProp}`) : pConn.getCurrentPageFieldMetadata(contextPageReference)) ?? {}; + const { datasource: { parameters: fieldParameters = {} } = {} } = fieldMetadata; + const compositeKeys: any = []; + Object.values(fieldParameters).forEach((param: any) => { + if (isSelfReferencedProperty(param, referenceProp)) { + compositeKeys.push(param.substring(param.lastIndexOf('.') + 1)); + } + }); + + return { compositeKeys, fieldMetadata }; +} + +/** + * returns array of self-referenced properties of the datasource + * Ex: returns ["@P .DataRef.pyGUID", "@P .DataRef.customerID"] + */ +const getCompositeKeys = (pConnect, property) => { + const fieldMetadata = pConnect.getFieldMetadata(property) || {}; + const { datasource: { parameters: fieldParameters = {} } = {} } = fieldMetadata; + const compositeKeys: any = []; + Object.values(fieldParameters).forEach(param => { + if (isSelfReferencedProperty(param, property)) { + compositeKeys.push(param); + } + }); + return compositeKeys; +}; + +export const getFirstChildConfig = ({ + firstChildMeta, + getPConnect, + rawViewMetadata, + contextClass, + dataReferenceConfigToChild, + isCreateNewReferenceEnabled, + disableStartingFieldsForReference, + pyID +}) => { + const config = { + ...firstChildMeta.config, + ...dataReferenceConfigToChild + }; + const compositeKeys = getCompositeKeys(getPConnect, dataReferenceConfigToChild?.dataRelationshipContext); + return { + ...config, + viewName: getPConnect.getCurrentView(), + referenceList: config.referenceList ?? rawViewMetadata.config.referenceList, + parameters: rawViewMetadata.config.parameters, + localeReference: rawViewMetadata.config.localeReference, + contextClass: config.contextClass || rawViewMetadata?.config?.contextClass || rawViewMetadata?.config?.targetObjectClass, + allowAddingNewRecords: firstChildMeta.type === 'SimpleTableSelect' && isCreateNewReferenceEnabled ? true : undefined, + actions: firstChildMeta.type === 'SimpleTableSelect' && + isCreateNewReferenceEnabled && [ + { + action: 'ADD_CASE', + config: { + label: '@L Add', + caseType: contextClass, + inputFields: disableStartingFieldsForReference + ? {} + : { + [`.pyAddCaseContextPage.${pyID}`]: `@P .${pyID}` + } + } + } + ], + compositeKeys + }; +}; diff --git a/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts b/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts index 131c7191..913b08ad 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/default-form/default-form.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, forwardRef } from '@angular/core'; +import { Component, OnInit, Input, forwardRef, OnChanges } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormGroup } from '@angular/forms'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; @@ -30,7 +30,7 @@ interface DefaultFormProps { styleUrls: ['./default-form.component.scss'], imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) -export class DefaultFormComponent extends FormTemplateBase implements OnInit { +export class DefaultFormComponent extends FormTemplateBase implements OnInit, OnChanges { @Input() override pConn$: typeof PConnect; @Input() formGroup$: FormGroup; @@ -59,6 +59,14 @@ export class DefaultFormComponent extends FormTemplateBase implements OnInit { this.updateSelf(); } + ngOnChanges(changes) { + const { pConn$ } = changes; + + if (pConn$.previousValue && !PCore.isDeepEqual(pConn$.previousValue.getConfigProps(), pConn$.currentValue.getConfigProps())) { + this.updateSelf(); + } + } + updateSelf() { const configProps = this.pConn$.getConfigProps() as DefaultFormProps; const kids = this.pConn$.getChildren(); diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.html b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.html index 297540cd..e9df8e1d 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.html @@ -173,10 +173,15 @@

- - - +
{{ dCol.config.label }}
+ + + + +
+ {{ getValue(col) }} +
diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss index 3f590816..3742ef81 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss @@ -1,12 +1,12 @@ .psdk-list-header { + border: 1px solid var(--app-neutral-light-color); background-color: var(--app-form-color); - padding: 1rem; - margin: 0.5rem; - border-radius: 0.6125rem; + padding: 0.5rem 0rem; } table { width: 100%; + border-bottom: 1px solid var(--app-neutral-light-color); } ::ng-deep .mat-sort-header-content { @@ -176,3 +176,15 @@ tr.mat-mdc-row { .label { margin: 8px; } + +tr.mat-mdc-header-row { + background: var(--app-table-header-background-color); +} + +::ng-deep th.mat-mdc-header-cell, +td.mat-mdc-cell, +td.mat-mdc-footer-cell { + border-right: 1px solid var(--app-neutral-light-color); + padding: 8px !important; + // min-width: 10rem; +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts index 54c7c836..474bf4b4 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts @@ -42,6 +42,9 @@ interface ListViewProps { value: any; readonlyContextList: any; label?: string; + displayAs?: string; + showRecords: boolean; + viewName?: string; } export class Group { @@ -157,7 +160,11 @@ export class ListViewComponent implements OnInit, OnDestroy { fieldDefs: any; checkBoxValue: string; label?: string = ''; - + uniqueId = crypto.randomUUID(); + displayAs: any; + showRecords: any; + identifier: string; + promotedFiltersId: string; constructor( private psService: ProgressSpinnerService, public utils: Utils @@ -169,12 +176,13 @@ export class ListViewComponent implements OnInit, OnDestroy { const defRowID = this.configProps$?.referenceType === 'Case' ? 'pyID' : 'pyGUID'; /** If compositeKeys is defined, use dynamic value, else fallback to pyID or pyGUID. */ this.compositeKeys = this.configProps$?.compositeKeys; - this.rowID = this.compositeKeys && this.compositeKeys?.length === 1 ? this.compositeKeys[0] : defRowID; + this.rowID = this.payload?.compositeKeys?.length === 1 ? this.payload?.compositeKeys[0] : defRowID; this.bShowSearch$ = this.utils.getBooleanValue(this.configProps$?.globalSearch ? this.configProps$.globalSearch : this.payload?.globalSearch); this.bColumnReorder$ = this.utils.getBooleanValue(this.configProps$.reorderFields); this.bGrouping$ = this.utils.getBooleanValue(this.configProps$.grouping); this.showDynamicFields = this.configProps$?.showDynamicFields; - + this.displayAs = this.configProps$.displayAs; + this.showRecords = this.configProps$.showRecords; this.menuSvgIcon$ = this.utils.getImageSrc('more', this.utils.getSDKStaticContentUrl()); this.arrowDownSvgIcon$ = this.utils.getImageSrc('arrow-down', this.utils.getSDKStaticContentUrl()); this.arrowUpSvgIcon$ = this.utils.getImageSrc('arrow-up', this.utils.getSDKStaticContentUrl()); @@ -203,6 +211,7 @@ export class ListViewComponent implements OnInit, OnDestroy { this.label = title; this.searchIcon$ = this.utils.getImageSrc('search', this.utils.getSDKStaticContentUrl()); + this.promotedFiltersId = `promoted-filters-queryable-${this.uniqueId}`; setTimeout(() => { PCore.getPubSubUtils().subscribe( PCore.getConstants().PUB_SUB_EVENTS.EVENT_DASHBOARD_FILTER_CHANGE, @@ -223,6 +232,15 @@ export class ListViewComponent implements OnInit, OnDestroy { false, this.pConn$.getContextName() ); + PCore.getPubSubUtils().subscribe( + PCore.getEvents().getTransientEvent().UPDATE_PROMOTED_FILTERS, + data => { + this.showRecords = data.showRecords; + const filterData = this.prepareFilters(data); + this.processFilterChange(filterData); + }, + this.promotedFiltersId + ); }, 0); if (this.configProps$) { if (!this.payload) { @@ -242,6 +260,29 @@ export class ListViewComponent implements OnInit, OnDestroy { this.getListData(); }); } + this.clearSelectionsAndUpdateTable(this.pConn$, this.uniqueId, this.configProps$?.viewName); + } + + clearSelectionsAndUpdateTable(getPConnect: any, uniqueId: string, viewName): void { + const clearSelectionsAndRefreshList = ({ viewName: name, clearSelections }: any) => { + if (name === viewName) { + const { selectionMode } = getPConnect.getRawConfigProps(); + if (!selectionMode) { + return; + } + if (clearSelections) { + if (selectionMode === 'single') { + getPConnect.getListActions().setSelectedRows({}); + } else { + getPConnect.getListActions().clearSelectedRows(); + } + } + } + }; + + this.identifier = `clear-and-update-advanced-search-selections-${uniqueId}`; + + PCore.getPubSubUtils().subscribe('update-advanced-search-selections', clearSelectionsAndRefreshList, this.identifier); } getFieldFromFilter(filter, dateRange = false) { @@ -256,7 +297,11 @@ export class ListViewComponent implements OnInit, OnDestroy { // Will be triggered when EVENT_DASHBOARD_FILTER_CHANGE fires processFilterChange(data) { - const { filterId, filterExpression } = data; + let filterId; + let filterExpression; + let isDateRange; + let field; + const selectParam: any[] = []; let dashboardFilterPayload: any = { query: { filter: {}, @@ -264,24 +309,38 @@ export class ListViewComponent implements OnInit, OnDestroy { } }; - this.filters[filterId] = filterExpression; - let isDateRange = !!data.filterExpression?.AND; - // Will be AND by default but making it dynamic in case we support dynamic relational ops in future - const relationalOp = 'AND'; - - let field = this.getFieldFromFilter(filterExpression, isDateRange); - const selectParam: any[] = []; - // Constructing the select parameters list (will be sent in dashboardFilterPayload) - this.displayedColumns$?.forEach(col => { - selectParam.push({ - field: col + if (this.displayAs === 'advancedSearch') { + this.filters = {}; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + Object.entries(data).reduce((acc, [item, value]) => { + // eslint-disable-next-line @typescript-eslint/no-shadow + const { filterId, filterExpression } = value as any; + // filterExpression = value.filterExpression; + this.filters[filterId] = filterExpression; + return acc; // Ensure the accumulator is returned + }, {}); + } else { + ({ filterId, filterExpression } = data); + this.filters[filterId] = filterExpression; + isDateRange = !!data.filterExpression?.AND; + field = this.getFieldFromFilter(filterExpression, isDateRange); + + // Constructing the select parameters list (will be sent in dashboardFilterPayload) + this.displayedColumns$?.forEach(col => { + selectParam.push({ + field: col + }); }); - }); - // Checking if the triggered filter is applicable for this list - if (data.filterExpression !== null && !(this.displayedColumns$?.length && this.displayedColumns$?.includes(field))) { - return; + // Checking if the triggered filter is applicable for this list + if (data.filterExpression !== null && !(this.displayedColumns$?.length && this.displayedColumns$?.includes(field))) { + return; + } } + + // Will be AND by default but making it dynamic in case we support dynamic relational ops in future + const relationalOp = 'AND'; + // This is a flag which will be used to reset dashboardFilterPayload in case we don't find any valid filters let validFilter = false; @@ -315,9 +374,8 @@ export class ListViewComponent implements OnInit, OnDestroy { } else { dashboardFilterPayload.query.filter.filterConditions = { ...dashboardFilterPayload.query.filter.filterConditions, - [`T${index++}`]: { ...filter.condition, ignoreCase: true } + [`T${index++}`]: { ...filter.condition, ...(filter.condition.comparator === 'CONTAINS' ? { ignoreCase: true } : {}) } }; - if (dashboardFilterPayload.query.filter.logic) { dashboardFilterPayload.query.filter.logic = `${dashboardFilterPayload.query.filter.logic} ${relationalOp} T${index - 1}`; } else { @@ -366,10 +424,22 @@ export class ListViewComponent implements OnInit, OnDestroy { return PCore.getAnalyticsUtils().getDataViewMetadata(refList, this.showDynamicFields); } + getValue(col) { + return this.fieldDefs.find(f => f.name === col)?.label; + } + getListData() { + this.preparePayload(); const componentConfig = this.pConn$.getComponentConfig(); - if (this.configProps$) { - this.preparePayload(); + const columnFields = componentConfig.presets[0].children[0].children; + const columns = this.getHeaderCells(columnFields, this.fieldDefs); + this.fields$ = this.configProps$.presets[0].children[0].children; + this.displayedColumns$ = columns.map(col => { + return col.id; + }); + if (this.displayAs === 'advancedSearch' && !this.showRecords) { + Promise.resolve({ data: null }); + } else if (this.configProps$) { const refList = this.configProps$.referenceList; const fieldsMetaDataPromise = this.getFieldsMetadata(refList); // returns a promise @@ -395,17 +465,9 @@ export class ListViewComponent implements OnInit, OnDestroy { const fieldsMetaData = results[0]; const workListData = results[1]; - this.fields$ = this.configProps$.presets[0].children[0].children; - // this is an unresovled version of this.fields$, need unresolved, so can get the property reference - const columnFields = componentConfig.presets[0].children[0].children; - const tableDataResults = !this.bInForm$ ? workListData.data.data : workListData.data; - const columns = this.getHeaderCells(columnFields, this.fieldDefs); this.fields$ = this.updateFields(this.fields$, fieldsMetaData.data.fields, columns); - this.displayedColumns$ = columns.map(col => { - return col.id; - }); this.response = tableDataResults; this.updatedRefList = this.updateData(tableDataResults, this.fields$); if (this.selectionMode === SELECTION_MODE.SINGLE && this.updatedRefList?.length > 0) { @@ -433,6 +495,33 @@ export class ListViewComponent implements OnInit, OnDestroy { } } + prepareFilters(data) { + return Object.entries(data.payload).reduce((acc, [field, value]) => { + if (value) { + let comparator = 'EQ'; + const filterRecord = this.listContext.meta.fieldDefs.filter(item => item.id === field); + if (filterRecord?.[0]?.meta.type === 'TextInput') { + comparator = 'CONTAINS'; + } + acc[field] = { + filterExpression: { + condition: { + lhs: { + field + }, + comparator, + rhs: { + value + } + } + }, + filterId: field + }; + } + return acc; + }, {}); + } + preparePayload() { const { fieldDefs, itemKey, patchQueryFields } = this.listContext.meta; this.fieldDefs = fieldDefs; @@ -474,6 +563,8 @@ export class ListViewComponent implements OnInit, OnDestroy { `dashboard-component-${'id'}`, this.pConn$.getContextName() ); + PCore.getPubSubUtils().unsubscribe('update-advanced-search-selections', this.identifier); + PCore.getPubSubUtils().unsubscribe(PCore.getEvents().getTransientEvent().UPDATE_PROMOTED_FILTERS, this.promotedFiltersId); } // ngAfterViewInit() { diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts index 8402e23e..cdc3ba48 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts @@ -550,6 +550,27 @@ function populateRenderingOptions(name, config, field) { config.cellRenderer = formatConstants.Integer; } } +function isFLProperty(label) { + return label?.startsWith('@FL'); +} + +function getFieldLabel(fieldConfig) { + const { label, classID, caption } = fieldConfig; + let fieldLabel = (label ?? caption)?.substring(4); + const labelSplit = fieldLabel?.split('.'); + const propertyName = labelSplit?.pop(); + const fieldMetaData: any = PCore.getMetadataUtils().getPropertyMetadata(propertyName, classID) ?? {}; + fieldLabel = fieldMetaData.label ?? fieldMetaData.caption ?? propertyName; + + const definedOnClassID = fieldMetaData.definedOnClassID; + const localeValue = PCore.getLocaleUtils().getLocaleValue( + fieldLabel, + `${definedOnClassID ?? fieldMetaData.classID ?? classID}.${propertyName}`, + PCore.getLocaleUtils().FIELD_LABELS_BUNDLE_KEY, + null + ); + return localeValue || fieldLabel; +} export function initializeColumns(fields: any[] = [], getMappedProperty: any = null) { return fields.map((field, originalColIndex) => { let name = field.config.value; @@ -562,7 +583,9 @@ export function initializeColumns(fields: any[] = [], getMappedProperty: any = n let label = field.config.label || field.config.caption; const { show = true, displayAs } = field.config; - if (label.startsWith('@')) { + if (isFLProperty(label)) { + label = getFieldLabel(field.config); + } else if (label.startsWith('@')) { label = label.substring(3); } diff --git a/packages/angular-sdk-components/src/lib/_helpers/tab-utils.ts b/packages/angular-sdk-components/src/lib/_helpers/tab-utils.ts index 8dda688b..4c7679bc 100644 --- a/packages/angular-sdk-components/src/lib/_helpers/tab-utils.ts +++ b/packages/angular-sdk-components/src/lib/_helpers/tab-utils.ts @@ -5,6 +5,24 @@ export const getDeferFriendlyTabs = allTabs => { }); }; +export const searchtabsClick = (id, mainTabs, currentTabId) => { + const currentTab = mainTabs.find(item => item.id === currentTabId && item.visibility()); + const currentPConn = currentTab?.getPConnect(); + const { deferLoadId } = currentPConn?.getConfigProps() ?? {}; + PCore.getDeferLoadManager().deactivate(deferLoadId, currentPConn.getContextName()); + + // setCurrentTabId(id); + const nextActiveTab = mainTabs.find(item => item.id === id && item.visibility()); + if (mainTabs && nextActiveTab?.content === null) { + nextActiveTab.content = nextActiveTab.getPConnect().getComponent(); + } + + const nextPConn = nextActiveTab.getPConnect(); + const { deferLoadId: activeId } = nextPConn.getConfigProps(); + PCore.getDeferLoadManager().activate(activeId, nextPConn.getContextName()); + PCore.getDeferLoadManager().refreshComponent(activeId, nextPConn.getContextName()); +}; + export const getVisibleTabs = (allTabs, uuid) => { let index = 0; return allTabs @@ -65,3 +83,96 @@ export const tabClick = (id, availableTabs, currentTabId, tabItems) => { PCore.getDeferLoadManager().activate(activeId, nextPConn?.getContextName()); PCore.getDeferLoadManager().refreshComponent(activeId, nextPConn?.getContextName()); }; + +export const getTabLabel = tabPConnect => { + const config = tabPConnect.getConfigProps(); + + const label = config.inheritedProps?.find(obj => obj.prop === 'label')?.value; + + if (label) { + return label; + } + if (config.label) { + return config.label; + } + + if (tabPConnect.getReferencedView()?.config?.label) { + return tabPConnect.getReferencedView()?.config?.label; + } + + return PCore.getLocaleUtils().getLocaleValue('No label specified in config', 'Generic'); +}; + +export const getActiveTabId = (mainTabs, currentTabId) => { + let firstVisibleTabId = null; + let updatedActiveId = currentTabId; + let isCurrentTabFound = false; + + if (!mainTabs?.length) { + return updatedActiveId; + } + + for (let i = 0; i < mainTabs.length; i += 1) { + const tab = mainTabs[i]; + const tabConfig = tab.getPConnect().getConfigProps(); + const tabId = tab?.id || `${tab.getPConnect().viewName}-${tabConfig.name || getTabLabel(tab.getPConnect())}-${i}`; + const isTabVisible = !Object.hasOwn(tabConfig, 'visibility') || tabConfig.visibility === true; + if (isTabVisible && !firstVisibleTabId) { + firstVisibleTabId = tabId; + if (isCurrentTabFound) { + updatedActiveId = firstVisibleTabId; + break; + } + } + if (tabId === currentTabId) { + isCurrentTabFound = true; + if (isTabVisible) { + break; + } else if (firstVisibleTabId) { + updatedActiveId = firstVisibleTabId; + break; + } + } + } + return updatedActiveId; +}; + +export const getFirstVisibleTabId = (deferLoadedTabs, tabViewName) => { + let tabIndex = 0; + + const viewName = deferLoadedTabs?.getPConnect()?.options?.viewName; + + const deferTabsChildren = deferLoadedTabs.getPConnect().getChildren(); + if (tabViewName) { + const firstVisibleTab = deferTabsChildren?.find((item, index) => { + const tabConfig = item.getPConnect().getConfigProps(); + if (tabViewName === tabConfig.name) { + tabIndex = index; + return true; + } + return false; + }); + const tabConfig = firstVisibleTab.getPConnect().getConfigProps(); + + return `${viewName}-${tabConfig.name || getTabLabel(firstVisibleTab.getPConnect())}-${tabIndex}`; + } + + const firstVisibleTab = deferLoadedTabs + .getPConnect() + .getChildren() + ?.find((item, index) => { + const tabConfig = item.getPConnect().getConfigProps(); + if (!('visibility' in tabConfig) || tabConfig.visibility === true) { + tabIndex = index; + return true; + } + return false; + }); + + if (!firstVisibleTab) { + return null; + } + + const tabConfig = firstVisibleTab.getPConnect().getConfigProps(); + return `${viewName}-${tabConfig.name || getTabLabel(firstVisibleTab.getPConnect())}-${tabIndex}`; +}; From b597b81328914527c95d76171abe56a32bb87ab9 Mon Sep 17 00:00:00 2001 From: 4manasa Date: Mon, 6 Oct 2025 12:03:07 +0530 Subject: [PATCH 09/91] Fixed the failed playwright tests (#330) Co-authored-by: manasa --- .../auto-complete/auto-complete.component.html | 1 - .../auto-complete/auto-complete.component.ts | 13 ++++--------- .../_components/field/email/email.component.ts | 2 -- .../template/simple-table-manual/helpers.ts | 2 +- .../DigV2/ComplexFields/EmbeddedData.spec.js | 18 +++++++++--------- .../tests/e2e/DigV2/FormFields/Email.spec.js | 2 +- .../tests/e2e/DigV2/FormFields/Phone.spec.js | 18 +++++++++--------- .../tests/e2e/DigV2/FormFields/URL.spec.js | 2 +- .../DigV2/ViewTemplates/Confirmation.spec.js | 2 +- .../tests/e2e/MediaCo/embedded.spec.js | 2 +- .../tests/e2e/MediaCo/portal.spec.js | 2 +- 11 files changed, 28 insertions(+), 36 deletions(-) diff --git a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.html b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.html index c703cac0..73858a15 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.html +++ b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.html @@ -14,7 +14,6 @@ [required]="bRequired$" [matAutocomplete]="auto" (input)="fieldOnChange($event)" - (blur)="fieldOnBlur($event)" /> diff --git a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts index c8560062..db9799e3 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts @@ -322,21 +322,16 @@ export class AutoCompleteComponent implements OnInit, OnDestroy { } optionChanged(event: any) { - const value = event?.option?.value; - handleEvent(this.actionsApi, 'change', this.propName, value); - } + const val = event?.option?.value; - fieldOnBlur(event: Event) { let key = ''; - const el = event?.target as HTMLInputElement; - if (el?.value) { - const index = this.options$?.findIndex(element => element.value === el.value); - key = index > -1 ? (key = this.options$[index].key) : el.value; + if (val) { + const index = this.options$?.findIndex(element => element.value === val); + key = index > -1 ? (key = this.options$[index].key) : val; } const value = key; handleEvent(this.actionsApi, 'changeNblur', this.propName, value); if (this.configProps$?.onRecordChange) { - el.value = value; this.configProps$.onRecordChange(event); } } diff --git a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts index d31dd644..c6400d76 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts @@ -162,8 +162,6 @@ export class EmailComponent implements OnInit, OnDestroy { const isValueChanged = event.target.value.toString() !== oldVal.toString(); if (isValueChanged) { - const value = event?.target?.value; - handleEvent(this.actionsApi, 'changeNblur', this.propName, value); this.pConn$.clearErrorMessages({ property: this.propName }); diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts index 07d1bcd8..c81e0b90 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts @@ -238,7 +238,7 @@ export const buildFieldsForTable = (configFields, pConnect, showDeleteButton, op // get resolved field labels for primary fields raw config included in configFields const fieldsLabels = updateFieldLabels(fields, configFields, primaryFieldsViewIndex, pConnect, { - columnsRawConfig: pConnect.getRawConfigProps()?.children.find(item => item?.name === 'Columns')?.children + columnsRawConfig: pConnect.getRawConfigProps()?.children?.find(item => item?.name === 'Columns')?.children }); const fieldDefs = configFields?.map((field, index) => { diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js index b7d927c1..f3681ca9 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js @@ -68,7 +68,7 @@ test.describe('E2E test', () => { await page.locator('input[data-test-id="202003240938510831291"]').fill('Cambridge'); await page.locator('input[data-test-id="202003240938510831411"]').fill('MA'); await page.locator('input[data-test-id="202003240938510832734"]').fill('02142'); - let phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); + let phone = page.locator('mat-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); let countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); @@ -81,7 +81,7 @@ test.describe('E2E test', () => { await page.locator('input[data-test-id="202003240938510831291"] >> nth=1').fill('California'); await page.locator('input[data-test-id="202003240938510831411"] >> nth=1').fill('AK'); await page.locator('input[data-test-id="202003240938510832734"] >> nth=1').fill('03142'); - phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"] >> nth=1'); + phone = page.locator('mat-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"] >> nth=1'); countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); @@ -129,12 +129,12 @@ test.describe('E2E test', () => { await expect(addRecordTitle).toBeVisible(); /** Adding record to the Table in Modal */ - await modal.locator('input[data-test-id="202003240938510823869"]').type('Main St'); - await modal.locator('input[data-test-id="202003240938510831291"]').type('Cambridge'); - await modal.locator('input[data-test-id="202003240938510831411"]').type('MA'); - await modal.locator('input[data-test-id="202003240938510832734"]').type('02142'); + await modal.locator('input[data-test-id="202003240938510823869"]').fill('Main St'); + await modal.locator('input[data-test-id="202003240938510831291"]').fill('Cambridge'); + await modal.locator('input[data-test-id="202003240938510831411"]').fill('MA'); + await modal.locator('input[data-test-id="202003240938510832734"]').fill('02142'); - phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); + phone = page.locator('mat-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); @@ -225,7 +225,7 @@ test.describe('E2E test', () => { await page.locator('input[data-test-id="202003240938510831411"]').fill('MA'); await page.locator('input[data-test-id="202003240938510832734"]').fill('02142'); - phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); + phone = page.locator('mat-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"]'); countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); @@ -239,7 +239,7 @@ test.describe('E2E test', () => { await page.locator('input[data-test-id="202003240938510831411"] >> nth=1').fill('AK'); await page.locator('input[data-test-id="202003240938510832734"] >> nth=1').fill('03142'); - phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"] >> nth=1'); + phone = page.locator('mat-tel-input[data-test-id="1f8261d17452a959e013666c5df45e07"] >> nth=1'); countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js index 75abeca6..0a3a70dd 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js @@ -99,7 +99,7 @@ test.describe('E2E test', () => { const editableEmail = page.locator('input[data-test-id="c75f8a926bb5e08fd8342f7fe45dc344"]'); await editableEmail.fill('Johndoe.com'); await editableEmail.blur(); - const validMsg = "Invalid value specified for EmailEditable. Value doesn\\'t adhere to the Validate: ValidEmailAddress"; + const validMsg = 'Enter a valid email address'; await expect(page.locator(`mat-error:has-text("${validMsg}")`)).toBeVisible(); editableEmail.fill('John@doe.com'); await editableEmail.blur(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js index 850c06b4..734ceea3 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js @@ -56,11 +56,11 @@ test.describe('E2E test', () => { // attributes = await common.getAttributes(notrequiredPhone); // await expect(attributes.includes('required')).toBeFalsy(); - await page.locator('ngx-mat-intl-tel-input[data-test-id="af983eaa1b85b015a7654702abd0b249"] >> input').click(); + await page.locator('mat-tel-input[data-test-id="af983eaa1b85b015a7654702abd0b249"] >> input').click(); await page.locator('button:has-text("submit")').click(); await expect(page.locator('mat-error')).toBeVisible(); - const requiredPhone = page.locator('ngx-mat-intl-tel-input[data-test-id="af983eaa1b85b015a7654702abd0b249"] >> input'); + const requiredPhone = page.locator('mat-tel-input[data-test-id="af983eaa1b85b015a7654702abd0b249"] >> input'); await requiredPhone.fill('6175551212'); requiredPhone.blur(); await expect(page.locator('mat-error')).toBeHidden(); @@ -71,11 +71,11 @@ test.describe('E2E test', () => { await page.getByRole('option', { name: 'Disable' }).click(); // /** Disable tests */ - const alwaysDisabledPhone = page.locator('ngx-mat-intl-tel-input[data-test-id="d415da67e9764d6e7cdf3d993cb54f51"] >> input'); + const alwaysDisabledPhone = page.locator('mat-tel-input[data-test-id="d415da67e9764d6e7cdf3d993cb54f51"] >> input'); attributes = await common.getAttributes(alwaysDisabledPhone); await expect(attributes.includes('disabled')).toBeTruthy(); - const conditionallyDisabledPhone = page.locator('ngx-mat-intl-tel-input[data-test-id="b6cee3728235ed1f6cef7b11ac850ea9"] >> input'); + const conditionallyDisabledPhone = page.locator('mat-tel-input[data-test-id="b6cee3728235ed1f6cef7b11ac850ea9"] >> input'); attributes = await common.getAttributes(conditionallyDisabledPhone); if (isDisabled) { await expect(attributes.includes('disabled')).toBeTruthy(); @@ -83,7 +83,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); } - const neverDisabledPhone = page.locator('ngx-mat-intl-tel-input[data-test-id="b23e38f877c8a40f18507b39893a8d61"] >> input'); + const neverDisabledPhone = page.locator('mat-tel-input[data-test-id="b23e38f877c8a40f18507b39893a8d61"] >> input'); attributes = await common.getAttributes(neverDisabledPhone); await expect(attributes.includes('disabled')).toBeFalsy(); @@ -99,7 +99,7 @@ test.describe('E2E test', () => { // attributes = await common.getAttributes(readonlyPhone); // await expect(attributes.includes('readonly')).toBeTruthy(); - const editablePhone = page.locator('ngx-mat-intl-tel-input[data-test-id="591e127300787ad31c414b7159469b9e"]'); + const editablePhone = page.locator('mat-tel-input[data-test-id="591e127300787ad31c414b7159469b9e"]'); const countrySelector = editablePhone.locator('button'); await countrySelector.click(); await page.locator('text=United States >> nth=0').click(); @@ -108,7 +108,7 @@ test.describe('E2E test', () => { await editablePhoneInput.fill('6175551212'); /** Validation tests */ - const validationMsg = 'Invalid Phone'; + const validationMsg = 'Enter a valid phone number'; await editablePhoneInput.clear(); await countrySelector.click(); await page.locator('text=United States >> nth=0').click(); @@ -138,12 +138,12 @@ test.describe('E2E test', () => { await page.getByRole('option', { name: 'Visibility' }).click(); /** Visibility tests */ - await expect(page.locator('ngx-mat-intl-tel-input[data-test-id="6637b718c18a1fd292d28b6abaa68d50"] >> input')).toBeVisible(); + await expect(page.locator('mat-tel-input[data-test-id="6637b718c18a1fd292d28b6abaa68d50"] >> input')).toBeVisible(); const neverVisiblePhone = await page.locator('div[data-test-id="f425267235530e772d7daa0a0881c822"] >> input'); await expect(neverVisiblePhone).not.toBeVisible(); - const conditionallyVisiblePhone = await page.locator('ngx-mat-intl-tel-input[data-test-id="ad9995a1b5001e6d153d363465371528"] >> input'); + const conditionallyVisiblePhone = await page.locator('mat-tel-input[data-test-id="ad9995a1b5001e6d153d363465371528"] >> input'); if (isVisible) { await expect(conditionallyVisiblePhone).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js index 1fb555ed..9c9e9c02 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js @@ -90,7 +90,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Validation tests */ - const validationMsg = 'Please enter a valid URL including the protocol (http://, https://, ftp://, etc.)'; + const validationMsg = 'Enter a valid url'; await EditableURL.fill('InvalidUrl'); await EditableURL.blur(); await expect(page.locator(`mat-error:has-text("${validationMsg}")`)).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js index 368c3962..bd409659 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js @@ -49,7 +49,7 @@ test.describe('E2E test', () => { await cityInput.click(); await cityInput.fill('Cambridge'); - const phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); + const phone = page.locator('mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); const countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); diff --git a/projects/angular-test-app/tests/e2e/MediaCo/embedded.spec.js b/projects/angular-test-app/tests/e2e/MediaCo/embedded.spec.js index 57082dc0..2b5b62eb 100644 --- a/projects/angular-test-app/tests/e2e/MediaCo/embedded.spec.js +++ b/projects/angular-test-app/tests/e2e/MediaCo/embedded.spec.js @@ -58,7 +58,7 @@ test.describe('E2E test', () => { await postalCodeInput.click(); await postalCodeInput.fill('02142'); - const phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); + const phone = page.locator('mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); const countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); diff --git a/projects/angular-test-app/tests/e2e/MediaCo/portal.spec.js b/projects/angular-test-app/tests/e2e/MediaCo/portal.spec.js index 73780113..869eebf8 100644 --- a/projects/angular-test-app/tests/e2e/MediaCo/portal.spec.js +++ b/projects/angular-test-app/tests/e2e/MediaCo/portal.spec.js @@ -73,7 +73,7 @@ test.describe('E2E test', () => { await postalCodeInput.click(); await postalCodeInput.fill('02142'); - const phone = page.locator('ngx-mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); + const phone = page.locator('mat-intl-tel-input[data-test-id="1F8261D17452A959E013666C5DF45E07"]'); const countrySelector = phone.locator('button.country-selector'); await countrySelector.click(); await page.locator('div.flag.US >> nth=0').click(); From b4f99372e917e3d8a3371289679ae4d715668cdc Mon Sep 17 00:00:00 2001 From: tammy-a11y Date: Mon, 6 Oct 2025 16:11:44 +0530 Subject: [PATCH 10/91] Added automation for location component and tests code refactor SDK-A (#328) Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- projects/angular-test-app/tests/common.js | 36 ++++- .../DigV2/ComplexFields/CaseReference.spec.js | 37 +---- .../e2e/DigV2/ComplexFields/CaseView.spec.js | 30 +--- .../DigV2/ComplexFields/DataReference.spec.js | 55 ++----- .../DigV2/ComplexFields/EmbeddedData.spec.js | 36 +---- .../DigV2/ComplexFields/ManyToMany.spec.js | 14 +- .../e2e/DigV2/ComplexFields/Query.spec.js | 24 +-- .../e2e/DigV2/ComplexFields/RichText.spec.js | 14 +- .../DigV2/ComplexFields/UserReference.spec.js | 24 +-- .../e2e/DigV2/FormFields/Boolean.spec.js | 35 +--- .../e2e/DigV2/FormFields/Currency.spec.js | 35 +--- .../tests/e2e/DigV2/FormFields/Date.spec.js | 35 +--- .../e2e/DigV2/FormFields/DateTime.spec.js | 35 +--- .../e2e/DigV2/FormFields/Decimal.spec.js | 35 +--- .../tests/e2e/DigV2/FormFields/Email.spec.js | 35 +--- .../e2e/DigV2/FormFields/FieldGroup.spec.js | 31 +--- .../e2e/DigV2/FormFields/Integer.spec.js | 35 +--- .../e2e/DigV2/FormFields/Location.spec.js | 151 ++++++++++++++++++ .../DigV2/FormFields/OptionalAction.spec.js | 20 +-- .../e2e/DigV2/FormFields/Percentage.spec.js | 36 +---- .../tests/e2e/DigV2/FormFields/Phone.spec.js | 37 +---- .../e2e/DigV2/FormFields/Picklist.spec.js | 30 +--- .../e2e/DigV2/FormFields/RichText.spec.js | 35 +--- .../e2e/DigV2/FormFields/TextArea.spec.js | 35 +--- .../e2e/DigV2/FormFields/TextInput.spec.js | 35 +--- .../tests/e2e/DigV2/FormFields/Time.spec.js | 35 +--- .../tests/e2e/DigV2/FormFields/URL.spec.js | 32 +--- .../e2e/DigV2/FormFields/attachment.spec.js | 33 +--- .../LandingPages/InlineDashboard.spec.js | 23 +-- .../DigV2/LandingPages/LandingPages.spec.js | 36 +---- .../e2e/DigV2/Process/ApproveReject.spec.js | 16 +- .../SelfService/SelfServicePortal.spec.js | 6 +- .../DigV2/ViewTemplates/Confirmation.spec.js | 20 +-- .../DigV2/ViewTemplates/DynamicTabs.spec.js | 19 +-- 34 files changed, 362 insertions(+), 783 deletions(-) create mode 100644 projects/angular-test-app/tests/e2e/DigV2/FormFields/Location.spec.js diff --git a/projects/angular-test-app/tests/common.js b/projects/angular-test-app/tests/common.js index 87104665..fd775b15 100644 --- a/projects/angular-test-app/tests/common.js +++ b/projects/angular-test-app/tests/common.js @@ -1,5 +1,13 @@ +const { expect } = require('@playwright/test'); const { config } = require('./config'); +const createCase = async (caseTypeName, page) => { + const createCase = page.locator('mat-list-item[id="create-case-button"]'); + await createCase.click(); + const caseType = page.locator(`mat-list-item[id="case-list-item"] > span:has-text("${caseTypeName}")`); + await caseType.click(); +}; + const launchPortal = async ({ page }) => { await page.setViewportSize({ width: 1720, height: 1080 }); await page.goto(`${config.baseUrl}`, { waitUntil: 'networkidle' }); @@ -45,12 +53,38 @@ const getFutureDate = () => { return getFormattedDate(futureDate); }; +const selectCategory = async (category, page, exact = false) => { + const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); + await selectedCategory.click(); + await page.getByRole('option', { name: category, exact }).click(); +}; + +const selectSubCategory = async (subCategory, page, exact = false) => { + const selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); + await selectedSubCategory.click(); + await page.getByRole('option', { name: subCategory, exact }).click(); +}; + +const verifyHomePage = async page => { + /** Testing announcement banner presence */ + const announcementBanner = page.locator('h2:has-text("Announcements")'); + await expect(announcementBanner).toBeVisible(); + + /** Testing worklist presence */ + const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); + await expect(worklist).toBeVisible(); +}; + module.exports = { + createCase, launchPortal, launchEmbedded, launchSelfServicePortal, login, getAttributes, getFutureDate, - getFormattedDate + getFormattedDate, + selectCategory, + selectSubCategory, + verifyHomePage }; diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseReference.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseReference.spec.js index 1b54df64..9230e3e5 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseReference.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseReference.spec.js @@ -11,24 +11,10 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Case Reference', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Hovering over navbar */ - const navbar = page.locator('app-navbar'); - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); + await common.verifyHomePage(page); // /** Creating a Query case-type which will be referred by Complex Fields case type */ - let createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - let queryCase = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Query")'); - await queryCase.click(); + await common.createCase('Query', page); let modal = page.locator('div[id="dialog"]'); await modal.waitFor({ state: 'visible' }); @@ -46,12 +32,7 @@ test.describe('E2E test', () => { caseID.push(await page.locator('div[id="caseId"]').textContent()); /** Creating another Query case-type which will be used for ListOfRecords mode */ - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); - createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - queryCase = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Query")'); - await queryCase.click(); + await common.createCase('Query', page); modal = page.locator('div[id="dialog"]'); await modal.waitFor({ state: 'visible' }); @@ -64,18 +45,10 @@ test.describe('E2E test', () => { /** Creating a Complex Fields case-type */ /** opening all case types */ - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); - createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCaseBtn = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCaseBtn.click(); + await common.createCase('Complex Fields', page); /** Selecting CaseReference from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("CaseReference")').click(); + await common.selectCategory('CaseReference', page); await page.locator('button:has-text("submit")').click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseView.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseView.spec.js index 57dd5a1e..77bd2867 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseView.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/CaseView.spec.js @@ -17,21 +17,9 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Case View', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); + await common.verifyHomePage(page); - /** Creating a Complex Fields case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCase.click(); + await common.createCase('Complex Fields', page); /** Wait until newly created case loads */ await expect(page.locator('div[id="case-view"]')).toBeVisible(); @@ -57,20 +45,10 @@ test.describe('E2E test', () => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCase.click(); + await common.createCase('Complex Fields', page); /** Wait until newly created case loads */ await expect(page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/DataReference.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/DataReference.spec.js index 56bb0702..0c08c927 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/DataReference.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/DataReference.spec.js @@ -12,35 +12,20 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Data Reference', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCase.click(); + await common.createCase('Complex Fields', page); /** Selecting Data Reference from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option >> span').getByText('DataReference', { exact: true }).click(); + await common.selectCategory('DataReference', page, true); await page.locator('button:has-text("submit")').click(); /** Display subcategory tests */ /** Autocomplete display type test */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Display' }).click(); + await common.selectSubCategory('Display', page); let selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -65,9 +50,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** Dropdown display type tests */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Display' }).click(); + await common.selectSubCategory('Display', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -94,9 +77,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** Table display type tests */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Display' }).click(); + await common.selectSubCategory('Display', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -124,9 +105,7 @@ test.describe('E2E test', () => { /** Options subcategory tests */ /** SingleRecord options type test */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Options' }).click(); + await common.selectSubCategory('Options', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -153,9 +132,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** ListOfRecords options type test */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Options' }).click(); + await common.selectSubCategory('Options', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -182,9 +159,7 @@ test.describe('E2E test', () => { /** Mode subcategory tests */ /** SingleSelect mode type test */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Mode' }).click(); + await common.selectSubCategory('Mode', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -212,9 +187,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** MultiSelect mode type test */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Mode' }).click(); + await common.selectSubCategory('Mode', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -273,9 +246,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** Readonly mode type test */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Mode' }).click(); + await common.selectSubCategory('Mode', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); @@ -300,9 +271,7 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Previous")').click(); /** Testing Sorting(both ascending and descending) */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Options' }).click(); + await common.selectSubCategory('Options', page); selectedTestName = page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); await selectedTestName.click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js index f3681ca9..f9fa8606 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/EmbeddedData.spec.js @@ -11,30 +11,12 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Embedded Data', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Hovering over navbar */ - const navbar = page.locator('app-navbar'); - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); - - /** opening all case types */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCaseBtn = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCaseBtn.click(); + await common.createCase('Complex Fields', page); /** Selecting Embedded Data from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("EmbeddedData")').click(); + await common.selectCategory('EmbeddedData', page); await page.locator('button:has-text("submit")').click(); @@ -44,9 +26,7 @@ test.describe('E2E test', () => { await page.locator('mat-option > span:has-text("ListOfRecords")').click(); /** Table subcategory tests */ - let selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.locator('mat-option > span:has-text("Table")').click(); + await common.selectSubCategory('Table', page); /** Editable mode type tests */ let selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); @@ -210,9 +190,7 @@ test.describe('E2E test', () => { /** FieldGroup subcategory tests */ - selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.locator('mat-option > span:has-text("FieldGroup")').click(); + await common.selectSubCategory('FieldGroup', page); /** Editable mode type tests */ selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); @@ -289,9 +267,7 @@ test.describe('E2E test', () => { await selectedOption.click(); await page.locator('mat-option > span:has-text("ListOfRecords")').click(); - selectedSubCategory = await page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.locator('mat-option > span:has-text("Table")').click(); + await common.selectSubCategory('Table', page); /** Editable mode type tests */ selectedEditMode = await page.locator('mat-select[data-test-id="6f64b45d01d11d8efd1693dfcb63b735"]'); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/ManyToMany.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/ManyToMany.spec.js index 9ed085bd..04f05100 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/ManyToMany.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/ManyToMany.spec.js @@ -12,20 +12,10 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Many to Many', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Creating a Many to Many case-type */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - const manyToManyCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Many to Many")'); - await manyToManyCase.click(); + await common.createCase('Many to Many', page); const ID = '1234'; const orderID = await page.locator('input[data-test-id="8f2a855dda1f657670e39f50eab1c10e"]'); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/Query.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/Query.spec.js index 36f60ad0..df380a75 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/Query.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/Query.spec.js @@ -11,30 +11,12 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Query', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Hovering over navbar */ - const navbar = page.locator('app-navbar'); - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); - - /** opening all case types */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCaseBtn = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCaseBtn.click(); + await common.createCase('Complex Fields', page); /** Selecting Query from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("Query")').click(); + await common.selectCategory('Query', page); await page.locator('button:has-text("submit")').click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/RichText.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/RichText.spec.js index 3c97aa26..db1efa6b 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/RichText.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/RichText.spec.js @@ -12,20 +12,10 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for RichText', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Creating a RichText Editor case-type */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - const richTextCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("RichText Editor")'); - await richTextCase.click(); + await common.createCase('RichText Editor', page); const instructionText = page.locator('div[id="instruction-text"]'); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/UserReference.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/UserReference.spec.js index a61908bd..e5d10927 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/UserReference.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ComplexFields/UserReference.spec.js @@ -11,30 +11,12 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for User Reference', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Hovering over navbar */ - const navbar = page.locator('app-navbar'); - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); - - /** opening all case types */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCaseBtn = await page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCaseBtn.click(); + await common.createCase('Complex Fields', page); /** Selecting User Reference from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("UserReference")').click(); + await common.selectCategory('UserReference', page); await page.locator('button:has-text("submit")').click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Boolean.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Boolean.spec.js index 5362e239..f504ba57 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Boolean.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Boolean.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Boolean tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Boolean from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Boolean' }).click(); + await common.selectCategory('Boolean', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); // Checking required boolean field const requiredBooleanLabel = page.locator('mat-checkbox[data-test-id="325f4eb20dc7c90a4fb697cd6c6bf0ea"]'); @@ -59,9 +44,7 @@ test.describe('E2E test', () => { await expect(page.locator('p.Mui-error.Mui-required')).toBeHidden(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // Disable tests const alwaysDisabledBoolean = page.locator('mat-checkbox[data-test-id="2f75cd75149315abb9d17aedfe1e129f"] input'); @@ -81,9 +64,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // readonly boolean field @@ -100,9 +81,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ const alwaysVisibleBoolean = page.locator('mat-checkbox[data-test-id="9a31d647526143ebb08c22a58836510d"] input'); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Currency.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Currency.spec.js index c9e20b9c..a5da0625 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Currency.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Currency.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Currency tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Currency from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Currency' }).click(); + await common.selectCategory('Currency', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ const notRequiredCurrency = page.locator('input[data-test-id="cab671a0ad307780a2de423a3d19924e"]'); @@ -54,9 +39,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeTruthy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledCurrency = page.locator('input[data-test-id="0d14f3717305e0238966749e6a853dad"]'); @@ -76,9 +59,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ const readonlyCurrency = page.locator('input[data-test-id="32bc05c9bac42b8d76ea72511afa89d0"]'); @@ -99,9 +80,7 @@ test.describe('E2E test', () => { await expect(await currencyAsDecimal.inputValue()).toBe('$20.00'); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="756f918704ee7dcd859928f068d02633"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Date.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Date.spec.js index 236697ea..b57c84f6 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Date.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Date.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Date tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Date from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option >> span').getByText('Date', { exact: true }).click(); + await common.selectCategory('Date', page, true); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -67,9 +52,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledDate = page.locator('input[data-test-id="058f04d806163a3ea0ad42d63a44bff8"]'); @@ -92,9 +75,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyDate = page.locator('input[data-test-id="ffde26c63aa11b0de746587bc02779ee"]'); @@ -109,9 +90,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="8d1ca7132d5ebd69ccc69b850cf0e114"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/DateTime.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/DateTime.spec.js index 449aebbb..5c5f873d 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/DateTime.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/DateTime.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the DateTime tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Date from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option >> span').getByText('DateTime', { exact: true }).click(); + await common.selectCategory('DateTime', page, true); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -72,9 +57,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledDateTime = page.locator('input[data-test-id="94d0498d6fd5a5aa2db1145100810fc3"]'); @@ -94,9 +77,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ const editableDateTime = page.locator('input[data-test-id="4e5110fbcaf65441b3e4c763907b5eb8"]'); @@ -106,9 +87,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="f7bace3922d6b19942bcb05f4bbe34ff"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Decimal.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Decimal.spec.js index 6ff5fdcb..e82fd244 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Decimal.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Decimal.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Decimal tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Decimal from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Decimal' }).click(); + await common.selectCategory('Decimal', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -64,9 +49,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledDecimal = page.locator('input[data-test-id="a8216a966548578ad7e015a05ae518f5"]'); @@ -86,9 +69,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyDecimal = page.locator( @@ -109,9 +90,7 @@ test.describe('E2E test', () => { await expect(await decimalAsCurrency.inputValue()).toBe('$20.00'); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="847e3fd45a1aca1c3242d2735124eb9a"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js index 0a3a70dd..ac114037 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Email.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Email tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Email from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Email' }).click(); + await common.selectCategory('Email', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -63,9 +48,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledEmail = page.locator('input[data-test-id="b949bbfd05d3e96a0102055e448dd7ab"]'); @@ -85,9 +68,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyEmail = page.locator( @@ -109,9 +90,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="c30b8043cb501907a3e7b186fb37a85b"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/FieldGroup.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/FieldGroup.spec.js index f1e42186..31aa92f5 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/FieldGroup.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/FieldGroup.spec.js @@ -12,31 +12,16 @@ test.describe('E2E test', () => { test('should login, create case and run the FieldGroup tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Group from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Group' }).click(); + await common.selectCategory('Group', page); /** Selecting Editable from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Editable' }).click(); + await common.selectSubCategory('Editable', page); // Editable Field Group Tests await expect(page.getByText('Field Group with Instructions')).toBeVisible(); @@ -48,9 +33,7 @@ test.describe('E2E test', () => { await page.getByRole('option', { name: 'United States' }).click(); /** Selecting ReadOnly from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'ReadOnly' }).click(); + await common.selectSubCategory('ReadOnly', page); // ReadOnly Tests await expect(page.getByText('ReadOnly Text input')).toBeVisible(); @@ -61,9 +44,7 @@ test.describe('E2E test', () => { await expect(page.getByText('United States')).toBeVisible(); /** Selecting Collapsible from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Collapsible' }).click(); + await common.selectSubCategory('Collapsible', page); // Collapsible Tests await expect(page.getByText('Collapsible Field Group')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Integer.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Integer.spec.js index 16bc049f..a01698fc 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Integer.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Integer.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Integer tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Integer from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Integer' }).click(); + await common.selectCategory('Integer', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -62,9 +47,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledInteger = page.locator('input[data-test-id="54a4d3f4aa52da1985ec70df7cae41bf"]'); @@ -84,9 +67,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyInteger = page.locator( @@ -102,9 +83,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="4c6e4bb7d9b71d6b45cd6ae61b9ca334"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Location.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Location.spec.js new file mode 100644 index 00000000..ee7ff536 --- /dev/null +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Location.spec.js @@ -0,0 +1,151 @@ +const { test, expect } = require('@playwright/test'); + +const config = require('../../../config'); +const common = require('../../../common'); + +// These values represent the data values used for the conditions and are initialised in pyDefault DT +const isDisabled = true; +const isVisible = true; + +test.beforeEach(async ({ page }) => { + await page.setViewportSize({ width: 1920, height: 1080 }); + await page.goto(config.config.baseUrl, { waitUntil: 'networkidle' }); +}); + +test.describe('E2E test', () => { + let attributes; + + test('should login, create case and run the Location tests', async ({ page }) => { + await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); + + await common.verifyHomePage(page); + + await common.createCase('Form Field', page); + + /** Selecting Location from the Category dropdown */ + await common.selectCategory('Location', page); + + /** Selecting Required from the Sub Category dropdown */ + await common.selectSubCategory('Required', page); + + await page.locator('button:has-text("submit")').click(); + await expect(page.locator('mat-error')).toBeVisible(); + + /** Validating Required scenario */ + const requiredLocationField = page.locator('input[data-test-id="5d234240d150ee2ad896ca0be0e01fd3"]'); + await requiredLocationField.fill('Hitech City, Hyderabad'); + await page.waitForSelector('mat-option'); + const firstOption = page.locator('mat-option').first(); + await firstOption.click(); + + await expect(requiredLocationField).not.toHaveValue(''); + await expect(page.locator('mat-error')).toBeHidden(); + + attributes = await common.getAttributes(requiredLocationField); + expect(attributes.includes('required')).toBeTruthy(); + + const nonRequiredLocationField = page.locator('input[data-test-id="e4c3274b192b2696223fe7c86c635b75"]'); + attributes = await common.getAttributes(nonRequiredLocationField); + expect(attributes.includes('required')).toBeFalsy(); + + /** Selecting Disable from the Sub Category dropdown */ + await common.selectSubCategory('Disable', page); + + /** Validating Disabled scenario */ + const alwaysDisabledLocation = page.locator('input[data-test-id="43067a18c1d1c66f64f01e7e274c6396"]'); + attributes = await common.getAttributes(alwaysDisabledLocation); + expect(attributes.includes('disabled')).toBeTruthy(); + + const conditionallyDisabledLocation = page.locator('input[data-test-id="878f51dda2d3d8279c962e2f65172ac3"]'); + attributes = await common.getAttributes(conditionallyDisabledLocation); + if (isDisabled) { + expect(attributes.includes('disabled')).toBeTruthy(); + } else { + expect(attributes.includes('disabled')).toBeFalsy(); + } + + const neverDisabledLocation = page.locator('input[data-test-id="a98054547fce446cbe5d4f9fb06c922c"]'); + attributes = await common.getAttributes(neverDisabledLocation); + expect(attributes.includes('disabled')).toBeFalsy(); + + /** Selecting Update from the Sub Category dropdown */ + await common.selectSubCategory('Update', page); + + const editableLocation = page.locator('input[data-test-id="666e146bbb2d7e31be1a66c4ea52f453"]'); + await editableLocation.fill('Hitech City, Hyderabad'); + await page.waitForSelector('mat-option'); + const editableLocationFirstOption = page.locator('mat-option').first(); + await editableLocationFirstOption.click(); + + attributes = await common.getAttributes(editableLocation); + expect(attributes.includes('readonly')).toBeFalsy(); + + /** Selecting Visibility from the Sub Category dropdown */ + await common.selectSubCategory('Visibility', page, true); + + /** Visibility tests */ + await expect(page.locator('input[data-test-id="4d056e06ff67ee10b252d5d96d373c91"]')).toBeVisible(); + + const neverVisibleLocation = await page.locator('input[data-test-id="804db68b1b68c6e908079a1cab23fcdc"]'); + await expect(neverVisibleLocation).not.toBeVisible(); + + const conditionallyVisibleLocation = await page.locator('input[data-test-id="4b7ffe4018eb786ba3d11aa195f7d98d"]'); + + if (isVisible) { + await expect(conditionallyVisibleLocation).toBeVisible(); + } else { + await expect(conditionallyVisibleLocation).not.toBeVisible(); + } + + /** Label tests */ + await common.selectSubCategory('Label', page); + + const defaultLabelLocationField = page.locator('input[data-test-id="1d1f18e5499018ff649dd30066ba2270"]'); + await expect(defaultLabelLocationField).toBeVisible(); + const defaultLabel = await defaultLabelLocationField.locator('xpath=ancestor::mat-form-field//mat-label').textContent(); + + expect(defaultLabel).toBe('LocationDefaultLabel'); + + const customLabelLocationField = page.locator('input[data-test-id="88de9f842705651ff0dae0556755a43e"]'); + await expect(customLabelLocationField).toBeVisible(); + const customLabel = await customLabelLocationField.locator('xpath=ancestor::mat-form-field//mat-label').textContent(); + + expect(customLabel).toBe('Enter location (custom label)'); + + const customPlaceholderHelperField = page.locator('input[data-test-id="df7f2d2aa61b4ebfddb604ae39cb7374"]'); + await expect(customPlaceholderHelperField).toBeVisible(); + const placeholder = await customPlaceholderHelperField.getAttribute('placeholder'); + expect(placeholder).toBe('Enter location'); + const helper = await customPlaceholderHelperField.locator('xpath=ancestor::mat-form-field//mat-hint').textContent(); + expect(helper).toBe('You can either enter place name or coordinates '); + + /** Selecting Map Visibility from the Sub Category dropdown */ + await common.selectSubCategory('Map Visibility', page); + + /** Map Visibility tests */ + const mapVisibilityLocationField = page.locator('input[data-test-id="ce5f551ab012660f2358544a1ce8dede"]'); + await expect(mapVisibilityLocationField).toBeVisible(); + let component = mapVisibilityLocationField.locator('xpath=ancestor::app-location'); + await expect(component.locator('google-map')).toHaveCount(1); + + /** To check map is hidden */ + const mapHiddenLocationField = page.locator('input[data-test-id="ad80fd801feb0799ca829d6eedb8902a"]'); + component = mapHiddenLocationField.locator('xpath=ancestor::app-location'); + await expect(component.locator('google-map')).toHaveCount(0); + + /** To verify if the populated value is coordinates. */ + const onlyCoordsLocationField = page.locator('input[data-test-id="41b59bdbb86495ae2db766c2944d4d7b"]'); + await onlyCoordsLocationField.fill('Hitech City, Hyderabad'); + await page.waitForSelector('mat-option'); + const onlyCoordsLocationFirstOption = page.locator('mat-option').first(); + await onlyCoordsLocationFirstOption.click(); + + const coordinates = await onlyCoordsLocationField.inputValue(); + const regex = /^-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?$/; + expect(regex.test(coordinates.trim())).toBe(true); + }, 10000); +}); + +test.afterEach(async ({ page }) => { + await page.close(); +}); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/OptionalAction.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/OptionalAction.spec.js index d1359e30..d15e1a91 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/OptionalAction.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/OptionalAction.spec.js @@ -9,25 +9,12 @@ test.describe('E2E test', () => { test('should login, create case and run the Optional Action tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldsCase.click(); + await common.createCase('Form Field', page); - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'TextInput' }).click(); + await common.selectCategory('TextInput', page); const actions = page.locator('button:has-text("Actions...")'); await actions.click(); @@ -45,7 +32,6 @@ test.describe('E2E test', () => { await page.locator('button:has-text("Submit")').click(); await page.locator('button:has-text("Go")').click(); - await selectedCategory.click(); }, 10000); }); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Percentage.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Percentage.spec.js index 7c90bee5..273351d8 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Percentage.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Percentage.spec.js @@ -18,31 +18,15 @@ test.describe('E2E test', () => { test('should login, create case and run the Percentage tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); - /** Selecting Percentage from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Percentage' }).click(); + await common.selectCategory('Percentage', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); await expect(page.locator('mat-error')).toBeVisible(); @@ -57,9 +41,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledPercentage = page.locator('input[data-test-id="7900b3bd0ac7a6a59b1f5fe9b23749c4"]'); @@ -79,9 +61,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyPercentage = page.locator( @@ -97,9 +77,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="bc2c3cb45ab755e262b381abbb0307fa"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js index 734ceea3..9cc8b6a9 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Phone.spec.js @@ -18,30 +18,15 @@ test.describe('E2E test', () => { test('should login, create case and run the Phone tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + /** Click on the Create Case button */ + await common.createCase('Form Field', page); - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); - - /** Selecting Phone from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Phone' }).click(); + await common.selectCategory('Phone', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ // const requiredPhone = page.locator( @@ -66,9 +51,7 @@ test.describe('E2E test', () => { await expect(page.locator('mat-error')).toBeHidden(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledPhone = page.locator('mat-tel-input[data-test-id="d415da67e9764d6e7cdf3d993cb54f51"] >> input'); @@ -88,9 +71,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyPhone = page.locator( @@ -133,9 +114,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('mat-tel-input[data-test-id="6637b718c18a1fd292d28b6abaa68d50"] >> input')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Picklist.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Picklist.spec.js index 0b02886d..d0aa3f79 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Picklist.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Picklist.spec.js @@ -12,31 +12,15 @@ test.describe('E2E test', () => { test('should login, create case and run the Email tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); - - /** Selecting PickList from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'PickList' }).click(); - - /** Selecting Required from the Sub Category dropdown */ - const selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'DataPage' }).click(); + await common.createCase('Form Field', page); + + await common.selectCategory('PickList', page); + + /** Selecting Datapage from the Sub Category dropdown */ + await common.selectSubCategory('DataPage', page); /** Dropdown tests */ const picklistAs = page.locator('mat-select[data-test-id="683ea3aece0dce7e065d31d43f1c269b"]'); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/RichText.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/RichText.spec.js index 42fdbb3f..3e934a3b 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/RichText.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/RichText.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the RichText tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting RichText from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'RichText' }).click(); + await common.selectCategory('RichText', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ const requiredRichTextContainer = page.locator('div[data-test-id="98a97d9fe6d092900021587f62ab8637"]'); @@ -60,9 +45,7 @@ test.describe('E2E test', () => { expect(canNotBeBlankMsg).not.toBeVisible(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); /** Disable tests */ // Always Disabled RichText @@ -94,9 +77,7 @@ test.describe('E2E test', () => { await expect(disabledValue).toBe('false'); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ const readOnlyRichTextContainer = page.locator('div[data-test-id="2698790fe2608356645f7f37e47d4017"]'); @@ -112,9 +93,7 @@ test.describe('E2E test', () => { expect(editableRichTextDiv).toBeVisible(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('div[data-test-id="4094af7d82d8e88494423b891852cfb3"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextArea.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextArea.spec.js index abe6b21c..48521c42 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextArea.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextArea.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the TextArea tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting TextArea from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'TextArea' }).click(); + await common.selectCategory('TextArea', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ const requiredTextArea = page.locator('textarea[data-test-id="b82763ad8469c6be8d3303a773fc3337"]'); @@ -55,9 +40,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledTextArea = page.locator('textarea[data-test-id="0a9da72f88e89b62d5477181f60e326d"]'); @@ -77,9 +60,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyTextArea = page.locator( @@ -95,9 +76,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('textarea[data-test-id="b1173be73e47e82896554ec60a590d6d"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextInput.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextInput.spec.js index 15c478e1..e8eb23a7 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextInput.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/TextInput.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Text Input tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Text Input from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'TextInput' }).click(); + await common.selectCategory('TextInput', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ const requiredTextInput = page.locator('input[data-test-id="6d83ba2ad05ae97a2c75e903e6f8a660"]'); @@ -54,9 +39,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledTextInput = page.locator('input[data-test-id="52ad9e3ceacdb9ccea7ca193c213228a"]'); @@ -76,9 +59,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyTextInput = page.locator( @@ -92,9 +73,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="a03145775f20271d9f1276b0959d0b8e"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Time.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Time.spec.js index 0150d8c1..c36b20e9 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/Time.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/Time.spec.js @@ -18,31 +18,16 @@ test.describe('E2E test', () => { test('should login, create case and run the Time tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting TimeOnly from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'TimeOnly' }).click(); + await common.selectCategory('TimeOnly', page); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); await page.locator('button:has-text("submit")').click(); @@ -64,9 +49,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledTime = page.locator('input[data-test-id="b5b2a2335304986a2aba011c0a2a464d"]'); @@ -86,9 +69,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyTime = page.locator( @@ -104,9 +85,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('readonly')).toBeFalsy(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="1b5786591e69307188bb7bb6ed1d6007"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js index 9c9e9c02..6cc21743 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/URL.spec.js @@ -18,31 +18,19 @@ test.describe('E2E test', () => { test('should login, create case and run the URL tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Text Input from the Category dropdown */ + await common.selectCategory('TimeOnly', page); const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); await selectedCategory.click(); await page.getByRole('option', { name: 'URL' }).click(); /** Selecting Required from the Sub Category dropdown */ - let selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); /** Required tests */ const requiredURL = page.locator('input[data-test-id="20815fd8b2e59e25b75185515b126212"]'); @@ -54,9 +42,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('required')).toBeFalsy(); /** Selecting Disable from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // /** Disable tests */ const alwaysDisabledURL = page.locator('input[data-test-id="922758766489b064688aba17552c566d"]'); @@ -76,9 +62,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Selecting Update from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Update' }).click(); + await common.selectSubCategory('Update', page); /** Update tests */ // const readonlyURL = page.locator('input[data-test-id="6180c34fa2ef0cbfe3459b6f94b89d62"]'); @@ -99,9 +83,7 @@ test.describe('E2E test', () => { await expect(page.locator(`mat-error:has-text("${validationMsg}")`)).toBeHidden(); /** Selecting Visibility from the Sub Category dropdown */ - selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Visibility' }).click(); + await common.selectSubCategory('Visibility', page); /** Visibility tests */ await expect(page.locator('input[data-test-id="c239893d906b22bc8de9c7f3d0c1e219"]')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/FormFields/attachment.spec.js b/projects/angular-test-app/tests/e2e/DigV2/FormFields/attachment.spec.js index d196bb86..a8cefb04 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/FormFields/attachment.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/FormFields/attachment.spec.js @@ -19,31 +19,15 @@ test.describe('E2E test', () => { test('should login, create case and run the Attachment tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Form Field case-type */ - const formFieldCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Form Field")'); - await formFieldCase.click(); + await common.createCase('Form Field', page); /** Selecting Attachment from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.getByRole('option', { name: 'Attachment' }).click(); + await common.selectCategory('Attachment', page); /** Selecting Required from the Sub Category dropdown */ - const selectedSubCategory = page.locator('mat-select[data-test-id="9463d5f18a8924b3200b56efaad63bda"]'); - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Required' }).click(); + await common.selectSubCategory('Required', page); const cableChatFilePath = path.join(__dirname, '../../../../src/assets/cablechat.jpg'); const cableInfoFilePath = path.join(__dirname, '../../../../src/assets/cableinfo.jpg'); @@ -58,8 +42,7 @@ test.describe('E2E test', () => { await expect(page.locator('span:has-text("Cannot be blank")')).toBeHidden(); /** Selecting Disable from the Sub Category dropdown */ - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Disable' }).click(); + await common.selectSubCategory('Disable', page); // Disable tests const alwaysDisabledAttachment = page.locator('app-attachment').filter({ hasText: 'AttachmentDisabledAlways' }).getByRole('button'); @@ -81,8 +64,7 @@ test.describe('E2E test', () => { await expect(attributes.includes('disabled')).toBeFalsy(); /** Testing Single mode attachments */ - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Single' }).click(); + await common.selectSubCategory('Single', page); const singleAttachment = page.locator('div[id="attachment-container"]'); await expect(singleAttachment.locator('button:has-text("Choose a file")')).toBeVisible(); @@ -95,8 +77,7 @@ test.describe('E2E test', () => { await expect(singleAttachment.locator('button:has-text("Choose a file")')).toBeVisible(); /** Testing Multiple mode attachments */ - await selectedSubCategory.click(); - await page.getByRole('option', { name: 'Multiple' }).click(); + await common.selectSubCategory('Multiple', page); const multipleAttachment = page.locator('div[id="attachment-container"]'); await expect(singleAttachment.locator('button:has-text("Choose files")')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/LandingPages/InlineDashboard.spec.js b/projects/angular-test-app/tests/e2e/DigV2/LandingPages/InlineDashboard.spec.js index effc3b1b..a5ab0e05 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/LandingPages/InlineDashboard.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/LandingPages/InlineDashboard.spec.js @@ -11,29 +11,12 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Inline Dashboard template', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = await page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Hovering over navbar */ - const navbar = page.locator('app-navbar'); - await navbar.locator('div[class="psdk-appshell-nav"]').hover(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Complex Fields case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Complex Fields")'); - await complexFieldsCase.click(); + await common.createCase('Complex Fields', page); - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option >> span').getByText('DataReference', { exact: true }).click(); + await common.selectCategory('DataReference', page, true); const caseID = await page.locator('div[id="caseId"]').textContent(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/LandingPages/LandingPages.spec.js b/projects/angular-test-app/tests/e2e/DigV2/LandingPages/LandingPages.spec.js index 435855bb..3185d8f2 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/LandingPages/LandingPages.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/LandingPages/LandingPages.spec.js @@ -10,21 +10,9 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for My Work landing page', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a View Templates case-type */ - const viewTemplatesCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("View Templates")'); - await viewTemplatesCase.click(); + await common.createCase('View Templates', page); await page.locator('h2:has-text("Select Test")').click(); /** Extract caseID from CaseView */ @@ -54,30 +42,16 @@ test.describe('E2E test', () => { test('should login, create case and come back to Home landing page and run tests', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a View Templates case-type */ - const viewTemplatesCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("View Templates")'); - await viewTemplatesCase.click(); + await common.createCase('View Templates', page); /** Click on the `Home` landing page */ const homeLandingPage = page.locator('mat-list-item > span:has-text("Home")'); await homeLandingPage.click(); /** Test whether Home has loaded as expected */ - await expect(announcementBanner).toBeVisible(); - - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); }, 10000); }); diff --git a/projects/angular-test-app/tests/e2e/DigV2/Process/ApproveReject.spec.js b/projects/angular-test-app/tests/e2e/DigV2/Process/ApproveReject.spec.js index 111fccc2..6ba612f9 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/Process/ApproveReject.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/Process/ApproveReject.spec.js @@ -11,21 +11,9 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Approve and Reject actions', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = await page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a Process case-type */ - const processCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("Process")'); - await processCase.click(); + await common.createCase('Process', page); await page.locator('button:has-text("Approve")').click(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/SelfService/SelfServicePortal.spec.js b/projects/angular-test-app/tests/e2e/DigV2/SelfService/SelfServicePortal.spec.js index 0c47f0d2..294f0203 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/SelfService/SelfServicePortal.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/SelfService/SelfServicePortal.spec.js @@ -21,11 +21,7 @@ test.describe('E2E test', () => { await expect(navLinks.locator('div[class="psdk-nav-button-span"]:has-text("Home")')).toBeVisible(); await navLinks.locator('div[class="psdk-nav-button-span"]:has-text("Home")').click(); - const announcementBanner = page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Testing the My Work navigation link */ await expect(navLinks.locator('div[class="psdk-nav-button-span"]:has-text("My Work")')).toBeVisible(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js index bd409659..1407f2c5 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/Confirmation.spec.js @@ -11,26 +11,12 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Confirmation', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = await page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); + await common.verifyHomePage(page); - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); - - /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a View Templates case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("View Templates")'); - await complexFieldsCase.click(); + await common.createCase('View Templates', page); /** Selecting User Reference from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("Confirmation")').click(); + await common.selectCategory('Confirmation', page); const caseID = await page.locator('div[id="caseId"]').textContent(); diff --git a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/DynamicTabs.spec.js b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/DynamicTabs.spec.js index b1e13995..0e2bc296 100644 --- a/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/DynamicTabs.spec.js +++ b/projects/angular-test-app/tests/e2e/DigV2/ViewTemplates/DynamicTabs.spec.js @@ -12,26 +12,13 @@ test.describe('E2E test', () => { test('should login, create case and run different test cases for Dynamic Tabs', async ({ page }) => { await common.login(config.config.apps.digv2.user.username, config.config.apps.digv2.user.password, page); - /** Testing announcement banner presence */ - const announcementBanner = await page.locator('h2:has-text("Announcements")'); - await expect(announcementBanner).toBeVisible(); - - /** Testing worklist presence */ - const worklist = page.locator('div[id="worklist"]:has-text("My Worklist")'); - await expect(worklist).toBeVisible(); + await common.verifyHomePage(page); /** Click on the Create Case button */ - const createCase = page.locator('mat-list-item[id="create-case-button"]'); - await createCase.click(); - - /** Creating a View Templates case-type */ - const complexFieldsCase = page.locator('mat-list-item[id="case-list-item"] > span:has-text("View Templates")'); - await complexFieldsCase.click(); + await common.createCase('View Templates', page); /** Selecting Dynamic Tabs from the Category dropdown */ - const selectedCategory = page.locator('mat-select[data-test-id="76729937a5eb6b0fd88c42581161facd"]'); - await selectedCategory.click(); - await page.locator('mat-option > span:has-text("Dynamic Tabs")').click(); + await common.selectCategory('Dynamic Tabs', page); await page.locator('button:has-text("submit")').click(); From 112cc4bfde88d9fdae718b2f35efdcdef0cab6dd Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Thu, 9 Oct 2025 15:08:14 +0530 Subject: [PATCH 11/91] Fixed an import (#333) Co-authored-by: Sharma --- .../_components/template/data-reference/search-form/tabsData.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts index 0ad8d9b0..070dc1ec 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts @@ -1,4 +1,4 @@ -import { getTabLabel } from 'packages/angular-sdk-components/src/public-api'; +import { getTabLabel } from '../../../../_helpers/tab-utils'; export function getTabCountSources(deferLoadedTabs) { const availableTabs = deferLoadedTabs.getPConnect().getChildren() || []; From 8fca07509f0b19024cfe2d67dfa91b7dd2115cf6 Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Thu, 9 Oct 2025 16:18:19 +0530 Subject: [PATCH 12/91] Upgraded the pcore-pconnect-typedefs to latest (#336) Co-authored-by: Sharma --- package-lock.json | 8 ++++---- package.json | 2 +- .../template/data-reference/data-reference.component.ts | 4 ++-- .../template/data-reference/search-form/tabsData.ts | 2 +- .../inline-dashboard-page.component.ts | 2 +- .../_components/template/simple-table-manual/helpers.ts | 2 +- .../simple-table-manual/simple-table-manual.component.ts | 2 ++ packages/angular-sdk-components/src/lib/_helpers/utils.ts | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 678bdea5..3058dac8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,7 @@ "@angular/language-service": "^19.2.14", "@pega/configs": "^0.16.3", "@pega/constellationjs": "^0.25.1", - "@pega/pcore-pconnect-typedefs": "~3.2.2", + "@pega/pcore-pconnect-typedefs": "~4.1.0", "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", @@ -6761,9 +6761,9 @@ } }, "node_modules/@pega/pcore-pconnect-typedefs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@pega/pcore-pconnect-typedefs/-/pcore-pconnect-typedefs-3.2.2.tgz", - "integrity": "sha512-3Z+Tq5NZqhK+xPFWNPtr9NbcK63YkOLHeUgAjXOp8ugrA/xmyGpvaMbHK2jwGY0/d5T4Cv9mi34vojA/Slw0Ew==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@pega/pcore-pconnect-typedefs/-/pcore-pconnect-typedefs-4.1.0.tgz", + "integrity": "sha512-eMJ5M5H/oKnR22yH7pE5RAU3D/oLGNI0mJD2Dinqdyg9l2hUNVzifkRhy6kG58eyorcnnDAtmR11bY0FFNkezg==", "dev": true, "license": "See LICENSE in LICENSE file" }, diff --git a/package.json b/package.json index a31cfa5d..0d947447 100644 --- a/package.json +++ b/package.json @@ -95,7 +95,7 @@ "@angular/language-service": "^19.2.14", "@pega/configs": "^0.16.3", "@pega/constellationjs": "^0.25.1", - "@pega/pcore-pconnect-typedefs": "~3.2.2", + "@pega/pcore-pconnect-typedefs": "~4.1.0", "@playwright/test": "^1.54.2", "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts index bf05cd19..f07954ff 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts @@ -228,8 +228,8 @@ export class DataReferenceComponent implements OnInit, OnDestroy { const caseKey = this.pConn$.getCaseInfo().getKey(); const refreshOptions: any = { autoDetectRefresh: true, propertyName: '' }; - if (this.pConn$?.getRawMetadata()?.children?.length > 0 && this.pConn$?.getRawMetadata()?.children[0].config?.value) { - refreshOptions.propertyName = this.pConn$?.getRawMetadata()?.children[0].config.value; + if ((this.pConn$?.getRawMetadata()?.children as any)?.length > 0 && this.pConn$?.getRawMetadata()?.children?.[0].config?.value) { + refreshOptions.propertyName = this.pConn$?.getRawMetadata()?.children?.[0].config.value; refreshOptions.classID = (this.pConn$.getRawMetadata() as any).classID; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts index 070dc1ec..e5c67df6 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/search-form/tabsData.ts @@ -137,7 +137,7 @@ export function getData(deferLoadedTabs, tabCountSources, currentTabId, data) { })) ) .then(res => { - const values = res?.data?.caseInfo?.content || {}; + const values = (res?.data as any)?.caseInfo?.content || {}; const temp = calculatedFields.map(field => ({ ...field, count: values[field.propertyName?.substring(1)] || field.count diff --git a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts index a739b5b3..cd9cb907 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.ts @@ -45,7 +45,7 @@ export class InlineDashboardPageComponent implements OnInit, OnChanges { updateSelf() { this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as InlineDashboardPageProps; const arChildren$ = this.pConn$.getChildren(); - const allFilters = this.pConn$.getRawMetadata()?.children[1]; + const allFilters = this.pConn$.getRawMetadata()?.children?.[1]; const filterComponents = buildFilterComponents(this.pConn$, allFilters); this.inlineProps = this.configProps$; this.children[0] = arChildren$[0]; diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts index c81e0b90..099e4f69 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/helpers.ts @@ -404,7 +404,7 @@ export const createPConnect = (contextName, referenceList, pageReference) => { // create PConnect object const config = { meta: {}, options }; - const { getPConnect } = PCore.createPConnect(config); + const { getPConnect } = PCore.createPConnect(config as any); return getPConnect(); }; diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index e1cc887b..8081e3e6 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -959,6 +959,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { if (this.allowEditingInModal && this.defaultView) { this.pConn$ .getActionsApi() + // @ts-expect-error .openEmbeddedDataModal( this.defaultView, this.pConn$ as any, @@ -980,6 +981,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { if (data) { this.pConn$ .getActionsApi() + // @ts-expect-error .openEmbeddedDataModal( this.bUseSeparateViewForEdit ? this.editView : this.defaultView, this.pConn$ as any, diff --git a/packages/angular-sdk-components/src/lib/_helpers/utils.ts b/packages/angular-sdk-components/src/lib/_helpers/utils.ts index a618f20d..38f5c240 100644 --- a/packages/angular-sdk-components/src/lib/_helpers/utils.ts +++ b/packages/angular-sdk-components/src/lib/_helpers/utils.ts @@ -450,7 +450,7 @@ export class Utils { for (const part of pathParts) { if (!currentObj[part]) return key; - currentObj = currentObj[part]; + currentObj = currentObj[part] as any; } return currentObj[key] || key; From bbfd3f27b9a774859ede34ce47caa15f440ce9f7 Mon Sep 17 00:00:00 2001 From: samhere06 <118881732+samhere06@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:19:26 +0530 Subject: [PATCH 13/91] Object reference, Semantic link support (#329) * onject reference, semantic link support * updated to work with data reference case * updated autocomplete and dropdown for object reference * updated based on comments * updated to build correctly * Added new template ObjectPage --------- Co-authored-by: mohas22 --- .../_bridge/helpers/sdk-pega-component-map.ts | 4 + .../auto-complete/auto-complete.component.ts | 8 +- .../field/dropdown/dropdown.component.ts | 10 +- .../object-reference.component.html | 17 ++ .../object-reference.component.scss | 0 .../object-reference.component.spec.ts | 22 ++ .../object-reference.component.ts | 256 ++++++++++++++++++ .../selectable-card.component.ts | 2 +- .../semantic-link.component.html | 13 +- .../semantic-link.component.scss | 5 + .../semantic-link/semantic-link.component.ts | 153 ++++++++++- .../flow-container.component.ts | 4 +- .../infra/defer-load/defer-load.component.ts | 2 +- .../case-view/case-view.component.html | 2 +- .../case-view/case-view.component.scss | 6 + .../data-reference.component.html | 20 +- .../data-reference.component.ts | 5 + .../object-page/object-page.component.html | 1 + .../object-page/object-page.component.scss | 0 .../object-page/object-page.component.spec.ts | 22 ++ .../object-page/object-page.component.ts | 14 + .../simple-table-manual.component.ts | 2 +- .../single-reference-readonly.component.html | 2 +- .../single-reference-readonly.component.ts | 100 ++++++- .../src/lib/_helpers/objectReference-utils.ts | 117 ++++++++ .../src/lib/_helpers/semanticLink-utils.ts | 53 ++++ 26 files changed, 799 insertions(+), 41 deletions(-) create mode 100644 packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.html create mode 100644 packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.scss create mode 100644 packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.ts create mode 100644 packages/angular-sdk-components/src/lib/_helpers/objectReference-utils.ts create mode 100644 packages/angular-sdk-components/src/lib/_helpers/semanticLink-utils.ts diff --git a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts index cab9ac15..e77cbf97 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk-pega-component-map.ts @@ -31,6 +31,7 @@ import { GroupComponent } from '../../_components/field/group/group.component'; import { IntegerComponent } from '../../_components/field/integer/integer.component'; import { ListViewActionButtonsComponent } from '../../_components/field/list-view-action-buttons/list-view-action-buttons.component'; import { LocationComponent } from '../../_components/field/location/location.component'; +import { ObjectReferenceComponent } from '../../_components/field/object-reference/object-reference.component'; import { PercentageComponent } from '../../_components/field/percentage/percentage.component'; import { PhoneComponent } from '../../_components/field/phone/phone.component'; import { RadioButtonsComponent } from '../../_components/field/radio-buttons/radio-buttons.component'; @@ -74,6 +75,7 @@ import { ListViewComponent } from '../../_components/template/list-view/list-vie import { MultiReferenceReadonlyComponent } from '../../_components/template/multi-reference-readonly/multi-reference-readonly.component'; import { MultiselectComponent } from '../../_components/field/multiselect/multiselect.component'; import { NarrowWideFormComponent } from '../../_components/template/narrow-wide-form/narrow-wide-form.component'; +import { ObjectPageComponent } from '../../_components/template/object-page/object-page.component'; import { OneColumnComponent } from '../../_components/template/one-column/one-column.component'; import { OneColumnPageComponent } from '../../_components/template/one-column-page/one-column-page.component'; import { OneColumnTabComponent } from '../../_components/template/one-column-tab/one-column-tab.component'; @@ -200,6 +202,8 @@ const pegaSdkComponentMap = { NarrowWideForm: NarrowWideFormComponent, // 'NarrowWidePage': NarrowWidePage, NavBar: NavbarComponent, + ObjectPage: ObjectPageComponent, + ObjectReference: ObjectReferenceComponent, OneColumn: OneColumnComponent, OneColumnPage: OneColumnPageComponent, OneColumnTab: OneColumnTabComponent, diff --git a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts index db9799e3..5530967a 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy } from '@angular/core'; +import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy, Output, EventEmitter } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatOptionModule } from '@angular/material/core'; @@ -47,6 +47,7 @@ interface AutoCompleteProps extends PConnFieldProps { export class AutoCompleteComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; @Input() formGroup$: FormGroup; + @Output() onRecordChange: EventEmitter = new EventEmitter(); // Used with AngularPConnect angularPConnectData: AngularPConnectData = {}; @@ -331,8 +332,9 @@ export class AutoCompleteComponent implements OnInit, OnDestroy { } const value = key; handleEvent(this.actionsApi, 'changeNblur', this.propName, value); - if (this.configProps$?.onRecordChange) { - this.configProps$.onRecordChange(event); + + if (this.onRecordChange) { + this.onRecordChange.emit(value); } } diff --git a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts index f40af442..70c9037d 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy } from '@angular/core'; +import { Component, OnInit, Input, ChangeDetectorRef, forwardRef, OnDestroy, EventEmitter, Output } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; import { MatOptionModule } from '@angular/material/core'; @@ -73,6 +73,7 @@ interface DropdownProps extends PConnFieldProps { export class DropdownComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; @Input() formGroup$: FormGroup; + @Output() onRecordChange: EventEmitter = new EventEmitter(); // Used with AngularPConnect angularPConnectData: AngularPConnectData = {}; @@ -336,12 +337,13 @@ export class DropdownComponent implements OnInit, OnDestroy { event.value = ''; } handleEvent(this.actionsApi, 'changeNblur', this.propName, event.value); - if (this.configProps$?.onRecordChange) { - this.configProps$.onRecordChange(event); - } + this.pConn$.clearErrorMessages({ property: this.propName }); + if (this.onRecordChange) { + this.onRecordChange.emit(event.value); + } } getLocalizedOptionValue(opt: IOption) { diff --git a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.html b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.html new file mode 100644 index 00000000..17cf877d --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.html @@ -0,0 +1,17 @@ +
+ +
+ +
+ +
+
+ + + diff --git a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.scss b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.spec.ts new file mode 100644 index 00000000..c1a049ab --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ObjectReferenceComponent } from './object-reference.component'; + +describe('ObjectReferenceComponent', () => { + let component: ObjectReferenceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ObjectReferenceComponent] + }).compileComponents(); + + fixture = TestBed.createComponent(ObjectReferenceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts new file mode 100644 index 00000000..fb98a182 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts @@ -0,0 +1,256 @@ +import { CommonModule } from '@angular/common'; +import { Component, Input, OnInit, forwardRef, OnDestroy } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ComponentMetadataConfig } from '@pega/pcore-pconnect-typedefs/interpreter/types'; +import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; +import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { generateColumns, getDataRelationshipContextFromKey } from '../../../_helpers/objectReference-utils'; +import { PConnFieldProps } from '../../../_types/PConnProps.interface'; + +interface ObjectReferenceProps extends PConnFieldProps { + showPromotedFilters: boolean; + inline: boolean; + parameters: Object; + mode: string; + targetObjectType: any; + allowAndPersistChangesInReviewMode: boolean; +} + +@Component({ + selector: 'app-object-reference', + imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], + templateUrl: './object-reference.component.html', + styleUrl: './object-reference.component.scss' +}) +export class ObjectReferenceComponent implements OnInit, OnDestroy { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; + + angularPConnectData: AngularPConnectData = {}; + configProps: ObjectReferenceProps; + value: { [key: string]: any }; + readOnly: boolean; + isForm: boolean; + type: string; + isDisplayModeEnabled: boolean; + canBeChangedInReviewMode: boolean; + newComponentName: string; + newPconn: typeof PConnect; + rawViewMetadata: ComponentMetadataConfig | undefined; + + constructor(private angularPConnect: AngularPConnectService) {} + + ngOnInit() { + this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); + this.checkAndUpdate(); + } + + onStateChange() { + this.checkAndUpdate(); + } + + ngOnDestroy() { + if (this.angularPConnectData.unsubscribeFn) { + this.angularPConnectData.unsubscribeFn(); + } + } + + checkAndUpdate() { + const shouldUpdate = this.angularPConnect.shouldComponentUpdate(this); + if (shouldUpdate) { + this.updateSelf(); + } + } + + updateSelf() { + this.configProps = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as ObjectReferenceProps; + const displayMode = this.configProps.displayMode; + const editableInReview = this.configProps.allowAndPersistChangesInReviewMode ?? false; + const targetObjectType = this.configProps.targetObjectType; + const mode = this.configProps.mode; + const parameters = this.configProps.parameters; + const hideLabel = this.configProps.hideLabel; + const inline = this.configProps.inline; + const showPromotedFilters = this.configProps.showPromotedFilters; + const referenceType: string = targetObjectType === 'case' ? 'Case' : 'Data'; + this.rawViewMetadata = this.pConn$.getRawMetadata(); + const refFieldMetadata = this.pConn$.getFieldMetadata(this.rawViewMetadata?.config?.value?.split('.', 2)[1] ?? ''); + + // Destructured properties + const propsToUse = { ...this.pConn$.getInheritedProps(), ...this.configProps }; + + // Computed variables + this.isDisplayModeEnabled = displayMode === 'DISPLAY_ONLY'; + this.canBeChangedInReviewMode = editableInReview && ['Autocomplete', 'Dropdown'].includes((this.rawViewMetadata?.config as any)?.componentType); + // componentType is not defined in ComponentMetadataConfig type so using any + this.type = (this.rawViewMetadata?.config as any)?.componentType; + + if (this.type === 'SemanticLink' && !this.canBeChangedInReviewMode) { + const config: any = { + ...this.rawViewMetadata?.config, + primaryField: (this.rawViewMetadata?.config as any).displayField + }; + config.caseClass = (this.rawViewMetadata?.config as any).targetObjectClass; + config.text = config.primaryField; + config.caseID = config.value; + config.contextPage = `@P .${ + (this.rawViewMetadata?.config as any)?.displayField + ? getDataRelationshipContextFromKey((this.rawViewMetadata?.config as any).displayField) + : null + }`; + config.resourceParams = { + workID: config.value + }; + config.resourcePayload = { + caseClassName: config.caseClass + }; + + const component = this.pConn$.createComponent( + { + type: 'SemanticLink', + config: { + ...config, + displayMode, + referenceType, + hideLabel, + dataRelationshipContext: (this.rawViewMetadata?.config as any)?.displayField + ? getDataRelationshipContextFromKey((this.rawViewMetadata?.config as any).displayField) + : null + } + }, + '', + 0, + {} + ); + this.newPconn = component?.getPConnect(); + } + + if (this.type !== 'SemanticLink' && !this.isDisplayModeEnabled) { + // 1) Set datasource + const config: any = { ...this.rawViewMetadata?.config }; + generateColumns(config, this.pConn$, referenceType); + config.deferDatasource = true; + config.listType = 'datapage'; + if (['Dropdown', 'AutoComplete'].includes(this.type) && !config.placeholder) { + config.placeholder = '@L Select...'; + } + + // 2) Pass through configs + config.showPromotedFilters = showPromotedFilters; + + if (!this.canBeChangedInReviewMode) { + config.displayMode = displayMode; + } + + // 3) Define field meta + + const fieldMetaData = { + datasourceMetadata: { + datasource: { + parameters: {}, + propertyForDisplayText: false, + propertyForValue: false, + name: '' + } + } + }; + if (config?.parameters) { + fieldMetaData.datasourceMetadata.datasource.parameters = parameters; + } + fieldMetaData.datasourceMetadata.datasource.propertyForDisplayText = config?.datasource?.fields?.text?.startsWith('@P') + ? config?.datasource?.fields?.text?.substring(3) + : config?.datasource?.fields?.text; + fieldMetaData.datasourceMetadata.datasource.propertyForValue = config?.datasource?.fields?.value?.startsWith('@P') + ? config?.datasource?.fields?.value?.substring(3) + : config?.datasource?.fields?.value; + fieldMetaData.datasourceMetadata.datasource.name = config?.referenceList ?? ''; + + const component = this.pConn$.createComponent( + { + type: this.type, + config: { + ...config, + descriptors: mode === 'single' ? refFieldMetadata?.descriptors : null, + datasourceMetadata: fieldMetaData?.datasourceMetadata, + required: propsToUse.required, + visibility: propsToUse.visibility, + disabled: propsToUse.disabled, + label: propsToUse.label, + parameters: config.parameters, + readOnly: false, + localeReference: config.localeReference, + ...(mode === 'single' ? { referenceType } : ''), + contextClass: config.targetObjectClass, + primaryField: config?.displayField, + dataRelationshipContext: config?.displayField ? getDataRelationshipContextFromKey(config.displayField) : null, + hideLabel, + inline + } + }, + '', + 0, + {} + ); + this.newComponentName = component?.getPConnect().getComponentName(); + this.newPconn = component?.getPConnect(); + if (this.rawViewMetadata?.config) { + this.rawViewMetadata.config = config ? { ...config } : this.rawViewMetadata.config; + } + } + } + + onRecordChange(value) { + const caseKey = this.pConn$.getCaseInfo().getKey() ?? ''; + const refreshOptions = { autoDetectRefresh: true, propertyName: '' }; + refreshOptions.propertyName = this.rawViewMetadata?.config?.value ?? ''; + + if (!this.canBeChangedInReviewMode || !this.pConn$.getValue('__currentPageTabViewName')) { + const pgRef = this.pConn$.getPageReference().replace('caseInfo.content', '') ?? ''; + const viewName = this.rawViewMetadata?.name; + if (viewName && viewName.length > 0) { + getPConnect().getActionsApi().refreshCaseView(caseKey, viewName, pgRef, refreshOptions); + } + } + + const propValue = value; + const propName = + this.rawViewMetadata?.type === 'SimpleTableSelect' && this.configProps.mode === 'multi' + ? PCore.getAnnotationUtils().getPropertyName(this.rawViewMetadata?.config?.selectionList ?? '') + : PCore.getAnnotationUtils().getPropertyName(this.rawViewMetadata?.config?.value ?? ''); + + if (propValue && this.canBeChangedInReviewMode && this.isDisplayModeEnabled) { + PCore.getCaseUtils() + .getCaseEditLock(caseKey, '') + .then(caseResponse => { + const pageTokens = this.pConn$.getPageReference().replace('caseInfo.content', '').split('.'); + let curr = {}; + const commitData = curr; + + pageTokens?.forEach(el => { + if (el !== '') { + curr[el] = {}; + curr = curr[el]; + } + }); + + // expecting format like {Customer: {pyID:"C-100"}} + const propArr = propName.split('.'); + propArr.forEach((element, idx) => { + if (idx + 1 === propArr.length) { + curr[element] = propValue; + } else { + curr[element] = {}; + curr = curr[element]; + } + }); + + PCore.getCaseUtils() + .updateCaseEditFieldsData(caseKey, { [caseKey]: commitData }, caseResponse.headers.etag, this.pConn$?.getContextName() ?? '') + .then(response => { + PCore.getContainerUtils().updateParentLastUpdateTime(this.pConn$.getContextName() ?? '', response.data.data.caseInfo.lastUpdateTime); + PCore.getContainerUtils().updateRelatedContextEtag(this.pConn$.getContextName() ?? '', response.headers.etag); + }); + }); + } + } +} diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts index 0b3ef2fd..e2b83c37 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts @@ -179,7 +179,7 @@ export class SelectableCardComponent implements OnInit, OnDestroy { this.selectionList = this.configProps$.selectionList; this.selectedvalues = this.configProps$.readonlyContextList; - this.showNoValue = this.readOnly && this.selectedvalues.length === 0; // not used + this.showNoValue = this.readOnly && this.selectedvalues?.length === 0; // not used this.primaryField = this.configProps$.primaryField; } diff --git a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.html b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.html index db7ea4b1..fb7f9983 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.html +++ b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.html @@ -1,10 +1,7 @@ -
- +
+
{{ label$ }}
+ {{ value$ || '---' }}
- - -
-
{{ label$ }}
-
{{ value$ || '---' }}
-
+ +
{{ value$ || '---' }}
diff --git a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss index 7abd63e0..87dcf72d 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss @@ -6,6 +6,11 @@ align-items: start; } +.psdk-container-nolabels { + align-items: start; + padding-block: 8px; +} + .psdk-label { color: var(--app-label-color); margin: 8px 0px; diff --git a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts index e8b089d8..561e6bcb 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.ts @@ -1,21 +1,27 @@ -import { Component, OnInit, Input, forwardRef, OnDestroy } from '@angular/core'; +import { Component, OnInit, Input, OnDestroy } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormGroup } from '@angular/forms'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; -import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { getDataReferenceInfo, isLinkTextEmpty } from '../../../_helpers/semanticLink-utils'; import { Utils } from '../../../_helpers/utils'; import { PConnFieldProps } from '../../../_types/PConnProps.interface'; interface SemanticLinkProps extends PConnFieldProps { // If any, enter additional props that only exist on SemanticLink here text: string; + resourcePayload: any; + resourceParams: any; + previewKey: string; + referenceType: string; + dataRelationshipContext: string; + contextPage: any; } @Component({ selector: 'app-semantic-link', templateUrl: './semantic-link.component.html', styleUrls: ['./semantic-link.component.scss'], - imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] + imports: [CommonModule] }) export class SemanticLinkComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; @@ -28,6 +34,15 @@ export class SemanticLinkComponent implements OnInit, OnDestroy { value$ = ''; displayMode$?: string = ''; bVisible$ = true; + linkURL = ''; + dataResourcePayLoad: any; + referenceType: string; + shouldTreatAsDataReference: boolean; + previewKey: string; + resourcePayload: any = {}; + payload: object; + dataViewName = ''; + isLinkTextEmpty = false; constructor( private angularPConnect: AngularPConnectService, @@ -37,7 +52,7 @@ export class SemanticLinkComponent implements OnInit, OnDestroy { ngOnInit(): void { // First thing in initialization is registering and subscribing to the AngularPConnect service this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); - this.updateSelf(); + this.checkAndUpdate(); } ngOnDestroy(): void { @@ -47,6 +62,10 @@ export class SemanticLinkComponent implements OnInit, OnDestroy { } onStateChange() { + this.updateSelf(); + } + + checkAndUpdate() { // Should always check the bridge to see if the component should // update itself (re-render) const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this); @@ -59,11 +78,135 @@ export class SemanticLinkComponent implements OnInit, OnDestroy { updateSelf() { this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as SemanticLinkProps; - this.value$ = this.configProps$.text || '---'; + this.value$ = this.configProps$.text ? this.configProps$.text : this.configProps$.value || ''; this.displayMode$ = this.configProps$.displayMode; this.label$ = this.configProps$.label; if (this.configProps$.visibility) { this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility); } + const { resourceParams = {}, dataRelationshipContext = null, contextPage } = this.configProps$; + this.referenceType = this.configProps$.referenceType; + this.previewKey = this.configProps$.previewKey; + this.resourcePayload = this.configProps$.resourcePayload ?? {}; + const { ACTION_OPENWORKBYHANDLE, ACTION_SHOWDATA, ACTION_GETOBJECT } = PCore.getSemanticUrlUtils().getActions() as any; + this.dataResourcePayLoad = this.resourcePayload?.resourceType === 'DATA' ? this.resourcePayload : null; + const { + RESOURCE_TYPES: { DATA }, + WORKCLASS, + CASE_INFO: { CASE_INFO_CLASSID } + } = PCore.getConstants(); + + this.payload = {}; + let isData = false; + this.shouldTreatAsDataReference = !this.previewKey && this.resourcePayload?.caseClassName; + if (contextPage?.classID) { + this.resourcePayload.caseClassName = contextPage.classID; + } + /* TODO : In case of duplicate search case the classID is Work- need to set it to + the current case class ID */ + if (this.resourcePayload.caseClassName === WORKCLASS) { + this.resourcePayload.caseClassName = this.pConn$.getValue(CASE_INFO_CLASSID); + } + + if ((this.referenceType && this.referenceType.toUpperCase() === DATA) || this.shouldTreatAsDataReference) { + try { + isData = true; + const dataRefContext = getDataReferenceInfo(this.pConn$, dataRelationshipContext, contextPage); + this.dataViewName = dataRefContext.dataContext ?? ''; + this.payload = dataRefContext.dataContextParameters ?? {}; + } catch (error) { + console.log('Error in getting the data reference info', error); + } + } else if (this.resourcePayload && this.resourcePayload.resourceType === 'DATA') { + isData = true; + this.dataViewName = PCore.getDataTypeUtils().getLookUpDataPage(this.resourcePayload.className); + const lookUpDataPageInfo: any = PCore.getDataTypeUtils().getLookUpDataPageInfo(this.resourcePayload.className); + const { content } = this.resourcePayload; + if (lookUpDataPageInfo) { + const { parameters } = lookUpDataPageInfo; + this.payload = Object.keys(parameters).reduce((acc, param) => { + const paramValue = parameters[param]; + return { + ...acc, + [param]: PCore.getAnnotationUtils().isProperty(paramValue) ? content[PCore.getAnnotationUtils().getPropertyName(paramValue)] : paramValue + }; + }, {}); + } else { + const keysInfo = PCore.getDataTypeUtils().getDataPageKeys(this.dataViewName) ?? []; + this.payload = keysInfo.reduce((acc, curr) => { + return { + ...acc, + [curr.keyName]: content[curr.isAlternateKeyStorage ? curr.linkedField : curr.keyName] + }; + }, {}); + } + } + + if (isData && this.dataViewName && this.payload) { + this.linkURL = PCore.getSemanticUrlUtils().getResolvedSemanticURL( + ACTION_SHOWDATA, + { pageName: 'pyDetails', dataViewName: this.dataViewName }, + { + ...this.payload + } + ); + } else { + // BUG-678282 fix to handle scenario when workID was not populated. + // Check renderParentLink in Caseview / CasePreview. comment from constellation + const isObjectType = (PCore.getCaseUtils() as any).isObjectCaseType(this.resourcePayload.caseClassName); + resourceParams[isObjectType ? 'objectID' : 'workID'] = + resourceParams.workID === '' && typeof this.previewKey === 'string' ? this.previewKey.split(' ')[1] : resourceParams.workID; + if (this.previewKey) { + resourceParams.id = this.previewKey; + } + + this.linkURL = PCore.getSemanticUrlUtils().getResolvedSemanticURL( + isObjectType ? ACTION_GETOBJECT : ACTION_OPENWORKBYHANDLE, + this.resourcePayload, + resourceParams + ); + } + this.isLinkTextEmpty = isLinkTextEmpty(this.value$); + } + + showDataAction() { + if (this.dataResourcePayLoad && this.dataResourcePayLoad.resourceType === 'DATA') { + const { content } = this.dataResourcePayLoad; + const lookUpDataPageInfo = PCore.getDataTypeUtils().getLookUpDataPageInfo(this.dataResourcePayLoad?.className); + const lookUpDataPage = PCore.getDataTypeUtils().getLookUpDataPage(this.dataResourcePayLoad?.className); + if (lookUpDataPageInfo) { + const { parameters } = lookUpDataPageInfo as any; + this.payload = Object.keys(parameters).reduce((acc, param) => { + const paramValue = parameters[param]; + return { + ...acc, + [param]: PCore.getAnnotationUtils().isProperty(paramValue) ? content[PCore.getAnnotationUtils().getPropertyName(paramValue)] : paramValue + }; + }, {}); + } + this.pConn$.getActionsApi().showData('pyDetails', lookUpDataPage, { + ...this.payload + }); + } + if ((this.referenceType && this.referenceType.toUpperCase() === 'DATA') || this.shouldTreatAsDataReference) { + this.pConn$.getActionsApi().showData('pyDetails', this.dataViewName, { + ...this.payload + }); + } + } + + openLinkClick(e) { + if (!e.metaKey && !e.ctrlKey) { + e.preventDefault(); + if ( + (this.dataResourcePayLoad && this.dataResourcePayLoad.resourceType === 'DATA') || + (this.referenceType && this.referenceType.toUpperCase() === 'DATA') || + this.shouldTreatAsDataReference + ) { + this.showDataAction(); + } else if (this.previewKey) { + this.pConn$.getActionsApi().openWorkByHandle(this.previewKey, this.resourcePayload.caseClassName); + } + } } } diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts index 55a7aec9..c9bffdf3 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts @@ -202,9 +202,9 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement const kid = this.pConn$.getChildren()[0]; const todoKid = kid.getPConnect().getChildren()[0]; - this.todo_pConn$ = todoKid.getPConnect(); + this.todo_pConn$ = todoKid?.getPConnect(); - return true; + return !!this.todo_pConn$; } return !(caseViewMode && caseViewMode === 'perform'); diff --git a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts index 72f39d5a..1644ec7f 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/defer-load/defer-load.component.ts @@ -97,7 +97,7 @@ export class DeferLoadComponent implements OnInit, OnDestroy, OnChanges { getViewOptions = () => ({ viewContext: this.resourceType, - pageClass: this.loadViewCaseID ? '' : this.pConn$.getDataObject().pyPortal.classID, + pageClass: this.loadViewCaseID ? '' : this.pConn$.getDataObject()?.pyPortal?.classID, container: this.isContainerPreview ? 'preview' : undefined, containerName: this.isContainerPreview ? 'preview' : undefined, updateData: this.isContainerPreview diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html index 82f3cfcd..11528cda 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html @@ -1,7 +1,7 @@
- +
diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss index cc69b85c..00295907 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss @@ -105,3 +105,9 @@ h1 { button { margin: 0rem 0.3125rem; } + +.psdk-case-view-toolbar-row { + padding-left: 1rem; + white-space: normal; + height: auto; +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html index b0271939..44661228 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.html @@ -2,17 +2,15 @@
-
-
-
- -
-
-
- -
-
- +
+ +
+
+ +
+
+
+
diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts index f07954ff..f992bf7c 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts @@ -54,6 +54,8 @@ export class DataReferenceComponent implements OnInit, OnDestroy { showAdvancedSearch: boolean; pyID: any; allowImplicitRefresh: any; + displayChild = false; + dataRelationshipContext: any; constructor( private angularPConnect: AngularPConnectService, @@ -135,6 +137,8 @@ export class DataReferenceComponent implements OnInit, OnDestroy { this.viewName = this.rawViewMetadata.name; this.firstChildMeta = this.rawViewMetadata.children[0]; this.refList = this.rawViewMetadata.config.referenceList; + this.dataRelationshipContext = + this.rawViewMetadata.config.contextClass && this.rawViewMetadata.config.name ? this.rawViewMetadata.config.name : null; this.canBeChangedInReviewMode = theConfigProps.allowAndPersistChangesInReviewMode && (displayAs === 'autocomplete' || displayAs === 'dropdown'); // this.childrenToRender = this.children; this.isDisplayModeEnabled = ['DISPLAY_ONLY', 'STACKED_LARGE_VAL'].includes(displayMode); @@ -177,6 +181,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy { } this.generateChildrenToRender(); + this.displayChild = !(this.displaySingleRef || this.displayMultiRef); } } diff --git a/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.html b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.html new file mode 100644 index 00000000..86ab3c10 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.html @@ -0,0 +1 @@ + diff --git a/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.scss b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.spec.ts b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.spec.ts new file mode 100644 index 00000000..f9405f6c --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ObjectPageComponent } from './object-page.component'; + +describe('ObjectPageComponent', () => { + let component: ObjectPageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ObjectPageComponent] + }).compileComponents(); + + fixture = TestBed.createComponent(ObjectPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.ts b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.ts new file mode 100644 index 00000000..fc18ca55 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_components/template/object-page/object-page.component.ts @@ -0,0 +1,14 @@ +import { Component, forwardRef, Input } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; + +@Component({ + selector: 'lib-object-page', + imports: [forwardRef(() => ComponentMapperComponent)], + templateUrl: './object-page.component.html', + styleUrl: './object-page.component.scss' +}) +export class ObjectPageComponent { + @Input() pConn$: typeof PConnect; + @Input() formGroup$: FormGroup; +} diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index 8081e3e6..228930e8 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -921,7 +921,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { const refKeys: string[] = inColKey.split('.'); let valBuilder = inRowData; for (const key of refKeys) { - valBuilder = valBuilder[key]; + valBuilder = valBuilder ?? valBuilder[key]; } return valBuilder; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.html b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.html index fdeb4e31..b3960fd6 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.html @@ -1 +1 @@ - + diff --git a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts index 253f6ea0..53d463f9 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/single-reference-readonly/single-reference-readonly.component.ts @@ -1,14 +1,108 @@ -import { Component, Input, forwardRef } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Component, Input, forwardRef, OnInit, OnDestroy } from '@angular/core'; import { FormGroup } from '@angular/forms'; +import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; +import { getDataRelationshipContextFromKey } from '../../../_helpers/objectReference-utils'; @Component({ selector: 'app-single-reference-readonly', templateUrl: './single-reference-readonly.component.html', styleUrls: ['./single-reference-readonly.component.scss'], - imports: [forwardRef(() => ComponentMapperComponent)] + imports: [CommonModule, forwardRef(() => ComponentMapperComponent)] }) -export class SingleReferenceReadonlyComponent { +export class SingleReferenceReadonlyComponent implements OnInit, OnDestroy { @Input() pConn$: typeof PConnect; @Input() formGroup$: FormGroup; + @Input() dataRelationshipContext?: any; + + angularPConnectData: AngularPConnectData = {}; + configProps: any; + component: any; + label: string; + newPconn: typeof PConnect; + + constructor(private angularPConnect: AngularPConnectService) {} + + ngOnInit(): void { + // First thing in initialization is registering and subscribing to the AngularPConnect service + this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange); + this.checkAndUpdate(); + } + + ngOnDestroy(): void { + if (this.angularPConnectData.unsubscribeFn) { + this.angularPConnectData.unsubscribeFn(); + } + } + + // Callback passed when subscribing to store change + onStateChange() { + this.checkAndUpdate(); + } + + checkAndUpdate() { + // Should always check the bridge to see if the component should + // update itself (re-render) + const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this); + + // ONLY call updateSelf when the component should update + if (bUpdateSelf) { + this.updateSelf(); + } + } + + updateSelf() { + this.configProps = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()); + const rawViewMetadata = this.pConn$.getRawMetadata(); + const propsToUse = { ...this.pConn$.getInheritedProps(), ...this.configProps }; + const type = (rawViewMetadata?.config as any)?.componentType; + const displayMode = this.configProps.displayMode; + const targetObjectType = this.configProps.targetObjectType; + const referenceType = targetObjectType === 'case' ? 'Case' : 'Data'; + const hideLabel = this.configProps.hideLabel; + // const additionalFields = this.configProps.additionalFields; + const displayAs = this.configProps.displayAs ?? 'readonly'; + const dataRelationshipContext = (rawViewMetadata?.config as any)?.displayField + ? getDataRelationshipContextFromKey((rawViewMetadata?.config as any)?.displayField) + : this.dataRelationshipContext; + this.label = propsToUse.label; + + const editableComponents = ['AutoComplete', 'SimpleTableSelect', 'Dropdown', 'RadioButtons']; + const config: any = { + ...rawViewMetadata?.config, + primaryField: (rawViewMetadata?.config as any)?.displayField + }; + + const activeViewRuleClass = (rawViewMetadata?.config as any)?.targetObjectClass; + if (editableComponents.includes(type)) { + config.caseClass = activeViewRuleClass; + config.text = config.primaryField; + config.caseID = config.value; + config.contextPage = `@P .${dataRelationshipContext}`; + config.resourceParams = { + workID: displayAs === 'table' ? (config as any)?.selectionKey : config.value + }; + config.resourcePayload = { + caseClassName: activeViewRuleClass + }; + } + + this.component = this.pConn$.createComponent( + { + type: 'SemanticLink', + config: { + ...config, + displayMode, + referenceType, + hideLabel, + dataRelationshipContext + } + }, + '', + 0, + {} + ); + this.newPconn = this.component.getPConnect(); + } } diff --git a/packages/angular-sdk-components/src/lib/_helpers/objectReference-utils.ts b/packages/angular-sdk-components/src/lib/_helpers/objectReference-utils.ts new file mode 100644 index 00000000..10cb611b --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_helpers/objectReference-utils.ts @@ -0,0 +1,117 @@ +const PERIOD = '.'; +const AT = '@'; +const SQUARE_BRACKET_START = '['; +const SQUARE_BRACKET_END = ']'; + +function getMappedKey(key) { + const mappedKey = PCore.getEnvironmentInfo().getKeyMapping(key); + if (!mappedKey) { + return key; + } + return mappedKey; +} + +function updatePageListPropertyValue(value) { + value = value.substring(0, value.indexOf(SQUARE_BRACKET_START)) + value.substring(value.indexOf(SQUARE_BRACKET_END) + 1); + return value; +} + +function getPropertyValue(value) { + if (value.startsWith(AT)) { + value = value.substring(value.indexOf(' ') + 1); + if (value.startsWith(PERIOD)) value = value.substring(1); + } + if (value.includes(SQUARE_BRACKET_START)) { + value = updatePageListPropertyValue(value); + } + return value; +} + +function getLeafNameFromPropertyName(property): string { + return property?.substr(property.lastIndexOf('.')); +} + +function isSelfReferencedProperty(param, referenceProp): boolean { + return param === referenceProp?.split('.', 2)[1]; +} + +function getCompositeKeys(c11nEnv, property): any { + const { datasource: { parameters = {} } = {} } = c11nEnv.getFieldMetadata(property) || {}; + return Object.values(parameters).reduce((compositeKeys: any, param: any) => { + if (isSelfReferencedProperty(property, param)) { + let propName = getPropertyValue(param); + propName = propName.substring(propName.indexOf('.')); + compositeKeys.push(propName); + } + return compositeKeys; + }, []); +} + +function generateColumns(config, pConn, referenceType) { + const displayField = getLeafNameFromPropertyName(config.displayField); + const referenceProp = config.value.split('.', 2)[1]; + const compositeKeys = getCompositeKeys(pConn, referenceProp); + let value = getLeafNameFromPropertyName(config.value); + + const columns: any[] = []; + if (displayField) { + columns.push({ + value: displayField, + display: 'true', + useForSearch: true, + primary: 'true' + }); + } + if (value && compositeKeys.indexOf(value) !== -1) { + columns.push({ + value, + setProperty: 'Associated property', + key: 'true' + }); + } else { + const actualValue = compositeKeys.length > 0 ? compositeKeys[0] : value; + config.value = `@P .${referenceProp}${actualValue}`; + value = actualValue; + columns.push({ + value: actualValue, + setProperty: 'Associated property', + key: 'true' + }); + } + + config.datasource = { + fields: { + key: getLeafNameFromPropertyName(config.value), + text: getLeafNameFromPropertyName(config.displayField), + value: getLeafNameFromPropertyName(config.value) + } + }; + + if (referenceType === 'Case') { + columns.push({ + secondary: 'true', + display: 'true', + value: getMappedKey('pyID'), + useForSearch: true + }); + } + + compositeKeys.forEach(key => { + if (value !== key) + columns.push({ + value: key, + display: 'false', + secondary: 'true', + useForSearch: false, + setProperty: `.${referenceProp}${key}` + }); + }); + + config.columns = columns; +} + +function getDataRelationshipContextFromKey(key) { + return key.split('.', 2)[1]; +} + +export { getLeafNameFromPropertyName, isSelfReferencedProperty, getCompositeKeys, generateColumns, getDataRelationshipContextFromKey }; diff --git a/packages/angular-sdk-components/src/lib/_helpers/semanticLink-utils.ts b/packages/angular-sdk-components/src/lib/_helpers/semanticLink-utils.ts new file mode 100644 index 00000000..e6de8077 --- /dev/null +++ b/packages/angular-sdk-components/src/lib/_helpers/semanticLink-utils.ts @@ -0,0 +1,53 @@ +function getDataReferenceInfo(pConnect, dataRelationshipContext, contextPage) { + if (!pConnect) { + throw Error('PConnect parameter is required'); + } + + let dataContext = ''; + const payload = {}; + const pageReference = pConnect.getPageReference(); + const annotationUtils = PCore.getAnnotationUtils(); + let fieldMetadata; + + if (pageReference) { + /* + For page list the page reference will be something like caseInfo.content.EmployeeRef[1]. + Need to extract EmployeeRef from caseInfo.content.EmployeeRef[1] + */ + const propertySplit = pageReference.split('.'); + + // Regex to match if the property is list type. Eg: EmployeeRef[1] + const listPropertyRegex = /([a-z|A-Z]*[[][\d]*)[\]]$/gm; + // Regex to match [1] part of the property EmployeeRef[1] + const indexRegex = /([[][\d]*[\]])+/gm; + + let contextProperty = dataRelationshipContext !== null ? dataRelationshipContext : propertySplit.pop(); + const isListProperty = listPropertyRegex.test(contextProperty); + contextProperty = isListProperty ? contextProperty.replace(indexRegex, '') : contextProperty; + fieldMetadata = pConnect.getFieldMetadata(contextProperty); + } + + if (!!fieldMetadata && fieldMetadata.datasource) { + const { name, parameters } = fieldMetadata.datasource; + dataContext = name; + for (const [key, value] of Object.entries(parameters)) { + if (contextPage && Object.hasOwn(contextPage, key)) { + payload[key] = contextPage[key]; + } else { + const isProperty = PCore.getAnnotationUtils().isProperty(value as string); + const property = + dataRelationshipContext !== null ? annotationUtils.getPropertyName(value as string) : annotationUtils.getLeafPropertyName(value as string); + payload[key] = isProperty ? pConnect.getValue(`.${property}`) : value; + } + } + return { dataContext, dataContextParameters: payload }; + } + + return {}; +} + +function isLinkTextEmpty(text) { + return text === '' || text === undefined || text === null; +} + +export { getDataReferenceInfo, isLinkTextEmpty }; From c02b7c20ece2647dc073deed8d79eb173a31bebc Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Wed, 15 Oct 2025 00:41:19 +0530 Subject: [PATCH 14/91] Fixed blank screen issue in embedded (#338) * Fixed blank screen issue in embedded --------- Co-authored-by: Sharma --- .../app/_samples/embedded/embedded.component.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts b/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts index 7153a9dc..5ee6d3aa 100644 --- a/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts +++ b/projects/angular-test-app/src/app/_samples/embedded/embedded.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy } from '@angular/core'; +import { Component, OnInit, OnDestroy, NgZone } from '@angular/core'; import { CommonModule } from '@angular/common'; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; @@ -41,7 +41,10 @@ export class EmbeddedComponent implements OnInit, OnDestroy { bootstrapShell: any; - constructor(private psservice: ProgressSpinnerService) {} + constructor( + private psservice: ProgressSpinnerService, + private ngZone: NgZone + ) {} ngOnInit() { this.initialize(); @@ -103,11 +106,11 @@ export class EmbeddedComponent implements OnInit, OnDestroy { // Change to reflect new use of arg in the callback: const { props } = renderObj; - this.pConn$ = props.getPConnect(); - - this.bHasPConnect$ = true; - - this.showHideProgress(false); + this.ngZone.run(() => { + this.pConn$ = props.getPConnect(); + this.bHasPConnect$ = true; + this.showHideProgress(false); + }); } showHideProgress(bShow: boolean) { From 6f6236b2296465ee5da711fcf6796db390d1308f Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Wed, 15 Oct 2025 19:51:02 +0530 Subject: [PATCH 15/91] Upgraded EsLint to 9 (#339) Co-authored-by: Sharma --- .eslintignore | 5 - .eslintrc.json | 148 - eslint.config.mjs | 171 + package-lock.json | 3323 +++++++++++------ package.json | 15 +- .../src/lib/_bridge/angular-pconnect.ts | 4 +- .../component-mapper.component.ts | 1 - .../lib/_bridge/helpers/sdk_component_map.ts | 7 +- .../operator/operator.component.ts | 1 - .../auto-complete/auto-complete.component.ts | 2 +- .../field/check-box/check-box.component.ts | 3 +- .../field/currency/currency.component.ts | 2 +- .../field/date-time/date-time.component.ts | 2 +- .../_components/field/date/date.component.ts | 2 +- .../field/dropdown/dropdown.component.ts | 2 +- .../field/email/email.component.ts | 2 +- .../field/integer/integer.component.ts | 2 +- .../field/location/location.component.ts | 2 +- .../multiselect/multiselect.component.ts | 2 +- .../object-reference.component.ts | 2 +- .../field/percentage/percentage.component.ts | 2 +- .../field/phone/phone.component.ts | 2 +- .../radio-buttons/radio-buttons.component.ts | 2 +- .../field/rich-text/rich-text.component.ts | 2 +- .../selectable-card.component.ts | 2 +- .../field/text-area/text-area.component.ts | 2 +- .../field/text-input/text-input.component.ts | 2 +- .../_components/field/time/time.component.ts | 2 +- .../_components/field/url/url.component.ts | 2 +- .../user-reference.component.ts | 5 +- .../flow-container.component.ts | 5 +- .../modal-view-container.component.ts | 8 +- .../view-container.component.ts | 2 +- .../infra/assignment/assignment.component.ts | 2 +- .../root-container.component.ts | 3 +- .../search-group/persist-utils.ts | 4 +- .../search-groups/search-groups.component.ts | 2 +- .../template/app-shell/app-shell.component.ts | 4 +- .../data-reference.component.ts | 4 +- .../template/list-view/list-view.component.ts | 5 +- .../_components/template/list-view/utils.ts | 2 +- .../repeating-structures.component.ts | 1 - .../simple-table-manual.component.ts | 5 +- .../simple-table/simple-table.component.ts | 1 - .../widget/attachment/attachment.component.ts | 2 +- .../feed-container.component.ts | 4 +- .../_components/widget/todo/todo.component.ts | 2 +- .../lib/_helpers/formatters/currency-map.ts | 1 - .../src/lib/_helpers/utils.ts | 4 +- .../full-portal/full-portal.component.ts | 2 +- 50 files changed, 2506 insertions(+), 1278 deletions(-) delete mode 100644 .eslintignore delete mode 100644 .eslintrc.json create mode 100644 eslint.config.mjs diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 9d5b788f..00000000 --- a/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -*.ico -*.json -*.md -*.scss -**/assets/**/*.* diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index eaa1fdd7..00000000 --- a/.eslintrc.json +++ /dev/null @@ -1,148 +0,0 @@ -{ - "root": true, - "extends": ["@pega"], - "parserOptions": { - "project": "tsconfig.json", - "ecmaVersion": 13 - }, - "globals": { - "PCore": "readonly" - }, - "settings": { - "import/resolver": { - "typescript": {}, - "node": { - "extensions": [".js", ".jsx", ".ts"] - } - } - }, - "env": { - "browser": true, - "node": true - }, - "ignorePatterns": ["node_modules", "!.storybook", ".storybook/public", "**/**/*.json"], - "rules": { - // Prettier recommends running separately from a linter. - // https://prettier.io/docs/en/integrating-with-linters.html#notes - "prettier/prettier": "off", - - // Disable rules from shared configs we're not ready for yet. - "sonarjs/cognitive-complexity": ["warn", 20], - "sonarjs/no-duplicate-string": "off", - - // - // Initial release: turning these off; phase in to "warn" or "error" over time - // For "quotes" and "@typescript-eslint/quotes", see override below for .ts/.tsx files - "import/extensions": ["off", "never"], - "import/named": "off", - "import/no-cycle": "off", - "import/no-duplicates": "off", - "import/no-extraneous-dependencies": "off", - "import/no-named-as-default": "off", - "import/no-named-as-default-member": "off", - "import/no-self-import": "off", - "import/no-unresolved": "off", - "import/no-useless-path-segments": "off", - "import/order": "off", - - "no-underscore-dangle": "off", // TODO : adhere to standard naming - "no-restricted-syntax": "warn", // TODO : fix for-in loops - - "jsx-a11y/alt-text": "off", - "jsx-a11y/anchor-is-valid": "off", - "jsx-a11y/click-events-have-key-events": "off", - "jsx-a11y/label-has-associated-control": "off", - "jsx-a11y/no-static-element-interactions": "off", - - "class-methods-use-this": "off", // TODO *** - "@typescript-eslint/naming-convention": "off", // prefer warn but needs different parserOptions - "@typescript-eslint/ban-types": "off", // also, see override below - - "import/no-relative-packages": "off", // arnab - - // TODO: Need to be fixed - "guard-for-in": "off", - "eqeqeq": "off", - "no-alert": "off", - "no-console": "off", - "no-plusplus": "off" - }, - "overrides": [ - { - "files": "*.@(ts|tsx)", - "rules": { - "@typescript-eslint/method-signature-style": ["error", "property"], - // "@typescript-eslint/ban-types": [ - // "warn", - // { - // "types": { - // "Omit": "Please use the 'OmitStrict' type from 'src/types/' instead.", - // "object": false, - // "Function": false - // }, - // "extendDefaults": true - // } - // ], - - "quotes": "off", - "@typescript-eslint/quotes": "off" - // [ - // "error", - // "single", - // { - // "avoidEscape": true, - // "allowTemplateLiterals": false - // } - // ] - } - }, - { - "files": "*.@(js|jsx|ts|tsx|mdx)", - "rules": {} - }, - { - "files": ".storybook/*.js", - "extends": ["@pega/eslint-config/script"] - }, - { - "files": "*/**/mocks/**.@(mocks|styles).@(tsx|ts)", - "rules": { - "import/prefer-default-export": ["off"] - } - }, - // angular specific lint rules - { - "files": ["*.ts"], - "parserOptions": { - "project": ["tsconfig.json"], - "createDefaultProgram": true - }, - "extends": ["plugin:@angular-eslint/recommended", "plugin:@angular-eslint/template/process-inline-templates"], - "rules": { - "@angular-eslint/directive-selector": [ - "error", - { - "type": "attribute", - "style": "camelCase" - } - ], - "@angular-eslint/component-selector": [ - "error", - { - "type": "element", - "style": "kebab-case" - } - ], - "@angular-eslint/no-output-on-prefix": "off", - "import/prefer-default-export": "off" - } - }, - { - "files": ["*.html"], - "extends": ["plugin:@angular-eslint/template/recommended"], - "rules": { - "@angular-eslint/template/eqeqeq": "off" - } - } - ] -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..79d623c5 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,171 @@ +import { globalIgnores } from 'eslint/config'; +import { fileURLToPath } from 'node:url'; +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; +import sonarjs from 'eslint-plugin-sonarjs'; +import importPlugin from 'eslint-plugin-import'; +import react from 'eslint-plugin-react'; +import reactHooks from 'eslint-plugin-react-hooks'; +// eslint.config.js +import { defineConfig } from 'eslint/config'; + +const __filename = fileURLToPath(import.meta.url); + +export default defineConfig([ + eslint.configs.recommended, + ...tseslint.configs.recommended, + globalIgnores([ + '**/node_modules', + 'packages/*/lib', + '!**/.storybook', + '.storybook/public', + '**/demo.stories.jsx', + '**/mock.stories.js', + '**/demo.stories.tsx', + '**/demo.test.tsx', + '**/*.test.tsx', + '**/mock.stories.ts', + '**/*.mdx', + '**/webpack.config.js', + 'src/helpers/config_access.js', + '**/*.html', + '**/*.css', + '**/*.json', + '**/*.md', + '**/*.svg', + '**/*.zip', + '**/*.d.ts', + '*.storybook/*', + '**/*.cjs', + '**/*.mjs', + '**/paths.js', + 'dist/*', + 'lib/*', + '**/ext-libs.js' + ]), + { + languageOptions: { + globals: { + PCore: 'readonly', + window: true, + console: true, + document: true, + fetch: true + }, + + ecmaVersion: 13, + sourceType: 'script', + + parserOptions: { + project: 'tsconfig.json', + ecmaFeatures: { + jsx: true + } + } + }, + + settings: { + 'import/resolver': { + typescript: {}, + react: { + version: 'detect' + }, + node: { + extensions: ['.js', '.jsx', '.ts', '.tsx'] + } + }, + + react: { + version: 'detect' + } + }, + + plugins: { sonarjs, import: importPlugin, react, 'react-hooks': reactHooks }, + rules: { + 'react/jsx-filename-extension': [0, { extensions: ['.jsx', '*.tsx'] }], + + // Prettier recommends running separately from a linter. + // https://prettier.io/docs/en/integrating-with-linters.html#notes + 'prettier/prettier': 'off', + + // Disable rules from shared configs we're not ready for yet. + 'sonarjs/cognitive-complexity': ['warn', 20], + 'sonarjs/no-duplicate-string': 'off', + + // + // Initial release: turning these off; phase in to "warn" or "error" over time + // For "quotes" and "@typescript-eslint/quotes", see override below for .ts/.tsx files + 'import/extensions': ['off', 'never'], + 'import/named': 'off', + 'import/no-cycle': 'off', + 'import/no-duplicates': 'off', + 'import/no-extraneous-dependencies': 'off', + 'import/no-named-as-default': 'off', + 'import/no-named-as-default-member': 'off', + 'import/no-self-import': 'off', + 'import/no-unresolved': 'off', + 'import/no-useless-path-segments': 'off', + 'import/order': 'off', + + 'no-underscore-dangle': 'off', // TODO : adhere to standard naming + 'no-restricted-syntax': 'warn', // TODO : fix for-in loops + + 'jsx-a11y/alt-text': 'off', + 'jsx-a11y/anchor-is-valid': 'off', + 'jsx-a11y/click-events-have-key-events': 'off', + 'jsx-a11y/label-has-associated-control': 'off', + 'jsx-a11y/no-static-element-interactions': 'off', + + '@typescript-eslint/naming-convention': 'off', // prefer warn but needs different parserOptions + '@typescript-eslint/ban-types': 'off', // also, see override below + '@typescript-eslint/no-explicit-any': 'off', // prefer warn but needs different parserOptions + '@typescript-eslint/no-empty-object-type': 'off', // prefer warn but needs different parserOptions + '@typescript-eslint/ban-ts-comment': 'off', // prefer warn but needs different parserOptions + '@typescript-eslint/no-unsafe-function-type': 'off', + + 'import/no-relative-packages': 'off' // arnab + } + }, + { + files: ['**/*.@(ts|tsx)'], + + rules: { + '@typescript-eslint/method-signature-style': ['error', 'property'], + quotes: 'off', + '@typescript-eslint/quotes': 'off' + } + }, + { + files: ['**/*.@(jsx|tsx|mdx)'], + + rules: { + 'react/react-in-jsx-scope': 'off', + 'react-hooks/rules-of-hooks': 'off', + 'react-hooks/exhaustive-deps': 'off' + } + }, + { + files: ['**/*.@(ts|tsx)'], + rules: { + 'no-console': 'off', + 'import/prefer-default-export': 'off', + 'import/no-relative-packages': 'off', + 'react/jsx-fragments': 'off', + 'react/react-in-jsx-scope': 'off', + 'react-hooks/exhaustive-deps': 'off', + 'sonarjs/cognitive-complexity': ['warn', 45] + } + }, + { + files: ['**/*.@(js|jsx|ts|tsx|mdx)'], + rules: {} + }, + + { + files: ['*/**/mocks/**.@(mocks|styles).@(tsx|ts)'], + + rules: { + 'import/prefer-default-export': ['off'] + } + } +]); diff --git a/package-lock.json b/package-lock.json index 3058dac8..ab35e052 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,9 +41,9 @@ "@angular-builders/custom-webpack": "^19.0.1", "@angular-devkit/build-angular": "^19.2.15", "@angular-devkit/core": "^19.2.15", - "@angular-eslint/eslint-plugin": "^18.4.0", - "@angular-eslint/eslint-plugin-template": "^18.4.0", - "@angular-eslint/template-parser": "^18.4.1", + "@angular-eslint/eslint-plugin": "^20.3.0", + "@angular-eslint/eslint-plugin-template": "^20.3.0", + "@angular-eslint/template-parser": "^20.3.0", "@angular/cli": "^19.2.15", "@angular/compiler-cli": "^19.2.14", "@angular/language-service": "^19.2.14", @@ -54,15 +54,15 @@ "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", "@types/node": "^20.10.8", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", "brotli": "^1.3.3", "codelyzer": "^6.0.2", "compressing": "^1.10.1", "copy-webpack-plugin": "^13.0.1", - "eslint": "^8.56.0", + "eslint": "^9.36.0", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jest": "^28.9.0", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-sonarjs": "^3.0.5", "fs-extra": "^11.2.0", "jasmine-core": "~5.1.1", "karma": "~6.4.2", @@ -79,6 +79,7 @@ "tinymce": "^6.8.6", "ts-node": "~10.9.2", "typescript": "^5.5.4", + "typescript-eslint": "^8.45.0", "webpack": "^5.101.2" } }, @@ -353,36 +354,6 @@ "node": ">=4.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/@angular-devkit/build-angular/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/globby": { "version": "14.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", @@ -765,21 +736,22 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.4.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.4.3.tgz", - "integrity": "sha512-zdrA8mR98X+U4YgHzUKmivRU+PxzwOL/j8G7eTOvBuq8GPzsP+hvak+tyxlgeGm9HsvpFj9ERHLtJ0xDUPs8fg==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-20.3.0.tgz", + "integrity": "sha512-QwuNnmRNr/uNj89TxknPbGcs5snX1w7RoJJPNAsfb2QGcHzUTQovS8hqm9kaDZdpUJDPP7jt7B6F0+EjrPAXRA==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.4.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.4.3.tgz", - "integrity": "sha512-AyJbupiwTBR81P6T59v+aULEnPpZBCBxL2S5QFWfAhNCwWhcof4GihvdK2Z87yhvzDGeAzUFSWl/beJfeFa+PA==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-20.3.0.tgz", + "integrity": "sha512-7ghzGTiExrgTetDQ6IPP5uXSa94Xhtzp2VHCIa58EcUb7oMv06HWZ1Uss3xgFmACsLpN+vayKJIdFiboqaGVRA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.4.3", - "@angular-eslint/utils": "18.4.3" + "@angular-eslint/bundled-angular-compiler": "20.3.0", + "@angular-eslint/utils": "20.3.0", + "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -788,32 +760,46 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.4.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.4.3.tgz", - "integrity": "sha512-ijGlX2N01ayMXTpeQivOA31AszO8OEbu9ZQUCxnu9AyMMhxyi2q50bujRChAvN9YXQfdQtbxuajxV6+aiWb5BQ==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-20.3.0.tgz", + "integrity": "sha512-WMJDJfybOLCiN4QrOyrLl+Zt5F+A/xoDYMWTdn+LgACheLs2tguVQiwf+oCgHnHGcsTsulPYlRHldKBGZMgs4w==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.4.3", - "@angular-eslint/utils": "18.4.3", + "@angular-eslint/bundled-angular-compiler": "20.3.0", + "@angular-eslint/utils": "20.3.0", "aria-query": "5.3.2", "axobject-query": "4.1.0" }, "peerDependencies": { + "@angular-eslint/template-parser": "20.3.0", "@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", "typescript": "*" } }, + "node_modules/@angular-eslint/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/@angular-eslint/template-parser": { - "version": "18.4.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.4.3.tgz", - "integrity": "sha512-JZMPtEB8yNip3kg4WDEWQyObSo2Hwf+opq2ElYuwe85GQkGhfJSJ2CQYo4FSwd+c5MUQAqESNRg9QqGYauDsiw==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-20.3.0.tgz", + "integrity": "sha512-gB564h/kZ7siWvgHDETU++sk5e25qFfVaizLaa6KoBEYFP6dOCiedz15LTcA0TsXp0rGu6Z6zkl291iSM1qzDA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.4.3", + "@angular-eslint/bundled-angular-compiler": "20.3.0", "eslint-scope": "^8.0.2" }, "peerDependencies": { @@ -822,13 +808,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "18.4.3", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.4.3.tgz", - "integrity": "sha512-w0bJ9+ELAEiPBSTPPm9bvDngfu1d8JbzUhvs2vU+z7sIz/HMwUZT5S4naypj2kNN0gZYGYrW0lt+HIbW87zTAQ==", + "version": "20.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-20.3.0.tgz", + "integrity": "sha512-7XOQeNXgyhznDwoP1TwPrCMq/uXKJHQgCVPFREkJGKbNf/jzNldB7iV1eqpBzUQIPEQFgfcDG67dexpMAq3N4g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.4.3" + "@angular-eslint/bundled-angular-compiler": "20.3.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -938,36 +924,6 @@ } } }, - "node_modules/@angular/build/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/@angular/build/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@angular/build/node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -3122,6 +3078,65 @@ "node": ">=6.9.0" } }, + "node_modules/@cacheable/memoize": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@cacheable/memoize/-/memoize-2.0.3.tgz", + "integrity": "sha512-hl9wfQgpiydhQEIv7fkjEzTGE+tcosCXLKFDO707wYJ/78FVOlowb36djex5GdbSyeHnG62pomYLMuV/OT8Pbw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cacheable/utils": "^2.0.3" + } + }, + "node_modules/@cacheable/memory": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.3.tgz", + "integrity": "sha512-R3UKy/CKOyb1LZG/VRCTMcpiMDyLH7SH3JrraRdK6kf3GweWCOU3sgvE13W3TiDRbxnDKylzKJvhUAvWl9LQOA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@cacheable/memoize": "^2.0.3", + "@cacheable/utils": "^2.0.3", + "@keyv/bigmap": "^1.0.2", + "hookified": "^1.12.1", + "keyv": "^5.5.3" + } + }, + "node_modules/@cacheable/memory/node_modules/keyv": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz", + "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, + "node_modules/@cacheable/utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.1.0.tgz", + "integrity": "sha512-ZdxfOiaarMqMj+H7qwlt5EBKWaeGihSYVHdQv5lUsbn8MJJOTW82OIwirQ39U5tMZkNvy3bQE+ryzC+xTAb9/g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "keyv": "^5.5.3" + } + }, + "node_modules/@cacheable/utils/node_modules/keyv": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz", + "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@keyv/serialize": "^1.1.1" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -3133,18 +3148,18 @@ } }, "node_modules/@commitlint/cli": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", - "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.1.0.tgz", + "integrity": "sha512-pW5ujjrOovhq5RcYv5xCpb4GkZxkO2+GtOdBW2/qrr0Ll9tl3PX0aBBobGQl3mdZUbOBgwAexEQLeH6uxL0VYg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/format": "^19.8.1", - "@commitlint/lint": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/read": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/format": "^20.0.0", + "@commitlint/lint": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/read": "^20.0.0", + "@commitlint/types": "^20.0.0", "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, @@ -3155,30 +3170,60 @@ "node": ">=v18" } }, + "node_modules/@commitlint/cli/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/config-validator": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", - "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.0.0.tgz", + "integrity": "sha512-BeyLMaRIJDdroJuYM2EGhDMGwVBMZna9UiIqV9hxj+J551Ctc6yoGuGSmghOy/qPhBSuhA6oMtbEiTmxECafsg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "ajv": "^8.11.0" }, "engines": { "node": ">=v18" } }, + "node_modules/@commitlint/config-validator/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/ensure": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", - "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.0.0.tgz", + "integrity": "sha512-WBV47Fffvabe68n+13HJNFBqiMH5U1Ryls4W3ieGwPC0C7kJqp3OVQQzG2GXqOALmzrgAB+7GXmyy8N9ct8/Fg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -3189,10 +3234,25 @@ "node": ">=v18" } }, + "node_modules/@commitlint/ensure/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/execute-rule": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", - "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", + "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", "dev": true, "license": "MIT", "peer": true, @@ -3201,14 +3261,29 @@ } }, "node_modules/@commitlint/format": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", - "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.0.0.tgz", + "integrity": "sha512-zrZQXUcSDmQ4eGGrd+gFESiX0Rw+WFJk7nW4VFOmxub4mAATNKBQ4vNw5FgMCVehLUKG2OT2LjOqD0Hk8HvcRg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@commitlint/types": "^20.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/types": "^19.8.1", + "@types/conventional-commits-parser": "^5.0.0", "chalk": "^5.3.0" }, "engines": { @@ -3216,49 +3291,79 @@ } }, "node_modules/@commitlint/is-ignored": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", - "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.0.0.tgz", + "integrity": "sha512-ayPLicsqqGAphYIQwh9LdAYOVAQ9Oe5QCgTNTj+BfxZb9b/JW222V5taPoIBzYnAP0z9EfUtljgBk+0BN4T4Cw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "semver": "^7.6.0" }, "engines": { "node": ">=v18" } }, + "node_modules/@commitlint/is-ignored/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/lint": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", - "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.0.0.tgz", + "integrity": "sha512-kWrX8SfWk4+4nCexfLaQT3f3EcNjJwJBsSZ5rMBw6JCd6OzXufFHgel2Curos4LKIxwec9WSvs2YUD87rXlxNQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@commitlint/is-ignored": "^20.0.0", + "@commitlint/parse": "^20.0.0", + "@commitlint/rules": "^20.0.0", + "@commitlint/types": "^20.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/is-ignored": "^19.8.1", - "@commitlint/parse": "^19.8.1", - "@commitlint/rules": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/load": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", - "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.1.0.tgz", + "integrity": "sha512-qo9ER0XiAimATQR5QhvvzePfeDfApi/AFlC1G+YN+ZAY8/Ua6IRrDrxRvQAr+YXUKAxUsTDSp9KXeXLBPsNRWg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/execute-rule": "^19.8.1", - "@commitlint/resolve-extends": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/config-validator": "^20.0.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.1.0", + "@commitlint/types": "^20.0.0", "chalk": "^5.3.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", @@ -3270,10 +3375,25 @@ "node": ">=v18" } }, + "node_modules/@commitlint/load/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/message": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", - "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.0.0.tgz", + "integrity": "sha512-gLX4YmKnZqSwkmSB9OckQUrI5VyXEYiv3J5JKZRxIp8jOQsWjZgHSG/OgEfMQBK9ibdclEdAyIPYggwXoFGXjQ==", "dev": true, "license": "MIT", "peer": true, @@ -3282,14 +3402,14 @@ } }, "node_modules/@commitlint/parse": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", - "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.0.0.tgz", + "integrity": "sha512-j/PHCDX2bGM5xGcWObOvpOc54cXjn9g6xScXzAeOLwTsScaL4Y+qd0pFC6HBwTtrH92NvJQc+2Lx9HFkVi48cg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "conventional-changelog-angular": "^7.0.0", "conventional-commits-parser": "^5.0.0" }, @@ -3297,16 +3417,31 @@ "node": ">=v18" } }, + "node_modules/@commitlint/parse/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, "node_modules/@commitlint/read": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", - "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.0.0.tgz", + "integrity": "sha512-Ti7Y7aEgxsM1nkwA4ZIJczkTFRX/+USMjNrL9NXwWQHqNqrBX2iMi+zfuzZXqfZ327WXBjdkRaytJ+z5vNqTOA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/top-level": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/top-level": "^20.0.0", + "@commitlint/types": "^20.0.0", "git-raw-commits": "^4.0.0", "minimist": "^1.2.8", "tinyexec": "^1.0.0" @@ -3315,73 +3450,79 @@ "node": ">=v18" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", - "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "node_modules/@commitlint/read/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/types": "^19.8.1", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/rules": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", - "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "node_modules/@commitlint/resolve-extends": { + "version": "20.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.1.0.tgz", + "integrity": "sha512-cxKXQrqHjZT3o+XPdqDCwOWVFQiae++uwd9dUBC7f2MdV58ons3uUvASdW7m55eat5sRiQ6xUHyMWMRm6atZWw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/message": "^19.8.1", - "@commitlint/to-lines": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/config-validator": "^20.0.0", + "@commitlint/types": "^20.0.0", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/to-lines": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", - "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "node_modules/@commitlint/resolve-extends/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, "license": "MIT", "peer": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/top-level": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", - "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "node_modules/@commitlint/rules": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.0.0.tgz", + "integrity": "sha512-gvg2k10I/RfvHn5I5sxvVZKM1fl72Sqrv2YY/BnM7lMHcYqO0E2jnRWoYguvBfEcZ39t+rbATlciggVe77E4zA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "find-up": "^7.0.0" + "@commitlint/ensure": "^20.0.0", + "@commitlint/message": "^20.0.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.0.0" }, "engines": { "node": ">=v18" } }, - "node_modules/@commitlint/types": { - "version": "19.8.1", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", - "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "node_modules/@commitlint/rules/node_modules/@commitlint/types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.0.0.tgz", + "integrity": "sha512-bVUNBqG6aznYcYjTjnc3+Cat/iBgbgpflxbIBTnsHTX0YVpnmINPEkSRWymT2Q8aSH3Y7aKnEbunilkYe8TybA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/conventional-commits-parser": "^5.0.0", "chalk": "^5.3.0" @@ -3390,32 +3531,71 @@ "node": ">=v18" } }, - "node_modules/@cspell/cspell-bundled-dicts": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.2.0.tgz", - "integrity": "sha512-e4qb78SQWqHkRw47W8qFJ3RPijhSLkADF+T0oH8xl3r/golq1RGp2/KrWOqGRRofUSTiIKYqaMX7mbAyFnOxyA==", - "dev": true, + "node_modules/@commitlint/to-lines": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", + "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.0.0.tgz", + "integrity": "sha512-drXaPSP2EcopukrUXvUXmsQMu3Ey/FuJDc/5oiW4heoCfoE5BdLQyuc7veGeE3aoQaTVqZnh4D5WTWe2vefYKg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@cspell/cspell-bundled-dicts": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-9.2.1.tgz", + "integrity": "sha512-85gHoZh3rgZ/EqrHIr1/I4OLO53fWNp6JZCqCdgaT7e3sMDaOOG6HoSxCvOnVspXNIf/1ZbfTCDMx9x79Xq0AQ==", + "dev": true, "license": "MIT", "peer": true, "dependencies": { "@cspell/dict-ada": "^4.1.1", "@cspell/dict-al": "^1.1.1", - "@cspell/dict-aws": "^4.0.12", + "@cspell/dict-aws": "^4.0.15", "@cspell/dict-bash": "^4.2.1", - "@cspell/dict-companies": "^3.2.2", - "@cspell/dict-cpp": "^6.0.9", + "@cspell/dict-companies": "^3.2.5", + "@cspell/dict-cpp": "^6.0.12", "@cspell/dict-cryptocurrencies": "^5.0.5", "@cspell/dict-csharp": "^4.0.7", "@cspell/dict-css": "^4.0.18", "@cspell/dict-dart": "^2.3.1", "@cspell/dict-data-science": "^2.0.9", "@cspell/dict-django": "^4.1.5", - "@cspell/dict-docker": "^1.1.15", + "@cspell/dict-docker": "^1.1.16", "@cspell/dict-dotnet": "^5.0.10", "@cspell/dict-elixir": "^4.0.8", - "@cspell/dict-en_us": "^4.4.15", - "@cspell/dict-en-common-misspellings": "^2.1.3", - "@cspell/dict-en-gb-mit": "^3.1.5", + "@cspell/dict-en_us": "^4.4.18", + "@cspell/dict-en-common-misspellings": "^2.1.5", + "@cspell/dict-en-gb-mit": "^3.1.8", "@cspell/dict-filetypes": "^3.0.13", "@cspell/dict-flutter": "^1.1.1", "@cspell/dict-fonts": "^4.0.5", @@ -3439,17 +3619,17 @@ "@cspell/dict-markdown": "^2.0.12", "@cspell/dict-monkeyc": "^1.0.11", "@cspell/dict-node": "^5.0.8", - "@cspell/dict-npm": "^5.2.12", + "@cspell/dict-npm": "^5.2.15", "@cspell/dict-php": "^4.0.15", "@cspell/dict-powershell": "^5.0.15", - "@cspell/dict-public-licenses": "^2.0.14", + "@cspell/dict-public-licenses": "^2.0.15", "@cspell/dict-python": "^4.2.19", "@cspell/dict-r": "^2.1.1", "@cspell/dict-ruby": "^5.0.9", "@cspell/dict-rust": "^4.0.12", "@cspell/dict-scala": "^5.0.8", "@cspell/dict-shell": "^1.1.1", - "@cspell/dict-software-terms": "^5.1.4", + "@cspell/dict-software-terms": "^5.1.7", "@cspell/dict-sql": "^2.2.1", "@cspell/dict-svelte": "^1.0.7", "@cspell/dict-swift": "^2.0.6", @@ -3462,23 +3642,23 @@ } }, "node_modules/@cspell/cspell-json-reporter": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.2.0.tgz", - "integrity": "sha512-qHdkW8eyknCSDEsqCG8OHBMal03LQf21H2LVWhtwszEQ4BQRKcWctc+VIgkO69F/jLaN2wi/yhhMufXWHAEzIg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-9.2.1.tgz", + "integrity": "sha512-LiiIWzLP9h2etKn0ap6g2+HrgOGcFEF/hp5D8ytmSL5sMxDcV13RrmJCEMTh1axGyW0SjQEFjPnYzNpCL1JjGA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-types": "9.2.0" + "@cspell/cspell-types": "9.2.1" }, "engines": { "node": ">=20" } }, "node_modules/@cspell/cspell-pipe": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-9.2.0.tgz", - "integrity": "sha512-RO3adcsr7Ek+4511nyEOWDhOYYU1ogRs1Mo5xx3kDIdcKAJzhFdGry35T2wqft4dPASLCXcemBrhoS+hdQ+z+Q==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-9.2.1.tgz", + "integrity": "sha512-2N1H63If5cezLqKToY/YSXon4m4REg/CVTFZr040wlHRbbQMh5EF3c7tEC/ue3iKAQR4sm52ihfqo1n4X6kz+g==", "dev": true, "license": "MIT", "peer": true, @@ -3487,9 +3667,9 @@ } }, "node_modules/@cspell/cspell-resolver": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-9.2.0.tgz", - "integrity": "sha512-0Xvwq0iezfO71Alw+DjsGxacAzydqOAxdXnY4JknHuxt2l8GTSMjRwj65QAflv3PN6h1QoRZEeWdiKtusceWAw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-9.2.1.tgz", + "integrity": "sha512-fRPQ6GWU5eyh8LN1TZblc7t24TlGhJprdjJkfZ+HjQo+6ivdeBPT7pC7pew6vuMBQPS1oHBR36hE0ZnJqqkCeg==", "dev": true, "license": "MIT", "peer": true, @@ -3501,9 +3681,9 @@ } }, "node_modules/@cspell/cspell-service-bus": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-9.2.0.tgz", - "integrity": "sha512-ZDvcOTFk3cCVW+OjlkljeP7aSuV8tIguVn+GMco1/A+961hsEP20hngK9zJtyfpXqyvJKtvCVlyzS+z8VRrZGg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-9.2.1.tgz", + "integrity": "sha512-k4M6bqdvWbcGSbcfLD7Lf4coZVObsISDW+sm/VaWp9aZ7/uwiz1IuGUxL9WO4JIdr9CFEf7Ivmvd2txZpVOCIA==", "dev": true, "license": "MIT", "peer": true, @@ -3512,9 +3692,9 @@ } }, "node_modules/@cspell/cspell-types": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-9.2.0.tgz", - "integrity": "sha512-hL4ltFwiARpFxlfXt4GiTWQxIFyZp4wrlp7dozZbitYO6QlYc5fwQ8jBc5zFUqknuH4gx/sCMLNXhAv3enNGZQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-9.2.1.tgz", + "integrity": "sha512-FQHgQYdTHkcpxT0u1ddLIg5Cc5ePVDcLg9+b5Wgaubmc5I0tLotgYj8c/mvStWuKsuZIs6sUopjJrE91wk6Onw==", "dev": true, "license": "MIT", "peer": true, @@ -3539,9 +3719,9 @@ "peer": true }, "node_modules/@cspell/dict-aws": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.14.tgz", - "integrity": "sha512-qLPR+OFmpzyUcuUYyCQFIURDDUGIlQsdGirPyvaIrXxs2giCKG97cAuFz5EleL3/Lo7uJAVDw0lt4Ka7wIRhjQ==", + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.15.tgz", + "integrity": "sha512-aPY7VVR5Os4rz36EaqXBAEy14wR4Rqv+leCJ2Ug/Gd0IglJpM30LalF3e2eJChnjje3vWoEC0Rz3+e5gpZG+Kg==", "dev": true, "license": "MIT", "peer": true @@ -3558,17 +3738,17 @@ } }, "node_modules/@cspell/dict-companies": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.2.3.tgz", - "integrity": "sha512-7ekwamRYeS7G3I3LEKM3t0WIyAytCbsx2I2h2z2eEvF+b3TmtJVcV7UI7BScLue3bep4sPB/b4CV3BUv3QfyzQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.2.5.tgz", + "integrity": "sha512-H51R0w7c6RwJJPqH7Gs65tzP6ouZsYDEHmmol6MIIk0kQaOIBuFP2B3vIxHLUr2EPRVFZsMW8Ni7NmVyaQlwsg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@cspell/dict-cpp": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-6.0.9.tgz", - "integrity": "sha512-Xdq9MwGh0D5rsnbOqFW24NIClXXRhN11KJdySMibpcqYGeomxB2ODFBuhj1H7azO7kVGkGH0Okm4yQ2TRzBx0g==", + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-6.0.12.tgz", + "integrity": "sha512-N4NsCTttVpMqQEYbf0VQwCj6np+pJESov0WieCN7R/0aByz4+MXEiDieWWisaiVi8LbKzs1mEj4ZTw5K/6O2UQ==", "dev": true, "license": "MIT", "peer": true @@ -3646,25 +3826,25 @@ "peer": true }, "node_modules/@cspell/dict-en_us": { - "version": "4.4.16", - "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.16.tgz", - "integrity": "sha512-/R47sUbUmba2dG/0LZyE6P6gX/DRF1sCcYNQNWyPk/KeidQRNZG+FH9U0KRvX42/2ZzMge6ebXH3WAJ52w0Vqw==", + "version": "4.4.19", + "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.4.19.tgz", + "integrity": "sha512-JYYgzhGqSGuIMNY1cTlmq3zrNpehrExMHqLmLnSM2jEGFeHydlL+KLBwBYxMy4e73w+p1+o/rmAiGsMj9g3MCw==", "dev": true, "license": "MIT", "peer": true }, "node_modules/@cspell/dict-en-common-misspellings": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.1.3.tgz", - "integrity": "sha512-v1I97Hr1OrK+mwHsVzbY4vsPxx6mA5quhxzanF6XuRofz00wH4HPz8Q3llzRHxka5Wl/59gyan04UkUrvP4gdA==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.1.6.tgz", + "integrity": "sha512-xV9yryOqZizbSqxRS7kSVRrxVEyWHUqwdY56IuT7eAWGyTCJNmitXzXa4p+AnEbhL+AB2WLynGVSbNoUC3ceFA==", "dev": true, "license": "CC BY-SA 4.0", "peer": true }, "node_modules/@cspell/dict-en-gb-mit": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.6.tgz", - "integrity": "sha512-3JJGxuPhDK5rMDYPzJYAdjjsBddEyV54rXfUQpOCl7c7weMhNDWfC2q4h3cKNDj7Isud1q2RM+DlSxQWf40OTw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb-mit/-/dict-en-gb-mit-3.1.9.tgz", + "integrity": "sha512-1lSnphnHTOxnpNLpPLg1XXv8df3hs4oL0LJ6dkQ0IqNROl8Jzl6PD55BDTlKy4YOAA76dJlePB0wyrxB+VVKbg==", "dev": true, "license": "MIT", "peer": true @@ -3860,9 +4040,9 @@ "peer": true }, "node_modules/@cspell/dict-npm": { - "version": "5.2.13", - "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.13.tgz", - "integrity": "sha512-yE7DfpiQjDFW6TLr5/fsSj4BlUy1A8lsuz2LQQHv4lQAAkZ4RsePYFL9DkRRfEtxn8CZYetUnU74/jQbfsnyrA==", + "version": "5.2.17", + "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.2.17.tgz", + "integrity": "sha512-0yp7lBXtN3CtxBrpvTu/yAuPdOHR2ucKzPxdppc3VKO068waZNpKikn1NZCzBS3dIAFGVITzUPtuTXxt9cxnSg==", "dev": true, "license": "MIT", "peer": true @@ -3884,9 +4064,9 @@ "peer": true }, "node_modules/@cspell/dict-public-licenses": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.14.tgz", - "integrity": "sha512-8NhNzQWALF6+NlLeKZKilSHbeW9MWeiD+NcrjehMAcovKFbsn8smmQG/bVxw+Ymtd6WEgNpLgswAqNsbSQQ4og==", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.15.tgz", + "integrity": "sha512-cJEOs901H13Pfy0fl4dCD1U+xpWIMaEPq8MeYU83FfDZvellAuSo4GqWCripfIqlhns/L6+UZEIJSOZnjgy7Wg==", "dev": true, "license": "MIT", "peer": true @@ -3943,9 +4123,9 @@ "peer": true }, "node_modules/@cspell/dict-software-terms": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.5.tgz", - "integrity": "sha512-MX5beBP3pLmIM0mjqfrHbie3EEfyLWZ8ZqW56jcLuRlLoDcfC0FZsr66NCARgCgEwsWiidHFe87+7fFsnwqY6A==", + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-5.1.8.tgz", + "integrity": "sha512-iwCHLP11OmVHEX2MzE8EPxpPw7BelvldxWe5cJ3xXIDL8TjF2dBTs2noGcrqnZi15SLYIlO8897BIOa33WHHZA==", "dev": true, "license": "MIT", "peer": true @@ -3999,24 +4179,24 @@ "peer": true }, "node_modules/@cspell/dynamic-import": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-9.2.0.tgz", - "integrity": "sha512-2/k4LR8CQqbgIPQGELbCdt9xgg9+aQ7pMwOtllKvnFYBtwNiwqcZjlzAam2gtvD5DghKX2qrcSHG5A7YP5cX9A==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-9.2.1.tgz", + "integrity": "sha512-izYQbk7ck0ffNA1gf7Gi3PkUEjj+crbYeyNK1hxHx5A+GuR416ozs0aEyp995KI2v9HZlXscOj3SC3wrWzHZeA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/url": "9.2.0", - "import-meta-resolve": "^4.1.0" + "@cspell/url": "9.2.1", + "import-meta-resolve": "^4.2.0" }, "engines": { "node": ">=20" } }, "node_modules/@cspell/filetypes": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-9.2.0.tgz", - "integrity": "sha512-6wmCa3ZyI647H7F4w6kb9PCJ703JKSgFTB8EERTdIoGySbgVp5+qMIIoZ//wELukdjgcufcFZ5pBrhRDRsemRA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/filetypes/-/filetypes-9.2.1.tgz", + "integrity": "sha512-Dy1y1pQ+7hi2gPs+jERczVkACtYbUHcLodXDrzpipoxgOtVxMcyZuo+84WYHImfu0gtM0wU2uLObaVgMSTnytw==", "dev": true, "license": "MIT", "peer": true, @@ -4025,9 +4205,9 @@ } }, "node_modules/@cspell/strong-weak-map": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-9.2.0.tgz", - "integrity": "sha512-5mpIMiIOCu4cBqy1oCTXISgJuOCQ6R/e38AkvnYWfmMIx7fCdx8n+mF52wX9m61Ng28Sq8VL253xybsWcCxHug==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-9.2.1.tgz", + "integrity": "sha512-1HsQWZexvJSjDocVnbeAWjjgqWE/0op/txxzDPvDqI2sE6pY0oO4Cinj2I8z+IP+m6/E6yjPxdb23ydbQbPpJQ==", "dev": true, "license": "MIT", "peer": true, @@ -4036,9 +4216,9 @@ } }, "node_modules/@cspell/url": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@cspell/url/-/url-9.2.0.tgz", - "integrity": "sha512-plB0wwdAESqBl4xDAT2db2/K1FZHJXfYlJTiV6pkn0XffTGyg4UGLaSCm15NzUoPxdSmzqj5jQb7y+mB9kFK8g==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@cspell/url/-/url-9.2.1.tgz", + "integrity": "sha512-9EHCoGKtisPNsEdBQ28tKxKeBmiVS3D4j+AN8Yjr+Dmtu+YACKGWiMOddNZG2VejQNIdFx7FwzU00BGX68ELhA==", "dev": true, "license": "MIT", "peer": true, @@ -4189,15 +4369,15 @@ } }, "node_modules/@dual-bundle/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz", + "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==", "dev": true, "license": "MIT", "peer": true, "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/JounQin" } }, "node_modules/@eggjs/yauzl": { @@ -4654,9 +4834,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -4682,17 +4862,82 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -4700,7 +4945,7 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -4755,13 +5000,64 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/config-array": { @@ -4771,6 +5067,7 @@ "deprecated": "Use @eslint/config-array instead", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -4786,6 +5083,7 @@ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4797,6 +5095,7 @@ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4824,7 +5123,22 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@inquirer/checkbox": { "version": "4.2.1", @@ -5466,10 +5780,24 @@ "tslib": "2" } }, + "node_modules/@keyv/bigmap": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.0.3.tgz", + "integrity": "sha512-jUEkNlnE9tYzX2AIBeoSe1gVUvSOfIOQ5EFPL5Un8cFHGvjD9L/fxpxlS1tEivRLHgapO2RZJ3D93HYAa049pg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hookified": "^1.12.1" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/@keyv/serialize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.0.tgz", - "integrity": "sha512-RlDgexML7Z63Q8BSaqhXdCYNBy/JQnqYIwxofUrNLGCblOMHp+xux2Q8nLMLlPpgHQPoU0Do8Z6btCpRBEqZ8g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", + "integrity": "sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==", "dev": true, "license": "MIT", "peer": true @@ -6714,27 +7042,43 @@ "postcss-styled-syntax": "^0.6.4" } }, - "node_modules/@pega/constellationjs": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-0.25.1.tgz", - "integrity": "sha512-Tu+4ktczEnnbkz87uFPVeECcPA7QFDhQ3/B6ooBhrIZG4GUbnhvma8neYwNUzV2fevM4eSxk57qU6nlGZyjfqA==", + "node_modules/@pega/configs/node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "See LICENSE in LICENSE file or 'ConstellationJS Engine License.pdf' in dist/", + "license": "MIT", + "peer": true, "dependencies": { - "fs-extra": "^11.2.0" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@pega/cspell-config": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@pega/cspell-config/-/cspell-config-0.16.3.tgz", - "integrity": "sha512-EgYoN+O9wvN+URV+RWb2pwgC1MUSHAhi17d4t+YPzl0XcKA2MBHQMt56PLjKOOP6VBcRqGe3mFF/FPl4YwarJg==", + "node_modules/@pega/configs/node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, - "license": "SEE LICENSE IN LICENSE", - "peerDependencies": { - "cspell": ">=5.6.0" + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@pega/eslint-config": { + "node_modules/@pega/configs/node_modules/@pega/eslint-config": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@pega/eslint-config/-/eslint-config-0.16.3.tgz", "integrity": "sha512-7k8p2C9LA6qYqlCVo49k2CuERCEsFD+LK+sh0XYMFYtQH22fI5ePLWgA3/wi/5frhE19s/rVV0/5RPLzRGMrrQ==", @@ -6760,25 +7104,833 @@ "eslint-plugin-testing-library": "^5.10.2" } }, - "node_modules/@pega/pcore-pconnect-typedefs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@pega/pcore-pconnect-typedefs/-/pcore-pconnect-typedefs-4.1.0.tgz", - "integrity": "sha512-eMJ5M5H/oKnR22yH7pE5RAU3D/oLGNI0mJD2Dinqdyg9l2hUNVzifkRhy6kG58eyorcnnDAtmR11bY0FFNkezg==", - "dev": true, - "license": "See LICENSE in LICENSE file" - }, - "node_modules/@pega/prettier-config": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@pega/prettier-config/-/prettier-config-0.16.3.tgz", - "integrity": "sha512-Be+2DHGrmBpifor/7JFuifVX630XxaM7v6yqUo5kSvIwrOvZ5D1BUbaDrkh0Dg6l4BHpQ5Z4eTxpUnwyE9NMNQ==", + "node_modules/@pega/configs/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", "dev": true, - "license": "SEE LICENSE IN LICENSE", + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, "peerDependencies": { - "@prettier/plugin-xml": "^3.4.1", - "prettier": ">=3.0.0" - } - }, - "node_modules/@pega/stylelint-config": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@pega/configs/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@pega/configs/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@pega/configs/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@pega/configs/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@pega/configs/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", + "peer": true, + "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/@pega/configs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@pega/configs/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@pega/configs/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@pega/configs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@pega/configs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@pega/configs/node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@pega/configs/node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "license": "MIT", + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/@pega/configs/node_modules/eslint-config-airbnb-typescript": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", + "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-jest": { + "version": "28.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz", + "integrity": "sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "engines": { + "node": "^16.10.0 || ^18.12.0 || >=20.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", + "jest": "*" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-sonarjs": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.18.0.tgz", + "integrity": "sha512-DJ3osLnt6KFdT5e9ZuIDOjT5A6wUGSLeiJJT03lPgpdD+7CVWlYAw9Goe3bt7SmbFO3Xh89NOCZAuB9XA7bAUQ==", + "dev": true, + "license": "LGPL-3.0", + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@pega/configs/node_modules/eslint-plugin-testing-library/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pega/configs/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@pega/configs/node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@pega/configs/node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@pega/configs/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@pega/configs/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/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", + "peer": true + }, + "node_modules/@pega/configs/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@pega/configs/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@pega/configs/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@pega/configs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@pega/configs/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@pega/configs/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/configs/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pega/constellationjs": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@pega/constellationjs/-/constellationjs-0.25.1.tgz", + "integrity": "sha512-Tu+4ktczEnnbkz87uFPVeECcPA7QFDhQ3/B6ooBhrIZG4GUbnhvma8neYwNUzV2fevM4eSxk57qU6nlGZyjfqA==", + "dev": true, + "license": "See LICENSE in LICENSE file or 'ConstellationJS Engine License.pdf' in dist/", + "dependencies": { + "fs-extra": "^11.2.0" + } + }, + "node_modules/@pega/cspell-config": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@pega/cspell-config/-/cspell-config-0.16.3.tgz", + "integrity": "sha512-EgYoN+O9wvN+URV+RWb2pwgC1MUSHAhi17d4t+YPzl0XcKA2MBHQMt56PLjKOOP6VBcRqGe3mFF/FPl4YwarJg==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "cspell": ">=5.6.0" + } + }, + "node_modules/@pega/pcore-pconnect-typedefs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@pega/pcore-pconnect-typedefs/-/pcore-pconnect-typedefs-4.1.0.tgz", + "integrity": "sha512-eMJ5M5H/oKnR22yH7pE5RAU3D/oLGNI0mJD2Dinqdyg9l2hUNVzifkRhy6kG58eyorcnnDAtmR11bY0FFNkezg==", + "dev": true, + "license": "See LICENSE in LICENSE file" + }, + "node_modules/@pega/prettier-config": { + "version": "0.16.3", + "resolved": "https://registry.npmjs.org/@pega/prettier-config/-/prettier-config-0.16.3.tgz", + "integrity": "sha512-Be+2DHGrmBpifor/7JFuifVX630XxaM7v6yqUo5kSvIwrOvZ5D1BUbaDrkh0Dg6l4BHpQ5Z4eTxpUnwyE9NMNQ==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "peerDependencies": { + "@prettier/plugin-xml": "^3.4.1", + "prettier": ">=3.0.0" + } + }, + "node_modules/@pega/stylelint-config": { "version": "0.16.3", "resolved": "https://registry.npmjs.org/@pega/stylelint-config/-/stylelint-config-0.16.3.tgz", "integrity": "sha512-RZK9N3W/IFCgeeFSdA35bbgzge0TMGGrb3R0/QOjurF5YgX5eiM9FVt2VcD3G5iDgYGVYN6yBq3vatW7WtBcfQ==", @@ -7024,6 +8176,21 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.4.tgz", + "integrity": "sha512-0G2c2lpYtbTuXo8KEJkDkClE/+/2AFPdPAbmaHoE870foRFs4pBrDehilMcrSScrN/fB/1HTaWO4bqw+ewBzMQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, "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", @@ -7053,9 +8220,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", - "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.4.tgz", + "integrity": "sha512-teSACug1GyZHmPDv14VNbvZFX779UqWTsd7KtTM9JIZRDI5NUwYSIS30kzI8m06gOPB//jtpqlhmraQ68b5X2g==", "cpu": [ "ppc64" ], @@ -7082,9 +8249,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", - "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.4.tgz", + "integrity": "sha512-1HHmsRyh845QDpEWzOFtMCph5Ts+9+yllCrREuBR/vg2RogAQGGBRC8lDPrPOMnrdOJ+mt1WLMOC2Kao/UwcvA==", "cpu": [ "riscv64" ], @@ -7138,6 +8305,21 @@ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.4.tgz", + "integrity": "sha512-1ox+GqgRWqaB1RnyZXL8PD6E5f7YyRUJYnCqKpNzxzP0TkaUh112NDrR9Tt+C8rJ4x5G9Mk8PQR3o7Ku2RKqKA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "peer": true + }, "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", @@ -7166,6 +8348,21 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.4.tgz", + "integrity": "sha512-UF9KfsH9yEam0UjTwAgdK0anlQ7c8/pWPU2yVjyWcF1I1thABt6WXE47cI71pGiZ8wGvxohBoLnxM04L/wj8mQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, "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", @@ -7682,128 +8879,232 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz", + "integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/type-utils": "8.46.0", + "@typescript-eslint/utils": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", "graphemer": "^1.4.0", - "ignore": "^5.3.1", + "ignore": "^7.0.0", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", + "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/@typescript-eslint/parser/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=18.12" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "peerDependencies": { + "typescript": ">=4.8.4" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz", - "integrity": "sha512-dbK7Jvqcb8c9QfH01YB6pORpqX1mn5gDZc9n63Ak/+jD67oWXn3Gs0M6vddAN+eDXBCS5EmNWzbSxsn9SzFWWg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz", + "integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.38.0", - "@typescript-eslint/types": "^8.38.0", + "@typescript-eslint/tsconfig-utils": "^8.46.0", + "@typescript-eslint/types": "^8.46.0", "debug": "^4.3.4" }, "engines": { @@ -7814,7 +9115,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { @@ -7850,9 +9151,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz", - "integrity": "sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz", + "integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==", "dev": true, "license": "MIT", "engines": { @@ -7863,78 +9164,111 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz", + "integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" }, "peerDependencies": { - "eslint": "^8.56.0" + "typescript": ">=4.8.4" } }, "node_modules/@typescript-eslint/types": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz", - "integrity": "sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", "dev": true, "license": "MIT", "engines": { @@ -7989,16 +9323,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz", - "integrity": "sha512-hHcMA86Hgt+ijJlrD8fX0j1j8w4C92zue/8LOPAFioIno+W0+L7KqE8QZKCcPGc/92Vs9x36w/4MPTJhqXdyvg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz", + "integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/typescript-estree": "8.38.0" + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8009,18 +9343,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.38.0.tgz", - "integrity": "sha512-WJw3AVlFFcdT9Ri1xs/lg8LwDqgekWXWhH3iAF+1ZM+QPd7oxQ6jvtW/JPwzAScxitILUIFs0/AnQ/UWHzbATQ==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0" + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8031,16 +9365,16 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz", - "integrity": "sha512-fooELKcAKzxux6fA6pxOflpNS0jc+nOQEEOipXFNjSlBS6fqrJOVY/whSn70SScHrcJ2LDsxWrneFoWYSVfqhQ==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.38.0", - "@typescript-eslint/tsconfig-utils": "8.38.0", - "@typescript-eslint/types": "8.38.0", - "@typescript-eslint/visitor-keys": "8.38.0", + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -8056,17 +9390,17 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.38.0.tgz", - "integrity": "sha512-pWrTcoFNWuwHlA9CvlfSsGWs14JxfN1TH25zM5L7o0pRLhsoZkDnTsXfQRJBEWJoV5DL0jf+Z+sxiud+K0mq1g==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.38.0", + "@typescript-eslint/types": "8.46.0", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -8140,7 +9474,8 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/@vitejs/plugin-basic-ssl": { "version": "1.2.0", @@ -9487,26 +10822,30 @@ } }, "node_modules/cacheable": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.10.3.tgz", - "integrity": "sha512-M6p10iJ/VT0wT7TLIGUnm958oVrU2cUK8pQAVU21Zu7h8rbk/PeRtRWrvHJBql97Bhzk3g1N6+2VKC+Rjxna9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.1.0.tgz", + "integrity": "sha512-zzL1BxdnqwD69JRT0dihnawAcLkBMwAH+hZSKjUzeBbPedVhk3qYPjRw9VOMYWwt5xRih5xd8S+3kEdGohZm/g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "hookified": "^1.10.0", - "keyv": "^5.4.0" + "@cacheable/memoize": "^2.0.3", + "@cacheable/memory": "^2.0.3", + "@cacheable/utils": "^2.1.0", + "hookified": "^1.12.1", + "keyv": "^5.5.3", + "qified": "^0.5.0" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.4.0.tgz", - "integrity": "sha512-TMckyVjEoacG5IteUpUrOBsFORtheqziVyyY2dLUwg1jwTb8u48LX4TgmtogkNl9Y9unaEJ1luj10fGyjMGFOQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.5.3.tgz", + "integrity": "sha512-h0Un1ieD+HUrzBH6dJXhod3ifSghk5Hw/2Y4/KHBziPlZecrFyE9YOTPU6eOs0V9pYl8gOs86fkr/KN8lUX39A==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@keyv/serialize": "^1.1.0" + "@keyv/serialize": "^1.1.1" } }, "node_modules/call-bind": { @@ -9604,9 +10943,9 @@ } }, "node_modules/chalk-template": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz", - "integrity": "sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.2.tgz", + "integrity": "sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==", "dev": true, "license": "MIT", "peer": true, @@ -10029,9 +11368,9 @@ "license": "MIT" }, "node_modules/commander": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.0.tgz", - "integrity": "sha512-2uM9rYjPvyq39NwLRqaiLtWHyDC1FvryJDa2ATTVims5YAS4PupsEQsDvP14FqhFr0P49CYDugi59xaxJlTXRA==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.1.tgz", + "integrity": "sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==", "dev": true, "license": "MIT", "peer": true, @@ -10040,18 +11379,16 @@ } }, "node_modules/comment-json": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", - "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz", + "integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "array-timsort": "^1.0.3", "core-util-is": "^1.0.3", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" + "esprima": "^4.0.1" }, "engines": { "node": ">= 6" @@ -10412,14 +11749,14 @@ } }, "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.2.0.tgz", + "integrity": "sha512-GEN39v7TgdxgIoNcdkRE3uiAzQt3UXLyHbRHD6YoL048XAeOomyxaP+Hh/+2C6C2wYjxJ2onhJcsQp+L4YEkVQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "jiti": "^2.4.1" + "jiti": "^2.6.1" }, "engines": { "node": ">=v18" @@ -10453,27 +11790,27 @@ } }, "node_modules/cspell": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.2.0.tgz", - "integrity": "sha512-AKzaFMem2jRcGpAY2spKP0z15jpZeX1WTDNHCDsB8/YvnhnOfWXc0S5AF+4sfU1cQgHWYGFOolMuTri0ZQdV+Q==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-9.2.1.tgz", + "integrity": "sha512-PoKGKE9Tl87Sn/jwO4jvH7nTqe5Xrsz2DeJT5CkulY7SoL2fmsAqfbImQOFS2S0s36qD98t6VO+Ig2elEEcHew==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-json-reporter": "9.2.0", - "@cspell/cspell-pipe": "9.2.0", - "@cspell/cspell-types": "9.2.0", - "@cspell/dynamic-import": "9.2.0", - "@cspell/url": "9.2.0", - "chalk": "^5.4.1", + "@cspell/cspell-json-reporter": "9.2.1", + "@cspell/cspell-pipe": "9.2.1", + "@cspell/cspell-types": "9.2.1", + "@cspell/dynamic-import": "9.2.1", + "@cspell/url": "9.2.1", + "chalk": "^5.6.0", "chalk-template": "^1.1.0", "commander": "^14.0.0", - "cspell-config-lib": "9.2.0", - "cspell-dictionary": "9.2.0", - "cspell-gitignore": "9.2.0", - "cspell-glob": "9.2.0", - "cspell-io": "9.2.0", - "cspell-lib": "9.2.0", + "cspell-config-lib": "9.2.1", + "cspell-dictionary": "9.2.1", + "cspell-gitignore": "9.2.1", + "cspell-glob": "9.2.1", + "cspell-io": "9.2.1", + "cspell-lib": "9.2.1", "fast-json-stable-stringify": "^2.1.0", "flatted": "^3.3.3", "semver": "^7.7.2", @@ -10491,33 +11828,33 @@ } }, "node_modules/cspell-config-lib": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-9.2.0.tgz", - "integrity": "sha512-Yc8+hT+uIWWCi6WMhOL6HDYbBCP2qig1tgKGThHVeOx6GviieV10TZ5kQ+P7ONgoqw2nmm7uXIC19dGYx3DblQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-9.2.1.tgz", + "integrity": "sha512-qqhaWW+0Ilc7493lXAlXjziCyeEmQbmPMc1XSJw2EWZmzb+hDvLdFGHoX18QU67yzBtu5hgQsJDEDZKvVDTsRA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-types": "9.2.0", + "@cspell/cspell-types": "9.2.1", "comment-json": "^4.2.5", - "smol-toml": "^1.4.1", - "yaml": "^2.8.0" + "smol-toml": "^1.4.2", + "yaml": "^2.8.1" }, "engines": { "node": ">=20" } }, "node_modules/cspell-dictionary": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-9.2.0.tgz", - "integrity": "sha512-lV4VtjsDtxu8LyCcb6DY7Br4e/Aw1xfR8QvjYhHaJ8t03xry9STey5Rkfp+lz+hlVevNcn3lfCaacGuXyD+lLg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-9.2.1.tgz", + "integrity": "sha512-0hQVFySPsoJ0fONmDPwCWGSG6SGj4ERolWdx4t42fzg5zMs+VYGXpQW4BJneQ5Tfxy98Wx8kPhmh/9E8uYzLTw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-pipe": "9.2.0", - "@cspell/cspell-types": "9.2.0", - "cspell-trie-lib": "9.2.0", + "@cspell/cspell-pipe": "9.2.1", + "@cspell/cspell-types": "9.2.1", + "cspell-trie-lib": "9.2.1", "fast-equals": "^5.2.2" }, "engines": { @@ -10525,16 +11862,16 @@ } }, "node_modules/cspell-gitignore": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-9.2.0.tgz", - "integrity": "sha512-gXDQZ7czTPwmEg1qtsUIjVEFm9IfgTO8rA02O8eYIveqjFixbSV3fIYOgoxZSZYxjt3O44m8+/zAFC1RE4CM/Q==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-9.2.1.tgz", + "integrity": "sha512-WPnDh03gXZoSqVyXq4L7t9ljx6lTDvkiSRUudb125egEK5e9s04csrQpLI3Yxcnc1wQA2nzDr5rX9XQVvCHf7g==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/url": "9.2.0", - "cspell-glob": "9.2.0", - "cspell-io": "9.2.0" + "@cspell/url": "9.2.1", + "cspell-glob": "9.2.1", + "cspell-io": "9.2.1" }, "bin": { "cspell-gitignore": "bin.mjs" @@ -10544,14 +11881,14 @@ } }, "node_modules/cspell-glob": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-9.2.0.tgz", - "integrity": "sha512-viycZDyegzW2AKPFqvX5RveqTrB0sKgexlCu2A8z8eumpYYor5sD1NP05VDOqkAF4hDuiGqkHn6iNo0L1wNgLw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-9.2.1.tgz", + "integrity": "sha512-CrT/6ld3rXhB36yWFjrx1SrMQzwDrGOLr+wYEnrWI719/LTYWWCiMFW7H+qhsJDTsR+ku8+OAmfRNBDXvh9mnQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/url": "9.2.0", + "@cspell/url": "9.2.1", "picomatch": "^4.0.3" }, "engines": { @@ -10573,15 +11910,15 @@ } }, "node_modules/cspell-grammar": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-9.2.0.tgz", - "integrity": "sha512-qthAmWcNHpYAmufy7YWVg9xwrYANkVlI40bgC2uGd8EnKssm/qOPhqXXNS+kLf+q0NmJM5nMgRLhCC23xSp3JA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-9.2.1.tgz", + "integrity": "sha512-10RGFG7ZTQPdwyW2vJyfmC1t8813y8QYRlVZ8jRHWzer9NV8QWrGnL83F+gTPXiKR/lqiW8WHmFlXR4/YMV+JQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-pipe": "9.2.0", - "@cspell/cspell-types": "9.2.0" + "@cspell/cspell-pipe": "9.2.1", + "@cspell/cspell-types": "9.2.1" }, "bin": { "cspell-grammar": "bin.mjs" @@ -10591,44 +11928,44 @@ } }, "node_modules/cspell-io": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-9.2.0.tgz", - "integrity": "sha512-oxKiqFLcz629FmOId8UpdDznpMvCgpuktg4nkD2G9pYpRh+fRLZpP4QtZPyvJqvpUIzFhIOznMeHjsiBYHOZUA==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-9.2.1.tgz", + "integrity": "sha512-v9uWXtRzB+RF/Mzg5qMzpb8/yt+1bwtTt2rZftkLDLrx5ybVvy6rhRQK05gFWHmWVtWEe0P/pIxaG2Vz92C8Ag==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-service-bus": "9.2.0", - "@cspell/url": "9.2.0" + "@cspell/cspell-service-bus": "9.2.1", + "@cspell/url": "9.2.1" }, "engines": { "node": ">=20" } }, "node_modules/cspell-lib": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-9.2.0.tgz", - "integrity": "sha512-RnhDIsETw6Ex0UaK3PFoJ2FwWMWfJPtdpNpv1qgmJwoGD4CzwtIqPOLtZ24zqdCP8ZnNTF/lwV/9rZVqifYjsw==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-9.2.1.tgz", + "integrity": "sha512-KeB6NHcO0g1knWa7sIuDippC3gian0rC48cvO0B0B0QwhOxNxWVp8cSmkycXjk4ijBZNa++IwFjeK/iEqMdahQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-bundled-dicts": "9.2.0", - "@cspell/cspell-pipe": "9.2.0", - "@cspell/cspell-resolver": "9.2.0", - "@cspell/cspell-types": "9.2.0", - "@cspell/dynamic-import": "9.2.0", - "@cspell/filetypes": "9.2.0", - "@cspell/strong-weak-map": "9.2.0", - "@cspell/url": "9.2.0", + "@cspell/cspell-bundled-dicts": "9.2.1", + "@cspell/cspell-pipe": "9.2.1", + "@cspell/cspell-resolver": "9.2.1", + "@cspell/cspell-types": "9.2.1", + "@cspell/dynamic-import": "9.2.1", + "@cspell/filetypes": "9.2.1", + "@cspell/strong-weak-map": "9.2.1", + "@cspell/url": "9.2.1", "clear-module": "^4.1.2", "comment-json": "^4.2.5", - "cspell-config-lib": "9.2.0", - "cspell-dictionary": "9.2.0", - "cspell-glob": "9.2.0", - "cspell-grammar": "9.2.0", - "cspell-io": "9.2.0", - "cspell-trie-lib": "9.2.0", + "cspell-config-lib": "9.2.1", + "cspell-dictionary": "9.2.1", + "cspell-glob": "9.2.1", + "cspell-grammar": "9.2.1", + "cspell-io": "9.2.1", + "cspell-trie-lib": "9.2.1", "env-paths": "^3.0.0", "fast-equals": "^5.2.2", "gensequence": "^7.0.0", @@ -10657,33 +11994,33 @@ } }, "node_modules/cspell-trie-lib": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-9.2.0.tgz", - "integrity": "sha512-6GHL1KvLQzcPBSNY6QWOabq8YwRJAnNKamA0O/tRKy+11Hy99ysD4xvfu3kKYPAcobp5ZykX4nudHxy8yrEvng==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-9.2.1.tgz", + "integrity": "sha512-qOtbL+/tUzGFHH0Uq2wi7sdB9iTy66QNx85P7DKeRdX9ZH53uQd7qC4nEk+/JPclx1EgXX26svxr0jTGISJhLw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@cspell/cspell-pipe": "9.2.0", - "@cspell/cspell-types": "9.2.0", + "@cspell/cspell-pipe": "9.2.1", + "@cspell/cspell-types": "9.2.1", "gensequence": "^7.0.0" }, "engines": { "node": ">=20" } }, - "node_modules/cspell/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/cspell/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "license": "ISC", + "license": "MIT", "peer": true, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/css-functions-list": { @@ -10920,9 +12257,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -11131,6 +12468,7 @@ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -11744,127 +13082,64 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-airbnb": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", - "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5" - }, - "engines": { - "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + "optionator": "^0.9.3" }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0" - } - }, - "node_modules/eslint-config-airbnb-base": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", - "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", - "dev": true, - "license": "MIT", - "dependencies": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.5", - "semver": "^6.3.0" + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.2" - } - }, - "node_modules/eslint-config-airbnb-base/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-config-airbnb-typescript": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", - "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0" + "funding": { + "url": "https://eslint.org/donate" }, "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^7.0.0", - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { @@ -12048,20 +13323,20 @@ } }, "node_modules/eslint-plugin-jest": { - "version": "28.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.14.0.tgz", - "integrity": "sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==", + "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": { @@ -12161,16 +13436,16 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", - "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { "node": ">=10" }, "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "node_modules/eslint-plugin-react/node_modules/brace-expansion": { @@ -12239,16 +13514,38 @@ } }, "node_modules/eslint-plugin-sonarjs": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-0.18.0.tgz", - "integrity": "sha512-DJ3osLnt6KFdT5e9ZuIDOjT5A6wUGSLeiJJT03lPgpdD+7CVWlYAw9Goe3bt7SmbFO3Xh89NOCZAuB9XA7bAUQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-sonarjs/-/eslint-plugin-sonarjs-3.0.5.tgz", + "integrity": "sha512-dI62Ff3zMezUToi161hs2i1HX1ie8Ia2hO0jtNBfdgRBicAG4ydy2WPt0rMTrAe3ZrlqhpAO3w1jcQEdneYoFA==", "dev": true, - "license": "LGPL-3.0", - "engines": { - "node": ">=14" + "license": "LGPL-3.0-only", + "dependencies": { + "@eslint-community/regexpp": "4.12.1", + "builtin-modules": "3.3.0", + "bytes": "3.1.2", + "functional-red-black-tree": "1.0.1", + "jsx-ast-utils-x": "0.1.0", + "lodash.merge": "4.6.2", + "minimatch": "9.0.5", + "scslre": "0.3.0", + "semver": "7.7.2", + "typescript": ">=5" }, "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "eslint": "^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-sonarjs/node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-storybook": { @@ -12422,175 +13719,6 @@ "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" } }, - "node_modules/eslint-plugin-testing-library": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", - "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^5.58.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0", - "npm": ">=6" - }, - "peerDependencies": { - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint-plugin-testing-library/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/eslint-plugin-testing-library/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, "node_modules/eslint-scope": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", @@ -12702,18 +13830,14 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -12828,18 +13952,31 @@ } }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -13173,9 +14310,9 @@ "license": "MIT" }, "node_modules/fast-equals": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", - "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", "dev": true, "license": "MIT", "peer": true, @@ -13184,9 +14321,9 @@ } }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "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": { @@ -13194,7 +14331,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -13334,16 +14471,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -13455,18 +14592,17 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { @@ -13671,6 +14807,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true, + "license": "MIT" + }, "node_modules/functions-have-names": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", @@ -13968,29 +15111,13 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globals/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14099,17 +15226,6 @@ "node": ">=8" } }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -14182,9 +15298,9 @@ } }, "node_modules/hookified": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.11.0.tgz", - "integrity": "sha512-aDdIN3GyU5I6wextPplYdfmWCo+aLmjjVbntmX6HLD5RCi/xKsivYEBhnRD+d9224zFf008ZpLMPlWF0ZodYZw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.12.1.tgz", + "integrity": "sha512-xnKGl+iMIlhrZmGHB729MqlmPoWBznctSQTYCpFKqNsCgimJQmithcW0xSQMMFzYnV2iKUh25alswn6epgxS0Q==", "dev": true, "license": "MIT", "peer": true @@ -14554,9 +15670,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, "license": "MIT", "peer": true, @@ -15011,6 +16127,7 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -15433,9 +16550,9 @@ } }, "node_modules/jiti": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", - "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", "peer": true, @@ -15598,6 +16715,16 @@ "node": ">=4.0" } }, + "node_modules/jsx-ast-utils-x": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils-x/-/jsx-ast-utils-x-0.1.0.tgz", + "integrity": "sha512-eQQBjBnsVtGacsG9uJNB8qOr3yA8rga4wAaGG1qRcBzSIvfhERLrWxMAM1hp5fcS6Abo8M4+bUBTekYR0qTPQw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/karma": { "version": "6.4.4", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", @@ -19347,6 +20474,20 @@ "dev": true, "license": "MIT" }, + "node_modules/qified": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/qified/-/qified-0.5.0.tgz", + "integrity": "sha512-Zj6Q/Vc/SQ+Fzc87N90jJUzBzxD7MVQ2ZvGyMmYtnl2u1a07CejAhvtk4ZwASos+SiHKCAIylyGHJKIek75QBw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "hookified": "^1.12.1" + }, + "engines": { + "node": ">=20" + } + }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -19549,6 +20690,19 @@ "node": ">= 0.10" } }, + "node_modules/refa": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/refa/-/refa-0.12.1.tgz", + "integrity": "sha512-J8rn6v4DBb2nnFqkqwy6/NnTYMcgLA+sLr0iIO41qpv0n+ngb7ksag2tMRl0inb1bbO/esUwzW1vbJi7K0sI0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -19613,6 +20767,20 @@ "dev": true, "license": "MIT" }, + "node_modules/regexp-ast-analysis": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regexp-ast-analysis/-/regexp-ast-analysis-0.7.1.tgz", + "integrity": "sha512-sZuz1dYW/ZsfG17WSAG7eS85r5a0dDsvg+7BiiYR5o6lKCAtUrEwdmRmaGF6rwVj3LcmAeYkOWKEPlbPzN3Y3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.1" + }, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/regexp-to-ast": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.5.0.tgz", @@ -19692,17 +20860,6 @@ "node": ">=6" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -20158,6 +21315,21 @@ } } }, + "node_modules/scslre": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/scslre/-/scslre-0.3.0.tgz", + "integrity": "sha512-3A6sD0WYP7+QrjbfNA2FN3FsOaGGFoekCVgTyypy53gPxhbkCIjtO6YWgdrfM+n/8sI8JeXZOIxsHjMTNxQ4nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.8.0", + "refa": "^0.12.0", + "regexp-ast-analysis": "^0.7.0" + }, + "engines": { + "node": "^14.0.0 || >=16.0.0" + } + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -20180,9 +21352,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -20689,9 +21861,9 @@ } }, "node_modules/smol-toml": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.1.tgz", - "integrity": "sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.2.tgz", + "integrity": "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==", "dev": true, "license": "BSD-3-Clause", "peer": true, @@ -21390,9 +22562,9 @@ } }, "node_modules/stylelint": { - "version": "16.22.0", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.22.0.tgz", - "integrity": "sha512-SVEMTdjKNV4ollUrIY9ordZ36zHv2/PHzPjfPMau370MlL2VYXeLgSNMMiEbLGRO8RmD2R8/BVUeF2DfnfkC0w==", + "version": "16.25.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.25.0.tgz", + "integrity": "sha512-Li0avYWV4nfv1zPbdnxLYBGq4z8DVZxbRgx4Kn6V+Uftz1rMoF1qiEI3oL4kgWqyYgCgs7gT5maHNZ82Gk03vQ==", "dev": true, "funding": [ { @@ -21411,16 +22583,16 @@ "@csstools/css-tokenizer": "^3.0.4", "@csstools/media-query-list-parser": "^4.0.3", "@csstools/selector-specificity": "^5.0.0", - "@dual-bundle/import-meta-resolve": "^4.1.0", + "@dual-bundle/import-meta-resolve": "^4.2.1", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", - "debug": "^4.4.1", + "debug": "^4.4.3", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.1.1", + "file-entry-cache": "^10.1.4", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -21469,60 +22641,28 @@ "license": "MIT", "peer": true }, - "node_modules/stylelint/node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.3.tgz", - "integrity": "sha512-D+w75Ub8T55yor7fPgN06rkCAUbAYw2vpxJmmjv/GDAcvCnv9g7IvHhIZoxzRZThrXPFI2maeY24pPbtyYU7Lg==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.1.4.tgz", + "integrity": "sha512-5XRUFc0WTtUbjfGzEwXc42tiGxQHBmtbUG1h9L2apu4SulCGN3Hqm//9D6FAolf8MYNL7f/YlJl9vy08pj5JuA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "flat-cache": "^6.1.12" + "flat-cache": "^6.1.13" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.12.tgz", - "integrity": "sha512-U+HqqpZPPXP5d24bWuRzjGqVqUcw64k4nZAbruniDwdRg0H10tvN7H6ku1tjhA4rg5B9GS3siEvwO2qjJJ6f8Q==", + "version": "6.1.18", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.18.tgz", + "integrity": "sha512-JUPnFgHMuAVmLmoH9/zoZ6RHOt5n9NlUw/sDXsTbROJ2SFoS2DS4s+swAV6UTeTbGH/CAsZIE6M8TaG/3jVxgQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "cacheable": "^1.10.3", + "cacheable": "^2.1.0", "flatted": "^3.3.3", - "hookified": "^1.10.0" - } - }, - "node_modules/stylelint/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "hookified": "^1.12.0" } }, "node_modules/stylelint/node_modules/ignore": { @@ -22038,7 +23178,8 @@ "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/thingies": { "version": "2.5.0", @@ -22612,6 +23753,103 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.0.tgz", + "integrity": "sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.46.0", + "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/ua-parser-js": { "version": "0.7.40", "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", @@ -22886,9 +24124,9 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", + "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "dev": true, "license": "MIT", "peer": true, @@ -22962,9 +24200,9 @@ } }, "node_modules/vite/node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", - "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.4.tgz", + "integrity": "sha512-BTm2qKNnWIQ5auf4deoetINJm2JzvihvGb9R6K/ETwKLql/Bb3Eg2H1FBp1gUb4YGbydMA3jcmQTR73q7J+GAA==", "cpu": [ "arm" ], @@ -22977,9 +24215,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", - "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.4.tgz", + "integrity": "sha512-P9LDQiC5vpgGFgz7GSM6dKPCiqR3XYN1WwJKA4/BUVDjHpYsf3iBEmVz62uyq20NGYbiGPR5cNHI7T1HqxNs2w==", "cpu": [ "arm64" ], @@ -22992,9 +24230,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", - "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.4.tgz", + "integrity": "sha512-QRWSW+bVccAvZF6cbNZBJwAehmvG9NwfWHwMy4GbWi/BQIA/laTIktebT2ipVjNncqE6GLPxOok5hsECgAxGZg==", "cpu": [ "arm64" ], @@ -23007,9 +24245,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", - "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.4.tgz", + "integrity": "sha512-hZgP05pResAkRJxL1b+7yxCnXPGsXU0fG9Yfd6dUaoGk+FhdPKCJ5L1Sumyxn8kvw8Qi5PvQ8ulenUbRjzeCTw==", "cpu": [ "x64" ], @@ -23022,9 +24260,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", - "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.4.tgz", + "integrity": "sha512-xmc30VshuBNUd58Xk4TKAEcRZHaXlV+tCxIXELiE9sQuK3kG8ZFgSPi57UBJt8/ogfhAF5Oz4ZSUBN77weM+mQ==", "cpu": [ "arm64" ], @@ -23037,9 +24275,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", - "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.4.tgz", + "integrity": "sha512-WdSLpZFjOEqNZGmHflxyifolwAiZmDQzuOzIq9L27ButpCVpD7KzTRtEG1I0wMPFyiyUdOO+4t8GvrnBLQSwpw==", "cpu": [ "x64" ], @@ -23052,9 +24290,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", - "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.4.tgz", + "integrity": "sha512-xRiOu9Of1FZ4SxVbB0iEDXc4ddIcjCv2aj03dmW8UrZIW7aIQ9jVJdLBIhxBI+MaTnGAKyvMwPwQnoOEvP7FgQ==", "cpu": [ "arm" ], @@ -23067,9 +24305,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", - "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.4.tgz", + "integrity": "sha512-FbhM2p9TJAmEIEhIgzR4soUcsW49e9veAQCziwbR+XWB2zqJ12b4i/+hel9yLiD8pLncDH4fKIPIbt5238341Q==", "cpu": [ "arm" ], @@ -23082,9 +24320,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", - "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.4.tgz", + "integrity": "sha512-4n4gVwhPHR9q/g8lKCyz0yuaD0MvDf7dV4f9tHt0C73Mp8h38UCtSCSE6R9iBlTbXlmA8CjpsZoujhszefqueg==", "cpu": [ "arm64" ], @@ -23097,9 +24335,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", - "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.4.tgz", + "integrity": "sha512-u0n17nGA0nvi/11gcZKsjkLj1QIpAuPFQbR48Subo7SmZJnGxDpspyw2kbpuoQnyK+9pwf3pAoEXerJs/8Mi9g==", "cpu": [ "arm64" ], @@ -23111,25 +24349,10 @@ ], "peer": true }, - "node_modules/vite/node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", - "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "peer": true - }, "node_modules/vite/node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", - "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.4.tgz", + "integrity": "sha512-/MOEW3aHjjs1p4Pw1Xk4+3egRevx8Ji9N6HUIA1Ifh8Q+cg9dremvFCUbOX2Zebz80BwJIgCBUemjqhU5XI5Eg==", "cpu": [ "riscv64" ], @@ -23142,9 +24365,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", - "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.4.tgz", + "integrity": "sha512-seoeZp4L/6D1MUyjWkOMRU6/iLmCU2EjbMTyAG4oIOs1/I82Y5lTeaxW0KBfkUdHAWN7j25bpkt0rjnOgAcQcA==", "cpu": [ "s390x" ], @@ -23157,9 +24380,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", - "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.4.tgz", + "integrity": "sha512-Wi6AXf0k0L7E2gteNsNHUs7UMwCIhsCTs6+tqQ5GPwVRWMaflqGec4Sd8n6+FNFDw9vGcReqk2KzBDhCa1DLYg==", "cpu": [ "x64" ], @@ -23172,9 +24395,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", - "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.4.tgz", + "integrity": "sha512-dtBZYjDmCQ9hW+WgEkaffvRRCKm767wWhxsFW3Lw86VXz/uJRuD438/XvbZT//B96Vs8oTA8Q4A0AfHbrxP9zw==", "cpu": [ "x64" ], @@ -23187,9 +24410,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", - "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.4.tgz", + "integrity": "sha512-8GKr640PdFNXwzIE0IrkMWUNUomILLkfeHjXBi/nUvFlpZP+FA8BKGKpacjW6OUUHaNI6sUURxR2U2g78FOHWQ==", "cpu": [ "arm64" ], @@ -23202,9 +24425,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", - "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.4.tgz", + "integrity": "sha512-AIy/jdJ7WtJ/F6EcfOb2GjR9UweO0n43jNObQMb6oGxkYTfLcnN7vYYpG+CN3lLxrQkzWnMOoNSHTW54pgbVxw==", "cpu": [ "ia32" ], @@ -23217,9 +24440,9 @@ "peer": true }, "node_modules/vite/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", - "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.4.tgz", + "integrity": "sha512-bf9PtUa0u8IXDVxzRToFQKsNCRz9qLYfR/MpECxl4mRoWYjAeFjgxj1XdZr2M/GNVpT05p+LgQOHopYDlUu6/w==", "cpu": [ "x64" ], @@ -23232,9 +24455,9 @@ "peer": true }, "node_modules/vite/node_modules/rollup": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", - "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "version": "4.52.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.4.tgz", + "integrity": "sha512-CLEVl+MnPAiKh5pl4dEWSyMTpuflgNQiLGhMv8ezD5W/qP8AKvmYpCOKRRNOh7oRKnauBZ4SyeYkMS+1VSyKwQ==", "dev": true, "license": "MIT", "peer": true, @@ -23249,26 +24472,28 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.46.2", - "@rollup/rollup-android-arm64": "4.46.2", - "@rollup/rollup-darwin-arm64": "4.46.2", - "@rollup/rollup-darwin-x64": "4.46.2", - "@rollup/rollup-freebsd-arm64": "4.46.2", - "@rollup/rollup-freebsd-x64": "4.46.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", - "@rollup/rollup-linux-arm-musleabihf": "4.46.2", - "@rollup/rollup-linux-arm64-gnu": "4.46.2", - "@rollup/rollup-linux-arm64-musl": "4.46.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", - "@rollup/rollup-linux-ppc64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-musl": "4.46.2", - "@rollup/rollup-linux-s390x-gnu": "4.46.2", - "@rollup/rollup-linux-x64-gnu": "4.46.2", - "@rollup/rollup-linux-x64-musl": "4.46.2", - "@rollup/rollup-win32-arm64-msvc": "4.46.2", - "@rollup/rollup-win32-ia32-msvc": "4.46.2", - "@rollup/rollup-win32-x64-msvc": "4.46.2", + "@rollup/rollup-android-arm-eabi": "4.52.4", + "@rollup/rollup-android-arm64": "4.52.4", + "@rollup/rollup-darwin-arm64": "4.52.4", + "@rollup/rollup-darwin-x64": "4.52.4", + "@rollup/rollup-freebsd-arm64": "4.52.4", + "@rollup/rollup-freebsd-x64": "4.52.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.4", + "@rollup/rollup-linux-arm-musleabihf": "4.52.4", + "@rollup/rollup-linux-arm64-gnu": "4.52.4", + "@rollup/rollup-linux-arm64-musl": "4.52.4", + "@rollup/rollup-linux-loong64-gnu": "4.52.4", + "@rollup/rollup-linux-ppc64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-gnu": "4.52.4", + "@rollup/rollup-linux-riscv64-musl": "4.52.4", + "@rollup/rollup-linux-s390x-gnu": "4.52.4", + "@rollup/rollup-linux-x64-gnu": "4.52.4", + "@rollup/rollup-linux-x64-musl": "4.52.4", + "@rollup/rollup-openharmony-arm64": "4.52.4", + "@rollup/rollup-win32-arm64-msvc": "4.52.4", + "@rollup/rollup-win32-ia32-msvc": "4.52.4", + "@rollup/rollup-win32-x64-gnu": "4.52.4", + "@rollup/rollup-win32-x64-msvc": "4.52.4", "fsevents": "~2.3.2" } }, @@ -24088,9 +25313,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "dev": true, "license": "ISC", "peer": true, diff --git a/package.json b/package.json index 0d947447..15373739 100644 --- a/package.json +++ b/package.json @@ -87,9 +87,9 @@ "@angular-builders/custom-webpack": "^19.0.1", "@angular-devkit/build-angular": "^19.2.15", "@angular-devkit/core": "^19.2.15", - "@angular-eslint/eslint-plugin": "^18.4.0", - "@angular-eslint/eslint-plugin-template": "^18.4.0", - "@angular-eslint/template-parser": "^18.4.1", + "@angular-eslint/eslint-plugin": "^20.3.0", + "@angular-eslint/eslint-plugin-template": "^20.3.0", + "@angular-eslint/template-parser": "^20.3.0", "@angular/cli": "^19.2.15", "@angular/compiler-cli": "^19.2.14", "@angular/language-service": "^19.2.14", @@ -100,15 +100,15 @@ "@types/jasmine": "~5.1.4", "@types/jasminewd2": "~2.0.13", "@types/node": "^20.10.8", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", "brotli": "^1.3.3", "codelyzer": "^6.0.2", "compressing": "^1.10.1", "copy-webpack-plugin": "^13.0.1", - "eslint": "^8.56.0", + "eslint": "^9.36.0", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jest": "^28.9.0", + "eslint-plugin-jest": "^29.0.1", + "eslint-plugin-react-hooks": "^5.2.0", + "eslint-plugin-sonarjs": "^3.0.5", "fs-extra": "^11.2.0", "jasmine-core": "~5.1.1", "karma": "~6.4.2", @@ -125,6 +125,7 @@ "tinymce": "^6.8.6", "ts-node": "~10.9.2", "typescript": "^5.5.4", + "typescript-eslint": "^8.45.0", "webpack": "^5.101.2" }, "overrides": { diff --git a/packages/angular-sdk-components/src/lib/_bridge/angular-pconnect.ts b/packages/angular-sdk-components/src/lib/_bridge/angular-pconnect.ts index 7d557824..2a93373b 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/angular-pconnect.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/angular-pconnect.ts @@ -35,7 +35,7 @@ export class AngularPConnectService { * anything added by populateAdditionalProps. * Each entry is: { __componentID__: _the component's most recent props_ } */ - private componentPropsArr: Object[] = []; + private componentPropsArr: object[] = []; /* Used to toggle some class-wide logging */ private static bLogging = false; @@ -98,7 +98,7 @@ export class AngularPConnectService { // and (b) to determine whether the component should update itself (re-render) * @param inComp The component whose properties are being obtained */ - private getComponentProps(inComp: any = null): Object { + private getComponentProps(inComp: any = null): object { let compProps: any = {}; let addProps = {}; diff --git a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts index d268c177..875cd296 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/component-mapper/component-mapper.component.ts @@ -68,7 +68,6 @@ export class ComponentMapperComponent implements OnInit, OnDestroy, OnChanges { // We'll set 'displayOnlyFA$' prop only to the components which really need it // Eventual plan is to get rid of this particular prop if (propsKeys[i] === 'displayOnlyFA$' && !componentsRequireDisplayOnlyFAProp.includes(this.name || '')) { - // eslint-disable-next-line no-continue continue; } this.componentRef?.setInput(propsKeys[i], propsValues[i]); diff --git a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk_component_map.ts b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk_component_map.ts index e9110825..e4d89ced 100644 --- a/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk_component_map.ts +++ b/packages/angular-sdk-components/src/lib/_bridge/helpers/sdk_component_map.ts @@ -8,13 +8,13 @@ import pegaSdkComponentMap from './sdk-pega-component-map'; // Create a singleton for this class (with async loading of components map file) and export it // Note: Initializing SdkComponentMap to null seems to cause lots of compile issues with references // within other components and the value potentially being null (so try to leave it undefined) -// eslint-disable-next-line import/no-mutable-exports + export let SdkComponentMap; let SdkComponentMapCreateInProgress = false; interface ISdkComponentMap { - localComponentMap: Object; - pegaProvidedComponentMap: Object; + localComponentMap: object; + pegaProvidedComponentMap: object; } class ComponentMap { @@ -137,7 +137,6 @@ export async function getSdkComponentMap(inLocalComponentMap = {}) { idNextCheck = setInterval(fnCheckForConfig, 500); }; if (SdkComponentMap) { - // eslint-disable-next-line no-promise-executor-return return resolve(SdkComponentMap.sdkComponentMap); } idNextCheck = setInterval(fnCheckForConfig, 500); diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts index ba8e2fb8..9f91f9d8 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.ts @@ -45,7 +45,6 @@ export class OperatorComponent implements OnInit, OnChanges, OnDestroy { } } - // eslint-disable-next-line @angular-eslint/no-empty-lifecycle-method ngOnDestroy(): void { // Ref: https://medium.com/@kamil.galek/mythical-angular-component-styles-cleanup-in-angular-17-f799a08b2abc // Commenting the below line as it is causing the Operator component's styles not getting applied. diff --git a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts index 5530967a..96180547 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/auto-complete/auto-complete.component.ts @@ -75,7 +75,7 @@ export class AutoCompleteComponent implements OnInit, OnDestroy { hideLabel: boolean; filteredOptions: Observable; filterValue = ''; - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts index d6d0760f..65ab0327 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/check-box/check-box.component.ts @@ -70,7 +70,7 @@ export class CheckBoxComponent implements OnInit, OnDestroy { selectedvalues: any; referenceList: string; listOfCheckboxes: any[] = []; - actionsApi: Object; + actionsApi: object; propName: string; variant?: string; @@ -209,7 +209,6 @@ export class CheckBoxComponent implements OnInit, OnDestroy { this.componentReference = this.pConn$.getStateProps().value; - // eslint-disable-next-line sonarjs/no-redundant-boolean if (this.value$ === 'true' || this.value$ == true) { this.isChecked$ = true; } else { diff --git a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts index 59c3019d..8c2acecc 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/currency/currency.component.ts @@ -48,7 +48,7 @@ export class CurrencyComponent implements OnInit, OnDestroy { helperText: string; placeholder: string; currencyISOCode = 'USD'; - currencyOptions: Object = {}; + currencyOptions: object = {}; fieldControl = new FormControl(null, { updateOn: 'blur' }); currencySymbol: string; diff --git a/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts b/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts index 0c628109..e3a30cf8 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/date-time/date-time.component.ts @@ -66,7 +66,7 @@ export class DateTimeComponent implements OnInit, OnDestroy { // and then update, as needed, based on locale, etc. theDateFormat = getDateFormatInfo(); placeholder: string; - actionsApi: Object; + actionsApi: object; propName: string; formattedValue$: any; timezone = PCore.getEnvironmentInfo()?.getTimeZone(); diff --git a/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts b/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts index 02a6d589..c0d5d1dd 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/date/date.component.ts @@ -83,7 +83,7 @@ export class DateComponent implements OnInit, OnDestroy { dateFormatInfo = dateFormatInfoDefault; // and then update, as needed, based on locale, etc. theDateFormat = getDateFormatInfo(); - actionsApi: Object; + actionsApi: object; propName: string; formattedValue$: any; diff --git a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts index 70c9037d..5c0a836d 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/dropdown/dropdown.component.ts @@ -101,7 +101,7 @@ export class DropdownComponent implements OnInit, OnDestroy { localeName = ''; localePath = ''; localizedValue = ''; - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts index c6400d76..dc65d756 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/email/email.component.ts @@ -43,7 +43,7 @@ export class EmailComponent implements OnInit, OnDestroy { placeholder: string; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts b/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts index 8a2765a8..ae3f308c 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/integer/integer.component.ts @@ -43,7 +43,7 @@ export class IntegerComponent implements OnInit, OnDestroy { placeholder: string; fieldControl = new FormControl(null, null); - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts index a354a95c..f770cacf 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/location/location.component.ts @@ -73,7 +73,7 @@ export class LocationComponent implements OnInit, OnDestroy { testId = ''; helperText: string; placeholder: string; - actionsApi: Object; + actionsApi: object; valueProp: string; coordinatesProp: string; diff --git a/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts b/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts index d4d8cd99..72fa5d1c 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/multiselect/multiselect.component.ts @@ -71,7 +71,7 @@ export class MultiselectComponent implements OnInit, OnDestroy { dataApiObj: any; itemsTree: any[] = []; trigger: any; - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts index fb98a182..23b27c8e 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/object-reference/object-reference.component.ts @@ -10,7 +10,7 @@ import { PConnFieldProps } from '../../../_types/PConnProps.interface'; interface ObjectReferenceProps extends PConnFieldProps { showPromotedFilters: boolean; inline: boolean; - parameters: Object; + parameters: object; mode: string; targetObjectType: any; allowAndPersistChangesInReviewMode: boolean; diff --git a/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts b/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts index 6d61be80..179f37e2 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/percentage/percentage.component.ts @@ -52,7 +52,7 @@ export class PercentageComponent implements OnInit, OnDestroy { inputMode: any; decimalPrecision: number | undefined; fieldControl = new FormControl(null, null); - actionsApi: Object; + actionsApi: object; propName: string; formattedValue: string; diff --git a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts index 09c99422..e9e86cd0 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/phone/phone.component.ts @@ -44,7 +44,7 @@ export class PhoneComponent implements OnInit, OnDestroy { fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; preferredCountries: string[] = ['us']; diff --git a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts index bc34ba73..057de3b1 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/radio-buttons/radio-buttons.component.ts @@ -61,7 +61,7 @@ export class RadioButtonsComponent implements OnInit, OnDestroy { localeName = ''; localePath = ''; localizedValue = ''; - actionsApi: Object; + actionsApi: object; propName: string; variant?: string; diff --git a/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts b/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts index 024d0054..f8e0cdb8 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/rich-text/rich-text.component.ts @@ -39,7 +39,7 @@ export class RichTextComponent implements OnInit, OnDestroy { info: any; error: boolean; status: any; - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts index e2b83c37..9883f8e7 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/selectable-card/selectable-card.component.ts @@ -61,7 +61,7 @@ export class SelectableCardComponent implements OnInit, OnDestroy { } ]; - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts index 37f757a1..c30e167a 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-area/text-area.component.ts @@ -44,7 +44,7 @@ export class TextAreaComponent implements OnInit, OnDestroy { helperText: string; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts index d0c3d69a..305df956 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/text-input/text-input.component.ts @@ -44,7 +44,7 @@ export class TextInputComponent implements OnInit, OnDestroy { placeholder: string; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts b/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts index e01c8d51..ae9cb524 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/time/time.component.ts @@ -44,7 +44,7 @@ export class TimeComponent implements OnInit, OnDestroy { placeholder: string; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; formattedValue$: any; diff --git a/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts b/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts index 4c0ac7ad..8ed73e34 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/url/url.component.ts @@ -43,7 +43,7 @@ export class UrlComponent implements OnInit, OnDestroy { placeholder: string; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; constructor( diff --git a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts index 22ed2261..e34f9c9e 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.ts @@ -64,7 +64,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy { filterValue = ''; fieldControl = new FormControl('', null); - actionsApi: Object; + actionsApi: object; propName: string; onRecordChange: any; @@ -187,7 +187,7 @@ export class UserReferenceComponent implements OnInit, OnDestroy { } else { // if same user ref field is referred in view as editable & readonly formatted text // referenced users won't be available, so get user details from dx api - // eslint-disable-next-line @typescript-eslint/no-use-before-define + this.userName$ = await getUserName(this.pConn$, this.userID$); } } else if (displayAs === DROPDOWN_LIST || displayAs === SEARCH_BOX) { @@ -276,7 +276,6 @@ function getUserName(pConn, userId = ''): Promise { const { parameters = {}, referenceList } = pConn.getConfigProps(); const contextName = pConn.getContextName(); - // eslint-disable-next-line @typescript-eslint/no-shadow const OPERATORS_DP = referenceList || PCore.getEnvironmentInfo().getDefaultOperatorDP() || ''; const columns = [ diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts index c9bffdf3..8cbb8595 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/flow-container/flow-container.component.ts @@ -169,7 +169,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement // ONLY call updateSelf when the component should update // AND removing the "gate" that was put there since shouldComponentUpdate // should be the real "gate" - // eslint-disable-next-line sonarjs/no-collapsible-if + if (bUpdateSelf || caseViewModeFromProps !== caseViewModeFromRedux) { // don't want to redraw the flow container when there are page messages, because // the redraw causes us to loose the errors on the elements @@ -464,7 +464,7 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement // @ts-ignore - Property 'getLoadingStatus' is private and only accessible within class 'C11nEnv' loadingInfo = this.pConn$.getLoadingStatus(); } catch (ex) { - /* empty */ + console.log(ex); } // this check in routingInfo, mimic Nebula/Constellation (React) to check and get the internals of the @@ -486,7 +486,6 @@ export class FlowContainerComponent extends FlowContainerBaseComponent implement } }); - // eslint-disable-next-line sonarjs/no-collapsible-if if (currentOrder.length > 0) { if (currentItems[key] && currentItems[key].view && type === 'single' && Object.keys(currentItems[key].view).length > 0) { // when we get here, it it because the flow action data has changed diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts index af562bb0..d6d660b3 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.ts @@ -30,7 +30,7 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy { angularPConnectData: AngularPConnectData = {}; arChildren$: any[]; - stateProps$: Object; + stateProps$: object; banners: any; templateName$: string; buildName$: string; @@ -39,7 +39,7 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy { bShowModal$ = false; itemKey$: string; formGroup$: FormGroup; - oCaseInfo: Object = {}; + oCaseInfo: object = {}; // for causing a change on assignment updateToken$ = 0; @@ -134,7 +134,7 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy { // @ts-ignore - Property 'getLoadingStatus' is private and only accessible within class 'C11nEnv' loadingInfo = this.pConn$.getLoadingStatus(); } catch (ex) { - /* empty */ + console.log(ex); } // const configProps = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()); this.stateProps$ = this.pConn$.getStateProps(); @@ -364,7 +364,7 @@ export class ModalViewContainerComponent implements OnInit, OnDestroy { return {}; } - compareCaseInfoIsDifferent(oCurrentCaseInfo: Object): boolean { + compareCaseInfoIsDifferent(oCurrentCaseInfo: object): boolean { let bRet = false; // fast-deep-equal version diff --git a/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts index fd56f8a9..50ad8525 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/Containers/view-container/view-container.component.ts @@ -161,7 +161,7 @@ export class ViewContainerComponent implements OnInit, OnDestroy { this.psService.sendMessage(loadingInfo); } catch (ex) { - /* empty */ + console.log(ex); } // const buildName = this.buildName(); diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts index c39387a2..21e5db59 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment/assignment.component.ts @@ -128,7 +128,7 @@ export class AssignmentComponent implements OnInit, OnDestroy, OnChanges { this.psService.sendMessage(loadingInfo); } catch (ex) { - /* empty */ + console.log(ex); } } } diff --git a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts index c02a74f6..f3f4773b 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts @@ -216,7 +216,6 @@ export class RootContainerComponent implements OnInit, OnDestroy { showHideProgress(bShow: boolean) { // only show spinner after 500ms wait, so if server fast, won't see if (bShow) { - // eslint-disable-next-line sonarjs/no-collapsible-if if (!this.bIsProgress$) { // makes sure Angular tracks these changes if (!this.spinnerTimer || this.spinnerTimer.isStopped) { @@ -224,7 +223,7 @@ export class RootContainerComponent implements OnInit, OnDestroy { try { this.spinnerTimer.unsubscribe(); } catch (ex) { - /* empty */ + console.log(ex); } this.ngZone.run(() => { diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts index 8ecb73df..d0052bd8 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-group/persist-utils.ts @@ -49,10 +49,8 @@ const setComponentCache = ({ } }; -const componentCachePersistUtils = { +export const componentCachePersistUtils = { getComponentStateKey, getComponentStateOptions, setComponentCache }; - -export default componentCachePersistUtils; diff --git a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts index f3f97744..48b9e4be 100755 --- a/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/advanced-search/search-groups/search-groups.component.ts @@ -1,6 +1,6 @@ import { Component, Input, OnInit, OnDestroy, forwardRef, OnChanges, ChangeDetectorRef, signal } from '@angular/core'; import { FormGroup, ReactiveFormsModule } from '@angular/forms'; -import componentCachePersistUtils from '../search-group/persist-utils'; +import { componentCachePersistUtils } from '../search-group/persist-utils'; import { MatRadioModule } from '@angular/material/radio'; import { MatOptionModule } from '@angular/material/core'; import { MatSelectModule } from '@angular/material/select'; diff --git a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts index 07553ae9..df34afc0 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.ts @@ -155,7 +155,7 @@ export class AppShellComponent implements OnInit, OnDestroy { switch (errorMessages.action) { case 'update': // won't show unless publish is turned on - // eslint-disable-next-line @typescript-eslint/prefer-includes + if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) { this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n'); @@ -168,7 +168,7 @@ export class AppShellComponent implements OnInit, OnDestroy { case 'show': // add error message if not in the list // won't show unless publish is turned on - // eslint-disable-next-line @typescript-eslint/prefer-includes + if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) { this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n'); } diff --git a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts index f992bf7c..c57ced73 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/data-reference/data-reference.component.ts @@ -4,7 +4,7 @@ import { FormGroup } from '@angular/forms'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component'; import { getMappedKey } from '../advanced-search/search-group/persist-utils'; -import componentCachePersistUtils from '../advanced-search/search-group/persist-utils'; +import { componentCachePersistUtils } from '../advanced-search/search-group/persist-utils'; import { getFirstChildConfig } from '../data-reference/utils'; import { DataReferenceAdvancedSearchService } from './data-reference-advanced-search.service'; @@ -233,7 +233,7 @@ export class DataReferenceComponent implements OnInit, OnDestroy { const caseKey = this.pConn$.getCaseInfo().getKey(); const refreshOptions: any = { autoDetectRefresh: true, propertyName: '' }; - if ((this.pConn$?.getRawMetadata()?.children as any)?.length > 0 && this.pConn$?.getRawMetadata()?.children?.[0].config?.value) { + if ((this.pConn$?.getRawMetadata()?.children as Array)?.length > 0 && this.pConn$?.getRawMetadata()?.children?.[0].config?.value) { refreshOptions.propertyName = this.pConn$?.getRawMetadata()?.children?.[0].config.value; refreshOptions.classID = (this.pConn$.getRawMetadata() as any).classID; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts index 474bf4b4..ea84a48c 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.ts @@ -313,7 +313,6 @@ export class ListViewComponent implements OnInit, OnDestroy { this.filters = {}; // eslint-disable-next-line @typescript-eslint/no-unused-vars Object.entries(data).reduce((acc, [item, value]) => { - // eslint-disable-next-line @typescript-eslint/no-shadow const { filterId, filterExpression } = value as any; // filterExpression = value.filterExpression; this.filters[filterId] = filterExpression; @@ -352,7 +351,6 @@ export class ListViewComponent implements OnInit, OnDestroy { const filter = filterValues[filterIndex]; // If the filter is null then we can skip this iteration if (filter === null) { - // eslint-disable-next-line no-continue continue; } @@ -361,7 +359,6 @@ export class ListViewComponent implements OnInit, OnDestroy { field = this.getFieldFromFilter(filter, isDateRange); if (!(this.displayedColumns$?.length && this.displayedColumns$?.includes(field))) { - // eslint-disable-next-line no-continue continue; } // If we reach here that implies we've at least one valid filter, hence setting the flag @@ -1244,7 +1241,7 @@ export class ListViewComponent implements OnInit, OnDestroy { const seen = {}; return a.filter(item => { const k = key(item); - // eslint-disable-next-line no-return-assign, no-prototype-builtins + // eslint-disable-next-line no-prototype-builtins return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); } diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts b/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts index cdc3ba48..d88523c2 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/utils.ts @@ -676,7 +676,7 @@ export const readContextResponse = async (context, params) => { const { pConn$, apiContext, children, showDynamicFields, referenceList, isDataObject } = params; // let { listContext } = params; const { promisesResponseArray, apiContext: otherContext } = context; - // eslint-disable-next-line sonarjs/no-unused-collection + const listOfComponents: any[] = []; const { data: { fields: metaFields, classID, isQueryable } diff --git a/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts b/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts index e0f45c8e..5ef23c58 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/repeating-structures/repeating-structures.component.ts @@ -68,7 +68,6 @@ export class RepeatingStructuresComponent implements OnInit, AfterViewInit { } rowClick(row) { - // eslint-disable-next-line sonarjs/no-small-switch switch (this.configProps$.rowClickAction) { case 'openAssignment': this.psService.sendMessage(true); diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts index 228930e8..eb3a2392 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.ts @@ -215,7 +215,6 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as SimpleTableManualProps; if (this.configProps$.visibility != null) { - // eslint-disable-next-line no-multi-assign this.bVisible$ = this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility); } @@ -825,7 +824,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { const seen = {}; return a.filter(item => { const k = key(item); - // eslint-disable-next-line no-return-assign, no-prototype-builtins + // eslint-disable-next-line no-prototype-builtins return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); } @@ -916,7 +915,7 @@ export class SimpleTableManualComponent implements OnInit, OnDestroy { // return the value that should be shown as the contents for the given row data // of the given row field - getRowValue(inRowData: Object, inColKey: string): any { + getRowValue(inRowData: object, inColKey: string): any { // See what data (if any) we have to display const refKeys: string[] = inColKey.split('.'); let valBuilder = inRowData; diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts b/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts index 7704713e..f5eed9c7 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table/simple-table.component.ts @@ -79,7 +79,6 @@ export class SimpleTableComponent implements OnInit, OnDestroy { this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps()) as SimpleTableProps; if (this.configProps$.visibility != null) { - // eslint-disable-next-line no-multi-assign this.bVisible$ = this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility); } diff --git a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts index 0f05a267..40dc26dd 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.ts @@ -250,7 +250,7 @@ export class AttachmentComponent implements OnInit, OnDestroy { // If file to be deleted is the one added in previous stage i.e. for which a file instance is created in server // no need to filter currentAttachmentList as we will get another entry of file in redux with delete & label - // eslint-disable-next-line no-unsafe-optional-chaining + if (this.value$ && this.value$?.pxResults && +this.value$?.pyCount > 0 && file.responseProps && file?.responseProps?.pzInsKey !== 'temp') { const updatedAttachments = this.files.map(f => { if (f.responseProps && f.responseProps.pzInsKey === file.responseProps.pzInsKey) { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts index 2bd17b70..a9ea39da 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.ts @@ -29,7 +29,7 @@ export class FeedContainerComponent implements OnInit, OnDestroy { currentUserName$: string; pulseMessages$: any[]; - showReplyComment$: Object = {}; + showReplyComment$: object = {}; svgComment$: string; svgLike$: string; @@ -39,7 +39,7 @@ export class FeedContainerComponent implements OnInit, OnDestroy { pulseConversation: string; userData: Map = new Map(); - pulseComment: Object = {}; + pulseComment: object = {}; // functions actionsAPI: any; diff --git a/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts b/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts index ae3bf1ea..f79f236c 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/widget/todo/todo.component.ts @@ -152,7 +152,7 @@ export class TodoComponent implements OnInit, OnDestroy { } } else { // get caseInfoId assignment. - // eslint-disable-next-line no-lonely-if + if (this.caseInfoID$ != undefined) { this.arAssignments$ = this.getCaseInfoAssignment(this.assignmentsSource$, this.caseInfoID$); } diff --git a/packages/angular-sdk-components/src/lib/_helpers/formatters/currency-map.ts b/packages/angular-sdk-components/src/lib/_helpers/formatters/currency-map.ts index c910f359..11d69c54 100644 --- a/packages/angular-sdk-components/src/lib/_helpers/formatters/currency-map.ts +++ b/packages/angular-sdk-components/src/lib/_helpers/formatters/currency-map.ts @@ -1,4 +1,3 @@ -/* eslint-disable no-template-curly-in-string */ const EURO = { name: 'Euro (EUR)', symbolFormat: '\u20AC{#}', diff --git a/packages/angular-sdk-components/src/lib/_helpers/utils.ts b/packages/angular-sdk-components/src/lib/_helpers/utils.ts index 38f5c240..8bd17160 100644 --- a/packages/angular-sdk-components/src/lib/_helpers/utils.ts +++ b/packages/angular-sdk-components/src/lib/_helpers/utils.ts @@ -62,7 +62,7 @@ export class Utils { } } } catch (ex) { - /* empty */ + console.log(ex); } } @@ -428,7 +428,7 @@ export class Utils { return sessionStorage.getItem('asdk_AH') as string; } - static isEmptyObject(obj: Object): boolean { + static isEmptyObject(obj: object): boolean { return Object.keys(obj).length === 0; } diff --git a/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts b/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts index a357427c..3169c48c 100644 --- a/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts +++ b/projects/angular-test-app/src/app/_samples/full-portal/full-portal.component.ts @@ -76,7 +76,7 @@ export class FullPortalComponent implements OnInit, OnDestroy { }); /* Login if needed */ - // eslint-disable-next-line no-restricted-globals + const sAppName = location.pathname.substring(location.pathname.indexOf('/') + 1); loginIfNecessary({ appName: sAppName, mainRedirect: true }); From 544449966c1fe57ec9a595103018d7ceb9bc2c9d Mon Sep 17 00:00:00 2001 From: Vishal Sharma Date: Mon, 3 Nov 2025 14:44:37 +0530 Subject: [PATCH 16/91] Added missing exports (#341) * Added missing exports * Updated the order of the exports * Few more exports added --------- Co-authored-by: Sharma --- .../angular-sdk-components/src/public-api.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/angular-sdk-components/src/public-api.ts b/packages/angular-sdk-components/src/public-api.ts index 2c61b810..c473adc4 100644 --- a/packages/angular-sdk-components/src/public-api.ts +++ b/packages/angular-sdk-components/src/public-api.ts @@ -1,5 +1,3 @@ -/* eslint-disable import/export */ - /* * Public API Surface of angular-sdk-components */ @@ -20,6 +18,7 @@ export * from './lib/_components/field/decimal/decimal.component'; export * from './lib/_components/field/dropdown/dropdown.component'; export * from './lib/_components/field/email/email.component'; export * from './lib/_components/field/integer/integer.component'; +export * from './lib/_components/field/object-reference/object-reference.component'; export * from './lib/_components/field/percentage/percentage.component'; export * from './lib/_components/field/phone/phone.component'; export * from './lib/_components/field/radio-buttons/radio-buttons.component'; @@ -54,14 +53,19 @@ export * from './lib/_components/infra/stages/stages.component'; export * from './lib/_components/infra/view/view.component'; export * from './lib/_components/infra/Containers/base-components/flow-container-base.component'; +export * from './lib/_components/template/advanced-search/search-group/persist-utils'; +export * from './lib/_components/template/advanced-search/search-groups/utils'; +export * from './lib/_components/template/app-shell/app-shell.component'; export * from './lib/_components/template/base/form-template-base'; export * from './lib/_components/template/base/details-template-base'; - -export * from './lib/_components/template/app-shell/app-shell.component'; export * from './lib/_components/template/case-summary/case-summary.component'; export * from './lib/_components/template/case-view/case-view.component'; export * from './lib/_components/template/confirmation/confirmation.component'; export * from './lib/_components/template/data-reference/data-reference.component'; +export * from './lib/_components/template/data-reference/data-reference-advanced-search.service'; +export * from './lib/_components/template/data-reference/search-form/tabsData'; +export * from './lib/_components/template/data-reference/search-form/search-form.component'; +export * from './lib/_components/template/data-reference/utils'; export * from './lib/_components/template/default-form/default-form.component'; export * from './lib/_components/template/details/details.component'; export * from './lib/_components/template/details-narrow-wide/details-narrow-wide.component'; @@ -79,6 +83,7 @@ export * from './lib/_components/template/list-page/list-page.component'; export * from './lib/_components/template/list-view/list-view.component'; export * from './lib/_components/template/multi-reference-readonly/multi-reference-readonly.component'; export * from './lib/_components/template/narrow-wide-form/narrow-wide-form.component'; +export * from './lib/_components/template/object-page/object-page.component'; export * from './lib/_components/template/one-column/one-column.component'; export * from './lib/_components/template/one-column-page/one-column-page.component'; export * from './lib/_components/template/one-column-tab/one-column-tab.component'; @@ -129,6 +134,7 @@ export * from './lib/_services/banner.service'; export * from './lib/_services/case.service'; export * from './lib/_services/datapage.service'; export * from './lib/_services/endpoints'; +export * from './lib/_services/google-maps-loader.service'; export * from './lib/_services/server-config.service'; export * from './lib/_helpers/case-utils'; @@ -146,6 +152,8 @@ export * from './lib/_helpers/formatters/date'; export * from './lib/_helpers/formatters/format-utils'; export * from './lib/_helpers/formatters/index'; export * from './lib/_helpers/instructions-utils'; +export * from './lib/_helpers/objectReference-utils'; +export * from './lib/_helpers/semanticLink-utils'; export * from './lib/_helpers/tab-utils'; export * from './lib/_helpers/template-utils'; export * from './lib/_helpers/utils'; From f8668187b14ea26b3902ff19a63dd4cb38ba552a Mon Sep 17 00:00:00 2001 From: tammy-a11y Date: Mon, 3 Nov 2025 15:56:51 +0530 Subject: [PATCH 17/91] Theming support for both portal and embedded mode (#321) * Implemented theme support in Angular SDK --------- Co-authored-by: Siva Rama Krishna Co-authored-by: tumms2021389 <97188066+tumms2021389@users.noreply.github.com> --- .../alert/alert.component.scss | 6 +- .../banner/banner.component.scss | 1 - .../material-case-summary.component.html | 4 +- .../material-case-summary.component.scss | 39 +- .../material-details-fields.component.html | 4 +- .../material-details-fields.component.scss | 7 +- .../material-details.component.scss | 5 - .../material-summary-item.component.scss | 19 +- .../material-utility.component.scss | 3 +- .../material-vertical-tabs.component.scss | 2 +- .../operator/operator.component.html | 2 +- .../operator/operator.component.scss | 13 +- .../pulse/pulse.component.scss | 4 +- .../rich-text-editor.component.scss | 1 - .../wss-quick-create.component.scss | 2 - .../cancel-alert/cancel-alert.component.scss | 2 - .../semantic-link.component.scss | 1 - .../field/text/text.component.scss | 1 - .../user-reference.component.scss | 1 - .../action-buttons.component.html | 9 +- .../action-buttons.component.scss | 5 + .../assignment-card.component.html | 1 - .../assignment-card.component.scss | 2 +- .../multi-step/multi-step.component.scss | 22 +- .../infra/navbar/navbar.component.html | 9 + .../infra/navbar/navbar.component.scss | 20 +- .../infra/navbar/navbar.component.ts | 4 +- .../root-container.component.scss | 1 - .../root-container.component.ts | 6 +- .../infra/stages/stages.component.scss | 41 +- .../app-shell/app-shell.component.scss | 3 - .../case-summary/case-summary.component.scss | 2 - .../case-view/case-view.component.html | 2 +- .../case-view/case-view.component.scss | 22 +- .../field-group-list.component.scss | 1 - .../list-view/list-view.component.scss | 29 +- .../one-column-tab.component.scss | 2 +- .../simple-table-manual.component.scss | 10 +- .../wss-nav-bar/wss-nav-bar.component.scss | 5 - .../app-announcement.component.html | 2 +- .../app-announcement.component.scss | 4 +- .../attachment/attachment.component.scss | 5 - .../feed-container.component.scss | 12 +- .../file-utility/file-utility.component.html | 6 +- .../file-utility/file-utility.component.scss | 21 +- .../list-utility/list-utility.component.scss | 8 +- .../widget/todo/todo.component.scss | 21 +- .../src/lib/_services/theme.service.spec.ts | 16 + .../src/lib/_services/theme.service.ts | 36 ++ .../src/lib/_types/Theme.interface.ts | 5 + .../_samples/embedded/embedded.component.scss | 2 +- .../_samples/embedded/embedded.component.ts | 7 +- .../embedded/header/header.component.scss | 2 +- .../main-screen/main-screen.component.scss | 2 +- .../resolution-screen.component.scss | 4 +- .../shopping-card.component.scss | 23 +- .../full-portal/full-portal.component.scss | 8 - .../navigation/navigation.component.scss | 3 +- .../angular-test-app/src/containerStyles.scss | 12 +- projects/angular-test-app/src/styles.scss | 16 +- projects/angular-test-app/src/theme.scss | 81 ---- projects/angular-test-app/src/themes.scss | 349 ++++++++++++++++++ sdk-config.json | 1 + 63 files changed, 573 insertions(+), 386 deletions(-) create mode 100644 packages/angular-sdk-components/src/lib/_services/theme.service.spec.ts create mode 100644 packages/angular-sdk-components/src/lib/_services/theme.service.ts create mode 100644 packages/angular-sdk-components/src/lib/_types/Theme.interface.ts delete mode 100644 projects/angular-test-app/src/theme.scss create mode 100644 projects/angular-test-app/src/themes.scss diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.scss index 201c2f30..5b1f6ede 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/alert/alert.component.scss @@ -14,10 +14,10 @@ } .psdk-alert-error { - color: var(--app-alert-error-color); - border: 1px solid var(--app-alert-error-border-color); + color: var(--mat-sys-error); + border: 1px solid var(--mat-sys-error); .mat-icon { - color: var(--app-alert-error-border-color); + color: var(--mat-sys-error); } } diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.scss index 6ee1a7b8..b9410c1b 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/banner/banner.component.scss @@ -33,7 +33,6 @@ .background-style { background-color: transparent; - color: var(--app-inverse-form-color); width: 100%; height: 100%; text-align: center; diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.html b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.html index 96ef171a..4f5a7274 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.html +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.html @@ -14,8 +14,8 @@
{{ field.config.value }} {{ field.config.value }} - {{ field.config.value }} - {{ field.config.value }} + {{ field.config.value }} + {{ field.config.value }} {{ field.config.value }} {{ field.config.value }} diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.scss index 43bbbd58..2b41143f 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.scss @@ -18,36 +18,6 @@ margin-bottom: 0.75rem; } -.psdk-case-summary-status-data { - display: block; - background-color: var(--app-primary-lightest-color); - color: var(--app-primary-color); - padding: 0rem 0.625rem; - display: inline; - font-size: 0.75rem; - font-weight: 700; - text-transform: uppercase; - line-height: 1.5rem; -} - -.psdk-case-summary-primary .label { - font-weight: 600; -} - -.psdk-case-summary-primary .data { - font-weight: 600; - font-size: 1.625rem; -} - -.psdk-case-summary-secondary .label { - font-weight: 600; -} -.psdk-case-summary-secondary .data { - font-weight: 600; - // color: $app-primary-color; - padding-left: 1.25rem; -} - .psdk-case-summary-fields { // padding: calc(2 * 0.5rem); display: grid; @@ -74,7 +44,6 @@ max-width: max-content; font-size: 0.8125rem; font-weight: 400; - color: var(--app-field-header-color); } .psdk-csf-primary-field-data { @@ -106,7 +75,6 @@ max-width: max-content; font-size: 0.8125rem; font-weight: 400; - color: var(--app-field-header-color); align-items: center; display: flex; } @@ -124,9 +92,8 @@ span.psdk-csf-text-style { } span.psdk-csf-status-style { - background-color: var(--app-details-status-background); + background-color: var(--mat-sys-surface-container-highest); border-radius: calc(0.25 * 0.5rem); - color: var(--app-details-status-color); display: inline-block; font-size: 0.75rem; font-weight: bold; @@ -139,3 +106,7 @@ span.psdk-csf-status-style { .psdk-secondary-value { font-size: 1rem; } + +.psdk-primary-color { + color: var(--mat-sys-primary); +} diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.html b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.html index 85ee8855..33629e34 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.html +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.html @@ -17,8 +17,8 @@
{{ _getValue(field.config.value) }} {{ _getValue(field.config.value) }} - {{ _getValue(field.config.value) }} - {{ _getValue(field.config.value) }} + {{ _getValue(field.config.value) }} + {{ _getValue(field.config.value) }} {{ _formatDate(field.config.value, field.type) }} {{ _getValue(field.config.value, field) }} diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.scss index 2e0d63ed..52ec46f4 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.scss @@ -1,5 +1,4 @@ .psdk-details-fields-label { - color: var(--app-label-color); margin: 8px 0px; } @@ -8,9 +7,7 @@ span.psdk-details-text-style-hf { } span.psdk-details-status-style-hf { - background-color: var(--app-details-status-background); border-radius: calc(0.25 * 0.5rem); - color: var(--app-details-status-color); display: inline-block; font-size: 0.75rem; font-weight: bold; @@ -31,3 +28,7 @@ span.psdk-details-status-style-hf { .psdk-csf-primary-field-value { margin: 8px 0; } + +.psdk-primary-color { + color: var(--mat-sys-primary); +} diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.scss index 781e72ea..4de79a86 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-details/material-details.component.scss @@ -23,7 +23,6 @@ } .psdk-details-fields-label { - color: var(--app-label-color); margin: 8px 0px; } @@ -43,9 +42,7 @@ span.psdk-details-text-style { } span.psdk-details-status-style { - background-color: var(--app-details-status-background); border-radius: calc(0.25 * 0.5rem); - color: var(--app-details-status-color); display: inline-block; font-size: 0.75rem; font-weight: bold; @@ -68,9 +65,7 @@ span.psdk-details-status-style { } span.psdk-details-status-style-hf { - background-color: var(--app-details-status-background); border-radius: calc(0.25 * 0.5rem); - color: var(--app-details-status-color); display: inline-block; font-size: 1.25rem; font-weight: 500; diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.scss index 3efb4626..01950dab 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.scss @@ -4,7 +4,7 @@ } .psdk-utility-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); } .psdk-utility-view-all { @@ -13,20 +13,6 @@ justify-content: center; } -.psdk-utility-count { - background: var(--app-primary-light-color); - border-radius: calc(1.125 * 0.5rem); - color: var(--app-inverse-form-color); - display: inline-block; - font-size: 0.75rem; - font-weight: bold; - text-align: center; - width: 1.125rem; - - vertical-align: top; - margin: 0 0 0.313rem 1rem; -} - .psdk-utility .header-text { font-size: 1rem; font-weight: bold; @@ -43,7 +29,6 @@ width: 100%; padding: 0.625rem 0rem; text-align: left; - background-color: var(--app-form-color); border-radius: 0.6125rem; margin: 0.3125rem 0rem; } @@ -90,7 +75,6 @@ } .psdk-utility-card-main-primary-url { - color: var(--app-primary-color); } .psdk-utility-card-main-primary-url .mat-mdc-button.mat-primary { @@ -109,6 +93,7 @@ .psdk-utility-card-action-svg-icon { width: 1.4rem; display: inline-block; + filter: var(--app-primary-color-filter); } .psdk-utility-card-actions-svg-icon { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-utility/material-utility.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-utility/material-utility.component.scss index bcb65dd4..cb89af08 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-utility/material-utility.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-utility/material-utility.component.scss @@ -4,7 +4,7 @@ } .psdk-case-view-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); } .psdk-utility .header-text { @@ -24,7 +24,6 @@ height: 6.25rem; padding: 0.625rem 0rem; text-align: left; - background-color: var(--app-form-color); border-radius: 0.6125rem; margin: 0.3125rem 0rem; } diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss index 1cabbfe2..a2041a49 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.scss @@ -9,7 +9,7 @@ mat-button-toggle-group ::ng-deep .mat-button-toggle-appearance-standard { mat-button-toggle-group ::ng-deep .mat-button-toggle.mat-button-toggle-checked.mat-button-toggle-appearance-standard { background-color: transparent; - border-right: 0.1875rem solid var(--app-primary-color); + border-right: 0.1875rem solid var(--mat-sys-primary); } mat-button-toggle-group ::ng-deep .mat-button-toggle.mat-focus-indicator.mat-button-toggle-appearance-standard { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.html b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.html index b219611e..46b6309f 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.html +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.html @@ -12,7 +12,7 @@
-
{{ field.name }}
+
{{ field.name }}
{{ field.value }}
diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.scss index 6d4ecda7..6f6a7dac 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/operator/operator.component.scss @@ -2,7 +2,6 @@ display: flex; flex-direction: column; font-size: 0.8rem; - color: var(--app-neutral-color); padding-left: 0.625rem; margin: 16px 0 8px 0; } @@ -19,22 +18,17 @@ display: table; margin: auto; min-width: 100px; - background-color: var(--app-form-color); - border: 1px solid var(--app-inverse-form-color); + background-color: var(--mat-sys-surface); + border: 1px solid var(--mat-sys-outline-variant); border-radius: 10px; padding: 20px; - box-shadow: 0 0 10px 3px var(--app-box-shadow-color); + box-shadow: 0 0 10px 3px var(--mat-sys-level3); position: absolute; z-index: 99; } -.psdk-operator-name { - color: var(--app-neutral-color); -} - .psdk-operator-value { padding-left: 5px; - color: var(--app-neutral-dark-color); margin: 0px; } @@ -85,5 +79,4 @@ dd { word-break: break-word; grid-column-start: 1; max-width: max-content; - color: var(--app-field-header-color); } diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.scss index fb6a035f..73851a7c 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/pulse/pulse.component.scss @@ -3,6 +3,6 @@ margin: 1rem; border-radius: 0.6125rem; border-left: 6px solid; - border-left-color: var(--app-primary-color); - background-color: var(--app-form-color); + border-left-color: var(--mat-sys-primary); + background-color: var(--mat-sys-surface-container); } diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.scss index 0954fafa..6e04f160 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.scss @@ -11,7 +11,6 @@ display: inline; content: ' *'; vertical-align: top; - color: var(--app-neutral-dark-color); } .text-editor-error { diff --git a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.scss b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.scss index b263698b..aa7e1feb 100644 --- a/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.scss @@ -7,8 +7,6 @@ } .quick-link-list { - background-color: var(--app-primary-color); - color: var(--app-form-color); border-radius: 8px; } diff --git a/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.scss b/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.scss index 67f04861..98606212 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/cancel-alert/cancel-alert.component.scss @@ -5,7 +5,6 @@ align-items: center; height: 100%; width: 100%; - background-color: var(--app-dialog-background-color); position: fixed; z-index: 9999; top: 0px; @@ -16,7 +15,6 @@ display: table; margin: auto; min-width: 550px; - background-color: var(--app-form-color); border: 1px solid var(--app-inverse-form-color); border-radius: 10px; padding: 20px; diff --git a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss index 87dcf72d..2adc6931 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/semantic-link/semantic-link.component.scss @@ -12,7 +12,6 @@ } .psdk-label { - color: var(--app-label-color); margin: 8px 0px; } diff --git a/packages/angular-sdk-components/src/lib/_components/field/text/text.component.scss b/packages/angular-sdk-components/src/lib/_components/field/text/text.component.scss index 7ae54c04..4003b87b 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/text/text.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/text/text.component.scss @@ -25,6 +25,5 @@ } .psdk-details-fields-label { - color: var(--app-label-color); margin: 8px 0px; } diff --git a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.scss b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.scss index ebf9e63d..e469ece2 100644 --- a/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/field/user-reference/user-reference.component.scss @@ -1,6 +1,5 @@ .psdk-user-reference { font-size: 0.8rem; - color: var(--app-neutral-color); } .psdk-single { flex: 1; diff --git a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.html b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.html index aa5e5844..7a502f2e 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.html +++ b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.html @@ -1,11 +1,16 @@ - - diff --git a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.scss b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.scss index e69de29b..224dff30 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/infra/action-buttons/action-buttons.component.scss @@ -0,0 +1,5 @@ +.secondary-button { + background-color: var(--app-sys-secondary-button-background); + border-color: var(--app-sys-secondary-button-border); + margin: 0 5px; +} diff --git a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html index b82309f6..a6f05ddb 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html +++ b/packages/angular-sdk-components/src/lib/_components/infra/assignment-card/assignment-card.component.html @@ -14,7 +14,6 @@
-
+ + + +
diff --git a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.scss b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.scss index 23b5b2e4..3de77c05 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.scss @@ -5,7 +5,7 @@ $transition-fast: 0.1s !default; $natural-ease: cubic-bezier(0.4, 0.6, 0.1, 1) !default; .psdk-nav-divider { - border-bottom: 0.0625rem solid var(--app-divider-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); width: 100%; align-items: center; } @@ -119,8 +119,8 @@ $natural-ease: cubic-bezier(0.4, 0.6, 0.1, 1) !default; align-items: center; text-align: center; display: inline-flex; - background: var(--app-neutral-color); - color: var(--app-form-color); + background: var(--mat-sys-background); + color: var(--mat-sys-on-background); font-weight: normal; font-size: 1rem; } @@ -140,7 +140,7 @@ mat-list-item { height: auto !important; &:hover { - background-color: var(--app-label-color); + background-color: rgba(0, 0, 0, 0.54); } .flex-box { @@ -150,3 +150,15 @@ mat-list-item { text-align: left; } } + +.theme-menu-item { + display: flex; + align-items: center; + gap: 12px; +} + +.color-preview { + width: 24px; + height: 24px; + border-radius: 50%; +} diff --git a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts index 43729f28..1e15e9e4 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/navbar/navbar.component.ts @@ -6,6 +6,7 @@ import { logout } from '@pega/auth/lib/sdk-auth-manager'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ProgressSpinnerService } from '../../../_messages/progress-spinner.service'; import { Utils } from '../../../_helpers/utils'; +import { ThemeService } from '../../../_services/theme.service'; interface NavBarProps { // If any, enter additional props that only exist on this component @@ -55,7 +56,8 @@ export class NavbarComponent implements OnInit, OnDestroy { private chRef: ChangeDetectorRef, private psService: ProgressSpinnerService, private ngZone: NgZone, - private utils: Utils + private utils: Utils, + public themeService: ThemeService ) {} ngOnInit(): void { diff --git a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.scss b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.scss index ed1d7622..d670febf 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.scss @@ -5,7 +5,6 @@ align-items: center; height: 100%; width: 100%; - background-color: var(--app-background-color); position: fixed; z-index: 99999; top: 0rem; diff --git a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts index f3f4773b..9bb4d3e3 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts +++ b/packages/angular-sdk-components/src/lib/_components/infra/root-container/root-container.component.ts @@ -5,6 +5,7 @@ import { interval, Subscription } from 'rxjs'; import { AngularPConnectData, AngularPConnectService } from '../../../_bridge/angular-pconnect'; import { ServerConfigService } from '../../../_services/server-config.service'; import { ProgressSpinnerService } from '../../../_messages/progress-spinner.service'; +import { ThemeService } from '../../../_services/theme.service'; import { ReferenceComponent } from '../reference/reference.component'; import { PreviewViewContainerComponent } from '../Containers/preview-view-container/preview-view-container.component'; import { ModalViewContainerComponent } from '../Containers/modal-view-container/modal-view-container.component'; @@ -58,10 +59,13 @@ export class RootContainerComponent implements OnInit, OnDestroy { constructor( private angularPConnect: AngularPConnectService, private psService: ProgressSpinnerService, - private ngZone: NgZone + private ngZone: NgZone, + private themeService: ThemeService ) {} ngOnInit(): void { + const themeClass = this.themeService.getDefaultTheme(); + this.themeService.setTheme(themeClass); const { containers } = PCore.getStore().getState(); const items = Object.keys(containers).filter(item => item.includes('root')); diff --git a/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.scss b/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.scss index 5e41163c..86bb7a6c 100644 --- a/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/infra/stages/stages.component.scss @@ -8,45 +8,18 @@ font-size: 1.5rem; } -.psdk-stages-div { - display: inline-flex; - padding: 0.3125rem; - font-weight: bold; - font-size: 1.3rem; - color: var(--app-neutral-color); -} - -.psdk-stages-past { - color: var(--app-primary-color); - padding-right: 0.3125rem; -} - -.psdk-stages-present { - color: var(--app-secondary-color); - padding-right: 0.3125rem; -} - -.psdk-stages-future { - color: var(--app-neutral-color); - padding-right: 0.3125rem; -} - .psdk-stages-full { display: block; } .psdk-stages-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); } .psdk-stages-full { display: block; } -.psdk-stages-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); -} - .psdk-stages-icon { width: 1.4rem; display: inline-block; @@ -55,9 +28,9 @@ .psdk-stages-bar { margin: 1rem 0rem; - background-color: var(--app-form-color); + background-color: var(--mat-sys-surface-container); border-radius: 0.5rem; - border: 0.0625rem solid var(--app-neutral-light-color); + border: 0.0625rem solid var(--mat-sys-outline-variant); overflow: hidden; display: flex; flex-wrap: wrap; @@ -84,7 +57,7 @@ right: calc(-0.4375rem); background: inherit; border-style: solid; - border-color: rgb(207, 207, 207); + border-color: var(--mat-sys-outline-variant); border-width: 0.0625rem 0.0625rem 0px 0px; border-radius: 0px calc(0.3125rem) 0px 0px; transform: rotateZ(45deg) skew(15deg, 15deg); @@ -92,17 +65,17 @@ } .psdk-stages-inner-past { - color: var(--app-inverse-form-color); + color: var(--mat-sys-outline-variant); font-size: 1rem; } .psdk-stages-inner-present { - color: var(--app-primary-color); + color: var(--mat-sys-primary); font-weight: bold; font-size: 1rem; } .psdk-stages-inner-future { - color: var(--app-neutral-color); + color: var(--mat-sys-on-surface); font-size: 1rem; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.scss b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.scss index 748713b8..88cc3c65 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/app-shell/app-shell.component.scss @@ -1,9 +1,7 @@ .appshell-top { - background-color: var(--app-background-color); } .appshell-top-wss { - background-color: var(--app-background-color); } .appshell-main { @@ -32,7 +30,6 @@ align-items: center; height: 100%; width: 100%; - background-color: var(--app-background-color); position: fixed; z-index: 999; top: 0rem; diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.scss b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.scss index ab5167ca..1e898168 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/case-summary/case-summary.component.scss @@ -30,8 +30,6 @@ } .psdk-status { - background-color: var(--app-primary-color); - color: var(--app-form-color); padding: 0; margin-top: 0.625rem; width: fit-content; diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html index 11528cda..df59a25c 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html +++ b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.html @@ -1,6 +1,6 @@
- +
diff --git a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss index 00295907..96a58726 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/case-view/case-view.component.scss @@ -27,7 +27,7 @@ h1 { } .psdk-case-icon-div { - background-color: var(--app-primary-dark-color); + background-color: var(--mat-sys-on-primary-fixed); border-radius: 1rem; padding: 0.5rem 0.3rem 0.3rem 0.3rem; } @@ -47,11 +47,9 @@ h1 { flex: 0 0 auto; width: 25rem; float: left; - padding: 0rem 0.3125rem 0rem 0rem; - margin-left: 0.5rem; - margin-top: 0.5rem; - height: 100%; /* Should be removed. Only for demonstration */ - background-color: var(--app-form-color); + // padding: 0rem 0.3125rem 0rem 0rem; + background-color: var(--mat-sys-surface-container); + height: 100%; } .psdk-case-view-main { @@ -84,24 +82,28 @@ h1 { } .psdk-case-view-utilities { + background-color: var(--mat-sys-surface-container); width: 21.875rem; float: left; padding: 0rem 0.3125rem; - height: 100%; /* Should be removed. Only for demonstration */ } .psdk-case-view-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); } .psdk-status { padding: 0.3125rem 0.3125rem; - background-color: var(--app-primary-color); - color: var(--app-form-color); + background-color: var(--mat-sys-primary); + color: var(--mat-sys-surface-container); width: fit-content; margin: 0.625rem; } +.psdk-case-view-toolbar { + background-color: var(--mat-sys-primary); +} + button { margin: 0rem 0.3125rem; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.scss b/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.scss index bd284c54..5cb2e4b0 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/field-group-list/field-group-list.component.scss @@ -1,5 +1,4 @@ .psdk-details-fields-label { - color: var(--app-label-color); margin: 8px 0px; } diff --git a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss index 3742ef81..2482b881 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/list-view/list-view.component.scss @@ -1,6 +1,6 @@ .psdk-list-header { - border: 1px solid var(--app-neutral-light-color); - background-color: var(--app-form-color); + border: 1px solid var(--mat-sys-outline-variant); + background-color: var(--mat-sys-surface-container); padding: 0.5rem 0rem; } @@ -110,11 +110,11 @@ td.mat-mdc-footer-cell { display: table; margin: auto; min-width: 100px; - background-color: var(--app-form-color); - border: 1px solid var(--app-inverse-form-color); + background-color: var(--mat-sys-surface); + border: 1px solid var(--mat-sys-outline-variant); border-radius: 10px; padding: 20px; - box-shadow: 0 0 10px 3px var(--app-box-shadow-color); + box-shadow: 0 0 10px 3px var(--mat-sys-level3); position: absolute; z-index: 99; } @@ -126,7 +126,7 @@ td.mat-mdc-footer-cell { align-items: center; height: 100%; width: 100%; - background-color: var(--app-dialog-background-color); + background-color: rgba(0, 0, 0, 0.5); position: fixed; z-index: 999; top: 0px; @@ -137,11 +137,11 @@ td.mat-mdc-footer-cell { display: table; margin: auto; min-width: 150px; - background-color: var(--app-form-color); - border: 1px solid var(--app-inverse-form-color); + background-color: var(--mat-sys-surface-container); + border: 1px solid var(--mat-sys-outline-variant); border-radius: 10px; padding: 20px; - box-shadow: 0 0 10px 3px var(--app-box-shadow-color); + box-shadow: 0 0 10px 3px var(--mat-sys-level3); } tr.mat-mdc-row { @@ -153,19 +153,10 @@ tr.mat-mdc-row { justify-content: center; display: flex; align-items: center; - border: 1px solid var(--app-neutral-light-color); + border: 1px solid var(--mat-sys-outline-variant); border-top: none; } -.psdk-table-field-link { - color: var(--app-primary-color); - padding: 0; - cursor: pointer; - border: 0; - background-color: transparent; - align-items: center; -} - .results-count { opacity: 0.7; font-size: 0.8rem; diff --git a/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.scss b/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.scss index 8f4e4428..0852c770 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/one-column-tab/one-column-tab.component.scss @@ -1,5 +1,5 @@ .psdk-one-column-tab { - background-color: var(--app-form-color); + background-color: var(--mat-sys-surface-container); margin-top: 0.5rem; margin-bottom: 0.5rem; border-radius: 0.3125rem; diff --git a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.scss b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.scss index 99fd122a..22993fce 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/simple-table-manual/simple-table-manual.component.scss @@ -26,7 +26,7 @@ table { ::ng-deep th.mat-mdc-header-cell, td.mat-mdc-cell, td.mat-mdc-footer-cell { - border-right: 1px solid var(--app-neutral-light-color); + border-right: 1px solid var(--mat-sys-outline-variant); padding: 8px !important; min-width: 10rem; } @@ -121,7 +121,7 @@ td.mat-mdc-cell:last-child { display: table; margin: auto; min-width: 100px; - background-color: var(--app-form-color); + background-color: var(--mat-sys-surface-container); border: 1px solid var(--app-inverse-form-color); border-radius: 10px; padding: 20px; @@ -137,7 +137,6 @@ td.mat-mdc-cell:last-child { align-items: center; height: 100%; width: 100%; - background-color: var(--app-dialog-background-color); position: fixed; z-index: 999; top: 0px; @@ -148,7 +147,6 @@ td.mat-mdc-cell:last-child { display: table; margin: auto; min-width: 150px; - background-color: var(--app-form-color); border: 1px solid var(--app-inverse-form-color); border-radius: 10px; padding: 20px; @@ -160,7 +158,6 @@ tr.mat-mdc-row { } tr.mat-mdc-header-row { - background: var(--app-table-header-background-color); } .psdk-data-readonly { @@ -171,9 +168,8 @@ tr.mat-mdc-header-row { .psdk-no-records { height: 56px; text-align: center; - border: 1px solid var(--app-neutral-light-color); + border: 1px solid var(--mat-sys-outline-variant); border-top: none; - background: var(--app-form-color); } .psdk-utility-card-action-svg-icon { diff --git a/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.scss b/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.scss index 6348d5df..702a564a 100644 --- a/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/template/wss-nav-bar/wss-nav-bar.component.scss @@ -16,7 +16,6 @@ cursor: pointer; padding-right: 1rem; &:hover { - background-color: var(--app-neutral-color); } align-items: center; } @@ -111,7 +110,6 @@ color: var(--app-nav-color); &:hover { - background-color: var(--app-neutral-color); } } @@ -127,8 +125,6 @@ align-items: center; text-align: center; display: inline-flex; - background: var(--app-neutral-color); - color: var(--app-form-color); font-weight: normal; font-size: 1rem; } @@ -148,7 +144,6 @@ mat-list-item { height: auto !important; &:hover { - // background-color: rgba(0, 0, 0, 0.5); } .flex-box { diff --git a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.html b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.html index ae9fb90e..6e725f2f 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.html +++ b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.html @@ -9,5 +9,5 @@

{{ configProps$.label }}

- See what's new + See what's new diff --git a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.scss b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.scss index 4dec48b8..a4125cf8 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/widget/app-announcement/app-announcement.component.scss @@ -10,10 +10,10 @@ ul { padding-inline-start: 20px; } .psdk-announcement { - background-color: var(--app-form-color); + background-color: var(--mat-sys-surface-container); padding: 1rem; margin: 1rem 0; border-radius: 0.6125rem; border-left: 6px solid; - border-left-color: var(--app-primary-color); + border-left-color: var(--mat-sys-primary); } diff --git a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.scss b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.scss index c015c9d6..510f967b 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/widget/attachment/attachment.component.scss @@ -16,11 +16,9 @@ display: inline; content: ' *'; vertical-align: top; - color: var(--app-neutral-dark-color); } .file-error { - color: var(--app-error-light-color); } .psdk-modal-file-selector-error { @@ -64,11 +62,9 @@ display: inline; content: ' *'; vertical-align: top; - color: var(--app-neutral-dark-color); } .file-error { - color: var(--app-error-light-color); } .psdk-modal-file-selector-error { @@ -169,5 +165,4 @@ display: inline; content: ' *'; vertical-align: top; - color: var(--app-neutral-dark-color); } diff --git a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.scss b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.scss index 7b08b327..c81e22e4 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.scss +++ b/packages/angular-sdk-components/src/lib/_components/widget/feed-container/feed-container.component.scss @@ -1,5 +1,5 @@ .psdk-pulse-divider { - border-bottom: 0.0625rem solid var(--app-neutral-light-color); + border-bottom: 0.0625rem solid var(--mat-sys-outline-variant); } .psdk-full-width { @@ -17,7 +17,6 @@ padding: 0rem 0.125rem; min-width: unset; display: inline-block; - color: var(--app-primary-color); } .psdk-send-svg-icon { @@ -52,8 +51,6 @@ align-items: center; text-align: center; display: flex; - background: var(--app-primary-color); - color: var(--app-form-color); font-weight: bold; font-size: 1.25rem; } @@ -70,8 +67,8 @@ align-items: center; text-align: center; display: flex; - background: var(--app-primary-color); - color: var(--app-form-color); + background: var(--mat-sys-primary); + color: var(--mat-sys-on-primary); font-weight: bold; font-size: 1.5625rem; } @@ -95,7 +92,6 @@ } .psdk-pulse-message-time { - color: var(--app-pulse-message-color); } .psdk-pulse-message-text { @@ -141,7 +137,6 @@ } .psdk-pulse-reply-message { - background-color: var(--app-pulse-message-background-color); border-radius: 0.625rem; padding: 0rem 1.25rem; white-space: pre-line; @@ -170,7 +165,6 @@ } .psdk-pulse-reply-time { - color: var(--app-pulse-message-color); padding-left: 0.625rem; } diff --git a/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.html b/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.html index 3d5fd73a..f831d601 100644 --- a/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.html +++ b/packages/angular-sdk-components/src/lib/_components/widget/file-utility/file-utility.component.html @@ -15,7 +15,7 @@
-
+

{{ pConn$.getLocalizedValue('Add local files', '', '') }}

@@ -40,7 +40,7 @@

{{ pConn$.getLocalizedValue('Add local files', '', '') }}

-