Bladeren bron

Migration Angular to 14

Lukas Cerny 2 jaren geleden
bovenliggende
commit
937cbe6ea8

+ 375 - 220
package-lock.json

@@ -9,15 +9,15 @@
       "version": "0.5.0-SNAPSHOT",
       "dependencies": {
         "@angular/cdk": "^13.3.0",
-        "@angular/common": "^13.3.0",
-        "@angular/compiler": "^13.3.0",
-        "@angular/core": "^13.3.0",
-        "@angular/forms": "^13.3.0",
-        "@angular/localize": "^13.3.0",
+        "@angular/common": "^14.3.0",
+        "@angular/compiler": "^14.3.0",
+        "@angular/core": "^14.3.0",
+        "@angular/forms": "^14.3.0",
+        "@angular/localize": "^14.3.0",
         "@angular/material": "^13.3.0",
-        "@angular/platform-browser": "^13.3.0",
-        "@angular/platform-browser-dynamic": "^13.3.0",
-        "@angular/router": "^13.3.0",
+        "@angular/platform-browser": "^14.3.0",
+        "@angular/platform-browser-dynamic": "^14.3.0",
+        "@angular/router": "^14.3.0",
         "@fortawesome/angular-fontawesome": "^0.10.1",
         "@fortawesome/fontawesome-svg-core": "^1.2.36",
         "@fortawesome/free-solid-svg-icons": "^5.15.4",
@@ -68,7 +68,7 @@
         "@angular-eslint/schematics": "^13.1.0",
         "@angular-eslint/template-parser": "^13.1.0",
         "@angular/cli": "~13.3.0",
-        "@angular/compiler-cli": "~13.3.0",
+        "@angular/compiler-cli": "~14.3.0",
         "@types/jasmine": "~3.6.0",
         "@types/node": "^12.11.1",
         "codelyzer": "^6.0.0",
@@ -684,18 +684,18 @@
       }
     },
     "node_modules/@angular/animations": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.0.tgz",
-      "integrity": "sha512-q7hkImhHCv0QdriR8HOFhsAW05QDmvapcHrBv3y862LUTR5e90/+81RYuwFuKX1lk/sa7LiHlHHWC7oCspzr2Q==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.3.0.tgz",
+      "integrity": "sha512-QoBcIKy1ZiU+4qJsAh5Ls20BupWiXiZzKb0s6L9/dntPt5Msr4Ao289XR2P6O1L+kTsCprH9Kt41zyGQ/bkRqg==",
       "peer": true,
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/core": "13.3.0"
+        "@angular/core": "14.3.0"
       }
     },
     "node_modules/@angular/animations/node_modules/tslib": {
@@ -762,17 +762,17 @@
       }
     },
     "node_modules/@angular/common": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.0.tgz",
-      "integrity": "sha512-yl09TWBmz++Z3MKjzZIwU2wZHiedCn1DjGILjjNXegHFOfINRHiqLhHca4kGWFcTsdvcuEhd9Hk9JATqi45rjg==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.3.0.tgz",
+      "integrity": "sha512-pV9oyG3JhGWeQ+TFB0Qub6a1VZWMNZ6/7zEopvYivdqa5yDLLDSBRWb6P80RuONXyGnM1pa7l5nYopX+r/23GQ==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/core": "13.3.0",
+        "@angular/core": "14.3.0",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
@@ -782,20 +782,28 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/compiler": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.0.tgz",
-      "integrity": "sha512-oeUvaBOVpey2G1I5fWZa3JcyRuBQ3dAeRay5UtQhu1Xw2L8jd2tYkbZb1XOgP9J1/Ma4LO62pjSaOpR2EtO5ww==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.3.0.tgz",
+      "integrity": "sha512-E15Rh0t3vA+bctbKnBCaDmLvc3ix+ZBt6yFZmhZalReQ+KpOlvOJv+L9oiFEgg+rYVl2QdvN7US1fvT0PqswLw==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
+      },
+      "peerDependencies": {
+        "@angular/core": "14.3.0"
+      },
+      "peerDependenciesMeta": {
+        "@angular/core": {
+          "optional": true
+        }
       }
     },
     "node_modules/@angular/compiler-cli": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.0.tgz",
