From 059c35a8dcec8aa0292f629c14fcd218d6254b8e Mon Sep 17 00:00:00 2001 From: David Burke Date: Mon, 20 Jun 2022 09:39:41 -0400 Subject: [PATCH 1/4] Mark which modules to preload, prevents loading unnecessary modules such as the subscription module when subscriptions aren't enabled Fixes #220 --- src/app/app-routing.module.ts | 12 ++++++++++++ src/app/preloadingStrategy.ts | 29 +++++++++++++++------------- src/app/profile/profile.component.ts | 4 ++-- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index b6a274cb..82cee2f0 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -10,6 +10,9 @@ export const routes: Routes = [ loadChildren: () => import("./home/home.module").then((m) => m.HomeModule), pathMatch: "full", canActivate: [IsLoggedInGuard], + data: { + preload: true, + } }, { path: "organizations/new", @@ -33,6 +36,9 @@ export const routes: Routes = [ import("./profile/profile.module").then((m) => m.ProfileModule), canActivate: [IsLoggedInGuard], title: "Profile", + data: { + preload: true, + } }, { path: "register", @@ -78,6 +84,9 @@ export const routes: Routes = [ loadChildren: () => import("./issues/issues.module").then((m) => m.IssuesModule), title: "Issues", + data: { + preload: true, + } }, { path: "uptime-monitors", @@ -104,6 +113,9 @@ export const routes: Routes = [ loadChildren: () => import("./settings/settings.module").then((m) => m.SettingsModule), title: "Settings", + data: { + preload: true, + } }, { path: "performance", diff --git a/src/app/preloadingStrategy.ts b/src/app/preloadingStrategy.ts index 276a77c4..3059d5e9 100644 --- a/src/app/preloadingStrategy.ts +++ b/src/app/preloadingStrategy.ts @@ -18,22 +18,25 @@ export class CustomPreloadingStrategy implements PreloadingStrategy { /** Guess if user would prefer to preload based on network/device */ export function shouldPreload(route: Route): boolean { - const conn = navigator.connection; - if (conn) { - if ((conn as any).saveData) { - return false; - } - - if ("effectiveType" in navigator.connection) { - if (["slow-2g", "2g", "3g"].includes((conn as any).effectiveType)) { + if (route.data && route.data.preload) { + const conn = navigator.connection; + if (conn) { + if ((conn as any).saveData) { return false; } - return true; - } - if (/Android|iPhone/i.test(navigator.userAgent)) { - return false; + if ("effectiveType" in navigator.connection) { + if (["slow-2g", "2g", "3g"].includes((conn as any).effectiveType)) { + return false; + } + return true; + } + + if (/Android|iPhone/i.test(navigator.userAgent)) { + return false; + } } + return true; } - return true; + return false; } diff --git a/src/app/profile/profile.component.ts b/src/app/profile/profile.component.ts index eceb432f..415a8b54 100644 --- a/src/app/profile/profile.component.ts +++ b/src/app/profile/profile.component.ts @@ -13,8 +13,8 @@ import { tap, filter, map } from "rxjs/operators"; export class ProfileComponent { user$ = this.userService.userDetails$; isLoggedIn$ = this.auth.isLoggedIn; - activeOrganizationDetail$ = this.organizationService - .activeOrganizationDetail$; + activeOrganizationDetail$ = + this.organizationService.activeOrganizationDetail$; constructor( private userService: UserService, From 43fb8e796bb1be99e8c04e81e49e2a78ebcd0833 Mon Sep 17 00:00:00 2001 From: David Burke Date: Mon, 20 Jun 2022 17:44:34 -0400 Subject: [PATCH 2/4] Update packages --- package-lock.json | 2494 +++++++++++++++++++++++++++++++++++---------- package.json | 48 +- 2 files changed, 1964 insertions(+), 578 deletions(-) diff --git a/package-lock.json b/package-lock.json index c1a40268..2493735e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,17 +8,17 @@ "name": "glitchtip-frontend", "version": "0.0.0", "dependencies": { - "@angular/animations": "^14.0.1", - "@angular/cdk": "^14.0.1", - "@angular/common": "^14.0.1", - "@angular/compiler": "^14.0.1", - "@angular/core": "^14.0.1", - "@angular/forms": "^14.0.1", - "@angular/material": "^14.0.1", - "@angular/platform-browser": "^14.0.1", - "@angular/platform-browser-dynamic": "^14.0.1", - "@angular/platform-server": "^14.0.1", - "@angular/router": "^14.0.1", + "@angular/animations": "^14.0.2", + "@angular/cdk": "^14.0.2", + "@angular/common": "^14.0.2", + "@angular/compiler": "^14.0.2", + "@angular/core": "^14.0.2", + "@angular/forms": "^14.0.2", + "@angular/material": "^14.0.2", + "@angular/platform-browser": "^14.0.2", + "@angular/platform-browser-dynamic": "^14.0.2", + "@angular/platform-server": "^14.0.2", + "@angular/router": "^14.0.2", "@braintree/sanitize-url": "^6.0.0", "@browser-logos/chrome": "^1.0.18", "@browser-logos/chromium": "^1.1.5", @@ -29,28 +29,28 @@ "@browser-logos/safari": "^2.0.0", "@browser-logos/safari-ios": "^1.0.15", "@egoistdeveloper/operating-system-logos": "~1.0.0", - "@micro-sentry/angular": "^6.1.0", - "@stripe/stripe-js": "^1.29.0", + "@micro-sentry/angular": "^6.1.1", + "@stripe/stripe-js": "^1.32.0", "@swimlane/ngx-charts": "^20.1.0", "cborg": "^1.9.4", "date-fns": "^2.28.0", - "material-icons": "^1.11.1", - "ngx-markdown": "^13.1.0", + "material-icons": "^1.11.2", + "ngx-markdown": "^14.0.0", "qrcode": "^1.5.0", "rxjs": "^7.5.5", "tslib": "^2.0.0", "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.0.1", - "@angular-eslint/builder": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.0", - "@angular-eslint/schematics": "14.0.0-alpha.0", - "@angular-eslint/template-parser": "14.0.0-alpha.0", - "@angular/cli": "^14.0.1", - "@angular/compiler-cli": "^14.0.1", - "@angular/language-service": "^14.0.1", + "@angular-devkit/build-angular": "^14.0.2", + "@angular-eslint/builder": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", + "@angular-eslint/schematics": "14.0.0-alpha.3", + "@angular-eslint/template-parser": "14.0.0-alpha.3", + "@angular/cli": "^14.0.2", + "@angular/compiler-cli": "^14.0.2", + "@angular/language-service": "^14.0.2", "@babel/core": "^7.7.2", "@compodoc/compodoc": "^1.1.19", "@cypress/webpack-preprocessor": "^5.12.0", @@ -111,12 +111,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1400.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.1.tgz", - "integrity": "sha512-GJ4hWLIJmhCq4nKNN9c4xocKtCt28muJxN88Wna292SOIaNQuNY5MP9860/4IWRGCJTeJH7LyCc4j/3V0zWrSQ==", + "version": "0.1400.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.2.tgz", + "integrity": "sha512-L+QIaN17M2APAJ4v3eVOSohqhnqTloDjT4omdaPA9XZpob+WQ6+ALCvMuEczCRrGBskXiOsBgXeyMjGBtq1+pw==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "rxjs": "6.6.7" }, "engines": { @@ -126,9 +126,9 @@ } }, "node_modules/@angular-devkit/architect/node_modules/@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -186,15 +186,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.1.tgz", - "integrity": "sha512-qglGJV4IH4VOsTXTErYdjtKQLChS4k+tdY22A7CYnZKXR5v+jh4tX8/idb4UfA8ScVONgsBQKRO9VIGK425Hww==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.2.tgz", + "integrity": "sha512-oVjF+Q9lw1Gk93z7zIGiv4mxiyDmYPKtW4xLCL38ccCiSwunzG5/hayvmtJB+wasKznCU+DpxeQXR/Q1qwGlEw==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1400.1", - "@angular-devkit/build-webpack": "0.1400.1", - "@angular-devkit/core": "14.0.1", + "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/build-webpack": "0.1400.2", + "@angular-devkit/core": "14.0.2", "@babel/core": "7.17.10", "@babel/generator": "7.17.10", "@babel/helper-annotate-as-pure": "7.16.7", @@ -205,7 +205,7 @@ "@babel/runtime": "7.17.9", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.0.1", + "@ngtools/webpack": "14.0.2", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -294,9 +294,9 @@ } }, "node_modules/@angular-devkit/build-angular/node_modules/@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -458,21 +458,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/@angular-devkit/build-angular/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -492,12 +477,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1400.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.1.tgz", - "integrity": "sha512-Q5KMw/7y34GonSx3rEByMvnwu3JLeSAP94Th2PzVD2NZFmINujuzbZ35FnduuxAjNDFWGcrykfMwZyIew7selw==", + "version": "0.1400.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.2.tgz", + "integrity": "sha512-RikPXn5S7iTqwfGnApxGRQG0NS8UU0Vo1Smme4Dd7JpXAHeKE65OyN/vO29UaIT8XynjZK3A2rbLE6Mw5RcQjA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1400.1", + "@angular-devkit/architect": "0.1400.2", "rxjs": "6.6.7" }, "engines": { @@ -610,9 +595,9 @@ "dev": true }, "node_modules/@angular-eslint/builder": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.0.tgz", - "integrity": "sha512-l8UjXN91aqmoemIvzeLrfBb2+S9w1J+5jOYdjRfDLSY3uzGEG5AvlBnUJncH2wXHjj4D0yQnEoupUeoJcscWRA==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.3.tgz", + "integrity": "sha512-J3/Pj0erEkmRCSpVcsTWIg4riIADkfbC+Z+iGeS0cN3Ix6pyXk6XPDXoUCHBB0C55RCpeCYuJIFqJuLfEKIfZw==", "dev": true, "dependencies": { "@nrwl/devkit": "13.1.3" @@ -623,19 +608,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0-alpha.0.tgz", - "integrity": "sha512-WBjPK4dloZ1XODBwqCJr8f8SSH7gnVo4ShpIr0bc2GZec2E2ubLY/iiv+VKgcyzKlNKOCRB8cOUXxyQMiJEzdg==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0-alpha.3.tgz", + "integrity": "sha512-7WzTJQfuq13Wz2RISCULt/nmylpSO6XNWMp+SYDGXQooLK8XMrzWeZdTaInebcBMv5Xc8jUEbeuVHw5WdeXciA==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.0.tgz", - "integrity": "sha512-1ybSXpH5UYwUBMPt5nu9B6zNXB8xQm5lkOqey8tkdi+MrM9sITwbXBUkZhAbbqPIcFXGHZeV7zoMOZVqmuLi7A==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.3.tgz", + "integrity": "sha512-vGKiKoWTZITcj6VMdfEhRpQOgzYX53QXqEfqq1deEybNxJsmSHD5i7niLw6l3AgK8o18j2HZfMyz39MItiQ/Rg==", "dev": true, "dependencies": { - "@angular-eslint/utils": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0" + "@angular-eslint/utils": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -643,15 +628,15 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.0.tgz", - "integrity": "sha512-gDMQ/PsJIwrk56/8l9ubpxf/uRMF45PIcczU80vLnXk0lVIfQDCcwktrnVTF/9C/ReKlp4FWOEH9RlY5Nfng0A==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.3.tgz", + "integrity": "sha512-AoOyyLOpRZPph35wwBI1BOmBaI5VIBOdxWmOlCZsP2H5iaBiF+wQTARUu8swQVLKZ2arKKSP0ufAfc5E2FBcZA==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0", - "aria-query": "^4.2.2", - "axobject-query": "^2.2.0" + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1", + "aria-query": "5.0.0", + "axobject-query": "3.0.1" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -659,12 +644,12 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -678,12 +663,12 @@ } }, "node_modules/@angular-eslint/eslint-plugin/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -697,28 +682,28 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.0.tgz", - "integrity": "sha512-yJxpUATZs4L4vjU1JwiRzekWeNvNUpSKMB41wrAsJCs1yBv7yrQiI0jABmzDh0Esbxq2BqxBJQtxI9OFr0lVig==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.3.tgz", + "integrity": "sha512-swBkQ4/9itzEPTvPbBw1H02pMrZIPly5d6fPUh71+xhPTTBvjFm525AyVMhg6N6uk9ai3mDgWyek8eaz7NHZgA==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.0", + "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" }, "peerDependencies": { - "@angular/cli": ">= 14.0.0-rc.0 < 15.0.0" + "@angular/cli": ">= 14.0.0 < 15.0.0" } }, "node_modules/@angular-eslint/template-parser": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.0.tgz", - "integrity": "sha512-3Q10T/ng6pGcr6MURLTWOoxA7W8DvDNAsSMVWl3w4zGed0vm732LqY8uoQ519IAzDEIKKXEPITBzMBmYWOvOww==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.3.tgz", + "integrity": "sha512-twCZoBFuAgSZK6lKiNRdD738f99OSaQEaykf03QJAjo501Ib/q85cP2D7ZQzk03nT+xSODqUEaEPnuu/kE59nQ==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", "eslint-scope": "^5.1.0" }, "peerDependencies": { @@ -727,13 +712,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.0.tgz", - "integrity": "sha512-1QLz45dhD2z6RemSlWjRWPnGIcoxZQPzXK+BP6y29oUcUchh+Nxmo0U0H7cGiy5by5LXNv7bl9spwVmhf8OUBw==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.3.tgz", + "integrity": "sha512-py2oFSDdiY/QJmBKg0wbbO4Caf18uioHAivMXdXfIyFHM6XGoiI1DBUUCmNrCq6sbYanD1oO0BtRFD+Gv6y+vg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0" + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0", @@ -741,12 +726,12 @@ } }, "node_modules/@angular-eslint/utils/node_modules/@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -760,9 +745,9 @@ } }, "node_modules/@angular/animations": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.1.tgz", - "integrity": "sha512-fHHZeimKweVDMGaKazgoPLEc3g+v7OgpMI7m2SzREOug2++qoA7UsJ/IEjxXY1LKiVKeb4sjyC8E0ziGmYl6+w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.2.tgz", + "integrity": "sha512-F65G62clU+8tpYXkRGTeQ8nNlyUsviJp9fFTMFXZTm0EHUCiHB6PRf5vpp7edN0Hy+moG6rKt8VnKbraFqaO1g==", "dependencies": { "tslib": "^2.3.0" }, @@ -770,13 +755,13 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.1" + "@angular/core": "14.0.2" } }, "node_modules/@angular/cdk": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.1.tgz", - "integrity": "sha512-kiCzcNaUjJ/muxUk1OyIl9tuSlt2PzY3vO6A0/mRUGk7ejXbiN07jZCgNAQuWNcvaLpAtqTi7sWOVNUNooCgxw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.2.tgz", + "integrity": "sha512-751Sshu+HKYOqmnGRriHjd4ybMradgkLYOM9dBoX7YFpZce+IcEtojALGfLA4YDZwJF2RhBD6lFcJdWJPC9wCw==", "dependencies": { "tslib": "^2.3.0" }, @@ -790,15 +775,15 @@ } }, "node_modules/@angular/cli": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.1.tgz", - "integrity": "sha512-5NUfpHlIQ+BipsHIMHImP2bXu5nJcyr4sbs8Otf5ReCcqculJGfKwX0gYYgLfExbw1r4JtCTDggYanUcVgqkdw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.2.tgz", + "integrity": "sha512-cCQr5KMLlr7JER8CtrYLBTQUT4g22CTh3f0D9cdSjpBOhmEq62ZXApbmHNgPoHrTNub+7+FwANleIuqyN7nojg==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1400.1", - "@angular-devkit/core": "14.0.1", - "@angular-devkit/schematics": "14.0.1", - "@schematics/angular": "14.0.1", + "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/core": "14.0.2", + "@angular-devkit/schematics": "14.0.2", + "@schematics/angular": "14.0.2", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.4", @@ -826,9 +811,9 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -852,12 +837,12 @@ } }, "node_modules/@angular/cli/node_modules/@angular-devkit/schematics": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz", - "integrity": "sha512-Ub9W2SIgmYs9+SWCW117/N+wSThOWWDo1j+JiZlh9jML7ZRc9HCTEzo8Yic+6/ZuouVcKExCUO90z0InVkOB7g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-NCAYwvQBL71MbAzeF8XOM9LXYfZbUK7THYCW8UteKDY4Df6EdVOGhBdWY2LstAkZeVCaQWSJU7FcVRS9Ulvg0A==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -918,21 +903,6 @@ "npm": ">=2.0.0" } }, - "node_modules/@angular/cli/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@angular/cli/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -940,9 +910,9 @@ "dev": true }, "node_modules/@angular/common": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.1.tgz", - "integrity": "sha512-6yT95daze55H0KLag+LgQQMGV7jGy3ggcdIEEU9H+cM4rp37kz97RNGaig5p34c1f/VMg6LaDXOK4LjAebbnBw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.2.tgz", + "integrity": "sha512-vNZpun9ymZEDJ0CWskTZZqCbuCumgYxbsZgp9nALnRAJt3fK8fRFgIZTn7smEXvbStL4PvngnvESa/t9Jd4wMg==", "dependencies": { "tslib": "^2.3.0" }, @@ -950,14 +920,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.1", + "@angular/core": "14.0.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.1.tgz", - "integrity": "sha512-8A7xNm5eIjovMjDKqOj0Ba15BB/A6sWruR0Tt+vSzuUmJD6mWc1BZAPXIByJkZOrusuc5FKnoicJ0aV/U8lkAg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.2.tgz", + "integrity": "sha512-d2YS0h51DbodTWbXRwBrF7Jn8SX3FggITlLj4kan7oDvCpNRp+pKv6NifU2EZKOBUKYc3o6FBxj1oNbnqK/7cg==", "dependencies": { "tslib": "^2.3.0" }, @@ -965,7 +935,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.0.1" + "@angular/core": "14.0.2" }, "peerDependenciesMeta": { "@angular/core": { @@ -974,9 +944,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.1.tgz", - "integrity": "sha512-cDldWH5Xu+nscUw1B71Lt+//TylRqSP8lDRCXxdX0TJeAtxhWTn8TLDy+Cc+YRiccwtuVXQuyCrdeWCR5hJt+Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.2.tgz", + "integrity": "sha512-S5vT6k0FF/rC8n1AnWaA1HMBr1/9TSxsOXNB0eSwjRATZ9SIe2oWmt9m7CmHltXYLbGIshy482H6sGs2Usu6+A==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -999,7 +969,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.0.1", + "@angular/compiler": "14.0.2", "typescript": ">=4.6.2 <4.8" } }, @@ -1016,9 +986,9 @@ } }, "node_modules/@angular/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.1.tgz", - "integrity": "sha512-72/VathVpDVEIm/T87eGF9Ng9JYOfrRVJCGhPwKvbIQZzCrg07acPwjDvtifkhKEKyMxLXv+F3bClr8WYP6c4Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.2.tgz", + "integrity": "sha512-JR+xVuNjGYEP5mdm3iQykcRFjrhSKbN5yxKxlVdKpNtUsR2Yc9Nf180Y2+Oo6KabtywGedIBH/Xd6mhwQQv3vg==", "dependencies": { "tslib": "^2.3.0" }, @@ -1031,9 +1001,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.1.tgz", - "integrity": "sha512-QueehWD0ghfYw3TQS9DN62i6gnc+xLeJ6NFJ8fVfh9Ny4V9zFB24bUwBmwcIiZhkw/5G42tjcuUIDO9KlNtBbA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.2.tgz", + "integrity": "sha512-sOLes/B7YkRocZExsxi1H+OIBFbSpVB6+i8+6cQK2ZIwXQMxCZm95PL42rMqWEOJhEuVyR3U47bjA2G4eC3TKg==", "dependencies": { "tslib": "^2.3.0" }, @@ -1041,31 +1011,31 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.1", - "@angular/core": "14.0.1", - "@angular/platform-browser": "14.0.1", + "@angular/common": "14.0.2", + "@angular/core": "14.0.2", + "@angular/platform-browser": "14.0.2", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.1.tgz", - "integrity": "sha512-HWKoIf2/C1DT5R58BWDFBCxEBFjIBZN//5YcDiCwvmzA8lfsDF8WRsdFDwYo14qA4fFGLVYuP0Sd677xOKbQDw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.2.tgz", + "integrity": "sha512-R322CUZnYa9fDBQQnPplJgwS1lUeVClJKpcRhdFMVX9cPKAnYA+qq/VoPfqvX07Sy6Hawtrh7bYDF/Iek5MQCg==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0" } }, "node_modules/@angular/material": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.1.tgz", - "integrity": "sha512-SkH7MCfFBRj/+HP/JwYiYHd8uo38qtwR66hZKQcP2XaQgO323llVQ27MB+TRkbxO2mifpP2gh40nJCv6KaNsxg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.2.tgz", + "integrity": "sha512-w1QHmQK02eF4mZZ6mixgKNaIp0cg71MQEDgoeZppUjrOij2TYkorHhT9Ma2XguV5Xi2wSGoGUzNKJ0OucB8hLA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^14.0.0 || ^15.0.0", - "@angular/cdk": "14.0.1", + "@angular/cdk": "14.0.2", "@angular/common": "^14.0.0 || ^15.0.0", "@angular/core": "^14.0.0 || ^15.0.0", "@angular/forms": "^14.0.0 || ^15.0.0", @@ -1074,9 +1044,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.1.tgz", - "integrity": "sha512-/0xdsCbVaanP7urgMrA+9E4XYRx4Bc/AABUKy/m3C9nbl7T0C2jzuX3yGZsBpr9rzEwmImyBqExX3bKuAlMwPQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.2.tgz", + "integrity": "sha512-FeBXo3GmJOGitBIKrpuZOfBpfDqMh4QqZZmHMIXunELgrG+a8XSoZZYwEgRNIOpxFduQnP2Qe6H6cYoVJfwcBg==", "dependencies": { "tslib": "^2.3.0" }, @@ -1084,9 +1054,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.0.1", - "@angular/common": "14.0.1", - "@angular/core": "14.0.1" + "@angular/animations": "14.0.2", + "@angular/common": "14.0.2", + "@angular/core": "14.0.2" }, "peerDependenciesMeta": { "@angular/animations": { @@ -1095,9 +1065,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.1.tgz", - "integrity": "sha512-aYErZUfHnyhWrZYI/Aq9aXE2pJWXiqtSfs41GM+L2SgD9dF/463sOIw/+gOhE/Os7Fwd1OSmo6GlFwMkfZNTeg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.2.tgz", + "integrity": "sha512-KPGpfMBugXojQPrcqlZ8mNBMiUHkREszuVwnpvkuwrPSnygGNzj8HAdu1c1sTPX7uirhW6QEWGmwXFKURTmnwQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -1105,16 +1075,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.1", - "@angular/compiler": "14.0.1", - "@angular/core": "14.0.1", - "@angular/platform-browser": "14.0.1" + "@angular/common": "14.0.2", + "@angular/compiler": "14.0.2", + "@angular/core": "14.0.2", + "@angular/platform-browser": "14.0.2" } }, "node_modules/@angular/platform-server": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.0.1.tgz", - "integrity": "sha512-AeehgTkMTgUSEkH72FCnVRvmvJZ8FFmqwsmAHOUOHtAQM2CQzmqKpKvAVbkg89zdYQ6tuPyq70ySv7/E9gs7xw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.0.2.tgz", + "integrity": "sha512-zDHcOrVtdozE1s7112etVlgpBI1paUpqXhbyeZFluUhWtWTbatbUywuJVjyobqEH9YRoA4GG9i6ZU4e8RKkbsA==", "dependencies": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -1124,18 +1094,18 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.0.1", - "@angular/common": "14.0.1", - "@angular/compiler": "14.0.1", - "@angular/core": "14.0.1", - "@angular/platform-browser": "14.0.1", - "@angular/platform-browser-dynamic": "14.0.1" + "@angular/animations": "14.0.2", + "@angular/common": "14.0.2", + "@angular/compiler": "14.0.2", + "@angular/core": "14.0.2", + "@angular/platform-browser": "14.0.2", + "@angular/platform-browser-dynamic": "14.0.2" } }, "node_modules/@angular/router": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.1.tgz", - "integrity": "sha512-FtJIe7acU6MuxoBlrl33VHKKVxePgOGnyPkRrxEHxrq8Dw6Y9JkW45Nk1t54CjcEhkkmPgSuJ2h2Jfn2fa6Vcw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.2.tgz", + "integrity": "sha512-moh7IPGk7tpcNGx5xN9q+zNMG6ZqXVD607Q3qUCBcvK13NtgZ9aMXpKtkVOGXLJNdMVgHaeV56+q96cw77WtAA==", "dependencies": { "tslib": "^2.3.0" }, @@ -1143,9 +1113,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.0.1", - "@angular/core": "14.0.1", - "@angular/platform-browser": "14.0.1", + "@angular/common": "14.0.2", + "@angular/core": "14.0.2", + "@angular/platform-browser": "14.0.2", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -2948,19 +2918,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz", - "integrity": "sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==", - "dev": true, - "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", @@ -4338,17 +4295,17 @@ } }, "node_modules/@micro-sentry/angular": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@micro-sentry/angular/-/angular-6.1.0.tgz", - "integrity": "sha512-4tRJGew4rHWAus5acxhdgqfj98RbN0VEC9QZ6yjP82MaK6NuE5aVHxg8a2ThXgsRwsbSFUYHA7205+PjegzeZA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@micro-sentry/angular/-/angular-6.1.1.tgz", + "integrity": "sha512-mLokyb+0epTaYEyoDFj5GqeZcK/ToRFxitbds2ze114UqJALKv4KgGQrSXJFyJiNK+1x84csdyryGcpMKt+3TQ==", "dependencies": { "@micro-sentry/browser": "6.0.0", + "@ng-web-apis/common": "^1.12.0", "tslib": "^2.0.0" }, "peerDependencies": { "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0", - "@ng-web-apis/common": "^1.12.0" + "@angular/core": "^14.0.0" } }, "node_modules/@micro-sentry/browser": { @@ -4391,7 +4348,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-1.13.0.tgz", "integrity": "sha512-tr/0YHKlfAl0ECo0BPNdNnpQLdI9G4m3nUr9Nf7MXOBqk4p/fOwTtgCyl9IZFpfAxVezFLCZU+ootTaYWVyVlA==", - "peer": true, "dependencies": { "tslib": "^1.9.0" }, @@ -4403,13 +4359,12 @@ "node_modules/@ng-web-apis/common/node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "peer": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@ngtools/webpack": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.1.tgz", - "integrity": "sha512-BR+RoOK8/20mRx86D6cYGjc0+/qsGvIpLHknRd9WfxB7ppfbWV8QTN9vnk3lRs13n2umRJ+8VvC8UMmd8B+m9A==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.2.tgz", + "integrity": "sha512-TLR9v78GGM6uEKwYUAw2Hmpy+J0M8KF51ow/WKtCbpRko/ley5BYiBCwsaMWVv3o1yk/nT8fZeG+V3xZIXJcwA==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -4933,13 +4888,13 @@ } }, "node_modules/@schematics/angular": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.1.tgz", - "integrity": "sha512-K4y3/Zbtc38M66J5KJ5oXeGSkDrAJXdhtY9ksU6NHXQ0uUiXNzyG05+v8aFrQ5CinyuLZK3v/mqmS/cBQmdT9Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.2.tgz", + "integrity": "sha512-DmLD0s4zUGuX+hjkIkW/aZi+JZZFZfhBxhumG9nftWPYT9/AjX3C2YZCarRWJ83jy/K3N9y4cnva0NVqKxTa3A==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.0.1", - "@angular-devkit/schematics": "14.0.1", + "@angular-devkit/core": "14.0.2", + "@angular-devkit/schematics": "14.0.2", "jsonc-parser": "3.0.0" }, "engines": { @@ -4949,9 +4904,9 @@ } }, "node_modules/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -4975,12 +4930,12 @@ } }, "node_modules/@schematics/angular/node_modules/@angular-devkit/schematics": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz", - "integrity": "sha512-Ub9W2SIgmYs9+SWCW117/N+wSThOWWDo1j+JiZlh9jML7ZRc9HCTEzo8Yic+6/ZuouVcKExCUO90z0InVkOB7g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-NCAYwvQBL71MbAzeF8XOM9LXYfZbUK7THYCW8UteKDY4Df6EdVOGhBdWY2LstAkZeVCaQWSJU7FcVRS9Ulvg0A==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -12056,9 +12011,9 @@ } }, "node_modules/@stripe/stripe-js": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.29.0.tgz", - "integrity": "sha512-OsUxk0VLlum8E2d6onlEdKuQcvLMs7qTrOXCnl/BGV3fAm65qr6h3e1IZ5AX4lgUlPRrzRcddSOA5DvkKKYLvg==" + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.32.0.tgz", + "integrity": "sha512-7EvBnbBfS1aynfLRmBFcuumHNGjKxnNkO47rorFBktqDYHwo7Yw6pfDW2iqq0R8r7i7XiJEdWPvvEgQAiDrx3A==" }, "node_modules/@swimlane/ngx-charts": { "version": "20.1.0", @@ -12261,9 +12216,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dev": true, "dependencies": { "@types/node": "*", @@ -12372,9 +12327,9 @@ "dev": true }, "node_modules/@types/marked": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.2.tgz", - "integrity": "sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.3.tgz", + "integrity": "sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg==" }, "node_modules/@types/mdast": { "version": "3.0.10", @@ -12805,15 +12760,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", - "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", + "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -12829,13 +12784,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", - "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", + "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0" + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -12846,9 +12801,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", - "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", + "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -12859,17 +12814,17 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", - "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", + "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -12886,13 +12841,13 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", - "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", + "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.17.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.27.1", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -13648,14 +13603,10 @@ "dev": true }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, "engines": { "node": ">=6.0" } @@ -14095,10 +14046,13 @@ } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", + "dev": true, + "engines": { + "node": ">=6.0" + } }, "node_modules/babel-loader": { "version": "8.2.5", @@ -15637,6 +15591,16 @@ "node": ">= 10" } }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -17268,6 +17232,46 @@ "type": "^1.0.1" } }, + "node_modules/d3": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.4.4.tgz", + "integrity": "sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-array": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", @@ -17276,6 +17280,14 @@ "internmap": "^1.0.0" } }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, "node_modules/d3-brush": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", @@ -17288,11 +17300,49 @@ "d3-transition": "2" } }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, "node_modules/d3-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" }, + "node_modules/d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-dispatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", @@ -17307,16 +17357,94 @@ "d3-selection": "2" } }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/d3-dsv/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/d3-ease": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" }, + "node_modules/d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-hierarchy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", @@ -17335,6 +17463,30 @@ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, "node_modules/d3-scale": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", @@ -17347,6 +17499,18 @@ "d3-time-format": "2 - 3" } }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-selection": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", @@ -17396,6 +17560,495 @@ "d3-selection": "2" } }, + "node_modules/d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-array": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.6.tgz", + "integrity": "sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-shape": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3/node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "dependencies": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", + "dependencies": { + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "node_modules/dagre-d3/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/dagre-d3/node_modules/d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "dependencies": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/dagre-d3/node_modules/d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "node_modules/dagre-d3/node_modules/d3-brush": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "dependencies": { + "d3-array": "1", + "d3-path": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "node_modules/dagre-d3/node_modules/d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "dependencies": { + "d3-array": "^1.1.1" + } + }, + "node_modules/dagre-d3/node_modules/d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "node_modules/dagre-d3/node_modules/d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "dependencies": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "dependencies": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json", + "csv2tsv": "bin/dsv2dsv", + "dsv2dsv": "bin/dsv2dsv", + "dsv2json": "bin/dsv2json", + "json2csv": "bin/json2dsv", + "json2dsv": "bin/json2dsv", + "json2tsv": "bin/json2dsv", + "tsv2csv": "bin/dsv2dsv", + "tsv2json": "bin/dsv2json" + } + }, + "node_modules/dagre-d3/node_modules/d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "node_modules/dagre-d3/node_modules/d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "dependencies": { + "d3-dsv": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "dependencies": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "node_modules/dagre-d3/node_modules/d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "node_modules/dagre-d3/node_modules/d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "dependencies": { + "d3-color": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/dagre-d3/node_modules/d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "node_modules/dagre-d3/node_modules/d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "node_modules/dagre-d3/node_modules/d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "node_modules/dagre-d3/node_modules/d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "dependencies": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "node_modules/dagre-d3/node_modules/d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "dependencies": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "node_modules/dagre-d3/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "node_modules/dagre-d3/node_modules/d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "dependencies": { + "d3-time": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "node_modules/dagre-d3/node_modules/d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "dependencies": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "node_modules/dagre-d3/node_modules/d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "dependencies": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, "node_modules/dash-ast": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", @@ -17627,6 +18280,14 @@ "node": ">=0.10.0" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -17636,6 +18297,11 @@ "node": ">=0.4.0" } }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, "node_modules/delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -17789,9 +18455,9 @@ "dev": true }, "node_modules/dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -17895,6 +18561,11 @@ "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" }, + "node_modules/dompurify": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.8.tgz", + "integrity": "sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==" + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -20981,12 +21652,28 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "dependencies": { + "delegate": "^3.1.2" + } + }, "node_modules/graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -21795,7 +22482,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -23434,9 +24120,9 @@ } }, "node_modules/katex": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.2.tgz", - "integrity": "sha512-FfZ/f6f8bQdLmJ3McXDNTkKenQkoXkItpW0I9bsG2wgb+8JAY5bwpXFtI8ZVrg5hc1wo1X/UIhdkVMpok46tEQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.0.tgz", + "integrity": "sha512-wPRB4iUPysfH97wTgG5/tRLYxmKVq6Q4jRAWRVOUxXB1dsiv4cvcNjqabHkrOvJHM1Bpk3WrgmllSO1vIvP24w==", "funding": [ "https://opencollective.com/katex", "https://github.com/sponsors/katex" @@ -23456,6 +24142,11 @@ "node": ">= 12" } }, + "node_modules/khroma": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", + "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -23687,8 +24378,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.debounce": { "version": "4.0.8", @@ -24102,9 +24792,9 @@ } }, "node_modules/marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz", + "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==", "bin": { "marked": "bin/marked.js" }, @@ -24113,9 +24803,9 @@ } }, "node_modules/material-icons": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.1.tgz", - "integrity": "sha512-FCZ3mSoXzQ0UetDfhWpLOPG+duErvt1ALhnNt1TMB7GYHq5hvOqB0HE292qWcuVkCGxej2aARz//dz47zM3Cdg==" + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.2.tgz", + "integrity": "sha512-maKSVQNQEHrHXjKTPTwH0141hR2bC8fFUaX4bJzzwVRs7jY+9A+jx0kH/lpgEGIPoYR8gho4iLDvWN3mBRL53A==" }, "node_modules/md5.js": { "version": "1.3.5", @@ -24327,6 +25017,22 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.1.2.tgz", + "integrity": "sha512-RVf3hBKqiMfyORHboCaEjOAK1TomLO50hYRPvlTrZCXlCniM5pRpe8UlkHBjjpaLtioZnbdYv/vEVj7iKnwkJQ==", + "dependencies": { + "@braintree/sanitize-url": "^6.0.0", + "d3": "^7.0.0", + "dagre": "^0.8.5", + "dagre-d3": "^0.6.4", + "dompurify": "2.3.8", + "graphlib": "^2.1.8", + "khroma": "^2.0.0", + "moment-mini": "^2.24.0", + "stylis": "^4.0.10" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -24648,6 +25354,11 @@ "node": ">=10" } }, + "node_modules/moment-mini": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", + "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" + }, "node_modules/morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -24869,25 +25580,35 @@ "dev": true }, "node_modules/ngx-markdown": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-13.1.0.tgz", - "integrity": "sha512-Bm4WhMI9xSnWTzzQWs/e1+d/l0s3+eFU0Ug/lcePmiWEZAPqiceEe6akjh4+Tjp61SmZ/wmKr8Kvc8mr9moP9A==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-14.0.0.tgz", + "integrity": "sha512-gS/41oYTst0pppGk5vcfr+ZqmveGwu66gQo/UOv6TM+LICBCQMbYJwnlPwFtoWgOLMf8JAzCVDMcdu2I0GIG7A==", "dependencies": { - "@types/marked": "^4.0.2", + "@types/marked": "^4.0.3", + "clipboard": "^2.0.11", "emoji-toolkit": "^6.6.0", - "katex": "^0.15.1", - "marked": "^4.0.10", - "prismjs": "^1.25.0", + "katex": "^0.16.0", + "marked": "^4.0.17", + "mermaid": "^9.1.2", + "prismjs": "^1.28.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^13.0.0", - "@angular/core": "^13.0.0", - "@angular/platform-browser": "^13.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/platform-browser": "^14.0.0", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "^0.11.4" } }, + "node_modules/ngx-markdown/node_modules/prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==", + "engines": { + "node": ">=6" + } + }, "node_modules/nice-napi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", @@ -27584,6 +28305,7 @@ "version": "1.27.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true, "engines": { "node": ">=6" } @@ -29183,6 +29905,11 @@ "inherits": "^2.0.1" } }, + "node_modules/robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, "node_modules/rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -29239,6 +29966,11 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/rxjs": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", @@ -29265,8 +29997,7 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sane": { "version": "4.1.0", @@ -29546,7 +30277,7 @@ "node_modules/sane/node_modules/to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "dependencies": { "is-number": "^3.0.0", @@ -29704,6 +30435,11 @@ "get-assigned-identifiers": "^1.1.0" } }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -29723,9 +30459,9 @@ } }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -31265,6 +32001,11 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/stylis": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.1.tgz", + "integrity": "sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==" + }, "node_modules/stylus": { "version": "0.57.0", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz", @@ -31806,6 +32547,11 @@ "node": ">=0.6.0" } }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", @@ -34450,19 +35196,19 @@ } }, "@angular-devkit/architect": { - "version": "0.1400.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.1.tgz", - "integrity": "sha512-GJ4hWLIJmhCq4nKNN9c4xocKtCt28muJxN88Wna292SOIaNQuNY5MP9860/4IWRGCJTeJH7LyCc4j/3V0zWrSQ==", + "version": "0.1400.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.2.tgz", + "integrity": "sha512-L+QIaN17M2APAJ4v3eVOSohqhnqTloDjT4omdaPA9XZpob+WQ6+ALCvMuEczCRrGBskXiOsBgXeyMjGBtq1+pw==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "rxjs": "6.6.7" }, "dependencies": { "@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "requires": { "ajv": "8.11.0", @@ -34502,15 +35248,15 @@ } }, "@angular-devkit/build-angular": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.1.tgz", - "integrity": "sha512-qglGJV4IH4VOsTXTErYdjtKQLChS4k+tdY22A7CYnZKXR5v+jh4tX8/idb4UfA8ScVONgsBQKRO9VIGK425Hww==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.0.2.tgz", + "integrity": "sha512-oVjF+Q9lw1Gk93z7zIGiv4mxiyDmYPKtW4xLCL38ccCiSwunzG5/hayvmtJB+wasKznCU+DpxeQXR/Q1qwGlEw==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1400.1", - "@angular-devkit/build-webpack": "0.1400.1", - "@angular-devkit/core": "14.0.1", + "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/build-webpack": "0.1400.2", + "@angular-devkit/core": "14.0.2", "@babel/core": "7.17.10", "@babel/generator": "7.17.10", "@babel/helper-annotate-as-pure": "7.16.7", @@ -34521,7 +35267,7 @@ "@babel/runtime": "7.17.9", "@babel/template": "7.16.7", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.0.1", + "@ngtools/webpack": "14.0.2", "ansi-colors": "4.1.1", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -34573,9 +35319,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "requires": { "ajv": "8.11.0", @@ -34700,15 +35446,6 @@ } } }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "ssri": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", @@ -34727,12 +35464,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1400.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.1.tgz", - "integrity": "sha512-Q5KMw/7y34GonSx3rEByMvnwu3JLeSAP94Th2PzVD2NZFmINujuzbZ35FnduuxAjNDFWGcrykfMwZyIew7selw==", + "version": "0.1400.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1400.2.tgz", + "integrity": "sha512-RikPXn5S7iTqwfGnApxGRQG0NS8UU0Vo1Smme4Dd7JpXAHeKE65OyN/vO29UaIT8XynjZK3A2rbLE6Mw5RcQjA==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1400.1", + "@angular-devkit/architect": "0.1400.2", "rxjs": "6.6.7" }, "dependencies": { @@ -34815,135 +35552,135 @@ } }, "@angular-eslint/builder": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.0.tgz", - "integrity": "sha512-l8UjXN91aqmoemIvzeLrfBb2+S9w1J+5jOYdjRfDLSY3uzGEG5AvlBnUJncH2wXHjj4D0yQnEoupUeoJcscWRA==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.0.0-alpha.3.tgz", + "integrity": "sha512-J3/Pj0erEkmRCSpVcsTWIg4riIADkfbC+Z+iGeS0cN3Ix6pyXk6XPDXoUCHBB0C55RCpeCYuJIFqJuLfEKIfZw==", "dev": true, "requires": { "@nrwl/devkit": "13.1.3" } }, "@angular-eslint/bundled-angular-compiler": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0-alpha.0.tgz", - "integrity": "sha512-WBjPK4dloZ1XODBwqCJr8f8SSH7gnVo4ShpIr0bc2GZec2E2ubLY/iiv+VKgcyzKlNKOCRB8cOUXxyQMiJEzdg==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.0.0-alpha.3.tgz", + "integrity": "sha512-7WzTJQfuq13Wz2RISCULt/nmylpSO6XNWMp+SYDGXQooLK8XMrzWeZdTaInebcBMv5Xc8jUEbeuVHw5WdeXciA==", "dev": true }, "@angular-eslint/eslint-plugin": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.0.tgz", - "integrity": "sha512-1ybSXpH5UYwUBMPt5nu9B6zNXB8xQm5lkOqey8tkdi+MrM9sITwbXBUkZhAbbqPIcFXGHZeV7zoMOZVqmuLi7A==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.0.0-alpha.3.tgz", + "integrity": "sha512-vGKiKoWTZITcj6VMdfEhRpQOgzYX53QXqEfqq1deEybNxJsmSHD5i7niLw6l3AgK8o18j2HZfMyz39MItiQ/Rg==", "dev": true, "requires": { - "@angular-eslint/utils": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0" + "@angular-eslint/utils": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1" }, "dependencies": { "@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" } } } }, "@angular-eslint/eslint-plugin-template": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.0.tgz", - "integrity": "sha512-gDMQ/PsJIwrk56/8l9ubpxf/uRMF45PIcczU80vLnXk0lVIfQDCcwktrnVTF/9C/ReKlp4FWOEH9RlY5Nfng0A==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.0.0-alpha.3.tgz", + "integrity": "sha512-AoOyyLOpRZPph35wwBI1BOmBaI5VIBOdxWmOlCZsP2H5iaBiF+wQTARUu8swQVLKZ2arKKSP0ufAfc5E2FBcZA==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0", - "aria-query": "^4.2.2", - "axobject-query": "^2.2.0" + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1", + "aria-query": "5.0.0", + "axobject-query": "3.0.1" }, "dependencies": { "@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" } } } }, "@angular-eslint/schematics": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.0.tgz", - "integrity": "sha512-yJxpUATZs4L4vjU1JwiRzekWeNvNUpSKMB41wrAsJCs1yBv7yrQiI0jABmzDh0Esbxq2BqxBJQtxI9OFr0lVig==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.0.0-alpha.3.tgz", + "integrity": "sha512-swBkQ4/9itzEPTvPbBw1H02pMrZIPly5d6fPUh71+xhPTTBvjFm525AyVMhg6N6uk9ai3mDgWyek8eaz7NHZgA==", "dev": true, "requires": { - "@angular-eslint/eslint-plugin": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.0", + "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", "ignore": "5.2.0", "strip-json-comments": "3.1.1", "tmp": "0.2.1" } }, "@angular-eslint/template-parser": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.0.tgz", - "integrity": "sha512-3Q10T/ng6pGcr6MURLTWOoxA7W8DvDNAsSMVWl3w4zGed0vm732LqY8uoQ519IAzDEIKKXEPITBzMBmYWOvOww==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.0.0-alpha.3.tgz", + "integrity": "sha512-twCZoBFuAgSZK6lKiNRdD738f99OSaQEaykf03QJAjo501Ib/q85cP2D7ZQzk03nT+xSODqUEaEPnuu/kE59nQ==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", "eslint-scope": "^5.1.0" } }, "@angular-eslint/utils": { - "version": "14.0.0-alpha.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.0.tgz", - "integrity": "sha512-1QLz45dhD2z6RemSlWjRWPnGIcoxZQPzXK+BP6y29oUcUchh+Nxmo0U0H7cGiy5by5LXNv7bl9spwVmhf8OUBw==", + "version": "14.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.0.0-alpha.3.tgz", + "integrity": "sha512-py2oFSDdiY/QJmBKg0wbbO4Caf18uioHAivMXdXfIyFHM6XGoiI1DBUUCmNrCq6sbYanD1oO0BtRFD+Gv6y+vg==", "dev": true, "requires": { - "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.0", - "@typescript-eslint/experimental-utils": "5.17.0" + "@angular-eslint/bundled-angular-compiler": "14.0.0-alpha.3", + "@typescript-eslint/experimental-utils": "5.27.1" }, "dependencies": { "@typescript-eslint/experimental-utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.17.0.tgz", - "integrity": "sha512-U4sM5z0/ymSYqQT6I7lz8l0ZZ9zrya5VIwrwAP5WOJVabVtVsIpTMxPQe+D3qLyePT+VlETUTO2nA1+PufPx9Q==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.27.1.tgz", + "integrity": "sha512-Vd8uewIixGP93sEnmTRIH6jHZYRQRkGPDPpapACMvitJKX8335VHNyqKTE+mZ+m3E2c5VznTZfSsSsS5IF7vUA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.17.0" + "@typescript-eslint/utils": "5.27.1" } } } }, "@angular/animations": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.1.tgz", - "integrity": "sha512-fHHZeimKweVDMGaKazgoPLEc3g+v7OgpMI7m2SzREOug2++qoA7UsJ/IEjxXY1LKiVKeb4sjyC8E0ziGmYl6+w==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.2.tgz", + "integrity": "sha512-F65G62clU+8tpYXkRGTeQ8nNlyUsviJp9fFTMFXZTm0EHUCiHB6PRf5vpp7edN0Hy+moG6rKt8VnKbraFqaO1g==", "requires": { "tslib": "^2.3.0" } }, "@angular/cdk": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.1.tgz", - "integrity": "sha512-kiCzcNaUjJ/muxUk1OyIl9tuSlt2PzY3vO6A0/mRUGk7ejXbiN07jZCgNAQuWNcvaLpAtqTi7sWOVNUNooCgxw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.2.tgz", + "integrity": "sha512-751Sshu+HKYOqmnGRriHjd4ybMradgkLYOM9dBoX7YFpZce+IcEtojALGfLA4YDZwJF2RhBD6lFcJdWJPC9wCw==", "requires": { "parse5": "^5.0.0", "tslib": "^2.3.0" } }, "@angular/cli": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.1.tgz", - "integrity": "sha512-5NUfpHlIQ+BipsHIMHImP2bXu5nJcyr4sbs8Otf5ReCcqculJGfKwX0gYYgLfExbw1r4JtCTDggYanUcVgqkdw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.2.tgz", + "integrity": "sha512-cCQr5KMLlr7JER8CtrYLBTQUT4g22CTh3f0D9cdSjpBOhmEq62ZXApbmHNgPoHrTNub+7+FwANleIuqyN7nojg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1400.1", - "@angular-devkit/core": "14.0.1", - "@angular-devkit/schematics": "14.0.1", - "@schematics/angular": "14.0.1", + "@angular-devkit/architect": "0.1400.2", + "@angular-devkit/core": "14.0.2", + "@angular-devkit/schematics": "14.0.2", + "@schematics/angular": "14.0.2", "@yarnpkg/lockfile": "1.1.0", "ansi-colors": "4.1.1", "debug": "4.3.4", @@ -34963,9 +35700,9 @@ }, "dependencies": { "@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "requires": { "ajv": "8.11.0", @@ -34976,12 +35713,12 @@ } }, "@angular-devkit/schematics": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz", - "integrity": "sha512-Ub9W2SIgmYs9+SWCW117/N+wSThOWWDo1j+JiZlh9jML7ZRc9HCTEzo8Yic+6/ZuouVcKExCUO90z0InVkOB7g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-NCAYwvQBL71MbAzeF8XOM9LXYfZbUK7THYCW8UteKDY4Df6EdVOGhBdWY2LstAkZeVCaQWSJU7FcVRS9Ulvg0A==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -35024,15 +35761,6 @@ "tslib": "^1.9.0" } }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", @@ -35042,25 +35770,25 @@ } }, "@angular/common": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.1.tgz", - "integrity": "sha512-6yT95daze55H0KLag+LgQQMGV7jGy3ggcdIEEU9H+cM4rp37kz97RNGaig5p34c1f/VMg6LaDXOK4LjAebbnBw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.2.tgz", + "integrity": "sha512-vNZpun9ymZEDJ0CWskTZZqCbuCumgYxbsZgp9nALnRAJt3fK8fRFgIZTn7smEXvbStL4PvngnvESa/t9Jd4wMg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.1.tgz", - "integrity": "sha512-8A7xNm5eIjovMjDKqOj0Ba15BB/A6sWruR0Tt+vSzuUmJD6mWc1BZAPXIByJkZOrusuc5FKnoicJ0aV/U8lkAg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.2.tgz", + "integrity": "sha512-d2YS0h51DbodTWbXRwBrF7Jn8SX3FggITlLj4kan7oDvCpNRp+pKv6NifU2EZKOBUKYc3o6FBxj1oNbnqK/7cg==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.1.tgz", - "integrity": "sha512-cDldWH5Xu+nscUw1B71Lt+//TylRqSP8lDRCXxdX0TJeAtxhWTn8TLDy+Cc+YRiccwtuVXQuyCrdeWCR5hJt+Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.2.tgz", + "integrity": "sha512-S5vT6k0FF/rC8n1AnWaA1HMBr1/9TSxsOXNB0eSwjRATZ9SIe2oWmt9m7CmHltXYLbGIshy482H6sGs2Usu6+A==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -35087,55 +35815,55 @@ } }, "@angular/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.1.tgz", - "integrity": "sha512-72/VathVpDVEIm/T87eGF9Ng9JYOfrRVJCGhPwKvbIQZzCrg07acPwjDvtifkhKEKyMxLXv+F3bClr8WYP6c4Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.2.tgz", + "integrity": "sha512-JR+xVuNjGYEP5mdm3iQykcRFjrhSKbN5yxKxlVdKpNtUsR2Yc9Nf180Y2+Oo6KabtywGedIBH/Xd6mhwQQv3vg==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.1.tgz", - "integrity": "sha512-QueehWD0ghfYw3TQS9DN62i6gnc+xLeJ6NFJ8fVfh9Ny4V9zFB24bUwBmwcIiZhkw/5G42tjcuUIDO9KlNtBbA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.2.tgz", + "integrity": "sha512-sOLes/B7YkRocZExsxi1H+OIBFbSpVB6+i8+6cQK2ZIwXQMxCZm95PL42rMqWEOJhEuVyR3U47bjA2G4eC3TKg==", "requires": { "tslib": "^2.3.0" } }, "@angular/language-service": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.1.tgz", - "integrity": "sha512-HWKoIf2/C1DT5R58BWDFBCxEBFjIBZN//5YcDiCwvmzA8lfsDF8WRsdFDwYo14qA4fFGLVYuP0Sd677xOKbQDw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.0.2.tgz", + "integrity": "sha512-R322CUZnYa9fDBQQnPplJgwS1lUeVClJKpcRhdFMVX9cPKAnYA+qq/VoPfqvX07Sy6Hawtrh7bYDF/Iek5MQCg==", "dev": true }, "@angular/material": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.1.tgz", - "integrity": "sha512-SkH7MCfFBRj/+HP/JwYiYHd8uo38qtwR66hZKQcP2XaQgO323llVQ27MB+TRkbxO2mifpP2gh40nJCv6KaNsxg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.2.tgz", + "integrity": "sha512-w1QHmQK02eF4mZZ6mixgKNaIp0cg71MQEDgoeZppUjrOij2TYkorHhT9Ma2XguV5Xi2wSGoGUzNKJ0OucB8hLA==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.1.tgz", - "integrity": "sha512-/0xdsCbVaanP7urgMrA+9E4XYRx4Bc/AABUKy/m3C9nbl7T0C2jzuX3yGZsBpr9rzEwmImyBqExX3bKuAlMwPQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.2.tgz", + "integrity": "sha512-FeBXo3GmJOGitBIKrpuZOfBpfDqMh4QqZZmHMIXunELgrG+a8XSoZZYwEgRNIOpxFduQnP2Qe6H6cYoVJfwcBg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.1.tgz", - "integrity": "sha512-aYErZUfHnyhWrZYI/Aq9aXE2pJWXiqtSfs41GM+L2SgD9dF/463sOIw/+gOhE/Os7Fwd1OSmo6GlFwMkfZNTeg==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.2.tgz", + "integrity": "sha512-KPGpfMBugXojQPrcqlZ8mNBMiUHkREszuVwnpvkuwrPSnygGNzj8HAdu1c1sTPX7uirhW6QEWGmwXFKURTmnwQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-server": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.0.1.tgz", - "integrity": "sha512-AeehgTkMTgUSEkH72FCnVRvmvJZ8FFmqwsmAHOUOHtAQM2CQzmqKpKvAVbkg89zdYQ6tuPyq70ySv7/E9gs7xw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.0.2.tgz", + "integrity": "sha512-zDHcOrVtdozE1s7112etVlgpBI1paUpqXhbyeZFluUhWtWTbatbUywuJVjyobqEH9YRoA4GG9i6ZU4e8RKkbsA==", "requires": { "domino": "^2.1.2", "tslib": "^2.3.0", @@ -35143,9 +35871,9 @@ } }, "@angular/router": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.1.tgz", - "integrity": "sha512-FtJIe7acU6MuxoBlrl33VHKKVxePgOGnyPkRrxEHxrq8Dw6Y9JkW45Nk1t54CjcEhkkmPgSuJ2h2Jfn2fa6Vcw==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.2.tgz", + "integrity": "sha512-moh7IPGk7tpcNGx5xN9q+zNMG6ZqXVD607Q3qUCBcvK13NtgZ9aMXpKtkVOGXLJNdMVgHaeV56+q96cw77WtAA==", "requires": { "tslib": "^2.3.0" } @@ -36391,16 +37119,6 @@ "regenerator-runtime": "^0.13.4" } }, - "@babel/runtime-corejs3": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.2.tgz", - "integrity": "sha512-NcKtr2epxfIrNM4VOmPKO46TvDMCBhgi2CrSHaEarrz+Plk2K5r9QemmOFTGpZaoKnWoGH5MO+CzeRsih/Fcgg==", - "dev": true, - "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", @@ -37481,11 +38199,12 @@ "dev": true }, "@micro-sentry/angular": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@micro-sentry/angular/-/angular-6.1.0.tgz", - "integrity": "sha512-4tRJGew4rHWAus5acxhdgqfj98RbN0VEC9QZ6yjP82MaK6NuE5aVHxg8a2ThXgsRwsbSFUYHA7205+PjegzeZA==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@micro-sentry/angular/-/angular-6.1.1.tgz", + "integrity": "sha512-mLokyb+0epTaYEyoDFj5GqeZcK/ToRFxitbds2ze114UqJALKv4KgGQrSXJFyJiNK+1x84csdyryGcpMKt+3TQ==", "requires": { "@micro-sentry/browser": "6.0.0", + "@ng-web-apis/common": "^1.12.0", "tslib": "^2.0.0" } }, @@ -37528,7 +38247,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/@ng-web-apis/common/-/common-1.13.0.tgz", "integrity": "sha512-tr/0YHKlfAl0ECo0BPNdNnpQLdI9G4m3nUr9Nf7MXOBqk4p/fOwTtgCyl9IZFpfAxVezFLCZU+ootTaYWVyVlA==", - "peer": true, "requires": { "tslib": "^1.9.0" }, @@ -37536,15 +38254,14 @@ "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "peer": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" } } }, "@ngtools/webpack": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.1.tgz", - "integrity": "sha512-BR+RoOK8/20mRx86D6cYGjc0+/qsGvIpLHknRd9WfxB7ppfbWV8QTN9vnk3lRs13n2umRJ+8VvC8UMmd8B+m9A==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.0.2.tgz", + "integrity": "sha512-TLR9v78GGM6uEKwYUAw2Hmpy+J0M8KF51ow/WKtCbpRko/ley5BYiBCwsaMWVv3o1yk/nT8fZeG+V3xZIXJcwA==", "dev": true, "requires": {} }, @@ -37948,20 +38665,20 @@ "dev": true }, "@schematics/angular": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.1.tgz", - "integrity": "sha512-K4y3/Zbtc38M66J5KJ5oXeGSkDrAJXdhtY9ksU6NHXQ0uUiXNzyG05+v8aFrQ5CinyuLZK3v/mqmS/cBQmdT9Q==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.2.tgz", + "integrity": "sha512-DmLD0s4zUGuX+hjkIkW/aZi+JZZFZfhBxhumG9nftWPYT9/AjX3C2YZCarRWJ83jy/K3N9y4cnva0NVqKxTa3A==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.1", - "@angular-devkit/schematics": "14.0.1", + "@angular-devkit/core": "14.0.2", + "@angular-devkit/schematics": "14.0.2", "jsonc-parser": "3.0.0" }, "dependencies": { "@angular-devkit/core": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.1.tgz", - "integrity": "sha512-yiduPSPRp4s4yYKc3BOvbL5gOzaOPvRCMcJ3jeQbitLIXD/xwSHO8OmmsLsN/PnM1RzA8vVHsK7lN4v1JvhqPA==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.2.tgz", + "integrity": "sha512-lT875LhgO+23HvjUmuCZomH/0ivetzo8xsaT+7YM8SeUpmjsNTpTA/xNAQ4uD4JGscsJeCKsGT/zJIwPAAe6vQ==", "dev": true, "requires": { "ajv": "8.11.0", @@ -37972,12 +38689,12 @@ } }, "@angular-devkit/schematics": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.1.tgz", - "integrity": "sha512-Ub9W2SIgmYs9+SWCW117/N+wSThOWWDo1j+JiZlh9jML7ZRc9HCTEzo8Yic+6/ZuouVcKExCUO90z0InVkOB7g==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.2.tgz", + "integrity": "sha512-NCAYwvQBL71MbAzeF8XOM9LXYfZbUK7THYCW8UteKDY4Df6EdVOGhBdWY2LstAkZeVCaQWSJU7FcVRS9Ulvg0A==", "dev": true, "requires": { - "@angular-devkit/core": "14.0.1", + "@angular-devkit/core": "14.0.2", "jsonc-parser": "3.0.0", "magic-string": "0.26.1", "ora": "5.4.1", @@ -43455,9 +44172,9 @@ } }, "@stripe/stripe-js": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.29.0.tgz", - "integrity": "sha512-OsUxk0VLlum8E2d6onlEdKuQcvLMs7qTrOXCnl/BGV3fAm65qr6h3e1IZ5AX4lgUlPRrzRcddSOA5DvkKKYLvg==" + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-1.32.0.tgz", + "integrity": "sha512-7EvBnbBfS1aynfLRmBFcuumHNGjKxnNkO47rorFBktqDYHwo7Yw6pfDW2iqq0R8r7i7XiJEdWPvvEgQAiDrx3A==" }, "@swimlane/ngx-charts": { "version": "20.1.0", @@ -43647,9 +44364,9 @@ } }, "@types/express-serve-static-core": { - "version": "4.17.28", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", - "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "version": "4.17.29", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", + "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", "dev": true, "requires": { "@types/node": "*", @@ -43758,9 +44475,9 @@ "dev": true }, "@types/marked": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.2.tgz", - "integrity": "sha512-auNrZ/c0w6wsM9DccwVxWHssrMDezHUAXNesdp2RQrCVCyrQbOiSq7yqdJKrUQQpw9VTm7CGYJH2A/YG7jjrjQ==" + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-4.0.3.tgz", + "integrity": "sha512-HnMWQkLJEf/PnxZIfbm0yGJRRZYYMhb++O9M36UCTA9z53uPvVoSlAwJr3XOpDEryb7Hwl1qAx/MV6YIW1RXxg==" }, "@types/mdast": { "version": "3.0.10", @@ -44124,58 +44841,58 @@ } }, "@typescript-eslint/utils": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.17.0.tgz", - "integrity": "sha512-DVvndq1QoxQH+hFv+MUQHrrWZ7gQ5KcJzyjhzcqB1Y2Xes1UQQkTRPUfRpqhS8mhTWsSb2+iyvDW1Lef5DD7vA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", + "integrity": "sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.17.0", - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/typescript-estree": "5.17.0", + "@typescript-eslint/scope-manager": "5.27.1", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/typescript-estree": "5.27.1", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, "dependencies": { "@typescript-eslint/scope-manager": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.17.0.tgz", - "integrity": "sha512-062iCYQF/doQ9T2WWfJohQKKN1zmmXVfAcS3xaiialiw8ZUGy05Em6QVNYJGO34/sU1a7a+90U3dUNfqUDHr3w==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz", + "integrity": "sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg==", "dev": true, "requires": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0" + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1" } }, "@typescript-eslint/types": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.17.0.tgz", - "integrity": "sha512-AgQ4rWzmCxOZLioFEjlzOI3Ch8giDWx8aUDxyNw9iOeCvD3GEYAB7dxWGQy4T/rPVe8iPmu73jPHuaSqcjKvxw==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.27.1.tgz", + "integrity": "sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.17.0.tgz", - "integrity": "sha512-X1gtjEcmM7Je+qJRhq7ZAAaNXYhTgqMkR10euC4Si6PIjb+kwEQHSxGazXUQXFyqfEXdkGf6JijUu5R0uceQzg==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz", + "integrity": "sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.17.0", - "@typescript-eslint/visitor-keys": "5.17.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.27.1", + "@typescript-eslint/visitor-keys": "5.27.1", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.17.0.tgz", - "integrity": "sha512-6K/zlc4OfCagUu7Am/BD5k8PSWQOgh34Nrv9Rxe2tBzlJ7uOeJ/h7ugCGDCeEZHT6k2CJBhbk9IsbkPI0uvUkA==", + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz", + "integrity": "sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.17.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.27.1", + "eslint-visitor-keys": "^3.3.0" } } } @@ -44816,14 +45533,10 @@ } }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", - "dev": true, - "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - } + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", + "integrity": "sha512-V+SM7AbUwJ+EBnB8+DXs0hPZHO0W6pqBcc0dW90OwtVG02PswOu/teuARoLQjdDOH+t9pJgGnW5/Qmouf3gPJg==", + "dev": true }, "arr-diff": { "version": "4.0.0", @@ -45154,9 +45867,9 @@ } }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.0.1.tgz", + "integrity": "sha512-vy5JPSOibF9yAeC2PoemRdA1MuSXX7vX5osdoxKf/6OUeppAWekZ3JIJVNWFMH6wgj7uHYyqZUSqE/b/3JLV1A==", "dev": true }, "babel-loader": { @@ -46357,6 +47070,16 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, + "clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -47637,6 +48360,170 @@ "type": "^1.0.1" } }, + "d3": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.4.4.tgz", + "integrity": "sha512-97FE+MYdAlV3R9P74+R3Uar7wUKkIFu89UWMjEaDhiJ9VxKvqaMxauImy8PC2DdBkdM2BxJOIoLxPrcZUyrKoQ==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "3", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "dependencies": { + "d3-array": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.6.tgz", + "integrity": "sha512-DCbBBNuKOeiR9h04ySRBMW52TFVc91O9wJziuyXw6Ztmy8D3oZbmCkOO3UHKC7ceNJsN2Mavo9+vwV8EAEUXzA==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.0.1.tgz", + "integrity": "sha512-gq6gZom9AFZby0YLduxT1qmrp4xpBA1YZr19OI717WIdKE2OM5ETq5qrHLb301IgxhLwcuxvGZVLeeWc/k1I6w==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.1.0.tgz", + "integrity": "sha512-tGDh1Muf8kWjEDT/LswZJ8WF85yDZLvVJpYU9Nq+8+yW1Z5enxrmXOhTArlkaElU+CTn0OTVNli+/i+HP45QEQ==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-zmV3lRnlaLI08y9IMRXSDshQb5Nj77smnfpnd2LrBa/2K281Jijactokeak14QacHs/kKq0AQ121nidNYlarbQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + } + } + }, "d3-array": { "version": "2.12.1", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", @@ -47645,6 +48532,11 @@ "internmap": "^1.0.0" } }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, "d3-brush": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-2.1.0.tgz", @@ -47657,11 +48549,40 @@ "d3-transition": "2" } }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-collection": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==" + }, "d3-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==" }, + "d3-contour": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-3.0.1.tgz", + "integrity": "sha512-0Oc4D0KyhwhM7ZL0RMnfGycLN7hxHB8CMmwZ3+H26PWAG0ozNuYG5hXSDNgmP1SgJkQMrlG6cP20HoaSbvcJTQ==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-delaunay": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.2.tgz", + "integrity": "sha512-IMLNldruDQScrcfT+MWnazhHbDJhcRJyOEBAJfwQnHle1RPh6WDuLvxNArUju2VSMSUuKlY5BGHRJ2cYyoFLQQ==", + "requires": { + "delaunator": "5" + } + }, "d3-dispatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", @@ -47676,16 +48597,67 @@ "d3-selection": "2" } }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, "d3-ease": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==" }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, "d3-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-2.0.0.tgz", "integrity": "sha512-Ab3S6XuE/Q+flY96HXT0jOXcM4EAClYFnRGY5zsjRGNy6qCYrQsMffs7cV5Q9xejb35zxW5hf/guKw34kvIKsA==" }, + "d3-geo": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.0.1.tgz", + "integrity": "sha512-Wt23xBych5tSy9IYAM1FR2rWIBFWa52B/oF/GYe5zbdHrg08FU8+BuI6X4PvTwPDdqdAdq04fuWJpELtsaEjeA==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, "d3-hierarchy": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-2.0.0.tgz", @@ -47704,6 +48676,21 @@ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-2.0.0.tgz", "integrity": "sha512-ZwZQxKhBnv9yHaiWd6ZU4x5BtCQ7pXszEV9CU6kRgwIQVQGLMv1oiL4M+MK/n79sYzsj+gcgpPQSctJUsLN7fA==" }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, "d3-scale": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-3.3.0.tgz", @@ -47716,6 +48703,15 @@ "d3-time-format": "2 - 3" } }, + "d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, "d3-selection": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", @@ -47762,6 +48758,304 @@ "d3-timer": "1 - 2" } }, + "d3-voronoi": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.4.tgz", + "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==" + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, + "dagre": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.8.5.tgz", + "integrity": "sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==", + "requires": { + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + } + }, + "dagre-d3": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/dagre-d3/-/dagre-d3-0.6.4.tgz", + "integrity": "sha512-e/6jXeCP7/ptlAM48clmX4xTZc5Ek6T6kagS7Oz2HrYSdqcLZFLqpAfh7ldbZRFfxCZVyh61NEPR08UQRVxJzQ==", + "requires": { + "d3": "^5.14", + "dagre": "^0.8.5", + "graphlib": "^2.1.8", + "lodash": "^4.17.15" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "d3": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-5.16.0.tgz", + "integrity": "sha512-4PL5hHaHwX4m7Zr1UapXW23apo6pexCgdetdJ5kTmADpG/7T9Gkxw0M0tf/pjoB63ezCCm0u5UaFYy2aMt0Mcw==", + "requires": { + "d3-array": "1", + "d3-axis": "1", + "d3-brush": "1", + "d3-chord": "1", + "d3-collection": "1", + "d3-color": "1", + "d3-contour": "1", + "d3-dispatch": "1", + "d3-drag": "1", + "d3-dsv": "1", + "d3-ease": "1", + "d3-fetch": "1", + "d3-force": "1", + "d3-format": "1", + "d3-geo": "1", + "d3-hierarchy": "1", + "d3-interpolate": "1", + "d3-path": "1", + "d3-polygon": "1", + "d3-quadtree": "1", + "d3-random": "1", + "d3-scale": "2", + "d3-scale-chromatic": "1", + "d3-selection": "1", + "d3-shape": "1", + "d3-time": "1", + "d3-time-format": "2", + "d3-timer": "1", + "d3-transition": "1", + "d3-voronoi": "1", + "d3-zoom": "1" + } + }, + "d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "d3-axis": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-1.0.12.tgz", + "integrity": "sha512-ejINPfPSNdGFKEOAtnBtdkpr24c4d4jsei6Lg98mxf424ivoDP2956/5HDpIAtmHo85lqT4pruy+zEgvRUBqaQ==" + }, + "d3-brush": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.1.6.tgz", + "integrity": "sha512-7RW+w7HfMCPyZLifTz/UnJmI5kdkXtpCbombUSs8xniAyo0vIbrDzDwUJB6eJOgl9u5DQOt2TQlYumxzD1SvYA==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + }, + "d3-chord": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.6.tgz", + "integrity": "sha512-JXA2Dro1Fxw9rJe33Uv+Ckr5IrAa74TlfDEhE/jfLOaXegMQFQTAgAw9WnZL8+HxVBRXaRGCkrNU7pJeylRIuA==", + "requires": { + "d3-array": "1", + "d3-path": "1" + } + }, + "d3-color": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-1.4.1.tgz", + "integrity": "sha512-p2sTHSLCJI2QKunbGb7ocOh7DgTAn8IrLx21QRc/BSnodXM4sv6aLQlnfpvehFMLZEfBc6g9pH9SWQccFYfJ9Q==" + }, + "d3-contour": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz", + "integrity": "sha512-hoPp4K/rJCu0ladiH6zmJUEz6+u3lgR+GSm/QdM2BBvDraU39Vr7YdDCicJcxP1z8i9B/2dJLgDC1NcvlF8WCg==", + "requires": { + "d3-array": "^1.1.1" + } + }, + "d3-dispatch": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==" + }, + "d3-drag": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.5.tgz", + "integrity": "sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==", + "requires": { + "d3-dispatch": "1", + "d3-selection": "1" + } + }, + "d3-dsv": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz", + "integrity": "sha512-9yVlqvZcSOMhCYzniHE7EVUws7Fa1zgw+/EAV2BxJoG3ME19V6BQFBwI855XQDsxyOuG7NibqRMTtiF/Qup46g==", + "requires": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + } + }, + "d3-ease": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz", + "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ==" + }, + "d3-fetch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-1.2.0.tgz", + "integrity": "sha512-yC78NBVcd2zFAyR/HnUiBS7Lf6inSCoWcSxFfw8FYL7ydiqe80SazNwoffcqOfs95XaLo7yebsmQqDKSsXUtvA==", + "requires": { + "d3-dsv": "1" + } + }, + "d3-force": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", + "requires": { + "d3-collection": "1", + "d3-dispatch": "1", + "d3-quadtree": "1", + "d3-timer": "1" + } + }, + "d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==" + }, + "d3-geo": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", + "requires": { + "d3-array": "1" + } + }, + "d3-hierarchy": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==" + }, + "d3-interpolate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.4.0.tgz", + "integrity": "sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA==", + "requires": { + "d3-color": "1" + } + }, + "d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "d3-polygon": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-1.0.6.tgz", + "integrity": "sha512-k+RF7WvI08PC8reEoXa/w2nSg5AUMTi+peBD9cmFc+0ixHfbs4QmxxkarVal1IkVkgxVuk9JSHhJURHiyHKAuQ==" + }, + "d3-quadtree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==" + }, + "d3-random": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-1.1.2.tgz", + "integrity": "sha512-6AK5BNpIFqP+cx/sreKzNjWbwZQCSUatxq+pPRmFIQaWuoD+NrbVWw7YWpHiXpCQ/NanKdtGDuB+VQcZDaEmYQ==" + }, + "d3-scale": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-2.2.2.tgz", + "integrity": "sha512-LbeEvGgIb8UMcAa0EATLNX0lelKWGYDQiPdHj+gLblGVhGLyNbaCn3EvrJf0A3Y/uOOU5aD6MTh5ZFCdEwGiCw==", + "requires": { + "d3-array": "^1.2.0", + "d3-collection": "1", + "d3-format": "1", + "d3-interpolate": "1", + "d3-time": "1", + "d3-time-format": "2" + } + }, + "d3-scale-chromatic": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz", + "integrity": "sha512-ACcL46DYImpRFMBcpk9HhtIyC7bTBR4fNOPxwVSl0LfulDAwyiHyPOTqcDG1+t5d4P9W7t/2NAuWu59aKko/cg==", + "requires": { + "d3-color": "1", + "d3-interpolate": "1" + } + }, + "d3-selection": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.4.2.tgz", + "integrity": "sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==" + }, + "d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "requires": { + "d3-path": "1" + } + }, + "d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==" + }, + "d3-time-format": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", + "requires": { + "d3-time": "1" + } + }, + "d3-timer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==" + }, + "d3-transition": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.3.2.tgz", + "integrity": "sha512-sc0gRU4PFqZ47lPVHloMn9tlPcv8jxgOQg+0zjhfZXMQuvppjG6YuwdMBE0TuqCZjeJkLecku/l9R0JPcRhaDA==", + "requires": { + "d3-color": "1", + "d3-dispatch": "1", + "d3-ease": "1", + "d3-interpolate": "1", + "d3-selection": "^1.1.0", + "d3-timer": "1" + } + }, + "d3-zoom": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.8.3.tgz", + "integrity": "sha512-VoLXTK4wvy1a0JpH2Il+F2CiOhVu7VRXWF5M/LroMIh3/zBAC3WAt7QoIvPibOavVo20hN6/37vwAsdBejLyKQ==", + "requires": { + "d3-dispatch": "1", + "d3-drag": "1", + "d3-interpolate": "1", + "d3-selection": "1", + "d3-transition": "1" + } + } + } + }, "dash-ast": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", @@ -47935,12 +49229,25 @@ "isobject": "^3.0.1" } }, + "delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "requires": { + "robust-predicates": "^3.0.0" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -48075,9 +49382,9 @@ "dev": true }, "dns-packet": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", - "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", "dev": true, "requires": { "@leichtgewicht/ip-codec": "^2.0.1" @@ -48156,6 +49463,11 @@ "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.6.tgz", "integrity": "sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ==" }, + "dompurify": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.8.tgz", + "integrity": "sha512-eVhaWoVibIzqdGYjwsBWodIQIaXFSB+cKDf4cfxLMsK0xiud6SE+/WCVx/Xw/UwQsa4cS3T2eITcdtmTg2UKcw==" + }, "domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -50537,12 +51849,28 @@ "slash": "^3.0.0" } }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "requires": { + "delegate": "^3.1.2" + } + }, "graceful-fs": { "version": "4.2.9", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", "dev": true }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, "gzip-size": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", @@ -51169,7 +52497,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -52381,9 +53708,9 @@ } }, "katex": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.15.2.tgz", - "integrity": "sha512-FfZ/f6f8bQdLmJ3McXDNTkKenQkoXkItpW0I9bsG2wgb+8JAY5bwpXFtI8ZVrg5hc1wo1X/UIhdkVMpok46tEQ==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.0.tgz", + "integrity": "sha512-wPRB4iUPysfH97wTgG5/tRLYxmKVq6Q4jRAWRVOUxXB1dsiv4cvcNjqabHkrOvJHM1Bpk3WrgmllSO1vIvP24w==", "requires": { "commander": "^8.0.0" }, @@ -52395,6 +53722,11 @@ } } }, + "khroma": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", + "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" + }, "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -52549,8 +53881,7 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "lodash.debounce": { "version": "4.0.8", @@ -52869,14 +54200,14 @@ "requires": {} }, "marked": { - "version": "4.0.12", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", - "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==" + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.17.tgz", + "integrity": "sha512-Wfk0ATOK5iPxM4ptrORkFemqroz0ZDxp5MWfYA7H/F+wO17NRWV5Ypxi6p3g2Xmw2bKeiYOl6oVnLHKxBA0VhA==" }, "material-icons": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.1.tgz", - "integrity": "sha512-FCZ3mSoXzQ0UetDfhWpLOPG+duErvt1ALhnNt1TMB7GYHq5hvOqB0HE292qWcuVkCGxej2aARz//dz47zM3Cdg==" + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/material-icons/-/material-icons-1.11.2.tgz", + "integrity": "sha512-maKSVQNQEHrHXjKTPTwH0141hR2bC8fFUaX4bJzzwVRs7jY+9A+jx0kH/lpgEGIPoYR8gho4iLDvWN3mBRL53A==" }, "md5.js": { "version": "1.3.5", @@ -53054,6 +54385,22 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "mermaid": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-9.1.2.tgz", + "integrity": "sha512-RVf3hBKqiMfyORHboCaEjOAK1TomLO50hYRPvlTrZCXlCniM5pRpe8UlkHBjjpaLtioZnbdYv/vEVj7iKnwkJQ==", + "requires": { + "@braintree/sanitize-url": "^6.0.0", + "d3": "^7.0.0", + "dagre": "^0.8.5", + "dagre-d3": "^0.6.4", + "dompurify": "2.3.8", + "graphlib": "^2.1.8", + "khroma": "^2.0.0", + "moment-mini": "^2.24.0", + "stylis": "^4.0.10" + } + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -53299,6 +54646,11 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true }, + "moment-mini": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment-mini/-/moment-mini-2.24.0.tgz", + "integrity": "sha512-9ARkWHBs+6YJIvrIp0Ik5tyTTtP9PoV0Ssu2Ocq5y9v8+NOOpWiRshAp8c4rZVWTOe+157on/5G+zj5pwIQFEQ==" + }, "morgan": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz", @@ -53490,16 +54842,25 @@ "dev": true }, "ngx-markdown": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-13.1.0.tgz", - "integrity": "sha512-Bm4WhMI9xSnWTzzQWs/e1+d/l0s3+eFU0Ug/lcePmiWEZAPqiceEe6akjh4+Tjp61SmZ/wmKr8Kvc8mr9moP9A==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-14.0.0.tgz", + "integrity": "sha512-gS/41oYTst0pppGk5vcfr+ZqmveGwu66gQo/UOv6TM+LICBCQMbYJwnlPwFtoWgOLMf8JAzCVDMcdu2I0GIG7A==", "requires": { - "@types/marked": "^4.0.2", + "@types/marked": "^4.0.3", + "clipboard": "^2.0.11", "emoji-toolkit": "^6.6.0", - "katex": "^0.15.1", - "marked": "^4.0.10", - "prismjs": "^1.25.0", + "katex": "^0.16.0", + "marked": "^4.0.17", + "mermaid": "^9.1.2", + "prismjs": "^1.28.0", "tslib": "^2.3.0" + }, + "dependencies": { + "prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" + } } }, "nice-napi": { @@ -55526,7 +56887,8 @@ "prismjs": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", - "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==" + "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==", + "dev": true }, "proc-log": { "version": "2.0.1", @@ -56780,6 +58142,11 @@ "inherits": "^2.0.1" } }, + "robust-predicates": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.1.tgz", + "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -56818,6 +58185,11 @@ } } }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "rxjs": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", @@ -56844,8 +58216,7 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sane": { "version": "4.1.0", @@ -57070,7 +58441,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", "dev": true, "requires": { "is-number": "^3.0.0", @@ -57179,6 +58550,11 @@ "get-assigned-identifiers": "^1.1.0" } }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -57195,9 +58571,9 @@ } }, "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -58471,6 +59847,11 @@ "inline-style-parser": "0.1.1" } }, + "stylis": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.1.tgz", + "integrity": "sha512-lVrM/bNdhVX2OgBFNa2YJ9Lxj7kPzylieHd3TNjuGE0Re9JB7joL5VUKOVH1kdNNJTgGPpT8hmwIAPLaSyEVFQ==" + }, "stylus": { "version": "0.57.0", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.57.0.tgz", @@ -58892,6 +60273,11 @@ "setimmediate": "^1.0.4" } }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, "tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", diff --git a/package.json b/package.json index 2c725711..177f5fe4 100644 --- a/package.json +++ b/package.json @@ -22,17 +22,17 @@ "docs:json": "compodoc -p ./tsconfig.json -e json -d ." }, "dependencies": { - "@angular/animations": "^14.0.1", - "@angular/cdk": "^14.0.1", - "@angular/common": "^14.0.1", - "@angular/compiler": "^14.0.1", - "@angular/core": "^14.0.1", - "@angular/forms": "^14.0.1", - "@angular/material": "^14.0.1", - "@angular/platform-browser": "^14.0.1", - "@angular/platform-browser-dynamic": "^14.0.1", - "@angular/platform-server": "^14.0.1", - "@angular/router": "^14.0.1", + "@angular/animations": "^14.0.2", + "@angular/cdk": "^14.0.2", + "@angular/common": "^14.0.2", + "@angular/compiler": "^14.0.2", + "@angular/core": "^14.0.2", + "@angular/forms": "^14.0.2", + "@angular/material": "^14.0.2", + "@angular/platform-browser": "^14.0.2", + "@angular/platform-browser-dynamic": "^14.0.2", + "@angular/platform-server": "^14.0.2", + "@angular/router": "^14.0.2", "@braintree/sanitize-url": "^6.0.0", "@browser-logos/chrome": "^1.0.18", "@browser-logos/chromium": "^1.1.5", @@ -43,28 +43,28 @@ "@browser-logos/safari": "^2.0.0", "@browser-logos/safari-ios": "^1.0.15", "@egoistdeveloper/operating-system-logos": "~1.0.0", - "@micro-sentry/angular": "^6.1.0", - "@stripe/stripe-js": "^1.29.0", + "@micro-sentry/angular": "^6.1.1", + "@stripe/stripe-js": "^1.32.0", "@swimlane/ngx-charts": "^20.1.0", "cborg": "^1.9.4", "date-fns": "^2.28.0", - "material-icons": "^1.11.1", - "ngx-markdown": "^13.1.0", + "material-icons": "^1.11.2", + "ngx-markdown": "^14.0.0", "qrcode": "^1.5.0", "rxjs": "^7.5.5", "tslib": "^2.0.0", "zone.js": "~0.11.4" }, "devDependencies": { - "@angular-devkit/build-angular": "^14.0.1", - "@angular-eslint/builder": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin": "14.0.0-alpha.0", - "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.0", - "@angular-eslint/schematics": "14.0.0-alpha.0", - "@angular-eslint/template-parser": "14.0.0-alpha.0", - "@angular/cli": "^14.0.1", - "@angular/compiler-cli": "^14.0.1", - "@angular/language-service": "^14.0.1", + "@angular-devkit/build-angular": "^14.0.2", + "@angular-eslint/builder": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin": "14.0.0-alpha.3", + "@angular-eslint/eslint-plugin-template": "14.0.0-alpha.3", + "@angular-eslint/schematics": "14.0.0-alpha.3", + "@angular-eslint/template-parser": "14.0.0-alpha.3", + "@angular/cli": "^14.0.2", + "@angular/compiler-cli": "^14.0.2", + "@angular/language-service": "^14.0.2", "@babel/core": "^7.7.2", "@compodoc/compodoc": "^1.1.19", "@cypress/webpack-preprocessor": "^5.12.0", From 0da6e425a2e931fabd49903597e1e4c5ab96fb80 Mon Sep 17 00:00:00 2001 From: David Burke Date: Thu, 23 Jun 2022 19:35:36 +0000 Subject: [PATCH 3/4] Resolve "Internationalization support" --- README.md | 38 + angular.json | 45 +- bin/update-i18n.sh | 4 + bin/xliff-to-json/app.js | 94 +++ bin/xliff-to-json/utils.js | 19 + bin/xliff-to-json/xliff-to-json | 7 + package-lock.json | 696 +++++++++++++++++- package.json | 9 +- .../accept-invite.component.html | 7 +- src/app/auth/auth.component.ts | 31 +- .../issues-page/issues-page.component.html | 6 +- .../user-reports-issue.component.html | 7 +- .../project-filter-bar.component.html | 2 +- .../login-fido2/login-fido2.component.html | 47 +- .../login-totp/login-totp.component.html | 14 +- src/app/login/login.component.html | 22 +- .../main-nav/main-nav/main-nav.component.html | 17 +- .../new-organization.component.html | 8 +- .../profile/account/account.component.html | 6 +- .../auth-tokens/auth-tokens.component.html | 9 +- src/app/releases/releases.component.html | 3 +- .../team-projects.component.html | 2 +- src/assets/i18n/messages.json | 1 + src/assets/i18n/messages.nb.json | 63 ++ src/locale/messages.nb.xlf | 371 ++++++++++ src/locale/messages.xlf | 310 ++++++++ src/main.ts | 34 +- src/polyfills.ts | 4 + 28 files changed, 1756 insertions(+), 120 deletions(-) create mode 100755 bin/update-i18n.sh create mode 100644 bin/xliff-to-json/app.js create mode 100644 bin/xliff-to-json/utils.js create mode 100755 bin/xliff-to-json/xliff-to-json create mode 100644 src/assets/i18n/messages.json create mode 100644 src/assets/i18n/messages.nb.json create mode 100644 src/locale/messages.nb.xlf create mode 100644 src/locale/messages.xlf diff --git a/README.md b/README.md index 0fa26d97..e7d97506 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,44 @@ We use Cypress to run end to end tests. Be aware the tests will seed the backend 2. Run the frontend development server `npm start` 3. Run Cypress `npm run cy:open` +# Internationalization (i18n) + +[Angular Localize](https://angular.io/guide/i18n-overview) is used to manage i18n in GlitchTip. [ng-extract-i18n-merge](https://github.com/daniel-sc/ng-extract-i18n-merge) is used to update and merge translation files. + +## Adding a new language + +1. Copy `src/locale/messages.xlf` to `src/locale/messages.CODE.xlf` where CODE is your language code. +2. Edit `angular.json` and your language code and newly created file. + +``` + "i18n": { + "sourceLocale": "en-US", + "locales": { + "CODE": { + "translation": "src/locale/messages.CODE.xlf" + } + } + }, + +... + + "extract-i18n": { + "options": { + "targetFiles": ["../locale/messages.CODE.xlf"] + } + }, +``` + +3. Add language code to src/main.ts `const availableLocales = ["en", "CODE"];` +4. Edit the messages.CODE.xlf file. Consider using a tool such as Poedit. +5. Open a [merge request](https://gitlab.com/glitchtip/glitchtip-frontend/-/merge_requests/new). + +## Updating message files + +`npm run extract-i18n` will update all message files with the latest extracted strings from the code. + +To test out locally, run `npm run i18n-create-json`. Ensure that `navigator.language` returns the desired code. + # Contributing Open an issue and say hello! If you use Sentry as a reference, make sure only to refer to open source Sentry which we forked [here](https://gitlab.com/glitchtip/sentry-open-source). Never copy code nor ideas from Sentry on GitHub as that would violate their proprietary license. diff --git a/angular.json b/angular.json index 3c2e9740..ed14e970 100644 --- a/angular.json +++ b/angular.json @@ -16,6 +16,14 @@ "root": "", "sourceRoot": "src", "prefix": "gt", + "i18n": { + "sourceLocale": "en-US", + "locales": { + "nb": { + "translation": "src/locale/messages.nb.xlf" + } + } + }, "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", @@ -49,13 +57,9 @@ "output": "./static/assets/images/os-logos" } ], - "styles": [ - "src/styles.scss" - ], + "styles": ["src/styles.scss"], "stylePreprocessorOptions": { - "includePaths": [ - "./src/assets/styles" - ] + "includePaths": ["./src/assets/styles"] }, "scripts": [] }, @@ -138,9 +142,12 @@ "defaultConfiguration": "development" }, "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", + "builder": "ng-extract-i18n-merge:ng-extract-i18n-merge", "options": { - "browserTarget": "glitchtip-frontend:build" + "browserTarget": "glitchtip-frontend:build", + "format": "xlf2", + "outputPath": "src/locale", + "targetFiles": ["../locale/messages.nb.xlf"] } }, "test": { @@ -151,17 +158,10 @@ "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "inlineStyleLanguage": "scss", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "src/styles.scss" - ], + "assets": ["src/favicon.ico", "src/assets"], + "styles": ["src/styles.scss"], "stylePreprocessorOptions": { - "includePaths": [ - "./src/assets/styles" - ] + "includePaths": ["./src/assets/styles"] }, "scripts": [] } @@ -169,10 +169,7 @@ "lint": { "builder": "@angular-eslint/builder:lint", "options": { - "lintFilePatterns": [ - "src/**/*.ts", - "src/**/*.html" - ] + "lintFilePatterns": ["src/**/*.ts", "src/**/*.html"] } } } @@ -180,8 +177,6 @@ }, "cli": { "analytics": "86390919-7a40-4e23-8811-d61b83438874", - "schematicCollections": [ - "@angular-eslint/schematics" - ] + "schematicCollections": ["@angular-eslint/schematics"] } } diff --git a/bin/update-i18n.sh b/bin/update-i18n.sh new file mode 100755 index 00000000..6182c35a --- /dev/null +++ b/bin/update-i18n.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +bin/xliff-to-json/xliff-to-json src/locale/ +mv src/locale/*.json src/assets/i18n/ diff --git a/bin/xliff-to-json/app.js b/bin/xliff-to-json/app.js new file mode 100644 index 00000000..780ef882 --- /dev/null +++ b/bin/xliff-to-json/app.js @@ -0,0 +1,94 @@ +var fs = require('fs'); +var path = require('path'); +const xliff2js = require('xliff/xliff2js'); +const targetOfjs = require('xliff/targetOfjs'); +const utils = require('./utils'); + +// function to find all files in a directory with a specific extension +function findByExt(base,exts,files,result) +{ + files = files || fs.readdirSync(base) + result = result || [] + + files.forEach( + function (file) { + var newbase = path.join(base,file) + if (!fs.statSync(newbase).isDirectory()) + { + for (let i = 0; i < exts.length; i++) { + const ext = exts[i]; + if ( file.substr(-1*(ext.length+1)) == '.' + ext ) + { + result.push(newbase); + break; + } + } + } + } + ) + return result +} + +async function convert(input_path) { + if (!input_path) { + return; + } + + if (!fs.existsSync(input_path)) { + console.log(`ERROR: File or directory "${input_path}" not found!`); + return; + } + + const is_dir = fs.lstatSync(input_path).isDirectory(); + + let files = null; + + if (is_dir) { + // gets all files in input with extension 'xlf' or 'xliff' + files = findByExt(input_path, ['xlf', 'xliff']); + } else { + files = [input_path]; + } + + if (files.length === 0) { + console.log(`ERROR: No files found in "${input_path}"!`); + return; + } + + for (let i = 0; i < files.length; i++) { + let file = files[i]; + let base_file_name = file.replace(/^.*[\\\/]/, ''); + + let file_info = fs.readFileSync(file, 'utf8'); + + // getting data + const json_obj = await xliff2js(file_info); + + // got data, now convert to JSON + const res = targetOfjs(json_obj); + const string_res = JSON.stringify(res, null, 2); + + // writes new JSON file + const new_path = path.join(is_dir ? input_path : path.dirname(input_path), base_file_name.substring(0, base_file_name.length - 3) + 'json'); + if (fs.existsSync(new_path)) { + const old_file = fs.readFileSync(new_path, 'utf8'); + if (old_file === string_res) { + console.log(`INFO: Skipping converting "${file}" to "${new_path}" as the output is equivalent.`); + } else { + console.log(`INFO: Overwriting "${file}" with "${new_path}".`); + } + } else { + fs.writeFileSync(new_path, string_res); + console.log(`INFO: Converted "${file}" to "${new_path}".`); + } + } +} + +if (require.main === module) { + const input_path = utils.getPath(false); + convert(input_path); +} + +module.exports = { + convert: convert +} diff --git a/bin/xliff-to-json/utils.js b/bin/xliff-to-json/utils.js new file mode 100644 index 00000000..fa446c14 --- /dev/null +++ b/bin/xliff-to-json/utils.js @@ -0,0 +1,19 @@ +exports.getPath = (using_npm) => { + const args_start_index = using_npm ? 2 : 2; + let input_path = null; + const args = process.argv; + switch (args.length) { + case args_start_index: + input_path = process.cwd(); + console.log('INFO: File or directory not specified, defaulting to current directory.'); + break; + case args_start_index + 1: + input_path = args[args_start_index]; + break; + default: + const base_command = using_npm ? 'xliff-to-json' : 'node app.js' + console.log(`ERROR: Args count mismatch! Usage is: ${base_command} [file or directory]`) + return null; + } + return input_path; +} diff --git a/bin/xliff-to-json/xliff-to-json b/bin/xliff-to-json/xliff-to-json new file mode 100755 index 00000000..61592450 --- /dev/null +++ b/bin/xliff-to-json/xliff-to-json @@ -0,0 +1,7 @@ +#!/usr/bin/env node + +const app = require('./app'); +const utils = require('./utils'); + +const dir = utils.getPath(true); +app.convert(dir); diff --git a/package-lock.json b/package-lock.json index 2493735e..f84c9dd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,6 +51,7 @@ "@angular/cli": "^14.0.2", "@angular/compiler-cli": "^14.0.2", "@angular/language-service": "^14.0.2", + "@angular/localize": "^14.0.2", "@babel/core": "^7.7.2", "@compodoc/compodoc": "^1.1.19", "@cypress/webpack-preprocessor": "^5.12.0", @@ -84,11 +85,14 @@ "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~3.3.0", "karma-jasmine-html-reporter": "^1.5.0", + "ng-extract-i18n-merge": "^2.0.1", "ts-loader": "^9.2.6", "ts-node": "~7.0.0", "typescript": "~4.7.2", "wait-on": "^5.3.0", - "webpack-bundle-analyzer": "^4.5.0" + "webpack-bundle-analyzer": "^4.5.0", + "xliff": "^6.0.0", + "xliff-to-json": "^1.0.4" } }, "node_modules/@aduh95/viz.js": { @@ -514,9 +518,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "13.3.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.7.tgz", - "integrity": "sha512-Ucy4bJmlgCoBenuVeGMdtW9dE8+cD+guWCgqexsFIG21KJ/l0ShZEZ/dGC1XibzaIs1HbKiTr/T1MOjInCV1rA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", "dev": true, "dependencies": { "ajv": "8.9.0", @@ -559,12 +563,12 @@ "dev": true }, "node_modules/@angular-devkit/schematics": { - "version": "13.3.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.7.tgz", - "integrity": "sha512-6TKpFMwiiXmPhiVdbkSJrkBXj8n7SVVhsHl2GodDLVTb8OT3fxYIB9EU8Il07AMfDcjpydOcJduCFPOsQYd7BA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", + "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", "dev": true, "dependencies": { - "@angular-devkit/core": "13.3.7", + "@angular-devkit/core": "13.3.8", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -1026,6 +1030,136 @@ "node": "^14.15.0 || >=16.10.0" } }, + "node_modules/@angular/localize": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.0.2.tgz", + "integrity": "sha512-m6fNQNnua0kYkyqtaemATcJopaNigSZTEo1m905pwtcD/GPLFl+wItbBnZqBTa3DsI1Oxwo6K0ZNcInnUYNXvQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.18.2", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.0.2", + "@angular/compiler-cli": "14.0.2" + } + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/localize/node_modules/@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/localize/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "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==", + "dev": true, + "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==", + "dev": true, + "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.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@angular/material": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.2.tgz", @@ -23816,6 +23950,15 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -25579,6 +25722,156 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "node_modules/ng-extract-i18n-merge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.0.1.tgz", + "integrity": "sha512-gnHmEMA3xiLrEbYs5YNTLnKWxn6rWQp0KDKGAP7LXgGPubddsBERFaWPHSK9JHA2kxLyverPGLqy6xD8Qs2Ziw==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "^0.1301.0", + "@angular-devkit/core": "^13.0.0", + "@angular-devkit/schematics": "^13.0.0", + "@schematics/angular": "^13.0.0", + "xliff-simple-merge": "~0.12.1", + "xml_normalize": "~0.8.4", + "xmldoc": "~1.1.2" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/architect": { + "version": "0.1301.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", + "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.1.4", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@angular-devkit/core": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", + "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", + "dev": true, + "dependencies": { + "ajv": "8.8.2", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@schematics/angular": { + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", + "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", + "jsonc-parser": "3.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@schematics/angular/node_modules/@angular-devkit/core": { + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", + "dev": true, + "dependencies": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + }, + "engines": { + "node": "^12.20.0 || ^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/@schematics/angular/node_modules/ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ng-extract-i18n-merge/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ng-extract-i18n-merge/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/ng-extract-i18n-merge/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/ngx-markdown": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-14.0.0.tgz", @@ -35050,6 +35343,96 @@ "node": ">= 6" } }, + "node_modules/xliff": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/xliff/-/xliff-6.0.0.tgz", + "integrity": "sha512-N058dhmntriq/8BZw8HGWuseFoBjT+hRq0ETi4i+ioPraSay0LkpSr8lW7pB7NdbulqrYoA7Uu0X8t+Plu7GCQ==", + "dev": true, + "dependencies": { + "xml-js": "1.6.11" + } + }, + "node_modules/xliff-simple-merge": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-0.12.1.tgz", + "integrity": "sha512-D8I1BNoOngEbiHW4s/nIMFzIN1u5n3GUuPeu5cKod5M5kC73vzR8412wWKyYwXuK3dNbx02Y48bt0kXoBi+WMQ==", + "dev": true, + "dependencies": { + "commander": "~8.3.0", + "js-levenshtein": "~1.1.6", + "xmldoc": "~1.1.2" + }, + "bin": { + "xliff-simple-merge": "dist/src/index.js" + } + }, + "node_modules/xliff-simple-merge/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/xliff-to-json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/xliff-to-json/-/xliff-to-json-1.0.4.tgz", + "integrity": "sha512-shxNrU2ZzFbyvRxVIff0KxYyU0nNP8/AZsLCEW4Pb+p7Ei11FIr8hFmmbk3EqXzBgbNrVHVB9FPUNpLQ3ADakw==", + "dev": true, + "dependencies": { + "xliff": "^4.4.0" + }, + "bin": { + "xliff-to-json": "bin/index.js" + } + }, + "node_modules/xliff-to-json/node_modules/xliff": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/xliff/-/xliff-4.4.0.tgz", + "integrity": "sha512-SVzjB3hTHJ/CbsIJtbQg2BAxhvVJqbZ3OluMS7u6JnCbf0/twuj2KASghYHiKHz2sJqZo42dGjydp0URKmWWoA==", + "dev": true, + "dependencies": { + "xml-js": "1.6.11" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/xml_normalize": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/xml_normalize/-/xml_normalize-0.8.4.tgz", + "integrity": "sha512-I+PiD+W/fS7YOWb4THhQfvkzd1mCuTT3KoRt4PTxiWYbH1RY74w5ewcIas8ja9APC8Ho2izg8VcNnTTN35qM9A==", + "dev": true, + "dependencies": { + "commander": "~7.1.0", + "xmldoc": "~1.1.2" + }, + "bin": { + "xml_normalize": "dist/src/index.js" + } + }, + "node_modules/xml_normalize/node_modules/commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dev": true, + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, "node_modules/xmldoc": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", @@ -35491,9 +35874,9 @@ } }, "@angular-devkit/core": { - "version": "13.3.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.7.tgz", - "integrity": "sha512-Ucy4bJmlgCoBenuVeGMdtW9dE8+cD+guWCgqexsFIG21KJ/l0ShZEZ/dGC1XibzaIs1HbKiTr/T1MOjInCV1rA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", "dev": true, "requires": { "ajv": "8.9.0", @@ -35522,12 +35905,12 @@ } }, "@angular-devkit/schematics": { - "version": "13.3.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.7.tgz", - "integrity": "sha512-6TKpFMwiiXmPhiVdbkSJrkBXj8n7SVVhsHl2GodDLVTb8OT3fxYIB9EU8Il07AMfDcjpydOcJduCFPOsQYd7BA==", + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-13.3.8.tgz", + "integrity": "sha512-7mTlxZhS9uHxtmOiZeSMkKdIE5r5FmQ/1IBhRBfD5XDQdipQkUJyOtclPO/+t/AJIG0+LYt9+7X5hHUr7W3kZA==", "dev": true, "requires": { - "@angular-devkit/core": "13.3.7", + "@angular-devkit/core": "13.3.8", "jsonc-parser": "3.0.0", "magic-string": "0.25.7", "ora": "5.4.1", @@ -35836,6 +36219,101 @@ "integrity": "sha512-R322CUZnYa9fDBQQnPplJgwS1lUeVClJKpcRhdFMVX9cPKAnYA+qq/VoPfqvX07Sy6Hawtrh7bYDF/Iek5MQCg==", "dev": true }, + "@angular/localize": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-14.0.2.tgz", + "integrity": "sha512-m6fNQNnua0kYkyqtaemATcJopaNigSZTEo1m905pwtcD/GPLFl+wItbBnZqBTa3DsI1Oxwo6K0ZNcInnUYNXvQ==", + "dev": true, + "requires": { + "@babel/core": "7.18.2", + "glob": "8.0.3", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.2.tgz", + "integrity": "sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.2", + "@babel/helper-compilation-targets": "^7.18.2", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.2", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.2", + "@babel/types": "^7.18.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.2.tgz", + "integrity": "sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.2", + "@jridgewell/gen-mapping": "^0.3.0", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@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==", + "dev": true, + "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==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, "@angular/material": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.2.tgz", @@ -53463,6 +53941,12 @@ "@sideway/pinpoint": "^2.0.0" } }, + "js-levenshtein": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz", + "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==", + "dev": true + }, "js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -54841,6 +55325,113 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "ng-extract-i18n-merge": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.0.1.tgz", + "integrity": "sha512-gnHmEMA3xiLrEbYs5YNTLnKWxn6rWQp0KDKGAP7LXgGPubddsBERFaWPHSK9JHA2kxLyverPGLqy6xD8Qs2Ziw==", + "dev": true, + "requires": { + "@angular-devkit/architect": "^0.1301.0", + "@angular-devkit/core": "^13.0.0", + "@angular-devkit/schematics": "^13.0.0", + "@schematics/angular": "^13.0.0", + "xliff-simple-merge": "~0.12.1", + "xml_normalize": "~0.8.4", + "xmldoc": "~1.1.2" + }, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1301.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1301.4.tgz", + "integrity": "sha512-p6G8CEMnE+gYwxRyEttj3QGsuNJ3Kusi7iwBIzWyf2RpJSdGzXdwUEiRGg6iS0YHFr06/ZFfAWfnM2DQvNm4TA==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.1.4", + "rxjs": "6.6.7" + } + }, + "@angular-devkit/core": { + "version": "13.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.1.4.tgz", + "integrity": "sha512-225Gjy4iVxh5Jo9njJnaG75M/Dt95UW+dEPCGWKV5E/++7UUlXlo9sNWq8x2vJm2nhtsPkpnXNOt4pW1mIDwqQ==", + "dev": true, + "requires": { + "ajv": "8.8.2", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "@schematics/angular": { + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-13.3.8.tgz", + "integrity": "sha512-VKRTTNYX5OsaJ6sWlCIuU71qihV3ysNNJ49wqLedOlWm1v0GMwoyGMCTJk9OZab1rpo/tYfLTcUlYqP3l6GVDQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "13.3.8", + "@angular-devkit/schematics": "13.3.8", + "jsonc-parser": "3.0.0" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "13.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-13.3.8.tgz", + "integrity": "sha512-PCmfMkErpnH429l1cANak4PnCpAscqAubS6Dw83++cS34ht0/bgKRb2zSyBuB2Ka6kw7wAZ3fCyTcVvyfxVFEg==", + "dev": true, + "requires": { + "ajv": "8.9.0", + "ajv-formats": "2.1.1", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.7", + "source-map": "0.7.3" + } + }, + "ajv": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", + "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + } + } + }, + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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 + } + } + }, "ngx-markdown": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-14.0.0.tgz", @@ -62177,6 +62768,81 @@ "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==" }, + "xliff": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/xliff/-/xliff-6.0.0.tgz", + "integrity": "sha512-N058dhmntriq/8BZw8HGWuseFoBjT+hRq0ETi4i+ioPraSay0LkpSr8lW7pB7NdbulqrYoA7Uu0X8t+Plu7GCQ==", + "dev": true, + "requires": { + "xml-js": "1.6.11" + } + }, + "xliff-simple-merge": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/xliff-simple-merge/-/xliff-simple-merge-0.12.1.tgz", + "integrity": "sha512-D8I1BNoOngEbiHW4s/nIMFzIN1u5n3GUuPeu5cKod5M5kC73vzR8412wWKyYwXuK3dNbx02Y48bt0kXoBi+WMQ==", + "dev": true, + "requires": { + "commander": "~8.3.0", + "js-levenshtein": "~1.1.6", + "xmldoc": "~1.1.2" + }, + "dependencies": { + "commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true + } + } + }, + "xliff-to-json": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/xliff-to-json/-/xliff-to-json-1.0.4.tgz", + "integrity": "sha512-shxNrU2ZzFbyvRxVIff0KxYyU0nNP8/AZsLCEW4Pb+p7Ei11FIr8hFmmbk3EqXzBgbNrVHVB9FPUNpLQ3ADakw==", + "dev": true, + "requires": { + "xliff": "^4.4.0" + }, + "dependencies": { + "xliff": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/xliff/-/xliff-4.4.0.tgz", + "integrity": "sha512-SVzjB3hTHJ/CbsIJtbQg2BAxhvVJqbZ3OluMS7u6JnCbf0/twuj2KASghYHiKHz2sJqZo42dGjydp0URKmWWoA==", + "dev": true, + "requires": { + "xml-js": "1.6.11" + } + } + } + }, + "xml_normalize": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/xml_normalize/-/xml_normalize-0.8.4.tgz", + "integrity": "sha512-I+PiD+W/fS7YOWb4THhQfvkzd1mCuTT3KoRt4PTxiWYbH1RY74w5ewcIas8ja9APC8Ho2izg8VcNnTTN35qM9A==", + "dev": true, + "requires": { + "commander": "~7.1.0", + "xmldoc": "~1.1.2" + }, + "dependencies": { + "commander": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.1.0.tgz", + "integrity": "sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==", + "dev": true + } + } + }, + "xml-js": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", + "integrity": "sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==", + "dev": true, + "requires": { + "sax": "^1.2.4" + } + }, "xmldoc": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", diff --git a/package.json b/package.json index 177f5fe4..d6593af5 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,9 @@ "build-storybook": "npm run docs:json && build-storybook", "build-stats": "ng build --stats-json", "analyze": "webpack-bundle-analyzer dist/glitchtip-frontend/stats.json", - "docs:json": "compodoc -p ./tsconfig.json -e json -d ." + "docs:json": "compodoc -p ./tsconfig.json -e json -d .", + "extract-i18n": "ng extract-i18n", + "i18n-create-json": "bin/xliff-to-json/xliff-to-json src/locale/ && mv src/locale/*.json src/assets/i18n/" }, "dependencies": { "@angular/animations": "^14.0.2", @@ -65,6 +67,7 @@ "@angular/cli": "^14.0.2", "@angular/compiler-cli": "^14.0.2", "@angular/language-service": "^14.0.2", + "@angular/localize": "^14.0.2", "@babel/core": "^7.7.2", "@compodoc/compodoc": "^1.1.19", "@cypress/webpack-preprocessor": "^5.12.0", @@ -98,10 +101,12 @@ "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~3.3.0", "karma-jasmine-html-reporter": "^1.5.0", + "ng-extract-i18n-merge": "^2.0.1", "ts-loader": "^9.2.6", "ts-node": "~7.0.0", "typescript": "~4.7.2", "wait-on": "^5.3.0", - "webpack-bundle-analyzer": "^4.5.0" + "webpack-bundle-analyzer": "^4.5.0", + "xliff": "^6.0.0" } } diff --git a/src/app/accept/accept-invite/accept-invite.component.html b/src/app/accept/accept-invite/accept-invite.component.html index c8d19403..acdfff80 100644 --- a/src/app/accept/accept-invite/accept-invite.component.html +++ b/src/app/accept/accept-invite/accept-invite.component.html @@ -7,7 +7,7 @@ [class.not-skinny]="isLoggedIn$ | async" > - Organization Invite + Organization Invite

