diff --git a/console/.stylelintrc b/console/.stylelintrc index 0d92b73617..25790c73cc 100644 --- a/console/.stylelintrc +++ b/console/.stylelintrc @@ -7,6 +7,7 @@ "value-keyword-case": null, "at-rule-no-unknown": null, "no-descending-specificity": null, + "no-invalid-position-at-import-rule": null, "at-rule-empty-line-before": [ "always", { diff --git a/console/angular.json b/console/angular.json index 8e6760ea59..899f531a63 100644 --- a/console/angular.json +++ b/console/angular.json @@ -35,6 +35,8 @@ ], "allowedCommonJsDependencies": [ "@angular/common/locales/de", + "src/app/proto/generated/zitadel/admin_pb", + "src/app/proto/generated/zitadel/management_pb", "src/app/proto/generated/**", "file-saver", "qrcode" diff --git a/console/package-lock.json b/console/package-lock.json index 4503d465d9..062f09c51a 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -7,23 +7,23 @@ "": { "version": "0.0.0", "dependencies": { - "@angular/animations": "~12.0.3", - "@angular/cdk": "~12.1.1", - "@angular/common": "~12.0.5", - "@angular/compiler": "~12.0.0", - "@angular/core": "~12.0.0", - "@angular/forms": "~12.0.5", + "@angular/animations": "~12.2.0", + "@angular/cdk": "~12.2.0", + "@angular/common": "~12.2.0", + "@angular/compiler": "~12.2.0", + "@angular/core": "~12.2.0", + "@angular/forms": "~12.2.0", "@angular/material": "^12.1.1", - "@angular/material-moment-adapter": "^12.1.1", - "@angular/platform-browser": "~12.0.0", - "@angular/platform-browser-dynamic": "~12.0.5", - "@angular/router": "~12.0.5", - "@angular/service-worker": "~12.0.5", + "@angular/material-moment-adapter": "^12.2.0", + "@angular/platform-browser": "~12.2.0", + "@angular/platform-browser-dynamic": "~12.2.0", + "@angular/router": "~12.2.0", + "@angular/service-worker": "~12.2.0", "@grpc/grpc-js": "^1.3.2", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", "@types/file-saver": "^2.0.2", - "@types/google-protobuf": "^3.7.4", + "@types/google-protobuf": "^3.15.3", "@types/uuid": "^8.3.0", "angular-oauth2-oidc": "^10.0.3", "angularx-qrcode": "^11.0.0", @@ -32,7 +32,7 @@ "google-proto-files": "^2.4.0", "google-protobuf": "^3.17.2", "grpc-web": "^1.2.1", - "libphonenumber-js": "^1.9.16", + "libphonenumber-js": "^1.9.23", "moment": "^2.29.1", "ngx-color": "^7.2.0", "ngx-image-cropper": "^3.3.5", @@ -46,11 +46,11 @@ }, "devDependencies": { "@angular-devkit/build-angular": "~12.1.1", - "@angular/cli": "~12.1.1", - "@angular/compiler-cli": "~12.0.5", - "@angular/language-service": "~12.1.0", - "@types/jasmine": "~3.7.7", - "@types/jasminewd2": "~2.0.3", + "@angular/cli": "~12.2.0", + "@angular/compiler-cli": "~12.2.0", + "@angular/language-service": "~12.2.0", + "@types/jasmine": "~3.8.2", + "@types/jasminewd2": "~2.0.10", "@types/node": "^15.12.1", "codelyzer": "^6.0.0", "jasmine-core": "~3.7.1", @@ -63,20 +63,20 @@ "prettier": "^2.3.1", "protractor": "~7.0.0", "stylelint": "^13.10.0", - "stylelint-config-standard": "^20.0.0", - "stylelint-scss": "^3.19.0", - "ts-node": "~9.1.1", + "stylelint-config-standard": "^22.0.0", + "stylelint-scss": "^3.20.1", + "ts-node": "~10.2.0", "tslint": "~6.1.3", "typescript": "^4.2.4" } }, "node_modules/@angular-devkit/architect": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1201.1.tgz", - "integrity": "sha512-n7ycxrIPbtnV7q8PH5Uvs8Jd++u6hWUiB+8EUxznSfdHGA+fE7TTnJTkc27LoMlYZAImc/Axp/uyYZ6Awt72ZQ==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1201.4.tgz", + "integrity": "sha512-hGO5NrZxV8Z7sILwokt7H+1sMf+5tJS9PJszvYlIBSzG0LBkOwwLQDb4MD42ATXFru57SXNqMZDVKoi1kTgxAw==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.1.1", + "@angular-devkit/core": "12.1.4", "rxjs": "6.6.7" }, "engines": { @@ -86,15 +86,15 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.1.1.tgz", - "integrity": "sha512-mJjpPuJlS55gwi/W2g8CIMjPVtUjKCKJdjn34eeYk1Kgw9JYRIsiEivx1hcGyLmiSTF8gRGvW1TEyO+k55/QqA==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.1.4.tgz", + "integrity": "sha512-9kMdnaU2dr8o7gJpuBsEHLUpa6huF8uZQEd1+jhKfByEY/xTQo8qztvmbhFhrSfDvdYRygNHItpt3pYEoCEOig==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1201.1", - "@angular-devkit/build-optimizer": "0.1201.1", - "@angular-devkit/build-webpack": "0.1201.1", - "@angular-devkit/core": "12.1.1", + "@angular-devkit/architect": "0.1201.4", + "@angular-devkit/build-optimizer": "0.1201.4", + "@angular-devkit/build-webpack": "0.1201.4", + "@angular-devkit/core": "12.1.4", "@babel/core": "7.14.6", "@babel/generator": "7.14.5", "@babel/helper-annotate-as-pure": "7.14.5", @@ -106,7 +106,7 @@ "@babel/template": "7.14.5", "@discoveryjs/json-ext": "0.5.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.1.1", + "@ngtools/webpack": "12.1.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.2", "browserslist": "^4.9.1", @@ -126,7 +126,7 @@ "karma-source-map-support": "1.4.0", "less": "4.1.1", "less-loader": "10.0.0", - "license-webpack-plugin": "2.3.19", + "license-webpack-plugin": "2.3.20", "loader-utils": "2.0.0", "mini-css-extract-plugin": "1.6.2", "minimatch": "3.0.4", @@ -155,7 +155,7 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.0", - "webpack": "5.41.1", + "webpack": "5.44.0", "webpack-dev-middleware": "5.0.0", "webpack-dev-server": "3.11.2", "webpack-merge": "5.8.0", @@ -202,9 +202,9 @@ } }, "node_modules/@angular-devkit/build-optimizer": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1201.1.tgz", - "integrity": "sha512-SdAffCpjRNFKwnEq8xdPdCWPgdrfY8rlmTZXGY7e1whR4vnyZi+afk1BAsmbNyWlHYVv0Zcnh+Q1VH3OBDLwhw==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1201.4.tgz", + "integrity": "sha512-Hq+mDUe4xIyq4939JZaUkptsM89WnZOk8Qel6mS0T/bxMX/qs+nuGD5o+xDKkuayogbiTrLmyZBib0/90eSXEA==", "dev": true, "dependencies": { "source-map": "0.7.3", @@ -242,12 +242,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1201.1.tgz", - "integrity": "sha512-isgj6bSFr16tuXEoX0VypvsQmg3uDOdvYDQZvkwzUrIyvQo5TeoOy/MLgrb9v+tXjEA7oZrzuigE4Hjzn466bQ==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1201.4.tgz", + "integrity": "sha512-eMmbyHyWJZMQ1tfwVdja/iAk/eXJFYrF8b27gDV9gGI7MGB3KJ93AhkbPbcvlw4Hhx4+6M11GfeXzbwH0q9pnQ==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1201.1", + "@angular-devkit/architect": "0.1201.4", "rxjs": "6.6.7" }, "engines": { @@ -261,9 +261,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.1.1.tgz", - "integrity": "sha512-z5+O3ugXbo8djKPjUtf/UfnYCmco2K1LVhQ6cWLhKi3NKRBiHeNmZh5nAycqFD8/Q+oI/+Ao40MkmkK1Tq0jsw==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.1.4.tgz", + "integrity": "sha512-KOzGD8JbP/7EeUwPiU5x+fo3ZEQ5R4IVW5WoH92PaO3mdpqXC7UL2MWLct8PUe9il9nqJMvrBMldSSvP9PCT2w==", "dev": true, "dependencies": { "ajv": "8.6.0", @@ -280,12 +280,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.1.1.tgz", - "integrity": "sha512-oRsvlhJQLXkGWdJvArOby+G4j8UX2uCHwrN4EC1hXUKs84UsD+UATYOAh4h2auy+I+sdrmELUaHwdI4wdKpqnw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.0.tgz", + "integrity": "sha512-C+eutMKtOLROk/2zs1NkXeLZJpFtvZm7ctWmcns0Yh83Di2sCgGiSqdqNZFyDplxkt5W5lF2cdBSGyP8ZH+/ug==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.1.1", + "@angular-devkit/core": "12.2.0", "ora": "5.4.1", "rxjs": "6.6.7" }, @@ -295,24 +295,59 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/animations": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.0.3.tgz", - "integrity": "sha512-uaOltimrGBJe1vIunaz9d8gtE8IY242XwakYGSFYf1zIseJRI7GBQ29L8+O2/QHbdTgdtsubYaqrPyMYLKYDvA==", + "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, "dependencies": { - "tslib": "^2.1.0" + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular/animations": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.0.tgz", + "integrity": "sha512-BCta/HT0VaM0hzsyRyb24UIaV7vlpo2jJjSwnBhO5RosH+bAaA3Faa3ps3AjCDCEXo9z99dvxJFm8WqdunPYyw==", + "dependencies": { + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "12.0.3" + "@angular/core": "12.2.0" } }, "node_modules/@angular/cdk": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.1.1.tgz", - "integrity": "sha512-MJENa8qmfLAr6t59u1+mEC2YPbCn4n3vsY6k8fKyf+ILXwwGHWNZlYblaRMBjrF/crSx1Kd5vb30RCqIcNTGsA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.0.tgz", + "integrity": "sha512-Dts+KIMz6EdzQxaWBFcNwgWAHVPkI5pnOGMidKKVOmjezSUN6mhfBKq8emgsddJMRAqz/1VHMAEaRkp0VoBKiA==", "dependencies": { "tslib": "^2.2.0" }, @@ -326,27 +361,27 @@ } }, "node_modules/@angular/cli": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.1.1.tgz", - "integrity": "sha512-rQZItn3kpYEX6tH7wquAEhJuxVpW6sYKO2tSi8Suxrm+iz1RPRnfhSwS1WIEumnwpFRtH/8P+lOrScax1ldYkg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.0.tgz", + "integrity": "sha512-gxw4e3Wb1YgNE+f9sX90xea5vXatqvlYq3mOWFUWVKYcayAgnt9z97a1ULEkSytS1aVjyL44zzkU/QFufPpadQ==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1201.1", - "@angular-devkit/core": "12.1.1", - "@angular-devkit/schematics": "12.1.1", - "@schematics/angular": "12.1.1", + "@angular-devkit/architect": "0.1202.0", + "@angular-devkit/core": "12.2.0", + "@angular-devkit/schematics": "12.2.0", + "@schematics/angular": "12.2.0", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "4.3.1", + "debug": "4.3.2", "ini": "2.0.0", - "inquirer": "8.1.1", + "inquirer": "8.1.2", "jsonc-parser": "3.0.0", "npm-package-arg": "8.1.5", "npm-pick-manifest": "6.1.1", "open": "8.2.1", "ora": "5.4.1", - "pacote": "11.3.4", + "pacote": "11.3.5", "resolve": "1.20.0", "semver": "7.3.5", "symbol-observable": "4.0.0", @@ -361,36 +396,196 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular/common": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.0.5.tgz", - "integrity": "sha512-jKiPjWVL3jXVKgXwINlsF5O0r9gX/mAoa5UVy57O8jcg+ENbH9LLSOikgiF/0HPxk2uvRV5OYmbBgOY1xT41kQ==", + "node_modules/@angular/cli/node_modules/@angular-devkit/architect": { + "version": "0.1202.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.0.tgz", + "integrity": "sha512-99O8iLO9LEVTPYN6kj6XINHxjw13ofTS48hm3D0i44QMEyq3SRH1ctH6HcUAtbgPF3VjOUFr5vRYpQN1OdOCXw==", + "dev": true, "dependencies": { - "tslib": "^2.1.0" + "@angular-devkit/core": "12.2.0", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, + "dependencies": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/node_modules/ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@angular/cli/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@angular/cli/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, + "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/@angular/cli/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, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@angular/cli/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 + }, + "node_modules/@angular/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@angular/cli/node_modules/inquirer": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", + "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.3.0", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@angular/cli/node_modules/inquirer/node_modules/rxjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", + "dev": true, + "dependencies": { + "tslib": "~2.1.0" + } + }, + "node_modules/@angular/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@angular/cli/node_modules/tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + }, + "node_modules/@angular/common": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.0.tgz", + "integrity": "sha512-9OaqH5WhfJ/YpN9b4TmiGHdOar/3NiGjktwG1/5jV4mTO+tOP25yNO4zCd4RuaRURipWUEa8mSaesgUgTb3jmQ==", + "dependencies": { + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "12.0.5", - "rxjs": "^6.5.3" + "@angular/core": "12.2.0", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/compiler": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.0.3.tgz", - "integrity": "sha512-Vux9JwHd5pYsSmNvACUWULdT8/nIekP9k2yGqaDdbiHsptk5UCcyH7E0zhMh8Um4NYFqMBZeO0yXySa+7u5aJA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.0.tgz", + "integrity": "sha512-24G1joE699gbAHRAIESVQBI797Q506MZ/LWyFHRjfdlfXgltDN63j5dpNJzb/rUK1/uHGGAJaEH+OE60ZK2q9Q==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" } }, "node_modules/@angular/compiler-cli": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.0.5.tgz", - "integrity": "sha512-XBZWU2S7N2kvQJK0H5KyLHiLVhYJrjh3NtbVBv67sCY9Ft8fv2jjbozTgXqeoYZ1xAxcZ2ZAB0n5SkhmY75Mow==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.0.tgz", + "integrity": "sha512-VjGb4gty8JSkmcBvdc4QzQx6mPT7cXs42Hu8IDK7dQma3nTRmwbX0BF1m7i+kbrjWHK8I85FbsYbSzfzZid2NA==", "dev": true, "dependencies": { "@babel/core": "^7.8.6", @@ -405,8 +600,8 @@ "semver": "^7.0.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "tslib": "^2.1.0", - "yargs": "^16.2.0" + "tslib": "^2.2.0", + "yargs": "^17.0.0" }, "bin": { "ivy-ngcc": "ngcc/main-ivy-ngcc.js", @@ -418,8 +613,8 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/compiler": "12.0.5", - "typescript": ">=4.2.3 <4.3" + "@angular/compiler": "12.2.0", + "typescript": ">=4.2.3 <4.4" } }, "node_modules/@angular/compiler-cli/node_modules/source-map": { @@ -431,57 +626,75 @@ "node": ">=0.10.0" } }, - "node_modules/@angular/core": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.0.3.tgz", - "integrity": "sha512-wGsu7wMeBQNN5ShJsLpzkCfBk6h089ZIf9bUMytNWAvLd+MGqP7f6D1ua9+ul62VNyBFtWgQLK/38E6J+9OPYg==", + "node_modules/@angular/compiler-cli/node_modules/yargs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.0.tgz", + "integrity": "sha512-SQr7qqmQ2sNijjJGHL4u7t8vyDZdZ3Ahkmo4sc1w5xI9TBX0QDdG/g4SFnxtWOsGLjwHQue57eFALfwFCnixgg==", + "dev": true, "dependencies": { - "tslib": "^2.1.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.0.tgz", + "integrity": "sha512-zy/gqSlSEmi85HVbpoQ0nhC74xoL+aoofvbkKPgdgyEcnqzBt4IFzH++0EZ+GMeZ2pVoNfiXklUhAy2OBAiR/g==", + "dependencies": { + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "rxjs": "^6.5.3", + "rxjs": "^6.5.3 || ^7.0.0", "zone.js": "~0.11.4" } }, "node_modules/@angular/forms": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.0.5.tgz", - "integrity": "sha512-Ew/fGPTsywoYnm6DFPA/DyLl4Sb+1/uzpledrbxUHzaSKIrnXFrjQiUTmsbbq+8qono3JzbUIblqH1DrNThYiA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.0.tgz", + "integrity": "sha512-lhKin5IHElH5qk2Su/o0YMF9JYb84grz0WMIHYmt3EASw/EGvzZwUBd76anJWWwFig6GLw/ZdNC9zLW2Leh06Q==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.0.5", - "@angular/core": "12.0.5", - "@angular/platform-browser": "12.0.5", - "rxjs": "^6.5.3" + "@angular/common": "12.2.0", + "@angular/core": "12.2.0", + "@angular/platform-browser": "12.2.0", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/language-service": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.1.1.tgz", - "integrity": "sha512-8jpfEJcK2rO6JFhqrSoHqAXyIiOmWtAnl6cNkvzvQjQgrzlIwFuixEgcohq8QaKN4vWYZtnX6YKxUakNmGo+Ww==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.0.tgz", + "integrity": "sha512-oWZ3E+640iRxkf+tStNpDbJT4mc7zNdOCg4L0YjpBuDOiStJ0YDgtJfNdYE+Ap7fsb0QvUuXpU0QGnDVazQ1PQ==", "dev": true, "engines": { "node": "^12.14.1 || >=14.0.0" } }, "node_modules/@angular/material": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.1.1.tgz", - "integrity": "sha512-q2vhbVQfjr+88beqCotCVlaPRyy9y2O2asiR3+0BU9OJ1DjTo1QpBmMpck5InP7Es49t9RTk9RzzC0t18p45yA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.0.tgz", + "integrity": "sha512-onrWWoukVDt+lBRFLAaw9JFjncGMKGBPRq0VyT/ppl6tfw3+l/AiQsUd9lzpFmZfkH6PZZwv97k/5eu+6Y8jdg==", "dependencies": { "tslib": "^2.2.0" }, "peerDependencies": { "@angular/animations": "^12.0.0 || ^13.0.0-0", - "@angular/cdk": "12.1.1", + "@angular/cdk": "12.2.0", "@angular/common": "^12.0.0 || ^13.0.0-0", "@angular/core": "^12.0.0 || ^13.0.0-0", "@angular/forms": "^12.0.0 || ^13.0.0-0", @@ -489,32 +702,32 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.1.1.tgz", - "integrity": "sha512-YQs4BFiQ0rCYhWzcPJ6IS6zJRM+iKAjAEo/Z89G4tR1vekA4Fl95PBs9DVoCLS2uptOPL99tnUMqeNtFjUM6wQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.0.tgz", + "integrity": "sha512-b54DKvT+EzJMr63pO5hOy7IipXKGFcH1qoE82omZn0hcPI7699eu6U4CC8zTubhDfaCsSrFvStvY2IEbb/R8+w==", "dependencies": { "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "^12.0.0 || ^13.0.0-0", - "@angular/material": "12.1.1", + "@angular/material": "12.2.0", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.0.3.tgz", - "integrity": "sha512-mHcjOxnRWv1G45npbyMknROCx+LmJemYoSERrhi+fBfv00zdJlZn+TcNIgg90xsBiP4C2d1+GMk0w8I0LYl6bQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.0.tgz", + "integrity": "sha512-MIoWBhhMmPBFfuOPBgEG21uqCZVudTj4YMGxQH4iVlI9GD9ZAht8XgopN9Vw4cytPNfKWsspLoruhIWRNSJlNA==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/animations": "12.0.3", - "@angular/common": "12.0.3", - "@angular/core": "12.0.3" + "@angular/animations": "12.2.0", + "@angular/common": "12.2.0", + "@angular/core": "12.2.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -523,45 +736,45 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.0.5.tgz", - "integrity": "sha512-sYkOJxXj4vEZICT2oODkQF9wNaKoScSkiw2ooBYN0UX02mFKlWKa9vkzp6JmN1EF8YOWF0JnRqBPAi1WbOnAMw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.0.tgz", + "integrity": "sha512-mvUo1WEI8PrJxIer0RLXSW9raYDrKarUQ9T2Q0/R3ZgS6Y1WvoJe+qSZ7K/hCbErH4zd+64TuJHlj+g2WHPLug==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.0.5", - "@angular/compiler": "12.0.5", - "@angular/core": "12.0.5", - "@angular/platform-browser": "12.0.5" + "@angular/common": "12.2.0", + "@angular/compiler": "12.2.0", + "@angular/core": "12.2.0", + "@angular/platform-browser": "12.2.0" } }, "node_modules/@angular/router": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.0.5.tgz", - "integrity": "sha512-2jiaT+OxCmJbeJ0MTPmIHBsTFLysenvPZteozYsjcmUo9mOzJHAjqHLJvTC+Ri+E9xvnplh+8BPETRleV1pAFw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.0.tgz", + "integrity": "sha512-C5S0bU8KtU/2wBQ76AZVFivWbGYJCDwkVg2Lk4ddjqs/pKWb0vg2Baa3DfJrIz3esqfYUJl00HMYQVM9+QtZQA==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "engines": { "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.0.5", - "@angular/core": "12.0.5", - "@angular/platform-browser": "12.0.5", - "rxjs": "^6.5.3" + "@angular/common": "12.2.0", + "@angular/core": "12.2.0", + "@angular/platform-browser": "12.2.0", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/service-worker": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.0.5.tgz", - "integrity": "sha512-ZJ8EhuTaktZgoo1ZylmiTlxmALaAiK7ow0vTInfuRSkVbrUhuJQv3qqAEoGAgLH5a3QW+E8/8CoMzNMDcwpWXQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.0.tgz", + "integrity": "sha512-pTDUAwTCkoRZO2E3nIvJJ3Sur921oc7djBfcKiqB0+L10xvlwiPZ+jTLWndgKPfnNzbw/izZquvXjZElDazRIA==", "dependencies": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" }, "bin": { "ngsw-config": "ngsw-config.js" @@ -570,8 +783,8 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.0.5", - "@angular/core": "12.0.5" + "@angular/common": "12.2.0", + "@angular/core": "12.2.0" } }, "node_modules/@babel/code-frame": { @@ -2180,6 +2393,27 @@ "node": ">=6.9.0" } }, + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-consumer": "0.8.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -2240,9 +2474,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.1.tgz", - "integrity": "sha512-NOHTBEjUkawQSU6sHA7EJSi5Ixw+oVmlYi17HXAhGRY1czasLQMiKQPnigbSgMLBR9Jhez7TttqAUtx6Pey2FQ==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.4.tgz", + "integrity": "sha512-hXc8dTnRfDB7o1Pd7a07aw0rjGmVLXU28+cTHQJliosgD3obcjfZ4QPA0k97vlQMtqVJawuShRfyiUKrpsJf8Q==", "dev": true, "dependencies": { "enhanced-resolve": "5.8.2" @@ -2461,13 +2695,13 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "node_modules/@schematics/angular": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.1.1.tgz", - "integrity": "sha512-ukSKoAWfXt28TiHlRrEzKFW63V3jroRF3xnBKtsaL3AZ4MVJiHzOWXkzDAZBaEOLUH/l6Xhm64NMgOqMEAg1rQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.0.tgz", + "integrity": "sha512-2NolT/PNKgjINIHvz6o4sYFj4D4ai7Usf+HspQCi9W30qtLV4Z6hRXoEhmDxrGSlF67vJdwUwDM3sP+6Tg8XEw==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.1.1", - "@angular-devkit/schematics": "12.1.1", + "@angular-devkit/core": "12.2.0", + "@angular-devkit/schematics": "12.2.0", "jsonc-parser": "3.0.0" }, "engines": { @@ -2476,6 +2710,41 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, + "dependencies": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@schematics/angular/node_modules/ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/@stylelint/postcss-css-in-js": { "version": "0.37.2", "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.2.tgz", @@ -2521,6 +2790,30 @@ "node": ">=10.13.0" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "node_modules/@types/component-emitter": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", @@ -2560,9 +2853,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", "dev": true }, "node_modules/@types/file-saver": { @@ -2571,9 +2864,9 @@ "integrity": "sha512-xbqnZmGrCEqi/KUzOkeUSe77p7APvLuyellGaAoeww3CHJ1AbjQWjPSCFtKIzZn8L7LpEax4NXnC+gfa6nM7IA==" }, "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "dependencies": { "@types/minimatch": "*", @@ -2581,20 +2874,20 @@ } }, "node_modules/@types/google-protobuf": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.2.tgz", - "integrity": "sha512-ubeqvw7sl6CdgeiIilsXB2jIFoD/D0F+/LIEp7xEBEXRNtDJcf05FRINybsJtL7GlkWOUVn6gJs2W9OF+xI6lg==" + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.3.tgz", + "integrity": "sha512-MDpu7lit927cdLtBzTPUFjXGANFUnu5ThPqjygY8XmCyI/oDlIA0jAi4sffGOxYaLK2CCxAuU9wGxsgAQbA6FQ==" }, "node_modules/@types/jasmine": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.7.7.tgz", - "integrity": "sha512-yZzGe1d1T0y+imXDZ79F030nn8qbmiwpWKCZKvKN0KbTzwXAVYShUxkIxu1ba+vhIdabTGVGCfbtZC0oOam8TQ==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.8.2.tgz", + "integrity": "sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg==", "dev": true }, "node_modules/@types/jasminewd2": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.9.tgz", - "integrity": "sha512-Oz+Faunpe2SimFvkMYMXxpK89WXl7rZHG8abTOKcGndu4xOoSbUZ+jUdZ0LQpmDqPEGLBWXF/yZP1tlsplGhzw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", "dev": true, "dependencies": { "@types/jasmine": "*" @@ -2621,9 +2914,9 @@ } }, "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "node_modules/@types/minimist": { @@ -2679,9 +2972,9 @@ "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" }, "node_modules/@types/webpack-sources": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", - "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", "dev": true, "dependencies": { "@types/node": "*", @@ -2699,148 +2992,148 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -2888,9 +3181,9 @@ } }, "node_modules/acorn": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz", - "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2899,6 +3192,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-walk": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", + "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/adjust-sourcemap-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", @@ -5616,9 +5918,9 @@ } }, "node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -6143,9 +6445,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", - "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", "dev": true }, "node_modules/es6-promise": { @@ -7380,6 +7682,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -8246,12 +8563,13 @@ } }, "node_modules/is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8349,10 +8667,13 @@ } }, "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8530,13 +8851,13 @@ } }, "node_modules/is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9319,14 +9640,14 @@ "dev": true }, "node_modules/libphonenumber-js": { - "version": "1.9.19", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz", - "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==" + "version": "1.9.23", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", + "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" }, "node_modules/license-webpack-plugin": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.19.tgz", - "integrity": "sha512-z/izhwFRYHs1sCrDgrTUsNJpd+Xsd06OcFWSwHz/TiZygm5ucweVZi1Hu14Rf6tOj/XAl1Ebyc7GW6ZyyINyWA==", + "version": "2.3.20", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", + "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", "dev": true, "dependencies": { "@types/webpack-sources": "^0.1.5", @@ -9606,9 +9927,9 @@ "dev": true }, "node_modules/make-fetch-happen": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.0.3.tgz", - "integrity": "sha512-uZ/9Cf2vKqsSWZyXhZ9wHHyckBrkntgbnqV68Bfe8zZenlf7D6yuGMXvHZQ+jSnzPkjosuNP1HGasj1J4h8OlQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.0.4.tgz", + "integrity": "sha512-sQWNKMYqSmbAGXqJg2jZ+PmHh5JAybvwu0xM8mZR/bsTjGiTASj3ldXJV7KFHy1k/IJIBkjxQFoWIVsv9+PQMg==", "dev": true, "dependencies": { "agentkeepalive": "^4.1.3", @@ -10132,9 +10453,9 @@ } }, "node_modules/minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.4.tgz", + "integrity": "sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==", "dev": true, "dependencies": { "minipass": "^3.1.0", @@ -10272,9 +10593,9 @@ "dev": true }, "node_modules/nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "dev": true, "optional": true }, @@ -11135,12 +11456,12 @@ } }, "node_modules/pacote": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.4.tgz", - "integrity": "sha512-RfahPCunM9GI7ryJV/zY0bWQiokZyLqaSNHXtbNSoLb7bwTvBbJBEyCJ01KWs4j1Gj7GmX8crYXQ1sNX6P2VKA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, "dependencies": { - "@npmcli/git": "^2.0.1", + "@npmcli/git": "^2.1.0", "@npmcli/installed-package-contents": "^1.0.6", "@npmcli/promise-spawn": "^1.2.0", "@npmcli/run-script": "^1.8.2", @@ -14482,7 +14803,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, "engines": { "node": ">=0.4.x" @@ -14635,9 +14956,9 @@ } }, "node_modules/read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "dependencies": { "json-parse-even-better-errors": "^2.3.0", @@ -15818,9 +16139,9 @@ "dev": true }, "node_modules/smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, "engines": { "node": ">= 6.0.0", @@ -16754,30 +17075,30 @@ } }, "node_modules/stylelint-config-recommended": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", - "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", + "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", "dev": true, "peerDependencies": { - "stylelint": ">=10.1.0" + "stylelint": "^13.13.0" } }, "node_modules/stylelint-config-standard": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz", - "integrity": "sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", + "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", "dev": true, "dependencies": { - "stylelint-config-recommended": "^3.0.0" + "stylelint-config-recommended": "^5.0.0" }, "peerDependencies": { - "stylelint": ">=10.1.0" + "stylelint": "^13.13.0" } }, "node_modules/stylelint-scss": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.19.0.tgz", - "integrity": "sha512-Ic5bsmpS4wVucOw44doC1Yi9f5qbeVL4wPFiEOaUElgsOuLEN6Ofn/krKI8BeNL2gAn53Zu+IcVV4E345r6rBw==", + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.20.1.tgz", + "integrity": "sha512-OTd55O1TTAC5nGKkVmUDLpz53LlK39R3MImv1CfuvsK7/qugktqiZAeQLuuC4UBhzxCnsc7fp9u/gfRZwFAIkA==", "dev": true, "dependencies": { "lodash": "^4.17.15", @@ -17240,9 +17561,9 @@ } }, "node_modules/tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.6.tgz", + "integrity": "sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==", "dev": true, "dependencies": { "chownr": "^2.0.0", @@ -17516,29 +17837,47 @@ } }, "node_modules/ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.0.tgz", + "integrity": "sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==", "dev": true, "dependencies": { + "@cspotcode/source-map-support": "0.6.1", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=12.0.0" }, "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/ts-protoc-gen": { @@ -17983,9 +18322,9 @@ } }, "node_modules/url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "dev": true, "dependencies": { "querystringify": "^2.1.1", @@ -18286,21 +18625,21 @@ } }, "node_modules/webpack": { - "version": "5.41.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.41.1.tgz", - "integrity": "sha512-AJZIIsqJ/MVTmegEq9Tlw5mk5EHdGiJbDdz9qP15vmUH+oxI1FdWcL0E9EO8K/zKaRPWqEs7G/OPxq1P61u5Ug==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.44.0.tgz", + "integrity": "sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.48", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.2.1", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.6.0", + "es-module-lexer": "^0.7.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -19652,25 +19991,25 @@ }, "dependencies": { "@angular-devkit/architect": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1201.1.tgz", - "integrity": "sha512-n7ycxrIPbtnV7q8PH5Uvs8Jd++u6hWUiB+8EUxznSfdHGA+fE7TTnJTkc27LoMlYZAImc/Axp/uyYZ6Awt72ZQ==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1201.4.tgz", + "integrity": "sha512-hGO5NrZxV8Z7sILwokt7H+1sMf+5tJS9PJszvYlIBSzG0LBkOwwLQDb4MD42ATXFru57SXNqMZDVKoi1kTgxAw==", "dev": true, "requires": { - "@angular-devkit/core": "12.1.1", + "@angular-devkit/core": "12.1.4", "rxjs": "6.6.7" } }, "@angular-devkit/build-angular": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.1.1.tgz", - "integrity": "sha512-mJjpPuJlS55gwi/W2g8CIMjPVtUjKCKJdjn34eeYk1Kgw9JYRIsiEivx1hcGyLmiSTF8gRGvW1TEyO+k55/QqA==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.1.4.tgz", + "integrity": "sha512-9kMdnaU2dr8o7gJpuBsEHLUpa6huF8uZQEd1+jhKfByEY/xTQo8qztvmbhFhrSfDvdYRygNHItpt3pYEoCEOig==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1201.1", - "@angular-devkit/build-optimizer": "0.1201.1", - "@angular-devkit/build-webpack": "0.1201.1", - "@angular-devkit/core": "12.1.1", + "@angular-devkit/architect": "0.1201.4", + "@angular-devkit/build-optimizer": "0.1201.4", + "@angular-devkit/build-webpack": "0.1201.4", + "@angular-devkit/core": "12.1.4", "@babel/core": "7.14.6", "@babel/generator": "7.14.5", "@babel/helper-annotate-as-pure": "7.14.5", @@ -19682,7 +20021,7 @@ "@babel/template": "7.14.5", "@discoveryjs/json-ext": "0.5.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.1.1", + "@ngtools/webpack": "12.1.4", "ansi-colors": "4.1.1", "babel-loader": "8.2.2", "browserslist": "^4.9.1", @@ -19702,7 +20041,7 @@ "karma-source-map-support": "1.4.0", "less": "4.1.1", "less-loader": "10.0.0", - "license-webpack-plugin": "2.3.19", + "license-webpack-plugin": "2.3.20", "loader-utils": "2.0.0", "mini-css-extract-plugin": "1.6.2", "minimatch": "3.0.4", @@ -19731,7 +20070,7 @@ "text-table": "0.2.0", "tree-kill": "1.2.2", "tslib": "2.3.0", - "webpack": "5.41.1", + "webpack": "5.44.0", "webpack-dev-middleware": "5.0.0", "webpack-dev-server": "3.11.2", "webpack-merge": "5.8.0", @@ -19739,9 +20078,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1201.1.tgz", - "integrity": "sha512-SdAffCpjRNFKwnEq8xdPdCWPgdrfY8rlmTZXGY7e1whR4vnyZi+afk1BAsmbNyWlHYVv0Zcnh+Q1VH3OBDLwhw==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1201.4.tgz", + "integrity": "sha512-Hq+mDUe4xIyq4939JZaUkptsM89WnZOk8Qel6mS0T/bxMX/qs+nuGD5o+xDKkuayogbiTrLmyZBib0/90eSXEA==", "dev": true, "requires": { "source-map": "0.7.3", @@ -19758,19 +20097,19 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1201.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1201.1.tgz", - "integrity": "sha512-isgj6bSFr16tuXEoX0VypvsQmg3uDOdvYDQZvkwzUrIyvQo5TeoOy/MLgrb9v+tXjEA7oZrzuigE4Hjzn466bQ==", + "version": "0.1201.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1201.4.tgz", + "integrity": "sha512-eMmbyHyWJZMQ1tfwVdja/iAk/eXJFYrF8b27gDV9gGI7MGB3KJ93AhkbPbcvlw4Hhx4+6M11GfeXzbwH0q9pnQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1201.1", + "@angular-devkit/architect": "0.1201.4", "rxjs": "6.6.7" } }, "@angular-devkit/core": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.1.1.tgz", - "integrity": "sha512-z5+O3ugXbo8djKPjUtf/UfnYCmco2K1LVhQ6cWLhKi3NKRBiHeNmZh5nAycqFD8/Q+oI/+Ao40MkmkK1Tq0jsw==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.1.4.tgz", + "integrity": "sha512-KOzGD8JbP/7EeUwPiU5x+fo3ZEQ5R4IVW5WoH92PaO3mdpqXC7UL2MWLct8PUe9il9nqJMvrBMldSSvP9PCT2w==", "dev": true, "requires": { "ajv": "8.6.0", @@ -19782,80 +20121,234 @@ } }, "@angular-devkit/schematics": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.1.1.tgz", - "integrity": "sha512-oRsvlhJQLXkGWdJvArOby+G4j8UX2uCHwrN4EC1hXUKs84UsD+UATYOAh4h2auy+I+sdrmELUaHwdI4wdKpqnw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.0.tgz", + "integrity": "sha512-C+eutMKtOLROk/2zs1NkXeLZJpFtvZm7ctWmcns0Yh83Di2sCgGiSqdqNZFyDplxkt5W5lF2cdBSGyP8ZH+/ug==", "dev": true, "requires": { - "@angular-devkit/core": "12.1.1", + "@angular-devkit/core": "12.2.0", "ora": "5.4.1", "rxjs": "6.6.7" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + } } }, "@angular/animations": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.0.3.tgz", - "integrity": "sha512-uaOltimrGBJe1vIunaz9d8gtE8IY242XwakYGSFYf1zIseJRI7GBQ29L8+O2/QHbdTgdtsubYaqrPyMYLKYDvA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.0.tgz", + "integrity": "sha512-BCta/HT0VaM0hzsyRyb24UIaV7vlpo2jJjSwnBhO5RosH+bAaA3Faa3ps3AjCDCEXo9z99dvxJFm8WqdunPYyw==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/cdk": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.1.1.tgz", - "integrity": "sha512-MJENa8qmfLAr6t59u1+mEC2YPbCn4n3vsY6k8fKyf+ILXwwGHWNZlYblaRMBjrF/crSx1Kd5vb30RCqIcNTGsA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.0.tgz", + "integrity": "sha512-Dts+KIMz6EdzQxaWBFcNwgWAHVPkI5pnOGMidKKVOmjezSUN6mhfBKq8emgsddJMRAqz/1VHMAEaRkp0VoBKiA==", "requires": { "parse5": "^5.0.0", "tslib": "^2.2.0" } }, "@angular/cli": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.1.1.tgz", - "integrity": "sha512-rQZItn3kpYEX6tH7wquAEhJuxVpW6sYKO2tSi8Suxrm+iz1RPRnfhSwS1WIEumnwpFRtH/8P+lOrScax1ldYkg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.0.tgz", + "integrity": "sha512-gxw4e3Wb1YgNE+f9sX90xea5vXatqvlYq3mOWFUWVKYcayAgnt9z97a1ULEkSytS1aVjyL44zzkU/QFufPpadQ==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1201.1", - "@angular-devkit/core": "12.1.1", - "@angular-devkit/schematics": "12.1.1", - "@schematics/angular": "12.1.1", + "@angular-devkit/architect": "0.1202.0", + "@angular-devkit/core": "12.2.0", + "@angular-devkit/schematics": "12.2.0", + "@schematics/angular": "12.2.0", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", - "debug": "4.3.1", + "debug": "4.3.2", "ini": "2.0.0", - "inquirer": "8.1.1", + "inquirer": "8.1.2", "jsonc-parser": "3.0.0", "npm-package-arg": "8.1.5", "npm-pick-manifest": "6.1.1", "open": "8.2.1", "ora": "5.4.1", - "pacote": "11.3.4", + "pacote": "11.3.5", "resolve": "1.20.0", "semver": "7.3.5", "symbol-observable": "4.0.0", "uuid": "8.3.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1202.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.0.tgz", + "integrity": "sha512-99O8iLO9LEVTPYN6kj6XINHxjw13ofTS48hm3D0i44QMEyq3SRH1ctH6HcUAtbgPF3VjOUFr5vRYpQN1OdOCXw==", + "dev": true, + "requires": { + "@angular-devkit/core": "12.2.0", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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, + "requires": { + "color-name": "~1.1.4" + } + }, + "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 + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "inquirer": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.1.2.tgz", + "integrity": "sha512-DHLKJwLPNgkfwNmsuEUKSejJFbkv0FMO9SMiQbjI3n5NQuCrSIBqP66ggqyz2a6t2qEolKrMjhQ3+W/xXgUQ+Q==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.3.0", + "run-async": "^2.4.0", + "rxjs": "^7.2.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "rxjs": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", + "dev": true, + "requires": { + "tslib": "~2.1.0" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tslib": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", + "dev": true + } } }, "@angular/common": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.0.5.tgz", - "integrity": "sha512-jKiPjWVL3jXVKgXwINlsF5O0r9gX/mAoa5UVy57O8jcg+ENbH9LLSOikgiF/0HPxk2uvRV5OYmbBgOY1xT41kQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.0.tgz", + "integrity": "sha512-9OaqH5WhfJ/YpN9b4TmiGHdOar/3NiGjktwG1/5jV4mTO+tOP25yNO4zCd4RuaRURipWUEa8mSaesgUgTb3jmQ==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/compiler": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.0.3.tgz", - "integrity": "sha512-Vux9JwHd5pYsSmNvACUWULdT8/nIekP9k2yGqaDdbiHsptk5UCcyH7E0zhMh8Um4NYFqMBZeO0yXySa+7u5aJA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.0.tgz", + "integrity": "sha512-24G1joE699gbAHRAIESVQBI797Q506MZ/LWyFHRjfdlfXgltDN63j5dpNJzb/rUK1/uHGGAJaEH+OE60ZK2q9Q==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/compiler-cli": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.0.5.tgz", - "integrity": "sha512-XBZWU2S7N2kvQJK0H5KyLHiLVhYJrjh3NtbVBv67sCY9Ft8fv2jjbozTgXqeoYZ1xAxcZ2ZAB0n5SkhmY75Mow==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.0.tgz", + "integrity": "sha512-VjGb4gty8JSkmcBvdc4QzQx6mPT7cXs42Hu8IDK7dQma3nTRmwbX0BF1m7i+kbrjWHK8I85FbsYbSzfzZid2NA==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -19870,8 +20363,8 @@ "semver": "^7.0.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "tslib": "^2.1.0", - "yargs": "^16.2.0" + "tslib": "^2.2.0", + "yargs": "^17.0.0" }, "dependencies": { "source-map": { @@ -19879,77 +20372,92 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true + }, + "yargs": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.0.tgz", + "integrity": "sha512-SQr7qqmQ2sNijjJGHL4u7t8vyDZdZ3Ahkmo4sc1w5xI9TBX0QDdG/g4SFnxtWOsGLjwHQue57eFALfwFCnixgg==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } } } }, "@angular/core": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.0.3.tgz", - "integrity": "sha512-wGsu7wMeBQNN5ShJsLpzkCfBk6h089ZIf9bUMytNWAvLd+MGqP7f6D1ua9+ul62VNyBFtWgQLK/38E6J+9OPYg==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.0.tgz", + "integrity": "sha512-zy/gqSlSEmi85HVbpoQ0nhC74xoL+aoofvbkKPgdgyEcnqzBt4IFzH++0EZ+GMeZ2pVoNfiXklUhAy2OBAiR/g==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/forms": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.0.5.tgz", - "integrity": "sha512-Ew/fGPTsywoYnm6DFPA/DyLl4Sb+1/uzpledrbxUHzaSKIrnXFrjQiUTmsbbq+8qono3JzbUIblqH1DrNThYiA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.0.tgz", + "integrity": "sha512-lhKin5IHElH5qk2Su/o0YMF9JYb84grz0WMIHYmt3EASw/EGvzZwUBd76anJWWwFig6GLw/ZdNC9zLW2Leh06Q==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/language-service": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.1.1.tgz", - "integrity": "sha512-8jpfEJcK2rO6JFhqrSoHqAXyIiOmWtAnl6cNkvzvQjQgrzlIwFuixEgcohq8QaKN4vWYZtnX6YKxUakNmGo+Ww==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.0.tgz", + "integrity": "sha512-oWZ3E+640iRxkf+tStNpDbJT4mc7zNdOCg4L0YjpBuDOiStJ0YDgtJfNdYE+Ap7fsb0QvUuXpU0QGnDVazQ1PQ==", "dev": true }, "@angular/material": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.1.1.tgz", - "integrity": "sha512-q2vhbVQfjr+88beqCotCVlaPRyy9y2O2asiR3+0BU9OJ1DjTo1QpBmMpck5InP7Es49t9RTk9RzzC0t18p45yA==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.0.tgz", + "integrity": "sha512-onrWWoukVDt+lBRFLAaw9JFjncGMKGBPRq0VyT/ppl6tfw3+l/AiQsUd9lzpFmZfkH6PZZwv97k/5eu+6Y8jdg==", "requires": { "tslib": "^2.2.0" } }, "@angular/material-moment-adapter": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.1.1.tgz", - "integrity": "sha512-YQs4BFiQ0rCYhWzcPJ6IS6zJRM+iKAjAEo/Z89G4tR1vekA4Fl95PBs9DVoCLS2uptOPL99tnUMqeNtFjUM6wQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.0.tgz", + "integrity": "sha512-b54DKvT+EzJMr63pO5hOy7IipXKGFcH1qoE82omZn0hcPI7699eu6U4CC8zTubhDfaCsSrFvStvY2IEbb/R8+w==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.0.3.tgz", - "integrity": "sha512-mHcjOxnRWv1G45npbyMknROCx+LmJemYoSERrhi+fBfv00zdJlZn+TcNIgg90xsBiP4C2d1+GMk0w8I0LYl6bQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.0.tgz", + "integrity": "sha512-MIoWBhhMmPBFfuOPBgEG21uqCZVudTj4YMGxQH4iVlI9GD9ZAht8XgopN9Vw4cytPNfKWsspLoruhIWRNSJlNA==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/platform-browser-dynamic": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.0.5.tgz", - "integrity": "sha512-sYkOJxXj4vEZICT2oODkQF9wNaKoScSkiw2ooBYN0UX02mFKlWKa9vkzp6JmN1EF8YOWF0JnRqBPAi1WbOnAMw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.0.tgz", + "integrity": "sha512-mvUo1WEI8PrJxIer0RLXSW9raYDrKarUQ9T2Q0/R3ZgS6Y1WvoJe+qSZ7K/hCbErH4zd+64TuJHlj+g2WHPLug==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/router": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.0.5.tgz", - "integrity": "sha512-2jiaT+OxCmJbeJ0MTPmIHBsTFLysenvPZteozYsjcmUo9mOzJHAjqHLJvTC+Ri+E9xvnplh+8BPETRleV1pAFw==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.0.tgz", + "integrity": "sha512-C5S0bU8KtU/2wBQ76AZVFivWbGYJCDwkVg2Lk4ddjqs/pKWb0vg2Baa3DfJrIz3esqfYUJl00HMYQVM9+QtZQA==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@angular/service-worker": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.0.5.tgz", - "integrity": "sha512-ZJ8EhuTaktZgoo1ZylmiTlxmALaAiK7ow0vTInfuRSkVbrUhuJQv3qqAEoGAgLH5a3QW+E8/8CoMzNMDcwpWXQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.0.tgz", + "integrity": "sha512-pTDUAwTCkoRZO2E3nIvJJ3Sur921oc7djBfcKiqB0+L10xvlwiPZ+jTLWndgKPfnNzbw/izZquvXjZElDazRIA==", "requires": { - "tslib": "^2.1.0" + "tslib": "^2.2.0" } }, "@babel/code-frame": { @@ -21077,6 +21585,21 @@ "to-fast-properties": "^2.0.0" } }, + "@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.6.1.tgz", + "integrity": "sha512-DX3Z+T5dt1ockmPdobJS/FAsQPW4V4SrWEhD2iYQT2Cb2tQsiMnYxrcUH9By/Z3B+v0S5LMBkQtV/XOBbpLEOg==", + "dev": true, + "requires": { + "@cspotcode/source-map-consumer": "0.8.0" + } + }, "@csstools/convert-colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", @@ -21122,9 +21645,9 @@ } }, "@ngtools/webpack": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.1.tgz", - "integrity": "sha512-NOHTBEjUkawQSU6sHA7EJSi5Ixw+oVmlYi17HXAhGRY1czasLQMiKQPnigbSgMLBR9Jhez7TttqAUtx6Pey2FQ==", + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.1.4.tgz", + "integrity": "sha512-hXc8dTnRfDB7o1Pd7a07aw0rjGmVLXU28+cTHQJliosgD3obcjfZ4QPA0k97vlQMtqVJawuShRfyiUKrpsJf8Q==", "dev": true, "requires": { "enhanced-resolve": "5.8.2" @@ -21302,14 +21825,42 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "@schematics/angular": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.1.1.tgz", - "integrity": "sha512-ukSKoAWfXt28TiHlRrEzKFW63V3jroRF3xnBKtsaL3AZ4MVJiHzOWXkzDAZBaEOLUH/l6Xhm64NMgOqMEAg1rQ==", + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.0.tgz", + "integrity": "sha512-2NolT/PNKgjINIHvz6o4sYFj4D4ai7Usf+HspQCi9W30qtLV4Z6hRXoEhmDxrGSlF67vJdwUwDM3sP+6Tg8XEw==", "dev": true, "requires": { - "@angular-devkit/core": "12.1.1", - "@angular-devkit/schematics": "12.1.1", + "@angular-devkit/core": "12.2.0", + "@angular-devkit/schematics": "12.2.0", "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.0.tgz", + "integrity": "sha512-9H2NfE4eazpMPwbAx4ZbtTNijo6419DZsmQzlzwQWzTInO3+CAjQuyW53W5Nt/IoauNVOgOEsC8/YbYjNmN0Aw==", + "dev": true, + "requires": { + "ajv": "8.6.2", + "ajv-formats": "2.1.0", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + } } }, "@stylelint/postcss-css-in-js": { @@ -21343,6 +21894,30 @@ "integrity": "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==", "dev": true }, + "@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, "@types/component-emitter": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.10.tgz", @@ -21382,9 +21957,9 @@ } }, "@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", + "version": "0.0.50", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz", + "integrity": "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==", "dev": true }, "@types/file-saver": { @@ -21393,9 +21968,9 @@ "integrity": "sha512-xbqnZmGrCEqi/KUzOkeUSe77p7APvLuyellGaAoeww3CHJ1AbjQWjPSCFtKIzZn8L7LpEax4NXnC+gfa6nM7IA==" }, "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA==", "dev": true, "requires": { "@types/minimatch": "*", @@ -21403,20 +21978,20 @@ } }, "@types/google-protobuf": { - "version": "3.15.2", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.2.tgz", - "integrity": "sha512-ubeqvw7sl6CdgeiIilsXB2jIFoD/D0F+/LIEp7xEBEXRNtDJcf05FRINybsJtL7GlkWOUVn6gJs2W9OF+xI6lg==" + "version": "3.15.3", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.3.tgz", + "integrity": "sha512-MDpu7lit927cdLtBzTPUFjXGANFUnu5ThPqjygY8XmCyI/oDlIA0jAi4sffGOxYaLK2CCxAuU9wGxsgAQbA6FQ==" }, "@types/jasmine": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.7.7.tgz", - "integrity": "sha512-yZzGe1d1T0y+imXDZ79F030nn8qbmiwpWKCZKvKN0KbTzwXAVYShUxkIxu1ba+vhIdabTGVGCfbtZC0oOam8TQ==", + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.8.2.tgz", + "integrity": "sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg==", "dev": true }, "@types/jasminewd2": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.9.tgz", - "integrity": "sha512-Oz+Faunpe2SimFvkMYMXxpK89WXl7rZHG8abTOKcGndu4xOoSbUZ+jUdZ0LQpmDqPEGLBWXF/yZP1tlsplGhzw==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.10.tgz", + "integrity": "sha512-J7mDz7ovjwjc+Y9rR9rY53hFWKATcIkrr9DwQWmOas4/pnIPJTXawnzjwpHm3RSxz/e3ZVUvQ7cRbd5UQLo10g==", "dev": true, "requires": { "@types/jasmine": "*" @@ -21443,9 +22018,9 @@ } }, "@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", "dev": true }, "@types/minimist": { @@ -21501,9 +22076,9 @@ "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==" }, "@types/webpack-sources": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", - "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.9.tgz", + "integrity": "sha512-bvzMnzqoK16PQIC8AYHNdW45eREJQMd6WG/msQWX5V2+vZmODCOPb4TJcbgRljTZZTwTM4wUMcsI8FftNA7new==", "dev": true, "requires": { "@types/node": "*", @@ -21520,148 +22095,148 @@ } }, "@webassemblyjs/ast": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.0.tgz", - "integrity": "sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", "dev": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0" + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz", - "integrity": "sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz", - "integrity": "sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz", - "integrity": "sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", "dev": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz", - "integrity": "sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", "dev": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz", - "integrity": "sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz", - "integrity": "sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" } }, "@webassemblyjs/ieee754": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz", - "integrity": "sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.0.tgz", - "integrity": "sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.0.tgz", - "integrity": "sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz", - "integrity": "sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/helper-wasm-section": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-opt": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "@webassemblyjs/wast-printer": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz", - "integrity": "sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz", - "integrity": "sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-buffer": "1.11.0", - "@webassemblyjs/wasm-gen": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz", - "integrity": "sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/helper-api-error": "1.11.0", - "@webassemblyjs/helper-wasm-bytecode": "1.11.0", - "@webassemblyjs/ieee754": "1.11.0", - "@webassemblyjs/leb128": "1.11.0", - "@webassemblyjs/utf8": "1.11.0" + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz", - "integrity": "sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.11.0", + "@webassemblyjs/ast": "1.11.1", "@xtuc/long": "4.2.2" } }, @@ -21706,9 +22281,15 @@ } }, "acorn": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.3.0.tgz", - "integrity": "sha512-tqPKHZ5CaBJw0Xmy0ZZvLs1qTV+BNFSyvn77ASXkpBNfIRk8ev26fKrD9iLGwGA9zedPao52GSHzq8lyZG0NUw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz", + "integrity": "sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA==", + "dev": true + }, + "acorn-walk": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.1.1.tgz", + "integrity": "sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w==", "dev": true }, "adjust-sourcemap-loader": { @@ -23813,9 +24394,9 @@ "dev": true }, "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", "dev": true, "requires": { "ms": "2.1.2" @@ -24253,9 +24834,9 @@ } }, "es-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.6.0.tgz", - "integrity": "sha512-f8kcHX1ArhllUtb/wVSyvygoKCznIjnxhLxy7TCvIiMdT7fL4ZDTIKaadMe6eLvOXg6Wk02UeoFgUoZ2EKZZUA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.7.1.tgz", + "integrity": "sha512-MgtWFl5No+4S3TmhDmCz2ObFGm6lEpTnzbQi+Dd+pw4mlTIZTmM2iAs5gRlmx5zS9luzobCSBSI90JM/1/JgOw==", "dev": true }, "es6-promise": { @@ -25235,6 +25816,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", @@ -25931,12 +26521,13 @@ } }, "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, "requires": { - "call-bind": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-arrayish": { @@ -26001,10 +26592,13 @@ } }, "is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-decimal": { "version": "1.0.4", @@ -26123,13 +26717,13 @@ } }, "is-regex": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", - "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "has-symbols": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-regexp": { @@ -26746,14 +27340,14 @@ } }, "libphonenumber-js": { - "version": "1.9.19", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.19.tgz", - "integrity": "sha512-RjStfSE63LvXQEBw7pgQHPkY35z8feiMjC9wLvL1Hbt8PbhxpRrACwMXmLQgabb+IpVdcEx+olh8ll7UDXXkfA==" + "version": "1.9.23", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", + "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" }, "license-webpack-plugin": { - "version": "2.3.19", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.19.tgz", - "integrity": "sha512-z/izhwFRYHs1sCrDgrTUsNJpd+Xsd06OcFWSwHz/TiZygm5ucweVZi1Hu14Rf6tOj/XAl1Ebyc7GW6ZyyINyWA==", + "version": "2.3.20", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.20.tgz", + "integrity": "sha512-AHVueg9clOKACSHkhmEI+PCC9x8+qsQVuKECZD3ETxETK5h/PCv5/MUzyG1gm8OMcip/s1tcNxqo9Qb7WhjGsg==", "dev": true, "requires": { "@types/webpack-sources": "^0.1.5", @@ -26970,9 +27564,9 @@ "dev": true }, "make-fetch-happen": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.0.3.tgz", - "integrity": "sha512-uZ/9Cf2vKqsSWZyXhZ9wHHyckBrkntgbnqV68Bfe8zZenlf7D6yuGMXvHZQ+jSnzPkjosuNP1HGasj1J4h8OlQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.0.4.tgz", + "integrity": "sha512-sQWNKMYqSmbAGXqJg2jZ+PmHh5JAybvwu0xM8mZR/bsTjGiTASj3ldXJV7KFHy1k/IJIBkjxQFoWIVsv9+PQMg==", "dev": true, "requires": { "agentkeepalive": "^4.1.3", @@ -27370,9 +27964,9 @@ } }, "minipass-fetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.3.tgz", - "integrity": "sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.3.4.tgz", + "integrity": "sha512-TielGogIzbUEtd1LsjZFs47RWuHHfhl6TiCx1InVxApBAmQ8bL0dL5ilkLGcRvuyW/A9nE+Lvn855Ewz8S0PnQ==", "dev": true, "requires": { "encoding": "^0.1.12", @@ -27478,9 +28072,9 @@ "dev": true }, "nan": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz", - "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", "dev": true, "optional": true }, @@ -28131,12 +28725,12 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, "pacote": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.4.tgz", - "integrity": "sha512-RfahPCunM9GI7ryJV/zY0bWQiokZyLqaSNHXtbNSoLb7bwTvBbJBEyCJ01KWs4j1Gj7GmX8crYXQ1sNX6P2VKA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", + "integrity": "sha512-fT375Yczn4zi+6Hkk2TBe1x1sP8FgFsEIZ2/iWaXY2r/NkhDJfxbcn5paz1+RTFCyNf+dPnaoBDJoAxXSU8Bkg==", "dev": true, "requires": { - "@npmcli/git": "^2.0.1", + "@npmcli/git": "^2.1.0", "@npmcli/installed-package-contents": "^1.0.6", "@npmcli/promise-spawn": "^1.2.0", "@npmcli/run-script": "^1.8.2", @@ -30707,9 +31301,9 @@ } }, "read-package-json-fast": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz", - "integrity": "sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", "dev": true, "requires": { "json-parse-even-better-errors": "^2.3.0", @@ -31629,9 +32223,9 @@ } }, "smart-buffer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", - "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true }, "snapdragon": { @@ -32533,25 +33127,25 @@ } }, "stylelint-config-recommended": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-3.0.0.tgz", - "integrity": "sha512-F6yTRuc06xr1h5Qw/ykb2LuFynJ2IxkKfCMf+1xqPffkxh0S09Zc902XCffcsw/XMFq/OzQ1w54fLIDtmRNHnQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz", + "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==", "dev": true, "requires": {} }, "stylelint-config-standard": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-20.0.0.tgz", - "integrity": "sha512-IB2iFdzOTA/zS4jSVav6z+wGtin08qfj+YyExHB3LF9lnouQht//YyB0KZq9gGz5HNPkddHOzcY8HsUey6ZUlA==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-22.0.0.tgz", + "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==", "dev": true, "requires": { - "stylelint-config-recommended": "^3.0.0" + "stylelint-config-recommended": "^5.0.0" } }, "stylelint-scss": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.19.0.tgz", - "integrity": "sha512-Ic5bsmpS4wVucOw44doC1Yi9f5qbeVL4wPFiEOaUElgsOuLEN6Ofn/krKI8BeNL2gAn53Zu+IcVV4E345r6rBw==", + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-3.20.1.tgz", + "integrity": "sha512-OTd55O1TTAC5nGKkVmUDLpz53LlK39R3MImv1CfuvsK7/qugktqiZAeQLuuC4UBhzxCnsc7fp9u/gfRZwFAIkA==", "dev": true, "requires": { "lodash": "^4.17.15", @@ -32762,9 +33356,9 @@ "dev": true }, "tar": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", - "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.6.tgz", + "integrity": "sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g==", "dev": true, "requires": { "chownr": "^2.0.0", @@ -32970,16 +33564,22 @@ "dev": true }, "ts-node": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.1.1.tgz", - "integrity": "sha512-hPlt7ZACERQGf03M253ytLY3dHbGNGrAq9qIHWUY9XHYl1z7wYngSr3OQ5xmui8o2AaxsONxIzjafLUiWBo1Fg==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.2.0.tgz", + "integrity": "sha512-FstYHtQz6isj8rBtYMN4bZdnXN1vq4HCbqn9vdNQcInRqtB86PePJQIxE6es0PhxKWhj2PHuwbG40H+bxkZPmg==", "dev": true, "requires": { + "@cspotcode/source-map-support": "0.6.1", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", "yn": "3.1.1" } }, @@ -33331,9 +33931,9 @@ } }, "url-parse": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz", - "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz", + "integrity": "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==", "dev": true, "requires": { "querystringify": "^2.1.1", @@ -33564,21 +34164,21 @@ } }, "webpack": { - "version": "5.41.1", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.41.1.tgz", - "integrity": "sha512-AJZIIsqJ/MVTmegEq9Tlw5mk5EHdGiJbDdz9qP15vmUH+oxI1FdWcL0E9EO8K/zKaRPWqEs7G/OPxq1P61u5Ug==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.44.0.tgz", + "integrity": "sha512-I1S1w4QLoKmH19pX6YhYN0NiSXaWY8Ou00oA+aMcr9IUGeF5azns+IKBkfoAAG9Bu5zOIzZt/mN35OffBya8AQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.0", - "@types/estree": "^0.0.48", - "@webassemblyjs/ast": "1.11.0", - "@webassemblyjs/wasm-edit": "1.11.0", - "@webassemblyjs/wasm-parser": "1.11.0", - "acorn": "^8.2.1", + "@types/estree": "^0.0.50", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.8.0", - "es-module-lexer": "^0.6.0", + "es-module-lexer": "^0.7.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", diff --git a/console/package.json b/console/package.json index 89a56602d5..e5ac13d9da 100644 --- a/console/package.json +++ b/console/package.json @@ -10,23 +10,23 @@ }, "private": true, "dependencies": { - "@angular/animations": "~12.0.3", - "@angular/cdk": "~12.1.1", - "@angular/common": "~12.0.5", - "@angular/compiler": "~12.0.0", - "@angular/core": "~12.0.0", - "@angular/forms": "~12.0.5", + "@angular/animations": "~12.2.0", + "@angular/cdk": "~12.2.0", + "@angular/common": "~12.2.0", + "@angular/compiler": "~12.2.0", + "@angular/core": "~12.2.0", + "@angular/forms": "~12.2.0", "@angular/material": "^12.1.1", - "@angular/material-moment-adapter": "^12.1.1", - "@angular/platform-browser": "~12.0.0", - "@angular/platform-browser-dynamic": "~12.0.5", - "@angular/router": "~12.0.5", - "@angular/service-worker": "~12.0.5", + "@angular/material-moment-adapter": "^12.2.0", + "@angular/platform-browser": "~12.2.0", + "@angular/platform-browser-dynamic": "~12.2.0", + "@angular/router": "~12.2.0", + "@angular/service-worker": "~12.2.0", "@grpc/grpc-js": "^1.3.2", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", "@types/file-saver": "^2.0.2", - "@types/google-protobuf": "^3.7.4", + "@types/google-protobuf": "^3.15.3", "@types/uuid": "^8.3.0", "angular-oauth2-oidc": "^10.0.3", "angularx-qrcode": "^11.0.0", @@ -35,7 +35,7 @@ "google-proto-files": "^2.4.0", "google-protobuf": "^3.17.2", "grpc-web": "^1.2.1", - "libphonenumber-js": "^1.9.16", + "libphonenumber-js": "^1.9.23", "moment": "^2.29.1", "ngx-color": "^7.2.0", "ngx-image-cropper": "^3.3.5", @@ -49,11 +49,11 @@ }, "devDependencies": { "@angular-devkit/build-angular": "~12.1.1", - "@angular/cli": "~12.1.1", - "@angular/compiler-cli": "~12.0.5", - "@angular/language-service": "~12.1.0", - "@types/jasmine": "~3.7.7", - "@types/jasminewd2": "~2.0.3", + "@angular/cli": "~12.2.0", + "@angular/compiler-cli": "~12.2.0", + "@angular/language-service": "~12.2.0", + "@types/jasmine": "~3.8.2", + "@types/jasminewd2": "~2.0.10", "@types/node": "^15.12.1", "codelyzer": "^6.0.0", "jasmine-core": "~3.7.1", @@ -66,9 +66,9 @@ "prettier": "^2.3.1", "protractor": "~7.0.0", "stylelint": "^13.10.0", - "stylelint-config-standard": "^20.0.0", - "stylelint-scss": "^3.19.0", - "ts-node": "~9.1.1", + "stylelint-config-standard": "^22.0.0", + "stylelint-scss": "^3.20.1", + "ts-node": "~10.2.0", "tslint": "~6.1.3", "typescript": "^4.2.4" } diff --git a/console/src/app/modules/detail-layout/detail-layout.component.html b/console/src/app/modules/detail-layout/detail-layout.component.html index 784bbcb764..52c0e4c210 100644 --- a/console/src/app/modules/detail-layout/detail-layout.component.html +++ b/console/src/app/modules/detail-layout/detail-layout.component.html @@ -1,4 +1,4 @@ -
+
diff --git a/console/src/app/modules/detail-layout/detail-layout.component.scss b/console/src/app/modules/detail-layout/detail-layout.component.scss index b253034aa1..2fc80e263c 100644 --- a/console/src/app/modules/detail-layout/detail-layout.component.scss +++ b/console/src/app/modules/detail-layout/detail-layout.component.scss @@ -10,7 +10,6 @@ $lighter-color: rgba(mat.get-color-from-palette($primary, 300), .5); .detail-container { - width: 100%; display: flex; padding-bottom: 3rem; diff --git a/console/src/app/modules/detail-layout/detail-layout.component.ts b/console/src/app/modules/detail-layout/detail-layout.component.ts index 2261889519..7d311993e4 100644 --- a/console/src/app/modules/detail-layout/detail-layout.component.ts +++ b/console/src/app/modules/detail-layout/detail-layout.component.ts @@ -2,12 +2,13 @@ import { Component, Input } from '@angular/core'; import { RouterLink } from '@angular/router'; @Component({ - selector: 'app-detail-layout', - templateUrl: './detail-layout.component.html', - styleUrls: ['./detail-layout.component.scss'], + selector: 'app-detail-layout', + templateUrl: './detail-layout.component.html', + styleUrls: ['./detail-layout.component.scss'], }) export class DetailLayoutComponent { - @Input() backRouterLink!: RouterLink; - @Input() title: string | null = ''; - @Input() description: string | null = ''; + @Input() backRouterLink!: RouterLink; + @Input() title: string | null = ''; + @Input() description: string | null = ''; + @Input() maxWidth: boolean = true; } diff --git a/console/src/app/modules/features/features.component.html b/console/src/app/modules/features/features.component.html index 595c5acfd3..a64e3cdd9a 100644 --- a/console/src/app/modules/features/features.component.html +++ b/console/src/app/modules/features/features.component.html @@ -49,7 +49,7 @@
-

{{'POLICY.DEFAULTLABEL' | translate}}

+ {{'POLICY.DEFAULTLABEL' | translate}}
{{'FEATURES.DATA.AUDITLOGRETENTION' | translate}} diff --git a/console/src/app/modules/features/features.component.scss b/console/src/app/modules/features/features.component.scss index b0b1bfdaca..4c310fec53 100644 --- a/console/src/app/modules/features/features.component.scss +++ b/console/src/app/modules/features/features.component.scss @@ -1,8 +1,3 @@ -.default { - color: var(--color-main); - font-size: 14px; -} - .tier-desc { color: var(--grey); font-size: 14px; diff --git a/console/src/app/modules/policies/login-policy/login-policy.component.html b/console/src/app/modules/policies/login-policy/login-policy.component.html index 61069b4c24..5b874ea873 100644 --- a/console/src/app/modules/policies/login-policy/login-policy.component.html +++ b/console/src/app/modules/policies/login-policy/login-policy.component.html @@ -1,7 +1,7 @@ -

{{'POLICY.DEFAULTLABEL' | translate}}

+ {{'POLICY.DEFAULTLABEL' | translate}}
diff --git a/console/src/app/modules/policies/login-policy/login-policy.component.scss b/console/src/app/modules/policies/login-policy/login-policy.component.scss index e9b71f6fe8..cb0de05a11 100644 --- a/console/src/app/modules/policies/login-policy/login-policy.component.scss +++ b/console/src/app/modules/policies/login-policy/login-policy.component.scss @@ -1,8 +1,3 @@ -.default { - color: var(--color-main); - margin-top: 0; -} - .spinner-wr { margin: .5rem 0; } diff --git a/console/src/app/modules/policies/login-texts/helper.ts b/console/src/app/modules/policies/login-texts/helper.ts index 06f6fa7359..fe5aaedd2e 100644 --- a/console/src/app/modules/policies/login-texts/helper.ts +++ b/console/src/app/modules/policies/login-texts/helper.ts @@ -19,6 +19,9 @@ import { MFAProvidersText, PasswordChangeDoneScreenText, PasswordChangeScreenText, + PasswordlessPromptScreenText, + PasswordlessRegistrationDoneScreenText, + PasswordlessRegistrationScreenText, PasswordlessScreenText, PasswordResetDoneScreenText, PasswordScreenText, @@ -313,5 +316,39 @@ export function mapRequestValues(map: Partial, req: Req): Req { r29.setValidateTokenText(map.verifyMfaU2fText?.validateTokenText ?? ''); req.setVerifyMfaU2fText(r29); + const r30 = new PasswordlessPromptScreenText(); + r30.setDescription(map.passwordlessPromptText?.description ?? ''); + r30.setDescriptionInit(map.passwordlessPromptText?.descriptionInit ?? ''); + r30.setNextButtonText(map.passwordlessPromptText?.nextButtonText ?? ''); + r30.setPasswordlessButtonText(map.passwordlessPromptText?.passwordlessButtonText ?? ''); + r30.setSkipButtonText(map.passwordlessPromptText?.skipButtonText ?? ''); + r30.setTitle(map.passwordlessPromptText?.title ?? ''); + req.setPasswordlessPromptText(r30); + + const r31 = new PasswordlessRegistrationDoneScreenText(); + r31.setDescription(map.passwordlessRegistrationDoneText?.description ?? ''); + r31.setNextButtonText(map.passwordlessRegistrationDoneText?.nextButtonText ?? ''); + r31.setTitle(map.passwordlessRegistrationDoneText?.title ?? ''); + req.setPasswordlessRegistrationDoneText(r31); + + const r32 = new PasswordlessRegistrationScreenText(); + r32.setDescription(map.passwordlessRegistrationText?.description ?? ''); + r32.setErrorRetry(map.passwordlessRegistrationText?.errorRetry ?? ''); + r32.setNotSupported(map.passwordlessRegistrationText?.notSupported ?? ''); + r32.setRegisterTokenButtonText(map.passwordlessRegistrationText?.registerTokenButtonText ?? ''); + r32.setTitle(map.passwordlessRegistrationText?.title ?? ''); + r32.setTokenNameLabel(map.passwordlessRegistrationText?.tokenNameLabel ?? ''); + req.setPasswordlessRegistrationText(r32); + + + const r33 = new PasswordlessScreenText(); + r33.setDescription(map.passwordlessText?.description ?? ''); + r33.setErrorRetry(map.passwordlessText?.errorRetry ?? ''); + r33.setLoginWithPwButtonText(map.passwordlessText?.loginWithPwButtonText ?? ''); + r33.setNotSupported(map.passwordlessText?.notSupported ?? ''); + r33.setTitle(map.passwordlessText?.title ?? ''); + r33.setValidateTokenButtonText(map.passwordlessText?.validateTokenButtonText ?? ''); + req.setPasswordlessText(r33); + return req; } diff --git a/console/src/app/modules/policies/login-texts/login-texts.component.ts b/console/src/app/modules/policies/login-texts/login-texts.component.ts index c3376278df..6dbcabdd56 100644 --- a/console/src/app/modules/policies/login-texts/login-texts.component.ts +++ b/console/src/app/modules/policies/login-texts/login-texts.component.ts @@ -46,7 +46,6 @@ const KeyNamesArray = [ 'passwordChangeText', 'passwordResetDoneText', 'passwordText', - 'passwordlessText', 'registrationOptionText', 'registrationOrgText', 'registrationUserText', @@ -56,6 +55,10 @@ const KeyNamesArray = [ 'usernameChangeText', 'verifyMfaOtpText', 'verifyMfaU2fText', + 'passwordlessPromptText', + 'passwordlessRegistrationDoneText', + 'passwordlessRegistrationText', + 'passwordlessText', ]; // tslint:enable diff --git a/console/src/app/modules/policies/message-texts/message-texts.component.html b/console/src/app/modules/policies/message-texts/message-texts.component.html index c28a713b1c..7193de77eb 100644 --- a/console/src/app/modules/policies/message-texts/message-texts.component.html +++ b/console/src/app/modules/policies/message-texts/message-texts.component.html @@ -1,4 +1,4 @@ - @@ -27,7 +27,7 @@
-
diff --git a/console/src/app/modules/policies/message-texts/message-texts.component.ts b/console/src/app/modules/policies/message-texts/message-texts.component.ts index e16e0ca9fd..e80b6d4ee4 100644 --- a/console/src/app/modules/policies/message-texts/message-texts.component.ts +++ b/console/src/app/modules/policies/message-texts/message-texts.component.ts @@ -11,22 +11,26 @@ import { GetDefaultVerifyPhoneMessageTextRequest as AdminGetDefaultVerifyPhoneMessageTextRequest, SetDefaultDomainClaimedMessageTextRequest, SetDefaultInitMessageTextRequest, + SetDefaultPasswordlessRegistrationMessageTextRequest, SetDefaultPasswordResetMessageTextRequest, SetDefaultVerifyEmailMessageTextRequest, SetDefaultVerifyPhoneMessageTextRequest, } from 'src/app/proto/generated/zitadel/admin_pb'; import { GetCustomDomainClaimedMessageTextRequest, + GetCustomPasswordlessRegistrationMessageTextRequest, GetCustomPasswordResetMessageTextRequest, GetCustomVerifyEmailMessageTextRequest, GetCustomVerifyPhoneMessageTextRequest, GetDefaultDomainClaimedMessageTextRequest, GetDefaultInitMessageTextRequest, + GetDefaultPasswordlessRegistrationMessageTextRequest, GetDefaultPasswordResetMessageTextRequest, GetDefaultVerifyEmailMessageTextRequest, GetDefaultVerifyPhoneMessageTextRequest, SetCustomDomainClaimedMessageTextRequest, SetCustomInitMessageTextRequest, + SetCustomPasswordlessRegistrationMessageTextRequest, SetCustomPasswordResetMessageTextRequest, SetCustomVerifyEmailMessageTextRequest, SetCustomVerifyPhoneMessageTextRequest, @@ -46,6 +50,7 @@ enum MESSAGETYPES { VERIFYEMAIL = 'VE', PASSWORDRESET = 'PR', DOMAINCLAIMED = 'DC', + PASSWORDLESS = 'PL', } const REQUESTMAP = { @@ -134,6 +139,24 @@ const REQUESTMAP = { req.setText(map.text ?? ''); req.setTitle(map.title ?? ''); + return req; + }, + }, + [MESSAGETYPES.PASSWORDLESS]: { + get: new GetCustomPasswordlessRegistrationMessageTextRequest(), + set: new SetCustomPasswordlessRegistrationMessageTextRequest(), + getDefault: new GetDefaultPasswordlessRegistrationMessageTextRequest(), + setFcn: (map: Partial): + SetCustomPasswordlessRegistrationMessageTextRequest => { + const req = new SetCustomPasswordlessRegistrationMessageTextRequest(); + req.setButtonText(map.buttonText ?? ''); + req.setFooterText(map.footerText ?? ''); + req.setGreeting(map.greeting ?? ''); + req.setPreHeader(map.preHeader ?? ''); + req.setSubject(map.subject ?? ''); + req.setText(map.text ?? ''); + req.setTitle(map.title ?? ''); + return req; }, }, @@ -221,6 +244,23 @@ const REQUESTMAP = { req.setText(map.text ?? ''); req.setTitle(map.title ?? ''); + return req; + }, + }, + [MESSAGETYPES.PASSWORDLESS]: { + get: new GetDefaultPasswordlessRegistrationMessageTextRequest(), + set: new SetDefaultPasswordlessRegistrationMessageTextRequest(), + setFcn: (map: Partial): + SetDefaultPasswordlessRegistrationMessageTextRequest => { + const req = new SetDefaultPasswordlessRegistrationMessageTextRequest(); + req.setButtonText(map.buttonText ?? ''); + req.setFooterText(map.footerText ?? ''); + req.setGreeting(map.greeting ?? ''); + req.setPreHeader(map.preHeader ?? ''); + req.setSubject(map.subject ?? ''); + req.setText(map.text ?? ''); + req.setTitle(map.title ?? ''); + return req; }, }, @@ -245,12 +285,100 @@ export class MessageTextsComponent implements OnDestroy { public updateRequest!: SetCustomInitMessageTextRequest | SetDefaultInitMessageTextRequest; - public chips: any[] = [ - { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, - { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, - { key: 'POLICY.MESSAGE_TEXTS.CHIPS.code', value: '{{.Code}}' }, - { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, - ]; + public chips: { + [messagetype: string]: Array<{ key: string; value: string; }>; + } = { + [MESSAGETYPES.DOMAINCLAIMED]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.domain', value: '{{.Domain}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.tempUsername', value: '{{.TempUsername}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + [MESSAGETYPES.INIT]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.code', value: '{{.Code}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + [MESSAGETYPES.PASSWORDRESET]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.code', value: '{{.Code}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + [MESSAGETYPES.VERIFYEMAIL]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.code', value: '{{.Code}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + [MESSAGETYPES.VERIFYPHONE]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.code', value: '{{.Code}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + [MESSAGETYPES.PASSWORDLESS]: [ + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.preferredLoginName', value: '{{.PreferredLoginName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.username', value: '{{.UserName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.firstname', value: '{{.FirstName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastname', value: '{{.Lastname}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.nickName', value: '{{.NickName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.displayName', value: '{{.DisplayName}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastEmail', value: '{{.LastEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedEmail', value: '{{.VerifiedEmail}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.lastPhone', value: '{{.LastPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.verifiedPhone', value: '{{.VerifiedPhone}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.loginnames', value: '{{.LoginNames}}' }, + { key: 'POLICY.MESSAGE_TEXTS.CHIPS.changedate', value: '{{.ChangeDate}}' }, + ], + }; public locale: string = 'en'; public LOCALES: string[] = ['en']; @@ -283,9 +411,7 @@ export class MessageTextsComponent implements OnDestroy { } return this.route.params; - })).subscribe(() => { - - }); + })).subscribe(); } public getDefaultValues(type: MESSAGETYPES, req: any): Promise { @@ -300,6 +426,8 @@ export class MessageTextsComponent implements OnDestroy { return this.stripDetails((this.service).getDefaultPasswordResetMessageText(req)); case MESSAGETYPES.DOMAINCLAIMED: return this.stripDetails((this.service).getDefaultDomainClaimedMessageText(req)); + case MESSAGETYPES.PASSWORDLESS: + return this.stripDetails((this.service).getDefaultPasswordlessRegistrationMessageText(req)); } } @@ -316,6 +444,8 @@ export class MessageTextsComponent implements OnDestroy { return this.stripDetails((this.service as ManagementService).getCustomPasswordResetMessageText(req)); case MESSAGETYPES.DOMAINCLAIMED: return this.stripDetails((this.service as ManagementService).getCustomDomainClaimedMessageText(req)); + case MESSAGETYPES.PASSWORDLESS: + return this.stripDetails((this.service as ManagementService).getCustomPasswordlessRegistrationMessageText(req)); } } else if (this.serviceType === PolicyComponentServiceType.ADMIN) { switch (type) { @@ -329,6 +459,8 @@ export class MessageTextsComponent implements OnDestroy { return this.stripDetails((this.service as AdminService).getCustomPasswordResetMessageText(req)); case MESSAGETYPES.DOMAINCLAIMED: return this.stripDetails((this.service as AdminService).getCustomDomainClaimedMessageText(req)); + case MESSAGETYPES.PASSWORDLESS: + return this.stripDetails((this.service as AdminService).getCustomPasswordlessRegistrationMessageText(req)); } } } @@ -380,6 +512,9 @@ export class MessageTextsComponent implements OnDestroy { return handler((this.service as ManagementService).setCustomPasswordResetMessageText(this.updateRequest)); case MESSAGETYPES.DOMAINCLAIMED: return handler((this.service as ManagementService).setCustomDomainClaimedMessageCustomText(this.updateRequest)); + case MESSAGETYPES.PASSWORDLESS: + return handler((this.service as ManagementService) + .getCustomPasswordlessRegistrationMessageText(this.updateRequest)); } } else if (this.serviceType === PolicyComponentServiceType.ADMIN) { switch (this.currentType) { @@ -393,6 +528,9 @@ export class MessageTextsComponent implements OnDestroy { return handler((this.service as AdminService).setDefaultPasswordResetMessageText(this.updateRequest)); case MESSAGETYPES.DOMAINCLAIMED: return handler((this.service as AdminService).setDefaultDomainClaimedMessageText(this.updateRequest)); + case MESSAGETYPES.PASSWORDLESS: + return handler((this.service as AdminService) + .setDefaultPasswordlessRegistrationMessageText(this.updateRequest)); } } } @@ -433,6 +571,10 @@ export class MessageTextsComponent implements OnDestroy { return handler((this.service as ManagementService).resetCustomPasswordResetMessageTextToDefault(this.locale)); case MESSAGETYPES.DOMAINCLAIMED: return handler((this.service as ManagementService).resetCustomDomainClaimedMessageTextToDefault(this.locale)); + case MESSAGETYPES.DOMAINCLAIMED: + return handler((this.service as ManagementService) + .resetCustomPasswordlessRegistrationMessageTextToDefault(this.locale)); + } } diff --git a/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.html b/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.html index d41fd53669..fc7f5d882f 100644 --- a/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.html +++ b/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.html @@ -1,6 +1,6 @@ -

{{'POLICY.DEFAULTLABEL' | translate}}

+ {{'POLICY.DEFAULTLABEL' | translate}} +
diff --git a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.html b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.html index cc69263561..6d2e3ed7fb 100644 --- a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.html +++ b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.html @@ -9,7 +9,7 @@

{{'POLICY.PRIVATELABELING.PREVIEW_DESCRIPTION' | translate}}

-

{{'POLICY.DEFAULTLABEL' | translate}}

+ {{'POLICY.DEFAULTLABEL' | translate}}
@@ -205,6 +207,7 @@
+ {{'POLICY.PRIVATELABELING.FONTINLOGINONLY' | translate}}
text_fields ABC • abc • 123 diff --git a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.scss b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.scss index 86ff8455f3..2dc15f336a 100644 --- a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.scss +++ b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.scss @@ -28,11 +28,6 @@ } } - .default { - color: var(--color-main); - margin-top: 0; - } - .desc { font-size: 14px; color: var(--grey); @@ -40,6 +35,11 @@ margin-bottom: 2rem; } + .max-size-desc { + display: block; + margin-bottom: 1rem; + } + .spinner-wr { margin: .5rem 0; } @@ -323,6 +323,11 @@ } .fonts { + .info-section { + display: block; + margin-bottom: 1rem; + } + .title { display: block; font-size: 14px; diff --git a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.ts b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.ts index 89e81315b0..92c558ce2b 100644 --- a/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.ts +++ b/console/src/app/modules/policies/private-labeling-policy/private-labeling-policy.component.ts @@ -49,6 +49,7 @@ export enum ColorType { } const ORG_STORAGE_KEY = 'organization'; +const MAX_ALLOWED_SIZE = 0.5 * 1024 * 1024; @Component({ selector: 'app-private-labeling-policy', @@ -139,25 +140,28 @@ export class PrivateLabelingPolicyComponent implements OnDestroy { const file = filelist.item(0); if (file) { - const formData = new FormData(); - formData.append('file', file); - if (theme === Theme.DARK) { - switch (this.serviceType) { - case PolicyComponentServiceType.MGMT: - return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTDARKLOGO, formData, this.org.id)); - case PolicyComponentServiceType.ADMIN: - return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMDARKLOGO, formData, this.org.id)); + if (file.size > MAX_ALLOWED_SIZE) { + this.toast.showInfo('POLICY.PRIVATELABELING.MAXSIZEEXCEEDED', true); + } else { + const formData = new FormData(); + formData.append('file', file); + if (theme === Theme.DARK) { + switch (this.serviceType) { + case PolicyComponentServiceType.MGMT: + return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTDARKLOGO, formData, this.org.id)); + case PolicyComponentServiceType.ADMIN: + return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMDARKLOGO, formData, this.org.id)); + } + } + if (theme === Theme.LIGHT) { + switch (this.serviceType) { + case PolicyComponentServiceType.MGMT: + return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTLOGO, formData, this.org.id)); + case PolicyComponentServiceType.ADMIN: + return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMLOGO, formData, this.org.id)); + } } } - if (theme === Theme.LIGHT) { - switch (this.serviceType) { - case PolicyComponentServiceType.MGMT: - return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTLOGO, formData, this.org.id)); - case PolicyComponentServiceType.ADMIN: - return this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMLOGO, formData, this.org.id)); - } - } - } } @@ -262,26 +266,30 @@ export class PrivateLabelingPolicyComponent implements OnDestroy { const file = filelist.item(0); if (file) { - const formData = new FormData(); - formData.append('file', file); - if (theme === Theme.DARK) { - switch (this.serviceType) { - case PolicyComponentServiceType.MGMT: - this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTDARKICON, formData, this.org.id)); - break; - case PolicyComponentServiceType.ADMIN: - this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMDARKICON, formData, this.org.id)); - break; + if (file.size > MAX_ALLOWED_SIZE) { + this.toast.showInfo('POLICY.PRIVATELABELING.MAXSIZEEXCEEDED', true); + } else { + const formData = new FormData(); + formData.append('file', file); + if (theme === Theme.DARK) { + switch (this.serviceType) { + case PolicyComponentServiceType.MGMT: + this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTDARKICON, formData, this.org.id)); + break; + case PolicyComponentServiceType.ADMIN: + this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMDARKICON, formData, this.org.id)); + break; + } } - } - if (theme === Theme.LIGHT) { - switch (this.serviceType) { - case PolicyComponentServiceType.MGMT: - this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTICON, formData, this.org.id)); - break; - case PolicyComponentServiceType.ADMIN: - this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMICON, formData, this.org.id)); - break; + if (theme === Theme.LIGHT) { + switch (this.serviceType) { + case PolicyComponentServiceType.MGMT: + this.handleUploadPromise(this.assetService.upload(AssetEndpoint.MGMTICON, formData, this.org.id)); + break; + case PolicyComponentServiceType.ADMIN: + this.handleUploadPromise(this.assetService.upload(AssetEndpoint.IAMICON, formData, this.org.id)); + break; + } } } } diff --git a/console/src/app/pages/users/user-detail/membership-detail/membership-detail-datasource.ts b/console/src/app/pages/users/user-detail/membership-detail/membership-detail-datasource.ts index 4bdc030055..57f8fc9b78 100644 --- a/console/src/app/pages/users/user-detail/membership-detail/membership-detail-datasource.ts +++ b/console/src/app/pages/users/user-detail/membership-detail/membership-detail-datasource.ts @@ -3,55 +3,75 @@ import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; import { BehaviorSubject, from, Observable, of } from 'rxjs'; import { catchError, finalize, map } from 'rxjs/operators'; import { Membership } from 'src/app/proto/generated/zitadel/user_pb'; +import { GrpcAuthService } from 'src/app/services/grpc-auth.service'; import { ManagementService } from 'src/app/services/mgmt.service'; export class MembershipDetailDataSource extends DataSource { - public totalResult: number = 0; - public viewTimestamp!: Timestamp.AsObject; - public membersSubject: BehaviorSubject - = new BehaviorSubject([]); - private loadingSubject: BehaviorSubject = new BehaviorSubject(false); - public loading$: Observable = this.loadingSubject.asObservable(); + public totalResult: number = 0; + public viewTimestamp!: Timestamp.AsObject; + public membersSubject: BehaviorSubject + = new BehaviorSubject([]); + private loadingSubject: BehaviorSubject = new BehaviorSubject(false); + public loading$: Observable = this.loadingSubject.asObservable(); - constructor(private mgmtUserService: ManagementService) { - super(); - } + constructor(private mgmtUserService: ManagementService, private authServce: GrpcAuthService) { + super(); + } - public loadMemberships(userId: string, pageIndex: number, pageSize: number): void { - const offset = pageIndex * pageSize; + public loadMemberships(userId: string, pageIndex: number, pageSize: number): void { + const offset = pageIndex * pageSize; - this.loadingSubject.next(true); - from(this.mgmtUserService.listUserMemberships(userId, pageSize, offset)).pipe( - map(resp => { - this.totalResult = resp.details?.totalResult || 0; - if (resp.details?.viewTimestamp) { - this.viewTimestamp = resp.details.viewTimestamp; - } - return resp.resultList; - }), - catchError(() => of([])), - finalize(() => this.loadingSubject.next(false)), - ).subscribe(members => { - this.membersSubject.next(members); - }); - } + this.loadingSubject.next(true); + from(this.mgmtUserService.listUserMemberships(userId, pageSize, offset)).pipe( + map(resp => { + this.totalResult = resp.details?.totalResult || 0; + if (resp.details?.viewTimestamp) { + this.viewTimestamp = resp.details.viewTimestamp; + } + return resp.resultList; + }), + catchError(() => of([])), + finalize(() => this.loadingSubject.next(false)), + ).subscribe(members => { + this.membersSubject.next(members); + }); + } + + public loadMyMemberships(pageIndex: number, pageSize: number): void { + const offset = pageIndex * pageSize; + + this.loadingSubject.next(true); + from(this.authServce.listMyMemberships(pageSize, offset)).pipe( + map(resp => { + this.totalResult = resp.details?.totalResult || 0; + if (resp.details?.viewTimestamp) { + this.viewTimestamp = resp.details.viewTimestamp; + } + return resp.resultList; + }), + catchError(() => of([])), + finalize(() => this.loadingSubject.next(false)), + ).subscribe(members => { + this.membersSubject.next(members); + }); + } - /** - * Connect this data source to the table. The table will only update when - * the returned stream emits new items. - * @returns A stream of the items to be rendered. - */ - public connect(): Observable { - return this.membersSubject.asObservable(); - } + /** + * Connect this data source to the table. The table will only update when + * the returned stream emits new items. + * @returns A stream of the items to be rendered. + */ + public connect(): Observable { + return this.membersSubject.asObservable(); + } - /** - * Called when the table is being destroyed. Use this function, to clean up - * any open connections or free any held resources that were set up during connect. - */ - public disconnect(): void { - this.membersSubject.complete(); - this.loadingSubject.complete(); - } + /** + * Called when the table is being destroyed. Use this function, to clean up + * any open connections or free any held resources that were set up during connect. + */ + public disconnect(): void { + this.membersSubject.complete(); + this.loadingSubject.complete(); + } } diff --git a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.html b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.html index f1e11d3c92..75d1e0350c 100644 --- a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.html +++ b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.html @@ -1,6 +1,11 @@ + + {{'USER.MEMBERSHIPS.USERCONTEXT' | translate}} + {{'USER.MEMBERSHIPS.ORGCONTEXT' | translate}} + + diff --git a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.scss b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.scss index 7eb621d16e..91dbeba438 100644 --- a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.scss +++ b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.scss @@ -1,3 +1,8 @@ +.context-wrapper { + margin-bottom: 1rem; + display: block; +} + .refresh-table { width: 100%; } diff --git a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.ts b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.ts index 21c52f279f..945f530e35 100644 --- a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.ts +++ b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.component.ts @@ -3,233 +3,257 @@ import { AfterViewInit, Component, ViewChild } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatTable } from '@angular/material/table'; import { ActivatedRoute } from '@angular/router'; -import { tap } from 'rxjs/operators'; +import { map, switchMap, tap } from 'rxjs/operators'; import { CreationType, MemberCreateDialogComponent } from 'src/app/modules/add-member-dialog/member-create-dialog.component'; import { PaginatorComponent } from 'src/app/modules/paginator/paginator.component'; import { Membership, User } from 'src/app/proto/generated/zitadel/user_pb'; import { AdminService } from 'src/app/services/admin.service'; +import { GrpcAuthService } from 'src/app/services/grpc-auth.service'; import { ManagementService } from 'src/app/services/mgmt.service'; import { ToastService } from 'src/app/services/toast.service'; import { MembershipDetailDataSource } from './membership-detail-datasource'; @Component({ - selector: 'app-membership-detail', - templateUrl: './membership-detail.component.html', - styleUrls: ['./membership-detail.component.scss'], + selector: 'app-membership-detail', + templateUrl: './membership-detail.component.html', + styleUrls: ['./membership-detail.component.scss'], }) export class MembershipDetailComponent implements AfterViewInit { - public user!: User.AsObject; + public user!: User.AsObject; - @ViewChild(PaginatorComponent) public paginator!: PaginatorComponent; - @ViewChild(MatTable) public table!: MatTable; - public dataSource!: MembershipDetailDataSource; - public selection: SelectionModel - = new SelectionModel(true, []); + @ViewChild(PaginatorComponent) public paginator!: PaginatorComponent; + @ViewChild(MatTable) public table!: MatTable; + public dataSource!: MembershipDetailDataSource; + public selection: SelectionModel + = new SelectionModel(true, []); - public memberRoleOptions: string[] = []; + public memberRoleOptions: string[] = []; - /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ - public displayedColumns: string[] = ['select', 'memberType', 'displayName', 'creationDate', 'changeDate', 'roles', 'actions']; + /** Columns displayed in the table. Columns IDs can be added, removed, or reordered. */ + public displayedColumns: string[] = ['select', 'memberType', 'displayName', 'creationDate', 'changeDate', 'roles', 'actions']; - public loading: boolean = false; - public memberships!: Membership.AsObject[]; + public loading: boolean = false; + public memberships!: Membership.AsObject[]; - constructor( - activatedRoute: ActivatedRoute, - private dialog: MatDialog, - private toast: ToastService, - private mgmtService: ManagementService, - private adminService: AdminService, - ) { - activatedRoute.params.subscribe(data => { - const { id } = data; - if (id) { - this.mgmtService.getUserByID(id).then(resp => { - if (resp.user) { - this.user = resp.user; - this.dataSource = new MembershipDetailDataSource(this.mgmtService); - this.dataSource.loadMemberships( - this.user.id, - 0, - 50, - ); - } - }).catch(err => { - console.error(err); - }); - } - }); - } + public isMe: boolean = false; - public ngAfterViewInit(): void { - this.paginator.page - .pipe( - tap(() => this.loadMembershipsPage()), - ) - .subscribe(); - } + constructor( + authService: GrpcAuthService, + activatedRoute: ActivatedRoute, + private dialog: MatDialog, + private toast: ToastService, + private mgmtService: ManagementService, + private adminService: AdminService, + ) { + activatedRoute.params + .pipe(switchMap(({ id }) => { + return authService.user.pipe( + map(user => user?.id === id), + tap((isMe) => { + this.isMe = isMe; - private loadMembershipsPage(): void { - this.dataSource.loadMemberships( - this.user.id, - this.paginator.pageIndex, - this.paginator.pageSize, - ); - } - - public isAllSelected(): boolean { - const numSelected = this.selection.selected.length; - const numRows = this.dataSource.membersSubject.value.length; - return numSelected === numRows; - } - - public masterToggle(): void { - this.isAllSelected() ? - this.selection.clear() : - this.dataSource.membersSubject.value.forEach(row => this.selection.select(row)); - } - - public addMember(): void { - const dialogRef = this.dialog.open(MemberCreateDialogComponent, { - width: '400px', - data: { - user: this.user, - }, - }); - - dialogRef.afterClosed().subscribe(resp => { - if (resp && resp.creationType !== undefined) { - switch (resp.creationType) { - case CreationType.IAM: - this.createIamMember(resp); - break; - case CreationType.ORG: - this.createOrgMember(resp); - break; - case CreationType.PROJECT_OWNED: - this.createOwnedProjectMember(resp); - break; - case CreationType.PROJECT_GRANTED: - this.createGrantedProjectMember(resp); - break; + if (isMe) { + this.mgmtService.getUserByID(id).then(resp => { + if (resp.user) { + this.user = resp.user; + this.dataSource = new MembershipDetailDataSource(this.mgmtService, authService); + this.dataSource.loadMyMemberships( + 0, + 50, + ); } + }).catch(err => { + console.error(err); + }); + } else { + this.mgmtService.getUserByID(id).then(resp => { + if (resp.user) { + this.user = resp.user; + this.dataSource = new MembershipDetailDataSource(this.mgmtService, authService); + this.dataSource.loadMemberships( + this.user.id, + 0, + 50, + ); + } + }).catch(err => { + console.error(err); + }); } + }), + ); + })).subscribe(); + } + + public ngAfterViewInit(): void { + this.paginator.page + .pipe( + tap(() => this.loadMembershipsPage()), + ) + .subscribe(); + } + + private loadMembershipsPage(): void { + this.dataSource.loadMemberships( + this.user.id, + this.paginator.pageIndex, + this.paginator.pageSize, + ); + } + + public isAllSelected(): boolean { + const numSelected = this.selection.selected.length; + const numRows = this.dataSource.membersSubject.value.length; + return numSelected === numRows; + } + + public masterToggle(): void { + this.isAllSelected() ? + this.selection.clear() : + this.dataSource.membersSubject.value.forEach(row => this.selection.select(row)); + } + + public addMember(): void { + const dialogRef = this.dialog.open(MemberCreateDialogComponent, { + width: '400px', + data: { + user: this.user, + }, + }); + + dialogRef.afterClosed().subscribe(resp => { + if (resp && resp.creationType !== undefined) { + switch (resp.creationType) { + case CreationType.IAM: + this.createIamMember(resp); + break; + case CreationType.ORG: + this.createOrgMember(resp); + break; + case CreationType.PROJECT_OWNED: + this.createOwnedProjectMember(resp); + break; + case CreationType.PROJECT_GRANTED: + this.createGrantedProjectMember(resp); + break; + } + } + }); + } + + public async loadManager(userId: string): Promise { + this.mgmtService.listUserMemberships(userId, 100, 0, []).then(response => { + this.memberships = response.resultList; + this.loading = false; + }); + } + + public createIamMember(response: any): void { + const users: User.AsObject[] = response.users; + const roles: string[] = response.roles; + + if (users && users.length && roles && roles.length) { + Promise.all(users.map(user => { + return this.adminService.addIAMMember(user.id, roles); + })).then(() => { + this.toast.showInfo('IAM.TOAST.MEMBERADDED', true); + setTimeout(() => { + this.refreshPage(); + }, 1000); + }).catch(error => { + this.toast.showError(error); + }); + } + } + + private createOrgMember(response: any): void { + const users: User.AsObject[] = response.users; + const roles: string[] = response.roles; + + if (users && users.length && roles && roles.length) { + Promise.all(users.map(user => { + return this.mgmtService.addOrgMember(user.id, roles); + })).then(() => { + this.toast.showInfo('ORG.TOAST.MEMBERADDED', true); + setTimeout(() => { + this.refreshPage(); + }, 1000); + }).catch(error => { + this.toast.showError(error); + }); + } + } + + private createGrantedProjectMember(response: any): void { + const users: User.AsObject[] = response.users; + const roles: string[] = response.roles; + + if (users && users.length && roles && roles.length) { + users.forEach(user => { + return this.mgmtService.addProjectGrantMember( + response.projectId, + response.grantId, + user.id, + roles, + ).then(() => { + this.toast.showInfo('PROJECT.TOAST.MEMBERADDED', true); + setTimeout(() => { + this.refreshPage(); + }, 1000); + }).catch(error => { + this.toast.showError(error); }); + }); + } + } + + private createOwnedProjectMember(response: any): void { + const users: User.AsObject[] = response.users; + const roles: string[] = response.roles; + + if (users && users.length && roles && roles.length) { + users.forEach(user => { + return this.mgmtService.addProjectMember(response.projectId, user.id, roles) + .then(() => { + this.toast.showInfo('PROJECT.TOAST.MEMBERADDED', true); + setTimeout(() => { + this.refreshPage(); + }, 1000); + }).catch(error => { + this.toast.showError(error); + }); + }); + } + } + + public removeMembership(membership: Membership.AsObject): void { + let prom; + + if (membership.projectId && membership.projectGrantId && membership.userId) { + prom = this.mgmtService.removeProjectGrantMember( + membership.projectId, + membership.projectGrantId, + membership.userId, + ); + } else if (membership.projectId && membership.userId) { + prom = this.mgmtService.removeProjectMember(membership.projectId, membership.userId); + } else if (membership.orgId && membership.userId) { + prom = this.mgmtService.removeOrgMember(membership.userId); + } else if (membership.userId) { + prom = this.adminService.removeIAMMember(membership.userId); } - public async loadManager(userId: string): Promise { - this.mgmtService.listUserMemberships(userId, 100, 0, []).then(response => { - this.memberships = response.resultList; - this.loading = false; - }); + if (prom) { + prom.then(() => { + this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true); + this.refreshPage(); + }).catch(error => this.toast.showError(error)); } + } - public createIamMember(response: any): void { - const users: User.AsObject[] = response.users; - const roles: string[] = response.roles; - - if (users && users.length && roles && roles.length) { - Promise.all(users.map(user => { - return this.adminService.addIAMMember(user.id, roles); - })).then(() => { - this.toast.showInfo('IAM.TOAST.MEMBERADDED', true); - setTimeout(() => { - this.refreshPage(); - }, 1000); - }).catch(error => { - this.toast.showError(error); - }); - } - } - - private createOrgMember(response: any): void { - const users: User.AsObject[] = response.users; - const roles: string[] = response.roles; - - if (users && users.length && roles && roles.length) { - Promise.all(users.map(user => { - return this.mgmtService.addOrgMember(user.id, roles); - })).then(() => { - this.toast.showInfo('ORG.TOAST.MEMBERADDED', true); - setTimeout(() => { - this.refreshPage(); - }, 1000); - }).catch(error => { - this.toast.showError(error); - }); - } - } - - private createGrantedProjectMember(response: any): void { - const users: User.AsObject[] = response.users; - const roles: string[] = response.roles; - - if (users && users.length && roles && roles.length) { - users.forEach(user => { - return this.mgmtService.addProjectGrantMember( - response.projectId, - response.grantId, - user.id, - roles, - ).then(() => { - this.toast.showInfo('PROJECT.TOAST.MEMBERADDED', true); - setTimeout(() => { - this.refreshPage(); - }, 1000); - }).catch(error => { - this.toast.showError(error); - }); - }); - } - } - - private createOwnedProjectMember(response: any): void { - const users: User.AsObject[] = response.users; - const roles: string[] = response.roles; - - if (users && users.length && roles && roles.length) { - users.forEach(user => { - return this.mgmtService.addProjectMember(response.projectId, user.id, roles) - .then(() => { - this.toast.showInfo('PROJECT.TOAST.MEMBERADDED', true); - setTimeout(() => { - this.refreshPage(); - }, 1000); - }).catch(error => { - this.toast.showError(error); - }); - }); - } - } - - public removeMembership(membership: Membership.AsObject): void { - let prom; - - if (membership.projectId && membership.projectGrantId && membership.userId) { - prom = this.mgmtService.removeProjectGrantMember( - membership.projectId, - membership.projectGrantId, - membership.userId, - ); - } else if (membership.projectId && membership.userId) { - prom = this.mgmtService.removeProjectMember(membership.projectId, membership.userId); - } else if (membership.orgId && membership.userId) { - prom = this.mgmtService.removeOrgMember(membership.userId); - } else if (membership.userId) { - prom = this.adminService.removeIAMMember(membership.userId); - } - - if (prom) { - prom.then(() => { - this.toast.showInfo('PROJECT.TOAST.MEMBERREMOVED', true); - this.refreshPage(); - }).catch(error => this.toast.showError(error)); - } - } - - public refreshPage(): void { - this.selection.clear(); - this.dataSource.loadMemberships(this.user.id, this.paginator.pageIndex, this.paginator.pageSize); - } + public refreshPage(): void { + this.selection.clear(); + this.dataSource.loadMemberships(this.user.id, this.paginator.pageIndex, this.paginator.pageSize); + } } diff --git a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.module.ts b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.module.ts index 20a3e840bf..a0c0ba2329 100644 --- a/console/src/app/pages/users/user-detail/membership-detail/membership-detail.module.ts +++ b/console/src/app/pages/users/user-detail/membership-detail/membership-detail.module.ts @@ -10,6 +10,7 @@ import { RouterModule, Routes } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; import { HasRoleModule } from 'src/app/directives/has-role/has-role.module'; import { DetailLayoutModule } from 'src/app/modules/detail-layout/detail-layout.module'; +import { InfoSectionModule } from 'src/app/modules/info-section/info-section.module'; import { PaginatorModule } from 'src/app/modules/paginator/paginator.module'; import { RefreshTableModule } from 'src/app/modules/refresh-table/refresh-table.module'; import { HasRolePipeModule } from 'src/app/pipes/has-role-pipe/has-role-pipe.module'; @@ -19,34 +20,35 @@ import { TimestampToDatePipeModule } from 'src/app/pipes/timestamp-to-date-pipe/ import { MembershipDetailComponent } from './membership-detail.component'; const routes: Routes = [ - { - path: '', - component: MembershipDetailComponent, - canActivate: [], - data: { - roles: ['user.write'], - }, + { + path: '', + component: MembershipDetailComponent, + canActivate: [], + data: { + roles: ['user.write'], }, + }, ]; @NgModule({ - declarations: [MembershipDetailComponent], - imports: [ - CommonModule, - RouterModule.forChild(routes), - TranslateModule, - DetailLayoutModule, - MatCheckboxModule, - MatTableModule, - PaginatorModule, - MatProgressSpinnerModule, - LocalizedDatePipeModule, - TimestampToDatePipeModule, - HasRoleModule, - MatIconModule, - MatButtonModule, - HasRolePipeModule, - RefreshTableModule, - MatTooltipModule, - ], + declarations: [MembershipDetailComponent], + imports: [ + CommonModule, + RouterModule.forChild(routes), + TranslateModule, + DetailLayoutModule, + MatCheckboxModule, + MatTableModule, + PaginatorModule, + MatProgressSpinnerModule, + LocalizedDatePipeModule, + TimestampToDatePipeModule, + HasRoleModule, + MatIconModule, + MatButtonModule, + HasRolePipeModule, + RefreshTableModule, + MatTooltipModule, + InfoSectionModule, + ], }) export class MembershipDetailModule { } diff --git a/console/src/app/pages/users/user-detail/memberships/memberships.component.scss b/console/src/app/pages/users/user-detail/memberships/memberships.component.scss index bc5e21936c..b435949567 100644 --- a/console/src/app/pages/users/user-detail/memberships/memberships.component.scss +++ b/console/src/app/pages/users/user-detail/memberships/memberships.component.scss @@ -98,7 +98,7 @@ span { max-width: 30px; text-overflow: ellipsis; - font-weight: 800; + font-weight: 300; display: block; white-space: nowrap; overflow: hidden; diff --git a/console/src/app/pages/users/user-detail/memberships/memberships.component.ts b/console/src/app/pages/users/user-detail/memberships/memberships.component.ts index a6bbd0c221..f5a633f6ef 100644 --- a/console/src/app/pages/users/user-detail/memberships/memberships.component.ts +++ b/console/src/app/pages/users/user-detail/memberships/memberships.component.ts @@ -55,7 +55,7 @@ export class MembershipsComponent implements OnInit { public async loadManager(userId: string): Promise { if (this.auth) { - this.authService.listMyUserGrants(100, 0, []).then(resp => { + this.authService.listMyMemberships(100, 0, []).then(resp => { this.memberships = resp.resultList; this.totalResult = resp.details?.totalResult || 0; this.loading = false; diff --git a/console/src/app/services/admin.service.ts b/console/src/app/services/admin.service.ts index 4a42bbea89..8e2c2cc82d 100644 --- a/console/src/app/services/admin.service.ts +++ b/console/src/app/services/admin.service.ts @@ -27,6 +27,8 @@ import { GetCustomLoginTextsResponse, GetCustomOrgIAMPolicyRequest, GetCustomOrgIAMPolicyResponse, + GetCustomPasswordlessRegistrationMessageTextRequest, + GetCustomPasswordlessRegistrationMessageTextResponse, GetCustomPasswordResetMessageTextRequest, GetCustomPasswordResetMessageTextResponse, GetCustomVerifyEmailMessageTextRequest, @@ -41,6 +43,8 @@ import { GetDefaultInitMessageTextResponse, GetDefaultLoginTextsRequest, GetDefaultLoginTextsResponse, + GetDefaultPasswordlessRegistrationMessageTextRequest, + GetDefaultPasswordlessRegistrationMessageTextResponse, GetDefaultPasswordResetMessageTextRequest, GetDefaultPasswordResetMessageTextResponse, GetDefaultVerifyEmailMessageTextRequest, @@ -124,6 +128,8 @@ import { SetDefaultFeaturesResponse, SetDefaultInitMessageTextRequest, SetDefaultInitMessageTextResponse, + SetDefaultPasswordlessRegistrationMessageTextRequest, + SetDefaultPasswordlessRegistrationMessageTextResponse, SetDefaultPasswordResetMessageTextRequest, SetDefaultPasswordResetMessageTextResponse, SetDefaultVerifyEmailMessageTextRequest, @@ -275,6 +281,22 @@ export class AdminService { return this.grpcService.admin.setDefaultDomainClaimedMessageText(req, null).then(resp => resp.toObject()); } + + public getDefaultPasswordlessRegistrationMessageText(req: GetDefaultPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.admin.getDefaultPasswordlessRegistrationMessageText(req, null).then(resp => resp.toObject()); + } + + public getCustomPasswordlessRegistrationMessageText(req: GetCustomPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.admin.getCustomPasswordlessRegistrationMessageText(req, null).then(resp => resp.toObject()); + } + + public setDefaultPasswordlessRegistrationMessageText(req: SetDefaultPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.admin.setDefaultPasswordlessRegistrationMessageText(req, null).then(resp => resp.toObject()); + } + public SetUpOrg( org: SetUpOrgRequest.Org, human: SetUpOrgRequest.Human, diff --git a/console/src/app/services/grpc-auth.service.ts b/console/src/app/services/grpc-auth.service.ts index 70c3504571..112c2b8e6a 100644 --- a/console/src/app/services/grpc-auth.service.ts +++ b/console/src/app/services/grpc-auth.service.ts @@ -26,6 +26,8 @@ import { ListMyAuthFactorsResponse, ListMyLinkedIDPsRequest, ListMyLinkedIDPsResponse, + ListMyMembershipsRequest, + ListMyMembershipsResponse, ListMyPasswordlessRequest, ListMyPasswordlessResponse, ListMyProjectOrgsRequest, @@ -78,7 +80,7 @@ import { import { ChangeQuery } from '../proto/generated/zitadel/change_pb'; import { ListQuery } from '../proto/generated/zitadel/object_pb'; import { Org, OrgQuery } from '../proto/generated/zitadel/org_pb'; -import { Gender, User, WebAuthNVerification } from '../proto/generated/zitadel/user_pb'; +import { Gender, MembershipQuery, User, WebAuthNVerification } from '../proto/generated/zitadel/user_pb'; import { GrpcService } from './grpc.service'; import { StorageKey, StorageService } from './storage.service'; @@ -350,6 +352,24 @@ export class GrpcAuthService { return this.grpcService.auth.listMyUserGrants(req, null).then(resp => resp.toObject()); } + public listMyMemberships(limit: number, offset: number, + queryList?: MembershipQuery[], + ): Promise { + const req = new ListMyMembershipsRequest(); + const metadata = new ListQuery(); + if (limit) { + metadata.setLimit(limit); + } + if (offset) { + metadata.setOffset(offset); + } + if (queryList) { + req.setQueriesList(queryList); + } + req.setQuery(metadata); + return this.grpcService.auth.listMyMemberships(req, null).then(resp => resp.toObject()); + } + public getMyEmail(): Promise { const req = new GetMyEmailRequest(); return this.grpcService.auth.getMyEmail(req, null).then(resp => resp.toObject()); diff --git a/console/src/app/services/mgmt.service.ts b/console/src/app/services/mgmt.service.ts index 57406bbb4e..6484a1b085 100644 --- a/console/src/app/services/mgmt.service.ts +++ b/console/src/app/services/mgmt.service.ts @@ -3,7 +3,6 @@ import { Empty } from 'google-protobuf/google/protobuf/empty_pb'; import { Timestamp } from 'google-protobuf/google/protobuf/timestamp_pb'; import { BehaviorSubject } from 'rxjs'; -import { GetDefaultDomainClaimedMessageTextRequest } from '../proto/generated/zitadel/admin_pb'; import { AppQuery } from '../proto/generated/zitadel/app_pb'; import { KeyType } from '../proto/generated/zitadel/auth_n_key_pb'; import { ChangeQuery } from '../proto/generated/zitadel/change_pb'; @@ -87,12 +86,15 @@ import { GetCustomInitMessageTextResponse, GetCustomLoginTextsRequest, GetCustomLoginTextsResponse, + GetCustomPasswordlessRegistrationMessageTextRequest, + GetCustomPasswordlessRegistrationMessageTextResponse, GetCustomPasswordResetMessageTextRequest, GetCustomPasswordResetMessageTextResponse, GetCustomVerifyEmailMessageTextRequest, GetCustomVerifyEmailMessageTextResponse, GetCustomVerifyPhoneMessageTextRequest, GetCustomVerifyPhoneMessageTextResponse, + GetDefaultDomainClaimedMessageTextRequest, GetDefaultDomainClaimedMessageTextResponse, GetDefaultInitMessageTextRequest, GetDefaultInitMessageTextResponse, @@ -102,6 +104,8 @@ import { GetDefaultLoginTextsResponse, GetDefaultPasswordComplexityPolicyRequest, GetDefaultPasswordComplexityPolicyResponse, + GetDefaultPasswordlessRegistrationMessageTextRequest, + GetDefaultPasswordlessRegistrationMessageTextResponse, GetDefaultPasswordResetMessageTextRequest, GetDefaultPasswordResetMessageTextResponse, GetDefaultVerifyEmailMessageTextRequest, @@ -290,6 +294,8 @@ import { ResetCustomInitMessageTextToDefaultResponse, ResetCustomLoginTextsToDefaultRequest, ResetCustomLoginTextsToDefaultResponse, + ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest, + ResetCustomPasswordlessRegistrationMessageTextToDefaultResponse, ResetCustomPasswordResetMessageTextToDefaultRequest, ResetCustomPasswordResetMessageTextToDefaultResponse, ResetCustomVerifyEmailMessageTextToDefaultRequest, @@ -317,6 +323,8 @@ import { SetCustomInitMessageTextResponse, SetCustomLoginTextsRequest, SetCustomLoginTextsResponse, + SetCustomPasswordlessRegistrationMessageTextRequest, + SetCustomPasswordlessRegistrationMessageTextResponse, SetCustomPasswordResetMessageTextRequest, SetCustomPasswordResetMessageTextResponse, SetCustomVerifyEmailMessageTextRequest, @@ -540,6 +548,30 @@ export class ManagementService { return this.grpcService.mgmt.resetCustomDomainClaimedMessageTextToDefault(req, null).then(resp => resp.toObject()); } + + public getDefaultPasswordlessRegistrationMessageText(req: GetDefaultPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.mgmt.getDefaultPasswordlessRegistrationMessageText(req, null).then(resp => resp.toObject()); + } + + public getCustomPasswordlessRegistrationMessageText(req: GetCustomPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.mgmt.getCustomPasswordlessRegistrationMessageText(req, null).then(resp => resp.toObject()); + } + + public setCustomPasswordlessRegistrationMessageCustomText(req: SetCustomPasswordlessRegistrationMessageTextRequest): + Promise { + return this.grpcService.mgmt.setCustomPasswordlessRegistrationMessageCustomText(req, null).then(resp => resp.toObject()); + } + + public resetCustomPasswordlessRegistrationMessageTextToDefault(lang: string): + Promise { + const req = new ResetCustomPasswordlessRegistrationMessageTextToDefaultRequest(); + req.setLanguage(lang); + return this.grpcService.mgmt.resetCustomPasswordlessRegistrationMessageTextToDefault(req, null) + .then(resp => resp.toObject()); + } + public listOrgIDPs( limit?: number, offset?: number, diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 7dcf525ab1..ebf9dbcb2c 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -481,6 +481,8 @@ "MEMBERSHIPS": { "TITLE": "ZITADEL Manager-Rollen", "DESCRIPTION": "Dies sind alle Mitgliedschaften des Benutzers. Du kannst die entsprechenden Rechte auch auf der Organisations-, Projekt-, oder IAM-Detailseite aufrufen und modifizieren.", + "ORGCONTEXT":"Sie sehen alle Organisationen und Projekte, die mit der aktuell gewählten Organisation in Verbindung stehen.", + "USERCONTEXT":"Sie sehen alle Organisationen und Projekte auf denen Sie berechtigt sind inklusive aller zur Auswahl stehenden Organisationen.", "CREATIONDATE": "Erstelldatum", "CHANGEDATE": "Letzte Änderung", "DISPLAYNAME": "Anzeigename", @@ -690,6 +692,9 @@ "RELEASE":"Jetzt loslassen", "DROPFONT":"Fontdatei hier ablegen", "RELEASEFONT":"Jetzt loslassen", + "MAXSIZE":"Die maximale Grösse von Uploads ist mit 524kB begrenzt", + "MAXSIZEEXCEEDED":"Maximale Grösse von 524kB überschritten", + "FONTINLOGINONLY":"Die Schriftart wird momentan nur im Login interface angezeigt.", "PREVIEW": { "TITLE":"Anmeldung", "SECOND":"mit ZITADEL-Konto anmelden.", @@ -770,7 +775,6 @@ "passwordChangeText":"Passwortwechsel", "passwordResetDoneText":"Passwort zurücksetzen erfolgreich", "passwordText":"Passwort", - "passwordlessText":"Passwortlose Authentifizierung", "registrationOptionText":"Registrierungsoptionen", "registrationOrgText":"Organisation registrieren", "registrationUserText":"Benutzer registrieren", @@ -779,7 +783,11 @@ "usernameChangeDoneText":"Benutzernamenwechsel erfolgreich", "usernameChangeText":"Benutzernamenwechsel", "verifyMfaOtpText":"OTP Verifikation", - "verifyMfaU2fText":"Universeller Zweitfaktor Verifikation" + "verifyMfaU2fText":"Universeller Zweitfaktor Verifikation", + "passwordlessPromptText":"Passwordless Aufforderung", + "passwordlessRegistrationDoneText":"Passwordless setzen erfolgreich", + "passwordlessRegistrationText":"Passwordless Registrierung", + "passwordlessText":"Passwordless" } }, "MESSAGE_TEXTS": { @@ -790,13 +798,25 @@ "VE":"Emailverifikation", "VP":"Telefonnummerverifikation", "PR":"Password Wiederherstellung", - "DC":"Domainbeanspruchung" + "DC":"Domainbeanspruchung", + "PL":"Passwordless" }, "CHIPS": { "firstname":"Vorname", "lastname":"Nachname", "code":"Code", - "preferredLoginName":"Bevorzugter Anmeldename" + "preferredLoginName":"Bevorzugter Anmeldename", + "displayName":"Anzeigename", + "nickName":"Spitzname", + "loginnames":"Loginnamen", + "domain":"Domain", + "lastEmail":"Letzte email", + "lastPhone":"Letzte Telefonnummer", + "verifiedEmail":"Verifizierte email", + "verifiedPhone":"Verifizierte Telefonnummer", + "changedate":"Änderungsdatum", + "username":"Username", + "tempUsername":"Temp. Username" }, "TOAST": { "UPDATED":"Benutzerdefinierte Texte gespeichert." diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index bc18091ba2..96c6e89283 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -481,6 +481,8 @@ "MEMBERSHIPS": { "TITLE": "ZITADEL Manager Roles", "DESCRIPTION": "These are all member grants of the user. You can modify them also on organisation, project, or IAM detail pages.", + "ORGCONTEXT":"You see all organizations and projects that are related to the currently selected organization.", + "USERCONTEXT":"You see all organizations and projects to which you are authorized. Including other organizations.", "CREATIONDATE": "Creation Date", "CHANGEDATE": "Last Modified", "DISPLAYNAME": "Display Name", @@ -690,6 +692,9 @@ "RELEASE":"Release", "DROPFONT":"Drop fontfile here", "RELEASEFONT":"Release", + "MAXSIZE":"The maximum size is limited to 524kB", + "MAXSIZEEXCEEDED":"Maximum size of 524kB exceeded.", + "FONTINLOGINONLY":"The font is currently only displayed in the login interface.", "PREVIEW": { "TITLE":"Login", "SECOND":"login with your ZITADEL-Account.", @@ -772,7 +777,6 @@ "passwordChangeText":"Password change", "passwordResetDoneText":"Password reset done", "passwordText":"Password", - "passwordlessText":"Passwordless", "registrationOptionText":"Registration Options", "registrationOrgText":"Register Org", "registrationUserText":"Register User", @@ -781,7 +785,11 @@ "usernameChangeDoneText":"Username change done", "usernameChangeText":"Username change", "verifyMfaOtpText":"Verify OTP", - "verifyMfaU2fText":"Verify Universal Second Factor" + "verifyMfaU2fText":"Verify Universal Second Factor", + "passwordlessPromptText":"Passwordless Prompt", + "passwordlessRegistrationDoneText":"Passwordless Registration Done", + "passwordlessRegistrationText":"Passwordless Registration", + "passwordlessText":"Passwordless" } }, "MESSAGE_TEXTS": { @@ -792,13 +800,25 @@ "VE":"Verify Email", "VP":"Verify Phone", "PR":"Password Reset", - "DC":"Domain Claim" + "DC":"Domain Claim", + "PL":"Passwordless" }, "CHIPS": { "firstname":"Firstname", "lastname":"Lastname", "code":"Code", - "preferredLoginName":"Preferred Login Name" + "preferredLoginName":"Preferred Login Name", + "displayName":"Displayname", + "nickName":"Nickname", + "loginnames":"Login names", + "domain":"Domain", + "lastEmail":"Last email", + "lastPhone":"Last phone", + "verifiedEmail":"Verified email", + "verifiedPhone":"Verified phone", + "changedate":"Change date", + "username":"Username", + "tempUsername":"Temp username" }, "TOAST": { "UPDATED":"Custom Texts saved." @@ -831,7 +851,7 @@ "HIDEPASSWORDRESET_DESC": "If the option is selected, the user can't reset his password in the login process.", "HIDELOGINNAMESUFFIX":"Hide Loginname suffix", "ERRORMSGPOPUP":"Show Error in Dialog", - "DISABLEWATERMARK":"Disable Watermark" + "DISABLEWATERMARK":"Hide Watermark" }, "RESET": "Reset Policy", "CREATECUSTOM": "Create Custom Policy", diff --git a/console/src/styles.scss b/console/src/styles.scss index 4a0899f925..ed3a8c359f 100644 --- a/console/src/styles.scss +++ b/console/src/styles.scss @@ -1,6 +1,3 @@ -// Custom Theming for Angular Material -// For more information: https://material.angular.io/guide/theming - @use '~@angular/material' as mat; @import './component-themes'; @@ -332,12 +329,6 @@ $caos-light-app-theme: ( $custom-typography: mat.define-typography-config($font-family: 'Lato'); @include mat.core($custom-typography); - -// textarea { -// font-family: 'Lato'; -// } - -// default theme @include component-themes($caos-dark-app-theme); @include mat.all-component-themes($caos-dark-app-theme); diff --git a/internal/auth/repository/eventsourcing/eventstore/auth_request.go b/internal/auth/repository/eventsourcing/eventstore/auth_request.go index 73414df761..2148a21c19 100644 --- a/internal/auth/repository/eventsourcing/eventstore/auth_request.go +++ b/internal/auth/repository/eventsourcing/eventstore/auth_request.go @@ -840,10 +840,25 @@ func (repo *AuthRequestRepo) getLockoutPolicy(ctx context.Context, orgID string) policy, err := repo.View.LockoutPolicyByAggregateID(orgID) if errors.IsNotFound(err) { policy, err = repo.View.LockoutPolicyByAggregateID(repo.IAMID) - if err != nil { + if err != nil && !errors.IsNotFound(err) { return nil, err } + if err == nil { + return policy.ToDomain(), nil + } + policy = &iam_view_model.LockoutPolicyView{} + events, err := repo.Eventstore.FilterEvents(ctx, es_models.NewSearchQuery(). + AggregateIDFilter(repo.IAMID). + AggregateTypeFilter(iam.AggregateType). + EventTypesFilter(es_models.EventType(iam.LockoutPolicyAddedEventType), es_models.EventType(iam.LockoutPolicyChangedEventType))) + if err != nil || len(events) == 0 { + return nil, errors.ThrowNotFound(err, "EVENT-Gfgr2", "IAM.LockoutPolicy.NotExisting") + } policy.Default = true + for _, event := range events { + policy.AppendEvent(event) + } + return policy.ToDomain(), nil } if err != nil { return nil, err