-      "integrity": "sha512-f9m55YejHJNIDTwHyGwf3wn5AvZepDfdAgeJP0Re4XmO1mf/Z9Ob5mJP5Q1yLNhqk0DlURWsZ1CbJqufPXMTbQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz",
+      "integrity": "sha512-eoKpKdQ2X6axMgzcPUMZVYl3bIlTMzMeTo5V29No4BzgiUB+QoOTYGNJZkGRyqTNpwD9uSBJvmT2vG9+eC4ghQ==",
       "dependencies": {
         "@babel/core": "^7.17.2",
         "chokidar": "^3.0.0",
@@ -814,11 +822,11 @@
         "ngcc": "bundles/ngcc/main-ngcc.js"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/compiler": "13.3.0",
-        "typescript": ">=4.4.2 <4.7"
+        "@angular/compiler": "14.3.0",
+        "typescript": ">=4.6.2 <4.9"
       }
     },
     "node_modules/@angular/compiler-cli/node_modules/@babel/core": {
@@ -901,18 +909,18 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/core": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.0.tgz",
-      "integrity": "sha512-ZnuIMEK8YFBtthNqrxapYolMp6qRy4Yp/VG+M11YNiuBp/BoYYDjTaknwO8vu36Cn6372zWjcibsknkZMjdBkg==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.3.0.tgz",
+      "integrity": "sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
         "rxjs": "^6.5.3 || ^7.4.0",
-        "zone.js": "~0.11.4"
+        "zone.js": "~0.11.4 || ~0.12.0"
       }
     },
     "node_modules/@angular/core/node_modules/tslib": {
@@ -921,19 +929,19 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/forms": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.0.tgz",
-      "integrity": "sha512-eBySo+B3/AV+p3SmD15Tg41N+SoxYPyqGnlCTR+jSrFis5ZZNWf0kKpIKhJhW2taRq6K+1o3KcA0W9bnphrZDQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.3.0.tgz",
+      "integrity": "sha512-fBZZC2UFMom2AZPjGQzROPXFWO6kvCsPDKctjJwClVC8PuMrkm+RRyiYRdBbt2qxWHEqOZM2OCQo73xUyZOYHw==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/common": "13.3.0",
-        "@angular/core": "13.3.0",
-        "@angular/platform-browser": "13.3.0",
+        "@angular/common": "14.3.0",
+        "@angular/core": "14.3.0",
+        "@angular/platform-browser": "14.3.0",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
@@ -943,12 +951,12 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/localize": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.0.tgz",
-      "integrity": "sha512-6R5F9BHo9SkzPilRFVpHAtRyuzmuIDM94bBNfk9VrMOBM6yfl+oS+Y7bwIGvmlbk3EulBbt6Us8iLEh2nW0otA==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.3.0.tgz",
+      "integrity": "sha512-YmwlOEGnFonfDrIcWqlxXVFFjd0Q6yXeHGZCBFBfwbtjIseiJJ4UBmkTUgFeq7qlWevSFQzHdQnraFRGZpnMig==",
       "dependencies": {
-        "@babel/core": "7.17.2",
-        "glob": "7.2.0",
+        "@babel/core": "7.18.9",
+        "glob": "8.0.3",
         "yargs": "^17.2.1"
       },
       "bin": {
@@ -957,32 +965,32 @@
         "localize-translate": "tools/bundles/src/translate/cli.js"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/compiler": "13.3.0",
-        "@angular/compiler-cli": "13.3.0"
+        "@angular/compiler": "14.3.0",
+        "@angular/compiler-cli": "14.3.0"
       }
     },
     "node_modules/@angular/localize/node_modules/@babel/core": {
-      "version": "7.17.2",
-      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz",
-      "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==",
+      "version": "7.18.9",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
+      "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
       "dependencies": {
-        "@ampproject/remapping": "^2.0.0",
-        "@babel/code-frame": "^7.16.7",
-        "@babel/generator": "^7.17.0",
-        "@babel/helper-compilation-targets": "^7.16.7",
-        "@babel/helper-module-transforms": "^7.16.7",
-        "@babel/helpers": "^7.17.2",
-        "@babel/parser": "^7.17.0",
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.17.0",
-        "@babel/types": "^7.17.0",
+        "@ampproject/remapping": "^2.1.0",
+        "@babel/code-frame": "^7.18.6",
+        "@babel/generator": "^7.18.9",
+        "@babel/helper-compilation-targets": "^7.18.9",
+        "@babel/helper-module-transforms": "^7.18.9",
+        "@babel/helpers": "^7.18.9",
+        "@babel/parser": "^7.18.9",
+        "@babel/template": "^7.18.6",
+        "@babel/traverse": "^7.18.9",
+        "@babel/types": "^7.18.9",
         "convert-source-map": "^1.7.0",
         "debug": "^4.1.0",
         "gensync": "^1.0.0-beta.2",
-        "json5": "^2.1.2",
+        "json5": "^2.2.1",
         "semver": "^6.3.0"
       },
       "engines": {
@@ -994,32 +1002,88 @@
       }
     },
     "node_modules/@angular/localize/node_modules/@babel/generator": {
-      "version": "7.17.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
-      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
       "dependencies": {
-        "@babel/types": "^7.17.0",
-        "jsesc": "^2.5.1",
-        "source-map": "^0.5.0"
+        "@babel/types": "^7.23.0",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@angular/localize/node_modules/semver": {
-      "version": "6.3.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-      "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
-      "bin": {
-        "semver": "bin/semver.js"
+    "node_modules/@angular/localize/node_modules/@babel/template": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+      "dependencies": {
+        "@babel/code-frame": "^7.22.13",
+        "@babel/parser": "^7.22.15",
+        "@babel/types": "^7.22.15"
+      },
+      "engines": {
+        "node": ">=6.9.0"
       }
     },
-    "node_modules/@angular/localize/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+    "node_modules/@angular/localize/node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=6.0.0"
+      }
+    },
+    "node_modules/@angular/localize/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@angular/localize/node_modules/glob": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+      "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@angular/localize/node_modules/minimatch": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+      "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@angular/localize/node_modules/semver": {
+      "version": "6.3.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+      "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+      "bin": {
+        "semver": "bin/semver.js"
       }
     },
     "node_modules/@angular/material": {
@@ -1045,19 +1109,19 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/platform-browser": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.0.tgz",
-      "integrity": "sha512-OgNVgRtqTPxzItZbJVe4NmSYKDLEKQYjGulStWl4ycQTsOKteF+sJi8gU5BvEU/KQNZItYnIQxMqTsFyS7xlRQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.3.0.tgz",
+      "integrity": "sha512-w9Y3740UmTz44T0Egvc+4QV9sEbO61L+aRHbpkLTJdlEGzHByZvxJmJyBYmdqeyTPwc/Zpy7c02frlpfAlyB7A==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/animations": "13.3.0",
-        "@angular/common": "13.3.0",
-        "@angular/core": "13.3.0"
+        "@angular/animations": "14.3.0",
+        "@angular/common": "14.3.0",
+        "@angular/core": "14.3.0"
       },
       "peerDependenciesMeta": {
         "@angular/animations": {
@@ -1066,20 +1130,20 @@
       }
     },
     "node_modules/@angular/platform-browser-dynamic": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.0.tgz",