You have been invited to join {{ acceptInfo.org_user.organization.name }} so you can @@ -27,13 +27,14 @@ mat-flat-button color="primary" (click)="onSubmit()" + i18n > Accept invitation -

+

To continue, you must either log in to your existing account, or create a new one.

@@ -44,6 +45,7 @@ color="primary" [routerLink]="['/register']" [queryParams]="{ next: nextUrl$ | async }" + i18n > Create new account @@ -52,6 +54,7 @@ color="primary" [routerLink]="['/login']" [queryParams]="{ next: nextUrl$ | async }" + i18n > Log in with existing account diff --git a/src/app/auth/auth.component.ts b/src/app/auth/auth.component.ts index 4879fccf..a053b0c4 100644 --- a/src/app/auth/auth.component.ts +++ b/src/app/auth/auth.component.ts @@ -52,7 +52,10 @@ export class AuthComponent implements OnInit { const code = query.get("code"); // keycloak: verify nonce - if (provider === "keycloak" && !AuthComponent.verifyKeycloakNonce(accessToken)) { + if ( + provider === "keycloak" && + !AuthComponent.verifyKeycloakNonce(accessToken) + ) { this.router.navigate([]).then(); this.snackbar.open("Invalid authentication response, please try again."); return; @@ -74,28 +77,32 @@ export class AuthComponent implements OnInit { } } - private static verifyKeycloakNonce(accessToken: string | null):boolean { + private static verifyKeycloakNonce(accessToken: string | null): boolean { if (!accessToken) { - document.cookie = "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; + document.cookie = + "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; return false; } - const [_, payload] = accessToken.split('.'); + const [_, payload] = accessToken.split("."); - const {nonce} = JSON.parse(atob(payload)); + const { nonce } = JSON.parse(atob(payload)); // document.cookie = "cookie1=value; cookie2=value; cookie3=value;" - const cookieNonce = document.cookie.split(";") - .filter(cookie => cookie.indexOf('=') !== -1) - .map(cookie => cookie.trim().split("=")) - .filter(([name]) => name === 'keycloak_nonce')?.[0][1]; + const cookieNonce = document.cookie + .split(";") + .filter((cookie) => cookie.indexOf("=") !== -1) + .map((cookie) => cookie.trim().split("=")) + .filter(([name]) => name === "keycloak_nonce")?.[0][1]; if (nonce !== cookieNonce) { - document.cookie = "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; + document.cookie = + "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; return false; } - document.cookie = "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; + document.cookie = + "keycloak_nonce=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; return true; } @@ -108,7 +115,7 @@ export class AuthComponent implements OnInit { } else if (error.status === 500) { this.router.navigate([""]); this.snackbar.open( - "There was an error connecting to your social authentication provider." + $localize`There was an error connecting to your social authentication provider.` ); } } diff --git a/src/app/issues/issues-page/issues-page.component.html b/src/app/issues/issues-page/issues-page.component.html index 74d98f29..48a715c4 100644 --- a/src/app/issues/issues-page/issues-page.component.html +++ b/src/app/issues/issues-page/issues-page.component.html @@ -4,6 +4,7 @@ >