diff --git a/console/package-lock.json b/console/package-lock.json index 559297df91..2a0298bb9c 100644 --- a/console/package-lock.json +++ b/console/package-lock.json @@ -5,20 +5,21 @@ "requires": true, "packages": { "": { + "name": "console", "version": "0.0.0", "dependencies": { - "@angular/animations": "~12.2.4", - "@angular/cdk": "~12.2.4", - "@angular/common": "~12.2.4", - "@angular/compiler": "~12.2.4", - "@angular/core": "~12.2.4", - "@angular/forms": "~12.2.4", - "@angular/material": "^12.2.4", - "@angular/material-moment-adapter": "^12.2.4", - "@angular/platform-browser": "~12.2.4", - "@angular/platform-browser-dynamic": "~12.2.4", - "@angular/router": "~12.2.4", - "@angular/service-worker": "~12.2.4", + "@angular/animations": "~12.2.7", + "@angular/cdk": "~12.2.7", + "@angular/common": "~12.2.7", + "@angular/compiler": "~12.2.7", + "@angular/core": "~12.2.7", + "@angular/forms": "~12.2.7", + "@angular/material": "^12.2.7", + "@angular/material-moment-adapter": "^12.2.7", + "@angular/platform-browser": "~12.2.7", + "@angular/platform-browser-dynamic": "~12.2.7", + "@angular/router": "~12.2.7", + "@angular/service-worker": "~12.2.7", "@grpc/grpc-js": "^1.3.2", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", @@ -32,12 +33,12 @@ "google-proto-files": "^2.4.0", "google-protobuf": "^3.17.2", "grpc-web": "^1.2.1", - "libphonenumber-js": "^1.9.23", + "libphonenumber-js": "^1.9.34", "moment": "^2.29.1", "ngx-color": "^7.2.0", "ngx-image-cropper": "^3.3.5", "ngx-quicklink": "^0.2.6", - "rxjs": "~6.6.7", + "rxjs": "~7.3.0", "tinycolor2": "^1.4.2", "ts-protoc-gen": "^0.14.0", "tslib": "^2.2.0", @@ -45,15 +46,15 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~12.2.4", - "@angular/cli": "~12.2.4", - "@angular/compiler-cli": "~12.2.4", - "@angular/language-service": "~12.2.4", + "@angular-devkit/build-angular": "~12.2.7", + "@angular/cli": "~12.2.7", + "@angular/compiler-cli": "~12.2.7", + "@angular/language-service": "~12.2.7", "@types/jasmine": "~3.8.2", "@types/jasminewd2": "~2.0.10", "@types/node": "^16.7.6", "codelyzer": "^6.0.0", - "jasmine-core": "~3.7.1", + "jasmine-core": "~3.9.0", "jasmine-spec-reporter": "~7.0.0", "karma": "~6.3.2", "karma-chrome-launcher": "~3.1.0", @@ -84,12 +85,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.4.tgz", - "integrity": "sha512-RBatkiiZWGX7/qYYaWVNAzaF3E8TCEt9dRfAoZSaLy/JLQLT3xjX+qT4bBC/XPdC8SQCWvMjW3IjfYRaKTBv1g==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.7.tgz", + "integrity": "sha512-zqqw3h8jMDYsRrXUNY1J8xtUl6wmBO++yTka+CoEIFetNdLdoWmb5VpaA81i0aSBhXBgnBUUFvqZGdiI7BbV8A==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.4", + "@angular-devkit/core": "12.2.7", "rxjs": "6.6.7" }, "engines": { @@ -98,17 +99,35 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular-devkit/build-angular": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.4.tgz", - "integrity": "sha512-kYd22PM3BhjloSd7epEIEieXI/F4gbKgZCxIv7wsIFifOB6cqMH2HK5B1Zb66rieb9dg8AZvnLL9EuUSIULrjw==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.7.tgz", + "integrity": "sha512-ZgbdmPEiJ8ShKg6CwNEuot1xCHTC68WfTr1ClUhvMvK9nsBydPdeKAYiqEho8gP4PuC0v3Hssuokfkqdb3Ms/A==", "dev": true, "dependencies": { "@ampproject/remapping": "1.0.1", - "@angular-devkit/architect": "0.1202.4", - "@angular-devkit/build-optimizer": "0.1202.4", - "@angular-devkit/build-webpack": "0.1202.4", - "@angular-devkit/core": "12.2.4", + "@angular-devkit/architect": "0.1202.7", + "@angular-devkit/build-optimizer": "0.1202.7", + "@angular-devkit/build-webpack": "0.1202.7", + "@angular-devkit/core": "12.2.7", "@babel/core": "7.14.8", "@babel/generator": "7.14.8", "@babel/helper-annotate-as-pure": "7.14.5", @@ -120,7 +139,7 @@ "@babel/template": "7.14.5", "@discoveryjs/json-ext": "0.5.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.2.4", + "@ngtools/webpack": "12.2.7", "ansi-colors": "4.1.1", "babel-loader": "8.2.2", "browserslist": "^4.9.1", @@ -132,7 +151,7 @@ "critters": "0.0.10", "css-loader": "6.2.0", "css-minimizer-webpack-plugin": "3.0.2", - "esbuild": "0.12.24", + "esbuild-wasm": "0.12.29", "find-cache-dir": "3.3.1", "glob": "7.1.7", "https-proxy-agent": "5.0.0", @@ -179,6 +198,9 @@ "npm": "^6.11.0 || ^7.5.6", "yarn": ">= 1.13.0" }, + "optionalDependencies": { + "esbuild": "0.12.29" + }, "peerDependencies": { "@angular/compiler-cli": "^12.0.0", "@angular/localize": "^12.0.0", @@ -214,10 +236,28 @@ } } }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular-devkit/build-optimizer": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.4.tgz", - "integrity": "sha512-kLZsqNAxaMFdG5GVoyfvvD+v+Iq/0S7xAbuTOa4qwmI946e+vfqO55rHEyRo2in6PVRP8UgH/1fYFgAC0P+pfg==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.7.tgz", + "integrity": "sha512-/VelwjOjQGZvXLwCuWVJ3MaTb1x0/UKYAqooEUW3yFkv6uXfpCCWywrIBZ3mYrU+m5ZeTjhDY4EFEd2WtBSroA==", "dev": true, "dependencies": { "source-map": "0.7.3", @@ -242,12 +282,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.4.tgz", - "integrity": "sha512-XUZWt60M855mLmy02jYZ3yByMQf6sTYrMTfCnz62GILv7snauSfx9SqKYrD37sZ4UMCd4UNRmlcPtcjdRkLoPQ==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.7.tgz", + "integrity": "sha512-DuWr6jEB/CBlmU1D+n0Jo6BMtYokbpBG0PZtnyzSvcwglIWIhxzFbCC7HTnlEzed+bmCSui7LtlGtkYcpFFsGw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1202.4", + "@angular-devkit/architect": "0.1202.7", "rxjs": "6.6.7" }, "engines": { @@ -260,10 +300,28 @@ "webpack-dev-server": "^3.1.4" } }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular-devkit/core": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.4.tgz", - "integrity": "sha512-lONchANfqBHE0UgqK1PFcaBwpT/FetM8atuLjbhgdM1VcR6lVLzyZImhR12gtNWJ5nledhMp8QeGkFvO3KCdxw==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.7.tgz", + "integrity": "sha512-WeLlDZaudpx10OGDPfVcWu/CaEWiWzAaLTUQz0Ww/yM+01FxR/P8yeH1sYAV1MS6d6KHvXGw7Lpf8PV7IA/zHA==", "dev": true, "dependencies": { "ajv": "8.6.2", @@ -279,13 +337,31 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.4.tgz", - "integrity": "sha512-hL2POzb2G8PzYzLl3Dmc3ePCRyXg1LnJEpGTXvTqgLCUI6fKGb2T7hwn3fbD7keCv88UleGazOPq9iU7Qqvx3Q==", + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.4", + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/schematics": { + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.7.tgz", + "integrity": "sha512-E0hCFyyfbixjerf0Okt4ynC6F1dsT2Wl7MwAePe+wzPTHCnKIRTa2PQTxJzdWeTlSkQMkSK6ft2iyWOD/FODng==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "12.2.7", "ora": "5.4.1", "rxjs": "6.6.7" }, @@ -295,10 +371,28 @@ "yarn": ">= 1.13.0" } }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, "node_modules/@angular/animations": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.4.tgz", - "integrity": "sha512-UpTddGkftkW/vOhF19Z6lbtvhUX+LpMw+1qC2miM65XNrOWBe5bojX9/9pwGd1CpP189aRFHl933YLCgVxGKPA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.7.tgz", + "integrity": "sha512-ehlI4wnlHN213CiQNjYspoT9cEIrtOqVJfsPxUdzOCqCGBajVLxyqHb1skXtfOQXOIhznRS7P/d/4Ht7mWMizg==", "dependencies": { "tslib": "^2.2.0" }, @@ -306,13 +400,13 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "12.2.4" + "@angular/core": "12.2.7" } }, "node_modules/@angular/cdk": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.4.tgz", - "integrity": "sha512-XvdMWz2iJgcSD0fMM9I29i9/XV4/1MTqSPN+c5EIESLXhjhh4o6VFOsKcj4BfrJxO6tadqA0AdGA0AJfP+de/w==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.7.tgz", + "integrity": "sha512-OMPewaE1VxCSFkLDZQLFMkGQCQEvbizuVRzArZBB5xfxl98YMjntNQjlWH4rGbRhF+eZlpOrC+UAVnzTX2BzAw==", "dependencies": { "tslib": "^2.2.0" }, @@ -326,16 +420,16 @@ } }, "node_modules/@angular/cli": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.4.tgz", - "integrity": "sha512-oUpUKnFyunUMaWXF/5mXgM4r2Yav0ucysNN5rIhqtKPwGePGMALIuBWAhgsuIyT+SrmF9HIp1dVC5+sGA1WzYQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.7.tgz", + "integrity": "sha512-FH34528+126Cxh/+1cBppBas8tExizKSJgbjpT3zgV6ijwHD7apT5zU9R1TyOhQPd6BhyaURo9Hnsjg49W4bRA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@angular-devkit/architect": "0.1202.4", - "@angular-devkit/core": "12.2.4", - "@angular-devkit/schematics": "12.2.4", - "@schematics/angular": "12.2.4", + "@angular-devkit/architect": "0.1202.7", + "@angular-devkit/core": "12.2.7", + "@angular-devkit/schematics": "12.2.7", + "@schematics/angular": "12.2.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.2", @@ -362,9 +456,9 @@ } }, "node_modules/@angular/common": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.4.tgz", - "integrity": "sha512-GbYcy3m1r2lPlbonodY8c04l/11p9BRcWJ8i+begu2iG7JofRIX8+XOFINMNlOspjo+VZFhVoTlXM7R0Zmfi8Q==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.7.tgz", + "integrity": "sha512-Gug5a59c4NwfmSvO9Ya7DoYjl6ndK7nDuBoPSpp6IHTlNE8FY/BOd29qEp/lYJ4cAWxVk14+lonUPs6C+Szekw==", "dependencies": { "tslib": "^2.2.0" }, @@ -372,14 +466,14 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "12.2.4", + "@angular/core": "12.2.7", "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/compiler": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.4.tgz", - "integrity": "sha512-aqX9SgUIOYwWeD9xGlyGgFRmgvebw9EE8U5Y3Dcrhui1XvxWKnmuozs3w5JVhmEn5f42XDdOas5gkI/E7+hasA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.7.tgz", + "integrity": "sha512-9X7Vrfg6dWfYKPAJLQYR5W7N8WnESg8PG07gNzHZtavETPrDIoX+Av/kQcEdPu14zTZE5NWx5u5TUByFgouQiQ==", "dependencies": { "tslib": "^2.2.0" }, @@ -388,9 +482,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.4.tgz", - "integrity": "sha512-g7sCBdk58yqD9H4k2JQ1NRBgC7SyDjiTbM9ETe/CZ0mzQlbplmgUlPGiSRy4qTTrmjiJlK2AEfzd0s/ahkIsPQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.7.tgz", + "integrity": "sha512-otsy3t3psrEWNbnjADaZVhBGBmBmBGxqknNoJ1+UeqSWf4z7su736jyzerxD684vmk08U6X2loxOuDr90idjPA==", "dev": true, "dependencies": { "@babel/core": "^7.8.6", @@ -418,7 +512,7 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/compiler": "12.2.4", + "@angular/compiler": "12.2.7", "typescript": ">=4.2.3 <4.4" } }, @@ -432,9 +526,9 @@ } }, "node_modules/@angular/compiler-cli/node_modules/yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "dev": true, "dependencies": { "cliui": "^7.0.2", @@ -450,9 +544,9 @@ } }, "node_modules/@angular/core": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.4.tgz", - "integrity": "sha512-+TlS6vI56YkvUoQI/Er7kXzi5sjd/oayb8+iTnecX1u0UOpBYzcE8NLeHqSS9qPUjWSiw0JjgW07gdzxlye3aQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.7.tgz", + "integrity": "sha512-no4mQ4O1euNH6odho1H27dcUmYBaNuyYvpPvv0wbb1pMT3Mm2J/uueePx/fvwg3nQ+vnk/yL1VCCqR7Mt62nHA==", "dependencies": { "tslib": "^2.2.0" }, @@ -465,9 +559,9 @@ } }, "node_modules/@angular/forms": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.4.tgz", - "integrity": "sha512-o8z2c9WhlptcptonLj+dFkKqTqhc+RAbPIGIGisQpRi6FWgWfn75oXdIuqtHC7oNPDqQfH6zkwcgN2NlUC0uHA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.7.tgz", + "integrity": "sha512-TtXnwE/bouEtGddaaSGytwCoyRN8YPNN/yf81fFM9LOGef4ZpABMtuMnsZxlDS+91AGpVSzvR511O5DG1BXc4Q==", "dependencies": { "tslib": "^2.2.0" }, @@ -475,31 +569,31 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.2.4", - "@angular/core": "12.2.4", - "@angular/platform-browser": "12.2.4", + "@angular/common": "12.2.7", + "@angular/core": "12.2.7", + "@angular/platform-browser": "12.2.7", "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/language-service": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.4.tgz", - "integrity": "sha512-cFIlXM7pyasM1rHHviK2vCGvYmB/ZxDlw33gRLWgxpUlhebwA7V5P+4sxmIzuw26+KJsEHq8zazkl35/1piMnQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.7.tgz", + "integrity": "sha512-LCr4CUL1IFLfW9oHpv43/lhJ/kzCP4vhsGTmtOPup7Oc8/lVGUxvFrnIPx0o9qgSjT/ATbWr29+QY0bk02gsRQ==", "dev": true, "engines": { "node": "^12.14.1 || >=14.0.0" } }, "node_modules/@angular/material": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.4.tgz", - "integrity": "sha512-Hvo6QjUqzlq0OJBAKT0pUiKymCqGUunZi0HX+oL/iga5qVfU4OGSjxaGEuv5stBEDZ7PARaV1pd56X18HQRUew==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.7.tgz", + "integrity": "sha512-uaenRwRywvn0hMvRIsSaFIgUSrfHHZMr/uAC3uDZh7zAVmsbAqgzyrNo7i4L5vZxQa3q1EXn1fFPPOTrPfqdJw==", "dependencies": { "tslib": "^2.2.0" }, "peerDependencies": { "@angular/animations": "^12.0.0 || ^13.0.0-0", - "@angular/cdk": "12.2.4", + "@angular/cdk": "12.2.7", "@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", @@ -507,22 +601,22 @@ } }, "node_modules/@angular/material-moment-adapter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.4.tgz", - "integrity": "sha512-HJDYE40PIjf6+CMJ7iJCkp8V/o2XBzBNqyHYMUq5F8ICkJCIs6VMzJa37u9wrjsoLOfiGz5hdPqUWnWYNrAWbA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.7.tgz", + "integrity": "sha512-nwDTQLP5al5LJ+Sl4fJBnesfRjzaLe4ZJZOy+Yl5F+UU/JJSOZuYs38KqTYb89SJDnWnGsx6SFk9eqjQjGfpXQ==", "dependencies": { "tslib": "^2.2.0" }, "peerDependencies": { "@angular/core": "^12.0.0 || ^13.0.0-0", - "@angular/material": "12.2.4", + "@angular/material": "12.2.7", "moment": "^2.18.1" } }, "node_modules/@angular/platform-browser": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.4.tgz", - "integrity": "sha512-b5BZpYp4s+B3Ec+DvZo5I0YjHITqIc9pmcSdDFkN29eq9+8ZfkJqV9nB1aEab4Al7aJ09u8BhstTufohYH3fBg==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.7.tgz", + "integrity": "sha512-mCQ5KqskMb98DLowyKfixH+ZpTjs5WuIZw9BqPc2knOlUxmfTuDRf5xDQn9Nur2ASF1wfJpaOogW685nB3ojnQ==", "dependencies": { "tslib": "^2.2.0" }, @@ -530,9 +624,9 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/animations": "12.2.4", - "@angular/common": "12.2.4", - "@angular/core": "12.2.4" + "@angular/animations": "12.2.7", + "@angular/common": "12.2.7", + "@angular/core": "12.2.7" }, "peerDependenciesMeta": { "@angular/animations": { @@ -541,9 +635,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.4.tgz", - "integrity": "sha512-BGTK71EEaaGpfFJ8gXfnmC95BDhAEjJ5/gW3/DLhgKhoPfpH7J8AtPVijWGovrUB7d4XBmniCVdtSiSVZKfqCA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.7.tgz", + "integrity": "sha512-KxIotZR/NaM4r6OyjVxpPIg2AOk2jXpZy77g868tzqt8GQVJ6NXHoNTIAfQhEelr6bSIELm+mTqhDbNNIrXEnQ==", "dependencies": { "tslib": "^2.2.0" }, @@ -551,16 +645,16 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.2.4", - "@angular/compiler": "12.2.4", - "@angular/core": "12.2.4", - "@angular/platform-browser": "12.2.4" + "@angular/common": "12.2.7", + "@angular/compiler": "12.2.7", + "@angular/core": "12.2.7", + "@angular/platform-browser": "12.2.7" } }, "node_modules/@angular/router": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.4.tgz", - "integrity": "sha512-IkSLzXw23CCFQyBdwoouvGj/u2bxs9d4Ba7i+g/aDKrxeUVBZ7XSfks5OhCJe9F/o93rnfnSiBXvgx51olQ5CQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.7.tgz", + "integrity": "sha512-3RzeBXbV0B+sdSskRYV07KsCgcS8dMmce6oUQrDskEnAmakzFo+R6OVKBFhPtTrqUstHVUsXr2kcoaaPVLquYw==", "dependencies": { "tslib": "^2.2.0" }, @@ -568,16 +662,16 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.2.4", - "@angular/core": "12.2.4", - "@angular/platform-browser": "12.2.4", + "@angular/common": "12.2.7", + "@angular/core": "12.2.7", + "@angular/platform-browser": "12.2.7", "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/service-worker": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.4.tgz", - "integrity": "sha512-+SFTnr+ko/ovuM9zYgltmiPtHQW9ZE74eKrPABJdaJ96Lcto2X+3NFYgeSnMgtyMP8H69ILqP664NQV0bBPBrg==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.7.tgz", + "integrity": "sha512-0Lz2y/1l2/mOmpuKVmzEFPOC+Gnj8LHJ6w/2DThXQdFxueYInBd+zF9i65TeVtytWe0ZtGEcLXX5GymaQhxsSg==", "dependencies": { "tslib": "^2.2.0" }, @@ -588,8 +682,8 @@ "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "12.2.4", - "@angular/core": "12.2.4" + "@angular/common": "12.2.7", + "@angular/core": "12.2.7" } }, "node_modules/@assemblyscript/loader": { @@ -2317,9 +2411,9 @@ } }, "node_modules/@ngtools/webpack": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.4.tgz", - "integrity": "sha512-jWxp5LwhGoIZY/iSWMpOgjSYS0XMq7bQunxdJBWJ9y8Lysw7lofJkk1KfWjx+oWBSNoOI0E2tH82I4DL6oth4w==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.7.tgz", + "integrity": "sha512-RX5UQA9Bwp/J5GPGtJiwEOQUdf/0UqdeIZtktOZJ4x3K676l//PCFxxxgGqi2qUR2eu/wLAyiDhvDwqDixsngQ==", "dev": true, "engines": { "node": "^12.14.1 || >=14.0.0", @@ -2535,13 +2629,13 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "node_modules/@schematics/angular": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.4.tgz", - "integrity": "sha512-JPyjoTQMiVnaFmaEgACm7dzRMp7WMq78abeVaAg/xy8z2apMeDhTBXoSSLhXpQNtFvzLmfM4ovC6sCwn9esU9A==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.7.tgz", + "integrity": "sha512-wGqp0jC545Fwf0ydBkeoJHx9snFW+uqn40WwVqs/27Nh4AEHB5uzwzLY7Ykae95Zn802a61KPqSNWpez2fWWGA==", "dev": true, "dependencies": { - "@angular-devkit/core": "12.2.4", - "@angular-devkit/schematics": "12.2.4", + "@angular-devkit/core": "12.2.7", + "@angular-devkit/schematics": "12.2.7", "jsonc-parser": "3.0.0" }, "engines": { @@ -4476,6 +4570,18 @@ "zone.js": "~0.10.2" } }, + "node_modules/codelyzer/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/codelyzer/node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -6231,15 +6337,28 @@ } }, "node_modules/esbuild": { - "version": "0.12.24", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz", - "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==", + "version": "0.12.29", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", + "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", "dev": true, "hasInstallScript": true, + "optional": true, "bin": { "esbuild": "bin/esbuild" } }, + "node_modules/esbuild-wasm": { + "version": "0.12.29", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.12.29.tgz", + "integrity": "sha512-amSuB/qOGnTFYLOxGHDGosQbOKZnrinniPHFf6ZxzeNH7WAjLkjXluKyKAtX2YuhTkUXm9XV9igl13iqYZ44fQ==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -8253,15 +8372,6 @@ "node": ">=8" } }, - "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/inquirer/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8274,12 +8384,6 @@ "node": ">=8" } }, - "node_modules/inquirer/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/internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -8923,9 +9027,9 @@ } }, "node_modules/jasmine-core": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz", - "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.9.0.tgz", + "integrity": "sha512-Tv3kVbPCGVrjsnHBZ38NsPU3sDOtNa0XmbG2baiyJqdb5/SPpDO6GVwJYtUryl6KB4q1Ssckwg612ES9Z0dreQ==", "dev": true }, "node_modules/jasmine-spec-reporter": { @@ -9417,9 +9521,9 @@ "dev": true }, "node_modules/libphonenumber-js": { - "version": "1.9.23", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", - "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" + "version": "1.9.34", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.34.tgz", + "integrity": "sha512-gHTNU9xTtVgSp30IDX/57W4pETMXDIYXFfwEOJVXiYosiY7Hc7ogJwlBjOqlCcU04X0aA8DT57hdwUC1sJBJnA==" }, "node_modules/license-webpack-plugin": { "version": "2.3.20", @@ -15321,20 +15425,17 @@ } }, "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" + "tslib": "~2.1.0" } }, "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" }, "node_modules/safe-buffer": { "version": "5.1.2", @@ -19617,26 +19718,43 @@ } }, "@angular-devkit/architect": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.4.tgz", - "integrity": "sha512-RBatkiiZWGX7/qYYaWVNAzaF3E8TCEt9dRfAoZSaLy/JLQLT3xjX+qT4bBC/XPdC8SQCWvMjW3IjfYRaKTBv1g==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1202.7.tgz", + "integrity": "sha512-zqqw3h8jMDYsRrXUNY1J8xtUl6wmBO++yTka+CoEIFetNdLdoWmb5VpaA81i0aSBhXBgnBUUFvqZGdiI7BbV8A==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.4", + "@angular-devkit/core": "12.2.7", "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/build-angular": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.4.tgz", - "integrity": "sha512-kYd22PM3BhjloSd7epEIEieXI/F4gbKgZCxIv7wsIFifOB6cqMH2HK5B1Zb66rieb9dg8AZvnLL9EuUSIULrjw==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-12.2.7.tgz", + "integrity": "sha512-ZgbdmPEiJ8ShKg6CwNEuot1xCHTC68WfTr1ClUhvMvK9nsBydPdeKAYiqEho8gP4PuC0v3Hssuokfkqdb3Ms/A==", "dev": true, "requires": { "@ampproject/remapping": "1.0.1", - "@angular-devkit/architect": "0.1202.4", - "@angular-devkit/build-optimizer": "0.1202.4", - "@angular-devkit/build-webpack": "0.1202.4", - "@angular-devkit/core": "12.2.4", + "@angular-devkit/architect": "0.1202.7", + "@angular-devkit/build-optimizer": "0.1202.7", + "@angular-devkit/build-webpack": "0.1202.7", + "@angular-devkit/core": "12.2.7", "@babel/core": "7.14.8", "@babel/generator": "7.14.8", "@babel/helper-annotate-as-pure": "7.14.5", @@ -19648,7 +19766,7 @@ "@babel/template": "7.14.5", "@discoveryjs/json-ext": "0.5.3", "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "12.2.4", + "@ngtools/webpack": "12.2.7", "ansi-colors": "4.1.1", "babel-loader": "8.2.2", "browserslist": "^4.9.1", @@ -19660,7 +19778,8 @@ "critters": "0.0.10", "css-loader": "6.2.0", "css-minimizer-webpack-plugin": "3.0.2", - "esbuild": "0.12.24", + "esbuild": "0.12.29", + "esbuild-wasm": "0.12.29", "find-cache-dir": "3.3.1", "glob": "7.1.7", "https-proxy-agent": "5.0.0", @@ -19701,12 +19820,31 @@ "webpack-dev-server": "3.11.2", "webpack-merge": "5.8.0", "webpack-subresource-integrity": "1.5.2" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + } } }, "@angular-devkit/build-optimizer": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.4.tgz", - "integrity": "sha512-kLZsqNAxaMFdG5GVoyfvvD+v+Iq/0S7xAbuTOa4qwmI946e+vfqO55rHEyRo2in6PVRP8UgH/1fYFgAC0P+pfg==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1202.7.tgz", + "integrity": "sha512-/VelwjOjQGZvXLwCuWVJ3MaTb1x0/UKYAqooEUW3yFkv6uXfpCCWywrIBZ3mYrU+m5ZeTjhDY4EFEd2WtBSroA==", "dev": true, "requires": { "source-map": "0.7.3", @@ -19715,19 +19853,36 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1202.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.4.tgz", - "integrity": "sha512-XUZWt60M855mLmy02jYZ3yByMQf6sTYrMTfCnz62GILv7snauSfx9SqKYrD37sZ4UMCd4UNRmlcPtcjdRkLoPQ==", + "version": "0.1202.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1202.7.tgz", + "integrity": "sha512-DuWr6jEB/CBlmU1D+n0Jo6BMtYokbpBG0PZtnyzSvcwglIWIhxzFbCC7HTnlEzed+bmCSui7LtlGtkYcpFFsGw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1202.4", + "@angular-devkit/architect": "0.1202.7", "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/core": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.4.tgz", - "integrity": "sha512-lONchANfqBHE0UgqK1PFcaBwpT/FetM8atuLjbhgdM1VcR6lVLzyZImhR12gtNWJ5nledhMp8QeGkFvO3KCdxw==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-12.2.7.tgz", + "integrity": "sha512-WeLlDZaudpx10OGDPfVcWu/CaEWiWzAaLTUQz0Ww/yM+01FxR/P8yeH1sYAV1MS6d6KHvXGw7Lpf8PV7IA/zHA==", "dev": true, "requires": { "ajv": "8.6.2", @@ -19736,46 +19891,80 @@ "magic-string": "0.25.7", "rxjs": "6.6.7", "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular-devkit/schematics": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.4.tgz", - "integrity": "sha512-hL2POzb2G8PzYzLl3Dmc3ePCRyXg1LnJEpGTXvTqgLCUI6fKGb2T7hwn3fbD7keCv88UleGazOPq9iU7Qqvx3Q==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-12.2.7.tgz", + "integrity": "sha512-E0hCFyyfbixjerf0Okt4ynC6F1dsT2Wl7MwAePe+wzPTHCnKIRTa2PQTxJzdWeTlSkQMkSK6ft2iyWOD/FODng==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.4", + "@angular-devkit/core": "12.2.7", "ora": "5.4.1", "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } } }, "@angular/animations": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.4.tgz", - "integrity": "sha512-UpTddGkftkW/vOhF19Z6lbtvhUX+LpMw+1qC2miM65XNrOWBe5bojX9/9pwGd1CpP189aRFHl933YLCgVxGKPA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.7.tgz", + "integrity": "sha512-ehlI4wnlHN213CiQNjYspoT9cEIrtOqVJfsPxUdzOCqCGBajVLxyqHb1skXtfOQXOIhznRS7P/d/4Ht7mWMizg==", "requires": { "tslib": "^2.2.0" } }, "@angular/cdk": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.4.tgz", - "integrity": "sha512-XvdMWz2iJgcSD0fMM9I29i9/XV4/1MTqSPN+c5EIESLXhjhh4o6VFOsKcj4BfrJxO6tadqA0AdGA0AJfP+de/w==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.7.tgz", + "integrity": "sha512-OMPewaE1VxCSFkLDZQLFMkGQCQEvbizuVRzArZBB5xfxl98YMjntNQjlWH4rGbRhF+eZlpOrC+UAVnzTX2BzAw==", "requires": { "parse5": "^5.0.0", "tslib": "^2.2.0" } }, "@angular/cli": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.4.tgz", - "integrity": "sha512-oUpUKnFyunUMaWXF/5mXgM4r2Yav0ucysNN5rIhqtKPwGePGMALIuBWAhgsuIyT+SrmF9HIp1dVC5+sGA1WzYQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-12.2.7.tgz", + "integrity": "sha512-FH34528+126Cxh/+1cBppBas8tExizKSJgbjpT3zgV6ijwHD7apT5zU9R1TyOhQPd6BhyaURo9Hnsjg49W4bRA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1202.4", - "@angular-devkit/core": "12.2.4", - "@angular-devkit/schematics": "12.2.4", - "@schematics/angular": "12.2.4", + "@angular-devkit/architect": "0.1202.7", + "@angular-devkit/core": "12.2.7", + "@angular-devkit/schematics": "12.2.7", + "@schematics/angular": "12.2.7", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.2", @@ -19794,25 +19983,25 @@ } }, "@angular/common": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.4.tgz", - "integrity": "sha512-GbYcy3m1r2lPlbonodY8c04l/11p9BRcWJ8i+begu2iG7JofRIX8+XOFINMNlOspjo+VZFhVoTlXM7R0Zmfi8Q==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.7.tgz", + "integrity": "sha512-Gug5a59c4NwfmSvO9Ya7DoYjl6ndK7nDuBoPSpp6IHTlNE8FY/BOd29qEp/lYJ4cAWxVk14+lonUPs6C+Szekw==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.4.tgz", - "integrity": "sha512-aqX9SgUIOYwWeD9xGlyGgFRmgvebw9EE8U5Y3Dcrhui1XvxWKnmuozs3w5JVhmEn5f42XDdOas5gkI/E7+hasA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.7.tgz", + "integrity": "sha512-9X7Vrfg6dWfYKPAJLQYR5W7N8WnESg8PG07gNzHZtavETPrDIoX+Av/kQcEdPu14zTZE5NWx5u5TUByFgouQiQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/compiler-cli": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.4.tgz", - "integrity": "sha512-g7sCBdk58yqD9H4k2JQ1NRBgC7SyDjiTbM9ETe/CZ0mzQlbplmgUlPGiSRy4qTTrmjiJlK2AEfzd0s/ahkIsPQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.7.tgz", + "integrity": "sha512-otsy3t3psrEWNbnjADaZVhBGBmBmBGxqknNoJ1+UeqSWf4z7su736jyzerxD684vmk08U6X2loxOuDr90idjPA==", "dev": true, "requires": { "@babel/core": "^7.8.6", @@ -19838,9 +20027,9 @@ "dev": true }, "yargs": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", - "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "version": "17.2.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.2.1.tgz", + "integrity": "sha512-XfR8du6ua4K6uLGm5S6fA+FIJom/MdJcFNVY8geLlp2v8GYbOXD4EB1tPNZsRn4vBzKGMgb5DRZMeWuFc2GO8Q==", "dev": true, "requires": { "cliui": "^7.0.2", @@ -19855,71 +20044,71 @@ } }, "@angular/core": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.4.tgz", - "integrity": "sha512-+TlS6vI56YkvUoQI/Er7kXzi5sjd/oayb8+iTnecX1u0UOpBYzcE8NLeHqSS9qPUjWSiw0JjgW07gdzxlye3aQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.7.tgz", + "integrity": "sha512-no4mQ4O1euNH6odho1H27dcUmYBaNuyYvpPvv0wbb1pMT3Mm2J/uueePx/fvwg3nQ+vnk/yL1VCCqR7Mt62nHA==", "requires": { "tslib": "^2.2.0" } }, "@angular/forms": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.4.tgz", - "integrity": "sha512-o8z2c9WhlptcptonLj+dFkKqTqhc+RAbPIGIGisQpRi6FWgWfn75oXdIuqtHC7oNPDqQfH6zkwcgN2NlUC0uHA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.7.tgz", + "integrity": "sha512-TtXnwE/bouEtGddaaSGytwCoyRN8YPNN/yf81fFM9LOGef4ZpABMtuMnsZxlDS+91AGpVSzvR511O5DG1BXc4Q==", "requires": { "tslib": "^2.2.0" } }, "@angular/language-service": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.4.tgz", - "integrity": "sha512-cFIlXM7pyasM1rHHviK2vCGvYmB/ZxDlw33gRLWgxpUlhebwA7V5P+4sxmIzuw26+KJsEHq8zazkl35/1piMnQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-12.2.7.tgz", + "integrity": "sha512-LCr4CUL1IFLfW9oHpv43/lhJ/kzCP4vhsGTmtOPup7Oc8/lVGUxvFrnIPx0o9qgSjT/ATbWr29+QY0bk02gsRQ==", "dev": true }, "@angular/material": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.4.tgz", - "integrity": "sha512-Hvo6QjUqzlq0OJBAKT0pUiKymCqGUunZi0HX+oL/iga5qVfU4OGSjxaGEuv5stBEDZ7PARaV1pd56X18HQRUew==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.7.tgz", + "integrity": "sha512-uaenRwRywvn0hMvRIsSaFIgUSrfHHZMr/uAC3uDZh7zAVmsbAqgzyrNo7i4L5vZxQa3q1EXn1fFPPOTrPfqdJw==", "requires": { "tslib": "^2.2.0" } }, "@angular/material-moment-adapter": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.4.tgz", - "integrity": "sha512-HJDYE40PIjf6+CMJ7iJCkp8V/o2XBzBNqyHYMUq5F8ICkJCIs6VMzJa37u9wrjsoLOfiGz5hdPqUWnWYNrAWbA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-12.2.7.tgz", + "integrity": "sha512-nwDTQLP5al5LJ+Sl4fJBnesfRjzaLe4ZJZOy+Yl5F+UU/JJSOZuYs38KqTYb89SJDnWnGsx6SFk9eqjQjGfpXQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.4.tgz", - "integrity": "sha512-b5BZpYp4s+B3Ec+DvZo5I0YjHITqIc9pmcSdDFkN29eq9+8ZfkJqV9nB1aEab4Al7aJ09u8BhstTufohYH3fBg==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.7.tgz", + "integrity": "sha512-mCQ5KqskMb98DLowyKfixH+ZpTjs5WuIZw9BqPc2knOlUxmfTuDRf5xDQn9Nur2ASF1wfJpaOogW685nB3ojnQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/platform-browser-dynamic": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.4.tgz", - "integrity": "sha512-BGTK71EEaaGpfFJ8gXfnmC95BDhAEjJ5/gW3/DLhgKhoPfpH7J8AtPVijWGovrUB7d4XBmniCVdtSiSVZKfqCA==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.7.tgz", + "integrity": "sha512-KxIotZR/NaM4r6OyjVxpPIg2AOk2jXpZy77g868tzqt8GQVJ6NXHoNTIAfQhEelr6bSIELm+mTqhDbNNIrXEnQ==", "requires": { "tslib": "^2.2.0" } }, "@angular/router": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.4.tgz", - "integrity": "sha512-IkSLzXw23CCFQyBdwoouvGj/u2bxs9d4Ba7i+g/aDKrxeUVBZ7XSfks5OhCJe9F/o93rnfnSiBXvgx51olQ5CQ==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.7.tgz", + "integrity": "sha512-3RzeBXbV0B+sdSskRYV07KsCgcS8dMmce6oUQrDskEnAmakzFo+R6OVKBFhPtTrqUstHVUsXr2kcoaaPVLquYw==", "requires": { "tslib": "^2.2.0" } }, "@angular/service-worker": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.4.tgz", - "integrity": "sha512-+SFTnr+ko/ovuM9zYgltmiPtHQW9ZE74eKrPABJdaJ96Lcto2X+3NFYgeSnMgtyMP8H69ILqP664NQV0bBPBrg==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-12.2.7.tgz", + "integrity": "sha512-0Lz2y/1l2/mOmpuKVmzEFPOC+Gnj8LHJ6w/2DThXQdFxueYInBd+zF9i65TeVtytWe0ZtGEcLXX5GymaQhxsSg==", "requires": { "tslib": "^2.2.0" } @@ -21140,9 +21329,9 @@ } }, "@ngtools/webpack": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.4.tgz", - "integrity": "sha512-jWxp5LwhGoIZY/iSWMpOgjSYS0XMq7bQunxdJBWJ9y8Lysw7lofJkk1KfWjx+oWBSNoOI0E2tH82I4DL6oth4w==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.7.tgz", + "integrity": "sha512-RX5UQA9Bwp/J5GPGtJiwEOQUdf/0UqdeIZtktOZJ4x3K676l//PCFxxxgGqi2qUR2eu/wLAyiDhvDwqDixsngQ==", "dev": true, "requires": {} }, @@ -21318,13 +21507,13 @@ "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, "@schematics/angular": { - "version": "12.2.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.4.tgz", - "integrity": "sha512-JPyjoTQMiVnaFmaEgACm7dzRMp7WMq78abeVaAg/xy8z2apMeDhTBXoSSLhXpQNtFvzLmfM4ovC6sCwn9esU9A==", + "version": "12.2.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-12.2.7.tgz", + "integrity": "sha512-wGqp0jC545Fwf0ydBkeoJHx9snFW+uqn40WwVqs/27Nh4AEHB5uzwzLY7Ykae95Zn802a61KPqSNWpez2fWWGA==", "dev": true, "requires": { - "@angular-devkit/core": "12.2.4", - "@angular-devkit/schematics": "12.2.4", + "@angular-devkit/core": "12.2.7", + "@angular-devkit/schematics": "12.2.7", "jsonc-parser": "3.0.0" } }, @@ -22898,6 +23087,15 @@ "dev": true, "requires": {} }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -24289,9 +24487,16 @@ } }, "esbuild": { - "version": "0.12.24", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.24.tgz", - "integrity": "sha512-C0ibY+HsXzYB6L/pLWEiWjMpghKsIc58Q5yumARwBQsHl9DXPakW+5NI/Y9w4YXiz0PEP6XTGTT/OV4Nnsmb4A==", + "version": "0.12.29", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", + "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.12.29", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.12.29.tgz", + "integrity": "sha512-amSuB/qOGnTFYLOxGHDGosQbOKZnrinniPHFf6ZxzeNH7WAjLkjXluKyKAtX2YuhTkUXm9XV9igl13iqYZ44fQ==", "dev": true }, "escalade": { @@ -25900,15 +26105,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "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", @@ -25917,12 +26113,6 @@ "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 } } }, @@ -26391,9 +26581,9 @@ } }, "jasmine-core": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.7.1.tgz", - "integrity": "sha512-DH3oYDS/AUvvr22+xUBW62m1Xoy7tUlY1tsxKEJvl5JeJ7q8zd1K5bUwiOxdH+erj6l2vAMM3hV25Xs9/WrmuQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.9.0.tgz", + "integrity": "sha512-Tv3kVbPCGVrjsnHBZ38NsPU3sDOtNa0XmbG2baiyJqdb5/SPpDO6GVwJYtUryl6KB4q1Ssckwg612ES9Z0dreQ==", "dev": true }, "jasmine-spec-reporter": { @@ -26783,9 +26973,9 @@ } }, "libphonenumber-js": { - "version": "1.9.23", - "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.23.tgz", - "integrity": "sha512-+qWSwPyJWSV9ukb7Iu21WpWEP7irFWR1ojoYykL2itAfXKj9FjsTjS6PPZoPUOZk+1kxliHjwsilqA1TNeOhuQ==" + "version": "1.9.34", + "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.34.tgz", + "integrity": "sha512-gHTNU9xTtVgSp30IDX/57W4pETMXDIYXFfwEOJVXiYosiY7Hc7ogJwlBjOqlCcU04X0aA8DT57hdwUC1sJBJnA==" }, "license-webpack-plugin": { "version": "2.3.20", @@ -31188,17 +31378,17 @@ } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.3.0.tgz", + "integrity": "sha512-p2yuGIg9S1epc3vrjKf6iVb3RCaAYjYskkO+jHIaV0IjOPlJop4UnodOoFb2xeNwlguqLYvGw1b1McillYb5Gw==", "requires": { - "tslib": "^1.9.0" + "tslib": "~2.1.0" }, "dependencies": { "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", + "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" } } }, diff --git a/console/package.json b/console/package.json index 80bdd68dcc..dbba66bf1e 100644 --- a/console/package.json +++ b/console/package.json @@ -10,18 +10,18 @@ }, "private": true, "dependencies": { - "@angular/animations": "~12.2.4", - "@angular/cdk": "~12.2.4", - "@angular/common": "~12.2.4", - "@angular/compiler": "~12.2.4", - "@angular/core": "~12.2.4", - "@angular/forms": "~12.2.4", - "@angular/material": "^12.2.4", - "@angular/material-moment-adapter": "^12.2.4", - "@angular/platform-browser": "~12.2.4", - "@angular/platform-browser-dynamic": "~12.2.4", - "@angular/router": "~12.2.4", - "@angular/service-worker": "~12.2.4", + "@angular/animations": "~12.2.7", + "@angular/cdk": "~12.2.7", + "@angular/common": "~12.2.7", + "@angular/compiler": "~12.2.7", + "@angular/core": "~12.2.7", + "@angular/forms": "~12.2.7", + "@angular/material": "^12.2.7", + "@angular/material-moment-adapter": "^12.2.7", + "@angular/platform-browser": "~12.2.7", + "@angular/platform-browser-dynamic": "~12.2.7", + "@angular/router": "~12.2.7", + "@angular/service-worker": "~12.2.7", "@grpc/grpc-js": "^1.3.2", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "^6.0.0", @@ -35,12 +35,12 @@ "google-proto-files": "^2.4.0", "google-protobuf": "^3.17.2", "grpc-web": "^1.2.1", - "libphonenumber-js": "^1.9.23", + "libphonenumber-js": "^1.9.34", "moment": "^2.29.1", "ngx-color": "^7.2.0", "ngx-image-cropper": "^3.3.5", "ngx-quicklink": "^0.2.6", - "rxjs": "~6.6.7", + "rxjs": "~7.3.0", "tinycolor2": "^1.4.2", "ts-protoc-gen": "^0.14.0", "tslib": "^2.2.0", @@ -48,15 +48,15 @@ "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "~12.2.4", - "@angular/cli": "~12.2.4", - "@angular/compiler-cli": "~12.2.4", - "@angular/language-service": "~12.2.4", + "@angular-devkit/build-angular": "~12.2.7", + "@angular/cli": "~12.2.7", + "@angular/compiler-cli": "~12.2.7", + "@angular/language-service": "~12.2.7", "@types/jasmine": "~3.8.2", "@types/jasminewd2": "~2.0.10", "@types/node": "^16.7.6", "codelyzer": "^6.0.0", - "jasmine-core": "~3.7.1", + "jasmine-core": "~3.9.0", "jasmine-spec-reporter": "~7.0.0", "karma": "~6.3.2", "karma-chrome-launcher": "~3.1.0", @@ -72,4 +72,4 @@ "tslint": "~6.1.3", "typescript": "^4.2.4" } -} +} \ No newline at end of file diff --git a/console/src/app/modules/features/features.component.ts b/console/src/app/modules/features/features.component.ts index 3ec921e809..7791aa7730 100644 --- a/console/src/app/modules/features/features.component.ts +++ b/console/src/app/modules/features/features.component.ts @@ -13,7 +13,7 @@ import { GetFeaturesResponse } from 'src/app/proto/generated/zitadel/management_ import { Org } from 'src/app/proto/generated/zitadel/org_pb'; import { AdminService } from 'src/app/services/admin.service'; import { ManagementService } from 'src/app/services/mgmt.service'; -import { StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; import { StripeCustomer, SubscriptionService } from 'src/app/services/subscription.service'; import { ToastService } from 'src/app/services/toast.service'; @@ -49,13 +49,14 @@ export class FeaturesComponent implements OnDestroy { constructor( private route: ActivatedRoute, private toast: ToastService, - private sessionStorage: StorageService, + private storage: StorageService, private injector: Injector, private adminService: AdminService, private subService: SubscriptionService, private dialog: MatDialog, ) { - const temporg = this.sessionStorage.getItem('organization') as Org.AsObject; + const temporg: Org.AsObject | null = this.storage.getItem(StorageKey.organization, StorageLocation.session); + if (temporg) { this.org = temporg; } diff --git a/console/src/app/modules/policies/login-texts/helper.ts b/console/src/app/modules/policies/login-texts/helper.ts index fe5aaedd2e..8adfbed0f4 100644 --- a/console/src/app/modules/policies/login-texts/helper.ts +++ b/console/src/app/modules/policies/login-texts/helper.ts @@ -3,6 +3,7 @@ import { SetCustomLoginTextsRequest } from 'src/app/proto/generated/zitadel/mana import { EmailVerificationDoneScreenText, EmailVerificationScreenText, + ExternalRegistrationUserOverviewScreenText, ExternalUserNotFoundScreenText, FooterText, InitializeUserDoneScreenText, @@ -61,6 +62,11 @@ export function mapRequestValues(map: Partial, req: Req): Req { r2.setDescription(map.externalUserNotFoundText?.description ?? ''); r2.setLinkButtonText(map.externalUserNotFoundText?.linkButtonText ?? ''); r2.setTitle(map.externalUserNotFoundText?.title ?? ''); + r2.setTosAndPrivacyLabel(map.externalUserNotFoundText?.tosAndPrivacyLabel ?? ''); + r2.setTosConfirm(map.externalUserNotFoundText?.tosConfirm ?? ''); + r2.setTosConfirmAnd(map.externalUserNotFoundText?.tosConfirmAnd ?? ''); + r2.setTosLinkText(map.externalUserNotFoundText?.tosLinkText ?? ''); + r2.setPrivacyLinkText(map.externalUserNotFoundText?.privacyLinkText ?? ''); req.setExternalUserNotFoundText(r2); const r3 = new FooterText(); @@ -329,6 +335,7 @@ export function mapRequestValues(map: Partial, req: Req): Req { r31.setDescription(map.passwordlessRegistrationDoneText?.description ?? ''); r31.setNextButtonText(map.passwordlessRegistrationDoneText?.nextButtonText ?? ''); r31.setTitle(map.passwordlessRegistrationDoneText?.title ?? ''); + r31.setNextButtonText(map.passwordlessRegistrationDoneText?.cancelButtonText ?? ''); req.setPasswordlessRegistrationDoneText(r31); const r32 = new PasswordlessRegistrationScreenText(); @@ -350,5 +357,24 @@ export function mapRequestValues(map: Partial, req: Req): Req { r33.setValidateTokenButtonText(map.passwordlessText?.validateTokenButtonText ?? ''); req.setPasswordlessText(r33); + const r34 = new ExternalRegistrationUserOverviewScreenText(); + r34.setBackButtonText(map.externalRegistrationUserOverviewText?.backButtonText ?? ''); + r34.setDescription(map.externalRegistrationUserOverviewText?.description ?? ''); + r34.setEmailLabel(map.externalRegistrationUserOverviewText?.emailLabel ?? ''); + r34.setFirstnameLabel(map.externalRegistrationUserOverviewText?.firstnameLabel ?? ''); + r34.setLanguageLabel(map.externalRegistrationUserOverviewText?.languageLabel ?? ''); + r34.setLastnameLabel(map.externalRegistrationUserOverviewText?.lastnameLabel ?? ''); + r34.setNextButtonText(map.externalRegistrationUserOverviewText?.nextButtonText ?? ''); + r34.setNicknameLabel(map.externalRegistrationUserOverviewText?.nicknameLabel ?? ''); + r34.setPhoneLabel(map.externalRegistrationUserOverviewText?.phoneLabel ?? ''); + r34.setPrivacyLinkText(map.externalRegistrationUserOverviewText?.privacyLinkText ?? ''); + r34.setTitle(map.externalRegistrationUserOverviewText?.title ?? ''); + r34.setTosAndPrivacyLabel(map.externalRegistrationUserOverviewText?.tosAndPrivacyLabel ?? ''); + r34.setTosConfirm(map.externalRegistrationUserOverviewText?.tosConfirm ?? ''); + r34.setTosConfirmAnd(map.externalRegistrationUserOverviewText?.tosConfirmAnd ?? ''); + r34.setTosLinkText(map.externalRegistrationUserOverviewText?.tosLinkText ?? ''); + r34.setUsernameLabel(map.externalRegistrationUserOverviewText?.usernameLabel ?? ''); + req.setExternalRegistrationUserOverviewText(r34); + 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 6dbcabdd56..3720d84f2c 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 @@ -59,6 +59,7 @@ const KeyNamesArray = [ 'passwordlessRegistrationDoneText', 'passwordlessRegistrationText', 'passwordlessText', + 'externalRegistrationUserOverviewText' ]; // tslint:enable diff --git a/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.ts b/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.ts index b82f58218d..5bbe39eb66 100644 --- a/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.ts +++ b/console/src/app/modules/policies/org-iam-policy/org-iam-policy.component.ts @@ -8,7 +8,7 @@ import { Org } from 'src/app/proto/generated/zitadel/org_pb'; import { OrgIAMPolicy } from 'src/app/proto/generated/zitadel/policy_pb'; import { AdminService } from 'src/app/services/admin.service'; import { ManagementService } from 'src/app/services/mgmt.service'; -import { StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; import { ToastService } from 'src/app/services/toast.service'; import { GridPolicy, IAM_POLICY } from '../../policy-grid/policies'; @@ -34,11 +34,11 @@ export class OrgIamPolicyComponent implements OnDestroy { constructor( private route: ActivatedRoute, private toast: ToastService, - private sessionStorage: StorageService, + private storage: StorageService, private injector: Injector, private adminService: AdminService, ) { - const temporg = this.sessionStorage.getItem('organization') as Org.AsObject; + const temporg = this.storage.getItem(StorageKey.organization, StorageLocation.session) as Org.AsObject; if (temporg) { this.org = temporg; } 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 ef62b1c83c..c6c7f43358 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 @@ -21,7 +21,7 @@ import { AdminService } from 'src/app/services/admin.service'; import { AssetEndpoint, AssetService, AssetType } from 'src/app/services/asset.service'; import { GrpcAuthService } from 'src/app/services/grpc-auth.service'; import { ManagementService } from 'src/app/services/mgmt.service'; -import { StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; import { ThemeService } from 'src/app/services/theme.service'; import { ToastService } from 'src/app/services/toast.service'; @@ -48,7 +48,6 @@ export enum ColorType { BACKGROUNDLIGHT, } -const ORG_STORAGE_KEY = 'organization'; const MAX_ALLOWED_SIZE = 0.5 * 1024 * 1024; @Component({ @@ -96,10 +95,10 @@ export class PrivateLabelingPolicyComponent implements OnDestroy { private injector: Injector, private assetService: AssetService, private sanitizer: DomSanitizer, - private storageService: StorageService, + private storage: StorageService, private themeService: ThemeService, ) { - const org: Org.AsObject | null = (this.storageService.getItem(ORG_STORAGE_KEY)); + const org: Org.AsObject | null = (this.storage.getItem(StorageKey.organization, StorageLocation.session)); if (org) { this.org = org; diff --git a/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-grid/granted-project-grid.component.ts b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-grid/granted-project-grid.component.ts index 8af51b92d2..ec783e9316 100644 --- a/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-grid/granted-project-grid.component.ts +++ b/console/src/app/pages/projects/granted-projects/granted-project-list/granted-project-grid/granted-project-grid.component.ts @@ -4,7 +4,7 @@ import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from import { Router } from '@angular/router'; import { Org } from 'src/app/proto/generated/zitadel/org_pb'; import { GrantedProject, ProjectGrantState } from 'src/app/proto/generated/zitadel/project_pb'; -import { StorageKey, StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; @Component({ selector: 'app-granted-project-grid', @@ -81,12 +81,12 @@ export class GrantedProjectGridComponent implements OnChanges { } private async getPrefixedItem(key: string): Promise { - const org = this.storage.getItem(StorageKey.organization) as Org.AsObject; + const org = this.storage.getItem(StorageKey.organization, StorageLocation.session) as Org.AsObject; return localStorage.getItem(`${org.id}:${key}`); } private async setPrefixedItem(key: string, value: any): Promise { - const org = this.storage.getItem(StorageKey.organization) as Org.AsObject; + const org = this.storage.getItem(StorageKey.organization, StorageLocation.session) as Org.AsObject; return localStorage.setItem(`${org.id}:${key}`, value); } diff --git a/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.html b/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.html index 58d8ff4df3..aafe434269 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.html +++ b/console/src/app/pages/projects/owned-projects/owned-project-detail/applications/applications.component.html @@ -8,7 +8,7 @@
- +
; - public dataSource!: ProjectApplicationsDataSource; - public selection: SelectionModel = new SelectionModel(true, []); + @Input() public projectId: string = ''; + @Input() public disabled: boolean = false; + @ViewChild(PaginatorComponent) public paginator!: PaginatorComponent; + @ViewChild(MatTable) public table!: MatTable; + public dataSource!: ProjectApplicationsDataSource; + public selection: SelectionModel = new SelectionModel(true, []); - public displayedColumns: string[] = ['select', 'name', 'type']; + public displayedColumns: string[] = ['select', 'name', 'type']; - constructor(private mgmtService: ManagementService) { } + constructor(private mgmtService: ManagementService) { } - public ngOnInit(): void { - this.dataSource = new ProjectApplicationsDataSource(this.mgmtService); - this.dataSource.loadApps(this.projectId, 0, 25); - } + public ngOnInit(): void { + this.dataSource = new ProjectApplicationsDataSource(this.mgmtService); + this.dataSource.loadApps(this.projectId, 0, 25); + } - public ngAfterViewInit(): void { - merge(this.sort ? this.sort?.sortChange : of(null), this.paginator.page) - .pipe( - tap(() => this.loadRolesPage()), - ) - .subscribe(); - } + public ngAfterViewInit(): void { + merge(this.paginator.page) + .pipe( + tap(() => this.loadRolesPage()), + ) + .subscribe(); + } - private loadRolesPage(): void { - this.dataSource.loadApps( - this.projectId, - this.paginator.pageIndex, - this.paginator.pageSize, - ); - } + private loadRolesPage(): void { + this.dataSource.loadApps( + this.projectId, + this.paginator.pageIndex, + this.paginator.pageSize, + ); + } - public isAllSelected(): boolean { - const numSelected = this.selection.selected.length; - const numRows = this.dataSource.appsSubject.value.length; - return numSelected === numRows; - } + public isAllSelected(): boolean { + const numSelected = this.selection.selected.length; + const numRows = this.dataSource.appsSubject.value.length; + return numSelected === numRows; + } - public masterToggle(): void { - this.isAllSelected() ? - this.selection.clear() : - this.dataSource.appsSubject.value.forEach((row: App.AsObject) => this.selection.select(row)); - } + public masterToggle(): void { + this.isAllSelected() ? + this.selection.clear() : + this.dataSource.appsSubject.value.forEach((row: App.AsObject) => this.selection.select(row)); + } - public refreshPage(): void { - this.dataSource.loadApps(this.projectId, this.paginator.pageIndex, this.paginator.pageSize); - } + public refreshPage(): void { + this.dataSource.loadApps(this.projectId, this.paginator.pageIndex, this.paginator.pageSize); + } } diff --git a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.ts index 5c09f51934..5c291bd225 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-grid/owned-project-grid.component.ts @@ -7,162 +7,162 @@ import { WarnDialogComponent } from 'src/app/modules/warn-dialog/warn-dialog.com import { Org } from 'src/app/proto/generated/zitadel/org_pb'; import { Project, ProjectState } from 'src/app/proto/generated/zitadel/project_pb'; import { ManagementService } from 'src/app/services/mgmt.service'; -import { StorageKey, StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ - selector: 'app-owned-project-grid', - templateUrl: './owned-project-grid.component.html', - styleUrls: ['./owned-project-grid.component.scss'], - animations: [ - trigger('cardAnimation', [ - transition('* => *', [ - query('@animate', stagger('100ms', animateChild()), { optional: true }), - ]), - ]), - trigger('animate', [ - transition(':enter', [ - animate('.2s ease-in', keyframes([ - style({ opacity: 0, transform: 'translateY(-50%)', offset: 0 }), - style({ opacity: .5, transform: 'translateY(-10px) scale(1.1)', offset: 0.3 }), - style({ opacity: 1, transform: 'translateY(0)', offset: 1 }), - ])), - ]), - transition(':leave', [ - animate('.2s ease-out', keyframes([ - style({ opacity: 1, transform: 'scale(1.1)', offset: 0 }), - style({ opacity: .5, transform: 'scale(.5)', offset: 0.3 }), - style({ opacity: 0, transform: 'scale(0)', offset: 1 }), - ])), - ]), - ]), - ], + selector: 'app-owned-project-grid', + templateUrl: './owned-project-grid.component.html', + styleUrls: ['./owned-project-grid.component.scss'], + animations: [ + trigger('cardAnimation', [ + transition('* => *', [ + query('@animate', stagger('100ms', animateChild()), { optional: true }), + ]), + ]), + trigger('animate', [ + transition(':enter', [ + animate('.2s ease-in', keyframes([ + style({ opacity: 0, transform: 'translateY(-50%)', offset: 0 }), + style({ opacity: .5, transform: 'translateY(-10px) scale(1.1)', offset: 0.3 }), + style({ opacity: 1, transform: 'translateY(0)', offset: 1 }), + ])), + ]), + transition(':leave', [ + animate('.2s ease-out', keyframes([ + style({ opacity: 1, transform: 'scale(1.1)', offset: 0 }), + style({ opacity: .5, transform: 'scale(.5)', offset: 0.3 }), + style({ opacity: 0, transform: 'scale(0)', offset: 1 }), + ])), + ]), + ]), + ], }) export class OwnedProjectGridComponent implements OnChanges { - @Input() items: Array = []; - public notPinned: Array = []; + @Input() items: Array = []; + public notPinned: Array = []; - @Output() newClicked: EventEmitter = new EventEmitter(); - @Output() changedView: EventEmitter = new EventEmitter(); - @Input() loading: boolean = false; + @Output() newClicked: EventEmitter = new EventEmitter(); + @Output() changedView: EventEmitter = new EventEmitter(); + @Input() loading: boolean = false; - public selection: SelectionModel = new SelectionModel(true, []); + public selection: SelectionModel = new SelectionModel(true, []); - public showNewProject: boolean = false; - public ProjectState: any = ProjectState; - @Input() public zitadelProjectId: string = ''; - constructor( - private router: Router, - private dialog: MatDialog, - private storage: StorageService, - private mgmtService: ManagementService, - private toast: ToastService, - ) { - this.selection.changed.subscribe(selection => { - this.setPrefixedItem('pinned-projects', JSON.stringify( - this.selection.selected.map(item => item.id), - )).then(() => { - selection.added.forEach(item => { - const index = this.notPinned.findIndex(i => i.id === item.id); - this.notPinned.splice(index, 1); - }); - this.notPinned.push(...selection.removed); - }); + public showNewProject: boolean = false; + public ProjectState: any = ProjectState; + @Input() public zitadelProjectId: string = ''; + constructor( + private router: Router, + private dialog: MatDialog, + private storage: StorageService, + private mgmtService: ManagementService, + private toast: ToastService, + ) { + this.selection.changed.subscribe(selection => { + this.setPrefixedItem('pinned-projects', JSON.stringify( + this.selection.selected.map(item => item.id), + )).then(() => { + selection.added.forEach(item => { + const index = this.notPinned.findIndex(i => i.id === item.id); + this.notPinned.splice(index, 1); }); - } + this.notPinned.push(...selection.removed); + }); + }); + } - public selectItem(item: Project.AsObject, event?: any): void { - if (event && !event.target.classList.contains('mat-icon')) { - this.router.navigate(['/projects', item.id]); - } else if (!event) { - this.router.navigate(['/projects', item.id]); - } + public selectItem(item: Project.AsObject, event?: any): void { + if (event && !event.target.classList.contains('mat-icon')) { + this.router.navigate(['/projects', item.id]); + } else if (!event) { + this.router.navigate(['/projects', item.id]); } + } - public addItem(): void { - this.newClicked.emit(true); + public addItem(): void { + this.newClicked.emit(true); + } + + public ngOnChanges(changes: SimpleChanges): void { + if (changes.items.currentValue && changes.items.currentValue.length > 0) { + this.notPinned = Object.assign([], this.items); + this.reorganizeItems(); } + } - public ngOnChanges(changes: SimpleChanges): void { - if (changes.items.currentValue && changes.items.currentValue.length > 0) { - this.notPinned = Object.assign([], this.items); - this.reorganizeItems(); - } - } - - public reorganizeItems(): void { - this.getPrefixedItem('pinned-projects').then(storageEntry => { - if (storageEntry) { - const array: string[] = JSON.parse(storageEntry); - const toSelect: Project.AsObject[] = this.items.filter((item, index) => { - if (array.includes(item.id)) { - return true; - } - }); - this.selection.select(...toSelect); - } + public reorganizeItems(): void { + this.getPrefixedItem('pinned-projects').then(storageEntry => { + if (storageEntry) { + const array: string[] = JSON.parse(storageEntry); + const toSelect: Project.AsObject[] = this.items.filter((item, index) => { + if (array.includes(item.id)) { + return true; + } }); - } + this.selection.select(...toSelect); + } + }); + } - private async getPrefixedItem(key: string): Promise { - const org = this.storage.getItem(StorageKey.organization) as Org.AsObject; - return localStorage.getItem(`${org.id}:${key}`); - } + private async getPrefixedItem(key: string): Promise { + const org = this.storage.getItem(StorageKey.organization, StorageLocation.session) as Org.AsObject; + return localStorage.getItem(`${org.id}:${key}`); + } - private async setPrefixedItem(key: string, value: any): Promise { - const org = this.storage.getItem(StorageKey.organization) as Org.AsObject; - return localStorage.setItem(`${org.id}:${key}`, value); - } + private async setPrefixedItem(key: string, value: any): Promise { + const org = this.storage.getItem(StorageKey.organization, StorageLocation.session) as Org.AsObject; + return localStorage.setItem(`${org.id}:${key}`, value); + } - public navigateToProject(id: string, event: any): void { - if (event && event.srcElement && event.srcElement.localName !== 'button') { - this.router.navigate(['/projects', id]); - } + public navigateToProject(id: string, event: any): void { + if (event && event.srcElement && event.srcElement.localName !== 'button') { + this.router.navigate(['/projects', id]); } + } - public closeGridView(): void { - this.changedView.emit(true); - } + public closeGridView(): void { + this.changedView.emit(true); + } - public toggle(item: Project.AsObject, event: any): void { - event.stopPropagation(); - this.selection.toggle(item); - } + public toggle(item: Project.AsObject, event: any): void { + event.stopPropagation(); + this.selection.toggle(item); + } - public deleteProject(event: any, item: Project.AsObject): void { - event.stopPropagation(); - const dialogRef = this.dialog.open(WarnDialogComponent, { - data: { - confirmKey: 'ACTIONS.DELETE', - cancelKey: 'ACTIONS.CANCEL', - titleKey: 'PROJECT.PAGES.DIALOG.DELETE.TITLE', - descriptionKey: 'PROJECT.PAGES.DIALOG.DELETE.DESCRIPTION', - }, - width: '400px', + public deleteProject(event: any, item: Project.AsObject): void { + event.stopPropagation(); + const dialogRef = this.dialog.open(WarnDialogComponent, { + data: { + confirmKey: 'ACTIONS.DELETE', + cancelKey: 'ACTIONS.CANCEL', + titleKey: 'PROJECT.PAGES.DIALOG.DELETE.TITLE', + descriptionKey: 'PROJECT.PAGES.DIALOG.DELETE.DESCRIPTION', + }, + width: '400px', + }); + + dialogRef.afterClosed().subscribe(resp => { + if (resp && item.id !== this.zitadelProjectId) { + this.mgmtService.removeProject(item.id).then(() => { + this.toast.showInfo('PROJECT.TOAST.DELETED', true); + const index = this.items.findIndex(iter => iter.id === item.id); + if (index > -1) { + this.items.splice(index, 1); + } + + const indexSelection = this.selection.selected.findIndex(iter => iter.id === item.id); + if (indexSelection > -1) { + this.selection.selected.splice(indexSelection, 1); + } + + const indexPinned = this.notPinned.findIndex(iter => iter.id === item.id); + if (indexPinned > -1) { + this.notPinned.splice(indexPinned, 1); + } + }).catch(error => { + this.toast.showError(error); }); - - dialogRef.afterClosed().subscribe(resp => { - if (resp && item.id !== this.zitadelProjectId) { - this.mgmtService.removeProject(item.id).then(() => { - this.toast.showInfo('PROJECT.TOAST.DELETED', true); - const index = this.items.findIndex(iter => iter.id === item.id); - if (index > -1) { - this.items.splice(index, 1); - } - - const indexSelection = this.selection.selected.findIndex(iter => iter.id === item.id); - if (indexSelection > -1) { - this.selection.selected.splice(indexSelection, 1); - } - - const indexPinned = this.notPinned.findIndex(iter => iter.id === item.id); - if (indexPinned > -1) { - this.notPinned.splice(indexPinned, 1); - } - }).catch(error => { - this.toast.showError(error); - }); - } - }); - } + } + }); + } } diff --git a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts index 61109252ad..e2a94ca539 100644 --- a/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts +++ b/console/src/app/pages/projects/owned-projects/owned-project-list/owned-project-list.component.ts @@ -121,7 +121,6 @@ export class OwnedProjectListComponent implements OnInit, OnDestroy { if (resp.details?.viewTimestamp) { this.viewTimestamp = resp.details?.viewTimestamp; } - console.log(resp.resultList); this.dataSource.data = this.ownedProjectList; this.loadingSubject.next(false); }).catch(error => { diff --git a/console/src/app/pages/user-grant-create/user-grant-create.component.ts b/console/src/app/pages/user-grant-create/user-grant-create.component.ts index 4e9f0343a9..a87e305eb0 100644 --- a/console/src/app/pages/user-grant-create/user-grant-create.component.ts +++ b/console/src/app/pages/user-grant-create/user-grant-create.component.ts @@ -9,7 +9,7 @@ import { GrantedProject, Project, Role } from 'src/app/proto/generated/zitadel/p import { User } 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'; -import { StorageKey, StorageService } from 'src/app/services/storage.service'; +import { StorageKey, StorageLocation, StorageService } from 'src/app/services/storage.service'; import { ToastService } from 'src/app/services/toast.service'; @Component({ @@ -94,7 +94,7 @@ export class UserGrantCreateComponent implements OnDestroy { } }); - const temporg = this.storage.getItem(StorageKey.organization); + const temporg = this.storage.getItem(StorageKey.organization, StorageLocation.session); if (temporg) { this.org = temporg; } diff --git a/console/src/app/services/grpc-auth.service.ts b/console/src/app/services/grpc-auth.service.ts index c6145ed1cf..b01ed588dc 100644 --- a/console/src/app/services/grpc-auth.service.ts +++ b/console/src/app/services/grpc-auth.service.ts @@ -187,6 +187,7 @@ export class GrpcAuthService { } public setActiveOrg(org: Org.AsObject): void { + // Set organization in localstorage to get the last used organization in a new tab this.storage.setItem(StorageKey.organization, org, StorageLocation.local); this.storage.setItem(StorageKey.organization, org, StorageLocation.session); this._activeOrgChanged.next(org); diff --git a/console/src/app/services/interceptors/http-org.interceptor.ts b/console/src/app/services/interceptors/http-org.interceptor.ts index 5f26ca010b..d858d2eb2a 100644 --- a/console/src/app/services/interceptors/http-org.interceptor.ts +++ b/console/src/app/services/interceptors/http-org.interceptor.ts @@ -3,10 +3,9 @@ import { OAuthModuleConfig } from 'angular-oauth2-oidc'; import { Observable } from 'rxjs'; import { Org } from '../../proto/generated/zitadel/org_pb'; -import { StorageService } from '../storage.service'; +import { StorageKey, StorageLocation, StorageService } from '../storage.service'; const orgKey = 'x-zitadel-orgid'; -const ORG_STORAGE_KEY = 'organization'; export abstract class HttpOrgInterceptor implements HttpInterceptor { private org!: Org.AsObject; @@ -18,7 +17,7 @@ export abstract class HttpOrgInterceptor implements HttpInterceptor { private storageService: StorageService, protected oauthModuleConfig: OAuthModuleConfig, ) { - const org: Org.AsObject | null = (this.storageService.getItem(ORG_STORAGE_KEY)); + const org: Org.AsObject | null = (this.storageService.getItem(StorageKey.organization, StorageLocation.session)); if (org) { this.org = org; diff --git a/console/src/app/services/interceptors/org.interceptor.ts b/console/src/app/services/interceptors/org.interceptor.ts index ae5a2bf128..521272f714 100644 --- a/console/src/app/services/interceptors/org.interceptor.ts +++ b/console/src/app/services/interceptors/org.interceptor.ts @@ -2,31 +2,30 @@ import { Injectable } from '@angular/core'; import { Request, UnaryInterceptor, UnaryResponse } from 'grpc-web'; import { Org } from 'src/app/proto/generated/zitadel/org_pb'; -import { StorageService } from '../storage.service'; +import { StorageKey, StorageLocation, StorageService } from '../storage.service'; const ORG_HEADER_KEY = 'x-zitadel-orgid'; -const ORG_STORAGE_KEY = 'organization'; @Injectable({ providedIn: 'root' }) export class OrgInterceptor implements UnaryInterceptor { - constructor(private readonly storageService: StorageService) { } + constructor(private readonly storageService: StorageService) { } - public intercept(request: Request, invoker: any): Promise> { - const metadata = request.getMetadata(); + public intercept(request: Request, invoker: any): Promise> { + const metadata = request.getMetadata(); - const org: Org.AsObject | null = (this.storageService.getItem(ORG_STORAGE_KEY)); + const org: Org.AsObject | null = (this.storageService.getItem(StorageKey.organization, StorageLocation.session)); - if (org) { - metadata[ORG_HEADER_KEY] = `${org.id}`; - } - - return invoker(request).then((response: any) => { - return response; - }).catch((error: any) => { - if (error.code === 7 && error.message.startsWith('Organisation doesn\'t exist')) { - this.storageService.removeItem(ORG_STORAGE_KEY); - } - return Promise.reject(error); - }); + if (org) { + metadata[ORG_HEADER_KEY] = `${org.id}`; } + + return invoker(request).then((response: any) => { + return response; + }).catch((error: any) => { + if (error.code === 7 && error.message.startsWith('Organisation doesn\'t exist')) { + this.storageService.removeItem(StorageKey.organization, StorageLocation.session); + } + return Promise.reject(error); + }); + } } diff --git a/console/src/app/services/storage.service.ts b/console/src/app/services/storage.service.ts index 51fa796a17..649bae1fba 100644 --- a/console/src/app/services/storage.service.ts +++ b/console/src/app/services/storage.service.ts @@ -4,48 +4,48 @@ import { OAuthStorage } from 'angular-oauth2-oidc'; const STORAGE_PREFIX = 'zitadel'; @Injectable({ - providedIn: 'root', + providedIn: 'root', }) export class StorageService implements OAuthStorage { - private sessionStorage: Storage = window.sessionStorage; - private localStorage: Storage = window.localStorage; + private sessionStorage: Storage = window.sessionStorage; + private localStorage: Storage = window.localStorage; - constructor() { } + constructor() { } - public setItem(key: string, value: TValue, location: StorageLocation = StorageLocation.session): void { - this.getStorage(location).setItem(this.getPrefixedKey(key), JSON.stringify(value)); + public setItem(key: string, value: TValue, location: StorageLocation = StorageLocation.session): void { + this.getStorage(location).setItem(this.getPrefixedKey(key), JSON.stringify(value)); + } + + public getItem(key: string, location: StorageLocation = StorageLocation.session): TResult | null { + const result = this.getStorage(location).getItem(this.getPrefixedKey(key)); + if (result) { + return JSON.parse(result); } + return null; + } - public getItem(key: string, location: StorageLocation = StorageLocation.session): TResult | null { - const result = this.getStorage(location).getItem(this.getPrefixedKey(key)); - if (result) { - return JSON.parse(result); - } - return null; - } + public removeItem(key: string, location: StorageLocation = StorageLocation.session): void { + this.getStorage(location).removeItem(this.getPrefixedKey(key)); + } - public removeItem(key: string, location: StorageLocation = StorageLocation.session): void { - this.getStorage(location).removeItem(this.getPrefixedKey(key)); - } + public getPrefixedKey(key: string): string { + return `${STORAGE_PREFIX}:${key}`; + } - public getPrefixedKey(key: string): string { - return `${STORAGE_PREFIX}:${key}`; - } - - private getStorage(location: StorageLocation): Storage { - return location === StorageLocation.session - ? this.sessionStorage - : this.localStorage; - } + private getStorage(location: StorageLocation): Storage { + return location === StorageLocation.session + ? this.sessionStorage + : this.localStorage; + } } export class StorageConfig { - clientId: string = ''; - storage: Storage = window.sessionStorage; + clientId: string = ''; + storage: Storage = window.sessionStorage; } export enum StorageKey { - organization = 'organization', + organization = 'organization', } export enum StorageLocation { diff --git a/console/src/assets/i18n/de.json b/console/src/assets/i18n/de.json index 62b4117616..f431a02a78 100644 --- a/console/src/assets/i18n/de.json +++ b/console/src/assets/i18n/de.json @@ -820,7 +820,8 @@ "passwordlessPromptText":"Passwordless Aufforderung", "passwordlessRegistrationDoneText":"Passwordless setzen erfolgreich", "passwordlessRegistrationText":"Passwordless Registrierung", - "passwordlessText":"Passwordless" + "passwordlessText":"Passwordless", + "externalRegistrationUserOverviewText":"Externe Registrierung Benutzer Übersicht" } }, "MESSAGE_TEXTS": { diff --git a/console/src/assets/i18n/en.json b/console/src/assets/i18n/en.json index 07aa62ea3f..e3d0106637 100644 --- a/console/src/assets/i18n/en.json +++ b/console/src/assets/i18n/en.json @@ -822,7 +822,8 @@ "passwordlessPromptText":"Passwordless Prompt", "passwordlessRegistrationDoneText":"Passwordless Registration Done", "passwordlessRegistrationText":"Passwordless Registration", - "passwordlessText":"Passwordless" + "passwordlessText":"Passwordless", + "externalRegistrationUserOverviewText":"External Registration User Overview" } }, "MESSAGE_TEXTS": {