-      "integrity": "sha512-7/r79Yn8SDH8t0/fJ26PmScm/S1JZ9hxjC8IoROdyC5xBrSGrp946mIKE/4/813zmF8uPj2lveV9p/XiKTbxSw==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.3.0.tgz",
+      "integrity": "sha512-rneZiMrIiYRhrkQvdL40E2ErKRn4Zdo6EtjBM9pAmWeyoM8oMnOZb9gz5vhrkNWg06kVMVg0yKqluP5How7j3A==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/common": "13.3.0",
-        "@angular/compiler": "13.3.0",
-        "@angular/core": "13.3.0",
-        "@angular/platform-browser": "13.3.0"
+        "@angular/common": "14.3.0",
+        "@angular/compiler": "14.3.0",
+        "@angular/core": "14.3.0",
+        "@angular/platform-browser": "14.3.0"
       }
     },
     "node_modules/@angular/platform-browser-dynamic/node_modules/tslib": {
@@ -1093,19 +1157,19 @@
       "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
     },
     "node_modules/@angular/router": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.0.tgz",
-      "integrity": "sha512-Kz657mtycup+s9emRH66etkBobAF26h3UDXE9pnjUM6MuVTA38P31WyTWKyWJVk8Oruxm/hTHZZBfI88o9/1sA==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.3.0.tgz",
+      "integrity": "sha512-uip0V7w7k7xyxxpTPbr7EuMnYLj3FzJrwkLVJSEw3TMMGHt5VU5t4BBa9veGZOta2C205XFrTAHnp8mD+XYY1w==",
       "dependencies": {
         "tslib": "^2.3.0"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.15.0 || >=16.10.0"
+        "node": "^14.15.0 || >=16.10.0"
       },
       "peerDependencies": {
-        "@angular/common": "13.3.0",
-        "@angular/core": "13.3.0",
-        "@angular/platform-browser": "13.3.0",
+        "@angular/common": "14.3.0",
+        "@angular/core": "14.3.0",
+        "@angular/platform-browser": "14.3.0",
         "rxjs": "^6.5.3 || ^7.4.0"
       }
     },
@@ -1613,13 +1677,26 @@
       }
     },
     "node_modules/@babel/helpers": {
-      "version": "7.17.8",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
-      "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
+      "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
       "dependencies": {
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.17.3",
-        "@babel/types": "^7.17.0"
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.2",
+        "@babel/types": "^7.23.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@babel/helpers/node_modules/@babel/template": {
+      "version": "7.22.15",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+      "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+      "dependencies": {
+        "@babel/code-frame": "^7.22.13",
+        "@babel/parser": "^7.22.15",
+        "@babel/types": "^7.22.15"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -2870,18 +2947,18 @@
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "7.17.3",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
-      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
       "dependencies": {
-        "@babel/code-frame": "^7.16.7",
-        "@babel/generator": "^7.17.3",
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-hoist-variables": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7",
-        "@babel/parser": "^7.17.3",
-        "@babel/types": "^7.17.0",
+        "@babel/code-frame": "^7.22.13",
+        "@babel/generator": "^7.23.0",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/parser": "^7.23.0",
+        "@babel/types": "^7.23.0",
         "debug": "^4.1.0",
         "globals": "^11.1.0"
       },
@@ -2890,24 +2967,30 @@
       }
     },
     "node_modules/@babel/traverse/node_modules/@babel/generator": {
-      "version": "7.17.7",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
-      "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+      "version": "7.23.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+      "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
       "dependencies": {
-        "@babel/types": "^7.17.0",
-        "jsesc": "^2.5.1",
-        "source-map": "^0.5.0"
+        "@babel/types": "^7.23.0",
+        "@jridgewell/gen-mapping": "^0.3.2",
+        "@jridgewell/trace-mapping": "^0.3.17",
+        "jsesc": "^2.5.1"
       },
       "engines": {
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@babel/traverse/node_modules/source-map": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+    "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+      "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+      "dependencies": {
+        "@jridgewell/set-array": "^1.0.1",
+        "@jridgewell/sourcemap-codec": "^1.4.10",
+        "@jridgewell/trace-mapping": "^0.3.9"
+      },
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=6.0.0"
       }
     },
     "node_modules/@babel/types": {
@@ -5738,6 +5821,7 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
       "dependencies": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -6371,7 +6455,8 @@
     "node_modules/concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
     },
     "node_modules/connect": {
       "version": "3.7.0",
@@ -9434,6 +9519,7 @@
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
       "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dev": true,
       "dependencies": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -11790,6 +11876,7 @@
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
       "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
+      "dev": true,
       "dependencies": {
         "brace-expansion": "^1.1.7"
       },
@@ -12989,6 +13076,7 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
       "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
@@ -18447,9 +18535,9 @@
       }
     },
     "@angular/animations": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.3.0.tgz",
-      "integrity": "sha512-q7hkImhHCv0QdriR8HOFhsAW05QDmvapcHrBv3y862LUTR5e90/+81RYuwFuKX1lk/sa7LiHlHHWC7oCspzr2Q==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.3.0.tgz",
+      "integrity": "sha512-QoBcIKy1ZiU+4qJsAh5Ls20BupWiXiZzKb0s6L9/dntPt5Msr4Ao289XR2P6O1L+kTsCprH9Kt41zyGQ/bkRqg==",
       "peer": true,
       "requires": {
         "tslib": "^2.3.0"
@@ -18507,9 +18595,9 @@
       }
     },
     "@angular/common": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.3.0.tgz",
-      "integrity": "sha512-yl09TWBmz++Z3MKjzZIwU2wZHiedCn1DjGILjjNXegHFOfINRHiqLhHca4kGWFcTsdvcuEhd9Hk9JATqi45rjg==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.3.0.tgz",
+      "integrity": "sha512-pV9oyG3JhGWeQ+TFB0Qub6a1VZWMNZ6/7zEopvYivdqa5yDLLDSBRWb6P80RuONXyGnM1pa7l5nYopX+r/23GQ==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18522,9 +18610,9 @@
       }
     },
     "@angular/compiler": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.3.0.tgz",
-      "integrity": "sha512-oeUvaBOVpey2G1I5fWZa3JcyRuBQ3dAeRay5UtQhu1Xw2L8jd2tYkbZb1XOgP9J1/Ma4LO62pjSaOpR2EtO5ww==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.3.0.tgz",
+      "integrity": "sha512-E15Rh0t3vA+bctbKnBCaDmLvc3ix+ZBt6yFZmhZalReQ+KpOlvOJv+L9oiFEgg+rYVl2QdvN7US1fvT0PqswLw==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18537,9 +18625,9 @@
       }
     },
     "@angular/compiler-cli": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.3.0.tgz",
-      "integrity": "sha512-f9m55YejHJNIDTwHyGwf3wn5AvZepDfdAgeJP0Re4XmO1mf/Z9Ob5mJP5Q1yLNhqk0DlURWsZ1CbJqufPXMTbQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.3.0.tgz",
+      "integrity": "sha512-eoKpKdQ2X6axMgzcPUMZVYl3bIlTMzMeTo5V29No4BzgiUB+QoOTYGNJZkGRyqTNpwD9uSBJvmT2vG9+eC4ghQ==",
       "requires": {
         "@babel/core": "^7.17.2",
         "chokidar": "^3.0.0",
@@ -18613,9 +18701,9 @@
       }
     },
     "@angular/core": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.3.0.tgz",
-      "integrity": "sha512-ZnuIMEK8YFBtthNqrxapYolMp6qRy4Yp/VG+M11YNiuBp/BoYYDjTaknwO8vu36Cn6372zWjcibsknkZMjdBkg==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.3.0.tgz",
+      "integrity": "sha512-wYiwItc0Uyn4FWZ/OAx/Ubp2/WrD3EgUJ476y1XI7yATGPF8n9Ld5iCXT08HOvc4eBcYlDfh90kTXR6/MfhzdQ==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18628,9 +18716,9 @@
       }
     },
     "@angular/forms": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.3.0.tgz",
-      "integrity": "sha512-eBySo+B3/AV+p3SmD15Tg41N+SoxYPyqGnlCTR+jSrFis5ZZNWf0kKpIKhJhW2taRq6K+1o3KcA0W9bnphrZDQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.3.0.tgz",
+      "integrity": "sha512-fBZZC2UFMom2AZPjGQzROPXFWO6kvCsPDKctjJwClVC8PuMrkm+RRyiYRdBbt2qxWHEqOZM2OCQo73xUyZOYHw==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18643,56 +18731,100 @@
       }
     },
     "@angular/localize": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-13.3.0.tgz",
-      "integrity": "sha512-6R5F9BHo9SkzPilRFVpHAtRyuzmuIDM94bBNfk9VrMOBM6yfl+oS+Y7bwIGvmlbk3EulBbt6Us8iLEh2nW0otA==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.3.0.tgz",
+      "integrity": "sha512-YmwlOEGnFonfDrIcWqlxXVFFjd0Q6yXeHGZCBFBfwbtjIseiJJ4UBmkTUgFeq7qlWevSFQzHdQnraFRGZpnMig==",
       "requires": {
-        "@babel/core": "7.17.2",
-        "glob": "7.2.0",
+        "@babel/core": "7.18.9",
+        "glob": "8.0.3",
         "yargs": "^17.2.1"
       },
       "dependencies": {
         "@babel/core": {
-          "version": "7.17.2",
-          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.2.tgz",
-          "integrity": "sha512-R3VH5G42VSDolRHyUO4V2cfag8WHcZyxdq5Z/m8Xyb92lW/Erm/6kM+XtRFGf3Mulre3mveni2NHfEUws8wSvw==",
+          "version": "7.18.9",
+          "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz",
+          "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==",
           "requires": {
-            "@ampproject/remapping": "^2.0.0",
-            "@babel/code-frame": "^7.16.7",
-            "@babel/generator": "^7.17.0",
-            "@babel/helper-compilation-targets": "^7.16.7",
-            "@babel/helper-module-transforms": "^7.16.7",
-            "@babel/helpers": "^7.17.2",
-            "@babel/parser": "^7.17.0",
-            "@babel/template": "^7.16.7",
-            "@babel/traverse": "^7.17.0",
-            "@babel/types": "^7.17.0",
+            "@ampproject/remapping": "^2.1.0",
+            "@babel/code-frame": "^7.18.6",
+            "@babel/generator": "^7.18.9",
+            "@babel/helper-compilation-targets": "^7.18.9",
+            "@babel/helper-module-transforms": "^7.18.9",
+            "@babel/helpers": "^7.18.9",
+            "@babel/parser": "^7.18.9",
+            "@babel/template": "^7.18.6",
+            "@babel/traverse": "^7.18.9",
+            "@babel/types": "^7.18.9",
             "convert-source-map": "^1.7.0",
             "debug": "^4.1.0",
             "gensync": "^1.0.0-beta.2",
-            "json5": "^2.1.2",
+            "json5": "^2.2.1",
             "semver": "^6.3.0"
           }
         },
         "@babel/generator": {
-          "version": "7.17.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
-          "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+          "version": "7.23.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+          "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
           "requires": {
-            "@babel/types": "^7.17.0",
-            "jsesc": "^2.5.1",
-            "source-map": "^0.5.0"
+            "@babel/types": "^7.23.0",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "@jridgewell/trace-mapping": "^0.3.17",
+            "jsesc": "^2.5.1"
           }
         },
-        "semver": {
-          "version": "6.3.0",
-          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
-          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+        "@babel/template": {
+          "version": "7.22.15",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+          "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+          "requires": {
+            "@babel/code-frame": "^7.22.13",
+            "@babel/parser": "^7.22.15",
+            "@babel/types": "^7.22.15"
+          }
         },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        "@jridgewell/gen-mapping": {
+          "version": "0.3.3",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+          "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+          "requires": {
+            "@jridgewell/set-array": "^1.0.1",
+            "@jridgewell/sourcemap-codec": "^1.4.10",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
+        },
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.6",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
+          "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "semver": {
+          "version": "6.3.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+          "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
         }
       }
     },
@@ -18712,9 +18844,9 @@
       }
     },
     "@angular/platform-browser": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.3.0.tgz",
-      "integrity": "sha512-OgNVgRtqTPxzItZbJVe4NmSYKDLEKQYjGulStWl4ycQTsOKteF+sJi8gU5BvEU/KQNZItYnIQxMqTsFyS7xlRQ==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.3.0.tgz",
+      "integrity": "sha512-w9Y3740UmTz44T0Egvc+4QV9sEbO61L+aRHbpkLTJdlEGzHByZvxJmJyBYmdqeyTPwc/Zpy7c02frlpfAlyB7A==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18727,9 +18859,9 @@
       }
     },
     "@angular/platform-browser-dynamic": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.3.0.tgz",
-      "integrity": "sha512-7/r79Yn8SDH8t0/fJ26PmScm/S1JZ9hxjC8IoROdyC5xBrSGrp946mIKE/4/813zmF8uPj2lveV9p/XiKTbxSw==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.3.0.tgz",
+      "integrity": "sha512-rneZiMrIiYRhrkQvdL40E2ErKRn4Zdo6EtjBM9pAmWeyoM8oMnOZb9gz5vhrkNWg06kVMVg0yKqluP5How7j3A==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -18742,9 +18874,9 @@
       }
     },
     "@angular/router": {
-      "version": "13.3.0",
-      "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.3.0.tgz",
-      "integrity": "sha512-Kz657mtycup+s9emRH66etkBobAF26h3UDXE9pnjUM6MuVTA38P31WyTWKyWJVk8Oruxm/hTHZZBfI88o9/1sA==",
+      "version": "14.3.0",
+      "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.3.0.tgz",
+      "integrity": "sha512-uip0V7w7k7xyxxpTPbr7EuMnYLj3FzJrwkLVJSEw3TMMGHt5VU5t4BBa9veGZOta2C205XFrTAHnp8mD+XYY1w==",
       "requires": {
         "tslib": "^2.3.0"
       },
@@ -19137,13 +19269,25 @@
       }
     },
     "@babel/helpers": {
-      "version": "7.17.8",
-      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz",
-      "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==",
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz",
+      "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==",
       "requires": {
-        "@babel/template": "^7.16.7",
-        "@babel/traverse": "^7.17.3",
-        "@babel/types": "^7.17.0"
+        "@babel/template": "^7.22.15",
+        "@babel/traverse": "^7.23.2",
+        "@babel/types": "^7.23.0"
+      },
+      "dependencies": {
+        "@babel/template": {
+          "version": "7.22.15",
+          "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz",
+          "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+          "requires": {
+            "@babel/code-frame": "^7.22.13",
+            "@babel/parser": "^7.22.15",
+            "@babel/types": "^7.22.15"
+          }
+        }
       }
     },
     "@babel/highlight": {
@@ -19987,36 +20131,42 @@
       }
     },
     "@babel/traverse": {
-      "version": "7.17.3",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz",
-      "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==",
+      "version": "7.23.2",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz",
+      "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==",
       "requires": {
-        "@babel/code-frame": "^7.16.7",
-        "@babel/generator": "^7.17.3",
-        "@babel/helper-environment-visitor": "^7.16.7",
-        "@babel/helper-function-name": "^7.16.7",
-        "@babel/helper-hoist-variables": "^7.16.7",
-        "@babel/helper-split-export-declaration": "^7.16.7",
-        "@babel/parser": "^7.17.3",
-        "@babel/types": "^7.17.0",
+        "@babel/code-frame": "^7.22.13",
+        "@babel/generator": "^7.23.0",
+        "@babel/helper-environment-visitor": "^7.22.20",
+        "@babel/helper-function-name": "^7.23.0",
+        "@babel/helper-hoist-variables": "^7.22.5",
+        "@babel/helper-split-export-declaration": "^7.22.6",
+        "@babel/parser": "^7.23.0",
+        "@babel/types": "^7.23.0",
         "debug": "^4.1.0",
         "globals": "^11.1.0"
       },
       "dependencies": {
         "@babel/generator": {
-          "version": "7.17.7",
-          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz",
-          "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==",
+          "version": "7.23.0",
+          "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz",
+          "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==",
           "requires": {
-            "@babel/types": "^7.17.0",
-            "jsesc": "^2.5.1",
-            "source-map": "^0.5.0"
+            "@babel/types": "^7.23.0",
+            "@jridgewell/gen-mapping": "^0.3.2",
+            "@jridgewell/trace-mapping": "^0.3.17",
+            "jsesc": "^2.5.1"
           }
         },
-        "source-map": {
-          "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
-          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w="
+        "@jridgewell/gen-mapping": {
+          "version": "0.3.3",
+          "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+          "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+          "requires": {
+            "@jridgewell/set-array": "^1.0.1",
+            "@jridgewell/sourcemap-codec": "^1.4.10",
+            "@jridgewell/trace-mapping": "^0.3.9"
+          }
         }
       }
     },
@@ -22200,6 +22350,7 @@
       "version": "1.1.11",
       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
       "requires": {
         "balanced-match": "^1.0.0",
         "concat-map": "0.0.1"
@@ -22680,7 +22831,8 @@
     "concat-map": {
       "version": "0.0.1",
       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
-      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
     },
     "connect": {
       "version": "3.7.0",
@@ -24965,6 +25117,7 @@
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
       "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+      "dev": true,
       "requires": {
         "fs.realpath": "^1.0.0",
         "inflight": "^1.0.4",
@@ -26714,6 +26867,7 @@
       "version": "3.0.5",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz",
       "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==",
+      "dev": true,
       "requires": {
         "brace-expansion": "^1.1.7"
       }
@@ -27638,7 +27792,8 @@
     "path-is-absolute": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
-      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
     },
     "path-is-inside": {
       "version": "1.0.2",

+ 10 - 10
package.json

@@ -13,15 +13,15 @@
   "private": true,
   "dependencies": {
     "@angular/cdk": "^13.3.0",
-    "@angular/common": "^13.3.0",
-    "@angular/compiler": "^13.3.0",
-    "@angular/core": "^13.3.0",
-    "@angular/forms": "^13.3.0",
-    "@angular/localize": "^13.3.0",
+    "@angular/common": "^14.3.0",
+    "@angular/compiler": "^14.3.0",
+    "@angular/core": "^14.3.0",
+    "@angular/forms": "^14.3.0",
+    "@angular/localize": "^14.3.0",
     "@angular/material": "^13.3.0",
-    "@angular/platform-browser": "^13.3.0",
-    "@angular/platform-browser-dynamic": "^13.3.0",
-    "@angular/router": "^13.3.0",
+    "@angular/platform-browser": "^14.3.0",
+    "@angular/platform-browser-dynamic": "^14.3.0",
+    "@angular/router": "^14.3.0",
     "@fortawesome/angular-fontawesome": "^0.10.1",
     "@fortawesome/fontawesome-svg-core": "^1.2.36",
     "@fortawesome/free-solid-svg-icons": "^5.15.4",
@@ -72,7 +72,7 @@
     "@angular-eslint/schematics": "^13.1.0",
     "@angular-eslint/template-parser": "^13.1.0",
     "@angular/cli": "~13.3.0",
-    "@angular/compiler-cli": "~13.3.0",
+    "@angular/compiler-cli": "~14.3.0",
     "@types/jasmine": "~3.6.0",
     "@types/node": "^12.11.1",
     "codelyzer": "^6.0.0",
@@ -89,4 +89,4 @@
     "tslint": "~6.1.0",
     "typescript": "4.8.4"
   }
-}
+}

+ 3 - 3
src/app/dashboard/components/position-insert-popup/position-insert-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {FormArray, UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {ManagementService} from '../../../shared/api/endpoints/services/management.service';
 import * as moment from 'moment-timezone';
 import {map} from 'rxjs/operators';
@@ -14,14 +14,14 @@ import {SensorsService} from '../../../shared/api/endpoints/services/sensors.ser
 })
 export class PositionInsertPopupComponent implements OnInit {
 
-  insertForm: FormGroup;
+  insertForm: UntypedFormGroup;
 
   @Input() isVisible;
   @Input() unitId;
   @Output() isVisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private sensorService: SensorsService,
     private toastService: ToastService,
   ) {

+ 9 - 9
src/app/dashboard/components/sensor-insert-popup/sensor-insert-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {ManagementService} from '../../../shared/api/endpoints/services/management.service';
 import {InsertUnit} from '../../../shared/api/endpoints/models/insert-unit';
 import {InsertSensor} from '../../../shared/api/endpoints/models/insert-sensor';
@@ -16,8 +16,8 @@ import {Phenomenon} from '../../../shared/api/endpoints/models/phenomenon';
 })
 export class SensorInsertPopupComponent implements OnInit {
 
-  insertForm: FormGroup;
-  items: FormArray;
+  insertForm: UntypedFormGroup;
+  items: UntypedFormArray;
   sensors = 0;
 
   @Input() phenomenons: Phenomenon[];
@@ -29,7 +29,7 @@ export class SensorInsertPopupComponent implements OnInit {
     new EventEmitter<{unit: InsertUnit, sensors: InsertSensor[]}>()
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private managementService: ManagementService,
     private toastService: ToastService
   ) {
@@ -52,7 +52,7 @@ export class SensorInsertPopupComponent implements OnInit {
   /**
    * Prepare form object for sensor
    */
-  createSensor(): FormGroup {
+  createSensor(): UntypedFormGroup {
     return this.formBuilder.group({
       sensorId: ['', Validators.required],
       sensorName: ['', Validators.required],
@@ -65,7 +65,7 @@ export class SensorInsertPopupComponent implements OnInit {
    * Add sensor to form
    */
   addSensor(): void {
-    this.items = this.insertForm.get('sensors') as FormArray;
+    this.items = this.insertForm.get('sensors') as UntypedFormArray;
     this.items.push(this.createSensor());
     this.sensors++;
   }
@@ -74,7 +74,7 @@ export class SensorInsertPopupComponent implements OnInit {
    * Remove last sensor from form
    */
   removeSensor() {
-    this.items = this.insertForm.get('sensors') as FormArray;
+    this.items = this.insertForm.get('sensors') as UntypedFormArray;
     this.items.removeAt(this.items.length - 1);
     this.sensors--;
   }
@@ -83,7 +83,7 @@ export class SensorInsertPopupComponent implements OnInit {
    * Clearing form
    */
   clearFormArray() {
-    const frmArray = this.insertForm?.get('sensors') as FormArray;
+    const frmArray = this.insertForm?.get('sensors') as UntypedFormArray;
     if (frmArray) {
       frmArray.clear();
     }
@@ -100,7 +100,7 @@ export class SensorInsertPopupComponent implements OnInit {
         unit_id: this.unit.unitId
       }
       const sensors: InsertSensor[] = [];
-      const frmArray = this.insertForm?.get('sensors') as FormArray;
+      const frmArray = this.insertForm?.get('sensors') as UntypedFormArray;
 
       frmArray.controls.forEach(control => {
         if (control.get('sensorId').value !== '') {

+ 3 - 3
src/app/dashboard/components/sensor-popup/sensor-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {ManagementService} from '../../../shared/api/endpoints/services/management.service';
 import {map} from 'rxjs/operators';
 import {HttpResponse} from '@angular/common/http';
@@ -14,7 +14,7 @@ import {SensorType} from '../../../shared/api/endpoints/models/sensor-type';
 })
 export class SensorPopupComponent implements OnInit {
 
-  insertForm: FormGroup;
+  insertForm: UntypedFormGroup;
 
   @Input() isVisible;
   @Input() sensor: Sensor;
@@ -24,7 +24,7 @@ export class SensorPopupComponent implements OnInit {
   @Output() isVisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private managementService: ManagementService,
     private toastService: ToastService
   ) {

+ 3 - 3
src/app/dashboard/components/unit-popup/unit-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {ManagementService} from '../../../shared/api/endpoints/services/management.service';
 import {ToastService} from '../../../shared/services/toast.service';
 
@@ -10,14 +10,14 @@ import {ToastService} from '../../../shared/services/toast.service';
 })
 export class UnitPopupComponent implements OnInit {
 
-  insertForm: FormGroup;
+  insertForm: UntypedFormGroup;
 
   @Input() isVisible;
   @Input() unit;
   @Output() isVisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private managementService: ManagementService,
     private toastService: ToastService
   ) {

+ 3 - 3
src/app/login/components/login.component.ts

@@ -1,5 +1,5 @@
 import {Component, OnDestroy, OnInit} from '@angular/core';
-import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {switchMap} from 'rxjs/operators';
 import {of, Subscription} from 'rxjs';
 import {AuthService} from '../../auth/services/auth.service';
@@ -12,11 +12,11 @@ import {Router} from '@angular/router';
 })
 export class LoginComponent implements OnInit, OnDestroy {
 
-  loginForm: FormGroup;
+  loginForm: UntypedFormGroup;
   subscription: Subscription[] = [];
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private authService: AuthService,
     private router: Router
   ) {

+ 5 - 5
src/app/shared/nav-bar/components/data-download/data-download-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
+import { UntypedFormArray, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';
 import {HttpResponse} from '@angular/common/http';
 import {map} from 'rxjs/operators';
 import {ObservationService} from '../../../api/endpoints/services/observation.service';
@@ -20,8 +20,8 @@ import { ExportStyle } from 'src/app/shared/api/endpoints/models';
 })
 export class DataDownloadPopupComponent implements OnInit {
 
-  downloadForm: FormGroup;
-  items: FormArray;
+  downloadForm: UntypedFormGroup;
+  items: UntypedFormArray;
   dateFrom: Date = moment().hour(0).minutes(0).subtract(1, 'days').toDate();
   dateTo: Date = moment().toDate();
   selectedUnits: Unit[];
@@ -34,7 +34,7 @@ export class DataDownloadPopupComponent implements OnInit {
   @Input() units: Unit[];
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private observationService: ObservationService,
     private dataService: DataService,
     private sensorsService: SensorsService,
@@ -55,7 +55,7 @@ export class DataDownloadPopupComponent implements OnInit {
       from: [this.dateFrom, Validators.required],
       to: [this.dateTo, Validators.required],
       sensor_id: [null, Validators.required],
-      selectedUnits: new FormControl([]),
+      selectedUnits: new UntypedFormControl([]),
       exportStyleId: [null, Validators.required]
     });
 

+ 9 - 9
src/app/shared/nav-bar/components/unit-insert-popup/unit-insert-popup.component.ts

@@ -1,5 +1,5 @@
 import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';
-import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {HttpResponse} from '@angular/common/http';
 import {map} from 'rxjs/operators';
 import {ManagementService} from '../../../api/endpoints/services/management.service';
@@ -18,8 +18,8 @@ import {SensorType} from '../../../api/endpoints/models/sensor-type';
 })
 export class UnitInsertPopupComponent implements OnInit {
 
-  insertForm: FormGroup;
-  items: FormArray;
+  insertForm: UntypedFormGroup;
+  items: UntypedFormArray;
   sensors = 0;
 
   @Input()phenomenons: Phenomenon[];
@@ -30,7 +30,7 @@ export class UnitInsertPopupComponent implements OnInit {
   @Input() sensorTypes: SensorType[];
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private managementService: ManagementService,
     private toastService: ToastService,
     private sensorService: SensorsService
@@ -58,7 +58,7 @@ export class UnitInsertPopupComponent implements OnInit {
   /**
    * Create formBuilder for sensor
    */
-  createSensor(): FormGroup {
+  createSensor(): UntypedFormGroup {
     return this.formBuilder.group({
       sensorId: ['', Validators.required],
       sensorName: ['', Validators.required],
@@ -71,7 +71,7 @@ export class UnitInsertPopupComponent implements OnInit {
    * Add sensor to form
    */
   addSensor(): void {
-    this.items = this.insertForm.get('sensors') as FormArray;
+    this.items = this.insertForm.get('sensors') as UntypedFormArray;
     this.items.push(this.createSensor());
     this.sensors++;
   }
@@ -80,7 +80,7 @@ export class UnitInsertPopupComponent implements OnInit {
    * Remove last sensor from form
    */
   removeSensor() {
-    this.items = this.insertForm.get('sensors') as FormArray;
+    this.items = this.insertForm.get('sensors') as UntypedFormArray;
     this.items.removeAt(this.items.length - 1);
     this.sensors--;
   }
@@ -89,7 +89,7 @@ export class UnitInsertPopupComponent implements OnInit {
    * Clear form
    */
   clearFormArray() {
-    const frmArray = this.insertForm?.get('sensors') as FormArray;
+    const frmArray = this.insertForm?.get('sensors') as UntypedFormArray;
     if (frmArray) {
       frmArray.clear();
     }
@@ -108,7 +108,7 @@ export class UnitInsertPopupComponent implements OnInit {
         description: this.insertForm.controls.unitDescription.value
       };
       const sensors: InsertSensor[] = [];
-      const frmArray = this.insertForm?.get('sensors') as FormArray;
+      const frmArray = this.insertForm?.get('sensors') as UntypedFormArray;
 
       // get sensors from form
       frmArray.controls.forEach(control => {

+ 3 - 3
src/app/shared/nav-bar/components/user-insert-popup/user-insert-popup.component.ts

@@ -4,7 +4,7 @@ import {GroupService} from '../../../api/endpoints/services/group.service';
 import {Group} from '../../../api/endpoints/models/group';
 import {AdministrationService} from '../../../api/endpoints/services/administration.service';
 import {Right} from '../../../api/endpoints/models/right';
-import {FormBuilder, FormGroup, Validators} from '@angular/forms';
+import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms';
 import {HttpResponse} from '@angular/common/http';
 import {ToastService} from '../../../services/toast.service';
 import {Subscription} from 'rxjs';
@@ -18,13 +18,13 @@ export class UserInsertPopupComponent implements OnInit, OnDestroy {
 
   groups: Group[];
   rights: Right[];
-  insertForm: FormGroup;
+  insertForm: UntypedFormGroup;
   subscription: Subscription[] = [];
   @Input() isVisible;
   @Output() isVisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
 
   constructor(
-    private formBuilder: FormBuilder,
+    private formBuilder: UntypedFormBuilder,
     private groupService: GroupService,
     private administrationService: AdministrationService,
     private toastService: ToastService