From dca5c684237155622db6b2c231dccb1c0051b957 Mon Sep 17 00:00:00 2001 From: David Watrous <509299+dpwatrous@users.noreply.github.com> Date: Fri, 25 Aug 2023 12:13:20 -0400 Subject: [PATCH 01/18] Temp --- desktop/config/webpack.common.js | 6 +- desktop/config/webpack.config.base.js | 7 ++- desktop/config/webpack.config.dev.js | 28 +++++----- desktop/config/webpack.config.test.js | 34 ++++++------ desktop/package.json | 55 +++++++++---------- .../footer/form-footer.component.ts | 8 ++- .../ui/form/form-page/form-page.component.ts | 5 +- .../theme-colors/theme-colors.component.ts | 2 +- .../src/app/services/themes/theme.model.ts | 2 +- desktop/tsconfig.json | 2 +- desktop/tsconfig.test.json | 2 +- 11 files changed, 83 insertions(+), 68 deletions(-) diff --git a/desktop/config/webpack.common.js b/desktop/config/webpack.common.js index bd9908b104..7feef1cb75 100644 --- a/desktop/config/webpack.common.js +++ b/desktop/config/webpack.common.js @@ -19,7 +19,11 @@ const rules = { }, font: { test: /\.woff(2)?(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader?limit=10000&mimetype=application/font-woff", + loader: "url-loader", + options: { + limit: 10000, + mimetype: "application/font-woff" + } }, }; diff --git a/desktop/config/webpack.config.base.js b/desktop/config/webpack.config.base.js index ae51396d2e..3f6c0323b5 100644 --- a/desktop/config/webpack.config.base.js +++ b/desktop/config/webpack.config.base.js @@ -39,7 +39,7 @@ const baseConfig = { rules: [ { test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, - use: ["@ngtools/webpack"], + loader: '@ngtools/webpack', exclude: [/\.spec\.ts/, /src\/test\//] }, ...commonRules, @@ -66,7 +66,7 @@ const baseConfig = { template: "src/app/index.html", chunksSortMode: (a, b) => { const entryPoints = ["app", "vendor", "styles", "sw-register", "polyfills", "inline"]; - return entryPoints.indexOf(b.names[0]) - entryPoints.indexOf(a.names[0]); + return entryPoints.indexOf(b) - entryPoints.indexOf(a); }, inject: "body", metadata: METADATA, @@ -80,6 +80,9 @@ const baseConfig = { }), ], target: "electron-renderer", + stats: { + errorDetails: true, + }, }; module.exports = baseConfig; diff --git a/desktop/config/webpack.config.dev.js b/desktop/config/webpack.config.dev.js index 57906d9810..0dcb839dc2 100644 --- a/desktop/config/webpack.config.dev.js +++ b/desktop/config/webpack.config.dev.js @@ -1,7 +1,6 @@ const config = require("./webpack.config.base"); const path = require("path"); const merge = require("webpack-merge"); -const WriteFilePlugin = require("write-file-webpack-plugin"); const { defineEnv } = require("./webpack.common"); const EvalSourceMapDevToolPlugin = require("webpack/lib/EvalSourceMapDevToolPlugin"); @@ -17,11 +16,17 @@ module.exports = merge(config, { devServer: { host, port, - stats: { - // Angular emits warning which are spaming the console - warnings: false, + // static: { + // directory: path.join(__dirname, 'app') + // }, + client: { + logging: "error" + }, + devMiddleware: { + writeToDisk: (filePath) => { + return /vendor\/vs.*/.test(filePath); + } }, - clientLogLevel: "error", }, output: { path: path.join(__dirname, "../build/"), @@ -33,11 +38,11 @@ module.exports = merge(config, { rules: [ { test: /\.scss$/, - loader: [ + use: [ { loader: "style-loader", options: { - singleton: true, + injectType: "singletonStyleTag", }, }, "css-loader", @@ -46,11 +51,11 @@ module.exports = merge(config, { }, { test: /\.css$/, - loader: [ + use: [ { loader: "style-loader", options: { - singleton: true, + injectType: "singletonStyleTag", }, }, "css-loader", @@ -63,9 +68,6 @@ module.exports = merge(config, { moduleFilenameTemplate: "[resource-path]", sourceRoot: "webpack:///" }), - defineEnv(ENV), - new WriteFilePlugin({ - test: /vendor\/vs.*/ - }), + defineEnv(ENV) ], }); diff --git a/desktop/config/webpack.config.test.js b/desktop/config/webpack.config.test.js index c8184a77da..6b364edc6e 100644 --- a/desktop/config/webpack.config.test.js +++ b/desktop/config/webpack.config.test.js @@ -44,23 +44,23 @@ config.module.rules = config.module.rules = [ * * See: https://github.com/deepsweet/istanbul-instrumenter-loader */ - { - enforce: "post", - test: /\.(js|ts)$/, - loader: "istanbul-instrumenter-loader", - query: { - esModules: true - }, - include: [ - helpers.root("app"), - helpers.root("src"), - ], - exclude: [ - helpers.root("src/test"), - /\.(e2e|spec)\.(ts)$/, - /node_modules/ - ] - } + // { + // enforce: "post", + // test: /\.(js|ts)$/, + // loader: "istanbul-instrumenter-loader", + // query: { + // esModules: true + // }, + // include: [ + // helpers.root("app"), + // helpers.root("src"), + // ], + // exclude: [ + // helpers.root("src/test"), + // /\.(e2e|spec)\.(ts)$/, + // /node_modules/ + // ] + // } ] ); diff --git a/desktop/package.json b/desktop/package.json index 9e38957aac..8d148d0095 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -41,7 +41,7 @@ "test-models": "npm run ts scripts/swagger/validate-models.ts", "build-client": " tsc -p tsconfig.node.json", "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", - "build-app": "npm run webpack -- --profile --colors --display-error-details --display-cached", + "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", "build-i18n": "npm run ts scripts/i18n/generate.ts", "build-i18n-xliff": "npm run ts scripts/i18n/create-xliff.ts", @@ -52,12 +52,12 @@ "build:prod": "cross-env NODE_ENV=production npm run build", "build:test": "npm run build && npm run test", "build-translations": "bux build-translations --src src --dest i18n --outputPath resources/i18n", - "watch": "npm run webpack -- --watch --progress --profile --colors --display-error-details --display-cached", + "watch": "npm run webpack -- --watch --progress --profile", "electron": "electron build/client/main.js", "electron:prod": "cross-env NODE_ENV=production electron build/client/main.js", "dev": "concurrently --kill-others \"npm run dev-server\" \"npm run dev-electron\"", "dev-electron": "cross-env HOT=1 electron build/client/main.js", - "dev-server": "npm run webpack-dev-server -- --hot --inline --colors --content-base app/", + "dev-server": "npm run webpack-dev-server", "eslint": "eslint -c .eslintrc.js . --quiet", "eslint:verbose": "eslint -c .eslintrc.js .", "stylelint": "stylelint --syntax scss \"src/app/**/*.scss\"", @@ -130,8 +130,8 @@ "angular2-template-loader": "^0.6.2", "colors": "^1.4.0", "concurrently": "^5.3.0", - "copy-webpack-plugin": "^6.0.3", - "css-loader": "^2.1.1", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", "electron": "^29.3.1", "electron-builder": "^24.13.3", "eslint": "^7.19.0", @@ -140,10 +140,9 @@ "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsdoc": "^37.9.6", "eslint-plugin-prefer-arrow": "^1.2.3", - "file-loader": "^3.0.1", - "fork-ts-checker-webpack-plugin": "^5.1.0", - "html-webpack-plugin": "^3.2.0", - "istanbul-instrumenter-loader": "^3.0.1", + "file-loader": "^6.2.0", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", "jasmine-core": "^3.6.0", @@ -158,33 +157,33 @@ "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.0", - "loader-utils": "^1.4.2", + "loader-utils": "^3.2.1", "merge2": "^1.4.1", - "mini-css-extract-plugin": "^0.5.0", - "monaco-editor-webpack-plugin": "^6.0.0", - "node-fetch": "^2.6.7", + "mini-css-extract-plugin": "^2.7.6", + "monaco-editor-webpack-plugin": "^7.1.0", + "node-fetch": "^3.3.2", "nyc": "^15.1.0", "patch-package": "^6.5.1", - "playwright": "^1.43.1", + "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", - "raw-loader": "^1.0.0", + "raw-loader": "^4.0.2", "rimraf": "^2.7.1", - "sass": "^1.26.10", - "sass-loader": "^9.0.3", - "style-loader": "^0.23.1", - "stylelint": "^13.6.1", - "to-string-loader": "^1.1.6", - "ts-loader": "^5.4.5", - "ts-node": "^8.10.2", + "sass": "^1.66.1", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "stylelint": "^15.10.3", + "to-string-loader": "^1.2.0", + "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", "typescript": "~4.6.0", - "url-loader": "^1.1.2", - "webpack": "^4.44.1", - "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", "webpack-inline-manifest-plugin": "^4.0.1", "webpack-merge": "^4.2.2", - "yesno": "^0.0.1" + "yesno": "^0.4.0" }, "dependencies": { "@azure/core-util": "1.4.0", @@ -239,7 +238,7 @@ "reflect-metadata": "^0.1.13", "rxjs": "^6.6.7", "strip-json-comments": "^2.0.1", - "tinycolor2": "^1.4.1", + "tinycolor2": "^1.6.0", "winston": "^3.3.3", "winston-daily-rotate-file": "^3.10.0", "write-file-webpack-plugin": "^4.5.1", diff --git a/desktop/src/@batch-flask/ui/form/complex-form/footer/form-footer.component.ts b/desktop/src/@batch-flask/ui/form/complex-form/footer/form-footer.component.ts index 022274987c..71ab283c8c 100644 --- a/desktop/src/@batch-flask/ui/form/complex-form/footer/form-footer.component.ts +++ b/desktop/src/@batch-flask/ui/form/complex-form/footer/form-footer.component.ts @@ -1,5 +1,5 @@ import { - ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, + ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Inject, Input, OnChanges, OnDestroy, Output, forwardRef, } from "@angular/core"; import { FormControl } from "@angular/forms"; import { AsyncTask, ServerError } from "@batch-flask/core"; @@ -68,7 +68,11 @@ export class FormFooterComponent implements OnChanges, OnDestroy { private _actionConfig: FormActionConfig; private _statusSub: Subscription; - constructor(public form: ComplexFormComponent, private changeDetector: ChangeDetectorRef) { } + public form: ComplexFormComponent; + + constructor(@Inject(forwardRef(() => ComplexFormComponent)) form: ComplexFormComponent, private changeDetector: ChangeDetectorRef) { + this.form = form; + } public ngOnChanges(changes) { if (changes.currentPage) { diff --git a/desktop/src/@batch-flask/ui/form/form-page/form-page.component.ts b/desktop/src/@batch-flask/ui/form/form-page/form-page.component.ts index 64c5b7a441..f2a27e6278 100644 --- a/desktop/src/@batch-flask/ui/form/form-page/form-page.component.ts +++ b/desktop/src/@batch-flask/ui/form/form-page/form-page.component.ts @@ -76,9 +76,12 @@ export class FormPageComponent implements OnChanges, AfterContentInit, OnDestroy public _statusSub: Subscription; private _valid = new BehaviorSubject(false); + private form: ComplexFormComponent; + constructor( - @Inject(forwardRef(() => ComplexFormComponent)) private form: ComplexFormComponent, + @Inject(forwardRef(() => ComplexFormComponent)) form: ComplexFormComponent, private changeDetector: ChangeDetectorRef) { + this.form = form; // Workaround for circular dep issues. See: https://github.com/angular/angular-cli/issues/14247#issuecomment-486582423 this.valid = this._valid.asObservable(); } diff --git a/desktop/src/app/components/misc/theme-colors/theme-colors.component.ts b/desktop/src/app/components/misc/theme-colors/theme-colors.component.ts index 3ec4c14e58..c9ec3ae3fe 100644 --- a/desktop/src/app/components/misc/theme-colors/theme-colors.component.ts +++ b/desktop/src/app/components/misc/theme-colors/theme-colors.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from "@angular/core"; import { ThemeService } from "app/services"; import { Subscription } from "rxjs"; -import * as tinycolor from "tinycolor2"; +import tinycolor from "tinycolor2"; import "./theme-colors.scss"; diff --git a/desktop/src/app/services/themes/theme.model.ts b/desktop/src/app/services/themes/theme.model.ts index bc269224c9..8bbdbcfcd6 100644 --- a/desktop/src/app/services/themes/theme.model.ts +++ b/desktop/src/app/services/themes/theme.model.ts @@ -1,5 +1,5 @@ import { CssColor, ThemeElement } from "app/services/themes/theme-core"; -import * as tinycolor from "tinycolor2"; +import tinycolor from "tinycolor2"; import { ChartColors } from "./chart-colors"; import { EntityColorDefinition, ThemeDefinition } from "./theme-definition.model"; diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index 6415bf5fc2..c2f0ddf792 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -49,7 +49,7 @@ "files": [ "definitions/index.d.ts", "definitions/missing-defs.d.ts", - "node_modules/monaco-editor/monaco.d.ts" + "../node_modules/monaco-editor/monaco.d.ts" ], // This is not actually used for building but to let the editor know what files use this config "include": [ diff --git a/desktop/tsconfig.test.json b/desktop/tsconfig.test.json index 162e5494b8..d62eb7385c 100644 --- a/desktop/tsconfig.test.json +++ b/desktop/tsconfig.test.json @@ -2,7 +2,7 @@ "extends": "./tsconfig.json", "files": [ "definitions/index.d.ts", - "node_modules/monaco-editor/monaco.d.ts" + "../node_modules/monaco-editor/monaco.d.ts" ], "include": [ "app/**/*.ts", From ede7eeee83fc7fe6b48804b0de4213b8890e01b9 Mon Sep 17 00:00:00 2001 From: Rena Chen Date: Wed, 1 Nov 2023 13:29:09 -0700 Subject: [PATCH 02/18] WIP webpack seems to be working --- desktop/config/webpack.config.base.js | 14 ++++++++------ desktop/package.json | 28 +++++++++++++-------------- desktop/src/app/app.component.ts | 4 ++-- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/desktop/config/webpack.config.base.js b/desktop/config/webpack.config.base.js index 3f6c0323b5..4340117cf9 100644 --- a/desktop/config/webpack.config.base.js +++ b/desktop/config/webpack.config.base.js @@ -3,7 +3,7 @@ const helpers = require("./helpers"); const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const CopyWebpackPlugin = require("copy-webpack-plugin"); -const { AngularCompilerPlugin } = require("@ngtools/webpack"); +const { AngularWebpackPlugin } = require("@ngtools/webpack"); const { commonRules } = require("./webpack.common"); const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin"); @@ -47,11 +47,13 @@ const baseConfig = { }, plugins: [ new MonacoWebpackPlugin(), - new AngularCompilerPlugin({ - skipCodeGeneration: !AOT, - tsConfigPath: "./tsconfig.browser.json", - mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. - sourceMap: true, + new AngularWebpackPlugin({ + // skipCodeGeneration: !AOT, + tsconfig: "./tsconfig.browser.json", + // mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. + compilerOptions:{ + sourceMap: true, + } // forkTypeChecker: !AOT, }), new CopyWebpackPlugin({ diff --git a/desktop/package.json b/desktop/package.json index 8d148d0095..3b94890a3b 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -105,9 +105,9 @@ "@angular-eslint/eslint-plugin": "^13.2.1", "@angular-eslint/eslint-plugin-template": "^13.2.1", "@angular-eslint/template-parser": "^13.2.1", - "@angular/compiler-cli": "^11.0.0", + "@angular/compiler-cli": "^12.0.0", "@batch/common-config": "^1.0.0", - "@ngtools/webpack": "^11.0.0", + "@ngtools/webpack": "^12.0.0", "@playwright/test": "^1.43.1", "@types/chart.js": "^2.9.24", "@types/d3": "^7.4.0", @@ -187,17 +187,17 @@ }, "dependencies": { "@azure/core-util": "1.4.0", - "@angular/animations": "^11.0.0", - "@angular/cdk": "^11.0.0", - "@angular/common": "^11.0.0", - "@angular/compiler": "^11.0.0", - "@angular/core": "^11.0.0", - "@angular/forms": "^11.0.0", - "@angular/material": "^11.0.0", - "@angular/platform-browser": "^11.0.0", - "@angular/platform-browser-dynamic": "^11.0.0", - "@angular/platform-server": "^11.0.0", - "@angular/router": "^11.0.0", + "@angular/animations": "^12.0.0", + "@angular/cdk": "^12.0.0", + "@angular/common": "^12.0.0", + "@angular/compiler": "^12.0.0", + "@angular/core": "^12.0.0", + "@angular/forms": "^12.0.0", + "@angular/material": "^12.0.0", + "@angular/platform-browser": "^12.0.0", + "@angular/platform-browser-dynamic": "^12.0.0", + "@angular/platform-server": "^12.0.0", + "@angular/router": "^12.0.0", "@azure/bonito-core": "^1.0.0", "@azure/bonito-ui": "^1.0.0", "@azure/msal-node": "^2.7.0", @@ -243,7 +243,7 @@ "winston-daily-rotate-file": "^3.10.0", "write-file-webpack-plugin": "^4.5.1", "xml2js": "^0.5.0", - "zone.js": "^0.11.0" + "zone.js": "^0.11.4" }, "overrides": { "json5": "^2.2.3", diff --git a/desktop/src/app/app.component.ts b/desktop/src/app/app.component.ts index 3986e7a6ab..e3b5292e9d 100644 --- a/desktop/src/app/app.component.ts +++ b/desktop/src/app/app.component.ts @@ -115,9 +115,9 @@ export class AppComponent implements OnInit, OnDestroy { private async _initWorkspaces() { // eslint-disable-next-line @typescript-eslint/no-var-requires - const adminWorkspace = JSON.parse(require("app/components/workspace/json-templates/admin-workspace.json")); + const adminWorkspace = JSON.parse(require("app/components/workspace/json-templates/admin-workspace.json").default); // eslint-disable-next-line @typescript-eslint/no-var-requires - const endUserWorkspace = JSON.parse(require("app/components/workspace/json-templates/end-user-workspace.json")); + const endUserWorkspace = JSON.parse(require("app/components/workspace/json-templates/end-user-workspace.json").default); this.workspaceService.init([ new Workspace({ ...adminWorkspace }), new Workspace({ ...endUserWorkspace }), From b5ee9089939f047a8bda87916145e9d716b9ca4b Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Wed, 24 Jul 2024 09:51:10 -0700 Subject: [PATCH 03/18] update desktop package json --- desktop/package-lock.json | 13972 +++++++++++------------------------- desktop/package.json | 2 +- 2 files changed, 4354 insertions(+), 9620 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 76067d77f6..e53600ea02 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -9,17 +9,17 @@ "version": "2.21.0", "license": "MIT", "dependencies": { - "@angular/animations": "^11.0.0", - "@angular/cdk": "^11.0.0", - "@angular/common": "^11.0.0", - "@angular/compiler": "^11.0.0", - "@angular/core": "^11.0.0", - "@angular/forms": "^11.0.0", - "@angular/material": "^11.0.0", - "@angular/platform-browser": "^11.0.0", - "@angular/platform-browser-dynamic": "^11.0.0", - "@angular/platform-server": "^11.0.0", - "@angular/router": "^11.0.0", + "@angular/animations": "^12.0.0", + "@angular/cdk": "^12.0.0", + "@angular/common": "^12.0.0", + "@angular/compiler": "^12.0.0", + "@angular/core": "^12.0.0", + "@angular/forms": "^12.0.0", + "@angular/material": "^12.0.0", + "@angular/platform-browser": "^12.0.0", + "@angular/platform-browser-dynamic": "^12.0.0", + "@angular/platform-server": "^12.0.0", + "@angular/router": "^12.0.0", "@azure/core-util": "1.4.0", "@azure/msal-node": "^2.7.0", "@azure/storage-blob": "^12.11.0", @@ -56,19 +56,19 @@ "reflect-metadata": "^0.1.13", "rxjs": "^6.6.7", "strip-json-comments": "^2.0.1", - "tinycolor2": "^1.4.1", + "tinycolor2": "^1.6.0", "winston": "^3.3.3", "winston-daily-rotate-file": "^3.10.0", "write-file-webpack-plugin": "^4.5.1", "xml2js": "^0.5.0", - "zone.js": "^0.11.0" + "zone.js": "^0.11.4" }, "devDependencies": { "@angular-eslint/eslint-plugin": "^13.2.1", "@angular-eslint/eslint-plugin-template": "^13.2.1", "@angular-eslint/template-parser": "^13.2.1", - "@angular/compiler-cli": "^11.0.0", - "@ngtools/webpack": "^11.0.0", + "@angular/compiler-cli": "^12.0.0", + "@ngtools/webpack": "^12.0.0", "@playwright/test": "^1.43.1", "@types/chart.js": "^2.9.24", "@types/d3": "^7.4.0", @@ -91,8 +91,8 @@ "angular2-template-loader": "^0.6.2", "colors": "^1.4.0", "concurrently": "^5.3.0", - "copy-webpack-plugin": "^6.0.3", - "css-loader": "^2.1.1", + "copy-webpack-plugin": "^11.0.0", + "css-loader": "^6.8.1", "electron": "^29.3.1", "electron-builder": "^24.13.3", "eslint": "^7.19.0", @@ -101,10 +101,9 @@ "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsdoc": "^37.9.6", "eslint-plugin-prefer-arrow": "^1.2.3", - "file-loader": "^3.0.1", - "fork-ts-checker-webpack-plugin": "^5.1.0", - "html-webpack-plugin": "^3.2.0", - "istanbul-instrumenter-loader": "^3.0.1", + "file-loader": "^6.2.0", + "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", "jasmine-core": "^3.6.0", @@ -119,33 +118,33 @@ "karma-mocha-reporter": "^2.2.5", "karma-sourcemap-loader": "^0.4.0", "karma-webpack": "^5.0.0", - "loader-utils": "^1.4.2", + "loader-utils": "^3.2.1", "merge2": "^1.4.1", - "mini-css-extract-plugin": "^0.5.0", - "monaco-editor-webpack-plugin": "^6.0.0", - "node-fetch": "^2.6.7", + "mini-css-extract-plugin": "^2.7.6", + "monaco-editor-webpack-plugin": "^7.1.0", + "node-fetch": "^3.3.2", "nyc": "^15.1.0", "patch-package": "^6.5.1", - "playwright": "^1.43.1", + "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", - "raw-loader": "^1.0.0", + "raw-loader": "^4.0.2", "rimraf": "^2.7.1", - "sass": "^1.26.10", - "sass-loader": "^9.0.3", - "style-loader": "^0.23.1", - "stylelint": "^13.6.1", - "to-string-loader": "^1.1.6", - "ts-loader": "^5.4.5", - "ts-node": "^8.10.2", + "sass": "^1.66.1", + "sass-loader": "^13.3.2", + "style-loader": "^3.3.3", + "stylelint": "^15.10.3", + "to-string-loader": "^1.2.0", + "ts-loader": "^9.4.4", + "ts-node": "^10.9.1", "typescript": "~4.6.0", - "url-loader": "^1.1.2", - "webpack": "^4.44.1", - "webpack-cli": "^3.3.12", - "webpack-dev-server": "^3.11.0", + "url-loader": "^4.1.1", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^4.15.1", "webpack-inline-manifest-plugin": "^4.0.1", "webpack-merge": "^4.2.2", - "yesno": "^0.0.1" + "yesno": "^0.4.0" }, "engines": { "node": ">=18.0.0" @@ -161,82 +160,19 @@ "tslib": "~2.3.1" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/@angular-devkit/core": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.1.2.tgz", - "integrity": "sha512-V7zOMqL2l56JcwXVyswkG+7+t67r9XtkrVzRcG2Z5ZYwafU+iKWMwg5kBFZr1SX7fM1M9E4MpskxqtagQeUKng==", - "dev": true, - "dependencies": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 6.11.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular-devkit/core/node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.4" - } - }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/@angular-devkit/core/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular-devkit/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, "node_modules/@angular-eslint/bundled-angular-compiler": { "version": "13.5.0", "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-13.5.0.tgz", @@ -302,55 +238,65 @@ } }, "node_modules/@angular/animations": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.2.14.tgz", - "integrity": "sha512-Heq/nNrCmb3jbkusu+BQszOecfFI/31Oxxj+CDQkqqYpBcswk6bOJLoEE472o+vmgxaXbgeflU9qbIiCQhpMFA==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.17.tgz", + "integrity": "sha512-WVUcvKvr6wr9Nf3I2ksu5bFJ5xHhby4UEBTvOAdLpDqic+dzqtzVwAktDRprBSdxKQk1OlTw6jD4MsVEDKnZTg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "11.2.14" + "@angular/core": "12.2.17" } }, "node_modules/@angular/cdk": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.2.13.tgz", - "integrity": "sha512-FkE4iCwoLbQxLDUOjV1I7M/6hmpyb7erAjEdWgch7nGRNxF1hqX5Bqf1lvLFKPNCbx5NRI5K7YVAdIUQUR8vug==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz", + "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" }, "optionalDependencies": { "parse5": "^5.0.0" }, "peerDependencies": { - "@angular/common": "^11.0.0 || ^12.0.0-0", - "@angular/core": "^11.0.0 || ^12.0.0-0" + "@angular/common": "^12.0.0 || ^13.0.0-0", + "@angular/core": "^12.0.0 || ^13.0.0-0", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/common": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.2.14.tgz", - "integrity": "sha512-ZSLV/3j7eCTyLf/8g4yBFLWySjiLz3vLJAGWscYoUpnJWMnug1VRu6zoF/COxCbtORgE+Wz6K0uhfS6MziBGVw==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.17.tgz", + "integrity": "sha512-/Rc83mzlL6YZScYTzg+Ng2hiCSf3jUVHAfQ8cyLOIMj/y8863Q+DMLVWW+ttvHwCjEFY44pC8IPyBl5FmSJYHg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/core": "11.2.14", - "rxjs": "^6.5.3" + "@angular/core": "12.2.17", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/compiler": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.2.14.tgz", - "integrity": "sha512-XBOK3HgA+/y6Cz7kOX4zcJYmgJ264XnfcbXUMU2cD7Ac+mbNhLPKohWrEiSWalfcjnpf5gRfufQrQP7lpAGu0A==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.17.tgz", + "integrity": "sha512-dxM1CxzvEJPk6ShJngkW5j5BejBloxQNi+fJi+F8P/GN/Rj7vJUf0JxL+TUt1+Iv575V4NidJDKKikk6K485CA==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" } }, "node_modules/@angular/compiler-cli": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.2.14.tgz", - "integrity": "sha512-A7ltnCp03/EVqK/Q3tVUDsokgz5GHW3dSPGl0Csk7Ys5uBB9ibHTmVt4eiXA4jt0+6Bk+mKxwe5BEDqLvwYFAg==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.17.tgz", + "integrity": "sha512-gJJlnDr8Fhs6z0hH0Y/5GC1YAgHY+sRh2BUrbDu+nIUubyyOVYSyQdL1jwEfCSIZl1GSg+4b4thU7pp7HtmX8g==", "dev": true, "dependencies": { "@babel/core": "^7.8.6", @@ -358,16 +304,15 @@ "canonical-path": "1.0.0", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "fs-extra": "4.0.2", + "dependency-graph": "^0.11.0", "magic-string": "^0.25.0", "minimist": "^1.2.0", "reflect-metadata": "^0.1.2", - "semver": "^6.3.0", + "semver": "^7.0.0", "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "tslib": "^2.0.0", - "yargs": "^16.2.0" + "tslib": "^2.2.0", + "yargs": "^17.0.0" }, "bin": { "ivy-ngcc": "ngcc/main-ivy-ngcc.js", @@ -376,65 +321,75 @@ "ngcc": "ngcc/main-ngcc.js" }, "engines": { - "node": ">=10.0" + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/compiler": "11.2.14", - "typescript": ">=4.0 <4.2" + "@angular/compiler": "12.2.17", + "typescript": ">=4.2.3 <4.4" } }, "node_modules/@angular/core": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.2.14.tgz", - "integrity": "sha512-vpR4XqBGitk1Faph37CSpemwIYTmJ3pdIVNoHKP6jLonpWu+0azkchf0f7oD8/2ivj2F81opcIw0tcsy/D/5Vg==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.17.tgz", + "integrity": "sha512-XUvTgU0D8XqNH5Y7UlTMk/XjUQaEGC0kZxhw/QSSQr65WrXtXmcD4d8Cg84TJ52uGXmf7IAruKvtbvu1Mbmvug==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "rxjs": "^6.5.3", - "zone.js": "^0.10.2 || ^0.11.3" + "rxjs": "^6.5.3 || ^7.0.0", + "zone.js": "~0.11.4" } }, "node_modules/@angular/forms": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.2.14.tgz", - "integrity": "sha512-4LWqY6KEIk1AZQFnk+4PJSOCamlD4tumuVN06gO4D0dZo9Cx+GcvW6pM6N0CPubRvPs3sScCnu20WT11HNWC1w==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.17.tgz", + "integrity": "sha512-iOIAz5OR6yLWuNTSOSDqAffQ0FU71yw1QsOmltU/hBsO6H6smsIKVe8VlFa4SnBSAyVZXf/OhDRJ8gOqQT09mw==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "11.2.14", - "@angular/core": "11.2.14", - "@angular/platform-browser": "11.2.14", - "rxjs": "^6.5.3" + "@angular/common": "12.2.17", + "@angular/core": "12.2.17", + "@angular/platform-browser": "12.2.17", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/material": { - "version": "11.2.13", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.2.13.tgz", - "integrity": "sha512-FqFdGSkOtqsmeLyTSousodDGUy2NqbtxCIKv2rwbsIRwHNKB0KpR/UQhA2gMRuGa5hxhMJ0DW0Tf9neMRuLCTg==", + "version": "12.2.13", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.13.tgz", + "integrity": "sha512-6g2GyN4qp2D+DqY2AwrQuPB3cd9gybvQVXvNRbTPXEulHr+LgGei00ySdFHFp6RvdGSMZ4i3LM1Fq3VkFxhCfQ==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" }, "peerDependencies": { - "@angular/animations": "^11.0.0 || ^12.0.0-0", - "@angular/cdk": "11.2.13", - "@angular/common": "^11.0.0 || ^12.0.0-0", - "@angular/core": "^11.0.0 || ^12.0.0-0", - "@angular/forms": "^11.0.0 || ^12.0.0-0" + "@angular/animations": "^12.0.0 || ^13.0.0-0", + "@angular/cdk": "12.2.13", + "@angular/common": "^12.0.0 || ^13.0.0-0", + "@angular/core": "^12.0.0 || ^13.0.0-0", + "@angular/forms": "^12.0.0 || ^13.0.0-0", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@angular/platform-browser": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.2.14.tgz", - "integrity": "sha512-fb7b7ss/gRoP8wLAN17W62leMgjynuyjEPU2eUoAAazsG9f2cgM+z3rK29GYncDVyYQxZUZYnjSqvL6GSXx86A==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.17.tgz", + "integrity": "sha512-fxs0FDEnS9mzd36u0bHd6TbCvRC9pqK0YCWNnoLCf5ALQtyIL8CpgGNjOMnO8mCEl5l9QTFCDvKOn4V3p7E/dg==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/animations": "11.2.14", - "@angular/common": "11.2.14", - "@angular/core": "11.2.14" + "@angular/animations": "12.2.17", + "@angular/common": "12.2.17", + "@angular/core": "12.2.17" }, "peerDependenciesMeta": { "@angular/animations": { @@ -443,52 +398,58 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.2.14.tgz", - "integrity": "sha512-TWTPdFs6iBBcp+/YMsgCRQwdHpWGq8KjeJDJ2tfatGgBD3Gqt2YaHOMST1zPW6RkrmupytTejuVqXzeaKWFxuw==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.17.tgz", + "integrity": "sha512-2v7R5l+4ULSNLviKVTHCqn6iNFgY1M/+HtM1ZcM72V4cVVsXqXUAh7WV4sk4l4ECsExKxQoc6JlVtPUub8cCKA==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "11.2.14", - "@angular/compiler": "11.2.14", - "@angular/core": "11.2.14", - "@angular/platform-browser": "11.2.14" + "@angular/common": "12.2.17", + "@angular/compiler": "12.2.17", + "@angular/core": "12.2.17", + "@angular/platform-browser": "12.2.17" } }, "node_modules/@angular/platform-server": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-11.2.14.tgz", - "integrity": "sha512-VSJ4FSyMPVCE3EGfD4hIK1fZu+KFYi04uL4Co8vchzBQFpXPFABpCS/lGd7rOyvLnKRmUvl4NGS72gQdS00IUw==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-12.2.17.tgz", + "integrity": "sha512-RUhI2luajbriMAavh39tVhAdqKtjd1phzjyxTxjJbohly/OqVGrChbI50IBT81J1MMdPgX8Y/cBrAV9xRGtVjw==", "dependencies": { "domino": "^2.1.2", - "tslib": "^2.0.0", + "tslib": "^2.2.0", "xhr2": "^0.2.0" }, "engines": { - "node": ">=8.0" + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/animations": "11.2.14", - "@angular/common": "11.2.14", - "@angular/compiler": "11.2.14", - "@angular/core": "11.2.14", - "@angular/platform-browser": "11.2.14", - "@angular/platform-browser-dynamic": "11.2.14" + "@angular/animations": "12.2.17", + "@angular/common": "12.2.17", + "@angular/compiler": "12.2.17", + "@angular/core": "12.2.17", + "@angular/platform-browser": "12.2.17", + "@angular/platform-browser-dynamic": "12.2.17" } }, "node_modules/@angular/router": { - "version": "11.2.14", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.2.14.tgz", - "integrity": "sha512-3aYBmj+zrEL9yf/ntIQxHIYaWShZOBKP3U07X2mX+TPMpGlvHDnR7L6bWhQVZwewzMMz7YVR16ldg50IFuAlfA==", + "version": "12.2.17", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.17.tgz", + "integrity": "sha512-GKvEMUpLe157izpHLiS4bCZllqOj+MWhfWbhvR0DHFpE9FtkcDjBseTsWqQmyA1gqtRblO1Zn/1E33l9uaGMqw==", "dependencies": { - "tslib": "^2.0.0" + "tslib": "^2.2.0" + }, + "engines": { + "node": "^12.14.1 || >=14.0.0" }, "peerDependencies": { - "@angular/common": "11.2.14", - "@angular/core": "11.2.14", - "@angular/platform-browser": "11.2.14", - "rxjs": "^6.5.3" + "@angular/common": "12.2.17", + "@angular/core": "12.2.17", + "@angular/platform-browser": "12.2.17", + "rxjs": "^6.5.3 || ^7.0.0" } }, "node_modules/@azure/abort-controller": { @@ -503,77 +464,167 @@ } }, "node_modules/@azure/core-auth": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.5.0.tgz", - "integrity": "sha512-udzoBuYG1VBoHVohDTrvKjyzel34zt77Bhp7dQntVGGD0ehVq48owENbBG8fIgkHRNUBQH5k1r0hpoMu5L8+kw==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.1.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, - "node_modules/@azure/core-http": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@azure/core-http/-/core-http-3.0.2.tgz", - "integrity": "sha512-o1wR9JrmoM0xEAa0Ue7Sp8j+uJvmqYaGoHOCT5qaVYmvgmnZDC0OvQimPA/JR3u77Sz6D1y3Xmk1y69cDU9q9A==", + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/core-util": "^1.1.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", "@azure/logger": "^1.0.0", - "@types/node-fetch": "^2.5.0", - "@types/tunnel": "^0.0.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "process": "^0.11.10", - "tslib": "^2.2.0", - "tunnel": "^0.0.6", - "uuid": "^8.3.0", - "xml2js": "^0.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.1.2.tgz", + "integrity": "sha512-5MnV1yqzZwgNLLjlizsU3QqOeQChkIXw781Fwh1xdAqJR5AA32IUaq6xv1BICJvfbHoa+JYcaij2HFkhLbNTJQ==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.3.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-lro": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.5.4.tgz", - "integrity": "sha512-3GJiMVH7/10bulzOKGrrLeG/uCBH/9VtxqaMcB9lIqAeamI/xYQSHJL/KcsLDuH+yTjYpro/u6D/MuRe4dN70Q==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", "dependencies": { - "@azure/abort-controller": "^1.0.0", + "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.2.0", "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-paging": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.5.0.tgz", - "integrity": "sha512-zqWdVIt+2Z+3wqxEOGzR5hXFZ8MGKK52x4vFLw8n58pR6ZfKRx3EXYTxTaYxYHc/PexPUTyimcTWFJbji9Z6Iw==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.2.tgz", + "integrity": "sha512-Hnhm/PG9/SQ07JJyLDv3l9Qr8V3xgAe1hFoBYzt6LaalMxfL/ZqFaZf/bz5VN3pMcleCPwl8ivlS2Fjxq/iC8Q==", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.0.0-preview.13.tgz", - "integrity": "sha512-KxDlhXyMlh2Jhj2ykX6vNEU0Vou4nHr025KoSEiz7cS3BNiHNaZcdECk/DmLkEB0as5T7b/TpRcehJ5yV6NeXQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.1.2.tgz", + "integrity": "sha512-dawW9ifvWAWmUm9/h+/UQ2jrdvjCJ7VJEuCJ6XVNudzcOwm53BFZH4Q845vjfgoUAM8ZxokvVNxNxAITc502YA==", "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/core-util": { @@ -588,31 +639,43 @@ "node": ">=14.0.0" } }, + "node_modules/@azure/core-xml": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@azure/core-xml/-/core-xml-1.4.2.tgz", + "integrity": "sha512-CW3MZhApe/S4iikbYKE7s83fjDBPIr2kpidX+hlGRwh7N4o1nIpQ/PfJTeioqhfqdMvRtheEl+ft64fyTaLNaA==", + "dependencies": { + "fast-xml-parser": "^4.3.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/@azure/logger": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.0.4.tgz", - "integrity": "sha512-ustrPY8MryhloQj7OWGe+HrYx+aoiOxzbXTtgblbV3xwCqpzUK36phH3XNHQKj3EPonyFUuDTfR3qFhTEAuZEg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.3.tgz", + "integrity": "sha512-J8/cIKNQB1Fc9fuYqBVnrppiUtW+5WWJPCj/tAokC5LdSTwkWWttN+jsRgw9BLYD7JDBx7PceiqOBxJJ1tQz3Q==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@azure/msal-common": { - "version": "14.9.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.9.0.tgz", - "integrity": "sha512-yzBPRlWPnTBeixxLNI3BBIgF5/bHpbhoRVuuDBnYjCyWRavaPUsKAHUDYLqpGkBLDciA6TCc6GOxN4/S3WiSxg==", + "version": "14.13.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.13.1.tgz", + "integrity": "sha512-iUp3BYrsRZ4X3EiaZ2fDjNFjmtYMv9rEQd6c1op6ULn0HWk4ACvDmosL6NaBgWOhl1BAblIbd9vmB5/ilF8d4A==", "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.7.0.tgz", - "integrity": "sha512-wXD8LkUvHICeSWZydqg6o8Yvv+grlBEcmLGu+QEI4FcwFendbTEZrlSygnAXXSOCVaGAirWLchca35qrgpO6Jw==", + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.11.1.tgz", + "integrity": "sha512-8ECtug4RL+zsgh20VL8KYHjrRO3MJOeAKEPRXT2lwtiu5U3BdyIdBb50+QZthEkIi60K6pc/pdOx/k5Jp4sLng==", "dependencies": { - "@azure/msal-common": "14.9.0", + "@azure/msal-common": "14.13.1", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -621,62 +684,67 @@ } }, "node_modules/@azure/storage-blob": { - "version": "12.15.0", - "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.15.0.tgz", - "integrity": "sha512-e7JBKLOFi0QVJqqLzrjx1eL3je3/Ug2IQj24cTM9b85CsnnFjLGeGjJVIjbGGZaytewiCEG7r3lRwQX7fKj0/w==", + "version": "12.23.0", + "resolved": "https://registry.npmjs.org/@azure/storage-blob/-/storage-blob-12.23.0.tgz", + "integrity": "sha512-c1KJ5R5hqR/HtvmFtTn/Y1BNMq45NUBp0LZH7yF8WFMET+wmESgEr0FVTu/Z5NonmfUjbgJZG5Nh8xHc5RdWGQ==", "dependencies": { "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^3.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-client": "^1.6.2", + "@azure/core-http-compat": "^2.0.0", "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.13", + "@azure/core-rest-pipeline": "^1.10.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/core-xml": "^1.3.2", "@azure/logger": "^1.0.0", "events": "^3.0.0", "tslib": "^2.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.11.tgz", - "integrity": "sha512-lh7RJrtPdhibbxndr6/xx0w8+CVlY5FJZiaSz908Fpy+G0xkBFTvwLcKJFF4PJxVfGhVWNebikpWGnOoC71juQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.9.tgz", + "integrity": "sha512-5e3FI4Q3M3Pbr21+5xJwCv6ZT6KmGkI0vw3Tozy5ODAQFTIWe37iT8Cr7Ice2Ntb+M3iSKCEWMB1MBgKrW3whg==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.11", - "@babel/parser": "^7.22.11", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.9", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-module-transforms": "^7.24.9", + "@babel/helpers": "^7.24.8", + "@babel/parser": "^7.24.8", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -690,15 +758,30 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dev": true, "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -706,14 +789,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -721,63 +804,76 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -787,88 +883,89 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.11.tgz", - "integrity": "sha512-vyOXC8PBWaGc5h7GMsNx68OH33cypkEDJCHvYVVgVbbxJDROYVtexSk0gK5iCF1xNjRIN2s8ai7hwkWDq5szWg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", + "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.11", - "@babel/types": "^7.22.11" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.8" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -878,9 +975,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", - "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", + "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -890,9 +987,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.22.11", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.11.tgz", - "integrity": "sha512-NhfzUbdWbiE6fCFypbWCPu6AR8xre31EOPF7wwAIJEvGQ2avov04eymayWinCuyXmV1b0+jzoXP/HYzzUYdvwg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.8.tgz", + "integrity": "sha512-DXG/BhegtMHhnN7YPIvxWd303/9aXvYFD1TjNL3CD6tUrhI2LVsg3Lck0aql5TRH29n4sj3emcROypkZVUfSuA==", "dev": true, "dependencies": { "core-js-pure": "^3.30.2", @@ -903,34 +1000,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -938,13 +1035,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -955,75 +1052,193 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, "engines": { "node": ">=0.1.90" } }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@develar/schema-utils": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", - "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "ajv": "^6.12.0", - "ajv-keywords": "^3.4.1" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=12" } }, - "node_modules/@electron/asar": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.9.tgz", - "integrity": "sha512-Vu2P3X2gcZ3MY9W7yH72X9+AMXwUQZEJBrsPIbX0JsdllLtoh62/Q8Wg370/DawIEVKOyfD6KtTLo645ezqxUA==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, "dependencies": { - "commander": "^5.0.0", - "glob": "^7.1.6", - "minimatch": "^3.0.4" - }, - "bin": { - "asar": "bin/asar.js" - }, - "engines": { - "node": ">=10.12.0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@electron/asar/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.4.1" } }, - "node_modules/@electron/asar/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "node_modules/@csstools/css-tokenizer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], "engines": { - "node": ">= 6" + "node": "^14 || ^16 || >=18" } }, - "node_modules/@electron/asar/node_modules/minimatch": { - "version": "3.1.2", + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.1.1.tgz", + "integrity": "sha512-a7cxGcJ2wIlMFLlh8z2ONm+715QkPHiyJcxwQlKOz/03GPw1COpfhcmC9wm4xlZfp//jWHNNMwzjtqHXVWU9KA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@develar/schema-utils": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==", + "dev": true, + "dependencies": { + "ajv": "^6.12.0", + "ajv-keywords": "^3.4.1" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@electron/asar": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.2.10.tgz", + "integrity": "sha512-mvBSwIBUeiRscrCeJE1LwctAriBj65eUDm0Pc11iE5gRwzkmsdbS7FnZ1XUWjpSeQWL1L5g12Fc/SchPM9DUOw==", + "dev": true, + "dependencies": { + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" + }, + "bin": { + "asar": "bin/asar.js" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@electron/asar/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, @@ -1035,9 +1250,9 @@ } }, "node_modules/@electron/get": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", - "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", "dev": true, "dependencies": { "debug": "^4.1.1", @@ -1055,18 +1270,13 @@ "global-agent": "^3.0.0" } }, - "node_modules/@electron/get/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "bin": { + "semver": "bin/semver.js" } }, "node_modules/@electron/notarize": { @@ -1316,9 +1526,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1366,16 +1576,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", @@ -1412,6 +1617,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1545,53 +1751,69 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" } }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, "node_modules/@malept/cross-spawn-promise": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz", @@ -1666,24 +1888,19 @@ } }, "node_modules/@ngtools/webpack": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.1.2.tgz", - "integrity": "sha512-x/HVx4doKu4gAwGGk+C89JCFe5GF8Te7I7uvwMTqEXr+Ua9YHYvN/q2IwLdhIXPB4ilBSIjrb9zm05yBvBTAeg==", + "version": "12.2.18", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.18.tgz", + "integrity": "sha512-6h/QSG6oZDs2BGfrozdOKqtM5daoCu05q+0gyb3owHz1u9FtMeXXKQ3sQfyFC/GNT3dTMlH6YFxsJPvMPwuy9A==", "dev": true, - "dependencies": { - "@angular-devkit/core": "11.1.2", - "enhanced-resolve": "5.6.0", - "webpack-sources": "2.2.0" - }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 6.11.0", + "node": "^12.14.1 || >=14.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler-cli": "^11.0.0 || ^11.1.0-next", - "typescript": "~4.0.0 || ~4.1.0", - "webpack": "^4.0.0" + "@angular/compiler-cli": "^12.0.0", + "typescript": "~4.2.3 || ~4.3.2", + "webpack": "^5.30.0" } }, "node_modules/@nodelib/fs.scandir": { @@ -1721,86 +1938,6 @@ "node": ">= 8" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/fs/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/fs/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.4.1.tgz", - "integrity": "sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==", - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1812,18 +1949,18 @@ } }, "node_modules/@playwright/test": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.43.1.tgz", - "integrity": "sha512-HgtQzFgNEEo4TE22K/X7sYTYNqEMMTZmFS8kTq6m8hXj+m1D8TgwgIbumHddJa9h4yl4GkKb8/bgAl2+g7eDgA==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.2.tgz", + "integrity": "sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==", "dev": true, "dependencies": { - "playwright": "1.43.1" + "playwright": "1.45.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@sindresorhus/is": { @@ -1839,40 +1976,11 @@ } }, "node_modules/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "dev": true }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.3.tgz", - "integrity": "sha512-scLk3cSH1H9KggSniseb2KNAU5D9FWc3H7BxCSAIdtU9OWIyw0zkEZ9qEKHryRM+SExYXRKNb7tOOVNAsQ3iwg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true, - "dependencies": { - "@babel/core": "^7.17.9" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/@stylelint/postcss-markdown/-/postcss-markdown-0.36.2.tgz", - "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==", - "deprecated": "Use the original unforked package instead: postcss-markdown", - "dev": true, - "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -1894,6 +2002,49 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -1907,14 +2058,33 @@ } }, "node_modules/@types/chart.js": { - "version": "2.9.37", - "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.37.tgz", - "integrity": "sha512-9bosRfHhkXxKYfrw94EmyDQcdjMaQPkU1fH2tDxu8DWXxf1mjzWQAV4laJF51ZbC2ycYwNDvIm1rGez8Bug0vg==", + "version": "2.9.41", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.9.41.tgz", + "integrity": "sha512-3dvkDvueckY83UyUXtJMalYoH6faOLkWQoaTlJgB4Djde3oORmNP0Jw85HtzTuXyliUHcdp704s0mZFQKio/KQ==", "dev": true, "dependencies": { "moment": "^2.10.2" } }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, "node_modules/@types/cookie": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", @@ -1922,18 +2092,18 @@ "dev": true }, "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/d3": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz", - "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", "dev": true, "dependencies": { "@types/d3-array": "*", @@ -1969,45 +2139,45 @@ } }, "node_modules/@types/d3-array": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.6.tgz", - "integrity": "sha512-NHkizg870sKYQn45oZT5ItoHqcgRgJD7KAiWZp4Udc6YdrFH2W0tZ2vv4shRHP+SXHoJ1G8B4I1GWb5oQSGypA==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", "dev": true }, "node_modules/@types/d3-axis": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.3.tgz", - "integrity": "sha512-SE3x/pLO/+GIHH17mvs1uUVPkZ3bHquGzvZpPAh4yadRy71J93MJBpgK/xY8l9gT28yTN1g9v3HfGSFeBMmwZw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-brush": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.3.tgz", - "integrity": "sha512-MQ1/M/B5ifTScHSe5koNkhxn2mhUPqXjGuKjjVYckplAPjP9t2I2sZafb/YVHDwhoXWZoSav+Q726eIbN3qprA==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-chord": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.3.tgz", - "integrity": "sha512-keuSRwO02c7PBV3JMWuctIfdeJrVFI7RpzouehvBWL4/GGUB3PBNg/9ZKPZAgJphzmS2v2+7vr7BGDQw1CAulw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", "dev": true }, "node_modules/@types/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", "dev": true }, "node_modules/@types/d3-contour": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.3.tgz", - "integrity": "sha512-x7G/tdDZt4m09XZnG2SutbIuQqmkNYqR9uhDMdPlpJbcwepkEjEWG29euFcgVA1k6cn92CHdDL9Z+fOnxnbVQw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", "dev": true, "dependencies": { "@types/d3-array": "*", @@ -2015,168 +2185,168 @@ } }, "node_modules/@types/d3-delaunay": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz", - "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", "dev": true }, "node_modules/@types/d3-dispatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.3.tgz", - "integrity": "sha512-Df7KW3Re7G6cIpIhQtqHin8yUxUHYAqiE41ffopbmU5+FifYUNV7RVyTg8rQdkEagg83m14QtS8InvNb95Zqug==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", "dev": true }, "node_modules/@types/d3-drag": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.3.tgz", - "integrity": "sha512-82AuQMpBQjuXeIX4tjCYfWjpm3g7aGCfx6dFlxX2JlRaiME/QWcHzBsINl7gbHCODA2anPYlL31/Trj/UnjK9A==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-dsv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.2.tgz", - "integrity": "sha512-DooW5AOkj4AGmseVvbwHvwM/Ltu0Ks0WrhG6r5FG9riHT5oUUTHz6xHsHqJSVU8ZmPkOqlUEY2obS5C9oCIi2g==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", "dev": true }, "node_modules/@types/d3-ease": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz", - "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", "dev": true }, "node_modules/@types/d3-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.3.tgz", - "integrity": "sha512-/EsDKRiQkby3Z/8/AiZq8bsuLDo/tYHnNIZkUpSeEHWV7fHUl6QFBjvMPbhkKGk9jZutzfOkGygCV7eR/MkcXA==", + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", "dev": true, "dependencies": { "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.5.tgz", - "integrity": "sha512-EGG+IWx93ESSXBwfh/5uPuR9Hp8M6o6qEGU7bBQslxCvrdUBQZha/EFpu/VMdLU4B0y4Oe4h175nSm7p9uqFug==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", "dev": true }, "node_modules/@types/d3-format": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz", - "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", "dev": true }, "node_modules/@types/d3-geo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.4.tgz", - "integrity": "sha512-kmUK8rVVIBPKJ1/v36bk2aSgwRj2N/ZkjDT+FkMT5pgedZoPlyhaG62J+9EgNIgUXE6IIL0b7bkLxCzhE6U4VQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", "dev": true, "dependencies": { "@types/geojson": "*" } }, "node_modules/@types/d3-hierarchy": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.3.tgz", - "integrity": "sha512-GpSK308Xj+HeLvogfEc7QsCOcIxkDwLhFYnOoohosEzOqv7/agxwvJER1v/kTC+CY1nfazR0F7gnHo7GE41/fw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", "dev": true }, "node_modules/@types/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", "dev": true, "dependencies": { "@types/d3-color": "*" } }, "node_modules/@types/d3-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz", - "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", "dev": true }, "node_modules/@types/d3-polygon": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz", - "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", "dev": true }, "node_modules/@types/d3-quadtree": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz", - "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", "dev": true }, "node_modules/@types/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", "dev": true }, "node_modules/@types/d3-scale": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", - "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", "dev": true, "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", - "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", "dev": true }, "node_modules/@types/d3-selection": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.6.tgz", - "integrity": "sha512-2ACr96USZVjXR9KMD9IWi1Epo4rSDKnUtYn6q2SPhYxykvXTw9vR77lkFNruXVg4i1tzQtBxeDMx0oNvJWbF1w==", + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", "dev": true }, "node_modules/@types/d3-shape": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.2.tgz", - "integrity": "sha512-NN4CXr3qeOUNyK5WasVUV8NCSAx/CRVcwcb0BuuS1PiTqwIm6ABi1SyasLZ/vsVCFDArF+W4QiGzSry1eKYQ7w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", "dev": true, "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", - "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", "dev": true }, "node_modules/@types/d3-time-format": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz", - "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", "dev": true }, "node_modules/@types/d3-timer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz", - "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", "dev": true }, "node_modules/@types/d3-transition": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.4.tgz", - "integrity": "sha512-512a4uCOjUzsebydItSXsHrPeQblCVk8IKjqCUmrlvBWkkVh3donTTxmURDo1YPwIVDh5YVwCAO6gR4sgimCPQ==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", "dev": true, "dependencies": { "@types/d3-selection": "*" } }, "node_modules/@types/d3-zoom": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.4.tgz", - "integrity": "sha512-cqkuY1ah9ZQre2POqjSLcM8g40UVya/qwEUrNYP2/rCVljbmqKCVcv+ebvwhlI5azIbSEL7m+os6n+WlYA43aA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", "dev": true, "dependencies": { "@types/d3-interpolate": "*", @@ -2192,6 +2362,56 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, "node_modules/@types/extract-zip": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/@types/extract-zip/-/extract-zip-1.6.2.tgz", @@ -2208,9 +2428,9 @@ } }, "node_modules/@types/geojson": { - "version": "7946.0.10", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz", - "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA==", + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==", "dev": true }, "node_modules/@types/glob": { @@ -2224,39 +2444,60 @@ } }, "node_modules/@types/hammerjs": { - "version": "2.0.41", - "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", - "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "version": "2.0.45", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.45.tgz", + "integrity": "sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ==", + "dev": true + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/inflection": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/@types/inflection/-/inflection-1.13.0.tgz", - "integrity": "sha512-kZSETqAVS74XC/K3mPX/tbMEi/Zy1KP0Wc59dB1i5P72AHz4eSW+UIpzWxmQnDxipoKSX5eRgUXy+wUr+bY73g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@types/inflection/-/inflection-1.13.2.tgz", + "integrity": "sha512-VxXY8dNLrxn7nDvsud77K60uD3a9RSmKfa0k/N/zvP2G55R5/8DSO5Ferz3mQdlAo8jPnpQLilCx9rABdPHSVg==", "dev": true }, "node_modules/@types/jasmine": { - "version": "3.10.12", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.12.tgz", - "integrity": "sha512-t8aMY7ByoMCJycjhFTUL57QicS9/h+E67QfJsN67d2Haoqb/hhgYBEG+l3jGHeFu0vQ7/+p3t6hZ/3YPSnOTzw==", + "version": "3.10.18", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.10.18.tgz", + "integrity": "sha512-jOk52a1Kz+1oU5fNWwAcNe64/GsE7r/Q6ronwDox0D3ETo/cr4ICMQyeXrj7G6FPW1n8YjRoAZA2F0XBr6GicQ==", "dev": true }, "node_modules/@types/js-yaml": { - "version": "3.12.7", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.7.tgz", - "integrity": "sha512-S6+8JAYTE1qdsc9HMVsfY7+SgSuUU/Tp6TYTmITW0PZxiyIMvol3Gy//y69Wkhs0ti4py5qgR3uZH6uz/DNzJQ==", + "version": "3.12.10", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.10.tgz", + "integrity": "sha512-/Mtaq/wf+HxXpvhzFYzrzCqNRcA958sW++7JOFC8nPrZcvfi/TrzOaaGbvt27ltJB2NQbHVAg5a1wUCsyMH7NA==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { @@ -2280,14 +2521,11 @@ "integrity": "sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg==", "dev": true }, - "node_modules/@types/mdast": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.12.tgz", - "integrity": "sha512-DT+iNIRNX884cx0/Q1ja7NyUPpZuv0KPyL5rGNxm1WC1OtHstl7n4Jb7nk+xacNShQMbczJjt8uFzznpp6kYBg==", - "dev": true, - "dependencies": { - "@types/unist": "^2" - } + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "node_modules/@types/minimatch": { "version": "5.1.2", @@ -2296,9 +2534,9 @@ "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/ms": { @@ -2310,40 +2548,38 @@ "node_modules/@types/node": { "version": "18.11.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==" + "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", + "dev": true }, "node_modules/@types/node-fetch": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.4.tgz", - "integrity": "sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", + "dev": true, "dependencies": { "@types/node": "*", - "form-data": "^3.0.0" + "form-data": "^4.0.0" } }, - "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "@types/node": "*" } }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/@types/plist": { @@ -2358,56 +2594,113 @@ } }, "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", "dev": true }, "node_modules/@types/proxyquire": { - "version": "1.3.28", - "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.28.tgz", - "integrity": "sha512-SQaNzWQ2YZSr7FqAyPPiA3FYpux2Lqh3HWMZQk47x3xbMCqgC/w0dY3dw9rGqlweDDkrySQBcaScXWeR+Yb11Q==", + "version": "1.3.31", + "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.31.tgz", + "integrity": "sha512-uALowNG2TSM1HNPMMOR0AJwv4aPYPhqB0xlEhkeRTMuto5hjoSPZkvgu1nbPUkz3gEPAHv4sy4DmKsurZiEfRQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/react": { - "version": "17.0.65", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.65.tgz", - "integrity": "sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==", + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", "dev": true, "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", + "@types/scheduler": "^0.16", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz", - "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==", + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", + "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", "dev": true, "dependencies": { "@types/react": "^17" } }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } }, "node_modules/@types/strip-json-comments": { "version": "0.0.30", @@ -2416,29 +2709,15 @@ "dev": true }, "node_modules/@types/tinycolor2": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.3.tgz", - "integrity": "sha512-Kf1w9NE5HEgGxCRyIcRXR/ZYtDv0V8FVPtYHwLxl0O+maGX0erE77pQlD0gpP+/KByMZ87mOA79SjifhSB3PjQ==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", + "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", "dev": true }, "node_modules/@types/triple-beam": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", - "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" - }, - "node_modules/@types/tunnel": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.3.tgz", - "integrity": "sha512-sOUTGn6h1SfQ+gbgqC364jLFBw2lnFqkgF3q0WovEHRLMrVD1sd5aufqi/aJObLekJO+Aq5z646U4Oxy6shXMA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/unist": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", - "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==", - "dev": true + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/verror": { "version": "1.10.10", @@ -2456,19 +2735,28 @@ "@types/node": "*" } }, + "node_modules/@types/ws": { + "version": "8.5.11", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.11.tgz", + "integrity": "sha512-4+q7P5h3SpJxaBft0Dzpbr6lmMaqh0Jr2tbhJZ/luAwvD7ohSCniYkwz/pLxuT2h0EOa6QADgJj1Ko+TzRfZ+w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/xml2js": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.11.tgz", - "integrity": "sha512-JdigeAKmCyoJUiQljjr7tQG3if9NkqGUgwEUqBvV0N7LM4HyQk7UXCnusRa1lnvXAEYJ8mw8GtZWioagNztOwA==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz", + "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { @@ -2551,39 +2839,6 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { "version": "5.27.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.27.1.tgz", @@ -2626,178 +2881,193 @@ } }, "node_modules/@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", "dev": true, "dependencies": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "dependencies": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "node_modules/@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", "dev": true }, - "node_modules/@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0" + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, - "node_modules/@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", + "@webassemblyjs/ast": "1.12.1", "@xtuc/long": "4.2.2" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } } }, "node_modules/@xmldom/xmldom": { @@ -2858,6 +3128,15 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -2867,16 +3146,39 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", "dev": true, "dependencies": { - "debug": "4" + "acorn": "^8.11.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -2908,13 +3210,21 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, "peerDependencies": { - "ajv": ">=5.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, "node_modules/ajv-keywords": { @@ -2935,24 +3245,6 @@ "loader-utils": "^0.2.15" } }, - "node_modules/angular2-template-loader/node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/angular2-template-loader/node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/angular2-template-loader/node_modules/loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", @@ -3110,33 +3402,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/app-builder-lib/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/app-builder-lib/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/app-builder-lib/node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -3146,12 +3411,6 @@ "node": ">= 10.0.0" } }, - "node_modules/app-builder-lib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -3175,12 +3434,6 @@ "diagnostic-channel-publishers": "0.4.4" } }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -3214,62 +3467,39 @@ "node": ">=6.0" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", "dev": true }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -3288,35 +3518,18 @@ "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.2.tgz", - "integrity": "sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3326,14 +3539,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -3344,14 +3557,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -3361,36 +3574,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -3409,34 +3605,6 @@ "node": ">=0.10.0" } }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, "node_modules/assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -3447,30 +3615,6 @@ "node": ">=0.8" } }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.1" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3481,21 +3625,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" - }, - "node_modules/async-each": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", - "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/async-exit-hook": { "version": "2.0.1", @@ -3517,12 +3649,6 @@ "node": "^4.7 || >=6.9 || >=7.3" } }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, "node_modules/async-listener": { "version": "0.6.10", "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", @@ -3546,7 +3672,8 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true }, "node_modules/at-least-node": { "version": "1.0.0", @@ -3557,51 +3684,14 @@ "node": ">= 4.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "possible-typed-array-names": "^1.0.0" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -3610,9 +3700,9 @@ } }, "node_modules/axe-core": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", - "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.9.1.tgz", + "integrity": "sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==", "dev": true, "engines": { "node": ">=4" @@ -3624,340 +3714,78 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": "^4.5.0 || >= 5.9" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "dev": true }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, + "node_modules/big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { - "node": ">=0.8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dev": true, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/bail": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", - "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/batch-processor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", - "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, "node_modules/bl/node_modules/readable-stream": { @@ -3988,12 +3816,6 @@ "bluebird": "^3.5.5" } }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -4045,18 +3867,14 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, "dependencies": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, "node_modules/boolbase": { @@ -4082,113 +3900,20 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, "funding": [ { @@ -4205,10 +3930,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -4270,18 +3995,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, - "node_modules/buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, "node_modules/builder-util": { "version": "24.13.1", "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.13.1.tgz", @@ -4319,6 +4032,18 @@ "node": ">=12.0.0" } }, + "node_modules/builder-util/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/builder-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -4391,6 +4116,20 @@ "node": ">=8" } }, + "node_modules/builder-util/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/builder-util/node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4449,12 +4188,6 @@ "node": ">= 10.0.0" } }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, "node_modules/bytes": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", @@ -4464,92 +4197,10 @@ "node": ">= 0.8" } }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", "dev": true, "engines": { "node": ">=10.6.0" @@ -4573,21 +4224,6 @@ "node": ">=8" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -4618,14 +4254,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caching-transform/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4641,13 +4292,13 @@ } }, "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, "node_modules/camelcase": { @@ -4660,26 +4311,51 @@ } }, "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-keys/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001522", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001522.tgz", - "integrity": "sha512-TKiyTVZxJGhsTszLuzb+6vUZSjVOAhClszBr2Ta2k9IwtNBT/4dzmL6aywt0HCgEZlmwJzXJd8yNiob6HgwTRg==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "dev": true, "funding": [ { @@ -4715,36 +4391,6 @@ "node": ">=4" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", - "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", - "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", - "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/chart.js": { "version": "2.9.4", "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.9.4.tgz", @@ -4772,15 +4418,9 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -4793,6 +4433,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -4807,9 +4450,9 @@ } }, "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "dev": true, "engines": { "node": ">=6.0" @@ -4836,130 +4479,16 @@ "node": ">=8" } }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/class-utils/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clean-css": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", - "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/clean-stack": { @@ -4989,28 +4518,45 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/clone-regexp": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz", - "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "is-regexp": "^2.0.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { "node": ">=6" } }, + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/clone-response": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", @@ -5044,19 +4590,6 @@ "semver": "bin/semver" } }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", - "dev": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -5093,6 +4626,18 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, "node_modules/colors": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", @@ -5141,6 +4686,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -5180,12 +4726,6 @@ "node": ">=0.10.0" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -5348,28 +4888,13 @@ "node": ">=6" } }, - "node_modules/concurrently/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/concurrently/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concurrently/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" + "p-limit": "^2.0.0" }, "engines": { "node": ">=6" @@ -5490,9 +5015,9 @@ } }, "node_modules/config-file-ts/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -5506,31 +5031,29 @@ } }, "node_modules/config-file-ts/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/config-file-ts/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -5543,9 +5066,9 @@ } }, "node_modules/config-file-ts/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { "node": ">=16 || 14 >=14.17" @@ -5564,9 +5087,9 @@ } }, "node_modules/config-file-ts/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -5592,9 +5115,9 @@ } }, "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, "engines": { "node": ">=0.8" @@ -5615,18 +5138,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -5678,106 +5189,86 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, - "node_modules/copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "node_modules/copy-concurrently/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=8.9.0" + "node": ">=10.13.0" } }, - "node_modules/copy-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" } }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "hasInstallScript": true + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/core-js-pure": { - "version": "3.32.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.1.tgz", - "integrity": "sha512-f52QZwkFVDPf7UEQZGHKx6NYxsxmVGJe5DIvbzOdRMJlmT6yv0KDjR8rmy3ngr/t5wU54c7Sp/qIJH0ppbhVpQ==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", + "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", "dev": true, "hasInstallScript": true, "funding": { @@ -5804,19 +5295,19 @@ } }, "node_modules/cosmiconfig": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", - "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { "@types/parse-json": "^4.0.0", - "import-fresh": "^3.1.0", + "import-fresh": "^3.2.1", "parse-json": "^5.0.0", "path-type": "^4.0.0", - "yaml": "^1.7.2" + "yaml": "^1.10.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/crc": { @@ -5829,49 +5320,12 @@ "buffer": "^5.1.0" } }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5886,65 +5340,48 @@ "node": ">= 8" } }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "node_modules/css-functions-list": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", + "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, "engines": { - "node": "*" + "node": ">=12 || >=16" } }, "node_modules/css-loader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz", - "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", + "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, "dependencies": { - "camelcase": "^5.2.0", - "icss-utils": "^4.1.0", - "loader-utils": "^1.2.3", - "normalize-path": "^3.0.0", - "postcss": "^7.0.14", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^2.0.6", - "postcss-modules-scope": "^2.1.0", - "postcss-modules-values": "^2.0.0", - "postcss-value-parser": "^3.3.0", - "schema-utils": "^1.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/css-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" }, - "engines": { - "node": ">= 4" + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/css-select": { @@ -5963,6 +5400,19 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/css-what": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", @@ -5988,9 +5438,9 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, "node_modules/custom-event": { @@ -6007,16 +5457,10 @@ "node": ">=0.4.0" } }, - "node_modules/cyclist": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz", - "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==", - "dev": true - }, "node_modules/d3": { - "version": "7.8.5", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", - "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -6221,9 +5665,9 @@ } }, "node_modules/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -6298,9 +5742,9 @@ } }, "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==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -6391,6 +5835,66 @@ "node": ">=12" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/date-fns": { "version": "2.30.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", @@ -6417,9 +5921,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -6499,23 +6003,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "dependencies": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -6540,16 +6027,15 @@ } }, "node_modules/default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "dependencies": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" + "execa": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">= 10" } }, "node_modules/default-require-extensions": { @@ -6585,14 +6071,15 @@ "node": ">=10" } }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6601,95 +6088,45 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/del/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "array-uniq": "^1.0.1" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/delaunator": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", - "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", "dependencies": { - "robust-predicates": "^3.0.0" + "robust-predicates": "^3.0.2" } }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "engines": { "node": ">=0.4.0" } @@ -6704,24 +6141,14 @@ } }, "node_modules/dependency-graph": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", - "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, "engines": { "node": ">= 0.6.0" } }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, "node_modules/destroy": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", @@ -6732,31 +6159,10 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", - "dev": true, - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "engines": { "node": ">=8" } @@ -6806,23 +6212,6 @@ "node": ">=0.3.1" } }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, "node_modules/dir-compare": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", @@ -6963,29 +6352,16 @@ "node": ">=8" } }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", - "dev": true - }, "node_modules/dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "dependencies": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, "dependencies": { - "buffer-indexof": "^1.0.0" + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" } }, "node_modules/doctrine": { @@ -7035,16 +6411,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -7091,6 +6457,16 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, "node_modules/dotenv": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-9.0.2.tgz", @@ -7106,18 +6482,6 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -7154,9 +6518,9 @@ } }, "node_modules/electron": { - "version": "29.3.1", - "resolved": "https://registry.npmjs.org/electron/-/electron-29.3.1.tgz", - "integrity": "sha512-auge1/6RVqgUd6TgIq88wKdUCJi2cjESi3jy7d+6X4JzvBGprKBqMJ8JSSFpu/Px1YJrFUKAxfy6SC+TQf1uLw==", + "version": "29.4.5", + "resolved": "https://registry.npmjs.org/electron/-/electron-29.4.5.tgz", + "integrity": "sha512-DlEuzGbWBYl1Qr0qUYgNZdoixJg4YGHy2HC6fkRjSXSlb01UrQ5ORi8hNLzelzyYx8rNQyyE3zDUuk9EnZwYuA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -7228,20 +6592,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/electron-builder/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/electron-builder/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -7302,41 +6652,14 @@ } }, "node_modules/electron-builder/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" } }, - "node_modules/electron-builder/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-builder/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/electron-publish": { "version": "24.13.1", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.13.1.tgz", @@ -7452,9 +6775,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.500", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.500.tgz", - "integrity": "sha512-P38NO8eOuWOKY1sQk5yE0crNtrjgjJj6r3NrbIKtG18KzCHmHE2Bt+aQA7/y0w3uYsHWxDa6icOohzjLJ4vJ4A==", + "version": "1.4.829", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.829.tgz", + "integrity": "sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==", "dev": true }, "node_modules/electron-updater": { @@ -7524,48 +6847,18 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/electron-updater/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-updater/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/electron-updater/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } }, - "node_modules/electron-updater/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/electron/node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -7591,21 +6884,6 @@ "@types/yauzl": "^2.9.1" } }, - "node_modules/electron/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/element-resize-detector": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", @@ -7614,27 +6892,6 @@ "batch-processor": "1.0.0" } }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, "node_modules/emitter-listener": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", @@ -7650,12 +6907,12 @@ "dev": true }, "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", "dev": true, "engines": { - "node": ">= 4" + "node": ">= 0.10" } }, "node_modules/enabled": { @@ -7681,9 +6938,9 @@ } }, "node_modules/engine.io": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.2.tgz", - "integrity": "sha512-IXsMcGpw/xRfjra46sVZVHiSWo/nJ/3g1337q9KNXtS6YRzbW5yIzTCb9DjhrBe7r3GZQR0I4+nq+4ODk5g/cA==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", "dev": true, "dependencies": { "@types/cookie": "^0.4.1", @@ -7695,25 +6952,25 @@ "cors": "~2.8.5", "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.11.0" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" } }, "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", "dev": true, "engines": { "node": ">=10.0.0" } }, "node_modules/enhanced-resolve": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.6.0.tgz", - "integrity": "sha512-C3GGDfFZmqUa21o10YRKbZN60DPl0HyXKXxoEnQMWso9u7KMU23L7CBHfr/rVxORddY/8YQZaU2MZ1ewTS8Pcw==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -7737,10 +6994,16 @@ } }, "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/entities": { "version": "2.2.0", @@ -7760,24 +7023,24 @@ "node": ">=6" } }, + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/err-code": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "dev": true }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -7787,50 +7050,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -7839,33 +7109,66 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { + "node_modules/es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", "dev": true }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -7905,9 +7208,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -8017,9 +7320,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -8055,28 +7358,28 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -8128,6 +7431,15 @@ "node": "*" } }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-jsdoc": { "version": "37.9.7", "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-37.9.7.tgz", @@ -8162,39 +7474,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/eslint-plugin-prefer-arrow": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/eslint-plugin-prefer-arrow/-/eslint-plugin-prefer-arrow-1.2.3.tgz", @@ -8364,9 +7643,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -8387,45 +7666,18 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^1.1.7" }, "engines": { "node": "*" } }, - "node_modules/eslint/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint/node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -8462,12 +7714,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/espree": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", @@ -8504,9 +7750,9 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -8586,274 +7832,41 @@ "node": ">=0.8.x" } }, - "node_modules/eventsource": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", - "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", - "dev": true, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/execall": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/execall/-/execall-2.0.0.tgz", - "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==", - "dev": true, - "dependencies": { - "clone-regexp": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", - "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -8862,30 +7875,18 @@ "node": ">=6" } }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", - "dev": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -8916,40 +7917,10 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "dev": true - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "engines": { "node": ">= 0.6" @@ -8982,39 +7953,18 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", + "node_modules/express/node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -9030,71 +7980,6 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", - "dev": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/extract-zip": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", @@ -9150,9 +8035,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -9182,6 +8067,27 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "node_modules/fast-xml-parser": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", + "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", @@ -9192,9 +8098,9 @@ } }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -9225,11 +8131,28 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } }, "node_modules/file-entry-cache": { "version": "6.0.1", @@ -9244,33 +8167,73 @@ } }, "node_modules/file-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz", - "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dev": true, "dependencies": { - "loader-utils": "^1.0.2", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.0.0" + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/file-loader/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/file-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, "node_modules/file-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 4" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/file-stream-rotator": { @@ -9281,13 +8244,6 @@ "moment": "^2.11.2" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -9319,9 +8275,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -9406,6 +8362,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-cache-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", @@ -9428,164 +8393,23 @@ "micromatch": "^4.0.2" } }, - "node_modules/findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/findup-sync/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/findup-sync/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/findup-sync/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" + "bin": { + "flat": "cli.js" } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -9596,6 +8420,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -9608,21 +8433,11 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, "node_modules/fn.name": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", @@ -9634,9 +8449,9 @@ "integrity": "sha512-yo/njtk/BB4Z2euzaZe3CZrg4u5s5uEi7ZwbHBJS2quHx51N0mmcx9nTIiImUGlgy+vf26d0CcQluahBBBL/Fw==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -9670,15 +8485,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/foreground-child": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", @@ -9693,26 +8499,31 @@ } }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-5.2.1.tgz", - "integrity": "sha512-SVi+ZAQOGbtAsUWrZvGzz38ga2YqjWvca1pXQFUArIVXqli0lLoDQ8uS0wg0kSpcwpZmaW5jVCZXQebkyUQSsw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", + "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.8.3", - "@types/json-schema": "^7.0.5", - "chalk": "^4.1.0", - "cosmiconfig": "^6.0.0", + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", - "fs-extra": "^9.0.0", - "memfs": "^3.1.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", "minimatch": "^3.0.4", - "schema-utils": "2.7.0", - "semver": "^7.3.2", - "tapable": "^1.0.0" + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">=10", + "node": ">=12.13.0", "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "webpack": "^5.11.0" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { @@ -9769,18 +8580,17 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { @@ -9804,18 +8614,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -9829,38 +8627,23 @@ } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -9873,34 +8656,20 @@ "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -9910,6 +8679,18 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -9919,18 +8700,6 @@ "node": ">= 0.6" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", - "dev": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -9940,16 +8709,6 @@ "node": ">= 0.6" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", @@ -9976,14 +8735,17 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha512-wYid1zXctNLgas1pZ8q8ChdsnGg4DHZVqMzJ7pOE85q5BppAEXgQGSoOjVgrcw5yI7pzz49p9AfMhM7z5PRuaw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, "node_modules/fs-minipass": { @@ -9998,33 +8760,39 @@ "node": ">= 8" } }, - "node_modules/fs-monkey": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.4.tgz", - "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ==", - "dev": true - }, - "node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==", + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, "optional": true, "os": [ @@ -10035,21 +8803,24 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -10092,15 +8863,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10123,38 +8898,30 @@ "npm-conf": "~1.1.3" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { "pump": "^3.0.0" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -10163,15 +8930,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -10181,6 +8939,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10207,6 +8966,12 @@ "node": ">= 6" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, "node_modules/glob/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -10245,42 +9010,6 @@ "node": ">=10.0" } }, - "node_modules/global-agent/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global-agent/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "optional": true - }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -10329,12 +9058,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -10364,9 +9094,9 @@ } }, "node_modules/globby/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -10378,21 +9108,6 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -10464,39 +9179,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -10515,21 +9197,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -10551,12 +9233,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -10565,136 +9247,41 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", "dev": true, "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-values/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "node": ">=8" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, "node_modules/he": { @@ -10706,29 +9293,6 @@ "he": "bin/he" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -10772,10 +9336,20 @@ } }, "node_modules/html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/html-escaper": { "version": "2.0.2", @@ -10783,33 +9357,27 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/html-minifier": { - "version": "3.5.21", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", - "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "dependencies": { - "camel-case": "3.0.x", - "clean-css": "4.2.x", - "commander": "2.17.x", - "he": "1.2.x", - "param-case": "2.1.x", - "relateurl": "0.2.x", - "uglify-js": "3.4.x" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" }, "bin": { - "html-minifier": "cli.js" + "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/html-minifier/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -10823,64 +9391,35 @@ } }, "node_modules/html-webpack-plugin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", - "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==", - "deprecated": "3.x is no longer supported", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", "dev": true, "dependencies": { - "html-minifier": "^3.2.3", - "loader-utils": "^0.2.16", - "lodash": "^4.17.3", - "pretty-error": "^2.0.2", - "tapable": "^1.0.0", - "toposort": "^1.0.0", - "util.promisify": "1.0.0" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": ">=6.9" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" }, "peerDependencies": { - "webpack": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/html-webpack-plugin/node_modules/big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/html-webpack-plugin/node_modules/emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/html-webpack-plugin/node_modules/loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==", - "dev": true, - "dependencies": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - }, - "node_modules/html-webpack-plugin/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, "node_modules/htmlparser2": { @@ -10960,168 +9499,51 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "dependencies": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "node": ">=12.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "peerDependencies": { + "@types/express": "^4.17.13" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/http-proxy-middleware/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/http-proxy-middleware/node_modules/is-number": { + "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/http-proxy-middleware/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/http2-wrapper": { @@ -11137,24 +9559,6 @@ "node": ">=10.19.0" } }, - "node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, "node_modules/https-proxy-agent": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", @@ -11186,8 +9590,17 @@ "ms": "^2.1.1" } }, - "node_modules/iconv-corefoundation": { - "version": "1.1.7", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-corefoundation": { + "version": "1.1.7", "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz", "integrity": "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ==", "dev": true, @@ -11214,22 +9627,16 @@ "node": ">=0.10.0" } }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", - "dev": true - }, "node_modules/icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, "engines": { - "node": ">= 6" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/ieee754": { @@ -11251,12 +9658,6 @@ } ] }, - "node_modules/iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==", - "dev": true - }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -11300,94 +9701,24 @@ } }, "node_modules/import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/import-local/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -11405,12 +9736,6 @@ "node": ">=8" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, "node_modules/inflection": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", @@ -11423,6 +9748,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -11439,9 +9765,9 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.3.tgz", + "integrity": "sha512-1aVsPEsJWMJq/pdMU61CDlm1URcW702MTB4w9/zUjMus6H/Py8o7g68Pr9D4I6QluWGt/KdmswuRhaA05xVR1w==", "dev": true, "dependencies": { "source-map": "~0.5.3" @@ -11456,27 +9782,14 @@ "node": ">=0.10.0" } }, - "node_modules/internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "dependencies": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -11492,100 +9805,31 @@ } }, "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, - "node_modules/ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", - "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", - "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", - "dev": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">= 10" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -11594,20 +9838,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -11652,29 +9882,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -11700,27 +9907,33 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { @@ -11738,30 +9951,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", - "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-docker": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", @@ -11777,18 +9966,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -11797,18 +9974,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "dev": true, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -11829,20 +9994,10 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", - "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -11883,58 +10038,22 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "dependencies": { - "is-path-inside": "^2.1.0" - }, "engines": { - "node": ">=6" - } - }, - "node_modules/is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "dependencies": { - "path-is-inside": "^1.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" } }, "node_modules/is-regex": { @@ -11953,22 +10072,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-regexp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-2.1.0.tgz", - "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12016,12 +10129,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -12036,18 +10149,6 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -12113,42 +10214,15 @@ "node": ">=0.10.0" } }, - "node_modules/istanbul-instrumenter-loader": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", - "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.5.0", - "istanbul-lib-instrument": "^1.7.3", - "loader-utils": "^1.1.0", - "schema-utils": "^0.3.0" - }, - "engines": { - "node": ">= 4.8 < 5.0.0 || >= 5.10" - }, - "peerDependencies": { - "webpack": "^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/istanbul-instrumenter-loader/node_modules/schema-utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", - "integrity": "sha512-QaVYBaD9U8scJw2EBWnCBY+LJ0AD+/2edTaigDs0XLDLBfJmSUK9KGqktg1rb32U3z4j/XwvFwHHH1YfbYFd7Q==", + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "dependencies": { - "ajv": "^5.0.0" - }, "engines": { - "node": ">= 4.3 < 5.0.0 || >= 5.10" + "node": ">=8" } }, - "node_modules/istanbul-lib-coverage": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", - "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", - "dev": true - }, "node_modules/istanbul-lib-hook": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", @@ -12162,27 +10236,28 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", - "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-processinfo": { @@ -12202,31 +10277,11 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-processinfo/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -12261,27 +10316,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -12297,21 +10331,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12324,12 +10343,6 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -12344,19 +10357,10 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -12367,16 +10371,13 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -12385,9 +10386,9 @@ } }, "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dev": true, "dependencies": { "async": "^3.2.3", @@ -12541,6 +10542,44 @@ "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", "dev": true }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -12655,50 +10694,26 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", - "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dependencies": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsonwebtoken/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/jwa": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", @@ -12719,9 +10734,9 @@ } }, "node_modules/karma": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", - "integrity": "sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ==", + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", "dev": true, "dependencies": { "@colors/colors": "1.5.0", @@ -12743,7 +10758,7 @@ "qjobs": "^1.2.0", "range-parser": "^1.2.1", "rimraf": "^3.0.2", - "socket.io": "^4.4.1", + "socket.io": "^4.7.2", "source-map": "^0.6.1", "tmp": "^0.2.1", "ua-parser-js": "^0.7.30", @@ -12804,31 +10819,6 @@ "concat-map": "0.0.1" } }, - "node_modules/karma-coverage/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/karma-coverage/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -12904,9 +10894,9 @@ } }, "node_modules/karma-jasmine/node_modules/jasmine-core": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.0.tgz", - "integrity": "sha512-O236+gd0ZXS8YAjFx8xKaJ94/erqUliEkJTDedyE7iHvv4ZVqi+q+8acJxu05/WJDKm512EUNn809In37nWlAQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", "dev": true }, "node_modules/karma-junit-reporter": { @@ -12979,42 +10969,35 @@ } }, "node_modules/karma-webpack": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.0.tgz", - "integrity": "sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.1.tgz", + "integrity": "sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==", "dev": true, "dependencies": { "glob": "^7.1.3", - "minimatch": "^3.0.4", + "minimatch": "^9.0.3", "webpack-merge": "^4.1.5" }, "engines": { - "node": ">= 6" + "node": ">= 18" }, "peerDependencies": { "webpack": "^5.0.0" } }, - "node_modules/karma-webpack/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/karma-webpack/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/karma/node_modules/brace-expansion": { @@ -13027,6 +11010,17 @@ "concat-map": "0.0.1" } }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/karma/node_modules/isbinaryfile": { "version": "4.0.10", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", @@ -13067,6 +11061,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -13078,7 +11073,25 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/keypress": { + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/keypress": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz", "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==", @@ -13100,20 +11113,14 @@ "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==" }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -13132,19 +11139,10 @@ "graceful-fs": "^4.1.11" } }, - "node_modules/klona": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/klona/-/klona-1.1.2.tgz", - "integrity": "sha512-xf88rTeHiXk+XE2Vhi6yj8Wm3gMZrygGdKjJqN8HkV+PwF/t50/LdAKHoHpPcxFAlmQszTZ1CugrK25S7qDRLA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/known-css-properties": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.21.0.tgz", - "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true }, "node_modules/kuler": { @@ -13152,6 +11150,16 @@ "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, + "node_modules/launch-editor": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", + "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, "node_modules/lazy-val": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.5.tgz", @@ -13204,26 +11212,21 @@ } }, "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "dev": true, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=6.11.5" } }, "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, "engines": { - "node": ">=4.0.0" + "node": ">= 12.13.0" } }, "node_modules/locate-path": { @@ -13254,11 +11257,41 @@ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, "node_modules/lodash.memoize": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", @@ -13271,6 +11304,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -13306,59 +11344,38 @@ } }, "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" - } - }, - "node_modules/loglevel": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", - "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" + "engines": { + "node": ">= 12.0.0" } }, - "node_modules/longest-streak": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", - "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "tslib": "^2.0.3" } }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", - "dev": true - }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -13420,15 +11437,6 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -13441,18 +11449,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/matcher": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", @@ -13489,61 +11485,11 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", - "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", - "dev": true, - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", - "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", - "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true }, "node_modules/media-typer": { "version": "0.3.0", @@ -13566,52 +11512,42 @@ "node": ">= 4.0.0" } }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", "decamelize-keys": "^1.1.0", "hard-rejection": "^2.1.0", "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/meow/node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/meow/node_modules/normalize-package-data": { @@ -13629,25 +11565,10 @@ "node": ">=10" } }, - "node_modules/meow/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { "node": ">=10" @@ -13656,16 +11577,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, "node_modules/merge2": { @@ -13686,58 +11610,19 @@ "node": ">= 0.6" } }, - "node_modules/micromark": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", - "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" - } - }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, "node_modules/mime": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", @@ -13754,6 +11639,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { "node": ">= 0.6" } @@ -13762,6 +11648,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -13769,6 +11656,15 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/mimic-response": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", @@ -13788,44 +11684,23 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz", - "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz", + "integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==", "dev": true, "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" }, "engines": { - "node": ">= 6.9.0 <7.0.0 || >= 8.9.0" + "node": ">= 12.13.0" }, - "peerDependencies": { - "webpack": "^4.4.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "peerDependencies": { + "webpack": "^5.0.0" } }, "node_modules/minimalistic-assert": { @@ -13834,12 +11709,6 @@ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, "node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -13875,73 +11744,40 @@ } }, "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/yallist": { + "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", @@ -13971,40 +11807,6 @@ "node": ">= 0.6.x" } }, - "node_modules/mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -14028,9 +11830,9 @@ "dev": true }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -14041,18 +11843,36 @@ "integrity": "sha512-B/y4+b2O5G2gjuxIFtCE2EkM17R2NM7/3F8x0qcPsqy4V83bitJTIO4TIeZpYlzu/xy6INiY/+84BEm6+7Cmzg==" }, "node_modules/monaco-editor-webpack-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-6.0.0.tgz", - "integrity": "sha512-vC886Mzpd2AkSM35XLkfQMjH+Ohz6RISVwhAejDUzZDheJAiz6G34lky1vyO8fZ702v7IrcKmsGwL1rRFnwvUA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.1.0.tgz", + "integrity": "sha512-ZjnGINHN963JQkFqjjcBtn1XBtUATDZBMgNQhDQwd78w2ukRhFXAPNgWuacaQiDZsUr4h1rWv5Mv6eriKuOSzA==", "dev": true, "dependencies": { - "loader-utils": "^2.0.0" + "loader-utils": "^2.0.2" }, "peerDependencies": { - "monaco-editor": "0.30.x", + "monaco-editor": ">= 0.31.0", "webpack": "^4.5.0 || 5.x" } }, + "node_modules/monaco-editor-webpack-plugin/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/monaco-editor-webpack-plugin/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/monaco-editor-webpack-plugin/node_modules/loader-utils": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", @@ -14067,83 +11887,40 @@ "node": ">=8.9.0" } }, - "node_modules/move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "node_modules/move-concurrently/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "dev": true, "dependencies": { - "dns-packet": "^1.3.1", + "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, - "node_modules/multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==", - "dev": true - }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/napi-build-utils": { @@ -14179,12 +11956,13 @@ "dev": true }, "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, "dependencies": { - "lower-case": "^1.1.1" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, "node_modules/node-abi": { @@ -14203,6 +11981,12 @@ "semver": "bin/semver" } }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, "node_modules/node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", @@ -14210,6 +11994,25 @@ "dev": true, "optional": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-downloader-helper": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", @@ -14222,22 +12025,21 @@ } }, "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, "node_modules/node-forge": { @@ -14248,54 +12050,6 @@ "node": ">= 6.13.0" } }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -14309,9 +12063,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.17.tgz", + "integrity": "sha512-Ww6ZlOiEQfPfXM45v17oabk77Z7mg5bOt7AjDyzy7RjK9OrLrLC8dyZQoAPEOtFX9SaNf1Tdvr5gRJWdTJj7GA==", "dev": true }, "node_modules/normalize-package-data": { @@ -14349,21 +12103,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-selector": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/normalize-selector/-/normalize-selector-0.2.0.tgz", - "integrity": "sha512-dxvWdI8gw6eAvk9BlPffgEoGfM7AdijoCwOEJge3e3ulT2XLgmU7KvvxprOaCu05Q1uGRHmOhHe1r6emZoKyFw==", - "dev": true - }, "node_modules/normalize-url": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", @@ -14397,24 +12136,15 @@ } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/nth-check": { @@ -14429,12 +12159,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", - "dev": true - }, "node_modules/nyc": { "version": "15.1.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", @@ -14514,15 +12238,6 @@ "node": ">=7.0.0" } }, - "node_modules/nyc/node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/nyc/node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", @@ -14553,18 +12268,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/nyc/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -14578,6 +12281,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -14589,6 +12293,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/nyc/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/nyc/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -14653,97 +12366,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", - "dev": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/object-copy/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object-hash": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", @@ -14753,23 +12375,10 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, "engines": { "node": ">= 0.4" }, @@ -14786,26 +12395,14 @@ "node": ">= 0.4" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", - "dev": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -14817,14 +12414,15 @@ } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14833,58 +12431,29 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.0.tgz", - "integrity": "sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "get-intrinsic": "^1.2.1" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -14936,6 +12505,21 @@ "fn.name": "1.x.x" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/open": { "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", @@ -14952,50 +12536,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -15014,25 +12571,16 @@ "node": ">=8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -15050,46 +12598,38 @@ "node": ">=8" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "aggregate-error": "^3.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "@types/retry": "0.12.0", + "retry": "^0.13.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/p-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", "dev": true, - "dependencies": { - "retry": "^0.12.0" - }, "engines": { - "node": ">=6" + "node": ">= 4" } }, "node_modules/p-try": { @@ -15116,30 +12656,20 @@ "node": ">=8" } }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", "dev": true }, - "node_modules/parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, "dependencies": { - "no-case": "^2.2.0" + "dot-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/parent-module": { @@ -15154,37 +12684,6 @@ "node": ">=6" } }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", - "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", - "dev": true, - "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -15203,15 +12702,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", @@ -15227,13 +12717,14 @@ "node": ">= 0.8" } }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, "node_modules/patch-package": { @@ -15451,9 +12942,9 @@ } }, "node_modules/patch-package/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -15471,18 +12962,6 @@ "which": "bin/which" } }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", - "dev": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -15500,12 +12979,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -15522,38 +12995,26 @@ "dev": true }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -15575,31 +13036,15 @@ "resolved": "https://registry.npmjs.org/patternomaly/-/patternomaly-1.3.2.tgz", "integrity": "sha512-70UhA5+ZrnNgdfDBKXIGbMHpP+naTzfx9vPT4KwIdhtWWs0x6FWZRJQMXXhV2jcK0mxl28FA/2LPAKArNG058Q==" }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" }, "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -15621,27 +13066,6 @@ "node": ">=6" } }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -15655,33 +13079,47 @@ } }, "node_modules/playwright": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz", - "integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.2.tgz", + "integrity": "sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==", "dev": true, "dependencies": { - "playwright-core": "1.43.1" + "playwright-core": "1.45.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.43.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz", - "integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.2.tgz", + "integrity": "sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==", "dev": true, "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, "node_modules/plist": { @@ -15698,244 +13136,100 @@ "node": ">=10.4.0" } }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, - "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" - }, "engines": { - "node": ">= 0.12.0" + "node": ">= 0.4" } }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "lodash": "^4.17.14" + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", - "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/postcss-html": { - "version": "0.36.0", - "resolved": "https://registry.npmjs.org/postcss-html/-/postcss-html-0.36.0.tgz", - "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, "dependencies": { - "htmlparser2": "^3.10.0" - }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" - } - }, - "node_modules/postcss-html/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/postcss-html/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/postcss-html/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/postcss-html/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "node_modules/postcss-html/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dev": true, - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/postcss-html/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/postcss-html/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true - }, - "node_modules/postcss-html/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dev": true, - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/postcss-html/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-less": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-less/-/postcss-less-3.1.4.tgz", - "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.14" - }, - "engines": { - "node": ">=6.14.4" - } - }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", - "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true - }, - "node_modules/postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-local-by-default": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz", - "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0", - "postcss-value-parser": "^3.3.1" + "icss-utils": "^5.0.0" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" + "node": "^10 || ^12 || >= 14" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss-modules-values": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz", - "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==", - "dev": true, - "dependencies": { - "icss-replace-symbols": "^1.1.0", - "postcss": "^7.0.6" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/postcss-resolve-nested-selector": { @@ -15945,43 +13239,25 @@ "dev": true }, "node_modules/postcss-safe-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.2.tgz", - "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, - "dependencies": { - "postcss": "^7.0.26" - }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-sass": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/postcss-sass/-/postcss-sass-0.4.4.tgz", - "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==", - "dev": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } - }, - "node_modules/postcss-scss": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-2.1.1.tgz", - "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==", - "dev": true, - "dependencies": { - "postcss": "^7.0.6" + "node": ">=12.0" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.13", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", - "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", + "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -15991,25 +13267,16 @@ "node": ">=4" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", - "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz", - "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==", - "dev": true, - "peerDependencies": { - "postcss": ">=5.0.0" - } - }, "node_modules/postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true }, "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", @@ -16031,21 +13298,10 @@ "node": ">=10" } }, - "node_modules/prebuild-install/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prebuild-install/node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "dependencies": { "semver": "^7.3.5" }, @@ -16053,25 +13309,6 @@ "node": ">=10" } }, - "node_modules/prebuild-install/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prebuild-install/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -16097,21 +13334,13 @@ } }, "node_modules/pretty-error": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", - "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, "dependencies": { "lodash": "^4.17.20", - "renderkid": "^2.0.4" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" + "renderkid": "^3.0.0" } }, "node_modules/process-nextick-args": { @@ -16140,12 +13369,6 @@ "node": ">=0.4.0" } }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "dev": true - }, "node_modules/promise-retry": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", @@ -16177,6 +13400,15 @@ "node": ">= 0.10" } }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/proxyquire": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/proxyquire/-/proxyquire-2.1.3.tgz", @@ -16188,32 +13420,6 @@ "resolve": "^1.11.1" } }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -16223,35 +13429,11 @@ "once": "^1.3.1" } }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "node_modules/qjobs": { "version": "1.2.0", @@ -16277,21 +13459,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -16313,12 +13480,15 @@ ] }, "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/randombytes": { @@ -16330,16 +13500,6 @@ "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -16377,38 +13537,78 @@ } }, "node_modules/raw-loader": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", - "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", + "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", "dev": true, "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^4.3.0" + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/raw-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/raw-loader/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, "engines": { "node": ">= 4" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "node_modules/raw-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/raw-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dependencies": { "deep-extend": "^0.6.0", @@ -16470,53 +13670,126 @@ } }, "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg/node_modules/parse-json": { @@ -16571,52 +13844,67 @@ "node": ">=8.10.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "resolve": "^1.20.0" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/redent/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -16667,115 +13955,17 @@ "node": ">=4" } }, - "node_modules/remark": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", - "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", - "dev": true, - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", - "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", - "dev": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", - "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", - "dev": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", - "dev": true - }, "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" - } - }, - "node_modules/renderkid/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/renderkid/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", - "dev": true, - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "strip-ansi": "^6.0.1" } }, "node_modules/require-directory": { @@ -16787,15 +13977,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -16818,9 +13999,9 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -16841,116 +14022,45 @@ "dev": true }, "node_modules/resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "resolve-from": "^3.0.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/resolve-dir/node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "lowercase-keys": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", - "dev": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-dir/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retry": { @@ -16973,15 +14083,16 @@ } }, "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", "dev": true }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -16990,16 +14101,6 @@ "rimraf": "bin.js" } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -17019,9 +14120,9 @@ } }, "node_modules/roarr/node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "dev": true, "optional": true }, @@ -17053,15 +14154,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==", - "dev": true, - "dependencies": { - "aproba": "^1.1.1" - } - }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -17084,13 +14176,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -17126,25 +14218,19 @@ } ] }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", - "dev": true, - "dependencies": { - "ret": "~0.1.10" - } - }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -17172,9 +14258,9 @@ } }, "node_modules/sass": { - "version": "1.66.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", - "integrity": "sha512-50c+zTsZOJVgFfTgwwEzkjA3/QACgdNsKueWPyAR0mRINIvLAStVQBbPg14iuqEQ74NPDbXzJARJ/O4SI1zftA==", + "version": "1.77.8", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", + "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -17189,19 +14275,15 @@ } }, "node_modules/sass-loader": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-9.0.3.tgz", - "integrity": "sha512-fOwsP98ac1VMme+V3+o0HaaMHp8Q/C9P+MUazLFVi3Jl7ORGHQXL1XeRZt3zLSGZQQPC8xE42Y2WptItvGjDQg==", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.3.tgz", + "integrity": "sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA==", "dev": true, "dependencies": { - "klona": "^1.1.2", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^2.7.0", - "semver": "^7.3.2" + "neo-async": "^2.6.2" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", @@ -17209,9 +14291,10 @@ }, "peerDependencies": { "fibers": ">= 3.1.0", - "node-sass": "^4.0.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", "sass": "^1.3.0", - "webpack": "^4.36.0 || ^5.0.0" + "sass-embedded": "*", + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "fibers": { @@ -17222,101 +14305,52 @@ }, "sass": { "optional": true + }, + "sass-embedded": { + "optional": true } } }, - "node_modules/sass-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } + "node_modules/sass/node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true }, - "node_modules/sass-loader/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" }, - "node_modules/sass-loader/node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 8.9.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/sass-loader/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sass-loader/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/sass/node_modules/immutable": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.3.tgz", - "integrity": "sha512-808ZFYMsIRAjLAu5xkKo0TsbY9LBy9H5MazTKIEHerNkg0ymgilGfBPMR/3G7d/ihGmuK2Hw8S1izY2d3kd3wA==", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" + "fast-deep-equal": "^3.1.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "ajv": "^8.8.2" } }, "node_modules/select-hose": { @@ -17326,29 +14360,27 @@ "dev": true }, "node_modules/selfsigned": { - "version": "1.10.14", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.14.tgz", - "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "dependencies": { - "node-forge": "^0.10.0" - } - }, - "node_modules/selfsigned/node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true, + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, "engines": { - "node": ">= 6.0.0" + "node": ">=10" } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/semver-compare": { @@ -17454,9 +14486,9 @@ } }, "node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -17552,65 +14584,54 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "kind-of": "^6.0.2" }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">=8" } }, "node_modules/shebang-command": { @@ -17634,20 +14655,33 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17726,39 +14760,6 @@ "node": ">=10" } }, - "node_modules/simple-update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -17823,259 +14824,51 @@ "npm": ">= 3.0.0" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", "dev": true, "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.2.0" } }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", "dev": true, "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/snapdragon/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/socket.io": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.2.tgz", - "integrity": "sha512-bvKVS29/I5fl2FGLNHuXlQaUH/BlzX1IN6S+NKLNZpBsPZIDH+90eQmCs2Railn4YUiww4SzUedJ6+uzwFnKLw==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "cors": "~2.8.5", - "debug": "~4.3.2", - "engine.io": "~6.5.2", - "socket.io-adapter": "~2.5.2", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.2.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.2.tgz", - "integrity": "sha512-87C3LO/NOMc+eMcpcxUBebGjkpMDkNBS9tf7KJqcDsmL936EChtVva71Dw2q4tQcuVC+hAUy4an2NO/sYXmwRA==", - "dev": true, - "dependencies": { - "ws": "~8.11.0" - } - }, - "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dev": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/sockjs": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", - "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "dependencies": { "faye-websocket": "^0.11.3", @@ -18083,40 +14876,6 @@ "websocket-driver": "^0.7.4" } }, - "node_modules/sockjs-client": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", - "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "eventsource": "^2.0.2", - "faye-websocket": "^0.11.4", - "inherits": "^2.0.4", - "url-parse": "^1.5.10" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://tidelift.com/funding/github/npm/sockjs-client" - } - }, - "node_modules/sockjs-client/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -18127,28 +14886,14 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -18174,9 +14919,9 @@ "dev": true }, "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, "node_modules/spawn-wrap": { @@ -18215,6 +14960,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -18226,6 +14972,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/spawn-wrap/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -18237,9 +14992,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -18253,9 +15008,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/spdy": { @@ -18302,44 +15057,11 @@ "node": ">= 6" } }, - "node_modules/specificity": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.4.1.tgz", - "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==", - "dev": true, - "bin": { - "specificity": "bin/specificity" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/stack-chain": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", @@ -18362,235 +15084,81 @@ "node": ">= 6" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/static-extend/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/streamroller": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", - "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", - "dev": true, - "dependencies": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/streamroller/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "node": ">=8" } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -18600,28 +15168,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18660,25 +15231,28 @@ "node": ">=4" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, "dependencies": { - "min-indent": "^1.0.0" + "min-indent": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -18689,31 +15263,25 @@ "node": ">=0.10.0" } }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, "node_modules/style-loader": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", - "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, - "dependencies": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - }, "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/style-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "node": ">= 12.13.0" }, - "engines": { - "node": ">= 4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, "node_modules/style-search": { @@ -18723,85 +15291,68 @@ "dev": true }, "node_modules/stylelint": { - "version": "13.13.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-13.13.1.tgz", - "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", "dev": true, "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", "balanced-match": "^2.0.0", - "chalk": "^4.1.1", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.1", - "get-stdin": "^8.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.3", + "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.21", - "log-symbols": "^4.1.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.4", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.5", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.2", - "strip-ansi": "^6.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "sugarss": "^2.0.0", + "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", - "table": "^6.6.0", - "v8-compile-cache": "^2.3.0", - "write-file-atomic": "^3.0.3" + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" }, "bin": { - "stylelint": "bin/stylelint.js" + "stylelint": "bin/stylelint.mjs" }, "engines": { - "node": ">=10.13.0" + "node": "^14.13.1 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/stylelint" } }, - "node_modules/stylelint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "node_modules/stylelint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, "node_modules/stylelint/node_modules/balanced-match": { "version": "2.0.0", @@ -18809,90 +15360,65 @@ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true }, - "node_modules/stylelint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/stylelint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "url": "https://github.com/sponsors/d-fischer" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/stylelint/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "flat-cache": "^3.2.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/stylelint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, "node_modules/stylelint/node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" } }, - "node_modules/stylelint/node_modules/log-symbols": { + "node_modules/stylelint/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/stylelint/node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -18902,25 +15428,29 @@ "node": ">=8" } }, - "node_modules/stylelint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/stylelint/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sugarss": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-2.0.0.tgz", - "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==", + "node_modules/stylelint/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "dependencies": { - "postcss": "^7.0.2" + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/sumchecker": { @@ -18946,6 +15476,40 @@ "node": ">=4" } }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-hyperlinks/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -18965,9 +15529,9 @@ "dev": true }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -18980,22 +15544,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "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/table/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -19023,12 +15571,6 @@ "node": ">=7.0.0" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -19056,9 +15598,9 @@ } }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "dependencies": { "chownr": "^2.0.0", @@ -19116,15 +15658,6 @@ "node": ">= 6" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -19177,230 +15710,87 @@ } }, "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "version": "5.31.3", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.3.tgz", + "integrity": "sha512-pAfYn3NIZLyZpa83ZKigvj6Rn9c/vd5KfYGX7cN1mnzqgDcxWvrU5ZtAfIKhEXz9nRecw4z3LXkjaq96/qZqAA==", "dev": true, "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "dependencies": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - }, - "engines": { - "node": ">= 6.9.0" - }, - "peerDependencies": { - "webpack": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/terser-webpack-plugin/node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" + "node": ">= 10.13.0" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" + "peerDependencies": { + "webpack": "^5.1.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/terser-webpack-plugin/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=6" + "node": ">= 10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terser-webpack-plugin/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser-webpack-plugin/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/terser/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">= 4" - } - }, - "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser-webpack-plugin/node_modules/ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "node_modules/terser-webpack-plugin/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "node": ">=0.4.0" } }, - "node_modules/terser-webpack-plugin/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -19454,49 +15844,24 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/tinycolor2": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/tmp-promise": { @@ -19508,27 +15873,6 @@ "tmp": "^0.2.0" } }, - "node_modules/tmp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", - "dev": true - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -19538,51 +15882,6 @@ "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -19603,6 +15902,38 @@ "loader-utils": "^1.0.0" } }, + "node_modules/to-string-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/to-string-loader/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/to-string-loader/node_modules/loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", @@ -19612,17 +15943,6 @@ "node": ">=0.6" } }, - "node_modules/toposort": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", - "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==", - "dev": true - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -19633,21 +15953,15 @@ } }, "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/triple-beam": { @@ -19658,16 +15972,6 @@ "node": ">= 14.0.0" } }, - "node_modules/trough": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", - "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -19678,234 +15982,157 @@ } }, "node_modules/ts-loader": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-5.4.5.tgz", - "integrity": "sha512-XYsjfnRQCBum9AMRZpk2rTYSVpdZBpZK+kDh0TeT3kxmQNBDVIeUjdPjY5RZry4eIAb8XHc4gYSUiUWPYvzSRw==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, "dependencies": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^3.1.4", - "semver": "^5.0.1" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { - "node": ">=6.11.5" + "node": ">=12.0.0" }, "peerDependencies": { - "typescript": "*" + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/ts-loader/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "node": ">=8" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ts-loader/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/ts-loader/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "node": ">=10" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ts-loader/node_modules/fill-range/node_modules/extend-shallow": { + "node_modules/ts-loader/node_modules/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/ts-loader/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "node": ">=7.0.0" } }, - "node_modules/ts-loader/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ts-loader/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": ">=8" } }, - "node_modules/ts-loader/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 8" } }, - "node_modules/ts-loader/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", - "dev": true, - "dependencies": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=6.0.0" - }, "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -19915,9 +16142,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -19940,20 +16167,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", - "dev": true - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -19999,29 +16212,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -20031,16 +16245,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -20050,14 +16265,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -20091,9 +16312,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.35", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.35.tgz", - "integrity": "sha512-veRf7dawaj9xaWEu9HoTVn5Pggtc/qj+kqTOFvNiN1l0YdxwC1kvel57UCjThjGa3BHBihE8/UJAHI+uQHmd/g==", + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", "dev": true, "funding": [ { @@ -20103,34 +16324,16 @@ { "type": "paypal", "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" } ], "engines": { "node": "*" } }, - "node_modules/uglify-js": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", - "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", - "dev": true, - "dependencies": { - "commander": "~2.19.0", - "source-map": "~0.6.1" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/uglify-js/node_modules/commander": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", - "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", - "dev": true - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -20152,118 +16355,13 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "dev": true }, - "node_modules/unified": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", - "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/union-value/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", - "dev": true, - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/unist-util-find-all-after/-/unist-util-find-all-after-3.0.2.tgz", - "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==", - "dev": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", - "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", - "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "engines": { + "node": ">= 4.0.0" } }, "node_modules/unpipe": { @@ -20275,68 +16373,10 @@ "node": ">= 0.8" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", - "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", - "dev": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", - "dev": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -20353,8 +16393,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -20363,18 +16403,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", - "dev": true - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -20384,115 +16412,103 @@ "punycode": "^2.1.0" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, - "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" + "engines": { + "node": ">=6" } }, "node_modules/url-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", - "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", + "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", "dev": true, "dependencies": { - "loader-utils": "^1.1.0", - "mime": "^2.0.3", - "schema-utils": "^1.0.0" + "loader-utils": "^2.0.0", + "mime-types": "^2.1.27", + "schema-utils": "^3.0.0" }, "engines": { - "node": ">= 6.9.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^3.0.0 || ^4.0.0" + "file-loader": "*", + "webpack": "^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "file-loader": { + "optional": true + } } }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/url-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/url-loader/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, "engines": { "node": ">= 4" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "node_modules/url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, - "node_modules/url/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "node_modules/url-loader/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", "dev": true }, - "node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" - } - }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", @@ -20522,6 +16538,12 @@ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -20541,1653 +16563,353 @@ "node": ">= 0.8" } }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", - "dev": true, - "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true, - "optional": true - }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", - "dev": true, - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "optional": true - }, - "node_modules/watchpack-chokidar2/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/watchpack-chokidar2/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/webpack": { - "version": "4.46.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz", - "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.5.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - }, - "webpack-command": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", - "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "cross-spawn": "^6.0.5", - "enhanced-resolve": "^4.1.1", - "findup-sync": "^3.0.0", - "global-modules": "^2.0.0", - "import-local": "^2.0.0", - "interpret": "^1.4.0", - "loader-utils": "^1.4.0", - "supports-color": "^6.1.0", - "v8-compile-cache": "^2.1.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=6.11.5" - }, - "peerDependencies": { - "webpack": "4.x.x" - } - }, - "node_modules/webpack-cli/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/webpack-cli/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/webpack-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/webpack-cli/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/webpack-cli/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-cli/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/webpack-cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-cli/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-cli/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-cli/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/webpack-cli/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-cli/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-cli/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/webpack-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-cli/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/webpack-cli/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/webpack-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/webpack-dev-middleware": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz", - "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==", - "dev": true, - "dependencies": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/webpack-dev-server": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz", - "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==", - "dev": true, - "dependencies": { - "ansi-html-community": "0.0.8", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.8", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "^0.3.21", - "sockjs-client": "^1.5.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 6.11.5" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-dev-server/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/webpack-dev-server/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dev": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", - "dev": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/cliui/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", - "dev": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/string-width/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", - "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-dev-server/node_modules/ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/webpack-dev-server/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/webpack-dev-server/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/webpack-dev-server/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/webpack-inline-manifest-plugin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/webpack-inline-manifest-plugin/-/webpack-inline-manifest-plugin-4.0.1.tgz", - "integrity": "sha512-A6VRqhSDEUsqf6bJmrfNDmlVr+nkI2gfPsRC2/VorUeRMqyrSVvT7ltOjUcIG0VIigTNAcN2LbE83YwFH8VTHg==", - "dev": true, - "dependencies": { - "source-map-url": "0.4.0" - } - }, - "node_modules/webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "dependencies": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-log/node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/webpack-log/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "node_modules/webpack-sources": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.2.0.tgz", - "integrity": "sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w==", - "dev": true, - "dependencies": { - "source-list-map": "^2.0.1", - "source-map": "^0.6.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", "dev": true, + "optional": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.6.0" } }, - "node_modules/webpack/node_modules/braces/node_modules/extend-shallow": { + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true, + "optional": true + }, + "node_modules/void-elements": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/webpack/node_modules/enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" } }, - "node_modules/webpack/node_modules/enhanced-resolve/node_modules/memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" + "minimalistic-assert": "^1.0.0" } }, - "node_modules/webpack/node_modules/eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, - "dependencies": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, "engines": { - "node": ">=4.0.0" + "node": ">= 8" } }, - "node_modules/webpack/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", - "dev": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "node_modules/webpack": { + "version": "5.93.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", + "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/webpack/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } } }, - "node_modules/webpack/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/webpack/node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=14" } }, - "node_modules/webpack/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "node_modules/webpack-cli/node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.0.0" } }, - "node_modules/webpack/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, - "node_modules/webpack/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/webpack/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "glob": "^7.1.3" }, "bin": { - "mkdirp": "bin/cmd.js" + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/webpack/node_modules/schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "node_modules/webpack-inline-manifest-plugin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/webpack-inline-manifest-plugin/-/webpack-inline-manifest-plugin-4.0.1.tgz", + "integrity": "sha512-A6VRqhSDEUsqf6bJmrfNDmlVr+nkI2gfPsRC2/VorUeRMqyrSVvT7ltOjUcIG0VIigTNAcN2LbE83YwFH8VTHg==", "dev": true, "dependencies": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - }, - "engines": { - "node": ">= 4" + "source-map-url": "0.4.0" } }, - "node_modules/webpack/node_modules/tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, - "node_modules/webpack/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": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "node_modules/webpack/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.4.0" } }, - "node_modules/webpack/node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/websocket-driver": { @@ -22213,15 +16935,6 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -22260,16 +16973,16 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -22278,22 +16991,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, "node_modules/winston": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.10.0.tgz", - "integrity": "sha512-nT6SIDaE9B7ZRO0u3UvdrimG0HkB7dSTAgInQnNR2SOPJ4bvq5q79+pXLftKmP52lJGW15+H5MCK0nM9D3KB/g==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.13.1.tgz", + "integrity": "sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", - "logform": "^2.4.0", + "logform": "^2.6.0", "one-time": "^1.0.0", "readable-stream": "^3.4.0", "safe-stable-stringify": "^2.3.1", "stack-trace": "0.0.x", "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" + "winston-transport": "^4.7.0" }, "engines": { "node": ">= 12.0.0" @@ -22348,17 +17067,25 @@ "winston": "^2 || ^3" } }, + "node_modules/winston-daily-rotate-file/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.1.tgz", + "integrity": "sha512-wQCXXVgfv/wUPOfb2x0ruxzwkcZfxcktz6JIMUaPLmcNhO4bZTwA/WtDWK74xV3F2dKu8YadrFv0qhwYjVEwhA==", "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", + "logform": "^2.6.1", + "readable-stream": "^3.6.2", "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 6.4.0" + "node": ">= 12.0.0" } }, "node_modules/winston-transport/node_modules/readable-stream": { @@ -22374,6 +17101,14 @@ "node": ">= 6" } }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/winston/node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -22387,13 +17122,13 @@ "node": ">= 6" } }, - "node_modules/worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, - "dependencies": { - "errno": "~0.1.7" + "engines": { + "node": ">=0.10.0" } }, "node_modules/wrap-ansi": { @@ -22549,16 +17284,16 @@ } }, "node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -22640,21 +17375,21 @@ } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { @@ -22666,6 +17401,15 @@ "node": ">=10" } }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -22676,9 +17420,9 @@ } }, "node_modules/yesno": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/yesno/-/yesno-0.0.1.tgz", - "integrity": "sha512-8wycrzlnjG7NotGDZYowY5+hB7zEbTCgkisfThgroVxW7FKcM0Mv1uldONjLmcx9A1yHJMSu//uSov2d8mWLwQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/yesno/-/yesno-0.4.0.tgz", + "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==", "dev": true }, "node_modules/yn": { @@ -22709,16 +17453,6 @@ "dependencies": { "tslib": "^2.3.0" } - }, - "node_modules/zwitch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", - "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } } } diff --git a/desktop/package.json b/desktop/package.json index 3b94890a3b..1220060916 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -66,7 +66,7 @@ "package": "npm run ts scripts/package/package.ts", "postinstall": "npm run rebuild:app-deps && npx patch-package", "start-publish": "npm run ts scripts/publish/publish.ts", - "webpack": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --trace-deprecation --max_old_space_size=4096 node_modules/webpack/bin/webpack.js", + "webpack": "cross-env node --trace-deprecation --max_old_space_size=4096 node_modules/webpack/bin/webpack.js", "webpack:stats": "cross-env NODE_ENV=production NODE_OPTIONS=--openssl-legacy-provider npm run webpack -- --profile --json > coverage/webpack-stats.json", "webpack-dev-server": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --trace-deprecation --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js", "rebuild:app-deps": "electron-builder install-app-deps", From 266eac43f3160c840afb4d5385bec3cee5de71cb Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Wed, 24 Jul 2024 17:08:26 -0700 Subject: [PATCH 04/18] tmp build working --- desktop/package-lock.json | 295 +++++++++--------- desktop/package.json | 11 +- desktop/patches/@azure+core-util+1.4.0.patch | 43 --- desktop/patches/@azure+core-util+1.9.1.patch | 56 ++++ ...pplication-create-dialog.component.spec.ts | 2 +- .../certificate/certificate.service.ts | 6 + .../core/storage/storage-blob-adapter.spec.ts | 2 +- packages/bonito-ui/package-lock.json | 40 --- packages/bonito-ui/package.json | 2 - packages/playground/package.json | 2 - packages/react/package.json | 2 - web/package.json | 2 - 12 files changed, 219 insertions(+), 244 deletions(-) delete mode 100644 desktop/patches/@azure+core-util+1.4.0.patch create mode 100644 desktop/patches/@azure+core-util+1.9.1.patch diff --git a/desktop/package-lock.json b/desktop/package-lock.json index e53600ea02..9a0212e3d3 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -20,9 +20,9 @@ "@angular/platform-browser-dynamic": "^12.0.0", "@angular/platform-server": "^12.0.0", "@angular/router": "^12.0.0", - "@azure/core-util": "1.4.0", + "@azure/core-util": "1.9.1", "@azure/msal-node": "^2.7.0", - "@azure/storage-blob": "^12.11.0", + "@azure/storage-blob": "^12.23.0", "@electron/remote": "^2.1.2", "applicationinsights": "^1.8.5", "chart.js": "^2.9.3", @@ -82,8 +82,6 @@ "@types/node": "18.11.9", "@types/node-fetch": "^2.5.7", "@types/proxyquire": "^1.3.28", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "@types/strip-json-comments": "^0.0.30", "@types/tinycolor2": "^1.4.2", "@types/webdriverio": "^4.13.3", @@ -124,7 +122,7 @@ "monaco-editor-webpack-plugin": "^7.1.0", "node-fetch": "^3.3.2", "nyc": "^15.1.0", - "patch-package": "^6.5.1", + "patch-package": "^8.0.0", "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", @@ -628,15 +626,26 @@ } }, "node_modules/@azure/core-util": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.4.0.tgz", - "integrity": "sha512-eGAyJpm3skVQoLiRqm/xPa+SXi/NPDdSHMxbRAz2lSprd+Zs+qrpQGQQ2VQ3Nttu+nSZR4XoYQC71LbEI7jsig==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.9.1.tgz", + "integrity": "sha512-OLsq0etbHO1MA7j6FouXFghuHrAFGk+5C1imcpQ2e+0oZhYF07WLA+NW2Vqs70R7d+zOAWiWM3tbE1sXcDN66g==", "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, "node_modules/@azure/core-xml": { @@ -2593,12 +2602,6 @@ "xmlbuilder": ">=11.0.1" } }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", - "dev": true - }, "node_modules/@types/proxyquire": { "version": "1.3.31", "resolved": "https://registry.npmjs.org/@types/proxyquire/-/proxyquire-1.3.31.tgz", @@ -2617,26 +2620,6 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "node_modules/@types/react": { - "version": "17.0.80", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", - "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "^0.16", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.25", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.25.tgz", - "integrity": "sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, "node_modules/@types/responselike": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", @@ -2652,12 +2635,6 @@ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", "dev": true }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "dev": true - }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", @@ -3227,6 +3204,28 @@ } } }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", @@ -5437,12 +5436,6 @@ "node": ">=4" } }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true - }, "node_modules/custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -8067,6 +8060,12 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, "node_modules/fast-xml-parser": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", @@ -10659,12 +10658,36 @@ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, + "node_modules/json-stable-stringify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "isarray": "^2.0.5", + "jsonify": "^0.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, + "node_modules/json-stable-stringify/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -10693,6 +10716,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -11949,12 +11981,6 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -12728,31 +12754,32 @@ } }, "node_modules/patch-package": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", - "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", + "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", "dev": true, "dependencies": { "@yarnpkg/lockfile": "^1.1.0", "chalk": "^4.1.2", - "cross-spawn": "^6.0.5", + "ci-info": "^3.7.0", + "cross-spawn": "^7.0.3", "find-yarn-workspace-root": "^2.0.0", "fs-extra": "^9.0.0", - "is-ci": "^2.0.0", + "json-stable-stringify": "^1.0.2", "klaw-sync": "^6.0.0", "minimist": "^1.2.6", "open": "^7.4.2", "rimraf": "^2.6.3", - "semver": "^5.6.0", + "semver": "^7.5.3", "slash": "^2.0.0", "tmp": "^0.0.33", - "yaml": "^1.10.2" + "yaml": "^2.2.2" }, "bin": { "patch-package": "index.js" }, "engines": { - "node": ">=10", + "node": ">=14", "npm": ">5" } }, @@ -12787,12 +12814,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/patch-package/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "node_modules/patch-package/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -12805,22 +12826,6 @@ "node": ">=7.0.0" } }, - "node_modules/patch-package/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, "node_modules/patch-package/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -12845,18 +12850,6 @@ "node": ">=8" } }, - "node_modules/patch-package/node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, "node_modules/patch-package/node_modules/jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -12869,45 +12862,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/patch-package/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/patch-package/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/patch-package/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/patch-package/node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -12950,16 +12904,16 @@ "node": ">= 10.0.0" } }, - "node_modules/patch-package/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/patch-package/node_modules/yaml": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", + "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, "bin": { - "which": "bin/which" + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" } }, "node_modules/path-exists": { @@ -13977,6 +13931,15 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -14341,6 +14304,22 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/schema-utils/node_modules/ajv-keywords": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", @@ -14353,6 +14332,12 @@ "ajv": "^8.8.2" } }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -15544,6 +15529,22 @@ "node": ">=10.0.0" } }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/table/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -15571,6 +15572,12 @@ "node": ">=7.0.0" } }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, "node_modules/table/node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index 1220060916..f42da68ef9 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -121,8 +121,6 @@ "@types/node": "18.11.9", "@types/node-fetch": "^2.5.7", "@types/proxyquire": "^1.3.28", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "@types/strip-json-comments": "^0.0.30", "@types/tinycolor2": "^1.4.2", "@types/webdriverio": "^4.13.3", @@ -163,7 +161,7 @@ "monaco-editor-webpack-plugin": "^7.1.0", "node-fetch": "^3.3.2", "nyc": "^15.1.0", - "patch-package": "^6.5.1", + "patch-package": "^8.0.0", "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", @@ -186,7 +184,7 @@ "yesno": "^0.4.0" }, "dependencies": { - "@azure/core-util": "1.4.0", + "@azure/core-util": "1.9.1", "@angular/animations": "^12.0.0", "@angular/cdk": "^12.0.0", "@angular/common": "^12.0.0", @@ -201,7 +199,7 @@ "@azure/bonito-core": "^1.0.0", "@azure/bonito-ui": "^1.0.0", "@azure/msal-node": "^2.7.0", - "@azure/storage-blob": "^12.11.0", + "@azure/storage-blob": "^12.23.0", "@batch/ui-playground": "^1.0.0", "@batch/ui-react": "^1.0.0", "@batch/ui-service": "^1.0.0", @@ -247,7 +245,6 @@ }, "overrides": { "json5": "^2.2.3", - "ajv": "^6.12.6", - "@azure/core-util": "1.4.0" + "@azure/core-util": "1.9.1" } } diff --git a/desktop/patches/@azure+core-util+1.4.0.patch b/desktop/patches/@azure+core-util+1.4.0.patch deleted file mode 100644 index 63b2de8522..0000000000 --- a/desktop/patches/@azure+core-util+1.4.0.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/node_modules/@azure/core-util/dist-esm/src/checkEnvironment.js b/node_modules/@azure/core-util/dist-esm/src/checkEnvironment.js -index 5a89b5f..1c62028 100644 ---- a/node_modules/@azure/core-util/dist-esm/src/checkEnvironment.js -+++ b/node_modules/@azure/core-util/dist-esm/src/checkEnvironment.js -@@ -17,7 +17,15 @@ export const isWebWorker = typeof self === "object" && - /** - * A constant that indicates whether the environment the code is running is Node.JS. - */ --export const isNode = typeof process !== "undefined" && Boolean(process.version) && Boolean((_d = process.versions) === null || _d === void 0 ? void 0 : _d.node); -+// KLUDGE: @azure/storage-blob uses isNode variable exported from @azure/core-util to -+// determine how it should process data. However, in the renderer process, isNode is -+// set to be true, which causes @azure/storage-blob fails to process data. Thus we need -+// to patch isNode to be false in the renderer process. -+// github issue: https://github.com/Azure/azure-sdk-for-js/issues/21110 -+export const isNode = -+ typeof process !== "undefined" && -+ !!process.env && -+ !process.env.RENDERER; - /** - * A constant that indicates whether the environment the code is running is Deno. - */ -diff --git a/node_modules/@azure/core-util/dist/index.js b/node_modules/@azure/core-util/dist/index.js -index 22d406a..b2f1205 100644 ---- a/node_modules/@azure/core-util/dist/index.js -+++ b/node_modules/@azure/core-util/dist/index.js -@@ -268,7 +268,16 @@ const isWebWorker = typeof self === "object" && - /** - * A constant that indicates whether the environment the code is running is Node.JS. - */ --const isNode = typeof process !== "undefined" && Boolean(process.version) && Boolean((_d = process.versions) === null || _d === void 0 ? void 0 : _d.node); -+// KLUDGE: @azure/storage-blob uses isNode variable exported from @azure/core-util to -+// determine how it should process data. However, in the renderer process, isNode is -+// set to be true, which causes @azure/storage-blob fails to process data. Thus we need -+// to patch isNode to be false in the renderer process. -+// github issue: https://github.com/Azure/azure-sdk-for-js/issues/21110 -+const isNode = -+ typeof process !== "undefined" && -+ !!process.env && -+ !process.env.RENDERER; -+ - /** - * A constant that indicates whether the environment the code is running is Deno. - */ diff --git a/desktop/patches/@azure+core-util+1.9.1.patch b/desktop/patches/@azure+core-util+1.9.1.patch new file mode 100644 index 0000000000..f754f56824 --- /dev/null +++ b/desktop/patches/@azure+core-util+1.9.1.patch @@ -0,0 +1,56 @@ +diff --git a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js b/node_modules/@azure/core-util/dist/browser/checkEnvironment.js +index b7feb20..2d280f2 100644 +--- a/node_modules/@azure/core-util/dist/browser/checkEnvironment.js ++++ b/node_modules/@azure/core-util/dist/browser/checkEnvironment.js +@@ -29,7 +29,8 @@ export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undef + */ + export const isNodeLike = typeof globalThis.process !== "undefined" && + Boolean(globalThis.process.version) && +- Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); ++ Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node) && ++ !Boolean(process.env.RENDERER); + /** + * A constant that indicates whether the environment the code is running is a Node.js compatible environment. + * @deprecated Use `isNodeLike` instead. +diff --git a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js +index 3822c2c..337b32a 100644 +--- a/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js ++++ b/node_modules/@azure/core-util/dist/commonjs/checkEnvironment.js +@@ -32,7 +32,8 @@ exports.isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undefined" + */ + exports.isNodeLike = typeof globalThis.process !== "undefined" && + Boolean(globalThis.process.version) && +- Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); ++ Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node) && ++ !Boolean(process.env.RENDERER); + /** + * A constant that indicates whether the environment the code is running is a Node.js compatible environment. + * @deprecated Use `isNodeLike` instead. +diff --git a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js b/node_modules/@azure/core-util/dist/esm/checkEnvironment.js +index b7feb20..2d280f2 100644 +--- a/node_modules/@azure/core-util/dist/esm/checkEnvironment.js ++++ b/node_modules/@azure/core-util/dist/esm/checkEnvironment.js +@@ -29,7 +29,8 @@ export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undef + */ + export const isNodeLike = typeof globalThis.process !== "undefined" && + Boolean(globalThis.process.version) && +- Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); ++ Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node) && ++ !Boolean(process.env.RENDERER); + /** + * A constant that indicates whether the environment the code is running is a Node.js compatible environment. + * @deprecated Use `isNodeLike` instead. +diff --git a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js +index b7feb20..2d280f2 100644 +--- a/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js ++++ b/node_modules/@azure/core-util/dist/react-native/checkEnvironment.js +@@ -29,7 +29,8 @@ export const isBun = typeof Bun !== "undefined" && typeof Bun.version !== "undef + */ + export const isNodeLike = typeof globalThis.process !== "undefined" && + Boolean(globalThis.process.version) && +- Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node); ++ Boolean((_d = globalThis.process.versions) === null || _d === void 0 ? void 0 : _d.node) && ++ !Boolean(process.env.RENDERER); + /** + * A constant that indicates whether the environment the code is running is a Node.js compatible environment. + * @deprecated Use `isNodeLike` instead. diff --git a/desktop/src/app/components/application/action/create/application-create-dialog.component.spec.ts b/desktop/src/app/components/application/action/create/application-create-dialog.component.spec.ts index 2ee1d7f98c..3d679304ca 100644 --- a/desktop/src/app/components/application/action/create/application-create-dialog.component.spec.ts +++ b/desktop/src/app/components/application/action/create/application-create-dialog.component.spec.ts @@ -17,7 +17,7 @@ import * as TestConstants from "test/test-constants"; import { validateControl } from "test/utils/helpers"; import { MockedFile } from "test/utils/mocks"; import { ServerErrorMockComponent, complexFormMockComponents } from "test/utils/mocks/components"; -import { isNode } from '@azure/core-http'; +import { isNode } from '@azure/core-util'; describe("ApplicationCreateDialogComponent ", () => { let fixture: ComponentFixture; diff --git a/desktop/src/app/services/azure-batch/certificate/certificate.service.ts b/desktop/src/app/services/azure-batch/certificate/certificate.service.ts index f1eabfd7cb..927919775c 100644 --- a/desktop/src/app/services/azure-batch/certificate/certificate.service.ts +++ b/desktop/src/app/services/azure-batch/certificate/certificate.service.ts @@ -185,6 +185,8 @@ export class CertificateService { const p12Der = forge.util.decode64(data); // Set parseAllBytes to false to avoid regression. // See: https://github.com/digitalbazaar/forge/issues/975 + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore parseAllBytes is not in the @types/node-forge const p12Asn1 = forge.asn1.fromDer(p12Der, {parseAllBytes: false}); const outCert = forge.pkcs12.pkcs12FromAsn1(p12Asn1, false, password); const keyBags = outCert.getBags({ bagType: forge.pki.oids.certBag }); @@ -195,6 +197,8 @@ export class CertificateService { case CertificateFormat.cer: // Set parseAllBytes to false to avoid regression. // See: https://github.com/digitalbazaar/forge/issues/975 + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore parseAllBytes is not in the @types/node-forge const outAsn1 = forge.asn1.fromDer(data, {parseAllBytes: false}); certDer = forge.asn1.toDer(outAsn1).getBytes(); break; @@ -203,6 +207,8 @@ export class CertificateService { current certificate type is not supported.`); } const md = forge.md.sha1.create(); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore start is not in the @types/node-forge md.start(); md.update(certDer); const digest = md.digest(); diff --git a/desktop/src/client/core/storage/storage-blob-adapter.spec.ts b/desktop/src/client/core/storage/storage-blob-adapter.spec.ts index 08ac30859c..0cf5e1423c 100644 --- a/desktop/src/client/core/storage/storage-blob-adapter.spec.ts +++ b/desktop/src/client/core/storage/storage-blob-adapter.spec.ts @@ -1,5 +1,5 @@ import { StorageBlobAdapter } from "./storage-blob-adapter"; -import { isNode } from "@azure/core-http"; +import { isNode } from "@azure/core-util"; describe("StorageBlobAdapter", () => { let adapter: StorageBlobAdapter; diff --git a/packages/bonito-ui/package-lock.json b/packages/bonito-ui/package-lock.json index 3b164c87c0..39c9a9c4e8 100644 --- a/packages/bonito-ui/package-lock.json +++ b/packages/bonito-ui/package-lock.json @@ -12,8 +12,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", @@ -1116,38 +1114,6 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.65", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.65.tgz", - "integrity": "sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz", - "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1682,12 +1648,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", diff --git a/packages/bonito-ui/package.json b/packages/bonito-ui/package.json index 9891d88b98..c63e7a9962 100644 --- a/packages/bonito-ui/package.json +++ b/packages/bonito-ui/package.json @@ -79,8 +79,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", diff --git a/packages/playground/package.json b/packages/playground/package.json index 3f94de6c18..85ab7967f4 100644 --- a/packages/playground/package.json +++ b/packages/playground/package.json @@ -78,8 +78,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", diff --git a/packages/react/package.json b/packages/react/package.json index ba61d6ff6a..47906a5b38 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -82,8 +82,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", diff --git a/web/package.json b/web/package.json index baf57d8b94..1dfafb59dc 100644 --- a/web/package.json +++ b/web/package.json @@ -71,8 +71,6 @@ "devDependencies": { "@types/jest": "^27.0.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "@types/react-router-dom": "^5.1.7", "css-loader": "^6.8.1", "esbuild-loader": "^4.0.1", From ce86543859faa55239c6e070fcfc7f7d2a947210 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Fri, 26 Jul 2024 17:51:23 -0700 Subject: [PATCH 05/18] temp: only 4 test failed --- desktop/config/webpack.config.test.js | 15 +++- desktop/package-lock.json | 75 +++++++++++++++++++ desktop/package.json | 7 +- .../complex-form/complex-form.component.ts | 15 +++- .../src/@batch-flask/ui/form/form.module.ts | 2 +- .../@batch-flask/ui/table/table.component.ts | 3 +- .../programming-sample/samples/index.ts | 18 ++--- 7 files changed, 117 insertions(+), 18 deletions(-) diff --git a/desktop/config/webpack.config.test.js b/desktop/config/webpack.config.test.js index 6b364edc6e..d522ef5afd 100644 --- a/desktop/config/webpack.config.test.js +++ b/desktop/config/webpack.config.test.js @@ -2,6 +2,7 @@ const config = require("./webpack.config.base"); const helpers = require("./helpers"); const { commonRules, defineEnv } = require("./webpack.common"); const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); + const ENV = "test"; // We need to remove the app entry from the default config as this is defined in karma @@ -28,15 +29,23 @@ config.module.rules = config.module.rules = [ ], exclude: [/node_modules/, /\.node\.spec\.ts/], // node.spec.ts are to be run in node environment }, - ...commonRules, + { + test: /(\.html$)|(\.template$)/, + loader: "raw-loader", + options: { + esModule: false, + }, + exclude: [/node_modules/, helpers.root("src/app/index.html")], + }, + // ...commonRules.splice(commonRules.findIndex(rule => rule.test === /\.html$/), 1) ].concat( [{ test: /\.scss$/, - loader: "style-loader!css-loader!sass-loader", + use: ["style-loader", "css-loader", "sass-loader"], }, { test: /node_modules.*\.css$/, - loader: "style-loader!css-loader", + use: ["style-loader", "css-loader"], }, /** * Instruments JS files with Istanbul for subsequent code coverage reporting. diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 9a0212e3d3..3511069597 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -101,6 +101,7 @@ "eslint-plugin-prefer-arrow": "^1.2.3", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-loader": "^5.1.0", "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", @@ -9356,6 +9357,80 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, + "node_modules/html-loader": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-5.1.0.tgz", + "integrity": "sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==", + "dev": true, + "dependencies": { + "html-minifier-terser": "^7.2.0", + "parse5": "^7.1.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/html-loader/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/html-loader/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/html-loader/node_modules/html-minifier-terser": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "~5.3.2", + "commander": "^10.0.0", + "entities": "^4.4.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.15.1" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + } + }, + "node_modules/html-loader/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index f42da68ef9..2ad6ec07c4 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -4,6 +4,8 @@ "src/@batch-flask/extensions/*", "src/app/environment.ts", "src/app/commands/**/*", + "test/**/*", + "src/test/**/*", "*.scss" ], "productName": "Batch Explorer", @@ -92,9 +94,9 @@ "node": ">=18.0.0" }, "peerDependencies": { + "@fluentui/azure-themes": ">=8.6.34 < 9.0.0", "@fluentui/react": ">=8.97.2 <9.0.0", "@fluentui/react-theme-provider": ">=0.19.16 <1.0.0", - "@fluentui/azure-themes": ">=8.6.34 < 9.0.0", "mobx": "^6.3.2", "mobx-react-lite": "^3.2.0", "react": ">=17.0.2 <18.0.0", @@ -140,6 +142,7 @@ "eslint-plugin-prefer-arrow": "^1.2.3", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^8.0.0", + "html-loader": "^5.1.0", "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", @@ -184,7 +187,6 @@ "yesno": "^0.4.0" }, "dependencies": { - "@azure/core-util": "1.9.1", "@angular/animations": "^12.0.0", "@angular/cdk": "^12.0.0", "@angular/common": "^12.0.0", @@ -198,6 +200,7 @@ "@angular/router": "^12.0.0", "@azure/bonito-core": "^1.0.0", "@azure/bonito-ui": "^1.0.0", + "@azure/core-util": "1.9.1", "@azure/msal-node": "^2.7.0", "@azure/storage-blob": "^12.23.0", "@batch/ui-playground": "^1.0.0", diff --git a/desktop/src/@batch-flask/ui/form/complex-form/complex-form.component.ts b/desktop/src/@batch-flask/ui/form/complex-form/complex-form.component.ts index fa7181d1ec..8ae3a360ae 100644 --- a/desktop/src/@batch-flask/ui/form/complex-form/complex-form.component.ts +++ b/desktop/src/@batch-flask/ui/form/complex-form/complex-form.component.ts @@ -1,5 +1,16 @@ import { - AfterViewInit, ChangeDetectorRef, Component, ContentChildren, ElementRef, HostBinding, Input, OnChanges, QueryList, Type, ViewChild, + AfterViewInit, + ChangeDetectorRef, + Component, + ContentChildren, + ElementRef, + forwardRef, + HostBinding, + Input, + OnChanges, + QueryList, + Type, + ViewChild, } from "@angular/core"; import { FormControl } from "@angular/forms"; import { AsyncTask, Dto, ServerError, autobind } from "@batch-flask/core"; @@ -69,7 +80,7 @@ export class ComplexFormComponent extends FormBase implements AfterViewInit, OnC @Input() @HostBinding("class.sticky-footer") public stickyFooter: boolean = true; - @ContentChildren(FormPageComponent) public pages: QueryList; + @ContentChildren(forwardRef(() => FormPageComponent)) public pages: QueryList; @ViewChild('formElement') formElement: ElementRef; diff --git a/desktop/src/@batch-flask/ui/form/form.module.ts b/desktop/src/@batch-flask/ui/form/form.module.ts index b120a134df..45f7b0b68f 100644 --- a/desktop/src/@batch-flask/ui/form/form.module.ts +++ b/desktop/src/@batch-flask/ui/form/form.module.ts @@ -9,6 +9,7 @@ import { ServerErrorModule } from "@batch-flask/ui/server-error"; import { ButtonsModule } from "../buttons"; import { CopyableModule } from "../copyable"; import { I18nUIModule } from "../i18n"; +import { FormPageComponent } from "./form-page"; import { ComplexFormComponent } from "./complex-form"; import { FormFooterComponent } from "./complex-form/footer"; import { EditableTableModule } from "./editable-table"; @@ -16,7 +17,6 @@ import { ExpandingTextareaComponent } from "./expanding-textarea"; import { FormErrorComponent } from "./form-error"; import { FormFieldComponent, FormFieldPrefixDirective, FormFieldSuffixDirective } from "./form-field"; import { FormJsonEditorComponent } from "./form-json-editor"; -import { FormPageComponent } from "./form-page"; import { FormMultiPickerComponent, FormPickerComponent, FormPickerItemTemplateDirective } from "./form-picker"; import { FormSectionComponent } from "./form-section"; import { HintComponent } from "./hint"; diff --git a/desktop/src/@batch-flask/ui/table/table.component.ts b/desktop/src/@batch-flask/ui/table/table.component.ts index bae15e6165..13e31f01c2 100644 --- a/desktop/src/@batch-flask/ui/table/table.component.ts +++ b/desktop/src/@batch-flask/ui/table/table.component.ts @@ -6,6 +6,7 @@ import { ContentChildren, ElementRef, EventEmitter, + forwardRef, HostBinding, HostListener, Input, @@ -80,7 +81,7 @@ export class TableComponent extends AbstractListBase implements AfterContentInit @Output() public dropOnRow = new EventEmitter(); @ViewChild(TableHeadComponent, { static: false }) public head: TableHeadComponent; - @ContentChildren(TableColumnComponent) public columnComponents: QueryList; + @ContentChildren(forwardRef(() => TableColumnComponent)) public columnComponents: QueryList; @HostBinding("class.drag-hover") public isDraging = 0; @HostBinding("class.activable") public get activable() { return this.config.activable; diff --git a/desktop/src/app/components/account/details/programmatic-usage/programming-sample/samples/index.ts b/desktop/src/app/components/account/details/programmatic-usage/programming-sample/samples/index.ts index 01c7ec5ea1..e4607956b9 100644 --- a/desktop/src/app/components/account/details/programmatic-usage/programming-sample/samples/index.ts +++ b/desktop/src/app/components/account/details/programmatic-usage/programming-sample/samples/index.ts @@ -1,17 +1,17 @@ /* eslint-disable @typescript-eslint/no-var-requires */ export const sampleTemplates = { sharedKey: { - python: require("raw-loader!./shared-key/python.py.template"), - csharp: require("raw-loader!./shared-key/csharp.cs.template"), - nodejs: require("raw-loader!./shared-key/node.js.template"), - doAzureParallel: require("raw-loader!./shared-key/doAzureParallel.json.template"), + python: require("./shared-key/python.py.template"), + csharp: require("./shared-key/csharp.cs.template"), + nodejs: require("./shared-key/node.js.template"), + doAzureParallel: require("./shared-key/doAzureParallel.json.template"), }, aad: { - python: require("raw-loader!./aad/python.py.template"), - csharp: require("raw-loader!./aad/csharp.cs.template"), - nodejs: require("raw-loader!./aad/node.js.template"), - aztk: require("raw-loader!./aad/aztk.yaml.template"), - doAzureParallel: require("raw-loader!./aad/doAzureParallel.json.template"), + python: require("./aad/python.py.template"), + csharp: require("./aad/csharp.cs.template"), + nodejs: require("./aad/node.js.template"), + aztk: require("./aad/aztk.yaml.template"), + doAzureParallel: require("./aad/doAzureParallel.json.template"), }, }; From 52e91eaf34d83624405da46463722c786a08dd18 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Fri, 26 Jul 2024 22:49:13 -0700 Subject: [PATCH 06/18] update webpack common --- desktop/config/webpack.common.js | 5 ++++- desktop/config/webpack.config.test.js | 18 +++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/desktop/config/webpack.common.js b/desktop/config/webpack.common.js index 7feef1cb75..a02dfb50f6 100644 --- a/desktop/config/webpack.common.js +++ b/desktop/config/webpack.common.js @@ -3,8 +3,11 @@ const { DefinePlugin } = require("webpack"); const rules = { html: { - test: /\.html$/, + test: /(\.html$)|(\.template$)/, loader: "raw-loader", + options: { + esModule: false, + }, exclude: [/node_modules/, helpers.root("src/app/index.html")], }, json: { diff --git a/desktop/config/webpack.config.test.js b/desktop/config/webpack.config.test.js index d522ef5afd..f2abbbf56e 100644 --- a/desktop/config/webpack.config.test.js +++ b/desktop/config/webpack.config.test.js @@ -29,15 +29,15 @@ config.module.rules = config.module.rules = [ ], exclude: [/node_modules/, /\.node\.spec\.ts/], // node.spec.ts are to be run in node environment }, - { - test: /(\.html$)|(\.template$)/, - loader: "raw-loader", - options: { - esModule: false, - }, - exclude: [/node_modules/, helpers.root("src/app/index.html")], - }, - // ...commonRules.splice(commonRules.findIndex(rule => rule.test === /\.html$/), 1) + // { + // test: /(\.html$)|(\.template$)/, + // loader: "raw-loader", + // options: { + // esModule: false, + // }, + // exclude: [/node_modules/, helpers.root("src/app/index.html")], + // }, + ...commonRules.splice(commonRules.findIndex(rule => rule.test === /\.html$/), 1) ].concat( [{ test: /\.scss$/, From 988c735c4eae68c80ca1bd07529ecaf3fbc5f88e Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Mon, 29 Jul 2024 17:58:09 -0700 Subject: [PATCH 07/18] Test passing, Todo: fix code coverage --- desktop/config/webpack.common.js | 16 +- desktop/config/webpack.config.test.js | 12 +- desktop/package-lock.json | 295 -------------------------- desktop/package.json | 4 - desktop/src/app/app.component.ts | 4 +- 5 files changed, 8 insertions(+), 323 deletions(-) diff --git a/desktop/config/webpack.common.js b/desktop/config/webpack.common.js index a02dfb50f6..df2d98a6db 100644 --- a/desktop/config/webpack.common.js +++ b/desktop/config/webpack.common.js @@ -4,29 +4,21 @@ const { DefinePlugin } = require("webpack"); const rules = { html: { test: /(\.html$)|(\.template$)/, - loader: "raw-loader", - options: { - esModule: false, - }, + type: "asset/source", exclude: [/node_modules/, helpers.root("src/app/index.html")], }, json: { - type: "javascript/auto", test: /\.json$/, - loader: "raw-loader", + type: "asset/source", exclude: [/node_modules/], }, file: { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, - loader: "file-loader", + type: "asset/resource", }, font: { test: /\.woff(2)?(\?v=\d+\.\d+\.\d+)?$/, - loader: "url-loader", - options: { - limit: 10000, - mimetype: "application/font-woff" - } + type: "asset" }, }; diff --git a/desktop/config/webpack.config.test.js b/desktop/config/webpack.config.test.js index f2abbbf56e..4b84190dce 100644 --- a/desktop/config/webpack.config.test.js +++ b/desktop/config/webpack.config.test.js @@ -1,5 +1,5 @@ const config = require("./webpack.config.base"); -const helpers = require("./helpers"); +// const helpers = require("./helpers"); const { commonRules, defineEnv } = require("./webpack.common"); const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); @@ -29,15 +29,7 @@ config.module.rules = config.module.rules = [ ], exclude: [/node_modules/, /\.node\.spec\.ts/], // node.spec.ts are to be run in node environment }, - // { - // test: /(\.html$)|(\.template$)/, - // loader: "raw-loader", - // options: { - // esModule: false, - // }, - // exclude: [/node_modules/, helpers.root("src/app/index.html")], - // }, - ...commonRules.splice(commonRules.findIndex(rule => rule.test === /\.html$/), 1) + ...commonRules ].concat( [{ test: /\.scss$/, diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 3511069597..92bae2b540 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -99,9 +99,7 @@ "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsdoc": "^37.9.6", "eslint-plugin-prefer-arrow": "^1.2.3", - "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^8.0.0", - "html-loader": "^5.1.0", "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", @@ -127,7 +125,6 @@ "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", - "raw-loader": "^4.0.2", "rimraf": "^2.7.1", "sass": "^1.66.1", "sass-loader": "^13.3.2", @@ -137,7 +134,6 @@ "ts-loader": "^9.4.4", "ts-node": "^10.9.1", "typescript": "~4.6.0", - "url-loader": "^4.1.1", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", @@ -8166,76 +8162,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-loader": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", - "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/file-loader/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/file-loader/node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/file-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/file-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/file-stream-rotator": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.4.1.tgz", @@ -9357,80 +9283,6 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/html-loader": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-5.1.0.tgz", - "integrity": "sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==", - "dev": true, - "dependencies": { - "html-minifier-terser": "^7.2.0", - "parse5": "^7.1.2" - }, - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/html-loader/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/html-loader/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/html-loader/node_modules/html-minifier-terser": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", - "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", - "dev": true, - "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "~5.3.2", - "commander": "^10.0.0", - "entities": "^4.4.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.15.1" - }, - "bin": { - "html-minifier-terser": "cli.js" - }, - "engines": { - "node": "^14.13.1 || >=16.0.0" - } - }, - "node_modules/html-loader/node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -13565,76 +13417,6 @@ "node": ">=0.10.0" } }, - "node_modules/raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "node_modules/raw-loader/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/raw-loader/node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/raw-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/raw-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -16503,83 +16285,6 @@ "node": ">=6" } }, - "node_modules/url-loader": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.1.tgz", - "integrity": "sha512-3BTV812+AVHHOJQO8O5MkWgZ5aosP7GnROJwvzLS9hWDj00lZ6Z0wNak423Lp9PBZN05N+Jk/N5Si8jRAlGyWA==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "mime-types": "^2.1.27", - "schema-utils": "^3.0.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "file-loader": "*", - "webpack": "^4.0.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "file-loader": { - "optional": true - } - } - }, - "node_modules/url-loader/node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/url-loader/node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/url-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/url-loader/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/desktop/package.json b/desktop/package.json index 2ad6ec07c4..3c95cefacd 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -140,9 +140,7 @@ "eslint-plugin-import": "^2.25.4", "eslint-plugin-jsdoc": "^37.9.6", "eslint-plugin-prefer-arrow": "^1.2.3", - "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^8.0.0", - "html-loader": "^5.1.0", "html-webpack-plugin": "^5.5.3", "jasmine": "~3.5.0", "jasmine-axe": "^1.1.0", @@ -168,7 +166,6 @@ "playwright": "^1.18.1", "prettier": "^2.2.1", "proxyquire": "^2.1.3", - "raw-loader": "^4.0.2", "rimraf": "^2.7.1", "sass": "^1.66.1", "sass-loader": "^13.3.2", @@ -178,7 +175,6 @@ "ts-loader": "^9.4.4", "ts-node": "^10.9.1", "typescript": "~4.6.0", - "url-loader": "^4.1.1", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", diff --git a/desktop/src/app/app.component.ts b/desktop/src/app/app.component.ts index e3b5292e9d..3986e7a6ab 100644 --- a/desktop/src/app/app.component.ts +++ b/desktop/src/app/app.component.ts @@ -115,9 +115,9 @@ export class AppComponent implements OnInit, OnDestroy { private async _initWorkspaces() { // eslint-disable-next-line @typescript-eslint/no-var-requires - const adminWorkspace = JSON.parse(require("app/components/workspace/json-templates/admin-workspace.json").default); + const adminWorkspace = JSON.parse(require("app/components/workspace/json-templates/admin-workspace.json")); // eslint-disable-next-line @typescript-eslint/no-var-requires - const endUserWorkspace = JSON.parse(require("app/components/workspace/json-templates/end-user-workspace.json").default); + const endUserWorkspace = JSON.parse(require("app/components/workspace/json-templates/end-user-workspace.json")); this.workspaceService.init([ new Workspace({ ...adminWorkspace }), new Workspace({ ...endUserWorkspace }), From dcd9f533888f0f53e1514a22fbce33f51c65a63e Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Tue, 30 Jul 2024 14:45:32 -0700 Subject: [PATCH 08/18] rm sourceMapFilename --- desktop/config/webpack.config.prod.js | 53 ++++++++++++--------------- 1 file changed, 23 insertions(+), 30 deletions(-) diff --git a/desktop/config/webpack.config.prod.js b/desktop/config/webpack.config.prod.js index f53fd1c994..df7fe6459e 100644 --- a/desktop/config/webpack.config.prod.js +++ b/desktop/config/webpack.config.prod.js @@ -32,13 +32,6 @@ module.exports = merge(config, { */ filename: "[name].[chunkhash].bundle.js", - /** - * The filename of the SourceMaps for the JavaScript files. - * They are inside the output.path directory. - * - * @see http://webpack.github.io/docs/configuration.html#output-sourcemapfilename - */ - sourceMapFilename: "[name].[chunkhash].bundle.map", /** * The filename of non-entry chunks as relative path @@ -72,30 +65,30 @@ module.exports = merge(config, { new MiniCssExtractPlugin({ filename: "[name]-[hash].css", chunkFilename: "[name]-[chunkhash].css" }), defineEnv(ENV), - new LoaderOptionsPlugin({ - minimize: true, - debug: false, - options: { + // new LoaderOptionsPlugin({ + // minimize: true, + // debug: false, + // options: { - /** - * Html loader advanced options - * - * See: https://github.com/webpack/html-loader#advanced-options - */ - // TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor - htmlLoader: { - minimize: true, - removeAttributeQuotes: false, - caseSensitive: true, - customAttrSurround: [ - [/#/, /(?:)/], - [/\*/, /(?:)/], - [/\[?\(?/, /(?:)/] - ], - customAttrAssign: [/\)?\]?=/] - }, + // /** + // * Html loader advanced options + // * + // * See: https://github.com/webpack/html-loader#advanced-options + // */ + // // TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor + // htmlLoader: { + // minimize: true, + // removeAttributeQuotes: false, + // caseSensitive: true, + // customAttrSurround: [ + // [/#/, /(?:)/], + // [/\*/, /(?:)/], + // [/\[?\(?/, /(?:)/] + // ], + // customAttrAssign: [/\)?\]?=/] + // }, - } - }), + // } + // }), ], }); From e97d0ba8e03464157c8f2fc446c1ef7e8f7474eb Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Tue, 30 Jul 2024 15:13:05 -0700 Subject: [PATCH 09/18] fix lint issue --- desktop/config/webpack.config.prod.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/desktop/config/webpack.config.prod.js b/desktop/config/webpack.config.prod.js index df7fe6459e..605d574f75 100644 --- a/desktop/config/webpack.config.prod.js +++ b/desktop/config/webpack.config.prod.js @@ -1,6 +1,5 @@ const config = require("./webpack.config.base"); const helpers = require("./helpers"); -const LoaderOptionsPlugin = require("webpack/lib/LoaderOptionsPlugin"); const merge = require("webpack-merge"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); const { defineEnv } = require("./webpack.common"); @@ -62,7 +61,7 @@ module.exports = merge(config, { }, plugins: [ - new MiniCssExtractPlugin({ filename: "[name]-[hash].css", chunkFilename: "[name]-[chunkhash].css" }), + new MiniCssExtractPlugin({ filename: "[name]-[chunkhash].css", chunkFilename: "[name]-[chunkhash].css" }), defineEnv(ENV), // new LoaderOptionsPlugin({ From 0a76e9da8e65f6ddaf9a5988c5193f30bc4cf4b0 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Tue, 30 Jul 2024 16:24:01 -0700 Subject: [PATCH 10/18] fix stylelint issue --- desktop/package-lock.json | 27 +++++++++++++++++++ desktop/package.json | 3 ++- .../all-job-graphs-home.scss | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 92bae2b540..95f0025898 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -123,6 +123,7 @@ "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", + "postcss-scss": "^4.0.9", "prettier": "^2.2.1", "proxyquire": "^2.1.3", "rimraf": "^2.7.1", @@ -13135,6 +13136,32 @@ "postcss": "^8.3.3" } }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, "node_modules/postcss-selector-parser": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", diff --git a/desktop/package.json b/desktop/package.json index 3c95cefacd..9358da7c48 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -62,7 +62,7 @@ "dev-server": "npm run webpack-dev-server", "eslint": "eslint -c .eslintrc.js . --quiet", "eslint:verbose": "eslint -c .eslintrc.js .", - "stylelint": "stylelint --syntax scss \"src/app/**/*.scss\"", + "stylelint": "stylelint --custom-syntax postcss-scss \"src/app/**/*.scss\"", "lint": "npm run eslint && npm run stylelint", "lint:fix": "npm run eslint --fix && npm run stylelint", "package": "npm run ts scripts/package/package.ts", @@ -164,6 +164,7 @@ "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", + "postcss-scss": "^4.0.9", "prettier": "^2.2.1", "proxyquire": "^2.1.3", "rimraf": "^2.7.1", diff --git a/desktop/src/app/components/job/graphs/all-job-graphs-home/all-job-graphs-home.scss b/desktop/src/app/components/job/graphs/all-job-graphs-home/all-job-graphs-home.scss index c71e3f11e8..8d4f536810 100644 --- a/desktop/src/app/components/job/graphs/all-job-graphs-home/all-job-graphs-home.scss +++ b/desktop/src/app/components/job/graphs/all-job-graphs-home/all-job-graphs-home.scss @@ -3,7 +3,7 @@ bl-all-job-graphs-home { $padding: 10px; $graph-header-height: 40px; - $graphs-content-height: calc(100% - #{$graph-header-height + $padding * 2}); + $graphs-content-height: calc(100% - #{$graph-header-height + $padding * 2}); display: block; width: 100%; From 9787cf6d614273ca1ada068ea19e380c97a8e524 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Mon, 12 Aug 2024 17:05:39 -0700 Subject: [PATCH 11/18] update validate-modles --- desktop/scripts/swagger/validate-models.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/desktop/scripts/swagger/validate-models.ts b/desktop/scripts/swagger/validate-models.ts index 19e9bce82a..085f804865 100644 --- a/desktop/scripts/swagger/validate-models.ts +++ b/desktop/scripts/swagger/validate-models.ts @@ -60,11 +60,11 @@ for (const mapping of nameMapping) { appMappings[mapping.app] = mapping.swagger; } -async function getSpecs() { +async function getSpecs(): Promise<{ definitions: Record; }> { const baseUrl = `https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/specification/batch`; const url = `${baseUrl}/data-plane/Microsoft.Batch/stable/${dataPlaneVersion}/BatchService.json`; const response = await fetch(url); - return response.json(); + return response.json() as unknown as { definitions: Record }; } async function getMapping() { From 0160841cf799a32112672e46e16ccbaac94259ca Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Mon, 12 Aug 2024 17:44:15 -0700 Subject: [PATCH 12/18] remove node-fetch dependency --- desktop/package.json | 2 -- desktop/scripts/lca/generate-third-party.ts | 3 +-- desktop/scripts/publish/github-api.ts | 1 - desktop/scripts/swagger/validate-models.ts | 1 - 4 files changed, 1 insertion(+), 6 deletions(-) diff --git a/desktop/package.json b/desktop/package.json index 9358da7c48..e0f825f0d4 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -121,7 +121,6 @@ "@types/js-yaml": "^3.12.5", "@types/luxon": "^1.27.1", "@types/node": "18.11.9", - "@types/node-fetch": "^2.5.7", "@types/proxyquire": "^1.3.28", "@types/strip-json-comments": "^0.0.30", "@types/tinycolor2": "^1.4.2", @@ -160,7 +159,6 @@ "merge2": "^1.4.1", "mini-css-extract-plugin": "^2.7.6", "monaco-editor-webpack-plugin": "^7.1.0", - "node-fetch": "^3.3.2", "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", diff --git a/desktop/scripts/lca/generate-third-party.ts b/desktop/scripts/lca/generate-third-party.ts index 826cb3cad0..aec27807bc 100644 --- a/desktop/scripts/lca/generate-third-party.ts +++ b/desktop/scripts/lca/generate-third-party.ts @@ -2,7 +2,6 @@ import { program } from "commander"; import * as fs from "fs"; -import fetch, { HeaderInit } from "node-fetch"; import * as path from "path"; import { Constants } from "../../src/client/client-constants"; @@ -147,7 +146,7 @@ async function loadLicense(dependency: Dependency, anonymous = false): const { repoUrl = null } = dependency; const repoName = getRepoName(repoUrl); const licenseUrl = `https://api.github.com/repos/${repoName}/license`; - const headers: HeaderInit = anonymous ? {} : + const headers: HeadersInit = anonymous ? {} : { Authorization: `token ${process.env.GH_TOKEN}` }; return fetch(licenseUrl, { headers }).then(async (res) => { diff --git a/desktop/scripts/publish/github-api.ts b/desktop/scripts/publish/github-api.ts index 03f3883d64..ba1c67fdd8 100644 --- a/desktop/scripts/publish/github-api.ts +++ b/desktop/scripts/publish/github-api.ts @@ -1,4 +1,3 @@ -import fetch from "node-fetch"; import { issuesUrl, milestoneIssuesUrl, milestoneUrl, pullRequestsUrl } from "./github-urls"; import { Issue, Milestone } from "./models"; diff --git a/desktop/scripts/swagger/validate-models.ts b/desktop/scripts/swagger/validate-models.ts index 085f804865..134533c530 100644 --- a/desktop/scripts/swagger/validate-models.ts +++ b/desktop/scripts/swagger/validate-models.ts @@ -10,7 +10,6 @@ import "zone.js"; console.log("Nodepath", process.env.NODE_PATH); import { Duration } from "luxon"; -import fetch from "node-fetch"; import { metadataForCtr } from "../../src/@batch-flask/core/record/helpers"; import * as models from "../../src/app/models"; import { Constants } from "../../src/common"; From 2453fc01b8a1bdc2cee6e2acfdc4d577315060a8 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Thu, 15 Aug 2024 16:19:31 -0700 Subject: [PATCH 13/18] TEMP update to 13 --- desktop/config/{helpers.js => helpers.cjs} | 0 .../{webpack.common.js => webpack.common.cjs} | 2 +- ...config.base.js => webpack.config.base.cjs} | 4 +- ...k.config.dev.js => webpack.config.dev.cjs} | 4 +- ...config.prod.js => webpack.config.prod.cjs} | 6 +- ...config.test.js => webpack.config.test.cjs} | 4 +- desktop/package-lock.json | 993 +++++++++++------- desktop/package.json | 43 +- desktop/scripts/i18n/create-xliff.ts | 2 +- desktop/scripts/i18n/digest-xliff.ts | 2 +- desktop/scripts/i18n/generate.ts | 2 +- desktop/scripts/install/get-python.ts | 2 +- desktop/scripts/swagger/validate-models.ts | 2 +- .../compiler/dev-translations-loader.ts | 8 +- .../ui/callout/callout.directive.ts | 10 +- .../ui/select/select.component.ts | 12 +- desktop/src/client/init.ts | 6 +- desktop/tsconfig.node.json | 7 +- .../{webpack.config.js => webpack.config.cjs} | 6 +- packages/playground/package-lock.json | 40 - packages/react/package-lock.json | 40 - web/package-lock.json | 11 - 22 files changed, 656 insertions(+), 550 deletions(-) rename desktop/config/{helpers.js => helpers.cjs} (100%) rename desktop/config/{webpack.common.js => webpack.common.cjs} (96%) rename desktop/config/{webpack.config.base.js => webpack.config.base.cjs} (97%) rename desktop/config/{webpack.config.dev.js => webpack.config.dev.cjs} (94%) rename desktop/config/{webpack.config.prod.js => webpack.config.prod.cjs} (94%) rename desktop/config/{webpack.config.test.js => webpack.config.test.cjs} (93%) rename desktop/{webpack.config.js => webpack.config.cjs} (53%) diff --git a/desktop/config/helpers.js b/desktop/config/helpers.cjs similarity index 100% rename from desktop/config/helpers.js rename to desktop/config/helpers.cjs diff --git a/desktop/config/webpack.common.js b/desktop/config/webpack.common.cjs similarity index 96% rename from desktop/config/webpack.common.js rename to desktop/config/webpack.common.cjs index df2d98a6db..696fac5adf 100644 --- a/desktop/config/webpack.common.js +++ b/desktop/config/webpack.common.cjs @@ -1,4 +1,4 @@ -const helpers = require("./helpers"); +const helpers = require("./helpers.cjs"); const { DefinePlugin } = require("webpack"); const rules = { diff --git a/desktop/config/webpack.config.base.js b/desktop/config/webpack.config.base.cjs similarity index 97% rename from desktop/config/webpack.config.base.js rename to desktop/config/webpack.config.base.cjs index 4340117cf9..f30ab2ebe5 100644 --- a/desktop/config/webpack.config.base.js +++ b/desktop/config/webpack.config.base.cjs @@ -1,10 +1,10 @@ const webpack = require("webpack"); -const helpers = require("./helpers"); +const helpers = require("./helpers.cjs"); const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const CopyWebpackPlugin = require("copy-webpack-plugin"); const { AngularWebpackPlugin } = require("@ngtools/webpack"); -const { commonRules } = require("./webpack.common"); +const { commonRules } = require("./webpack.common.cjs"); const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin"); const isDevServer = helpers.isWebpackDevServer(); diff --git a/desktop/config/webpack.config.dev.js b/desktop/config/webpack.config.dev.cjs similarity index 94% rename from desktop/config/webpack.config.dev.js rename to desktop/config/webpack.config.dev.cjs index 0dcb839dc2..0ac03ba94a 100644 --- a/desktop/config/webpack.config.dev.js +++ b/desktop/config/webpack.config.dev.cjs @@ -1,7 +1,7 @@ -const config = require("./webpack.config.base"); +const config = require("./webpack.config.base.cjs"); const path = require("path"); const merge = require("webpack-merge"); -const { defineEnv } = require("./webpack.common"); +const { defineEnv } = require("./webpack.common.cjs"); const EvalSourceMapDevToolPlugin = require("webpack/lib/EvalSourceMapDevToolPlugin"); merge.strategy({ plugins: "replace" }); diff --git a/desktop/config/webpack.config.prod.js b/desktop/config/webpack.config.prod.cjs similarity index 94% rename from desktop/config/webpack.config.prod.js rename to desktop/config/webpack.config.prod.cjs index 605d574f75..dbefc34ddc 100644 --- a/desktop/config/webpack.config.prod.js +++ b/desktop/config/webpack.config.prod.cjs @@ -1,8 +1,8 @@ -const config = require("./webpack.config.base"); -const helpers = require("./helpers"); +const config = require("./webpack.config.base.cjs"); +const helpers = require("./helpers.cjs"); const merge = require("webpack-merge"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const { defineEnv } = require("./webpack.common"); +const { defineEnv } = require("./webpack.common.cjs"); const ENV = "production"; diff --git a/desktop/config/webpack.config.test.js b/desktop/config/webpack.config.test.cjs similarity index 93% rename from desktop/config/webpack.config.test.js rename to desktop/config/webpack.config.test.cjs index 4b84190dce..b3ad09aad8 100644 --- a/desktop/config/webpack.config.test.js +++ b/desktop/config/webpack.config.test.cjs @@ -1,6 +1,6 @@ -const config = require("./webpack.config.base"); +const config = require("./webpack.config.base.cjs"); // const helpers = require("./helpers"); -const { commonRules, defineEnv } = require("./webpack.common"); +const { commonRules, defineEnv } = require("./webpack.common.cjs"); const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); const ENV = "test"; diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 95f0025898..82082e2968 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -9,17 +9,17 @@ "version": "2.21.0", "license": "MIT", "dependencies": { - "@angular/animations": "^12.0.0", - "@angular/cdk": "^12.0.0", - "@angular/common": "^12.0.0", - "@angular/compiler": "^12.0.0", - "@angular/core": "^12.0.0", - "@angular/forms": "^12.0.0", - "@angular/material": "^12.0.0", - "@angular/platform-browser": "^12.0.0", - "@angular/platform-browser-dynamic": "^12.0.0", - "@angular/platform-server": "^12.0.0", - "@angular/router": "^12.0.0", + "@angular/animations": "^13.0.0", + "@angular/cdk": "^13.0.0", + "@angular/common": "^13.0.0", + "@angular/compiler": "^13.0.0", + "@angular/core": "^13.0.0", + "@angular/forms": "^13.0.0", + "@angular/material": "^13.0.0", + "@angular/platform-browser": "^13.0.0", + "@angular/platform-browser-dynamic": "^13.0.0", + "@angular/platform-server": "^13.0.0", + "@angular/router": "^13.0.0", "@azure/core-util": "1.9.1", "@azure/msal-node": "^2.7.0", "@azure/storage-blob": "^12.23.0", @@ -67,8 +67,8 @@ "@angular-eslint/eslint-plugin": "^13.2.1", "@angular-eslint/eslint-plugin-template": "^13.2.1", "@angular-eslint/template-parser": "^13.2.1", - "@angular/compiler-cli": "^12.0.0", - "@ngtools/webpack": "^12.0.0", + "@angular/compiler-cli": "^13.0.0", + "@ngtools/webpack": "^13.0.0", "@playwright/test": "^1.43.1", "@types/chart.js": "^2.9.24", "@types/d3": "^7.4.0", @@ -80,7 +80,6 @@ "@types/js-yaml": "^3.12.5", "@types/luxon": "^1.27.1", "@types/node": "18.11.9", - "@types/node-fetch": "^2.5.7", "@types/proxyquire": "^1.3.28", "@types/strip-json-comments": "^0.0.30", "@types/tinycolor2": "^1.4.2", @@ -119,7 +118,6 @@ "merge2": "^1.4.1", "mini-css-extract-plugin": "^2.7.6", "monaco-editor-webpack-plugin": "^7.1.0", - "node-fetch": "^3.3.2", "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", @@ -133,7 +131,7 @@ "stylelint": "^15.10.3", "to-string-loader": "^1.2.0", "ts-loader": "^9.4.4", - "ts-node": "^10.9.1", + "tsx": "^4.17.0", "typescript": "~4.6.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", @@ -234,158 +232,154 @@ } }, "node_modules/@angular/animations": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-12.2.17.tgz", - "integrity": "sha512-WVUcvKvr6wr9Nf3I2ksu5bFJ5xHhby4UEBTvOAdLpDqic+dzqtzVwAktDRprBSdxKQk1OlTw6jD4MsVEDKnZTg==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-13.4.0.tgz", + "integrity": "sha512-PkEmDd5zpbz/7fudxyb6qL9sBMTPlzpSIh85AapGhjgRSUSRSGuJLj49R35fQ/44c4K5bHMPEsGZjMR0oDsGdg==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "12.2.17" + "@angular/core": "13.4.0" } }, "node_modules/@angular/cdk": { - "version": "12.2.13", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-12.2.13.tgz", - "integrity": "sha512-zSKRhECyFqhingIeyRInIyTvYErt4gWo+x5DQr0b7YLUbU8DZSwWnG4w76Ke2s4U8T7ry1jpJBHoX/e8YBpGMg==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-13.3.9.tgz", + "integrity": "sha512-XCuCbeuxWFyo3EYrgEYx7eHzwl76vaWcxtWXl00ka8d+WAOtMQ6Tf1D98ybYT5uwF9889fFpXAPw98mVnlo3MA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "optionalDependencies": { "parse5": "^5.0.0" }, "peerDependencies": { - "@angular/common": "^12.0.0 || ^13.0.0-0", - "@angular/core": "^12.0.0 || ^13.0.0-0", - "rxjs": "^6.5.3 || ^7.0.0" + "@angular/common": "^13.0.0 || ^14.0.0-0", + "@angular/core": "^13.0.0 || ^14.0.0-0", + "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/common": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-12.2.17.tgz", - "integrity": "sha512-/Rc83mzlL6YZScYTzg+Ng2hiCSf3jUVHAfQ8cyLOIMj/y8863Q+DMLVWW+ttvHwCjEFY44pC8IPyBl5FmSJYHg==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-13.4.0.tgz", + "integrity": "sha512-DHbPqRaxW7GmnkxqZaaasgC5OaFTeTBrmr7MJUsqsSGePHWuJYWU4QS3Fn86zd/VESJgBGmq2aCDEUmzfjnRQA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "12.2.17", - "rxjs": "^6.5.3 || ^7.0.0" + "@angular/core": "13.4.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-12.2.17.tgz", - "integrity": "sha512-dxM1CxzvEJPk6ShJngkW5j5BejBloxQNi+fJi+F8P/GN/Rj7vJUf0JxL+TUt1+Iv575V4NidJDKKikk6K485CA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-13.4.0.tgz", + "integrity": "sha512-tPWoq2RC/VIrJtynEnMRWQZemBIC/ypuVfuUf3p8IIXCZHjuGnibdlZTtFYkexc4/sR1ug9xk1cJWvbOPwilng==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" } }, "node_modules/@angular/compiler-cli": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-12.2.17.tgz", - "integrity": "sha512-gJJlnDr8Fhs6z0hH0Y/5GC1YAgHY+sRh2BUrbDu+nIUubyyOVYSyQdL1jwEfCSIZl1GSg+4b4thU7pp7HtmX8g==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-13.4.0.tgz", + "integrity": "sha512-OQD0w9aZXbpcyWDEaozoHH/n3eYDLhBsmJcIBVqUN8Awx8m17v2u2R6m7DIEpVRbBzYtTscAMTKONNVwsTolHA==", "dev": true, "dependencies": { - "@babel/core": "^7.8.6", - "@babel/types": "^7.8.6", - "canonical-path": "1.0.0", + "@babel/core": "^7.17.2", "chokidar": "^3.0.0", "convert-source-map": "^1.5.1", "dependency-graph": "^0.11.0", - "magic-string": "^0.25.0", - "minimist": "^1.2.0", + "magic-string": "^0.26.0", "reflect-metadata": "^0.1.2", "semver": "^7.0.0", - "source-map": "^0.6.1", "sourcemap-codec": "^1.4.8", - "tslib": "^2.2.0", - "yargs": "^17.0.0" + "tslib": "^2.3.0", + "yargs": "^17.2.1" }, "bin": { - "ivy-ngcc": "ngcc/main-ivy-ngcc.js", - "ng-xi18n": "src/extract_i18n.js", - "ngc": "src/main.js", - "ngcc": "ngcc/main-ngcc.js" + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "12.2.17", - "typescript": ">=4.2.3 <4.4" + "@angular/compiler": "13.4.0", + "typescript": ">=4.4.2 <4.7" } }, "node_modules/@angular/core": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-12.2.17.tgz", - "integrity": "sha512-XUvTgU0D8XqNH5Y7UlTMk/XjUQaEGC0kZxhw/QSSQr65WrXtXmcD4d8Cg84TJ52uGXmf7IAruKvtbvu1Mbmvug==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-13.4.0.tgz", + "integrity": "sha512-RE9KL7pRj+3lkJjdSR2uKmqiG0gqjnoVCMbSLG93pWrmzNIhElmlkiDaK39aMHGl836dc68Usv9CEisyVnRqHQ==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "rxjs": "^6.5.3 || ^7.0.0", + "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.11.4" } }, "node_modules/@angular/forms": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-12.2.17.tgz", - "integrity": "sha512-iOIAz5OR6yLWuNTSOSDqAffQ0FU71yw1QsOmltU/hBsO6H6smsIKVe8VlFa4SnBSAyVZXf/OhDRJ8gOqQT09mw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-13.4.0.tgz", + "integrity": "sha512-vWd438sPlESLAv+cPFEZwF5aa8cF9Gt9zofLe3Ep9v9YIv2naVkv7pxCu0KFyvbBHAT7THbZfyypuvYsYNI3rw==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "12.2.17", - "@angular/core": "12.2.17", - "@angular/platform-browser": "12.2.17", - "rxjs": "^6.5.3 || ^7.0.0" + "@angular/common": "13.4.0", + "@angular/core": "13.4.0", + "@angular/platform-browser": "13.4.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "12.2.13", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-12.2.13.tgz", - "integrity": "sha512-6g2GyN4qp2D+DqY2AwrQuPB3cd9gybvQVXvNRbTPXEulHr+LgGei00ySdFHFp6RvdGSMZ4i3LM1Fq3VkFxhCfQ==", + "version": "13.3.9", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-13.3.9.tgz", + "integrity": "sha512-FU8lcMgo+AL8ckd27B4V097ZPoIZNRHiCe3wpgkImT1qC0YwcyXZVn0MqQTTFSdC9a/aI8wPm3AbTClJEVw5Vw==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/animations": "^12.0.0 || ^13.0.0-0", - "@angular/cdk": "12.2.13", - "@angular/common": "^12.0.0 || ^13.0.0-0", - "@angular/core": "^12.0.0 || ^13.0.0-0", - "@angular/forms": "^12.0.0 || ^13.0.0-0", - "rxjs": "^6.5.3 || ^7.0.0" + "@angular/animations": "^13.0.0 || ^14.0.0-0", + "@angular/cdk": "13.3.9", + "@angular/common": "^13.0.0 || ^14.0.0-0", + "@angular/core": "^13.0.0 || ^14.0.0-0", + "@angular/forms": "^13.0.0 || ^14.0.0-0", + "@angular/platform-browser": "^13.0.0 || ^14.0.0-0", + "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-12.2.17.tgz", - "integrity": "sha512-fxs0FDEnS9mzd36u0bHd6TbCvRC9pqK0YCWNnoLCf5ALQtyIL8CpgGNjOMnO8mCEl5l9QTFCDvKOn4V3p7E/dg==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-13.4.0.tgz", + "integrity": "sha512-kq4TpdkSS0Z/7ToFzWhyBbh4Ai1uOKFVdL9/TAm19dLnYNIInrN3KYW6GRxZ+pkJJA9Vkq4NtgcxysQ42VFotA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "12.2.17", - "@angular/common": "12.2.17", - "@angular/core": "12.2.17" + "@angular/animations": "13.4.0", + "@angular/common": "13.4.0", + "@angular/core": "13.4.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -394,58 +388,58 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-12.2.17.tgz", - "integrity": "sha512-2v7R5l+4ULSNLviKVTHCqn6iNFgY1M/+HtM1ZcM72V4cVVsXqXUAh7WV4sk4l4ECsExKxQoc6JlVtPUub8cCKA==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-13.4.0.tgz", + "integrity": "sha512-vYxaLF098RTGL2tugG6s0ZQU4G1XYU5tw0/C4RCIbNLHS1rk/s9AzSnbr3zFSOQ33NWSixU0Z4EPl4hU88hghA==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "12.2.17", - "@angular/compiler": "12.2.17", - "@angular/core": "12.2.17", - "@angular/platform-browser": "12.2.17" + "@angular/common": "13.4.0", + "@angular/compiler": "13.4.0", + "@angular/core": "13.4.0", + "@angular/platform-browser": "13.4.0" } }, "node_modules/@angular/platform-server": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-12.2.17.tgz", - "integrity": "sha512-RUhI2luajbriMAavh39tVhAdqKtjd1phzjyxTxjJbohly/OqVGrChbI50IBT81J1MMdPgX8Y/cBrAV9xRGtVjw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-13.4.0.tgz", + "integrity": "sha512-8n+yvKgq6zsH9PyY+VpbKVIU4RTNqNAjGvSLZyQgg1Q+HnQa1NadENirE7wrEw5x2uXaD2H+tdZLpTk8JTNAhw==", "dependencies": { "domino": "^2.1.2", - "tslib": "^2.2.0", + "tslib": "^2.3.0", "xhr2": "^0.2.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "12.2.17", - "@angular/common": "12.2.17", - "@angular/compiler": "12.2.17", - "@angular/core": "12.2.17", - "@angular/platform-browser": "12.2.17", - "@angular/platform-browser-dynamic": "12.2.17" + "@angular/animations": "13.4.0", + "@angular/common": "13.4.0", + "@angular/compiler": "13.4.0", + "@angular/core": "13.4.0", + "@angular/platform-browser": "13.4.0", + "@angular/platform-browser-dynamic": "13.4.0" } }, "node_modules/@angular/router": { - "version": "12.2.17", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-12.2.17.tgz", - "integrity": "sha512-GKvEMUpLe157izpHLiS4bCZllqOj+MWhfWbhvR0DHFpE9FtkcDjBseTsWqQmyA1gqtRblO1Zn/1E33l9uaGMqw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-13.4.0.tgz", + "integrity": "sha512-YlPAf3tPqD04rAMPAwW+XqFQaBXT9fY2Mh7J/9MXeyLZau59afBIcVNbeQxW5RxDajmfyFy437Qh22qFP2l0Hw==", "dependencies": { - "tslib": "^2.2.0" + "tslib": "^2.3.0" }, "engines": { - "node": "^12.14.1 || >=14.0.0" + "node": "^12.20.0 || ^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "12.2.17", - "@angular/core": "12.2.17", - "@angular/platform-browser": "12.2.17", - "rxjs": "^6.5.3 || ^7.0.0" + "@angular/common": "13.4.0", + "@angular/core": "13.4.0", + "@angular/platform-browser": "13.4.0", + "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@azure/abort-controller": { @@ -1064,28 +1058,6 @@ "node": ">=0.1.90" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, "node_modules/@csstools/css-parser-algorithms": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", @@ -1502,6 +1474,390 @@ "node": "^12 || ^14 || ^16 || ^17" } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", + "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", + "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", + "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", + "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", + "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", + "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", + "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", + "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", + "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", + "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", + "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", + "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", + "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", + "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", + "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", + "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", + "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", + "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", + "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", + "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", + "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", + "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", + "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", + "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -1895,18 +2251,18 @@ } }, "node_modules/@ngtools/webpack": { - "version": "12.2.18", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-12.2.18.tgz", - "integrity": "sha512-6h/QSG6oZDs2BGfrozdOKqtM5daoCu05q+0gyb3owHz1u9FtMeXXKQ3sQfyFC/GNT3dTMlH6YFxsJPvMPwuy9A==", + "version": "13.3.11", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-13.3.11.tgz", + "integrity": "sha512-gB33hTbc/RJmHyIgSUYj8ErPazhYYm7yfapOnvwHdYhCjrj1TKkR1ierOlhJtpfBYUQg6FChdl2YpyIQNPjWMA==", "dev": true, "engines": { - "node": "^12.14.1 || >=14.0.0", + "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": { - "@angular/compiler-cli": "^12.0.0", - "typescript": "~4.2.3 || ~4.3.2", + "@angular/compiler-cli": "^13.0.0", + "typescript": ">=4.4.3 <4.7", "webpack": "^5.30.0" } }, @@ -2009,30 +2365,6 @@ "node": ">= 10" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true - }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -2558,16 +2890,6 @@ "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", "dev": true }, - "node_modules/@types/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", - "dev": true, - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, "node_modules/@types/node-forge": { "version": "1.3.11", "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", @@ -3121,30 +3443,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", @@ -3437,12 +3735,6 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -4369,12 +4661,6 @@ } ] }, - "node_modules/canonical-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", - "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", - "dev": true - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -5317,12 +5603,6 @@ "buffer": "^5.1.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -5826,15 +6106,6 @@ "node": ">=12" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-view-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", @@ -6194,15 +6465,6 @@ "semver": "bin/semver" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, "node_modules/dir-compare": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", @@ -7198,6 +7460,45 @@ "es6-promise": "^4.0.3" } }, + "node_modules/esbuild": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", + "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.0", + "@esbuild/android-arm": "0.23.0", + "@esbuild/android-arm64": "0.23.0", + "@esbuild/android-x64": "0.23.0", + "@esbuild/darwin-arm64": "0.23.0", + "@esbuild/darwin-x64": "0.23.0", + "@esbuild/freebsd-arm64": "0.23.0", + "@esbuild/freebsd-x64": "0.23.0", + "@esbuild/linux-arm": "0.23.0", + "@esbuild/linux-arm64": "0.23.0", + "@esbuild/linux-ia32": "0.23.0", + "@esbuild/linux-loong64": "0.23.0", + "@esbuild/linux-mips64el": "0.23.0", + "@esbuild/linux-ppc64": "0.23.0", + "@esbuild/linux-riscv64": "0.23.0", + "@esbuild/linux-s390x": "0.23.0", + "@esbuild/linux-x64": "0.23.0", + "@esbuild/netbsd-x64": "0.23.0", + "@esbuild/openbsd-arm64": "0.23.0", + "@esbuild/openbsd-x64": "0.23.0", + "@esbuild/sunos-x64": "0.23.0", + "@esbuild/win32-arm64": "0.23.0", + "@esbuild/win32-ia32": "0.23.0", + "@esbuild/win32-x64": "0.23.0" + } + }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -8128,29 +8429,6 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", @@ -8606,18 +8884,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -8857,6 +9123,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -11363,12 +11641,15 @@ } }, "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "version": "0.26.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.7.tgz", + "integrity": "sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==", "dev": true, "dependencies": { "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" } }, "node_modules/make-dir": { @@ -11391,12 +11672,6 @@ "semver": "bin/semver" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -11948,25 +12223,6 @@ "dev": true, "optional": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-downloader-helper": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/node-downloader-helper/-/node-downloader-helper-2.1.9.tgz", @@ -11978,24 +12234,6 @@ "node": ">=14.18" } }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/node-forge": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", @@ -13898,6 +14136,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -15965,61 +16212,6 @@ "node": ">=8" } }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -16058,6 +16250,25 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tsx": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.17.0.tgz", + "integrity": "sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==", + "dev": true, + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -16352,12 +16563,6 @@ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -16430,15 +16635,6 @@ "minimalistic-assert": "^1.0.0" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webpack": { "version": "5.93.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", @@ -17239,15 +17435,6 @@ "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==", "dev": true }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index e0f825f0d4..71e4088fc4 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -20,9 +20,8 @@ }, "version": "2.21.0", "main": "build/client/main.prod.js", + "type": "module", "scripts": { - "ts": "ts-node --project tsconfig.node.json --files", - "ts:fast": "npm run ts -T", "start": "npm run electron:prod", "clean": "rimraf build/* dll/* python/dist/* python/build/* src/generated/*", "karma": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --max_old_space_size=4096 node_modules/karma/bin/karma", @@ -40,14 +39,14 @@ "test-client-watch": "npm run test-client -- --watch", "test-e2e": "playwright test", "test-e2e:debug": "playwright test --debug", - "test-models": "npm run ts scripts/swagger/validate-models.ts", + "test-models": "tsx scripts/swagger/validate-models.ts", "build-client": " tsc -p tsconfig.node.json", "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", - "build-i18n": "npm run ts scripts/i18n/generate.ts", - "build-i18n-xliff": "npm run ts scripts/i18n/create-xliff.ts", - "build-i18n-digest": "npm run ts scripts/i18n/digest-xliff.ts", + "build-i18n": "tsx scripts/i18n/generate.ts", + "build-i18n-xliff": "tsx scripts/i18n/create-xliff.ts", + "build-i18n-digest": "tsx scripts/i18n/digest-xliff.ts", "build": "npm run clean && npm run build-translations && npm run build-client && npm run build-app && npm run build-i18n", "build:clean": "npm run build", "build:package": "npm run build:prod && npm run build-python && npm run package", @@ -65,9 +64,9 @@ "stylelint": "stylelint --custom-syntax postcss-scss \"src/app/**/*.scss\"", "lint": "npm run eslint && npm run stylelint", "lint:fix": "npm run eslint --fix && npm run stylelint", - "package": "npm run ts scripts/package/package.ts", + "package": "tsx scripts/package/package.ts", "postinstall": "npm run rebuild:app-deps && npx patch-package", - "start-publish": "npm run ts scripts/publish/publish.ts", + "start-publish": "tsx scripts/publish/publish.ts", "webpack": "cross-env node --trace-deprecation --max_old_space_size=4096 node_modules/webpack/bin/webpack.js", "webpack:stats": "cross-env NODE_ENV=production NODE_OPTIONS=--openssl-legacy-provider npm run webpack -- --profile --json > coverage/webpack-stats.json", "webpack-dev-server": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --trace-deprecation --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js", @@ -107,9 +106,9 @@ "@angular-eslint/eslint-plugin": "^13.2.1", "@angular-eslint/eslint-plugin-template": "^13.2.1", "@angular-eslint/template-parser": "^13.2.1", - "@angular/compiler-cli": "^12.0.0", + "@angular/compiler-cli": "^13.0.0", "@batch/common-config": "^1.0.0", - "@ngtools/webpack": "^12.0.0", + "@ngtools/webpack": "^13.0.0", "@playwright/test": "^1.43.1", "@types/chart.js": "^2.9.24", "@types/d3": "^7.4.0", @@ -172,7 +171,7 @@ "stylelint": "^15.10.3", "to-string-loader": "^1.2.0", "ts-loader": "^9.4.4", - "ts-node": "^10.9.1", + "tsx": "^4.17.0", "typescript": "~4.6.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", @@ -182,17 +181,17 @@ "yesno": "^0.4.0" }, "dependencies": { - "@angular/animations": "^12.0.0", - "@angular/cdk": "^12.0.0", - "@angular/common": "^12.0.0", - "@angular/compiler": "^12.0.0", - "@angular/core": "^12.0.0", - "@angular/forms": "^12.0.0", - "@angular/material": "^12.0.0", - "@angular/platform-browser": "^12.0.0", - "@angular/platform-browser-dynamic": "^12.0.0", - "@angular/platform-server": "^12.0.0", - "@angular/router": "^12.0.0", + "@angular/animations": "^13.0.0", + "@angular/cdk": "^13.0.0", + "@angular/common": "^13.0.0", + "@angular/compiler": "^13.0.0", + "@angular/core": "^13.0.0", + "@angular/forms": "^13.0.0", + "@angular/material": "^13.0.0", + "@angular/platform-browser": "^13.0.0", + "@angular/platform-browser-dynamic": "^13.0.0", + "@angular/platform-server": "^13.0.0", + "@angular/router": "^13.0.0", "@azure/bonito-core": "^1.0.0", "@azure/bonito-ui": "^1.0.0", "@azure/core-util": "1.9.1", diff --git a/desktop/scripts/i18n/create-xliff.ts b/desktop/scripts/i18n/create-xliff.ts index 5855be8de1..013e98bb58 100644 --- a/desktop/scripts/i18n/create-xliff.ts +++ b/desktop/scripts/i18n/create-xliff.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init"; +import "../../src/client/esm"; import * as fs from "fs"; import * as mkdirp from "mkdirp"; diff --git a/desktop/scripts/i18n/digest-xliff.ts b/desktop/scripts/i18n/digest-xliff.ts index 998398b2dd..b63ad5f426 100644 --- a/desktop/scripts/i18n/digest-xliff.ts +++ b/desktop/scripts/i18n/digest-xliff.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init"; +import "../../src/client/esm"; import * as fs from "fs"; import * as globNode from "glob"; diff --git a/desktop/scripts/i18n/generate.ts b/desktop/scripts/i18n/generate.ts index f7d663b6a4..ca38a59cae 100644 --- a/desktop/scripts/i18n/generate.ts +++ b/desktop/scripts/i18n/generate.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init"; +import "../../src/client/esm"; import * as fs from "fs"; import { promisify } from "util"; diff --git a/desktop/scripts/install/get-python.ts b/desktop/scripts/install/get-python.ts index e0122ba995..235f6635c0 100644 --- a/desktop/scripts/install/get-python.ts +++ b/desktop/scripts/install/get-python.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init"; +import "../../src/client/esm"; import { initLogger } from "../../src/client/logger"; initLogger(); diff --git a/desktop/scripts/swagger/validate-models.ts b/desktop/scripts/swagger/validate-models.ts index 134533c530..86206a0f12 100644 --- a/desktop/scripts/swagger/validate-models.ts +++ b/desktop/scripts/swagger/validate-models.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init"; +import "../../src/client/esm"; import * as path from "path"; process.env.NODE_PATH = process.env.NODE_PATH + path.delimiter + path.join(__dirname, "../.."); diff --git a/desktop/src/@batch-flask/compiler/dev-translations-loader.ts b/desktop/src/@batch-flask/compiler/dev-translations-loader.ts index fc3fc5a914..131d732233 100644 --- a/desktop/src/@batch-flask/compiler/dev-translations-loader.ts +++ b/desktop/src/@batch-flask/compiler/dev-translations-loader.ts @@ -1,7 +1,7 @@ -import * as fs from "fs"; -import * as globF from "glob"; -import * as jsyaml from "js-yaml"; -import * as util from "util"; +import fs from "fs"; +import globF from "glob"; +import jsyaml from "js-yaml"; +import util from "util"; const glob = util.promisify(globF); const readFile = util.promisify(fs.readFile); diff --git a/desktop/src/@batch-flask/ui/callout/callout.directive.ts b/desktop/src/@batch-flask/ui/callout/callout.directive.ts index c902704341..274278bcae 100644 --- a/desktop/src/@batch-flask/ui/callout/callout.directive.ts +++ b/desktop/src/@batch-flask/ui/callout/callout.directive.ts @@ -100,9 +100,13 @@ export class CalloutDirective { }, ]; - const positionStrategy = this.overlay.position().connectedTo(this.elementRef, - { originX: "start", originY: "top" }, - { overlayX: "start", overlayY: "bottom" }); + const positionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef) + .withPositions([{ + originX: "start", + originY: "top", + overlayX: "start", + overlayY: "bottom" + }]); positionStrategy.withPositions(positions); return new OverlayConfig({ positionStrategy: positionStrategy, diff --git a/desktop/src/@batch-flask/ui/select/select.component.ts b/desktop/src/@batch-flask/ui/select/select.component.ts index 79b5031b5f..486213756e 100644 --- a/desktop/src/@batch-flask/ui/select/select.component.ts +++ b/desktop/src/@batch-flask/ui/select/select.component.ts @@ -491,11 +491,15 @@ export class SelectComponent implements FormFieldControl, Opt }, ]; - const positionStrategy = this.overlay.position().connectedTo(this.elementRef, - { originX: "start", originY: "top" }, - { overlayX: "start", overlayY: "bottom" }); + const positionStrategy = this.overlay.position().flexibleConnectedTo(this.elementRef) + .withPositions([{ + originX: "start", + originY: "top", + overlayX: "start", + overlayY: "bottom" + }]); positionStrategy.withPositions(positions); - positionStrategy.onPositionChange.subscribe((x) => { + positionStrategy.positionChanges.subscribe((x) => { if (this._dropdownRef) { this._dropdownRef.instance.above = x.connectionPair.overlayY === "bottom"; } diff --git a/desktop/src/client/init.ts b/desktop/src/client/init.ts index 8fff0f6afd..a96d84100d 100644 --- a/desktop/src/client/init.ts +++ b/desktop/src/client/init.ts @@ -3,7 +3,9 @@ * Make sure you import this file before any client imports */ import * as path from "path"; + +const __filename = new URL('', import.meta.url).pathname; +const __dirname = path.dirname(__filename); + process.env.NODE_PATH = path.join(__dirname, ".."); -// eslint-disable-next-line @typescript-eslint/no-var-requires -require("module").Module._initPaths(); diff --git a/desktop/tsconfig.node.json b/desktop/tsconfig.node.json index 16bad681f8..d8760fba92 100644 --- a/desktop/tsconfig.node.json +++ b/desktop/tsconfig.node.json @@ -2,8 +2,8 @@ "extends": "./tsconfig.json", "compilerOptions": { "target": "ES6", - "module": "commonjs", - "outDir": "build" + "module": "ESNext", + "moduleResolution": "Node", }, // This is not actually used for building but to let the editor know what files use this config "include": [ @@ -12,6 +12,7 @@ ], "exclude": [ "node_modules", - "**/*.spec.ts" + "**/*.spec.ts", + "./src/client/init-esm.ts", ] } diff --git a/desktop/webpack.config.js b/desktop/webpack.config.cjs similarity index 53% rename from desktop/webpack.config.js rename to desktop/webpack.config.cjs index 2b04ca8efa..862d913641 100644 --- a/desktop/webpack.config.js +++ b/desktop/webpack.config.cjs @@ -3,14 +3,14 @@ switch (process.env.NODE_ENV) { case "prod": case "production": - module.exports = require("./config/webpack.config.prod"); + module.exports = require("./config/webpack.config.prod.cjs"); break; case "test": case "testing": - module.exports = require("./config/webpack.config.test"); + module.exports = require("./config/webpack.config.test.cjs"); break; case "dev": case "development": default: - module.exports = require("./config/webpack.config.dev"); + module.exports = require("./config/webpack.config.dev.cjs"); } diff --git a/packages/playground/package-lock.json b/packages/playground/package-lock.json index ed1b5fc34c..dc3f0be96d 100644 --- a/packages/playground/package-lock.json +++ b/packages/playground/package-lock.json @@ -12,8 +12,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", @@ -1115,38 +1113,6 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.65", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.65.tgz", - "integrity": "sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz", - "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1681,12 +1647,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", diff --git a/packages/react/package-lock.json b/packages/react/package-lock.json index a7d127324f..381634856c 100644 --- a/packages/react/package-lock.json +++ b/packages/react/package-lock.json @@ -12,8 +12,6 @@ "@types/jest": "^27.0.1", "@types/jest-axe": "^3.5.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "jest": "^27.1.0", "jest-axe": "^7.0.1", "jest-junit": "^12.2.0", @@ -1116,38 +1114,6 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", "dev": true }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.65", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.65.tgz", - "integrity": "sha512-oxur785xZYHvnI7TRS61dXbkIhDPnGfsXKv0cNXR/0ml4SipRIFpSMzA7HMEfOywFwJ5AOnPrXYTEiTRUQeGlQ==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz", - "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==", - "dev": true - }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1682,12 +1648,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", diff --git a/web/package-lock.json b/web/package-lock.json index 30ca5e1f5a..d713903bcb 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -14,8 +14,6 @@ "devDependencies": { "@types/jest": "^27.0.1", "@types/node": "20.5.4", - "@types/react": "^17.0.53", - "@types/react-dom": "^17.0.18", "@types/react-router-dom": "^5.1.7", "css-loader": "^6.8.1", "esbuild-loader": "^4.0.1", @@ -1661,15 +1659,6 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-dom": { - "version": "17.0.20", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.20.tgz", - "integrity": "sha512-4pzIjSxDueZZ90F52mU3aPoogkHIoSIDG+oQ+wQK7Cy2B9S+MvOqY0uEA/qawKz381qrEDkvpwyt8Bm31I8sbA==", - "dev": true, - "dependencies": { - "@types/react": "^17" - } - }, "node_modules/@types/react-router": { "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", From 55225b34dde0e01b54ece2818471afdfbcfe61c6 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Fri, 16 Aug 2024 11:58:18 -0700 Subject: [PATCH 14/18] before transform node16 modules --- desktop/scripts/i18n/create-xliff.ts | 2 +- desktop/scripts/i18n/digest-xliff.ts | 2 +- desktop/scripts/i18n/generate.ts | 2 +- desktop/scripts/install/get-python.ts | 2 +- desktop/scripts/swagger/validate-models.ts | 2 +- .../@batch-flask/utils/validators/index.ts | 1 - .../utils/validators/number/index.ts | 1 - .../utils/validators/number/number.spec.ts | 48 ------------------- .../utils/validators/number/number.ts | 36 -------------- desktop/src/client/init-esm.ts | 11 +++++ desktop/src/client/startup.ts | 7 ++- desktop/tsconfig.json | 4 +- desktop/tsconfig.node.json | 4 +- 13 files changed, 24 insertions(+), 98 deletions(-) delete mode 100644 desktop/src/@batch-flask/utils/validators/number/index.ts delete mode 100644 desktop/src/@batch-flask/utils/validators/number/number.spec.ts delete mode 100644 desktop/src/@batch-flask/utils/validators/number/number.ts create mode 100644 desktop/src/client/init-esm.ts diff --git a/desktop/scripts/i18n/create-xliff.ts b/desktop/scripts/i18n/create-xliff.ts index 013e98bb58..2d9ba7e34b 100644 --- a/desktop/scripts/i18n/create-xliff.ts +++ b/desktop/scripts/i18n/create-xliff.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/esm"; +import "../../src/client/init-esm"; import * as fs from "fs"; import * as mkdirp from "mkdirp"; diff --git a/desktop/scripts/i18n/digest-xliff.ts b/desktop/scripts/i18n/digest-xliff.ts index b63ad5f426..5444133f9c 100644 --- a/desktop/scripts/i18n/digest-xliff.ts +++ b/desktop/scripts/i18n/digest-xliff.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/esm"; +import "../../src/client/init-esm"; import * as fs from "fs"; import * as globNode from "glob"; diff --git a/desktop/scripts/i18n/generate.ts b/desktop/scripts/i18n/generate.ts index ca38a59cae..df75916acb 100644 --- a/desktop/scripts/i18n/generate.ts +++ b/desktop/scripts/i18n/generate.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/esm"; +import "../../src/client/init-esm"; import * as fs from "fs"; import { promisify } from "util"; diff --git a/desktop/scripts/install/get-python.ts b/desktop/scripts/install/get-python.ts index 235f6635c0..e318d5a002 100644 --- a/desktop/scripts/install/get-python.ts +++ b/desktop/scripts/install/get-python.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/esm"; +import "../../src/client/init-esm"; import { initLogger } from "../../src/client/logger"; initLogger(); diff --git a/desktop/scripts/swagger/validate-models.ts b/desktop/scripts/swagger/validate-models.ts index 86206a0f12..458c5ced3f 100644 --- a/desktop/scripts/swagger/validate-models.ts +++ b/desktop/scripts/swagger/validate-models.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/esm"; +import "../../src/client/init-esm"; import * as path from "path"; process.env.NODE_PATH = process.env.NODE_PATH + path.delimiter + path.join(__dirname, "../.."); diff --git a/desktop/src/@batch-flask/utils/validators/index.ts b/desktop/src/@batch-flask/utils/validators/index.ts index 09522651c6..98cf97ad98 100644 --- a/desktop/src/@batch-flask/utils/validators/index.ts +++ b/desktop/src/@batch-flask/utils/validators/index.ts @@ -1,2 +1 @@ -export * from "./number"; export * from "./json"; diff --git a/desktop/src/@batch-flask/utils/validators/number/index.ts b/desktop/src/@batch-flask/utils/validators/number/index.ts deleted file mode 100644 index 2f0dcabd3d..0000000000 --- a/desktop/src/@batch-flask/utils/validators/number/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./number"; diff --git a/desktop/src/@batch-flask/utils/validators/number/number.spec.ts b/desktop/src/@batch-flask/utils/validators/number/number.spec.ts deleted file mode 100644 index 43b4b02d5c..0000000000 --- a/desktop/src/@batch-flask/utils/validators/number/number.spec.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { FormControl } from "@angular/forms"; -import { max, min, number } from "./number"; - -describe("Number Validator", () => { - describe("min validator", () => { - it("return null when valid", () => { - expect(min(10)(new FormControl(10))).toBe(null); - expect(min(10)(new FormControl(15))).toBe(null); - expect(min(10)(new FormControl(100))).toBe(null); - }); - - it("return error when invvalid", () => { - expect(min(10)(new FormControl(9))).toEqual({ min: true }); - expect(min(10)(new FormControl(1))).toEqual({ min: true }); - expect(min(10)(new FormControl(-11))).toEqual({ min: true }); - }); - }); - - describe("max validator", () => { - it("return null when valid", () => { - expect(max(10)(new FormControl(10))).toBe(null); - expect(max(10)(new FormControl(9))).toBe(null); - expect(max(10)(new FormControl(-100))).toBe(null); - }); - - it("return error when invvalid", () => { - expect(max(10)(new FormControl(11))).toEqual({ max: true }); - expect(max(10)(new FormControl(15))).toEqual({ max: true }); - expect(max(10)(new FormControl(100))).toEqual({ max: true }); - }); - }); - - describe("number validator", () => { - it("return null when valid", () => { - // Empty string is not considered and error as it could not be required - expect(number(new FormControl(""))).toBe(null); - expect(number(new FormControl("0"))).toBe(null); - expect(number(new FormControl("9"))).toBe(null); - expect(number(new FormControl("-100"))).toBe(null); - expect(number(new FormControl("1.43"))).toBe(null); - }); - - it("return error when invvalid", () => { - expect(number(new FormControl("abcdef"))).toEqual({ number: true }); - expect(number(new FormControl("1f23"))).toEqual({ number: true }); - }); - }); -}); diff --git a/desktop/src/@batch-flask/utils/validators/number/number.ts b/desktop/src/@batch-flask/utils/validators/number/number.ts deleted file mode 100644 index db492dc07f..0000000000 --- a/desktop/src/@batch-flask/utils/validators/number/number.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { AbstractControl, ValidationErrors, ValidatorFn, Validators } from "@angular/forms"; -import { exists } from "@batch-flask/utils/object-utils"; - -/** - * Validator that requires controls to have a value of a min value. - */ -export function min(val: number): ValidatorFn { - return (control: AbstractControl): ValidationErrors | null => { - if (exists(Validators.required(control))) { return null; } - - const v: number = control.value; - return v >= val ? null : { min: true }; - }; -} - -/** - * Validator that requires controls to have a value of a max value. - */ -export function max(val: number): ValidatorFn { - return (control: AbstractControl): ValidationErrors | null => { - if (exists(Validators.required(control))) { return null; } - - const v: number = control.value; - return v <= val ? null : { max: true }; - }; -} - -/** - * Validator that requires controls to have a value of number. - */ -export function number(control: AbstractControl): ValidationErrors | null { - if (exists(Validators.required(control))) { return null; } - - const v: string = control.value; - return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(v) ? null : { number: true }; -} diff --git a/desktop/src/client/init-esm.ts b/desktop/src/client/init-esm.ts new file mode 100644 index 0000000000..a96d84100d --- /dev/null +++ b/desktop/src/client/init-esm.ts @@ -0,0 +1,11 @@ +/** + * Add the src/ folder to the NODE_PATH to be able to do absolute import(Relative to src folder) + * Make sure you import this file before any client imports + */ +import * as path from "path"; + +const __filename = new URL('', import.meta.url).pathname; +const __dirname = path.dirname(__filename); + +process.env.NODE_PATH = path.join(__dirname, ".."); + diff --git a/desktop/src/client/startup.ts b/desktop/src/client/startup.ts index ea9c525b37..580ead42d7 100644 --- a/desktop/src/client/startup.ts +++ b/desktop/src/client/startup.ts @@ -1,4 +1,3 @@ -import { platformDynamicServer } from "@angular/platform-server"; import { LocaleService, TranslationsLoaderService } from "@batch-flask/core"; import { log } from "@batch-flask/utils"; import { ClientTranslationsLoaderService } from "client/core/i18n"; @@ -81,7 +80,11 @@ export async function startBatchExplorer(args: BatchExplorerArgs) { app.commandLine.appendSwitch("disable-features", "OutOfBlinkCors"); } - const module = await platformDynamicServer().bootstrapModule(BatchExplorerClientModule); + const module = await import("@angular/platform-server").then((platform) => { + return platform.platformDynamicServer().bootstrapModule(BatchExplorerClientModule) + }); + + // const module = await platformDynamicServer().bootstrapModule(BatchExplorerClientModule); const localeService = module.injector.get(LocaleService) as ClientLocaleService; await localeService.load(); const translationLoader = module.injector.get(TranslationsLoaderService) as ClientTranslationsLoaderService; diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index c2f0ddf792..503376ce5d 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "es2015", - "module": "esnext", + "module": "Node16", "lib": [ "dom", "dom.iterable", @@ -19,7 +19,7 @@ "skipLibCheck": true, "sourceMap": true, "noImplicitAny": false, - "moduleResolution": "node", + "moduleResolution": "Node16", "listEmittedFiles": false, // debug option "listFiles": false, // debug option // Base Url only applies to typescript compilation so tsc knows where the modules are. diff --git a/desktop/tsconfig.node.json b/desktop/tsconfig.node.json index d8760fba92..6337df6273 100644 --- a/desktop/tsconfig.node.json +++ b/desktop/tsconfig.node.json @@ -1,9 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "target": "ES6", - "module": "ESNext", - "moduleResolution": "Node", + "outDir": "build" }, // This is not actually used for building but to let the editor know what files use this config "include": [ From 47c99ae562c1e90081b33b82dc4febbb58ebb18a Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Fri, 16 Aug 2024 17:13:50 -0700 Subject: [PATCH 15/18] temp add tsconfig.node.json --- desktop/config/webpack.config.base.cjs | 8 +-- desktop/config/webpack.config.dev.cjs | 6 ++ desktop/config/webpack.config.node.cjs | 62 ++++++++++++++++++ desktop/config/webpack.config.prod.cjs | 5 ++ desktop/package-lock.json | 90 ++++++++++++++++++++------ desktop/package.json | 5 +- desktop/src/client/init.ts | 6 +- desktop/tsconfig.json | 4 +- desktop/tsconfig.node.json | 6 +- 9 files changed, 159 insertions(+), 33 deletions(-) create mode 100644 desktop/config/webpack.config.node.cjs diff --git a/desktop/config/webpack.config.base.cjs b/desktop/config/webpack.config.base.cjs index f30ab2ebe5..f0a3da6abc 100644 --- a/desktop/config/webpack.config.base.cjs +++ b/desktop/config/webpack.config.base.cjs @@ -16,10 +16,10 @@ const METADATA = { }; const baseConfig = { - entry: { - "polyfills": "./src/app/polyfills.browser", - "app": "./src/app/app.ts", - }, + // entry: { + // "polyfills": "./src/app/polyfills.browser", + // "app": "./src/app/app.ts", + // }, resolve: { extensions: [".ts", ".js", ".json", ".scss", ".css", ".html"], diff --git a/desktop/config/webpack.config.dev.cjs b/desktop/config/webpack.config.dev.cjs index 0ac03ba94a..cd91665111 100644 --- a/desktop/config/webpack.config.dev.cjs +++ b/desktop/config/webpack.config.dev.cjs @@ -11,6 +11,12 @@ const host = "localhost"; const port = process.env.PORT || 3178; module.exports = merge(config, { + + entry: { + "polyfills": "./src/app/polyfills.browser", + "app": "./src/app/app.ts", + }, + // devtool: "cheap-module-source-map", mode: "development", devServer: { diff --git a/desktop/config/webpack.config.node.cjs b/desktop/config/webpack.config.node.cjs new file mode 100644 index 0000000000..6029e95c32 --- /dev/null +++ b/desktop/config/webpack.config.node.cjs @@ -0,0 +1,62 @@ +const config = require("./webpack.config.base.cjs"); +const helpers = require("./helpers.cjs"); +const { mergeWithCustomize, unique } = require("webpack-merge"); +const { AngularWebpackPlugin } = require("@ngtools/webpack"); + +module.exports = mergeWithCustomize({ + customizeArray: unique( + "plugins", + ["AngularWebpackPlugin"], + (plugin) => plugin.constructor && plugin.constructor.name, + ), +})(config, { + mode: "development", + target: "electron-main", + node: { + __dirname: false, + }, + entry: { + main: "./src/client/main.ts", + }, + module: { + rules: [ + { + test: /\.node$/, + loader: "node-loader", + }, + ], + }, + plugins:[ + new AngularWebpackPlugin({ + // skipCodeGeneration: !AOT, + tsconfig: "./tsconfig.node.json", + // mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. + compilerOptions:{ + sourceMap: true, + } + // forkTypeChecker: !AOT, + }), + ], + output: { + path: helpers.root("build/client-test"), + + /** + * Specifies the name of each output file on disk. + * IMPORTANT: You must not specify an absolute path here! + * + * @see http://webpack.github.io/docs/configuration.html#output-filename + */ + filename: "[name].[chunkhash].bundle.js", + + + /** + * The filename of non-entry chunks as relative path + * inside the output.path directory. + * + * @see http://webpack.github.io/docs/configuration.html#output-chunkfilename + */ + chunkFilename: "[id].[chunkhash].chunk.js" + }, +}); + +console.log(module.exports) diff --git a/desktop/config/webpack.config.prod.cjs b/desktop/config/webpack.config.prod.cjs index dbefc34ddc..9938d5df94 100644 --- a/desktop/config/webpack.config.prod.cjs +++ b/desktop/config/webpack.config.prod.cjs @@ -7,6 +7,11 @@ const { defineEnv } = require("./webpack.common.cjs"); const ENV = "production"; module.exports = merge(config, { + entry: { + "polyfills": "./src/app/polyfills.browser", + "app": "./src/app/app.ts", + }, + devtool: "source-map", mode: "production", optimization: { diff --git a/desktop/package-lock.json b/desktop/package-lock.json index 82082e2968..e7a00b5297 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -118,6 +118,7 @@ "merge2": "^1.4.1", "mini-css-extract-plugin": "^2.7.6", "monaco-editor-webpack-plugin": "^7.1.0", + "node-loader": "^2.0.0", "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", @@ -137,7 +138,7 @@ "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", "webpack-inline-manifest-plugin": "^4.0.1", - "webpack-merge": "^4.2.2", + "webpack-merge": "^5.10.0", "yesno": "^0.4.0" }, "engines": { @@ -11238,6 +11239,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/karma-webpack/node_modules/webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/karma/node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -12242,6 +12252,57 @@ "node": ">= 6.13.0" } }, + "node_modules/node-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-2.0.0.tgz", + "integrity": "sha512-I5VN34NO4/5UYJaUBtkrODPWxbobrE4hgDqPrjB25yPkonFhCmZ146vTH+Zg417E9Iwoh1l/MbRs1apc5J295Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/node-loader/node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/node-loader/node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/node-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, "node_modules/node-preload": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", @@ -16736,20 +16797,6 @@ "node": ">=14" } }, - "node_modules/webpack-cli/node_modules/webpack-merge": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", - "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "flat": "^5.0.2", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/webpack-dev-middleware": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", @@ -16875,12 +16922,17 @@ } }, "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "dependencies": { - "lodash": "^4.17.15" + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" } }, "node_modules/webpack-sources": { diff --git a/desktop/package.json b/desktop/package.json index 71e4088fc4..08ba583803 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -20,7 +20,6 @@ }, "version": "2.21.0", "main": "build/client/main.prod.js", - "type": "module", "scripts": { "start": "npm run electron:prod", "clean": "rimraf build/* dll/* python/dist/* python/build/* src/generated/*", @@ -41,6 +40,7 @@ "test-e2e:debug": "playwright test --debug", "test-models": "tsx scripts/swagger/validate-models.ts", "build-client": " tsc -p tsconfig.node.json", + "build-client2": "npx webpack --config config/webpack.config.node.cjs", "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", @@ -158,6 +158,7 @@ "merge2": "^1.4.1", "mini-css-extract-plugin": "^2.7.6", "monaco-editor-webpack-plugin": "^7.1.0", + "node-loader": "^2.0.0", "nyc": "^15.1.0", "patch-package": "^8.0.0", "playwright": "^1.18.1", @@ -177,7 +178,7 @@ "webpack-cli": "^5.1.4", "webpack-dev-server": "^4.15.1", "webpack-inline-manifest-plugin": "^4.0.1", - "webpack-merge": "^4.2.2", + "webpack-merge": "^5.10.0", "yesno": "^0.4.0" }, "dependencies": { diff --git a/desktop/src/client/init.ts b/desktop/src/client/init.ts index a96d84100d..8fff0f6afd 100644 --- a/desktop/src/client/init.ts +++ b/desktop/src/client/init.ts @@ -3,9 +3,7 @@ * Make sure you import this file before any client imports */ import * as path from "path"; - -const __filename = new URL('', import.meta.url).pathname; -const __dirname = path.dirname(__filename); - process.env.NODE_PATH = path.join(__dirname, ".."); +// eslint-disable-next-line @typescript-eslint/no-var-requires +require("module").Module._initPaths(); diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index 503376ce5d..9fd3e8cb66 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "es2015", - "module": "Node16", + "module": "ESNext", "lib": [ "dom", "dom.iterable", @@ -19,7 +19,7 @@ "skipLibCheck": true, "sourceMap": true, "noImplicitAny": false, - "moduleResolution": "Node16", + "moduleResolution": "Node", "listEmittedFiles": false, // debug option "listFiles": false, // debug option // Base Url only applies to typescript compilation so tsc knows where the modules are. diff --git a/desktop/tsconfig.node.json b/desktop/tsconfig.node.json index 6337df6273..82cd1c2edd 100644 --- a/desktop/tsconfig.node.json +++ b/desktop/tsconfig.node.json @@ -1,12 +1,14 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "outDir": "build" + "outDir": "build", + "module": "commonjs", }, // This is not actually used for building but to let the editor know what files use this config "include": [ "./src/client/**/*.ts", - "./src/common/**/*.ts" + "./src/common/**/*.ts", + "./src/@batch-flask/utils" ], "exclude": [ "node_modules", From 18a2963f06ae75cd220298142b7f57962add48fd Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Wed, 4 Sep 2024 16:27:44 -0700 Subject: [PATCH 16/18] dev build works --- desktop/config/{helpers.cjs => helpers.js} | 0 desktop/config/webpack.common.cjs | 43 ------ desktop/config/webpack.common.mjs | 58 ++++++++ desktop/config/webpack.config.app-base.mjs | 64 ++++++++ desktop/config/webpack.config.base.cjs | 90 ------------ desktop/config/webpack.config.base.mjs | 34 +++++ ....config.dev.cjs => webpack.config.dev.mjs} | 25 ++-- desktop/config/webpack.config.node.cjs | 62 -------- desktop/config/webpack.config.node.mjs | 38 +++++ ...onfig.prod.cjs => webpack.config.prod.mjs} | 17 +-- ...onfig.test.cjs => webpack.config.test.mjs} | 10 +- desktop/package-lock.json | 137 ++++++++++++++++++ desktop/package.json | 4 +- .../compiler/dev-translations-loader.ts | 6 +- .../electron/electron-app.service.ts | 7 +- .../src/@batch-flask/electron/shimmer.d.ts | 3 + .../@batch-flask/ui/charts/chart.directive.ts | 2 +- .../ui/editor/editor.component.ts | 2 +- .../download-folder-dialog.component.ts | 2 +- .../ui/scrollable/scrollable.component.ts | 2 +- .../virtual-scroll.component.ts | 2 +- .../@batch-flask/utils/logging/node-logger.ts | 2 +- .../graphs/heatmap/nodes-heatmap.component.ts | 2 +- desktop/src/client/api/file/file-utils.ts | 2 +- desktop/src/client/client-constants.ts | 2 +- desktop/src/client/core/remote.ts | 2 +- desktop/tsconfig.json | 1 + desktop/webpack.config.cjs | 16 -- desktop/webpack.config.mjs | 21 +++ 29 files changed, 397 insertions(+), 259 deletions(-) rename desktop/config/{helpers.cjs => helpers.js} (100%) delete mode 100644 desktop/config/webpack.common.cjs create mode 100644 desktop/config/webpack.common.mjs create mode 100644 desktop/config/webpack.config.app-base.mjs delete mode 100644 desktop/config/webpack.config.base.cjs create mode 100644 desktop/config/webpack.config.base.mjs rename desktop/config/{webpack.config.dev.cjs => webpack.config.dev.mjs} (74%) delete mode 100644 desktop/config/webpack.config.node.cjs create mode 100644 desktop/config/webpack.config.node.mjs rename desktop/config/{webpack.config.prod.cjs => webpack.config.prod.mjs} (87%) rename desktop/config/{webpack.config.test.cjs => webpack.config.test.mjs} (86%) create mode 100644 desktop/src/@batch-flask/electron/shimmer.d.ts delete mode 100644 desktop/webpack.config.cjs create mode 100644 desktop/webpack.config.mjs diff --git a/desktop/config/helpers.cjs b/desktop/config/helpers.js similarity index 100% rename from desktop/config/helpers.cjs rename to desktop/config/helpers.js diff --git a/desktop/config/webpack.common.cjs b/desktop/config/webpack.common.cjs deleted file mode 100644 index 696fac5adf..0000000000 --- a/desktop/config/webpack.common.cjs +++ /dev/null @@ -1,43 +0,0 @@ -const helpers = require("./helpers.cjs"); -const { DefinePlugin } = require("webpack"); - -const rules = { - html: { - test: /(\.html$)|(\.template$)/, - type: "asset/source", - exclude: [/node_modules/, helpers.root("src/app/index.html")], - }, - json: { - test: /\.json$/, - type: "asset/source", - exclude: [/node_modules/], - }, - file: { - test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, - type: "asset/resource", - }, - font: { - test: /\.woff(2)?(\?v=\d+\.\d+\.\d+)?$/, - type: "asset" - }, -}; - -const commonRules = [ - rules.html, rules.json, rules.file, rules.font, -]; - -exports.defineEnv = function(env) { - return new DefinePlugin({ - "ENV": JSON.stringify(env), - "process.env": { - "ENV": JSON.stringify(env), - "NODE_ENV": JSON.stringify(env), - "RENDERER": JSON.stringify(true), - "HOT": helpers.hasProcessFlag("hot"), - "BE_ENABLE_A11Y_TESTING": process.env.BE_ENABLE_A11Y_TESTING, - }, - }); -}; - -exports.rules = rules; -exports.commonRules = commonRules; diff --git a/desktop/config/webpack.common.mjs b/desktop/config/webpack.common.mjs new file mode 100644 index 0000000000..336da751bf --- /dev/null +++ b/desktop/config/webpack.common.mjs @@ -0,0 +1,58 @@ +import * as helpers from "./helpers.js"; +import linkerPlugin from '@angular/compiler-cli/linker/babel'; +import webpack from "webpack"; + +const rules = { + html: { + test: /(\.html$)|(\.template$)/, + type: "asset/source", + exclude: [/node_modules/, helpers.root("src/app/index.html")], + }, + json: { + test: /\.json$/, + type: "asset/source", + exclude: [/node_modules/], + }, + file: { + test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + type: "asset/resource", + }, + font: { + test: /\.woff(2)?(\?v=\d+\.\d+\.\d+)?$/, + type: "asset" + }, + // Added to support partial compiled code, https://github.com/angular/angular/issues/44026 + // https://v13.angular.io/guide/creating-libraries#consuming-partial-ivy-code-outside-the-angular-cli + mjs: { + test: /\.m?js$/, + exclude: /sloppy.js/, + use: { + loader: 'babel-loader', + options: { + plugins: [linkerPlugin], + compact: false, + cacheDirectory: true, + } + } + } +}; + +export const commonRules = [ + rules.html, rules.json, rules.file, rules.font, rules.mjs +]; + +export const defineEnv = function(env) { + return new webpack.DefinePlugin({ + "ENV": JSON.stringify(env), + "process.env": { + "ENV": JSON.stringify(env), + "NODE_ENV": JSON.stringify(env), + "RENDERER": JSON.stringify(true), + "HOT": helpers.hasProcessFlag("hot"), + "BE_ENABLE_A11Y_TESTING": process.env.BE_ENABLE_A11Y_TESTING, + }, + }); +}; + +// exports.rules = rules; +// exports.commonRules = commonRules; diff --git a/desktop/config/webpack.config.app-base.mjs b/desktop/config/webpack.config.app-base.mjs new file mode 100644 index 0000000000..b625e60378 --- /dev/null +++ b/desktop/config/webpack.config.app-base.mjs @@ -0,0 +1,64 @@ + +import webpack from "webpack"; +import HtmlWebpackPlugin from "html-webpack-plugin"; +import CopyWebpackPlugin from "copy-webpack-plugin"; +import { AngularWebpackPlugin } from "@ngtools/webpack"; +import MonacoWebpackPlugin from "monaco-editor-webpack-plugin"; +import { merge } from "webpack-merge"; +import config from "./webpack.config.base.mjs"; +import * as helpers from "./helpers.js"; +import path from "path"; + +const isDevServer = helpers.isWebpackDevServer(); +const AOT = !isDevServer; +const METADATA = { + baseUrl: "/", + isDevServer: isDevServer, + AOT, +}; + +const appBaseConfig = merge(config, { + entry: { + "polyfills": "./src/app/polyfills.browser", + "app": "./src/app/app.ts", + }, + + plugins: [ + new MonacoWebpackPlugin(), + new AngularWebpackPlugin({ + // skipCodeGeneration: !AOT, + tsconfig: "./tsconfig.browser.json", + // mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. + compilerOptions:{ + sourceMap: true, + } + // forkTypeChecker: !AOT, + }), + new CopyWebpackPlugin({ + patterns: [ + { context: "src/client/splash-screen", from: "**/*", to: "client/splash-screen" }, + { context: "src/client/proxy", from: "**/*", to: "client/proxy" }, + { context: "src/client/resources", from: "**/*", to: "client/resources" }, + { context: "src/app/assets", from: "**/*", to: "assets" }, + ] + }), + new HtmlWebpackPlugin({ + template: "src/app/index.html", + chunksSortMode: (a, b) => { + const entryPoints = ["app", "vendor", "styles", "sw-register", "polyfills", "inline"]; + return entryPoints.indexOf(b) - entryPoints.indexOf(a); + }, + inject: "body", + metadata: METADATA, + }), + // Workaround for WARNING Critical dependency: the request of a dependency is an expression + new webpack.ContextReplacementPlugin(/ajv(\\|\/)lib/, helpers.root("config")), + new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, helpers.root("config")), + new webpack.ContextReplacementPlugin(/encoding/, helpers.root("config")), + new webpack.LoaderOptionsPlugin({ + debug: true, + }), + ], + target: "electron-renderer", +}); +export default appBaseConfig; diff --git a/desktop/config/webpack.config.base.cjs b/desktop/config/webpack.config.base.cjs deleted file mode 100644 index f0a3da6abc..0000000000 --- a/desktop/config/webpack.config.base.cjs +++ /dev/null @@ -1,90 +0,0 @@ -const webpack = require("webpack"); -const helpers = require("./helpers.cjs"); -const path = require("path"); -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const CopyWebpackPlugin = require("copy-webpack-plugin"); -const { AngularWebpackPlugin } = require("@ngtools/webpack"); -const { commonRules } = require("./webpack.common.cjs"); -const MonacoWebpackPlugin = require("monaco-editor-webpack-plugin"); - -const isDevServer = helpers.isWebpackDevServer(); -const AOT = !isDevServer; -const METADATA = { - baseUrl: "/", - isDevServer: isDevServer, - AOT, -}; - -const baseConfig = { - // entry: { - // "polyfills": "./src/app/polyfills.browser", - // "app": "./src/app/app.ts", - // }, - - resolve: { - extensions: [".ts", ".js", ".json", ".scss", ".css", ".html"], - modules: [helpers.root(), helpers.root("src"), "node_modules"], - alias: { - // Prevent duplicate copies of react from being resolved - // (See https://github.com/facebook/react/issues/13991) - react: path.resolve("../node_modules/react"), - "react-dom": path.resolve('../node_modules/react-dom'), - // Since we are patching the core-util module' isNode variable, - // we need to make sure that the patched version is used by all - "@azure/core-util": path.resolve('./node_modules/@azure/core-util'), - }, - }, - - module: { - rules: [ - { - test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, - loader: '@ngtools/webpack', - exclude: [/\.spec\.ts/, /src\/test\//] - }, - ...commonRules, - ], - }, - plugins: [ - new MonacoWebpackPlugin(), - new AngularWebpackPlugin({ - // skipCodeGeneration: !AOT, - tsconfig: "./tsconfig.browser.json", - // mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. - compilerOptions:{ - sourceMap: true, - } - // forkTypeChecker: !AOT, - }), - new CopyWebpackPlugin({ - patterns: [ - { context: "src/client/splash-screen", from: "**/*", to: "client/splash-screen" }, - { context: "src/client/proxy", from: "**/*", to: "client/proxy" }, - { context: "src/client/resources", from: "**/*", to: "client/resources" }, - { context: "src/app/assets", from: "**/*", to: "assets" }, - ] - }), - new HtmlWebpackPlugin({ - template: "src/app/index.html", - chunksSortMode: (a, b) => { - const entryPoints = ["app", "vendor", "styles", "sw-register", "polyfills", "inline"]; - return entryPoints.indexOf(b) - entryPoints.indexOf(a); - }, - inject: "body", - metadata: METADATA, - }), - // Workaround for WARNING Critical dependency: the request of a dependency is an expression - new webpack.ContextReplacementPlugin(/ajv(\\|\/)lib/, __dirname), - new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/, __dirname), - new webpack.ContextReplacementPlugin(/encoding/, __dirname), - new webpack.LoaderOptionsPlugin({ - debug: true, - }), - ], - target: "electron-renderer", - stats: { - errorDetails: true, - }, -}; - -module.exports = baseConfig; diff --git a/desktop/config/webpack.config.base.mjs b/desktop/config/webpack.config.base.mjs new file mode 100644 index 0000000000..9013ef1ea7 --- /dev/null +++ b/desktop/config/webpack.config.base.mjs @@ -0,0 +1,34 @@ +import * as helpers from "./helpers.js"; +import * as path from "path"; +// const { commonRules } = require("./webpack.common.js"); +import { commonRules } from "./webpack.common.mjs"; + +export default { + resolve: { + extensions: [".ts", ".js", ".json", ".scss", ".css", ".html"], + modules: [helpers.root(), helpers.root("src"), "node_modules"], + alias: { + // Prevent duplicate copies of react from being resolved + // (See https://github.com/facebook/react/issues/13991) + react: path.resolve("../node_modules/react"), + "react-dom": path.resolve('../node_modules/react-dom'), + // Since we are patching the core-util module' isNode variable, + // we need to make sure that the patched version is used by all + "@azure/core-util": path.resolve('./node_modules/@azure/core-util'), + }, + }, + module: { + rules: [ + { + test: /(?:\.ngfactory\.js|\.ngstyle\.js|\.ts)$/, + loader: '@ngtools/webpack', + exclude: [/\.spec\.ts/, /src\/test\//] + }, + ...commonRules, + ], + }, + stats: { + errorDetails: true, + }, +}; + diff --git a/desktop/config/webpack.config.dev.cjs b/desktop/config/webpack.config.dev.mjs similarity index 74% rename from desktop/config/webpack.config.dev.cjs rename to desktop/config/webpack.config.dev.mjs index cd91665111..53f00589b4 100644 --- a/desktop/config/webpack.config.dev.cjs +++ b/desktop/config/webpack.config.dev.mjs @@ -1,24 +1,17 @@ -const config = require("./webpack.config.base.cjs"); -const path = require("path"); -const merge = require("webpack-merge"); -const { defineEnv } = require("./webpack.common.cjs"); -const EvalSourceMapDevToolPlugin = require("webpack/lib/EvalSourceMapDevToolPlugin"); - -merge.strategy({ plugins: "replace" }); +import config from "./webpack.config.app-base.mjs"; +import { merge } from "webpack-merge"; +import { defineEnv } from "./webpack.common.mjs"; +import EvalSourceMapDevToolPlugin from "webpack/lib/EvalSourceMapDevToolPlugin.js"; +import * as helpers from "./helpers.js"; const ENV = "development"; const host = "localhost"; const port = process.env.PORT || 3178; +console.log('dirname', helpers.root()); +export default merge(config, { -module.exports = merge(config, { - - entry: { - "polyfills": "./src/app/polyfills.browser", - "app": "./src/app/app.ts", - }, - - // devtool: "cheap-module-source-map", mode: "development", + devtool: "eval-source-map", devServer: { host, port, @@ -35,7 +28,7 @@ module.exports = merge(config, { }, }, output: { - path: path.join(__dirname, "../build/"), + path: helpers.root("build"), filename: "[name].js", sourceMapFilename: "[name].js.map", chunkFilename: "[id].chunk.js", diff --git a/desktop/config/webpack.config.node.cjs b/desktop/config/webpack.config.node.cjs deleted file mode 100644 index 6029e95c32..0000000000 --- a/desktop/config/webpack.config.node.cjs +++ /dev/null @@ -1,62 +0,0 @@ -const config = require("./webpack.config.base.cjs"); -const helpers = require("./helpers.cjs"); -const { mergeWithCustomize, unique } = require("webpack-merge"); -const { AngularWebpackPlugin } = require("@ngtools/webpack"); - -module.exports = mergeWithCustomize({ - customizeArray: unique( - "plugins", - ["AngularWebpackPlugin"], - (plugin) => plugin.constructor && plugin.constructor.name, - ), -})(config, { - mode: "development", - target: "electron-main", - node: { - __dirname: false, - }, - entry: { - main: "./src/client/main.ts", - }, - module: { - rules: [ - { - test: /\.node$/, - loader: "node-loader", - }, - ], - }, - plugins:[ - new AngularWebpackPlugin({ - // skipCodeGeneration: !AOT, - tsconfig: "./tsconfig.node.json", - // mainPath: "./src/app/app.ts", // will auto-detect the root NgModule. - compilerOptions:{ - sourceMap: true, - } - // forkTypeChecker: !AOT, - }), - ], - output: { - path: helpers.root("build/client-test"), - - /** - * Specifies the name of each output file on disk. - * IMPORTANT: You must not specify an absolute path here! - * - * @see http://webpack.github.io/docs/configuration.html#output-filename - */ - filename: "[name].[chunkhash].bundle.js", - - - /** - * The filename of non-entry chunks as relative path - * inside the output.path directory. - * - * @see http://webpack.github.io/docs/configuration.html#output-chunkfilename - */ - chunkFilename: "[id].[chunkhash].chunk.js" - }, -}); - -console.log(module.exports) diff --git a/desktop/config/webpack.config.node.mjs b/desktop/config/webpack.config.node.mjs new file mode 100644 index 0000000000..9a990afd15 --- /dev/null +++ b/desktop/config/webpack.config.node.mjs @@ -0,0 +1,38 @@ +// const config = require("./webpack.config.base.mjs"); +import config from "./webpack.config.base.mjs"; +// const helpers = require("./helpers.js"); +import * as helpers from "./helpers.js"; +// const { merge } = require("webpack-merge"); +import { merge } from "webpack-merge"; +// const { AngularWebpackPlugin } = require("@ngtools/webpack"); +import { AngularWebpackPlugin } from "@ngtools/webpack"; + +export default merge(config, { + mode: process.env.NODE_ENV === "production" ? "production" : "development", + target: "electron-main", + node: { + __dirname: false, + }, + entry: { + main: "./src/client/main.ts", + }, + module: { + rules: [ + { + test: /\.node$/, + loader: "node-loader", + }, + ], + }, + plugins:[ + new AngularWebpackPlugin({ + tsconfig: "./tsconfig.node.json", + compilerOptions:{ + sourceMap: true, + } + }), + ], + output: { + path: helpers.root("build/client"), + }, +}); diff --git a/desktop/config/webpack.config.prod.cjs b/desktop/config/webpack.config.prod.mjs similarity index 87% rename from desktop/config/webpack.config.prod.cjs rename to desktop/config/webpack.config.prod.mjs index 9938d5df94..55704a93d3 100644 --- a/desktop/config/webpack.config.prod.cjs +++ b/desktop/config/webpack.config.prod.mjs @@ -1,17 +1,12 @@ -const config = require("./webpack.config.base.cjs"); -const helpers = require("./helpers.cjs"); -const merge = require("webpack-merge"); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const { defineEnv } = require("./webpack.common.cjs"); +import config from "./webpack.config.app-base.mjs"; +import * as helpers from "./helpers.js"; +import { merge } from "webpack-merge"; +import MiniCssExtractPlugin from "mini-css-extract-plugin"; +import { defineEnv } from "./webpack.common.mjs"; const ENV = "production"; -module.exports = merge(config, { - entry: { - "polyfills": "./src/app/polyfills.browser", - "app": "./src/app/app.ts", - }, - +export default merge(config, { devtool: "source-map", mode: "production", optimization: { diff --git a/desktop/config/webpack.config.test.cjs b/desktop/config/webpack.config.test.mjs similarity index 86% rename from desktop/config/webpack.config.test.cjs rename to desktop/config/webpack.config.test.mjs index b3ad09aad8..03677681e3 100644 --- a/desktop/config/webpack.config.test.cjs +++ b/desktop/config/webpack.config.test.mjs @@ -1,7 +1,7 @@ -const config = require("./webpack.config.base.cjs"); -// const helpers = require("./helpers"); -const { commonRules, defineEnv } = require("./webpack.common.cjs"); -const ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); + +import config from "./webpack.config.base.mjs"; +import { commonRules, defineEnv } from "./webpack.common.mjs"; +import ForkTsCheckerWebpackPlugin from "fork-ts-checker-webpack-plugin"; const ENV = "test"; @@ -65,4 +65,4 @@ config.module.rules = config.module.rules = [ ] ); -module.exports = config; +export default config; diff --git a/desktop/package-lock.json b/desktop/package-lock.json index e7a00b5297..efcd880fec 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -86,6 +86,7 @@ "@types/webdriverio": "^4.13.3", "@types/xml2js": "^0.4.5", "angular2-template-loader": "^0.6.2", + "babel-loader": "^9.1.3", "colors": "^1.4.0", "concurrently": "^5.3.0", "copy-webpack-plugin": "^11.0.0", @@ -4004,6 +4005,136 @@ "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", "dev": true }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-loader/node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/babel-loader/node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/babel-loader/node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -4995,6 +5126,12 @@ "node": ">= 12.0.0" } }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", diff --git a/desktop/package.json b/desktop/package.json index 08ba583803..b29c5bf815 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -39,8 +39,7 @@ "test-e2e": "playwright test", "test-e2e:debug": "playwright test --debug", "test-models": "tsx scripts/swagger/validate-models.ts", - "build-client": " tsc -p tsconfig.node.json", - "build-client2": "npx webpack --config config/webpack.config.node.cjs", + "build-client": "webpack --config config/webpack.config.node.mjs", "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", @@ -126,6 +125,7 @@ "@types/webdriverio": "^4.13.3", "@types/xml2js": "^0.4.5", "angular2-template-loader": "^0.6.2", + "babel-loader": "^9.1.3", "colors": "^1.4.0", "concurrently": "^5.3.0", "copy-webpack-plugin": "^11.0.0", diff --git a/desktop/src/@batch-flask/compiler/dev-translations-loader.ts b/desktop/src/@batch-flask/compiler/dev-translations-loader.ts index 131d732233..b1cad5ec6b 100644 --- a/desktop/src/@batch-flask/compiler/dev-translations-loader.ts +++ b/desktop/src/@batch-flask/compiler/dev-translations-loader.ts @@ -1,7 +1,7 @@ -import fs from "fs"; +import * as fs from "fs"; import globF from "glob"; -import jsyaml from "js-yaml"; -import util from "util"; +import * as jsyaml from "js-yaml"; +import * as util from "util"; const glob = util.promisify(globF); const readFile = util.promisify(fs.readFile); diff --git a/desktop/src/@batch-flask/electron/electron-app.service.ts b/desktop/src/@batch-flask/electron/electron-app.service.ts index 9b14b03998..c77ba8e401 100644 --- a/desktop/src/@batch-flask/electron/electron-app.service.ts +++ b/desktop/src/@batch-flask/electron/electron-app.service.ts @@ -1,6 +1,10 @@ import { Injectable } from "@angular/core"; import { App, app } from "electron"; +declare global { + const __non_webpack_require__: typeof require; +} + @Injectable({ providedIn: "root" }) export class ElectronApp { public _app: App; @@ -13,9 +17,10 @@ export class ElectronApp { this._remote = require("@electron/remote"); this._app = this._remote.app; this.require = this._remote.require; + console.log("ElectronApp: ", this._remote, this._remote.require); } else { this._app = app; - this.require = require; + this.require = __non_webpack_require__ ; } } diff --git a/desktop/src/@batch-flask/electron/shimmer.d.ts b/desktop/src/@batch-flask/electron/shimmer.d.ts new file mode 100644 index 0000000000..57d75ce34d --- /dev/null +++ b/desktop/src/@batch-flask/electron/shimmer.d.ts @@ -0,0 +1,3 @@ +declare global { + const __non_webpack_require__: typeof require; +} diff --git a/desktop/src/@batch-flask/ui/charts/chart.directive.ts b/desktop/src/@batch-flask/ui/charts/chart.directive.ts index feef8426e0..5ce9a03868 100644 --- a/desktop/src/@batch-flask/ui/charts/chart.directive.ts +++ b/desktop/src/@batch-flask/ui/charts/chart.directive.ts @@ -10,7 +10,7 @@ import { Output, SimpleChanges, } from "@angular/core"; -import * as Chart from "chart.js"; +import Chart from "chart.js"; import { getColors } from "./helpers"; export enum ChartType { diff --git a/desktop/src/@batch-flask/ui/editor/editor.component.ts b/desktop/src/@batch-flask/ui/editor/editor.component.ts index 185d1cbf30..e5be385f53 100644 --- a/desktop/src/@batch-flask/ui/editor/editor.component.ts +++ b/desktop/src/@batch-flask/ui/editor/editor.component.ts @@ -3,7 +3,7 @@ import { EventEmitter, HostListener, Input, OnChanges, OnDestroy, Output, ViewChild, forwardRef, } from "@angular/core"; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms"; -import * as elementResizeDetectorMaker from "element-resize-detector"; +import elementResizeDetectorMaker from "element-resize-detector"; import type { Uri, editor, IDisposable } from "monaco-editor"; import "./editor.scss"; diff --git a/desktop/src/@batch-flask/ui/file/download-folder-dialog/download-folder-dialog.component.ts b/desktop/src/@batch-flask/ui/file/download-folder-dialog/download-folder-dialog.component.ts index b6fcce7cb7..eb90beec43 100644 --- a/desktop/src/@batch-flask/ui/file/download-folder-dialog/download-folder-dialog.component.ts +++ b/desktop/src/@batch-flask/ui/file/download-folder-dialog/download-folder-dialog.component.ts @@ -7,7 +7,7 @@ import { Activity, ActivityService } from "@batch-flask/ui/activity"; import { FileNavigator } from "@batch-flask/ui/file/file-navigator"; import { SecureUtils } from "@batch-flask/utils"; import { List } from "immutable"; -import * as minimatch from "minimatch"; +import minimatch from "minimatch"; import * as path from "path"; import { Observable, forkJoin, from, of } from "rxjs"; import { flatMap, map, reduce } from "rxjs/operators"; diff --git a/desktop/src/@batch-flask/ui/scrollable/scrollable.component.ts b/desktop/src/@batch-flask/ui/scrollable/scrollable.component.ts index 12fb775af8..bedfb03f92 100644 --- a/desktop/src/@batch-flask/ui/scrollable/scrollable.component.ts +++ b/desktop/src/@batch-flask/ui/scrollable/scrollable.component.ts @@ -14,7 +14,7 @@ import { ViewEncapsulation, } from "@angular/core"; import { SecureUtils } from "@batch-flask/utils"; -import * as elementResizeDetectorMaker from "element-resize-detector"; +import elementResizeDetectorMaker from "element-resize-detector"; import { ScrollableService } from "./scrollable.service"; enum Orientation { diff --git a/desktop/src/@batch-flask/ui/virtual-scroll/virtual-scroll.component.ts b/desktop/src/@batch-flask/ui/virtual-scroll/virtual-scroll.component.ts index 394e13eb58..007fb2ec12 100644 --- a/desktop/src/@batch-flask/ui/virtual-scroll/virtual-scroll.component.ts +++ b/desktop/src/@batch-flask/ui/virtual-scroll/virtual-scroll.component.ts @@ -19,7 +19,7 @@ import { ViewChild, } from "@angular/core"; import { autobind } from "@batch-flask/core"; -import * as elementResizeDetectorMaker from "element-resize-detector"; +import elementResizeDetectorMaker from "element-resize-detector"; import { VirtualScrollRowDirective } from "./virtual-scroll-row.directive"; import { VirtualScrollTailComponent } from "./virtual-scroll-tail"; diff --git a/desktop/src/@batch-flask/utils/logging/node-logger.ts b/desktop/src/@batch-flask/utils/logging/node-logger.ts index d6aba5de77..20bf233283 100644 --- a/desktop/src/@batch-flask/utils/logging/node-logger.ts +++ b/desktop/src/@batch-flask/utils/logging/node-logger.ts @@ -1,5 +1,5 @@ import * as winston from "winston"; -import * as DailyRotateFile from "winston-daily-rotate-file"; +import DailyRotateFile from "winston-daily-rotate-file"; import * as Transport from "winston-transport"; import { SanitizedError } from "../error"; import { Logger } from "./base-logger"; diff --git a/desktop/src/app/components/pool/graphs/heatmap/nodes-heatmap.component.ts b/desktop/src/app/components/pool/graphs/heatmap/nodes-heatmap.component.ts index 2339bfb210..0137261599 100644 --- a/desktop/src/app/components/pool/graphs/heatmap/nodes-heatmap.component.ts +++ b/desktop/src/app/components/pool/graphs/heatmap/nodes-heatmap.component.ts @@ -10,7 +10,7 @@ import { Node, NodeState, Pool } from "app/models"; import { ComponentUtils, NodeUtils } from "app/utils"; import * as d3 from "d3"; import { BaseType, Selection } from "d3"; -import * as elementResizeDetectorMaker from "element-resize-detector"; +import elementResizeDetectorMaker from "element-resize-detector"; import { List } from "immutable"; import { BehaviorSubject } from "rxjs"; import { HeatmapColor } from "./heatmap-color"; diff --git a/desktop/src/client/api/file/file-utils.ts b/desktop/src/client/api/file/file-utils.ts index ef651b3f3f..4e7fe6af67 100644 --- a/desktop/src/client/api/file/file-utils.ts +++ b/desktop/src/client/api/file/file-utils.ts @@ -1,5 +1,5 @@ import { DownloaderHelper } from "node-downloader-helper"; -import * as extract from "extract-zip"; +import extract from "extract-zip"; import * as path from "path"; /** diff --git a/desktop/src/client/client-constants.ts b/desktop/src/client/client-constants.ts index 5a56b0a1a9..82788f9a33 100644 --- a/desktop/src/client/client-constants.ts +++ b/desktop/src/client/client-constants.ts @@ -26,7 +26,7 @@ function getPort(port = portrange): Promise { } // eslint-disable-next-line @typescript-eslint/no-var-requires -const packageConfig = require(`${root}/package.json`); +const packageConfig = require("../../package.json"); export function clientFileUrl(path: string, protocol = true): { dev: string, prod: string } { const prefix = protocol ? "file://" : ""; diff --git a/desktop/src/client/core/remote.ts b/desktop/src/client/core/remote.ts index 44f8f40e3e..2461d6de6c 100644 --- a/desktop/src/client/core/remote.ts +++ b/desktop/src/client/core/remote.ts @@ -4,7 +4,7 @@ let remoteInitialized = false; export function enableRemoteForWindow(window: BrowserWindow): void { // eslint-disable-next-line @typescript-eslint/no-var-requires - const remote = require("@electron/remote/main"); + const remote = __non_webpack_require__("@electron/remote/main"); if (!remoteInitialized) { remote.initialize(); remoteInitialized = true; diff --git a/desktop/tsconfig.json b/desktop/tsconfig.json index 9fd3e8cb66..4dedcc5983 100644 --- a/desktop/tsconfig.json +++ b/desktop/tsconfig.json @@ -26,6 +26,7 @@ // This means absolute path only works in the browser environment you need to use relative import for the code in side the client folder // Node.js doesn't support custom load path yet "baseUrl": ".", + "esModuleInterop": true, // Defer TS checking to ESLint "noUnusedLocals": false, diff --git a/desktop/webpack.config.cjs b/desktop/webpack.config.cjs deleted file mode 100644 index 862d913641..0000000000 --- a/desktop/webpack.config.cjs +++ /dev/null @@ -1,16 +0,0 @@ - -// Look in ./config folder for webpack.dev.js -switch (process.env.NODE_ENV) { - case "prod": - case "production": - module.exports = require("./config/webpack.config.prod.cjs"); - break; - case "test": - case "testing": - module.exports = require("./config/webpack.config.test.cjs"); - break; - case "dev": - case "development": - default: - module.exports = require("./config/webpack.config.dev.cjs"); -} diff --git a/desktop/webpack.config.mjs b/desktop/webpack.config.mjs new file mode 100644 index 0000000000..94727ad7e6 --- /dev/null +++ b/desktop/webpack.config.mjs @@ -0,0 +1,21 @@ + + + +let config; +// Look in ./config folder for webpack.dev.js +switch (process.env.NODE_ENV) { + case "prod": + case "production": + config = import('./config/webpack.config.prod.mjs').then((module) => module.default); + break; + case "test": + case "testing": + config = import('./config/webpack.config.test.mjs').then((module) => module.default); + break; + case "dev": + case "development": + default: + config = import('./config/webpack.config.dev.mjs').then((module) => module.default); +} + +export default config; From f3bdc5385541d80684dcfc8313c9dad5ab446bc0 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Thu, 5 Sep 2024 15:38:32 -0700 Subject: [PATCH 17/18] run script success --- desktop/package-lock.json | 632 +++++------------- desktop/package.json | 16 +- desktop/scripts/i18n/create-xliff.ts | 4 +- desktop/scripts/i18n/digest-xliff.ts | 4 +- desktop/scripts/i18n/generate.ts | 2 +- desktop/scripts/install/get-python.ts | 2 +- desktop/scripts/swagger/validate-models.ts | 2 +- desktop/src/@batch-flask/core/dynamic-form.ts | 2 +- desktop/src/@batch-flask/core/http-base.ts | 2 +- desktop/src/app/models/account-keys.ts | 2 +- desktop/src/app/models/application-action.ts | 2 +- desktop/src/app/models/application-license.ts | 2 +- .../models/application-package-reference.ts | 2 +- desktop/src/app/models/application.ts | 2 +- desktop/src/app/models/arm-location.ts | 2 +- desktop/src/app/models/arm-provider.ts | 2 +- desktop/src/app/models/arm-subscription.ts | 2 +- .../models/authorization/role-assignment.ts | 2 +- desktop/src/app/models/authorization/role.ts | 2 +- desktop/src/app/models/auto-user.ts | 2 +- desktop/src/app/models/autoscale-formula.ts | 2 +- .../authentication-token-settings.ts | 2 +- .../autoscale-formula-evaluation.ts | 3 +- .../azure-batch/batch-application-package.ts | 2 +- .../batch-application/batch-application.ts | 2 +- .../azure-batch/compute-node-information.ts | 2 +- .../src/app/models/azure-batch/data-disk.ts | 2 +- desktop/src/app/models/azure-batch/job/job.ts | 2 +- .../azure-batch/job/pool-information.ts | 2 +- .../compute-node-endpoint-configuration.ts | 2 +- .../azure-batch/node/compute-node-error.ts | 2 +- .../node/node-agent-information.ts | 2 +- .../src/app/models/azure-batch/node/node.ts | 2 +- .../models/azure-batch/pool/auto-scale-run.ts | 2 +- .../azure-batch/pool/pool-statistics.ts | 2 +- .../src/app/models/azure-batch/pool/pool.ts | 2 +- .../azure-batch/task/affinity-information.ts | 2 +- .../azure-batch/task/task-statistics.ts | 2 +- .../src/app/models/azure-batch/task/task.ts | 2 +- desktop/src/app/models/batch-account.ts | 2 +- desktop/src/app/models/batch-pool-identity.ts | 2 +- desktop/src/app/models/blob-container.ts | 2 +- .../src/app/models/certificate-reference.ts | 2 +- desktop/src/app/models/certificate.ts | 2 +- .../app/models/cloud-service-configuration.ts | 2 +- .../models/compute-node-identity-reference.ts | 2 +- desktop/src/app/models/constraints.ts | 2 +- desktop/src/app/models/container-lease.ts | 2 +- desktop/src/app/models/container-setup.ts | 2 +- .../models/disk-encryption-configuration.ts | 2 +- .../src/app/models/dtos/account-create.dto.ts | 2 +- .../src/app/models/dtos/account-patch.dto.ts | 2 +- .../dtos/application-package-reference.dto.ts | 2 +- .../models/dtos/certificate-reference.dto.ts | 2 +- .../dtos/cloud-service-configuration.dto.ts | 2 +- .../app/models/dtos/container-registry.dto.ts | 2 +- .../app/models/dtos/container-setup.dto.ts | 2 +- .../models/dtos/environment-setting.dto.ts | 2 +- .../app/models/dtos/file-group-create.dto.ts | 2 +- .../app/models/dtos/file-group-options.dto.ts | 2 +- .../app/models/dtos/job-constraints.dto.ts | 2 +- desktop/src/app/models/dtos/job-create.dto.ts | 2 +- desktop/src/app/models/dtos/job-patch.dto.ts | 2 +- .../models/dtos/job-schedule-create.dto.ts | 2 +- .../app/models/dtos/job-schedule-patch.dto.ts | 2 +- desktop/src/app/models/dtos/metadata.dto.ts | 2 +- .../models/dtos/network-configuration.dto.ts | 2 +- .../src/app/models/dtos/output-file.dto.ts | 2 +- .../dtos/pool-create/pool-create.dto.ts | 2 +- .../models/dtos/pool-enable-autoscale.dto.ts | 2 +- .../dtos/pool-endpoint-configuration.dto.ts | 2 +- desktop/src/app/models/dtos/pool-patch.dto.ts | 2 +- .../src/app/models/dtos/pool-resize.dto.ts | 2 +- .../src/app/models/dtos/resource-file.dto.ts | 2 +- desktop/src/app/models/dtos/schedule.dto.ts | 2 +- desktop/src/app/models/dtos/start-task.dto.ts | 2 +- .../app/models/dtos/task-constraints.dto.ts | 2 +- .../dtos/task-container-settings.dto.ts | 2 +- .../dtos/task-create/task-create.dto.ts | 2 +- .../src/app/models/dtos/user-account.dto.ts | 2 +- .../src/app/models/dtos/user-identity.dto.ts | 2 +- .../dtos/virtual-machine-configuration.dto.ts | 2 +- desktop/src/app/models/failure-info.ts | 2 +- desktop/src/app/models/http-header.ts | 2 +- desktop/src/app/models/image-information.ts | 2 +- desktop/src/app/models/image-reference.ts | 2 +- desktop/src/app/models/job-constraints.ts | 2 +- .../app/models/job-execution-information.ts | 2 +- .../models/job-hook-task-execution-info.ts | 2 +- desktop/src/app/models/job-hook-task.ts | 2 +- desktop/src/app/models/job-manager-task.ts | 2 +- .../src/app/models/job-preparation-task.ts | 2 +- desktop/src/app/models/job-release-task.ts | 2 +- .../job-schedule-execution-information.ts | 2 +- desktop/src/app/models/job-schedule-stats.ts | 2 +- desktop/src/app/models/job-schedule.ts | 2 +- desktop/src/app/models/job-stats.ts | 2 +- .../src/app/models/job-task-counts-result.ts | 2 +- desktop/src/app/models/job-task-counts.ts | 2 +- .../src/app/models/job-task-slot-counts.ts | 2 +- desktop/src/app/models/key-bindings.ts | 2 +- desktop/src/app/models/metadata.ts | 2 +- desktop/src/app/models/monitoring/metrics.ts | 2 +- desktop/src/app/models/mount-configuration.ts | 2 +- .../app/models/ms-graph/aad-application.ts | 2 +- .../models/ms-graph/password-credential.ts | 2 +- .../app/models/ms-graph/service-principal.ts | 2 +- .../src/app/models/multi-instance-settings.ts | 2 +- desktop/src/app/models/name-value-pair.ts | 2 +- .../src/app/models/network-configuration.ts | 2 +- .../app/models/node-connection-settings.ts | 2 +- .../models/node-placement-configuration.ts | 2 +- desktop/src/app/models/node-recent-task.ts | 2 +- desktop/src/app/models/node-user.ts | 2 +- desktop/src/app/models/os-disk.ts | 2 +- .../app/models/pool-endpoint-configuration.ts | 2 +- desktop/src/app/models/pool-os-skus.ts | 2 +- .../models/public-ip-address-configuration.ts | 2 +- desktop/src/app/models/recent-job.ts | 2 +- .../app/models/rendering-container-image.ts | 2 +- desktop/src/app/models/resize-error.ts | 2 +- desktop/src/app/models/resource-file.ts | 2 +- desktop/src/app/models/resource-group.ts | 2 +- desktop/src/app/models/schedule.ts | 2 +- desktop/src/app/models/ssh-public-key.ts | 4 +- desktop/src/app/models/start-task-info.ts | 2 +- desktop/src/app/models/start-task.ts | 2 +- desktop/src/app/models/storage-account.ts | 2 +- desktop/src/app/models/storage-keys.ts | 2 +- desktop/src/app/models/subtask-information.ts | 2 +- desktop/src/app/models/task-constraints.ts | 2 +- .../task-container-execution-information.ts | 2 +- desktop/src/app/models/task-dependencies.ts | 2 +- .../app/models/task-execution-information.ts | 2 +- .../src/app/models/task-exit-conditions.ts | 2 +- desktop/src/app/models/task-output-file.ts | 2 +- .../src/app/models/task-scheduling-policy.ts | 2 +- desktop/src/app/models/tenant-details.ts | 2 +- desktop/src/app/models/user-account.ts | 2 +- desktop/src/app/models/user-identity.ts | 2 +- .../models/virtual-machine-configuration.ts | 2 +- .../src/app/models/virtual-machine-info.ts | 2 +- desktop/src/app/models/vm-extension.ts | 2 +- desktop/src/app/models/vm-size.ts | 2 +- .../src/app/models/windows-configuration.ts | 2 +- .../src/app/models/workspace-definition.ts | 2 +- desktop/src/app/utils/icons.ts | 2 +- desktop/src/app/utils/pool-utils.ts | 2 +- .../src/common/be-user-configuration.model.ts | 4 +- desktop/tsconfig.node.json | 1 - desktop/tsconfig.scripts.json | 31 +- 151 files changed, 355 insertions(+), 628 deletions(-) diff --git a/desktop/package-lock.json b/desktop/package-lock.json index efcd880fec..3859ea1e5d 100644 --- a/desktop/package-lock.json +++ b/desktop/package-lock.json @@ -133,7 +133,7 @@ "stylelint": "^15.10.3", "to-string-loader": "^1.2.0", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "ts-node": "^10.9.1", "typescript": "~4.6.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", @@ -1060,6 +1060,28 @@ "node": ">=0.1.90" } }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@csstools/css-parser-algorithms": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", @@ -1476,390 +1498,6 @@ "node": "^12 || ^14 || ^16 || ^17" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.0.tgz", - "integrity": "sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.0.tgz", - "integrity": "sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.0.tgz", - "integrity": "sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.0.tgz", - "integrity": "sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.0.tgz", - "integrity": "sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.0.tgz", - "integrity": "sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.0.tgz", - "integrity": "sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.0.tgz", - "integrity": "sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.0.tgz", - "integrity": "sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.0.tgz", - "integrity": "sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.0.tgz", - "integrity": "sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.0.tgz", - "integrity": "sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.0.tgz", - "integrity": "sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.0.tgz", - "integrity": "sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.0.tgz", - "integrity": "sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.0.tgz", - "integrity": "sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.0.tgz", - "integrity": "sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.0.tgz", - "integrity": "sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.0.tgz", - "integrity": "sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.0.tgz", - "integrity": "sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.0.tgz", - "integrity": "sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.0.tgz", - "integrity": "sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.0.tgz", - "integrity": "sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.0.tgz", - "integrity": "sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -2367,6 +2005,30 @@ "node": ">= 10" } }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, "node_modules/@types/body-parser": { "version": "1.19.5", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", @@ -3445,6 +3107,30 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/agent-base": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", @@ -3737,6 +3423,12 @@ "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", "dev": true }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -5741,6 +5433,12 @@ "buffer": "^5.1.0" } }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -6603,6 +6301,15 @@ "semver": "bin/semver" } }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/dir-compare": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-3.3.0.tgz", @@ -7598,45 +7305,6 @@ "es6-promise": "^4.0.3" } }, - "node_modules/esbuild": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz", - "integrity": "sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.23.0", - "@esbuild/android-arm": "0.23.0", - "@esbuild/android-arm64": "0.23.0", - "@esbuild/android-x64": "0.23.0", - "@esbuild/darwin-arm64": "0.23.0", - "@esbuild/darwin-x64": "0.23.0", - "@esbuild/freebsd-arm64": "0.23.0", - "@esbuild/freebsd-x64": "0.23.0", - "@esbuild/linux-arm": "0.23.0", - "@esbuild/linux-arm64": "0.23.0", - "@esbuild/linux-ia32": "0.23.0", - "@esbuild/linux-loong64": "0.23.0", - "@esbuild/linux-mips64el": "0.23.0", - "@esbuild/linux-ppc64": "0.23.0", - "@esbuild/linux-riscv64": "0.23.0", - "@esbuild/linux-s390x": "0.23.0", - "@esbuild/linux-x64": "0.23.0", - "@esbuild/netbsd-x64": "0.23.0", - "@esbuild/openbsd-arm64": "0.23.0", - "@esbuild/openbsd-x64": "0.23.0", - "@esbuild/sunos-x64": "0.23.0", - "@esbuild/win32-arm64": "0.23.0", - "@esbuild/win32-ia32": "0.23.0", - "@esbuild/win32-x64": "0.23.0" - } - }, "node_modules/escalade": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", @@ -9261,18 +8929,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", - "dev": true, - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, "node_modules/github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -11819,6 +11475,12 @@ "semver": "bin/semver" } }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -14334,15 +13996,6 @@ "node": ">=4" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -16410,6 +16063,61 @@ "node": ">=8" } }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -16448,25 +16156,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, - "node_modules/tsx": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.17.0.tgz", - "integrity": "sha512-eN4mnDA5UMKDt4YZixo9tBioibaMBpoxBkD+rIPAjVmYERSG0/dWEY1CEFuV89CgASlKL499q8AhmkMnnjtOJg==", - "dev": true, - "dependencies": { - "esbuild": "~0.23.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -16761,6 +16450,12 @@ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -17624,6 +17319,15 @@ "integrity": "sha512-tdBxmHvbXPBKYIg81bMCB7bVeDmHkRzk5rVJyYYXurwKkHq/MCd8rz4HSJUP7hW0H2NlXiq8IFiWvYKEHhlotA==", "dev": true }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/desktop/package.json b/desktop/package.json index b29c5bf815..c4343c75d5 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -21,6 +21,8 @@ "version": "2.21.0", "main": "build/client/main.prod.js", "scripts": { + "ts": "ts-node --project tsconfig.scripts.json --files", + "ts:fast": "npm run ts -T", "start": "npm run electron:prod", "clean": "rimraf build/* dll/* python/dist/* python/build/* src/generated/*", "karma": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --max_old_space_size=4096 node_modules/karma/bin/karma", @@ -38,14 +40,14 @@ "test-client-watch": "npm run test-client -- --watch", "test-e2e": "playwright test", "test-e2e:debug": "playwright test --debug", - "test-models": "tsx scripts/swagger/validate-models.ts", + "test-models": "npm run ts scripts/swagger/validate-models.ts", "build-client": "webpack --config config/webpack.config.node.mjs", "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", - "build-i18n": "tsx scripts/i18n/generate.ts", - "build-i18n-xliff": "tsx scripts/i18n/create-xliff.ts", - "build-i18n-digest": "tsx scripts/i18n/digest-xliff.ts", + "build-i18n": "npm run ts scripts/i18n/generate.ts", + "build-i18n-xliff": "npm run ts scripts/i18n/create-xliff.ts", + "build-i18n-digest": "npm run ts scripts/i18n/digest-xliff.ts", "build": "npm run clean && npm run build-translations && npm run build-client && npm run build-app && npm run build-i18n", "build:clean": "npm run build", "build:package": "npm run build:prod && npm run build-python && npm run package", @@ -63,9 +65,9 @@ "stylelint": "stylelint --custom-syntax postcss-scss \"src/app/**/*.scss\"", "lint": "npm run eslint && npm run stylelint", "lint:fix": "npm run eslint --fix && npm run stylelint", - "package": "tsx scripts/package/package.ts", + "package": "npm run ts scripts/package/package.ts", "postinstall": "npm run rebuild:app-deps && npx patch-package", - "start-publish": "tsx scripts/publish/publish.ts", + "start-publish": "npm run ts scripts/publish/publish.ts", "webpack": "cross-env node --trace-deprecation --max_old_space_size=4096 node_modules/webpack/bin/webpack.js", "webpack:stats": "cross-env NODE_ENV=production NODE_OPTIONS=--openssl-legacy-provider npm run webpack -- --profile --json > coverage/webpack-stats.json", "webpack-dev-server": "cross-env NODE_OPTIONS=--openssl-legacy-provider node --trace-deprecation --max_old_space_size=4096 node_modules/webpack-dev-server/bin/webpack-dev-server.js", @@ -172,7 +174,7 @@ "stylelint": "^15.10.3", "to-string-loader": "^1.2.0", "ts-loader": "^9.4.4", - "tsx": "^4.17.0", + "ts-node": "^10.9.1", "typescript": "~4.6.0", "webpack": "^5.88.2", "webpack-cli": "^5.1.4", diff --git a/desktop/scripts/i18n/create-xliff.ts b/desktop/scripts/i18n/create-xliff.ts index 2d9ba7e34b..2cbd84d2e2 100644 --- a/desktop/scripts/i18n/create-xliff.ts +++ b/desktop/scripts/i18n/create-xliff.ts @@ -1,8 +1,8 @@ // eslint-disable no-console -import "../../src/client/init-esm"; +import "../../src/client/init"; import * as fs from "fs"; -import * as mkdirp from "mkdirp"; +import mkdirp from "mkdirp"; import * as path from "path"; import { promisify } from "util"; import { XliffSerializer } from "../../src/@batch-flask/compiler"; diff --git a/desktop/scripts/i18n/digest-xliff.ts b/desktop/scripts/i18n/digest-xliff.ts index 5444133f9c..d00c58cb9f 100644 --- a/desktop/scripts/i18n/digest-xliff.ts +++ b/desktop/scripts/i18n/digest-xliff.ts @@ -1,8 +1,8 @@ // eslint-disable no-console -import "../../src/client/init-esm"; +import "../../src/client/init"; import * as fs from "fs"; -import * as globNode from "glob"; +import globNode from "glob"; import { promisify } from "util"; import { XliffSerializer } from "../../src/@batch-flask/compiler"; diff --git a/desktop/scripts/i18n/generate.ts b/desktop/scripts/i18n/generate.ts index df75916acb..f7d663b6a4 100644 --- a/desktop/scripts/i18n/generate.ts +++ b/desktop/scripts/i18n/generate.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init-esm"; +import "../../src/client/init"; import * as fs from "fs"; import { promisify } from "util"; diff --git a/desktop/scripts/install/get-python.ts b/desktop/scripts/install/get-python.ts index e318d5a002..e0122ba995 100644 --- a/desktop/scripts/install/get-python.ts +++ b/desktop/scripts/install/get-python.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init-esm"; +import "../../src/client/init"; import { initLogger } from "../../src/client/logger"; initLogger(); diff --git a/desktop/scripts/swagger/validate-models.ts b/desktop/scripts/swagger/validate-models.ts index 458c5ced3f..134533c530 100644 --- a/desktop/scripts/swagger/validate-models.ts +++ b/desktop/scripts/swagger/validate-models.ts @@ -1,5 +1,5 @@ // eslint-disable no-console -import "../../src/client/init-esm"; +import "../../src/client/init"; import * as path from "path"; process.env.NODE_PATH = process.env.NODE_PATH + path.delimiter + path.join(__dirname, "../.."); diff --git a/desktop/src/@batch-flask/core/dynamic-form.ts b/desktop/src/@batch-flask/core/dynamic-form.ts index 11183a6f05..cda2dd2075 100644 --- a/desktop/src/@batch-flask/core/dynamic-form.ts +++ b/desktop/src/@batch-flask/core/dynamic-form.ts @@ -1,7 +1,7 @@ import { Type } from "@angular/core"; import { FormGroup } from "@angular/forms"; import { Dto } from "@batch-flask/core/dto"; -import { FormUtils } from "@batch-flask/utils"; +import { FormUtils } from "@batch-flask/utils/form-utils"; import { BehaviorSubject, Observable } from "rxjs"; import { map } from "rxjs/operators"; diff --git a/desktop/src/@batch-flask/core/http-base.ts b/desktop/src/@batch-flask/core/http-base.ts index 94a4603c1d..4808297b8a 100644 --- a/desktop/src/@batch-flask/core/http-base.ts +++ b/desktop/src/@batch-flask/core/http-base.ts @@ -2,7 +2,7 @@ import { Location } from "@angular/common"; import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; import { Injectable } from "@angular/core"; import { RetryableHttpCode } from "@batch-flask/core/constants"; -import { UrlUtils } from "@batch-flask/utils"; +import { UrlUtils } from "@batch-flask/utils/url-utils"; import { Observable, of, range, throwError, timer } from "rxjs"; import { flatMap, switchMap, zip } from "rxjs/operators"; import { AccessToken } from "./aad/access-token"; diff --git a/desktop/src/app/models/account-keys.ts b/desktop/src/app/models/account-keys.ts index 3b2da03b54..0d4a455f14 100644 --- a/desktop/src/app/models/account-keys.ts +++ b/desktop/src/app/models/account-keys.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface AccountKeysAttributes { accountName: string; diff --git a/desktop/src/app/models/application-action.ts b/desktop/src/app/models/application-action.ts index da92cd0aaf..fdd87221e9 100644 --- a/desktop/src/app/models/application-action.ts +++ b/desktop/src/app/models/application-action.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ApplicationActionAttributes { id: string; diff --git a/desktop/src/app/models/application-license.ts b/desktop/src/app/models/application-license.ts index 9ec9018d13..a03d8be67b 100644 --- a/desktop/src/app/models/application-license.ts +++ b/desktop/src/app/models/application-license.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ApplicationLicenseAttributes { id: string; diff --git a/desktop/src/app/models/application-package-reference.ts b/desktop/src/app/models/application-package-reference.ts index 5410ad94b8..83c9fd189e 100644 --- a/desktop/src/app/models/application-package-reference.ts +++ b/desktop/src/app/models/application-package-reference.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ApplicationPackageReferenceAttributes { applicationId: string; diff --git a/desktop/src/app/models/application.ts b/desktop/src/app/models/application.ts index 22abf7b933..b103db6ccf 100644 --- a/desktop/src/app/models/application.ts +++ b/desktop/src/app/models/application.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ApplicationAttributes { id: string; diff --git a/desktop/src/app/models/arm-location.ts b/desktop/src/app/models/arm-location.ts index 38608179ab..57c21cc222 100644 --- a/desktop/src/app/models/arm-location.ts +++ b/desktop/src/app/models/arm-location.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ArmLocationAttributes { id: string; diff --git a/desktop/src/app/models/arm-provider.ts b/desktop/src/app/models/arm-provider.ts index f561a59bc7..82c9b6db82 100644 --- a/desktop/src/app/models/arm-provider.ts +++ b/desktop/src/app/models/arm-provider.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface ArmProviderResourceTypeAttributes { diff --git a/desktop/src/app/models/arm-subscription.ts b/desktop/src/app/models/arm-subscription.ts index d95688f90b..79ed271583 100644 --- a/desktop/src/app/models/arm-subscription.ts +++ b/desktop/src/app/models/arm-subscription.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { TenantDetails, TenantDetailsAttributes } from "./tenant-details"; export interface ArmSubscriptionAttributes { diff --git a/desktop/src/app/models/authorization/role-assignment.ts b/desktop/src/app/models/authorization/role-assignment.ts index ae50e8521d..416fba300e 100644 --- a/desktop/src/app/models/authorization/role-assignment.ts +++ b/desktop/src/app/models/authorization/role-assignment.ts @@ -1,4 +1,4 @@ -import { ArmRecord, Model, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, Model, Prop, Record } from "@batch-flask/core/record"; export enum RoleAssignmentPrincipalType { App = "ServicePrincipal", diff --git a/desktop/src/app/models/authorization/role.ts b/desktop/src/app/models/authorization/role.ts index 2fa3f12867..b58c3e7c83 100644 --- a/desktop/src/app/models/authorization/role.ts +++ b/desktop/src/app/models/authorization/role.ts @@ -1,4 +1,4 @@ -import { ArmRecord, ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface RoleDefinitionPropertiesAttributes { diff --git a/desktop/src/app/models/auto-user.ts b/desktop/src/app/models/auto-user.ts index 6d952ecf9e..4cf702ea32 100644 --- a/desktop/src/app/models/auto-user.ts +++ b/desktop/src/app/models/auto-user.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { UserAccountElevationLevel } from "./user-account"; export interface AutoUserSpecificationAttributes { diff --git a/desktop/src/app/models/autoscale-formula.ts b/desktop/src/app/models/autoscale-formula.ts index 358bddbb47..c7bdc0717c 100644 --- a/desktop/src/app/models/autoscale-formula.ts +++ b/desktop/src/app/models/autoscale-formula.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { SecureUtils } from "@batch-flask/utils"; export interface AutoscaleFormulaAttributes { diff --git a/desktop/src/app/models/azure-batch/authentication-token-settings.ts b/desktop/src/app/models/azure-batch/authentication-token-settings.ts index d94472823d..955dd578c4 100644 --- a/desktop/src/app/models/azure-batch/authentication-token-settings.ts +++ b/desktop/src/app/models/azure-batch/authentication-token-settings.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Record } from "@batch-flask/core"; +import { ListProp, Model, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface AuthenticationTokenSettingsAttributes { diff --git a/desktop/src/app/models/azure-batch/autoscale-formula-evaluation.ts b/desktop/src/app/models/azure-batch/autoscale-formula-evaluation.ts index ecd40ddb2a..2dbccb1b8a 100644 --- a/desktop/src/app/models/azure-batch/autoscale-formula-evaluation.ts +++ b/desktop/src/app/models/azure-batch/autoscale-formula-evaluation.ts @@ -1,4 +1,5 @@ -import { ListProp, Model, Prop, Record, ServerError } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; +import { ServerError } from "@batch-flask/core/server-error"; import { List } from "immutable"; import { NameValuePair, NameValuePairAttributes } from "../name-value-pair"; diff --git a/desktop/src/app/models/azure-batch/batch-application-package.ts b/desktop/src/app/models/azure-batch/batch-application-package.ts index 0609e48ecc..847ca251e0 100644 --- a/desktop/src/app/models/azure-batch/batch-application-package.ts +++ b/desktop/src/app/models/azure-batch/batch-application-package.ts @@ -1,4 +1,4 @@ -import { ArmRecord, Model, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, Model, Prop, Record } from "@batch-flask/core/record"; export interface BatchApplicationPackageAttributes { id: string; diff --git a/desktop/src/app/models/azure-batch/batch-application/batch-application.ts b/desktop/src/app/models/azure-batch/batch-application/batch-application.ts index 5e6930ebfb..57c6f4332e 100644 --- a/desktop/src/app/models/azure-batch/batch-application/batch-application.ts +++ b/desktop/src/app/models/azure-batch/batch-application/batch-application.ts @@ -1,4 +1,4 @@ -import { ArmRecord, Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; export interface BatchApplicationPropertiesAttributes { allowUpdates: boolean; diff --git a/desktop/src/app/models/azure-batch/compute-node-information.ts b/desktop/src/app/models/azure-batch/compute-node-information.ts index a832260eda..3f09c185ba 100644 --- a/desktop/src/app/models/azure-batch/compute-node-information.ts +++ b/desktop/src/app/models/azure-batch/compute-node-information.ts @@ -1,7 +1,7 @@ /** * Information about the compute node on which a task ran. */ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ComputeNodeInformationAttributes { affinityId: string; diff --git a/desktop/src/app/models/azure-batch/data-disk.ts b/desktop/src/app/models/azure-batch/data-disk.ts index c9c4fe124a..0d062d0bf5 100644 --- a/desktop/src/app/models/azure-batch/data-disk.ts +++ b/desktop/src/app/models/azure-batch/data-disk.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export enum StorageAccountType { PremiumLrs = "premium_lrs", diff --git a/desktop/src/app/models/azure-batch/job/job.ts b/desktop/src/app/models/azure-batch/job/job.ts index c98e2d3130..eb3c1dbdbe 100644 --- a/desktop/src/app/models/azure-batch/job/job.ts +++ b/desktop/src/app/models/azure-batch/job/job.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; import { NetworkConfiguration } from "app/models/network-configuration"; import { ModelUtils } from "app/utils"; import { List } from "immutable"; diff --git a/desktop/src/app/models/azure-batch/job/pool-information.ts b/desktop/src/app/models/azure-batch/job/pool-information.ts index 25ab881c5a..c63aa9ffa5 100644 --- a/desktop/src/app/models/azure-batch/job/pool-information.ts +++ b/desktop/src/app/models/azure-batch/job/pool-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Pool, PoolAttributes } from "../pool"; @Model() diff --git a/desktop/src/app/models/azure-batch/node/compute-node-endpoint-configuration.ts b/desktop/src/app/models/azure-batch/node/compute-node-endpoint-configuration.ts index d41910584f..0984007c4d 100644 --- a/desktop/src/app/models/azure-batch/node/compute-node-endpoint-configuration.ts +++ b/desktop/src/app/models/azure-batch/node/compute-node-endpoint-configuration.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { InboundEndpointProtocol } from "../../pool-endpoint-configuration"; diff --git a/desktop/src/app/models/azure-batch/node/compute-node-error.ts b/desktop/src/app/models/azure-batch/node/compute-node-error.ts index fde56bfdfa..c1d2babfa6 100644 --- a/desktop/src/app/models/azure-batch/node/compute-node-error.ts +++ b/desktop/src/app/models/azure-batch/node/compute-node-error.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { NameValuePair, NameValuePairAttributes } from "app/models/name-value-pair"; import { List } from "immutable"; diff --git a/desktop/src/app/models/azure-batch/node/node-agent-information.ts b/desktop/src/app/models/azure-batch/node/node-agent-information.ts index 99ae3947d2..feb66ea024 100644 --- a/desktop/src/app/models/azure-batch/node/node-agent-information.ts +++ b/desktop/src/app/models/azure-batch/node/node-agent-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface NodeAgentInformationAttributes { lastUpdateTime: Date; diff --git a/desktop/src/app/models/azure-batch/node/node.ts b/desktop/src/app/models/azure-batch/node/node.ts index 007367b883..7af96c38e0 100644 --- a/desktop/src/app/models/azure-batch/node/node.ts +++ b/desktop/src/app/models/azure-batch/node/node.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { CertificateReference } from "app/models/certificate-reference"; import { NodeRecentTask } from "app/models/node-recent-task"; import { StartTaskInfo } from "app/models/start-task-info"; diff --git a/desktop/src/app/models/azure-batch/pool/auto-scale-run.ts b/desktop/src/app/models/azure-batch/pool/auto-scale-run.ts index ad2a644297..18ea03c384 100644 --- a/desktop/src/app/models/azure-batch/pool/auto-scale-run.ts +++ b/desktop/src/app/models/azure-batch/pool/auto-scale-run.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { NameValuePair, NameValuePairAttributes } from "app/models/name-value-pair"; import { List } from "immutable"; diff --git a/desktop/src/app/models/azure-batch/pool/pool-statistics.ts b/desktop/src/app/models/azure-batch/pool/pool-statistics.ts index a355b00806..71238f0178 100644 --- a/desktop/src/app/models/azure-batch/pool/pool-statistics.ts +++ b/desktop/src/app/models/azure-batch/pool/pool-statistics.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface ResourceStatisticsAttributes { diff --git a/desktop/src/app/models/azure-batch/pool/pool.ts b/desktop/src/app/models/azure-batch/pool/pool.ts index 65e9322840..825b7b5b8f 100644 --- a/desktop/src/app/models/azure-batch/pool/pool.ts +++ b/desktop/src/app/models/azure-batch/pool/pool.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; import { ApplicationPackageReference, ApplicationPackageReferenceAttributes, } from "app/models/application-package-reference"; diff --git a/desktop/src/app/models/azure-batch/task/affinity-information.ts b/desktop/src/app/models/azure-batch/task/affinity-information.ts index e4f4ebe456..a759cd79ca 100644 --- a/desktop/src/app/models/azure-batch/task/affinity-information.ts +++ b/desktop/src/app/models/azure-batch/task/affinity-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface AffinityInformationAttributes { affinityId: string; diff --git a/desktop/src/app/models/azure-batch/task/task-statistics.ts b/desktop/src/app/models/azure-batch/task/task-statistics.ts index 923dbd23cd..1f568191f9 100644 --- a/desktop/src/app/models/azure-batch/task/task-statistics.ts +++ b/desktop/src/app/models/azure-batch/task/task-statistics.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface TaskStatisticsAttributes { diff --git a/desktop/src/app/models/azure-batch/task/task.ts b/desktop/src/app/models/azure-batch/task/task.ts index 4538ebe176..d7fedc15cf 100644 --- a/desktop/src/app/models/azure-batch/task/task.ts +++ b/desktop/src/app/models/azure-batch/task/task.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { ApplicationPackageReference, ApplicationPackageReferenceAttributes, } from "app/models/application-package-reference"; diff --git a/desktop/src/app/models/batch-account.ts b/desktop/src/app/models/batch-account.ts index 90a78b74cb..b1ff55a9a7 100644 --- a/desktop/src/app/models/batch-account.ts +++ b/desktop/src/app/models/batch-account.ts @@ -1,4 +1,4 @@ -import { ArmRecord, Model, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, Model, Prop, Record } from "@batch-flask/core/record"; import { ArmResourceUtils, StorageUtils } from "app/utils"; import { ArmSubscription } from "./arm-subscription"; diff --git a/desktop/src/app/models/batch-pool-identity.ts b/desktop/src/app/models/batch-pool-identity.ts index 4b573a195d..01e964eb58 100644 --- a/desktop/src/app/models/batch-pool-identity.ts +++ b/desktop/src/app/models/batch-pool-identity.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface UserAssignedIdentityAttributes { diff --git a/desktop/src/app/models/blob-container.ts b/desktop/src/app/models/blob-container.ts index 50d73cf614..eb610f25ef 100644 --- a/desktop/src/app/models/blob-container.ts +++ b/desktop/src/app/models/blob-container.ts @@ -1,4 +1,4 @@ -import { Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; import { StorageContainerProperties } from "app/services/storage"; import { Constants } from "common"; import { ContainerLease, ContainerLeaseAttributes } from "./container-lease"; diff --git a/desktop/src/app/models/certificate-reference.ts b/desktop/src/app/models/certificate-reference.ts index dae5bcbb0f..6d585bf05f 100644 --- a/desktop/src/app/models/certificate-reference.ts +++ b/desktop/src/app/models/certificate-reference.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export enum CertificateVisibility { diff --git a/desktop/src/app/models/certificate.ts b/desktop/src/app/models/certificate.ts index 91503a7160..ccd953d69d 100644 --- a/desktop/src/app/models/certificate.ts +++ b/desktop/src/app/models/certificate.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; import { NameValuePair } from "."; export interface DeleteCertificateErrorAttributes { diff --git a/desktop/src/app/models/cloud-service-configuration.ts b/desktop/src/app/models/cloud-service-configuration.ts index 11d30c972a..92d3f93067 100644 --- a/desktop/src/app/models/cloud-service-configuration.ts +++ b/desktop/src/app/models/cloud-service-configuration.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface CloudServiceConfigurationAttributes { osFamily: CloudServiceOsFamily; diff --git a/desktop/src/app/models/compute-node-identity-reference.ts b/desktop/src/app/models/compute-node-identity-reference.ts index 39dc80280d..a1cb820124 100644 --- a/desktop/src/app/models/compute-node-identity-reference.ts +++ b/desktop/src/app/models/compute-node-identity-reference.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ComputeNodeIdentityReferenceAttributes { resourceId: string; diff --git a/desktop/src/app/models/constraints.ts b/desktop/src/app/models/constraints.ts index 099ec6062e..f635ba2615 100644 --- a/desktop/src/app/models/constraints.ts +++ b/desktop/src/app/models/constraints.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface ConstraintsAttributes { diff --git a/desktop/src/app/models/container-lease.ts b/desktop/src/app/models/container-lease.ts index ca81b90b73..36a837c83c 100644 --- a/desktop/src/app/models/container-lease.ts +++ b/desktop/src/app/models/container-lease.ts @@ -1,5 +1,5 @@ import { LeaseStateType, LeaseStatusType } from "@azure/storage-blob"; -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ContainerLeaseAttributes { status: LeaseStatus; diff --git a/desktop/src/app/models/container-setup.ts b/desktop/src/app/models/container-setup.ts index 29970faf0c..4b72f88c1b 100644 --- a/desktop/src/app/models/container-setup.ts +++ b/desktop/src/app/models/container-setup.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { ComputeNodeIdentityReference } from "./compute-node-identity-reference"; diff --git a/desktop/src/app/models/disk-encryption-configuration.ts b/desktop/src/app/models/disk-encryption-configuration.ts index 241ccb96eb..fcc79ace94 100644 --- a/desktop/src/app/models/disk-encryption-configuration.ts +++ b/desktop/src/app/models/disk-encryption-configuration.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Record } from "@batch-flask/core"; +import { ListProp, Model, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface DiskEncryptionConfigurationAttributes { diff --git a/desktop/src/app/models/dtos/account-create.dto.ts b/desktop/src/app/models/dtos/account-create.dto.ts index f01fdd2fa9..91d3b991b2 100644 --- a/desktop/src/app/models/dtos/account-create.dto.ts +++ b/desktop/src/app/models/dtos/account-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { AccountPatchDto } from "./account-patch.dto"; export class AccountCreateDto extends Dto { diff --git a/desktop/src/app/models/dtos/account-patch.dto.ts b/desktop/src/app/models/dtos/account-patch.dto.ts index 890dd0b06d..9942d50b56 100644 --- a/desktop/src/app/models/dtos/account-patch.dto.ts +++ b/desktop/src/app/models/dtos/account-patch.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class AutoStoragePatchDto extends Dto { @DtoAttr() diff --git a/desktop/src/app/models/dtos/application-package-reference.dto.ts b/desktop/src/app/models/dtos/application-package-reference.dto.ts index 29746ce494..c14184d4f2 100644 --- a/desktop/src/app/models/dtos/application-package-reference.dto.ts +++ b/desktop/src/app/models/dtos/application-package-reference.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class AppPackageReferenceDto extends Dto { @DtoAttr() diff --git a/desktop/src/app/models/dtos/certificate-reference.dto.ts b/desktop/src/app/models/dtos/certificate-reference.dto.ts index caa22cf536..14705f1bfc 100644 --- a/desktop/src/app/models/dtos/certificate-reference.dto.ts +++ b/desktop/src/app/models/dtos/certificate-reference.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class CertificateReferenceDto extends Dto { @DtoAttr() public storeLocation: string; diff --git a/desktop/src/app/models/dtos/cloud-service-configuration.dto.ts b/desktop/src/app/models/dtos/cloud-service-configuration.dto.ts index 31bbc20cff..8fb97970c6 100644 --- a/desktop/src/app/models/dtos/cloud-service-configuration.dto.ts +++ b/desktop/src/app/models/dtos/cloud-service-configuration.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class CloudServiceConfigurationDto extends Dto { @DtoAttr() diff --git a/desktop/src/app/models/dtos/container-registry.dto.ts b/desktop/src/app/models/dtos/container-registry.dto.ts index 3dd4007dec..6eb26ce61e 100644 --- a/desktop/src/app/models/dtos/container-registry.dto.ts +++ b/desktop/src/app/models/dtos/container-registry.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { ComputeNodeIdentityReference } from "../compute-node-identity-reference"; export class ContainerRegistryDto extends Dto { diff --git a/desktop/src/app/models/dtos/container-setup.dto.ts b/desktop/src/app/models/dtos/container-setup.dto.ts index b4e9a5381a..9a81c6289f 100644 --- a/desktop/src/app/models/dtos/container-setup.dto.ts +++ b/desktop/src/app/models/dtos/container-setup.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { ContainerType } from "../container-setup"; import { ContainerRegistryDto } from "./container-registry.dto"; diff --git a/desktop/src/app/models/dtos/environment-setting.dto.ts b/desktop/src/app/models/dtos/environment-setting.dto.ts index 6b2d8cf88f..1393ccc91e 100644 --- a/desktop/src/app/models/dtos/environment-setting.dto.ts +++ b/desktop/src/app/models/dtos/environment-setting.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class EnvironmentSettingDto extends Dto { @DtoAttr() public name: string; diff --git a/desktop/src/app/models/dtos/file-group-create.dto.ts b/desktop/src/app/models/dtos/file-group-create.dto.ts index 19ed156937..7476735cae 100644 --- a/desktop/src/app/models/dtos/file-group-create.dto.ts +++ b/desktop/src/app/models/dtos/file-group-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { FileGroupOptionsDto } from "./file-group-options.dto"; export class FileOrDirectoryDto extends Dto { diff --git a/desktop/src/app/models/dtos/file-group-options.dto.ts b/desktop/src/app/models/dtos/file-group-options.dto.ts index 8ea113e2db..38f9db8b10 100644 --- a/desktop/src/app/models/dtos/file-group-options.dto.ts +++ b/desktop/src/app/models/dtos/file-group-options.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class FileGroupOptionsDto extends Dto { @DtoAttr() diff --git a/desktop/src/app/models/dtos/job-constraints.dto.ts b/desktop/src/app/models/dtos/job-constraints.dto.ts index 2a15feeedf..7f4d043bc3 100644 --- a/desktop/src/app/models/dtos/job-constraints.dto.ts +++ b/desktop/src/app/models/dtos/job-constraints.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { Duration } from "luxon"; export class JobConstraintDto extends Dto { diff --git a/desktop/src/app/models/dtos/job-create.dto.ts b/desktop/src/app/models/dtos/job-create.dto.ts index b33350677a..baf00cef9c 100644 --- a/desktop/src/app/models/dtos/job-create.dto.ts +++ b/desktop/src/app/models/dtos/job-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { ApplicationPackageReference } from "../application-package-reference"; import { EnvironmentSettingDto } from "./environment-setting.dto"; import { JobConstraintDto } from "./job-constraints.dto"; diff --git a/desktop/src/app/models/dtos/job-patch.dto.ts b/desktop/src/app/models/dtos/job-patch.dto.ts index 04f21cf660..0fbdca1c10 100644 --- a/desktop/src/app/models/dtos/job-patch.dto.ts +++ b/desktop/src/app/models/dtos/job-patch.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { MetaDataDto } from "./metadata.dto"; import { PoolCreateDto } from "./pool-create"; import { TaskConstraintsDto } from "./task-constraints.dto"; diff --git a/desktop/src/app/models/dtos/job-schedule-create.dto.ts b/desktop/src/app/models/dtos/job-schedule-create.dto.ts index cfb295dca1..6b673eee4d 100644 --- a/desktop/src/app/models/dtos/job-schedule-create.dto.ts +++ b/desktop/src/app/models/dtos/job-schedule-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { JobCreateDto } from "./job-create.dto"; import { MetaDataDto } from "./metadata.dto"; import { ScheduleDto } from "./schedule.dto"; diff --git a/desktop/src/app/models/dtos/job-schedule-patch.dto.ts b/desktop/src/app/models/dtos/job-schedule-patch.dto.ts index c3c151bd54..680889802b 100644 --- a/desktop/src/app/models/dtos/job-schedule-patch.dto.ts +++ b/desktop/src/app/models/dtos/job-schedule-patch.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { JobCreateDto } from "./job-create.dto"; import { MetaDataDto } from "./metadata.dto"; import { ScheduleDto } from "./schedule.dto"; diff --git a/desktop/src/app/models/dtos/metadata.dto.ts b/desktop/src/app/models/dtos/metadata.dto.ts index d706f764c5..78ed8bbcb8 100644 --- a/desktop/src/app/models/dtos/metadata.dto.ts +++ b/desktop/src/app/models/dtos/metadata.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class MetaDataDto extends Dto { @DtoAttr() public name: string; diff --git a/desktop/src/app/models/dtos/network-configuration.dto.ts b/desktop/src/app/models/dtos/network-configuration.dto.ts index a04517d0e9..876b3a8683 100644 --- a/desktop/src/app/models/dtos/network-configuration.dto.ts +++ b/desktop/src/app/models/dtos/network-configuration.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { PoolEndPointConfigurationDto } from "./pool-endpoint-configuration.dto"; export class NetworkConfigurationDto extends Dto { diff --git a/desktop/src/app/models/dtos/output-file.dto.ts b/desktop/src/app/models/dtos/output-file.dto.ts index 3378e0b372..084aecc8f7 100644 --- a/desktop/src/app/models/dtos/output-file.dto.ts +++ b/desktop/src/app/models/dtos/output-file.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class OutputFileBlobContainerDestinationDto extends Dto { @DtoAttr() public containerUrl: string; diff --git a/desktop/src/app/models/dtos/pool-create/pool-create.dto.ts b/desktop/src/app/models/dtos/pool-create/pool-create.dto.ts index 9e08f2731e..6f4e3f8be7 100644 --- a/desktop/src/app/models/dtos/pool-create/pool-create.dto.ts +++ b/desktop/src/app/models/dtos/pool-create/pool-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { NodeFillType } from "app/models/task-scheduling-policy"; import { Duration } from "luxon"; import { AppPackageReferenceDto } from "../application-package-reference.dto"; diff --git a/desktop/src/app/models/dtos/pool-enable-autoscale.dto.ts b/desktop/src/app/models/dtos/pool-enable-autoscale.dto.ts index 8f7588db83..760aabd89b 100644 --- a/desktop/src/app/models/dtos/pool-enable-autoscale.dto.ts +++ b/desktop/src/app/models/dtos/pool-enable-autoscale.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { Duration } from "luxon"; export class PoolEnableAutoScaleDto extends Dto { diff --git a/desktop/src/app/models/dtos/pool-endpoint-configuration.dto.ts b/desktop/src/app/models/dtos/pool-endpoint-configuration.dto.ts index 25118c31af..6ad5eec15e 100644 --- a/desktop/src/app/models/dtos/pool-endpoint-configuration.dto.ts +++ b/desktop/src/app/models/dtos/pool-endpoint-configuration.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { InboundEndpointProtocol, NetworkSecurityGroupRuleAccess } from "app/models/pool-endpoint-configuration"; export class NetworkSecurityGroupRuleDto extends Dto { diff --git a/desktop/src/app/models/dtos/pool-patch.dto.ts b/desktop/src/app/models/dtos/pool-patch.dto.ts index 7ca95ccd42..75f17c727d 100644 --- a/desktop/src/app/models/dtos/pool-patch.dto.ts +++ b/desktop/src/app/models/dtos/pool-patch.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { AppPackageReferenceDto } from "./application-package-reference.dto"; import { CertificateReferenceDto } from "./certificate-reference.dto"; import { MetaDataDto } from "./metadata.dto"; diff --git a/desktop/src/app/models/dtos/pool-resize.dto.ts b/desktop/src/app/models/dtos/pool-resize.dto.ts index 5de183b48f..ab7f818872 100644 --- a/desktop/src/app/models/dtos/pool-resize.dto.ts +++ b/desktop/src/app/models/dtos/pool-resize.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { Duration } from "luxon"; export enum NodeDeallocationOption { diff --git a/desktop/src/app/models/dtos/resource-file.dto.ts b/desktop/src/app/models/dtos/resource-file.dto.ts index 4cc0d124e3..2377a25e3e 100644 --- a/desktop/src/app/models/dtos/resource-file.dto.ts +++ b/desktop/src/app/models/dtos/resource-file.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; export class ResourceFileDto extends Dto { @DtoAttr() public httpUrl: string; diff --git a/desktop/src/app/models/dtos/schedule.dto.ts b/desktop/src/app/models/dtos/schedule.dto.ts index aafd35749d..32f2a5e795 100644 --- a/desktop/src/app/models/dtos/schedule.dto.ts +++ b/desktop/src/app/models/dtos/schedule.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { Duration } from "luxon"; export class ScheduleDto extends Dto { diff --git a/desktop/src/app/models/dtos/start-task.dto.ts b/desktop/src/app/models/dtos/start-task.dto.ts index 7a0cb4027a..8e0e99b550 100644 --- a/desktop/src/app/models/dtos/start-task.dto.ts +++ b/desktop/src/app/models/dtos/start-task.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { EnvironmentSettingDto } from "./environment-setting.dto"; import { ResourceFileDto } from "./resource-file.dto"; import { TaskContainerSettingsDto } from "./task-container-settings.dto"; diff --git a/desktop/src/app/models/dtos/task-constraints.dto.ts b/desktop/src/app/models/dtos/task-constraints.dto.ts index 9727144ea2..4e74fb976e 100644 --- a/desktop/src/app/models/dtos/task-constraints.dto.ts +++ b/desktop/src/app/models/dtos/task-constraints.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { Duration } from "luxon"; export class TaskConstraintsDto extends Dto { diff --git a/desktop/src/app/models/dtos/task-container-settings.dto.ts b/desktop/src/app/models/dtos/task-container-settings.dto.ts index bde067c2bb..fd41ed70f8 100644 --- a/desktop/src/app/models/dtos/task-container-settings.dto.ts +++ b/desktop/src/app/models/dtos/task-container-settings.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { ContainerRegistryDto } from "./container-registry.dto"; export class TaskContainerSettingsDto extends Dto { diff --git a/desktop/src/app/models/dtos/task-create/task-create.dto.ts b/desktop/src/app/models/dtos/task-create/task-create.dto.ts index 2fc0c12fc7..2df42a0f54 100644 --- a/desktop/src/app/models/dtos/task-create/task-create.dto.ts +++ b/desktop/src/app/models/dtos/task-create/task-create.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { ExitOptions } from "../../task-exit-conditions"; import { AppPackageReferenceDto } from "../application-package-reference.dto"; import { EnvironmentSetting } from "../metadata.dto"; diff --git a/desktop/src/app/models/dtos/user-account.dto.ts b/desktop/src/app/models/dtos/user-account.dto.ts index 36e432a971..a6d958623f 100644 --- a/desktop/src/app/models/dtos/user-account.dto.ts +++ b/desktop/src/app/models/dtos/user-account.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { LoginMode, UserAccountElevationLevel } from "../user-account"; export class WindowsUserConfigurationDto extends Dto { diff --git a/desktop/src/app/models/dtos/user-identity.dto.ts b/desktop/src/app/models/dtos/user-identity.dto.ts index 1d2020eef6..e4f0a54527 100644 --- a/desktop/src/app/models/dtos/user-identity.dto.ts +++ b/desktop/src/app/models/dtos/user-identity.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr } from "@batch-flask/core/dto"; import { UserAccountElevationLevel } from "../user-account"; export class AutoUserDto extends Dto { diff --git a/desktop/src/app/models/dtos/virtual-machine-configuration.dto.ts b/desktop/src/app/models/dtos/virtual-machine-configuration.dto.ts index 91c374f073..fa1cc55096 100644 --- a/desktop/src/app/models/dtos/virtual-machine-configuration.dto.ts +++ b/desktop/src/app/models/dtos/virtual-machine-configuration.dto.ts @@ -1,4 +1,4 @@ -import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core"; +import { Dto, DtoAttr, ListDtoAttr } from "@batch-flask/core/dto"; import { CachingType, StorageAccountType } from "../azure-batch"; import { ContainerConfigurationDto } from "./container-setup.dto"; diff --git a/desktop/src/app/models/failure-info.ts b/desktop/src/app/models/failure-info.ts index cb98b064b8..6f8aaf103f 100644 --- a/desktop/src/app/models/failure-info.ts +++ b/desktop/src/app/models/failure-info.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { NameValuePair, NameValuePairAttributes } from "./name-value-pair"; diff --git a/desktop/src/app/models/http-header.ts b/desktop/src/app/models/http-header.ts index 014ce6f2d3..749377727e 100644 --- a/desktop/src/app/models/http-header.ts +++ b/desktop/src/app/models/http-header.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface HttpHeaderAttributes { name: string; diff --git a/desktop/src/app/models/image-information.ts b/desktop/src/app/models/image-information.ts index 24663bd087..24b70e18c1 100644 --- a/desktop/src/app/models/image-information.ts +++ b/desktop/src/app/models/image-information.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { ImageReference, ImageReferenceAttributes } from "./image-reference"; diff --git a/desktop/src/app/models/image-reference.ts b/desktop/src/app/models/image-reference.ts index 4b7a336e28..febea7fb07 100644 --- a/desktop/src/app/models/image-reference.ts +++ b/desktop/src/app/models/image-reference.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface MarketImageReferenceAttributes { publisher: string; diff --git a/desktop/src/app/models/job-constraints.ts b/desktop/src/app/models/job-constraints.ts index 924b0c840a..44d038c635 100644 --- a/desktop/src/app/models/job-constraints.ts +++ b/desktop/src/app/models/job-constraints.ts @@ -1,4 +1,4 @@ -import { Model } from "@batch-flask/core"; +import { Model } from "@batch-flask/core/record"; import { Constraints } from "./constraints"; /** diff --git a/desktop/src/app/models/job-execution-information.ts b/desktop/src/app/models/job-execution-information.ts index 94138598b8..cb0728a966 100644 --- a/desktop/src/app/models/job-execution-information.ts +++ b/desktop/src/app/models/job-execution-information.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { FailureInfoAttributes } from "./failure-info"; import { NameValuePair, NameValuePairAttributes } from "./name-value-pair"; diff --git a/desktop/src/app/models/job-hook-task-execution-info.ts b/desktop/src/app/models/job-hook-task-execution-info.ts index abe2d73bee..0e35f2bee0 100644 --- a/desktop/src/app/models/job-hook-task-execution-info.ts +++ b/desktop/src/app/models/job-hook-task-execution-info.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { TaskExecutionResult } from "./azure-batch"; import { FailureInfoAttributes } from "./failure-info"; diff --git a/desktop/src/app/models/job-hook-task.ts b/desktop/src/app/models/job-hook-task.ts index 7ef6e14fd3..9ed725cee3 100644 --- a/desktop/src/app/models/job-hook-task.ts +++ b/desktop/src/app/models/job-hook-task.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { JobHookTaskExecutionInfo } from "./job-hook-task-execution-info"; export interface JobHookTaskAttributes { diff --git a/desktop/src/app/models/job-manager-task.ts b/desktop/src/app/models/job-manager-task.ts index b8dd8e4ce8..ff3cadc7b0 100644 --- a/desktop/src/app/models/job-manager-task.ts +++ b/desktop/src/app/models/job-manager-task.ts @@ -1,5 +1,5 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { ApplicationPackageReference } from "./application-package-reference"; import { diff --git a/desktop/src/app/models/job-preparation-task.ts b/desktop/src/app/models/job-preparation-task.ts index 25ea336245..37d87c6a75 100644 --- a/desktop/src/app/models/job-preparation-task.ts +++ b/desktop/src/app/models/job-preparation-task.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { TaskContainerSettings, TaskContainerSettingsAttributes } from "./container-setup"; import { NameValuePair } from "./name-value-pair"; diff --git a/desktop/src/app/models/job-release-task.ts b/desktop/src/app/models/job-release-task.ts index 0b2528edae..229e871687 100644 --- a/desktop/src/app/models/job-release-task.ts +++ b/desktop/src/app/models/job-release-task.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { Duration } from "luxon"; import { TaskContainerSettings, TaskContainerSettingsAttributes } from "./container-setup"; diff --git a/desktop/src/app/models/job-schedule-execution-information.ts b/desktop/src/app/models/job-schedule-execution-information.ts index 0e5727a1b0..a377ae967f 100644 --- a/desktop/src/app/models/job-schedule-execution-information.ts +++ b/desktop/src/app/models/job-schedule-execution-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { RecentJob, RecentJobAttributes } from "./recent-job"; export interface JobScheduleExecutionInformationAttributes { diff --git a/desktop/src/app/models/job-schedule-stats.ts b/desktop/src/app/models/job-schedule-stats.ts index a085f61463..6168e0b5bd 100644 --- a/desktop/src/app/models/job-schedule-stats.ts +++ b/desktop/src/app/models/job-schedule-stats.ts @@ -1,4 +1,4 @@ -import { Model } from "@batch-flask/core"; +import { Model } from "@batch-flask/core/record"; import { JobStatistics } from "./job-stats"; /** diff --git a/desktop/src/app/models/job-schedule.ts b/desktop/src/app/models/job-schedule.ts index 91e5fd1e07..d19f599b04 100644 --- a/desktop/src/app/models/job-schedule.ts +++ b/desktop/src/app/models/job-schedule.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, NavigableRecord, Prop, Record } from "@batch-flask/core/record"; import { ModelUtils } from "app/utils"; import { List } from "immutable"; import { Job, JobAttributes } from "./azure-batch/job/job"; diff --git a/desktop/src/app/models/job-stats.ts b/desktop/src/app/models/job-stats.ts index 9a0ce1e6bf..de39117c5d 100644 --- a/desktop/src/app/models/job-stats.ts +++ b/desktop/src/app/models/job-stats.ts @@ -1,7 +1,7 @@ /** * Statistics about an executed job */ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface JobStatisticsAttributes { diff --git a/desktop/src/app/models/job-task-counts-result.ts b/desktop/src/app/models/job-task-counts-result.ts index 1c56d01886..a77a35dbfc 100644 --- a/desktop/src/app/models/job-task-counts-result.ts +++ b/desktop/src/app/models/job-task-counts-result.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { JobTaskCounts, JobTaskCountsAttributes } from "./job-task-counts"; import { JobTaskSlotCounts, JobTaskSlotCountsAttributes } from "./job-task-slot-counts"; diff --git a/desktop/src/app/models/job-task-counts.ts b/desktop/src/app/models/job-task-counts.ts index 6ea07c1c59..50d0c6f7e7 100644 --- a/desktop/src/app/models/job-task-counts.ts +++ b/desktop/src/app/models/job-task-counts.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface JobTaskCountsAttributes { active?: number; diff --git a/desktop/src/app/models/job-task-slot-counts.ts b/desktop/src/app/models/job-task-slot-counts.ts index 3831a04506..2763f9ee8e 100644 --- a/desktop/src/app/models/job-task-slot-counts.ts +++ b/desktop/src/app/models/job-task-slot-counts.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface JobTaskSlotCountsAttributes { active?: number; diff --git a/desktop/src/app/models/key-bindings.ts b/desktop/src/app/models/key-bindings.ts index 8ca4e329ed..65aa59e5f1 100644 --- a/desktop/src/app/models/key-bindings.ts +++ b/desktop/src/app/models/key-bindings.ts @@ -1,4 +1,4 @@ -import { OS } from "@batch-flask/utils"; +import { OS } from "@batch-flask/utils/os"; let bindings: KeyBindings[]; diff --git a/desktop/src/app/models/metadata.ts b/desktop/src/app/models/metadata.ts index 29dd91229f..0eb4f799dd 100644 --- a/desktop/src/app/models/metadata.ts +++ b/desktop/src/app/models/metadata.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface MetadataAttributes { name: string; diff --git a/desktop/src/app/models/monitoring/metrics.ts b/desktop/src/app/models/monitoring/metrics.ts index cb925a0ce3..3c870f0431 100644 --- a/desktop/src/app/models/monitoring/metrics.ts +++ b/desktop/src/app/models/monitoring/metrics.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface MetricValue { diff --git a/desktop/src/app/models/mount-configuration.ts b/desktop/src/app/models/mount-configuration.ts index 65eb06c05a..1ae7ee8122 100644 --- a/desktop/src/app/models/mount-configuration.ts +++ b/desktop/src/app/models/mount-configuration.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface AzureBlobFileSystemConfigurationAttributes { accountKey: string; diff --git a/desktop/src/app/models/ms-graph/aad-application.ts b/desktop/src/app/models/ms-graph/aad-application.ts index 2ac1033ea0..d55624e461 100644 --- a/desktop/src/app/models/ms-graph/aad-application.ts +++ b/desktop/src/app/models/ms-graph/aad-application.ts @@ -1,4 +1,4 @@ -import { ListProp, Prop, Record } from "@batch-flask/core"; +import { ListProp, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { PasswordCredential, PasswordCredentialAttributes } from "./password-credential"; diff --git a/desktop/src/app/models/ms-graph/password-credential.ts b/desktop/src/app/models/ms-graph/password-credential.ts index 45274f5d68..789a3fe498 100644 --- a/desktop/src/app/models/ms-graph/password-credential.ts +++ b/desktop/src/app/models/ms-graph/password-credential.ts @@ -1,4 +1,4 @@ -import { Prop, Record } from "@batch-flask/core"; +import { Prop, Record } from "@batch-flask/core/record"; export interface PasswordCredentialAttributes { keyId: string; diff --git a/desktop/src/app/models/ms-graph/service-principal.ts b/desktop/src/app/models/ms-graph/service-principal.ts index 4160cb45df..c8aec632d4 100644 --- a/desktop/src/app/models/ms-graph/service-principal.ts +++ b/desktop/src/app/models/ms-graph/service-principal.ts @@ -1,4 +1,4 @@ -import { ListProp, Prop, Record } from "@batch-flask/core"; +import { ListProp, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface ServicePrincipalAttributes { diff --git a/desktop/src/app/models/multi-instance-settings.ts b/desktop/src/app/models/multi-instance-settings.ts index f1deb36827..91bc3491a5 100644 --- a/desktop/src/app/models/multi-instance-settings.ts +++ b/desktop/src/app/models/multi-instance-settings.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { ResourceFile } from "./resource-file"; diff --git a/desktop/src/app/models/name-value-pair.ts b/desktop/src/app/models/name-value-pair.ts index c4e7b63fb8..91151afe3e 100644 --- a/desktop/src/app/models/name-value-pair.ts +++ b/desktop/src/app/models/name-value-pair.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface NameValuePairAttributes { name: string; diff --git a/desktop/src/app/models/network-configuration.ts b/desktop/src/app/models/network-configuration.ts index 7d280b896b..1e2719bdf1 100644 --- a/desktop/src/app/models/network-configuration.ts +++ b/desktop/src/app/models/network-configuration.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { PoolEndpointConfiguration, PoolEndpointConfigurationAttributes } from "./pool-endpoint-configuration"; import { PublicIPAddressConfiguration, diff --git a/desktop/src/app/models/node-connection-settings.ts b/desktop/src/app/models/node-connection-settings.ts index e00430935d..47860e2748 100644 --- a/desktop/src/app/models/node-connection-settings.ts +++ b/desktop/src/app/models/node-connection-settings.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface IaasNodeConnectionSettingsAttributes { remoteLoginIPAddress: string; diff --git a/desktop/src/app/models/node-placement-configuration.ts b/desktop/src/app/models/node-placement-configuration.ts index 84092e671c..792c46e5ab 100644 --- a/desktop/src/app/models/node-placement-configuration.ts +++ b/desktop/src/app/models/node-placement-configuration.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface NodePlacementConfigurationAttributes { policy: NodePlacementPolicyType; diff --git a/desktop/src/app/models/node-recent-task.ts b/desktop/src/app/models/node-recent-task.ts index 40436afffb..9cf62d6d6a 100644 --- a/desktop/src/app/models/node-recent-task.ts +++ b/desktop/src/app/models/node-recent-task.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { TaskState } from "app/models/azure-batch/task"; export interface NodeRecentTaskAttributes { diff --git a/desktop/src/app/models/node-user.ts b/desktop/src/app/models/node-user.ts index 1542aa7134..3450c4c6b9 100644 --- a/desktop/src/app/models/node-user.ts +++ b/desktop/src/app/models/node-user.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; interface NodeUserAttributes { name: string; diff --git a/desktop/src/app/models/os-disk.ts b/desktop/src/app/models/os-disk.ts index 1badc683b0..534e882119 100644 --- a/desktop/src/app/models/os-disk.ts +++ b/desktop/src/app/models/os-disk.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface OSDiskAttributes { ephemeralOSDiskSettings: DiffDiskSettings; diff --git a/desktop/src/app/models/pool-endpoint-configuration.ts b/desktop/src/app/models/pool-endpoint-configuration.ts index 9360ddce4f..5a9564f572 100644 --- a/desktop/src/app/models/pool-endpoint-configuration.ts +++ b/desktop/src/app/models/pool-endpoint-configuration.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export enum InboundEndpointProtocol { diff --git a/desktop/src/app/models/pool-os-skus.ts b/desktop/src/app/models/pool-os-skus.ts index 6f1b088c00..2b2a0dd70a 100644 --- a/desktop/src/app/models/pool-os-skus.ts +++ b/desktop/src/app/models/pool-os-skus.ts @@ -1,4 +1,4 @@ -import { ObjectUtils } from "@batch-flask/utils"; +import { ObjectUtils } from "@batch-flask/utils/object-utils"; import { List } from "immutable"; import { ImageInformation } from "./image-information"; diff --git a/desktop/src/app/models/public-ip-address-configuration.ts b/desktop/src/app/models/public-ip-address-configuration.ts index 93f676339b..39faecab83 100644 --- a/desktop/src/app/models/public-ip-address-configuration.ts +++ b/desktop/src/app/models/public-ip-address-configuration.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface PublicIPAddressConfigurationAttributes { diff --git a/desktop/src/app/models/recent-job.ts b/desktop/src/app/models/recent-job.ts index 4a20dac2d4..711ee254de 100644 --- a/desktop/src/app/models/recent-job.ts +++ b/desktop/src/app/models/recent-job.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface RecentJobAttributes { id: string; diff --git a/desktop/src/app/models/rendering-container-image.ts b/desktop/src/app/models/rendering-container-image.ts index 579cfb4996..8253f6e8e3 100644 --- a/desktop/src/app/models/rendering-container-image.ts +++ b/desktop/src/app/models/rendering-container-image.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { ImageReference, MarketImageReferenceAttributes } from "./image-reference"; export enum RenderApplication { diff --git a/desktop/src/app/models/resize-error.ts b/desktop/src/app/models/resize-error.ts index 3354eb52c0..26522aa2ae 100644 --- a/desktop/src/app/models/resize-error.ts +++ b/desktop/src/app/models/resize-error.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { NameValuePair, NameValuePairAttributes } from "./name-value-pair"; diff --git a/desktop/src/app/models/resource-file.ts b/desktop/src/app/models/resource-file.ts index c3b7601a44..d9f70c71ef 100644 --- a/desktop/src/app/models/resource-file.ts +++ b/desktop/src/app/models/resource-file.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { ComputeNodeIdentityReference } from "./compute-node-identity-reference"; export interface ResourceFileAttributes { diff --git a/desktop/src/app/models/resource-group.ts b/desktop/src/app/models/resource-group.ts index 671d761ef5..4e690219d8 100644 --- a/desktop/src/app/models/resource-group.ts +++ b/desktop/src/app/models/resource-group.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface ResourceGroupAttributes { id: string; diff --git a/desktop/src/app/models/schedule.ts b/desktop/src/app/models/schedule.ts index 097bb1d0ab..d42c56db23 100644 --- a/desktop/src/app/models/schedule.ts +++ b/desktop/src/app/models/schedule.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; export interface ScheduleAttributes { diff --git a/desktop/src/app/models/ssh-public-key.ts b/desktop/src/app/models/ssh-public-key.ts index 07bcd612e3..a7c619377b 100644 --- a/desktop/src/app/models/ssh-public-key.ts +++ b/desktop/src/app/models/ssh-public-key.ts @@ -1,5 +1,5 @@ -import { Model, Prop, Record } from "@batch-flask/core"; -import { SecureUtils } from "@batch-flask/utils"; +import { Model, Record, Prop } from "@batch-flask/core/record"; +import { SecureUtils } from "@batch-flask/utils/secure-utils"; export interface SSHPublicKeyAttributes { id: string; diff --git a/desktop/src/app/models/start-task-info.ts b/desktop/src/app/models/start-task-info.ts index 7c241a9a1e..d7fd529ef9 100644 --- a/desktop/src/app/models/start-task-info.ts +++ b/desktop/src/app/models/start-task-info.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { TaskState } from "./azure-batch/task"; import { TaskExecutionResult } from "./azure-batch/task-execution-result"; import { FailureInfo, FailureInfoAttributes } from "./failure-info"; diff --git a/desktop/src/app/models/start-task.ts b/desktop/src/app/models/start-task.ts index 9d818e5cb8..395b2ed1a3 100644 --- a/desktop/src/app/models/start-task.ts +++ b/desktop/src/app/models/start-task.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { TaskContainerSettings } from "./container-setup"; import { NameValuePair } from "./name-value-pair"; diff --git a/desktop/src/app/models/storage-account.ts b/desktop/src/app/models/storage-account.ts index 6c72902f1b..da56423dd2 100644 --- a/desktop/src/app/models/storage-account.ts +++ b/desktop/src/app/models/storage-account.ts @@ -1,4 +1,4 @@ -import { ArmRecord, ArmRecordAttributes, Model, Prop, Record } from "@batch-flask/core"; +import { ArmRecord, ArmRecordAttributes, Model, Prop, Record } from "@batch-flask/core/record"; interface PrimaryEndpointsAttributes { blob: string; diff --git a/desktop/src/app/models/storage-keys.ts b/desktop/src/app/models/storage-keys.ts index 5cd7da13ee..18de4f6ade 100644 --- a/desktop/src/app/models/storage-keys.ts +++ b/desktop/src/app/models/storage-keys.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface StorageKeysAttributes { primaryKey: string; diff --git a/desktop/src/app/models/subtask-information.ts b/desktop/src/app/models/subtask-information.ts index 515720838c..5c66894134 100644 --- a/desktop/src/app/models/subtask-information.ts +++ b/desktop/src/app/models/subtask-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { ComputeNodeInformation } from "./azure-batch/compute-node-information"; import { TaskState } from "./azure-batch/task"; import { TaskExecutionResult } from "./azure-batch/task-execution-result"; diff --git a/desktop/src/app/models/task-constraints.ts b/desktop/src/app/models/task-constraints.ts index 47fc390ecd..306965308e 100644 --- a/desktop/src/app/models/task-constraints.ts +++ b/desktop/src/app/models/task-constraints.ts @@ -1,4 +1,4 @@ -import { Model, Prop } from "@batch-flask/core"; +import { Model, Prop } from "@batch-flask/core/record"; import { Duration } from "luxon"; import { Constraints } from "./constraints"; diff --git a/desktop/src/app/models/task-container-execution-information.ts b/desktop/src/app/models/task-container-execution-information.ts index b5784442e2..0b38e618d9 100644 --- a/desktop/src/app/models/task-container-execution-information.ts +++ b/desktop/src/app/models/task-container-execution-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface TaskContainerExecutionInfoAttributes { containerId: string; diff --git a/desktop/src/app/models/task-dependencies.ts b/desktop/src/app/models/task-dependencies.ts index adfeb5fd8e..699996e7e6 100644 --- a/desktop/src/app/models/task-dependencies.ts +++ b/desktop/src/app/models/task-dependencies.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Record } from "@batch-flask/core"; +import { ListProp, Model, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface TaskDependenciesAttributes { diff --git a/desktop/src/app/models/task-execution-information.ts b/desktop/src/app/models/task-execution-information.ts index fa3715a827..61692f158a 100644 --- a/desktop/src/app/models/task-execution-information.ts +++ b/desktop/src/app/models/task-execution-information.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { DateTime } from "luxon"; import { TaskExecutionResult } from "./azure-batch"; import { FailureInfo, FailureInfoAttributes } from "./failure-info"; diff --git a/desktop/src/app/models/task-exit-conditions.ts b/desktop/src/app/models/task-exit-conditions.ts index f148c8928a..8996126e03 100644 --- a/desktop/src/app/models/task-exit-conditions.ts +++ b/desktop/src/app/models/task-exit-conditions.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { JobAction } from "./job-action"; diff --git a/desktop/src/app/models/task-output-file.ts b/desktop/src/app/models/task-output-file.ts index 7b185056de..18ae2c7d83 100644 --- a/desktop/src/app/models/task-output-file.ts +++ b/desktop/src/app/models/task-output-file.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { ComputeNodeIdentityReference } from "./compute-node-identity-reference"; import { List } from "immutable"; import { HttpHeader } from "./http-header"; diff --git a/desktop/src/app/models/task-scheduling-policy.ts b/desktop/src/app/models/task-scheduling-policy.ts index 12e67e71e2..ba7094c32f 100644 --- a/desktop/src/app/models/task-scheduling-policy.ts +++ b/desktop/src/app/models/task-scheduling-policy.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface TaskSchedulingPolicyAttributes { nodeFillType: NodeFillType; diff --git a/desktop/src/app/models/tenant-details.ts b/desktop/src/app/models/tenant-details.ts index 3b51f4c088..c29cc43abd 100644 --- a/desktop/src/app/models/tenant-details.ts +++ b/desktop/src/app/models/tenant-details.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface TenantDetailsAttributes { id: string; diff --git a/desktop/src/app/models/user-account.ts b/desktop/src/app/models/user-account.ts index 8d8f2cf088..0554222fee 100644 --- a/desktop/src/app/models/user-account.ts +++ b/desktop/src/app/models/user-account.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export enum UserAccountElevationLevel { nonadmin = "nonadmin", diff --git a/desktop/src/app/models/user-identity.ts b/desktop/src/app/models/user-identity.ts index c5ed248e45..d2dc28130f 100644 --- a/desktop/src/app/models/user-identity.ts +++ b/desktop/src/app/models/user-identity.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { AutoUserSpecification, AutoUserSpecificationAttributes } from "./auto-user"; export interface UserIdentityAttributes { diff --git a/desktop/src/app/models/virtual-machine-configuration.ts b/desktop/src/app/models/virtual-machine-configuration.ts index a05d9d915c..f6d4d9070b 100644 --- a/desktop/src/app/models/virtual-machine-configuration.ts +++ b/desktop/src/app/models/virtual-machine-configuration.ts @@ -1,4 +1,4 @@ -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; import { DataDisk } from "./azure-batch/data-disk"; import { ContainerConfiguration, ContainerConfigurationAttributes } from "./container-setup"; diff --git a/desktop/src/app/models/virtual-machine-info.ts b/desktop/src/app/models/virtual-machine-info.ts index d782c2ac29..d47f67bdc3 100644 --- a/desktop/src/app/models/virtual-machine-info.ts +++ b/desktop/src/app/models/virtual-machine-info.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { ImageReference } from "./image-reference"; export interface VirtualMachineInfoAttributes { diff --git a/desktop/src/app/models/vm-extension.ts b/desktop/src/app/models/vm-extension.ts index ae7d5d38b2..e051fb6722 100644 --- a/desktop/src/app/models/vm-extension.ts +++ b/desktop/src/app/models/vm-extension.ts @@ -1,5 +1,5 @@ import { JsonObject } from "@azure/bonito-core"; -import { ListProp, Model, Prop, Record } from "@batch-flask/core"; +import { ListProp, Model, Prop, Record } from "@batch-flask/core/record"; import { List } from "immutable"; export interface VMExtensionAttributes { diff --git a/desktop/src/app/models/vm-size.ts b/desktop/src/app/models/vm-size.ts index b9200d31db..cae6dd5ec7 100644 --- a/desktop/src/app/models/vm-size.ts +++ b/desktop/src/app/models/vm-size.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; import { List } from "immutable"; export interface VmSizeAttributes { diff --git a/desktop/src/app/models/windows-configuration.ts b/desktop/src/app/models/windows-configuration.ts index 9efe1b2dcb..ea2b0248ad 100644 --- a/desktop/src/app/models/windows-configuration.ts +++ b/desktop/src/app/models/windows-configuration.ts @@ -1,4 +1,4 @@ -import { Model, Prop, Record } from "@batch-flask/core"; +import { Model, Record, Prop } from "@batch-flask/core/record"; export interface WindowsConfigurationAttributes { enableAutomaticUpdates: boolean; diff --git a/desktop/src/app/models/workspace-definition.ts b/desktop/src/app/models/workspace-definition.ts index 1f4bbf826d..0744e1a697 100644 --- a/desktop/src/app/models/workspace-definition.ts +++ b/desktop/src/app/models/workspace-definition.ts @@ -1,4 +1,4 @@ -import { FeatureDefinition } from "@batch-flask/ui"; +import type { FeatureDefinition } from "@batch-flask/ui"; /** * Define components in the UI that the end-user can choose to show or hide. diff --git a/desktop/src/app/utils/icons.ts b/desktop/src/app/utils/icons.ts index d348f29ed3..c30f186257 100644 --- a/desktop/src/app/utils/icons.ts +++ b/desktop/src/app/utils/icons.ts @@ -1,4 +1,4 @@ -import { Icon, IconSources } from "@batch-flask/ui/icon"; +import { Icon, IconSources } from "@batch-flask/ui/icon/icon.model"; /** * This contains some helper to pick icons to use with bl-icon diff --git a/desktop/src/app/utils/pool-utils.ts b/desktop/src/app/utils/pool-utils.ts index a7598ce773..b446b70dd3 100644 --- a/desktop/src/app/utils/pool-utils.ts +++ b/desktop/src/app/utils/pool-utils.ts @@ -1,4 +1,4 @@ -import { Icon, IconSources } from "@batch-flask/ui/icon"; +import { Icon, IconSources } from "@batch-flask/ui/icon/icon.model"; import { CloudServiceOsFamily, OSType, Pool, PoolAllocationState, VmSize } from "app/models"; import { SoftwarePricing, VMPrices } from "app/services/pricing"; import { List } from "immutable"; diff --git a/desktop/src/common/be-user-configuration.model.ts b/desktop/src/common/be-user-configuration.model.ts index b725ce4307..4777ce2d07 100644 --- a/desktop/src/common/be-user-configuration.model.ts +++ b/desktop/src/common/be-user-configuration.model.ts @@ -1,4 +1,4 @@ -import { BatchFlaskUserConfiguration, EntityConfigurationView } from "@batch-flask/core"; +import type { BatchFlaskUserConfiguration, EntityConfigurationView } from "@batch-flask/core/user-configuration"; /** * General configuration used both on browser and desktop @@ -68,7 +68,7 @@ export const DEFAULT_BE_USER_CONFIGURATION: BEUserDesktopConfiguration = { sources: [], }, entityConfiguration: { - defaultView: EntityConfigurationView.Pretty, + defaultView: 'pretty' as EntityConfigurationView.Pretty, }, subscriptions: { ignore: [], diff --git a/desktop/tsconfig.node.json b/desktop/tsconfig.node.json index 82cd1c2edd..00b731df53 100644 --- a/desktop/tsconfig.node.json +++ b/desktop/tsconfig.node.json @@ -13,6 +13,5 @@ "exclude": [ "node_modules", "**/*.spec.ts", - "./src/client/init-esm.ts", ] } diff --git a/desktop/tsconfig.scripts.json b/desktop/tsconfig.scripts.json index 59a924dcee..9d1f7aae23 100644 --- a/desktop/tsconfig.scripts.json +++ b/desktop/tsconfig.scripts.json @@ -1,12 +1,33 @@ { - "extends": "./tsconfig.json", "compilerOptions": { - "target": "es6", + "target": "ESNext", + "useDefineForClassFields": false, "module": "commonjs", - "esModuleInterop": true + "esModuleInterop": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "paths": { + "*": [ + "src/*", + ], + }, + "types": [ + "node", + ], + "typeRoots": [ + "node_modules/@types" + ], + "baseUrl": ".", + "skipLibCheck": true, + "noEmit": true }, // This is not actually used for building but to let the editor know what files use this config "include": [ - "./scripts/**/*.ts", - ] + "./src/@batch-flask/extensions/string.ts", + "./src/@batch-flask/extensions/array.ts", + ], + "files": [ + "definitions/index.d.ts", + "definitions/missing-defs.d.ts", + ], } From 20a12cc2175ea7ec2c0566e9e45e21d605739b78 Mon Sep 17 00:00:00 2001 From: Hoppe Wang Date: Thu, 5 Sep 2024 15:58:48 -0700 Subject: [PATCH 18/18] merge main --- .vsts/win/ci.yml | 17 +- .../loc/cs/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../loc/de/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/es/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/fr/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../loc/hu/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/id/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/it/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/ja/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/ko/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../loc/nl/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/pl/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../pt-BR/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../pt-PT/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/ru/desktop/i18n/resources.resjson.lcl | 99 +++++- .../loc/sv/desktop/i18n/resources.resjson.lcl | 117 ++++++- .../loc/tr/desktop/i18n/resources.resjson.lcl | 99 +++++- .../desktop/i18n/resources.resjson.lcl | 99 +++++- .../desktop/i18n/resources.resjson.lcl | 99 +++++- desktop/.gitignore | 5 - desktop/config/webpack.config.app-base.mjs | 3 +- desktop/i18n-deprecated/resources.cs.json | 128 ------- desktop/i18n-deprecated/resources.de.json | 109 ------ desktop/i18n-deprecated/resources.es.json | 171 --------- desktop/i18n-deprecated/resources.fr.json | 203 ----------- desktop/i18n-deprecated/resources.hu.json | 21 -- desktop/i18n-deprecated/resources.it.json | 170 --------- desktop/i18n-deprecated/resources.ja.json | 312 ----------------- desktop/i18n-deprecated/resources.ko.json | 282 --------------- desktop/i18n-deprecated/resources.nl.json | 33 -- desktop/i18n-deprecated/resources.pl.json | 143 -------- desktop/i18n-deprecated/resources.pt-BR.json | 311 ----------------- desktop/i18n-deprecated/resources.pt.json | 121 ------- desktop/i18n-deprecated/resources.ru.json | 99 ------ desktop/i18n-deprecated/resources.sv.json | 21 -- desktop/i18n-deprecated/resources.tr.json | 63 ---- .../i18n-deprecated/resources.zh-Hans.json | 307 ----------------- .../i18n-deprecated/resources.zh-Hant.json | 91 ----- desktop/i18n/resources.resjson | 13 +- desktop/package.json | 5 +- desktop/scripts/i18n/create-xliff.ts | 29 -- desktop/scripts/i18n/digest-xliff.ts | 35 -- desktop/scripts/i18n/generate.ts | 25 -- desktop/scripts/i18n/load-dev-translations.ts | 21 -- .../aad/access-token/access-token.model.ts | 5 + .../src/@batch-flask/core/material.module.ts | 2 + desktop/src/@batch-flask/ui/common.i18n.yml | 2 + .../src/@batch-flask/ui/form/form.module.ts | 2 + desktop/src/@batch-flask/ui/form/index.ts | 1 + .../ui/form/slide-toggle/index.ts | 1 + .../slide-toggle.component.spec.ts | 65 ++++ .../slide-toggle/slide-toggle.component.ts | 43 +++ .../ui/form/slide-toggle/slide-toggle.html | 3 + .../ui/form/slide-toggle/slide-toggle.scss | 13 + desktop/src/app/app.component.ts | 50 ++- desktop/src/app/app.layout.html | 4 + desktop/src/app/app.module.ts | 4 + desktop/src/app/app.routes.ts | 7 +- .../auth-overlay/auth-overlay.component.ts | 52 +++ .../auth/auth-overlay/auth-overlay.html | 18 + .../app/components/auth/auth-overlay/index.ts | 1 + desktop/src/app/components/auth/auth.i18n.yml | 8 + .../src/app/components/auth/auth.module.ts | 12 + .../external-browser-auth-toggle.component.ts | 26 ++ .../auth/external-browser-auth-toggle.html | 9 + desktop/src/app/components/auth/index.ts | 3 + .../main-navigation.component.ts | 9 +- .../main-navigation/main-navigation.html | 76 ++-- .../main-navigation/main-navigation.i18n.yml | 1 + .../profile-button.component.spec.ts | 31 +- .../profile-button.component.ts | 26 +- .../profile-button/profile-button.i18n.yml | 3 +- .../settings/settings.component.spec.ts | 21 +- .../components/settings/settings.component.ts | 14 +- .../src/app/components/settings/settings.html | 9 + .../app/components/settings/settings.i18n.yml | 2 + .../tenant-picker/tenant-card.component.ts | 13 +- .../components/tenant-picker/tenant-card.html | 4 +- .../components/tenant-picker/tenant-card.scss | 3 + .../tenant-picker.component.spec.ts | 99 ++++++ .../tenant-picker/tenant-picker.component.ts | 14 +- .../tenant-picker/tenant-picker.html | 5 +- desktop/src/app/components/welcome/index.ts | 2 + .../welcome/welcome.component.spec.ts | 3 + .../components/welcome/welcome.component.ts | 29 ++ .../src/app/components/welcome/welcome.html | 13 + .../app/components/welcome/welcome.module.ts | 13 + .../src/app/services/aad/auth.service.spec.ts | 195 ++++++++++- desktop/src/app/services/aad/auth.service.ts | 102 +++++- .../batch-account/batch-account.service.ts | 5 + .../app/services/batch-explorer.service.ts | 4 - .../app/services/navigator.service.spec.ts | 97 ++++++ desktop/src/app/services/navigator.service.ts | 11 +- desktop/src/app/styles/base/layout.scss | 10 + desktop/src/app/styles/main.scss | 1 + .../app/styles/partials/central-panel.scss | 44 +++ .../core/aad/auth-loopback-client.spec.ts | 166 +++++++++ .../client/core/aad/auth-loopback-client.ts | 195 +++++++++++ desktop/src/client/core/aad/auth-observer.ts | 9 + .../src/client/core/aad/auth-provider.spec.ts | 209 +++++------ desktop/src/client/core/aad/auth-provider.ts | 169 ++++++--- .../client/core/aad/auth/aad.service.spec.ts | 38 +- .../src/client/core/aad/auth/aad.service.ts | 139 ++++---- .../authentication.service.spec.ts | 152 ++++---- .../authentication/authentication.service.ts | 326 ++++++++++++------ .../client/core/batch-explorer-application.ts | 111 +++--- desktop/src/client/core/unique-window.ts | 4 + desktop/src/client/main-window/main-window.ts | 12 +- .../src/common/be-user-configuration.model.ts | 3 + desktop/src/common/constants/constants.ts | 6 +- .../utils/mocks/auth/auth-provider.mock.ts | 32 +- .../test/utils/mocks/windows/windows.mock.ts | 19 +- docs/setup.md | 15 + package-lock.json | 14 +- util/bux/cli.ts | 4 - util/bux/util.ts | 203 +++++++---- util/common-config/package-lock.json | 6 +- 117 files changed, 4129 insertions(+), 3521 deletions(-) delete mode 100644 desktop/i18n-deprecated/resources.cs.json delete mode 100644 desktop/i18n-deprecated/resources.de.json delete mode 100644 desktop/i18n-deprecated/resources.es.json delete mode 100644 desktop/i18n-deprecated/resources.fr.json delete mode 100644 desktop/i18n-deprecated/resources.hu.json delete mode 100644 desktop/i18n-deprecated/resources.it.json delete mode 100644 desktop/i18n-deprecated/resources.ja.json delete mode 100644 desktop/i18n-deprecated/resources.ko.json delete mode 100644 desktop/i18n-deprecated/resources.nl.json delete mode 100644 desktop/i18n-deprecated/resources.pl.json delete mode 100644 desktop/i18n-deprecated/resources.pt-BR.json delete mode 100644 desktop/i18n-deprecated/resources.pt.json delete mode 100644 desktop/i18n-deprecated/resources.ru.json delete mode 100644 desktop/i18n-deprecated/resources.sv.json delete mode 100644 desktop/i18n-deprecated/resources.tr.json delete mode 100644 desktop/i18n-deprecated/resources.zh-Hans.json delete mode 100644 desktop/i18n-deprecated/resources.zh-Hant.json delete mode 100644 desktop/scripts/i18n/create-xliff.ts delete mode 100644 desktop/scripts/i18n/digest-xliff.ts delete mode 100644 desktop/scripts/i18n/generate.ts delete mode 100644 desktop/scripts/i18n/load-dev-translations.ts create mode 100644 desktop/src/@batch-flask/ui/form/slide-toggle/index.ts create mode 100644 desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.spec.ts create mode 100644 desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.ts create mode 100644 desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.html create mode 100644 desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.scss create mode 100644 desktop/src/app/components/auth/auth-overlay/auth-overlay.component.ts create mode 100644 desktop/src/app/components/auth/auth-overlay/auth-overlay.html create mode 100644 desktop/src/app/components/auth/auth-overlay/index.ts create mode 100644 desktop/src/app/components/auth/auth.i18n.yml create mode 100644 desktop/src/app/components/auth/auth.module.ts create mode 100644 desktop/src/app/components/auth/external-browser-auth-toggle.component.ts create mode 100644 desktop/src/app/components/auth/external-browser-auth-toggle.html create mode 100644 desktop/src/app/components/auth/index.ts create mode 100644 desktop/src/app/components/tenant-picker/tenant-picker.component.spec.ts create mode 100644 desktop/src/app/components/welcome/index.ts create mode 100644 desktop/src/app/components/welcome/welcome.component.spec.ts create mode 100644 desktop/src/app/components/welcome/welcome.component.ts create mode 100644 desktop/src/app/components/welcome/welcome.html create mode 100644 desktop/src/app/components/welcome/welcome.module.ts create mode 100644 desktop/src/app/services/navigator.service.spec.ts create mode 100644 desktop/src/app/styles/partials/central-panel.scss create mode 100644 desktop/src/client/core/aad/auth-loopback-client.spec.ts create mode 100644 desktop/src/client/core/aad/auth-loopback-client.ts create mode 100644 desktop/src/client/core/aad/auth-observer.ts diff --git a/.vsts/win/ci.yml b/.vsts/win/ci.yml index 6c4be757c8..fb6e40f97d 100644 --- a/.vsts/win/ci.yml +++ b/.vsts/win/ci.yml @@ -7,14 +7,15 @@ steps: npm run build:package displayName: Build and package - - pwsh: | - . ../.vsts/win/exec.ps1 - $ErrorActionPreference = "Stop" - $env:BE_TEST_AAD_USER_EMAIL = "$(uiTestingAccountEmail)" - $env:BE_TEST_AAD_USER_PASSWORD = "$(uiTestingAccountPassword)" - npm run test-e2e - workingDirectory: desktop - displayName: End to end tests + # Disabling end-to-end tests in CI pipeline + # - pwsh: | + # . ../.vsts/win/exec.ps1 + # $ErrorActionPreference = "Stop" + # $env:BE_TEST_AAD_USER_EMAIL = "$(uiTestingAccountEmail)" + # $env:BE_TEST_AAD_USER_PASSWORD = "$(uiTestingAccountPassword)" + # npm run test-e2e + # workingDirectory: desktop + # displayName: End to end tests - template: ./security-analysis.yml diff --git a/Localize/loc/cs/desktop/i18n/resources.resjson.lcl b/Localize/loc/cs/desktop/i18n/resources.resjson.lcl index f10e985d8d..26ca653541 100644 --- a/Localize/loc/cs/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/cs/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/de/desktop/i18n/resources.resjson.lcl b/Localize/loc/de/desktop/i18n/resources.resjson.lcl index 4384001db5..718cfc5f19 100644 --- a/Localize/loc/de/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/de/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/es/desktop/i18n/resources.resjson.lcl b/Localize/loc/es/desktop/i18n/resources.resjson.lcl index b49778ba5a..a4e2a33f66 100644 --- a/Localize/loc/es/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/es/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/fr/desktop/i18n/resources.resjson.lcl b/Localize/loc/fr/desktop/i18n/resources.resjson.lcl index 625613355e..c704403878 100644 --- a/Localize/loc/fr/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/fr/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/hu/desktop/i18n/resources.resjson.lcl b/Localize/loc/hu/desktop/i18n/resources.resjson.lcl index de4d25992a..69e45baee5 100644 --- a/Localize/loc/hu/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/hu/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/id/desktop/i18n/resources.resjson.lcl b/Localize/loc/id/desktop/i18n/resources.resjson.lcl index 4f756dac37..d7417ae55b 100644 --- a/Localize/loc/id/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/id/desktop/i18n/resources.resjson.lcl @@ -471,6 +471,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -759,6 +795,15 @@ + + + + + + + + + @@ -1002,6 +1047,12 @@ + + + + + + @@ -2316,6 +2367,15 @@ + + + + + + + + + @@ -3234,15 +3294,6 @@ - - - - - - - - - @@ -3279,6 +3330,24 @@ + + + + + + + + + + + + + + + + + + @@ -3594,6 +3663,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/it/desktop/i18n/resources.resjson.lcl b/Localize/loc/it/desktop/i18n/resources.resjson.lcl index aaf7ee24fd..62064b2fed 100644 --- a/Localize/loc/it/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/it/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/ja/desktop/i18n/resources.resjson.lcl b/Localize/loc/ja/desktop/i18n/resources.resjson.lcl index 4545832451..bfe9ab7664 100644 --- a/Localize/loc/ja/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/ja/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/ko/desktop/i18n/resources.resjson.lcl b/Localize/loc/ko/desktop/i18n/resources.resjson.lcl index 412943fc0a..449547502e 100644 --- a/Localize/loc/ko/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/ko/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/nl/desktop/i18n/resources.resjson.lcl b/Localize/loc/nl/desktop/i18n/resources.resjson.lcl index d57acd13b7..2c99a7f83b 100644 --- a/Localize/loc/nl/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/nl/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/pl/desktop/i18n/resources.resjson.lcl b/Localize/loc/pl/desktop/i18n/resources.resjson.lcl index 956db0d5fd..77b40acab7 100644 --- a/Localize/loc/pl/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/pl/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/pt-BR/desktop/i18n/resources.resjson.lcl b/Localize/loc/pt-BR/desktop/i18n/resources.resjson.lcl index 8b3da84bcd..c7e696ab27 100644 --- a/Localize/loc/pt-BR/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/pt-BR/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/pt-PT/desktop/i18n/resources.resjson.lcl b/Localize/loc/pt-PT/desktop/i18n/resources.resjson.lcl index a2ce69f3f1..619345aadf 100644 --- a/Localize/loc/pt-PT/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/pt-PT/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/ru/desktop/i18n/resources.resjson.lcl b/Localize/loc/ru/desktop/i18n/resources.resjson.lcl index 7c2ac60912..faa7def9d6 100644 --- a/Localize/loc/ru/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/ru/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/sv/desktop/i18n/resources.resjson.lcl b/Localize/loc/sv/desktop/i18n/resources.resjson.lcl index 6363eb16be..562d4df08e 100644 --- a/Localize/loc/sv/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/sv/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +805,15 @@ + + + + + + + + + @@ -1003,6 +1057,15 @@ + + + + + + + + + @@ -2317,6 +2380,15 @@ + + + + + + + + + @@ -3235,15 +3307,6 @@ - - - - - - - - - @@ -3280,6 +3343,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3676,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Localize/loc/tr/desktop/i18n/resources.resjson.lcl b/Localize/loc/tr/desktop/i18n/resources.resjson.lcl index 19a107bc9b..a84ad62ef8 100644 --- a/Localize/loc/tr/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/tr/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/zh-Hans/desktop/i18n/resources.resjson.lcl b/Localize/loc/zh-Hans/desktop/i18n/resources.resjson.lcl index 4fa4c7c875..44b90a68df 100644 --- a/Localize/loc/zh-Hans/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/zh-Hans/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/Localize/loc/zh-Hant/desktop/i18n/resources.resjson.lcl b/Localize/loc/zh-Hant/desktop/i18n/resources.resjson.lcl index 07a76d282f..c2f96a8dd0 100644 --- a/Localize/loc/zh-Hant/desktop/i18n/resources.resjson.lcl +++ b/Localize/loc/zh-Hant/desktop/i18n/resources.resjson.lcl @@ -472,6 +472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760,6 +796,15 @@ + + + + + + + + + @@ -1003,6 +1048,12 @@ + + + + + + @@ -2317,6 +2368,15 @@ + + + + + + + + + @@ -3235,15 +3295,6 @@ - - - - - - - - - @@ -3280,6 +3331,24 @@ + + + + + + + + + + + + + + + + + + @@ -3595,6 +3664,18 @@ + + + + + + + + + + + + diff --git a/desktop/.gitignore b/desktop/.gitignore index 26f6f36d64..00a3cb5bde 100644 --- a/desktop/.gitignore +++ b/desktop/.gitignore @@ -10,8 +10,3 @@ logs/ coverage.lcov documentation/ .python-version - -# Ignore the english compiled file -i18n-deprecated/resources.en.json -i18n-deprecated/xliff/ -i18n-deprecated/xliffs/ diff --git a/desktop/config/webpack.config.app-base.mjs b/desktop/config/webpack.config.app-base.mjs index b625e60378..72a6be633a 100644 --- a/desktop/config/webpack.config.app-base.mjs +++ b/desktop/config/webpack.config.app-base.mjs @@ -36,7 +36,8 @@ const appBaseConfig = merge(config, { }), new CopyWebpackPlugin({ patterns: [ - { context: "src/client/splash-screen", from: "**/*", to: "client/splash-screen" }, + { context: "src/client/splash-screen", from: "**/*.(html|svg)", to: "client/splash-screen" }, + { context: "src/client/recover-window", from: "**/*.(html|svg)", to: "client/recover-window" }, { context: "src/client/proxy", from: "**/*", to: "client/proxy" }, { context: "src/client/resources", from: "**/*", to: "client/resources" }, { context: "src/app/assets", from: "**/*", to: "assets" }, diff --git a/desktop/i18n-deprecated/resources.cs.json b/desktop/i18n-deprecated/resources.cs.json deleted file mode 100644 index 14a08a085d..0000000000 --- a/desktop/i18n-deprecated/resources.cs.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "account-details.resources": "Prostředky", - "account-summary-card.url": "Adresa URL", - "add-certificate-form.certificate.select": "Vyberte certifikát", - "add-task-form.action": "Přidat", - "add-task-form.subtitle": "Přidat úkol do vybrané úlohy", - "add-task-form.title": "Přidat úlohu", - "common.apply": "Použít", - "common.configuration": "CONFIGURATION", - "common.loading": "Načítání", - "common.no": "Ne", - "common.none": "žádné", - "common.yes": "Ano", - "duration-picker.unit.custom": "Vlastní (formát ISO)", - "duration-picker.unit.days": "Dny", - "duration-picker.unit.hours": "Hodiny", - "duration-picker.unit.minutes": "Minuty", - "duration-picker.unit.seconds": "Sekundy", - "duration-picker.unit.unlimited": "Neomezené", - "entity-command.confirm.multiple.title": "Opravdu chcete {action} tyto položky {type} (počet: {count})?", - "entity-command.confirm.single.description": "Chystáte se {action} položku {entityId}.", - "entity-command.confirm.single.title": "Opravdu chcete {action} tuto položku {type}?", - "file-explorer.path": "PATH", - "form-footer.buttons.cancel": "Zrušit", - "form-footer.buttons.save": "Uložit", - "job-progress-status.inaccurate": "Počet úkolů nemusí být v reálném čase přesný.", - "main-menu.help.label": "Nápověda", - "main-navigation.certificates": "Certifikáty", - "main-navigation.dashboard": "Pomlčka", - "main-navigation.data": "Data", - "main-navigation.gallery": "Galerie", - "main-navigation.jobs": "Úlohy", - "main-navigation.jobschedules": "Plány úlohy", - "main-navigation.packages": "Balíčky", - "main-navigation.pools": "Fondy", - "main-navigation.profile": "Profil", - "models.pool": "Fond", - "models.pools": "Fondy", - "models.storageAccount": "Účet úložiště", - "node-configuration.allocation-time": "Čas přidělení", - "node-configuration.end-time": "Koncový čas", - "node-configuration.exit-code": "Ukončovací kód", - "node-configuration.external-ip": "Externí IP", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "Interní IP", - "node-configuration.is-dedicated": "Je vyhrazeno", - "node-configuration.last-boot-time": "Poslední čas spuštění", - "node-configuration.node-agent-version": "Verze agenta uzlu", - "node-configuration.node-size": "Velikost uzlu", - "node-configuration.retry-count": "Počet opakování", - "node-configuration.run-time": "Doba provádění", - "node-configuration.running-tasks-count": "Spuštěné úlohy", - "node-configuration.scheduling-state": "Stav plánování", - "node-configuration.start-task-completed": "Dokončeno v", - "node-configuration.start-task-execution": "Spustit provádění úlohy", - "node-configuration.start-task-not-started": "Spustit provádění úlohy", - "node-configuration.start-task-running": "Spuštění pro", - "node-configuration.start-time": "Čas zahájení", - "node-configuration.state": "Stav", - "node-configuration.state-transition-time": "Čas změny stavu", - "node-configuration.total-tasks-run": "Celkový běh úlohy", - "node-configuration.total-tasks-succeeded": "Celkem úspěšných úloh", - "node-configuration.url": "Adresa URL", - "partial-sort-warning.load-all": "Načíst vše (Může to trvat dlouho.)", - "partial-sort-warning.loading-all": "Načítají se všechny entity. Počkejte prosím.", - "partial-sort-warning.manual-update": "Seznam se nebude aktualizovat automaticky při řazení (z důvodu výkonu).", - "partial-sort-warning.message": "Všechny entity nebyly zavedeny – zde se zobrazuje částečné řazení.", - "partial-sort-warning.update": "Aktualizovat", - "pool-picker.reset": "Obnovit", - "profile-button.about": "O aplikaci", - "profile-button.logout": "Odhlášení", - "profile-button.profile": "Profil", - "profile-button.report": "Nahlásit chybu nebo žádost o funkci", - "profile-button.settings": "Nastavení", - "profile-button.thirdPartyNotices": "Oznámení týkající se třetích stran", - "profile-button.viewLogs": "Zobrazit protokoly", - "profile-button.viewTheme": "Zobrazit barvy motivu", - "rerun-task-form.action": "Spustit znovu", - "rerun-task-form.subtitle": "Tímto se úkol odstraní a vytvoří se nový se stejným ID.", - "rerun-task-form.title": "Opakovat úlohu", - "resource-permission-button.none": "žádné", - "resource-permission-button.permission": "Oprávnění", - "settings.general": "Obecné", - "settings.saved": "Uloženo", - "settings.title": "Nastavení", - "task-commands.delete": "Odstranit", - "task-configuration.affinityId.label": "ID spřažení", - "task-configuration.applicationPackages.application": "Aplikace", - "task-configuration.applicationPackages.label": "Balíčky aplikací", - "task-configuration.applicationPackages.none": "Tato úloha neobsahuje žádné odkazy na balíčky aplikací.", - "task-configuration.applicationPackages.summary": "Odkaz na balíček aplikace {count}", - "task-configuration.applicationPackages.version": "VERSION", - "task-configuration.commandLine.label": "Příkazový řádek", - "task-configuration.computeNode": "Výpočetní uzel", - "task-configuration.creationTime.label": "Čas vytvoření", - "task-configuration.displayName.label": "Zobrazený název", - "task-configuration.exitConditions.default": "Výchozí", - "task-configuration.exitConditions.label": "Podmínky ukončení", - "task-configuration.exitConditions.noOpExitCodes": "Ukončení kódy, které nedělají nic", - "task-configuration.exitConditions.onSchedulingError": "Při chybě plánování", - "task-configuration.exitConditions.terminateJobExitCodes": "Kódy ukončení, které ukončí úlohu", - "task-configuration.general": "Obecné", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Naposledy upraveno", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "Koordinační příkazový řádek", - "task-configuration.multiInstanceSettings.label": "Nastavení více instancí", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Počet instancí", - "task-configuration.nodeId.label": "ID uzlu", - "task-configuration.nodeUrl.label": "Adresa URL uzlu", - "task-configuration.outputFiles.destination": "Cíl", - "task-configuration.outputFiles.label": "Výstupní soubory", - "task-configuration.outputFiles.pattern": "Vzorek", - "task-configuration.outputFiles.uploadWhen": "Nahrát když", - "task-configuration.pool.label": "Fond", - "task-configuration.previousState.label": "Předchozí stav", - "task-configuration.previousStateTransitionTime.label": "Čas přechodu z předchozího stavu", - "task-configuration.state.label": "Stav", - "task-configuration.stateTransitionTime.label": "Čas přechodu do stavu", - "task-configuration.taskRootDir.label": "Kořenový adresář úlohy", - "task-configuration.taskRootDirUrl.label": "Adresa URL kořenového adresáře úlohy", - "task-configuration.userIdentity.label": "Identita uživatele", - "task-dependency-browser.no-dependency": "Tato úloha není závislá na jiných úlohách.", - "task-resource-files.fileMode": "Režim souboru", - "task-resource-files.filePath": "Cesta k souboru uzlu", - "task-resource-files.none": "Tato úloha neobsahuje žádné soubory prostředků.", - "user-account-picker.password": "Heslo", - "user-account-picker.username": "Uživatelské jméno" -} \ No newline at end of file diff --git a/desktop/i18n-deprecated/resources.de.json b/desktop/i18n-deprecated/resources.de.json deleted file mode 100644 index d4a0e89acd..0000000000 --- a/desktop/i18n-deprecated/resources.de.json +++ /dev/null @@ -1,109 +0,0 @@ -{ - "account-cost-card.subtitle": "Zeigt die gemeldeten Vorsteuerkosten. Beachten Sie, dass diese möglicherweise unvollständig sind.", - "account-details.monitoring": "Überwachung", - "account-details.resources": "Ressourcen", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.label": "Zertifikat", - "add-certificate-form.certificate.required": "Bitte wählen Sie eine gültige Zertifikatdatei aus.", - "add-certificate-form.certificate.select": "Zertifikat auswählen", - "add-certificate-form.title": "Zertifikat erstellen", - "add-task-form.action": "Hinzufügen", - "common.apply": "Anwenden", - "common.back": "zurück", - "common.configuration": "CONFIGURATION", - "common.confirm": "Bestätigen", - "common.loading": "Laden", - "common.no": "Nein", - "common.none": "NONE", - "common.refresh": "Aktualisieren", - "common.required": "Erforderlich", - "common.updated": "Updated", - "common.yes": "Ja", - "create-new-aad-app.create": "Erstellen", - "sig-image-picker.sigImage.label": "Bild", - "datetime-picker.date": "Date", - "datetime-picker.time": "Zeit", - "duration-picker.unit.custom": "Benutzerdefiniert (ISO-Format)", - "duration-picker.unit.days": "Tage", - "duration-picker.unit.hours": "Stunden", - "duration-picker.unit.label": "Einheit", - "duration-picker.unit.minutes": "Minuten", - "duration-picker.unit.seconds": "Sekunden", - "duration-picker.unit.unlimited": "Unbegrenzt", - "edit-certificate-references-form.updated": "Die Zertifikate für {poolId} wurden aktualisiert.", - "editable-table.deleteRow": "Zeile löschen", - "file-explorer.path": "Pfad", - "form-footer.buttons.cancel": "Abbrechen", - "form-footer.buttons.save": "Speichern", - "form-footer.buttons.select": "Auswählen", - "gallery.actions": "Aktionen", - "job-state.completed.allTasksCompleted.message": "Wenn alle Aufgaben abgeschlossen sind, ist der Job erfolgreich", - "job-state.disabling.message": "Job wird gerade deaktiviert", - "main-menu.help.label": "Hilfe", - "main-menu.help.privacyStatement": "Datenschutzbestimmungen", - "main-navigation.certificates": "Zertifikate", - "main-navigation.dashboard": "Bindestrich", - "main-navigation.data": "Daten", - "main-navigation.gallery": "Galerie", - "main-navigation.jobs": "Aufträge", - "main-navigation.jobschedules": "Auftragszeitpläne", - "main-navigation.packages": "Pakete", - "main-navigation.pools": "Pools", - "main-navigation.profile": "Profil", - "models.container": "Container", - "models.node": "Knoten", - "models.pools": "Pools", - "models.storageAccount": "Speicherkonto", - "node-configuration.end-time": "Endzeit", - "node-configuration.id": "ID", - "node-configuration.start-time": "Startzeit", - "node-configuration.state": "Status", - "node-configuration.url": "URL", - "partial-sort-warning.update": "Aktualisieren", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "Datenträger-E/A", - "pool-graphs.last": "Last", - "pool-graphs.memory": "Speicher", - "pool-graphs.network": "Netzwerk", - "pool-graphs.timespan.1h": "1 Stunde", - "pool-graphs.timespan.24h": "24 Stunden", - "pool-os-picker.category.container": "Container", - "pool-os-picker.category.distributions": "Distributionen", - "pool-os-picker.category.rendering": "Grafik und Rendering", - "pool-picker.reset": "Zurücksetzen", - "pool-scale-picker.type.autoscale": "Automatische Skalierung", - "profile-button.about": "Info", - "profile-button.profile": "Profil", - "profile-button.settings": "Einstellungen", - "profile-button.viewLogs": "Logs anzeigen", - "programmatic-usage.authenticationType": "Authentifizierungstyp", - "programmatic-usage.credentials": "Anmeldeinformationen", - "rerun-task-form.action": "Erneut ausführen", - "resource-permission-button.none": "NONE", - "resource-permission-button.permission": "Berechtigung", - "settings.general": "Allgemein", - "settings.saved": "Gespeichert", - "settings.title": "Einstellungen", - "task-commands.delete": "Löschen", - "task-commands.terminate": "Beenden", - "task-configuration.applicationPackages.application": "Anwendung", - "task-configuration.applicationPackages.version": "VERSION", - "task-configuration.commandLine.label": "Befehlszeile", - "task-configuration.creationTime.label": "Erstellungszeit", - "task-configuration.displayName.label": "Anzeigename", - "task-configuration.exitConditions.default": "Standard", - "task-configuration.exitConditions.fileUploadError": "Fehler beim Upload der Datei", - "task-configuration.general": "Allgemein", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Zuletzt geändert", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "Koordinationsbefehlzeile", - "task-configuration.nodeId.label": "Knoten-ID", - "task-configuration.outputFiles.destination": "Ziel", - "task-configuration.outputFiles.pattern": "Muster", - "task-configuration.state.label": "Status", - "task-configuration.userIdentity.label": "Benutzeridentität", - "user-account-picker.password": "Kennwort", - "user-account-picker.runAsAdmin": "Als Admin ausführen", - "user-account-picker.username": "Benutzername", - "virtual-network-picker.subnet": "Subnetz" -} diff --git a/desktop/i18n-deprecated/resources.es.json b/desktop/i18n-deprecated/resources.es.json deleted file mode 100644 index 68677fb493..0000000000 --- a/desktop/i18n-deprecated/resources.es.json +++ /dev/null @@ -1,171 +0,0 @@ -{ - "account-cost-card.subtitle": "Esto está mostrando el informe de costoregistrado antes de impuestos . Tenga en cuenta que el costo podría ser parcial.", - "account-cost-card.title": "Costo diario", - "account-cost-card.unsupportedSubscription": "No puede ver el costo de este suscripción (No soportado)", - "account-details.resources": "Recursos", - "account-monitoring.notARM": "El monitoreo de cuenta está habilitado únicamente para cuentas ARM batch.", - "account-summary-card.resourceGroup": "Grupo de recursos", - "account-summary-card.subscription": "Suscripción", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "Seleccione un certificado (.pfx o .cer) que cargar", - "add-certificate-form.certificate.invalid": "El certificado debe ser un archivo CER o PFX válido", - "add-certificate-form.certificate.label": "Certificado", - "add-certificate-form.certificate.required": "Por favor, seleccione un archivo de certificado válido", - "add-certificate-form.certificate.select": "Selección de certificado", - "add-certificate-form.password.label": "Contraseña del certificado", - "add-certificate-form.title": "Crear certificado", - "add-task-form.action": "Agregar", - "add-task-form.subtitle": "Añadir una tarea al trabajo seleccionado", - "add-task-form.title": "Añadir tarea", - "batch-account-create.accountName.maxlength": "El Nombre de cuenta tiene una longitud máxima de 64 caracteres", - "batch-account-create.accountName.required": "Nombre de cuenta es un campo obligatorio", - "batch-account-create.location.reachedQuota": "Ya ha alcanzado el cupo de {used} de {quota} cuentas para la suscripción «{subscription}» en esta ubicación. Puede solicitar un aumento al cupo de la cuenta, crear la cuenta en otra ubicación, o bien, crear la cuenta en otra suscripción.", - "batch-account-create.location.required": "Ubicación es un campo obligatorio", - "batch-account-create.storageAccount.missingSubscription": "Especifique la suscripción y la ubicación antes de escoger una cuenta de almacenamiento.", - "blob-container-picker.loading": "Cargando los contenedores", - "browse-layout.openedAdvancedFilter": "Abrió la hoja filtro avanzado", - "certificate-references-picker.duplicate": "No puede referenciar dos veces el mismo certificado {thumbprint}", - "certificate-references-picker.noCertificates": "No se encontró certificado(s) para esta cuenta de batch, por favor cargue su certificado(s) primero.", - "common.apply": "Aplicar", - "common.back": "Atrás", - "common.configuration": "CONFIGURACIÓN", - "common.confirm": "Confirmar", - "common.loading": "Cargando", - "common.no": "No", - "common.none": "NONE", - "common.refresh": "Actualizar", - "common.required": "Requerido", - "common.updated": "Actualizado", - "common.yes": "Sí", - "create-new-aad-app.create": "Crear", - "create-new-aad-app.title": "Crear una aplicación nueva", - "sig-image-picker.sigImage.label": "Imagen", - "datetime-picker.currentTimeZone": "Zona horaria actual", - "datetime-picker.date": "Fecha", - "datetime-picker.time": "Tiempo", - "duration-picker.unit.custom": "Personalizado (formato ISO)", - "duration-picker.unit.days": "Días", - "duration-picker.unit.hours": "Horas", - "duration-picker.unit.minutes": "Minutos", - "duration-picker.unit.seconds": "Segundos", - "duration-picker.unit.unlimited": "Sin límite", - "editable-table.deleteRow": "Eliminar fila", - "entity-command.confirm.multiple.title": "¿Confirma que desea {action} estos {count} {type}?", - "entity-configuration.viewAsJSON": "Ver como JSON", - "file-explorer.collapseAll": "Contraer todo", - "file-explorer.noFiles": "No hay archivos", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "No se puede encontrar este archivo. Compruebe la ruta de acceso.", - "file-viewer-container.notFound": "El archivo {filename} no existe.", - "file-viewer-container.unkownFileType": "Este archivo tiene una extensión desconocida. ¿Desea abrirlo?", - "form-footer.buttons.andClose": "{action} y cerrar", - "form-footer.buttons.cancel": "Cancelar", - "form-footer.buttons.normalForm": "Cambiar a la forma clásica", - "form-footer.buttons.save": "Guardar", - "form-footer.buttons.select": "Seleccionar", - "gallery.actions": "Acciones", - "gallery.title": "Aplicaciones de Galería", - "job-state.completed.jmcomplete.message": "Trabajo completado correctamente al finalizar la tarea del administrador", - "job-state.completed.message": "El trabajo se ha completado. No se aceptará ninguna tarea más.", - "job-state.completed.taskfailed.message": "Trabajo completado pero con un fallo por fallo de una tarea.", - "job-state.deleting.message": "El trabajo está eliminándose", - "job-state.disabled.message": "El trabajo está desactivado. No se ejecutará ninguna tarea.", - "job-state.enabling.message": "El trabajo ha regresado del estado desactivado", - "location-picker.noLocationInSubscription": "No hay ubicaciones disponibles en la suscripción «{name}»", - "main-menu.help.label": "Ayuda", - "main-menu.help.privacyStatement": "Declaración de privacidad", - "main-menu.help.reportIssue": "Comunicar un problema", - "main-menu.help.viewLicense": "Ver licencia", - "main-navigation.certificates": "Certificados", - "main-navigation.dashboard": "Tablero", - "main-navigation.data": "Datos", - "main-navigation.gallery": "Galería", - "main-navigation.jobs": "Trabajos", - "main-navigation.jobschedules": "Programas de trabajos", - "main-navigation.packages": "Paquetes", - "main-navigation.pools": "Grupos", - "main-navigation.profile": "Perfil", - "models.container": "Contenedor", - "models.node": "Nodo", - "models.nodes": "Nodos", - "models.pools": "Grupos", - "models.storageAccount": "Cuenta de almacenamiento", - "node-configuration.end-time": "Hora de finalización", - "node-configuration.id": "ID.", - "node-configuration.run-time": "Tiempo de ejecución", - "node-configuration.running-tasks-count": "Tareas en ejecución", - "node-configuration.scheduling-state": "Estado de Programación", - "node-configuration.start-task-execution": "Iniciar ejecución de tarea", - "node-configuration.start-task-not-started": "Iniciar ejecución de tarea", - "node-configuration.start-time": "Hora de inicio", - "node-configuration.state": "Estado", - "node-configuration.state-transition-time": "Tiempo de transición de estado", - "node-configuration.total-tasks-run": "Ejecución de tarea completa", - "node-configuration.url": "URL", - "partial-sort-warning.loading-all": "Cargando todas las entidades. Espere.", - "partial-sort-warning.update": "Actualizar", - "pool-commands.resize": "Redimiensionar", - "pool-details.graphs": "Gráficos", - "pool-details.openInNewWindow": "Abrir en una ventana nueva", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "E/S del disco", - "pool-graphs.diskUsage": "Uso de disco", - "pool-graphs.last": "Último", - "pool-graphs.memory": "Memoria", - "pool-graphs.network": "Red", - "pool-graphs.notEnabled": "CPU, memoria, disco, etc.", - "pool-graphs.timespan.1h": "1 hora", - "pool-graphs.timespan.label": "Gráficos de intervalo de tiempo", - "pool-os-picker.category.distributions": "Distribuciones", - "pool-picker.filterByID": "Buscar por id.", - "pool-picker.reset": "Restablecer", - "pool-scale-picker.evaluationInterval.label": "Intervalo de evaluación de fórmulas", - "pool-scale-picker.resizeTimeout.label": "Cambiar el tamaño de tiempo de espera", - "pool-scale-picker.type.label": "Tipo de escala", - "profile-button.about": "Acerca de", - "profile-button.profile": "Perfil", - "profile-button.report": "Informar de un error o solicitar una característica", - "profile-button.settings": "Configuración", - "profile-button.viewLogs": "Ver registros", - "profile-button.viewTheme": "Ver colores del tema", - "programmatic-usage.authenticationType": "Tipo de autenticación", - "programmatic-usage.credentials": "Credenciales", - "rerun-task-form.action": "Volver a ejecutar", - "rerun-task-form.title": "Volver a ejecutar tarea", - "resource-permission-button.giveRole": "Papel de dar {rol}", - "resource-permission-button.none": "NONE", - "resource-permission-button.permission": "Permiso", - "resource-permission-button.removeAccess": "Eliminar el acceso", - "resourcefile-picker.blobPrefix": "Prefijo BLOB", - "settings.general": "General", - "settings.title": "Configuración", - "task-commands.delete": "Eliminar", - "task-commands.terminate": "Terminar", - "task-configuration.affinityId.label": "Id de afinidad", - "task-configuration.applicationPackages.application": "Aplicación", - "task-configuration.applicationPackages.summary": "{count} referencias al paquete de aplicación", - "task-configuration.applicationPackages.version": "Versión", - "task-configuration.commandLine.label": "Línea de comandos", - "task-configuration.computeNode": "Nodo de computación", - "task-configuration.displayName.label": "Nombre para mostrar", - "task-configuration.exitConditions.default": "Predeterminado", - "task-configuration.exitConditions.noOpExitCodes": "Códigos de salida que no hacen nada", - "task-configuration.general": "General", - "task-configuration.id.label": "ID.", - "task-configuration.lastModified.label": "Última modificación", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "Línea de comandos de coordinación", - "task-configuration.outputFiles.destination": "Destino", - "task-configuration.outputFiles.pattern": "Patrón", - "task-configuration.outputFiles.uploadWhen": "Subir cuando", - "task-configuration.state.label": "Estado", - "task-configuration.taskRootDir.label": "Directorio raíz de la tarea", - "task-node-info.nodeNotFound": "Ya no existe el nodo Compute", - "task-resource-files.fileMode": "Modo de archivo", - "task-resource-files.httpUrl": "Url http", - "time-range-picker.customRange": "Rango personalizado", - "time-range-picker.timeRange": "Rango de tiempo", - "user-account-picker.loginMode": "Modo de conexión", - "user-account-picker.password": "Contraseña", - "user-account-picker.username": "Nombre de usuario", - "user-account-picker.windowsConfiguration": "Configuración específica de Windows" -} diff --git a/desktop/i18n-deprecated/resources.fr.json b/desktop/i18n-deprecated/resources.fr.json deleted file mode 100644 index 4e23ffe983..0000000000 --- a/desktop/i18n-deprecated/resources.fr.json +++ /dev/null @@ -1,203 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "Description (facultative)", - "aad-app-secret-picker.secret.label": "Secret. Il sera généré automatiquement s'il n'est pas fourni", - "account-cost-card.title": "Coût journalier", - "account-cost-card.total": "Total pour la période de facturation", - "account-cost-card.unsupportedSubscription": "Impossible d’afficher le coût pour cet abonnement(Non supporté)", - "account-cost-card.usingLocalAccount": "Le coût ne peut pas être obtenu avec le compte local de lot", - "account-details.monitoring": "Monitorage", - "account-details.resources": "Ressources", - "account-summary-card.resourceGroup": "Groupe de ressources", - "account-summary-card.subscription": "Abonnement", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "Sélectionnez un certificat (pfx ou cer) à télécharger", - "add-certificate-form.certificate.label": "Certificat", - "add-certificate-form.certificate.required": "Veuillez sélectionner un fichier de certificat valide", - "add-certificate-form.certificate.select": "Sélectionner un certificat", - "add-certificate-form.password.label": "Mot de passe de certificat", - "add-certificate-form.title": "Créer un certificat", - "add-task-form.action": "ajouter", - "add-task-form.subtitle": "Ajouter une tâche au travail sélectionné", - "add-task-form.title": "Ajouter une tâche", - "batch-account-create.accountName.maxlength": "Le nom du compte a une longueur maximale de 64 caractères", - "batch-account-create.accountName.required": "Le nom de compte est un champ obligatoire", - "batch-account-create.location.required": "L'emplacement est un champ obligatoire", - "batch-account-create.subscription.required": "L’abonnement est un champ obligatoire", - "blob-container-picker.loading": "Conteneurs en cours de chargement", - "browse-layout.openedAdvancedFilter": "La lame de filtre avancé est ouvert", - "common.apply": "Appliquer", - "common.back": "Précédent", - "common.configuration": "CONFIGURATION", - "common.confirm": "Confirmer", - "common.loading": "Chargement", - "common.no": "Non", - "common.none": "Aucun(e)", - "common.rebootAll": "Redémarrer tout", - "common.refresh": "Actualiser", - "common.refreshing": "Actualisation", - "common.required": "Requis", - "common.updated": "Mise à jour terminée", - "common.yes": "Oui", - "create-new-aad-app.create": "Créer", - "create-new-aad-app.secret.label": "Secret", - "create-new-aad-app.title": "Créer une nouvelle application", - "sig-image-picker.sigImage.label": "Image", - "sig-image-picker.errorLoading": "Le serveur a rencontré une erreur lors du chargement des images personnalisées, veuillez réessayer ultérieurement.", - "sig-image-picker.noSigImageAvailable": "Aucune image personnalisée dans la région pour ce compte", - "sig-image-picker.nodeAgentSku.label": "Agent de nœud", - "datetime-picker.currentTimeZone": "Fuseau horaire actuel", - "datetime-picker.date": "Date", - "datetime-picker.time": "Heure", - "duration-picker.unit.custom": "Personnalisé (format ISO)", - "duration-picker.unit.days": "Jours", - "duration-picker.unit.hours": "Heures", - "duration-picker.unit.label": "Unité", - "duration-picker.unit.minutes": "Minutes", - "duration-picker.unit.seconds": "Secondes", - "duration-picker.unit.unlimited": "Illimité", - "edit-app-package-form.title": "Modifier les références de package pour l'application pool {poolId}", - "edit-app-package-form.updated": "Les packages d’application pour {poolId} ont été mis à jour", - "editable-table.deleteRow": "Supprimer la ligne", - "entity-command.confirm.multiple.title": "Voulez-vous vraiment {action} ces {count} {type} ?", - "entity-command.confirm.single.title": "Êtes-vous sûr de vouloir {action} ce {type} ?", - "entity-configuration.viewClassic": "Vue classique", - "file-explorer.noFiles": "Aucun fichier", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "Impossible de trouver ce fichier. Vérifiez le chemin d’accès.", - "file-group-picker.create": "Créer un nouveau groupe de fichiers", - "file-group-picker.warning": "Ce groupe de fichier ne semble pas exister. Il sera créé pour vous quand le travail sera soumis.", - "form-footer.buttons.cancel": "Annuler", - "form-footer.buttons.jsonEditor": "Basculer vers l’éditeur JSON", - "form-footer.buttons.normalForm": "Basculer sur la forme classique", - "form-footer.buttons.save": "Enregistrer", - "form-footer.buttons.select": "Sélectionner", - "gallery.actions": "Actions", - "gallery.myLibrary": "Ma bibliothèque", - "gallery.recentTemplates": "Modèles récents", - "job-progress-status.inaccurate": "Le nombre de tâches peut ne pas être exact en temps réel", - "job-state.active.message": "Le travail est en cours d’exécution. La tâche peut être planifiée.", - "job-state.completed.taskfailed.message": "Travail terminé avec un échec car une des tâches a échoué.", - "job-state.completed.timeout.message": "Le travail a expiré. Le travail a fonctionné plus longtemps que la limite fournie.", - "job-state.deleting.message": "Le travail est en cours de suppression", - "job-state.disabling.message": "Le travail est sur le point d'être désactivé", - "job-state.terminating.message": "Le travail se termine", - "main-menu.help.label": "Aide", - "main-menu.help.privacyStatement": "Déclaration de confidentialité", - "main-menu.help.viewLicense": "Voir la licence", - "main-navigation.certificates": "Certificats", - "main-navigation.data": "Données", - "main-navigation.gallery": "Galerie", - "main-navigation.jobs": "Travaux", - "main-navigation.jobschedules": "Planifications de travail", - "main-navigation.label": "Navigation principale", - "main-navigation.packages": "Packages", - "main-navigation.pools": "Pools", - "main-navigation.profile": "Profil", - "models.container": "Conteneur", - "models.node": "Nœud", - "models.nodes": "Nœuds", - "models.pool": "Pool", - "models.pools": "Pools", - "models.storageAccount": "Compte de stockage", - "node-configuration.allocation-time": "Temps d’allocation", - "node-configuration.end-time": "Heure de fin", - "node-configuration.exit-code": "Code de sortie", - "node-configuration.external-ip": "Adresse ip externe", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "Adresse IP interne", - "node-configuration.is-dedicated": "Est dédié", - "node-configuration.last-boot-time": "Dernière heure de démarrage", - "node-configuration.node-agent-version": "Version de l'agent du nœud", - "node-configuration.node-size": "Taille de noeud", - "node-configuration.run-time": "Temps d’exécution", - "node-configuration.running-tasks-count": "Tâches en cours d'exécution", - "node-configuration.scheduling-state": "État de planification", - "node-configuration.start-task-completed": "Achevée en", - "node-configuration.start-task-running": "En cours d’exécution pour", - "node-configuration.start-time": "Heure de début", - "node-configuration.state": "État", - "node-configuration.state-transition-time": "Heure de la transition d'état", - "node-configuration.url": "URL", - "partial-sort-warning.load-all": "Charger tout (cela peut prendre beaucoup de temps)", - "partial-sort-warning.loading-all": "Chargement de toutes les entités. Veuillez patienter.", - "partial-sort-warning.manual-update": "La liste ne sera pas mise à jour automatiquement pendant le tri (pour des raisons de performance)", - "partial-sort-warning.update": "Mettre à jour", - "pool-details.estimatedCost": "Coût estimatif de ce pool dans son état actuel", - "pool-details.graphs": "Graphiques", - "pool-details.openInNewWindow": "Ouvrir dans une nouvelle fenêtre", - "pool-graphs.cpu": "UC", - "pool-graphs.diskUsage": "Utilisation du disque", - "pool-graphs.last": "Dernier", - "pool-graphs.memory": "Mémoire", - "pool-graphs.network": "Réseau", - "pool-graphs.timespan.10min": "10 minutes", - "pool-graphs.timespan.1h": "1 heure", - "pool-graphs.timespan.24h": "24 heures", - "pool-graphs.timespan.7d": "7 jours", - "pool-graphs.timespan.label": "Période de temps des graphes", - "pool-os-picker.category.container": "Conteneur", - "pool-os-picker.category.dataScience": "Science des données", - "pool-os-picker.category.distributions": "Distributions", - "pool-os-picker.category.rendering": "Graphiques et rendu", - "pool-os-picker.containerConfiguration": "Configuration du conteneur", - "pool-picker.filterByID": "Rechercher par id", - "pool-picker.filterByOS": "Filtrer par Système d'Exploitation", - "pool-picker.noneMatching": "Vous n’avez aucun pool correspondant aux filtres actuels.", - "pool-picker.reset": "Réinitialiser", - "pool-scale-picker.evaluationInterval.label": "Intervalle d'évaluation de la formule", - "pool-scale-picker.targetDedicatedNodes.label": "Nœuds dédiés", - "pool-scale-picker.type.fixed": "Taille fixe", - "pool-scale-picker.type.label": "Type d'échelle", - "profile-button.logout": "Déconnexion", - "profile-button.profile": "Profil", - "profile-button.report": "Signaler un bogue ou une demande de fonctionnalité", - "profile-button.settings": "Paramètres", - "profile-button.thirdPartyNotices": "Avis de tiers", - "profile-button.viewTheme": "Couleurs de thème d’affichage", - "programmatic-usage.authenticationType": "Type d'authentification ", - "programmatic-usage.credentials": "Informations d'identification", - "rerun-task-form.action": "Réexécuter", - "rerun-task-form.title": "Réexécuter la tâche", - "resource-permission-button.none": "Aucun(e)", - "resource-permission-button.permission": "Autorisation", - "resource-permission-button.removeAccess": "Supprimer l’accès", - "settings.general": "Général", - "settings.saved": "Enregistré ", - "settings.title": "Paramètres", - "task-commands.delete": "supprimer", - "task-commands.rerun": "Ré-exécuter", - "task-commands.terminate": "Finaliser", - "task-configuration.affinityId.label": "Id d’affinité", - "task-configuration.applicationPackages.application": "Application", - "task-configuration.applicationPackages.label": "Packages d’application", - "task-configuration.applicationPackages.none": "Cette tâche ne contient aucune référence de package d’application", - "task-configuration.applicationPackages.summary": "{count} références de packages d'application", - "task-configuration.applicationPackages.version": "Version", - "task-configuration.commandLine.label": "Ligne de commande", - "task-configuration.computeNode": "Nœud de calcul", - "task-configuration.creationTime.label": "Heure de création", - "task-configuration.displayName.label": "Nom complet", - "task-configuration.exitConditions.default": "Par défaut", - "task-configuration.exitConditions.label": "Conditions de sortie", - "task-configuration.exitConditions.terminateJobExitCodes": "Codes de sortie qui terminent le travail", - "task-configuration.general": "Général", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Dernière modification", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Nombre d’instances", - "task-configuration.nodeId.label": "ID du nœud", - "task-configuration.nodeUrl.label": "URL du nœud", - "task-configuration.outputFiles.destination": "Destination", - "task-configuration.outputFiles.pattern": "Modèle", - "task-configuration.pool.label": "Pool", - "task-configuration.previousState.label": "État précédent", - "task-configuration.previousStateTransitionTime.label": "Heure de transition d'état précédente", - "task-configuration.state.label": "État", - "task-configuration.stateTransitionTime.label": "Heure de la transition d'état", - "task-configuration.taskRootDir.label": "Répertoire racine de la tâche", - "task-configuration.userIdentity.label": "Identité de l’utilisateur", - "task-dependency-browser.no-dependency": "Cette tâche ne dépend pas d’autres tâches", - "task-resource-files.filePath": "Chemin d’accès au nœud", - "user-account-picker.password": "Mot de passe", - "user-account-picker.username": "Nom d'utilisateur", - "virtual-network-picker.subnet": "Sous-réseau" -} diff --git a/desktop/i18n-deprecated/resources.hu.json b/desktop/i18n-deprecated/resources.hu.json deleted file mode 100644 index 39ceb0217d..0000000000 --- a/desktop/i18n-deprecated/resources.hu.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "duration-picker.unit.days": "Nap", - "duration-picker.unit.hours": "??ra", - "duration-picker.unit.minutes": "Perc", - "duration-picker.unit.seconds": "M??sodperc", - "duration-picker.unit.unlimited": "Korl??tlan", - "main-navigation.certificates": "Tan??s??tv??nyok", - "main-navigation.data": "Adatok", - "main-navigation.gallery": "Gal??ria", - "main-navigation.jobs": "Feladatok", - "main-navigation.jobschedules": "Feladat??temez??sek", - "main-navigation.packages": "Csomagok", - "main-navigation.pools": "K??szletek", - "main-navigation.profile": "Profil", - "models.pools": "K??szletek", - "models.storageAccount": "T??rfi??k", - "profile-button.profile": "Profil", - "settings.saved": "Mentve", - "user-account-picker.password": "Jelsz??", - "user-account-picker.username": "Felhaszn??l??n??v" -} \ No newline at end of file diff --git a/desktop/i18n-deprecated/resources.it.json b/desktop/i18n-deprecated/resources.it.json deleted file mode 100644 index 043a92c6b5..0000000000 --- a/desktop/i18n-deprecated/resources.it.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "aad-app-secret-picker.expireIn.label": "Scade in", - "account-cost-card.usingLocalAccount": "Non è possibile ottenere il costo con un account batch locale", - "account-details.resources": "Risorse", - "account-summary-card.resourceGroup": "Gruppo di risorse", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "Selezionare un certificato (pfx o cer) da caricare", - "add-certificate-form.certificate.invalid": "E' necessario che il certificato sia un file CER o PFX valido", - "add-certificate-form.certificate.label": "Certificato", - "add-certificate-form.certificate.select": "Seleziona un certificato", - "add-certificate-form.password.label": "Password del certificato", - "add-certificate-form.title": "Crea certificato", - "add-task-form.action": "Aggiungi", - "batch-account-create.accountName.required": "Il nome account è un campo obbligatorio", - "batch-account-create.resourceGroup.willCreate": "Questo gruppo di risorse non esiste ancora e verrà creato prima dell'account batch.", - "blob-container-picker.loading": "Caricamento container in corso", - "certificate-references-picker.duplicate": "Non è possibile fare riferimento allo stesso certificato due volte {thumbprint}", - "common.apply": "Applica", - "common.back": "Indietro", - "common.configuration": "CONFIGURAZIONE", - "common.confirm": "Conferma", - "common.loading": "Caricamento", - "common.no": "No", - "common.none": "Nessuno", - "common.refresh": "Aggiorna", - "common.required": "Richiesti", - "common.yes": "Sì", - "create-new-aad-app.create": "Crea", - "create-new-aad-app.title": "Crea una nuova applicazione", - "sig-image-picker.sigImage.label": "Immagine", - "datetime-picker.currentTimeZone": "Fuso orario corrente", - "duration-picker.unit.custom": "Personalizzato (formato ISO)", - "duration-picker.unit.days": "Giorni", - "duration-picker.unit.hours": "Ore", - "duration-picker.unit.label": "Unità", - "duration-picker.unit.minutes": "Minuti", - "duration-picker.unit.seconds": "Secondi", - "duration-picker.unit.unlimited": "Senza limiti", - "edit-app-package-form.updated": "I pacchetti dell'applicazione per {poolId} sono stati aggiornati", - "editable-table.deleteRow": "Elimina riga", - "entity-configuration.viewClassic": "Visualizzazione classica", - "file-explorer.collapseAll": "Comprimi tutto", - "file-explorer.noFiles": "Nessun file", - "file-explorer.noPathMatch": "Nessun file trovato per \"{path}\"", - "file-explorer.path": "PERCORSO", - "file-viewer-container.unkownFileType": "Questo file non ha un'estensione conosciuta. Vuoi aprirlo comunque?", - "form-footer.buttons.andClose": "{action} e chiudi", - "form-footer.buttons.cancel": "Annulla", - "form-footer.buttons.save": "Salva", - "form-footer.buttons.select": "Seleziona", - "gallery.actions": "Azioni", - "gallery.recentTemplates": "Modelli recenti", - "gallery.title": "Applicazioni della galleria", - "job-state.completed.jmcomplete.message": "Processo completato correttamente al completamento dell'attività del manager dei processi", - "job-state.completed.message": "Processo completato. Nessun'altra attività sarà accettata.", - "job-state.deleting.message": "Il processo è in corso di eliminazione", - "job-state.disabled.message": "Il processo è disattivato. Non verrà eseguita alcuna attività.", - "job-state.terminating.message": "Il processo sta per terminare", - "location-picker.noLocationInSubscription": "Nessuna posizione disponibile per la sottoscrizione '{name}'", - "main-menu.help.label": "Guida", - "main-menu.help.privacyStatement": "Informativa sulla privacy", - "main-menu.help.reportIssue": "Segnala il problema", - "main-navigation.certificates": "Certificati", - "main-navigation.dashboard": "Trattino", - "main-navigation.data": "Dati", - "main-navigation.gallery": "Galleria", - "main-navigation.jobs": "Processi", - "main-navigation.jobschedules": "Pianificazioni processi", - "main-navigation.packages": "Pacchetti", - "main-navigation.pools": "Pool", - "main-navigation.profile": "Profilo", - "models.container": "Contenitore", - "models.node": "Nodo", - "models.nodes": "Nodi", - "models.pools": "Pool", - "models.storageAccount": "Account di archiviazione", - "node-configuration.allocation-time": "Tempo di allocazione", - "node-configuration.end-time": "Ora di fine", - "node-configuration.exit-code": "Codice di uscita", - "node-configuration.external-ip": "Ip esterno", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "Ip interno", - "node-configuration.is-dedicated": "È dedicato", - "node-configuration.last-boot-time": "Orario ultimo avvio", - "node-configuration.node-agent-version": "Versione dell'agente del nodo", - "node-configuration.node-size": "Dimensione del nodo", - "node-configuration.run-time": "Tempo di esecuzione", - "node-configuration.running-tasks-count": "Attività in esecuzione", - "node-configuration.start-task-completed": "Completato in", - "node-configuration.start-task-running": "In esecuzione per", - "node-configuration.start-time": "Ora di inizio", - "node-configuration.state": "Stato", - "node-configuration.state-transition-time": "Tempo di transizione di stato", - "node-configuration.total-tasks-run": "Numero totale di attività in esecuzione", - "node-configuration.total-tasks-succeeded": "Numero totale di attività eseguite con successo", - "node-configuration.url": "URL", - "partial-sort-warning.loading-all": "Caricamento di tutte le entità. Attendere prego.", - "partial-sort-warning.message": "Non tutte le entità sono state caricate, l'ordinamento visualizzato è parziale.", - "partial-sort-warning.update": "Aggiorna", - "pool-details.graphs": "Grafi", - "pool-details.openInNewWindow": "Apri in una nuova finestra", - "pool-graphs.cpu": "CPU", - "pool-graphs.last": "Ultimo", - "pool-graphs.memory": "Memoria", - "pool-graphs.network": "Rete", - "pool-graphs.notEnabled": "CPU, memoria, disco, ecc.", - "pool-graphs.timespan.10min": "10 minuti", - "pool-graphs.timespan.1h": "1 ora", - "pool-graphs.timespan.24h": "24 ore", - "pool-graphs.timespan.7d": "7 giorni", - "pool-os-picker.category.container": "Contenitore", - "pool-os-picker.category.dataScience": "Data science", - "pool-os-picker.nodeAgentSelection": "In base alla selezione effettuata, verrà utilizzato l'agente del nodo '{sku}'", - "pool-picker.filterByID": "Ricerca per id", - "pool-picker.reset": "Reimposta", - "pool-scale-picker.evaluationInterval.label": "Intervallo di valutazione formula", - "pool-scale-picker.targetDedicatedNodes.label": "Nodi dedicati", - "profile-button.logout": "Logout", - "profile-button.profile": "Profilo", - "profile-button.settings": "Impostazioni", - "profile-button.viewLogs": "Visualizza i log", - "profile-button.viewTheme": "Mostra colori del tema", - "programmatic-usage.authenticationType": "Tipo di autenticazione", - "programmatic-usage.credentials": "Credenziali", - "programmatic-usage.setup": "setup", - "programmatic-usage.title": "Credenziali ed esempi di codice per questo account batch", - "rerun-task-form.action": "Riesegui", - "rerun-task-form.subtitle": "Questo eliminerà il task e ne creerà uno nuovo con lo stesso id.", - "rerun-task-form.title": "Riesegui attività", - "resource-permission-button.giveRole": "Assegna il ruolo {role}", - "resource-permission-button.none": "Nessuno", - "resource-permission-button.permission": "Autorizzazione", - "settings.general": "Generale", - "settings.title": "Impostazioni", - "task-commands.delete": "Elimina", - "task-commands.rerun": "Eseguire nuovamente", - "task-commands.terminate": "Termina", - "task-configuration.affinityId.label": "Identificativo di affinità", - "task-configuration.applicationPackages.application": "Applicazione", - "task-configuration.applicationPackages.summary": "{count} riferimenti al pacchetto di applicazione", - "task-configuration.applicationPackages.version": "Versione", - "task-configuration.commandLine.label": "Riga di comando", - "task-configuration.creationTime.label": "Ora di creazione", - "task-configuration.displayName.label": "Nome visualizzato", - "task-configuration.exitConditions.default": "Predefinito", - "task-configuration.exitConditions.fileUploadError": "In caso di errore di caricamento file", - "task-configuration.exitConditions.label": "Condizioni di uscita", - "task-configuration.exitConditions.noOpExitCodes": "Codici di uscita che non fanno nulla", - "task-configuration.exitConditions.terminateJobExitCodes": "Codici di uscita che terminano il processo", - "task-configuration.general": "Generale", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Ultima modifica", - "task-configuration.multiInstanceSettings.label": "Impostazioni multi istanza", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Numero di istanze", - "task-configuration.nodeId.label": "ID del nodo", - "task-configuration.outputFiles.destination": "Destinazione", - "task-configuration.outputFiles.uploadWhen": "Carica quando", - "task-configuration.pool.label": "Pool", - "task-configuration.previousStateTransitionTime.label": "Tempo di transizione dallo stato precedente", - "task-configuration.state.label": "Stato", - "task-configuration.stateTransitionTime.label": "Tempo di transizione di stato", - "task-configuration.userIdentity.label": "Identità dell'utente", - "task-dependency-browser.no-dependency": "Questa attività non dipende da altre", - "task-node-info.poolNotFound": "Il pool non esiste più", - "task-resource-files.filePath": "Percorso del file del nodo", - "task-resource-files.none": "Questa attività non contiene alcun file di risorsa", - "user-account-picker.password": "Password", - "user-account-picker.username": "Nome utente", - "virtual-network-picker.subnet": "Sottorete" -} diff --git a/desktop/i18n-deprecated/resources.ja.json b/desktop/i18n-deprecated/resources.ja.json deleted file mode 100644 index 2c2d46c29d..0000000000 --- a/desktop/i18n-deprecated/resources.ja.json +++ /dev/null @@ -1,312 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "説明 (省略可)", - "aad-app-secret-picker.expireIn.label": "期限切れ", - "aad-app-secret-picker.secret.label": "シークレット。指定しないと、自動的に 1 つ生成されます。", - "account-cost-card.subtitle": "これは税引き前のコストレポートが表示されています。コストが一部である可能性がありますのでご注意ください。", - "account-cost-card.title": "日次のコスト", - "account-cost-card.total": "請求期間内の合計", - "account-cost-card.unsupportedSubscription": "このサブスクリプションのコストを表示できません (サポートされていません)。", - "account-cost-card.usingLocalAccount": "ローカル バッチ アカウントのコストを取得できません。", - "account-details.monitoring": "監視", - "account-details.resources": "リソース", - "account-monitoring.aggregatedOver": "{interval} 間隔で集計", - "account-monitoring.coreCount": "コアの分数", - "account-monitoring.currentNodeStates": "現在のノードの状態", - "account-monitoring.failedTask": "失敗したタスク", - "account-monitoring.nodeStates": "ノードの状態", - "account-monitoring.notARM": "アカウント監視は、ARM バッチ アカウントでのみ有効です", - "account-monitoring.taskStates": "タスクの状態", - "account-summary-card.resourceGroup": "リソース グループ", - "account-summary-card.subscription": "サブスクリプション", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "アップロードする証明書 (pfx または cer) を選択します。", - "add-certificate-form.certificate.invalid": "証明書は有効な CER または PFX ファイルのみである必要があります。", - "add-certificate-form.certificate.label": "証明書", - "add-certificate-form.certificate.required": "有効な証明書ファイルを選択してください。", - "add-certificate-form.certificate.select": "証明書の選択", - "add-certificate-form.password.label": "証明書のパスワード", - "add-certificate-form.password.required": "証明書の形式が '.pfx' の場合はパスワードが必要です。", - "add-certificate-form.title": "証明書を作成します。", - "add-task-form.action": "追加", - "add-task-form.subtitle": "選択したジョブにタスクを追加します。", - "add-task-form.title": "タスクを追加します。", - "batch-account-create.accountName.maxlength": "アカウント名は最長 64 文字です。", - "batch-account-create.accountName.minLength": "アカウント名の長さは3文字以上", - "batch-account-create.accountName.pattern": "アカウント名には小文字と数字のみ含めることができます", - "batch-account-create.accountName.required": "アカウント名は必須フィールドです。", - "batch-account-create.location.reachedQuota": "サブスクリプション '{subscription}' のこの場所における {quota} クォータ アカウント中、使用しているクォータは {used} に達しました。アカウント クォータの引き上げ、別の場所でのアカウントの作成、別のサブスクリプションでのアカウントの作成を要求できます。", - "batch-account-create.location.required": "場所は必須項目です", - "batch-account-create.resourceGroup.noneAvailable": "サブスクリプション '{subscription}' の中に有効なリソース グループがありません", - "batch-account-create.resourceGroup.notAllowed": "このリソース グループの下でバッチ アカウントを作成する権限がありません。", - "batch-account-create.resourceGroup.required": "リソース グループは必須です。", - "batch-account-create.resourceGroup.willCreate": "このリソース グループはまだ存在しません。バッチ アカウントの前に作成する必要があります。", - "batch-account-create.storageAccount.missingSubscription": "ストレージ アカウントを選ぶ前にサブスクリプションと場所を指定してください。", - "batch-account-create.subscription.required": "サブスクリプションは必須です。", - "blob-container-picker.loading": "コンテナーをロードしています", - "browse-layout.openedAdvancedFilter": "高度なフィルターのブレードを開きました", - "certificate-references-picker.addOne": "証明書を追加", - "certificate-references-picker.duplicate": "同じ証明書 {thumbprint} は参照できません。", - "certificate-references-picker.noCertificates": "このバッチ アカウントに証明書が見つかりませんでした。最初に証明書をアップロードしてください。", - "common.apply": "適用", - "common.back": "戻る", - "common.configuration": "CONFIGURATION", - "common.confirm": "確認", - "common.loading": "読み込み中", - "common.no": "いいえ", - "common.none": "なし", - "common.rebootAll": "すべて再起動", - "common.refresh": "最新の情報に更新", - "common.refreshing": "更新中", - "common.required": "必要な領域", - "common.updated": "更新", - "common.yes": "はい", - "create-new-aad-app.create": "作成", - "create-new-aad-app.secret.label": "秘密", - "create-new-aad-app.title": "新しいアプリケーションを作成します。", - "sig-image-picker.sigImage.label": "イメージ", - "sig-image-picker.errorLoading": "サーバーでカスタムイメージを読み込み中にエラーが発生しました。しばらくしてからもう一度お試しください。", - "sig-image-picker.noSigImageAvailable": "このアカウントの地域にカスタム画像がありません", - "sig-image-picker.nodeAgentSku.label": "ノード エージェント", - "datetime-picker.currentTimeZone": "現在のタイムゾーン", - "datetime-picker.date": "日付", - "datetime-picker.pickDate": "日付を選択します", - "datetime-picker.time": "時間", - "duration-picker.unit.custom": "カスタム (ISO 形式)", - "duration-picker.unit.days": "日数", - "duration-picker.unit.hours": "時間", - "duration-picker.unit.label": "ユニット", - "duration-picker.unit.minutes": "分", - "duration-picker.unit.seconds": "秒", - "duration-picker.unit.unlimited": "無制限", - "edit-app-package-form.title": "プール {poolId} のアプリケーション パッケージ参照を編集します。", - "edit-app-package-form.updated": "{poolId} のアプリケーション パッケージが更新されました", - "edit-certificate-references-form.title": "プール {poolId} の証明書リファレンスを編集", - "edit-certificate-references-form.updated": "{poolId} の証明書を更新しました", - "editable-table.deleteRow": "行を削除", - "entity-command.confirm.multiple.title": "本当にこれらの {count} 個の {type} を {action} しますか", - "entity-command.confirm.single.description": "{entityId} を {action} します", - "entity-command.confirm.single.title": "本当にこの {type} を {action} しますか", - "entity-configuration.viewAsJSON": "JSONとして表示", - "entity-configuration.viewClassic": "クラシック ビュー", - "file-explorer.collapseAll": "すべて折りたたんで表示します。", - "file-explorer.noFiles": "ファイルがありません。", - "file-explorer.noPathMatch": "\"{path}\" のファイルが見つかりませんでした", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "このファイルが見つかりません。パスを確認してください。", - "file-group-picker.create": "新しいファイル グループを作成", - "file-group-picker.warning": "このファイル グループは存在していないようです。それはジョブが登録されたときに作成されます。", - "file-viewer-container.notAllowed": "ファイル {filename} にアクセスできません。サーバーから forbidden エラーが返されました。", - "file-viewer-container.notFound": "ファイル {filename} が存在しません。", - "file-viewer-container.unkownFileType": "このファイルは、既知の拡張子ではありません。それでも開きますか?", - "form-footer.buttons.andClose": "{action} および閉じる", - "form-footer.buttons.cancel": "キャンセル", - "form-footer.buttons.jsonEditor": "JSON エディターに切り替えます", - "form-footer.buttons.normalForm": "クラシック形式に切り替える", - "form-footer.buttons.save": "保存", - "form-footer.buttons.select": "選択", - "gallery.actions": "アクション", - "gallery.myLibrary": "マイ ライブラリ", - "gallery.recentTemplates": "最近使用したテンプレート", - "gallery.title": "アプリケーションのギャラリー", - "gallery.viewReadme": "README の表示", - "job-progress-status.inaccurate": "タスク数がリアルタイムで正確ではない可能性があります。", - "job-state.active.message": "ジョブは現在実行中です。タスクをスケジュールすることができます。", - "job-state.completed.allTasksCompleted.message": "すべてのタスクが完了し、ジョブは正常に完了しました。", - "job-state.completed.jmcomplete.message": "ジョブ マネージャー タスクが完了したときにジョブが正常に完了しました", - "job-state.completed.message": "ジョブが完了しました。これ以上のタスクは受け入れられません。", - "job-state.completed.taskfailed.message": "タスクの 1 つが失敗したため、ジョブは失敗で完了しました。", - "job-state.completed.timeout.message": "ジョブがタイムアウトになりました。ジョブは、指定された制限値よりも長く実行されています。", - "job-state.completed.userTerminated.message": "ユーザーによってジョブが完了しました。", - "job-state.deleting.message": "ジョブは削除中", - "job-state.disabled.message": "ジョブは無効です。タスクは実行されません。", - "job-state.disabling.message": "プロセス内のジョブが無効です。", - "job-state.enabling.message": "ジョブが無効状態から復帰しています", - "job-state.terminating.message": "ジョブが終了しています。", - "list-base.filterApplied": "新しいフィルターが適用されました、{count} 件の結果", - "list-base.filterCleared": "フィルターをクリア、{count} 結果", - "location-picker.noLocationInSubscription": "サブスクリプション '{name}' には利用できる場所がありません。", - "main-menu.help.label": "ヘルプ", - "main-menu.help.privacyStatement": "プライバシーに関する声明", - "main-menu.help.reportIssue": "問題を報告", - "main-menu.help.viewLicense": "ライセンスを表示", - "main-navigation.certificates": "証明書", - "main-navigation.dashboard": "ダッシュ", - "main-navigation.data": "データ", - "main-navigation.gallery": "ギャラリー", - "main-navigation.jobs": "ジョブ", - "main-navigation.jobschedules": "ジョブ スケジュール", - "main-navigation.label": "メイン ・ ナビゲーション", - "main-navigation.packages": "パッケージ", - "main-navigation.pools": "プール", - "main-navigation.profile": "プロファイル", - "models.container": "コンテナー", - "models.node": "ノード", - "models.nodes": "ノード", - "models.pool": "プール", - "models.pools": "プール", - "models.storageAccount": "ストレージ アカウント", - "node-configuration.allocation-time": "割り当て時間", - "node-configuration.end-time": "終了時刻", - "node-configuration.exit-code": "終了コード", - "node-configuration.external-ip": "外部 IP アドレス", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "内部 IP アドレス", - "node-configuration.is-dedicated": "専用", - "node-configuration.last-boot-time": "最近の起動時刻", - "node-configuration.node-agent-version": "ノード エージェントのバージョン", - "node-configuration.node-size": "ノードのサイズ", - "node-configuration.retry-count": "再試行回数", - "node-configuration.run-time": "実行時間", - "node-configuration.running-tasks-count": "実行中のタスク", - "node-configuration.scheduling-state": "スケジューリングの状態", - "node-configuration.start-task-completed": "完了", - "node-configuration.start-task-execution": "タスクの実行を開始します。", - "node-configuration.start-task-not-started": "タスクの実行を開始します。", - "node-configuration.start-task-running": "実行中", - "node-configuration.start-time": "開始時刻", - "node-configuration.state": "状態", - "node-configuration.state-transition-time": "状態遷移時間", - "node-configuration.total-tasks-run": "タスクの実行の合計", - "node-configuration.total-tasks-succeeded": "正常に完了したタスクの合計", - "node-configuration.url": "URL", - "partial-sort-warning.load-all": "すべてをロードします (これには時間がかかることがあります)", - "partial-sort-warning.loading-all": "すべてのエンティティを読み込み中です。お待ちください。", - "partial-sort-warning.manual-update": "ソート中はリストを自動的に更新できません (パフォーマンス上の理由)。", - "partial-sort-warning.message": "すべてのエンティティが読み込まれていません。これは部分的な並べ替えを示しています。", - "partial-sort-warning.update": "更新", - "pool-commands.resize": "サイズ変更", - "pool-commands.stopResize": "サイズ変更中止", - "pool-details.estimatedCost": "現在の状態でのこのプールのコストの見積もり", - "pool-details.graphs": "グラフ", - "pool-details.openInNewWindow": "新しいウィンドウで開く", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "ディスク IO", - "pool-graphs.diskUsage": "ディスクの使用状況", - "pool-graphs.last": "最後の", - "pool-graphs.memory": "メモリ", - "pool-graphs.network": "ネットワーク", - "pool-graphs.notEnabled": "CPU、メモリ、ディスク等。", - "pool-graphs.timespan.10min": "10 分", - "pool-graphs.timespan.1h": "1 時間", - "pool-graphs.timespan.24h": "24 時間", - "pool-graphs.timespan.7d": "7 日間", - "pool-graphs.timespan.label": "グラフの期間", - "pool-os-picker.category.container": "コンテナー", - "pool-os-picker.category.dataScience": "データサイエンス", - "pool-os-picker.category.distributions": "配布", - "pool-os-picker.category.rendering": "グラフィックスとレンダリング", - "pool-os-picker.containerConfiguration": "コンテナーの構成", - "pool-os-picker.nodeAgentSelection": "あなたの選択に基づいて、ノード エージェント '{sku}' が使用されます。", - "pool-picker.filterByID": "ID で検索", - "pool-picker.filterByOS": "OS によるフィルター", - "pool-picker.noneMatching": "現在のフィルターに一致するプールがありません。", - "pool-picker.reset": "リセット", - "pool-scale-picker.evaluationInterval.label": "数式の評価間隔", - "pool-scale-picker.resizeTimeout.label": "タイムアウトのサイズを変更します。", - "pool-scale-picker.targetDedicatedNodes.label": "専用ノード", - "pool-scale-picker.targetLowPriorityNodes.label": "優先度の低いノード", - "pool-scale-picker.type.autoscale": "オートスケール", - "pool-scale-picker.type.fixed": "固定長", - "pool-scale-picker.type.label": "スケール タイプ", - "profile-button.about": "製品について", - "profile-button.logout": "ログアウト", - "profile-button.profile": "プロファイル", - "profile-button.report": "バグまたは機能リクエストを報告します。", - "profile-button.settings": "設定", - "profile-button.thirdPartyNotices": "サードパーティ通知", - "profile-button.viewLogs": "ログの表示", - "profile-button.viewTheme": "テーマカラーの表示", - "programmatic-usage.authenticationType": "認証の種類", - "programmatic-usage.credentials": "資格情報", - "programmatic-usage.setup": "セットアップ", - "programmatic-usage.title": "資格情報とこのバッチ アカウントのコード サンプル", - "rerun-task-form.action": "再実行", - "rerun-task-form.subtitle": "タスクを削除し、同じ id で新しいタスクを作成します。", - "rerun-task-form.title": "タスクの再実行", - "resource-permission-button.giveRole": "役割 {role} を与える", - "resource-permission-button.none": "なし", - "resource-permission-button.permission": "アクセス許可", - "resource-permission-button.removeAccess": "アクセス権を削除します。", - "resourcefile-picker.add.dragAndDrop": "自動的にアップロードするファイルをここにドラッグ アンド ドロップできます。", - "resourcefile-picker.add.fromStorage": "Azure Storage から追加します", - "resourcefile-picker.add.fromURL": "URL から追加します", - "resourcefile-picker.add.uploadFile": "ファイルのアップロード", - "resourcefile-picker.blobPrefix": "Blob プレフィックス", - "resourcefile-picker.cloudFileDialog.title": "ストレージ アカウントからファイルを選択します", - "settings.gallerySettings": "ギャラリーの設定", - "settings.general": "全般", - "settings.reset": "既定の設定にリセットします", - "settings.saved": "保存済み", - "settings.title": "設定", - "storage-error-display.isClassic": "リンクされているストレージ アカウントは従来のストレージ アカウントで、この機能では使用できません。", - "storage-error-display.noAutoStorage": "この Batch アカウントに対してリンクされているストレージ アカウントは構成されていません。ファイル グループを管理するために必要です。", - "task-commands.delete": "削除", - "task-commands.rerun": "再実行します。", - "task-commands.terminate": "終了", - "task-configuration.affinityId.label": "アフィニティ id", - "task-configuration.applicationPackages.application": "アプリケーション", - "task-configuration.applicationPackages.label": "アプリケーション パッケージ", - "task-configuration.applicationPackages.none": "このタスクにはアプリケーション パッケージの参照が含まれていません", - "task-configuration.applicationPackages.summary": "{count} 個のアプリケーション パッケージの参照", - "task-configuration.applicationPackages.version": "バージョン", - "task-configuration.commandLine.label": "コマンドライン", - "task-configuration.computeNode": "計算ノード", - "task-configuration.creationTime.label": "作成時刻", - "task-configuration.displayName.label": "表示名", - "task-configuration.exitConditions.default": "既定", - "task-configuration.exitConditions.fileUploadError": "ファイルのアップロード エラー", - "task-configuration.exitConditions.label": "終了条件", - "task-configuration.exitConditions.noOpExitCodes": "何もしない終了コード", - "task-configuration.exitConditions.onSchedulingError": "スケジュールエラー時", - "task-configuration.exitConditions.terminateJobExitCodes": "ジョブ終了時の終了コード", - "task-configuration.general": "全般", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "更新日時", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "コーディネーション コマンドライン", - "task-configuration.multiInstanceSettings.label": "マルチ インスタンスの設定", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "インスタンスの数", - "task-configuration.nodeId.label": "ノード ID", - "task-configuration.nodeUrl.label": "ノードの URL", - "task-configuration.outputFiles.destination": "先", - "task-configuration.outputFiles.label": "出力ファイル", - "task-configuration.outputFiles.pattern": "パターン", - "task-configuration.outputFiles.uploadWhen": "アップロード時", - "task-configuration.pool.label": "プール", - "task-configuration.previousState.label": "前の状態", - "task-configuration.previousStateTransitionTime.label": "以前の状態遷移時間", - "task-configuration.state.label": "状態", - "task-configuration.stateTransitionTime.label": "状態遷移時間", - "task-configuration.taskRootDir.label": "タスクのルート ディレクトリ", - "task-configuration.taskRootDirUrl.label": "タスクのルート ディレクトリの URL", - "task-configuration.userIdentity.label": "ユーザー ID", - "task-dependency-browser.no-dependency": "このタスクは他のタスクに依存しません。", - "task-node-info.navigateToNode": "計算ノードに移動します。", - "task-node-info.navigateToPool": "プールに移動します。", - "task-node-info.nodeNotFound": "計算ノードはもう存在しません", - "task-node-info.poolNotFound": "プールはもう存在しません", - "task-resource-files.fileMode": "ファイル モード", - "task-resource-files.filePath": "ノードのファイル パス", - "task-resource-files.httpUrl": "Http url", - "task-resource-files.none": "このタスクにリソース ファイルは含まれていません。", - "time-range-picker.customRange": "カスタム範囲", - "time-range-picker.errors.invalidRange": "開始時間終了時間よりも小さくなければなりません", - "time-range-picker.errors.required": "開始時刻と終了時刻の少なくともどちらかを指定する必要があります", - "time-range-picker.quickRange": "クイック範囲", - "time-range-picker.timeRange": "時間範囲", - "timezone-dropdown.tooltip": "日付のタイムゾーンを選択します", - "user-account-picker.gid": "ユーザー グループ ID", - "user-account-picker.linuxConfiguration": "Linux 固有の構成", - "user-account-picker.loginMode": "ログイン モード", - "user-account-picker.password": "パスワード", - "user-account-picker.runAsAdmin": "管理者として実行", - "user-account-picker.sshPrivateKey": "SSH 秘密鍵", - "user-account-picker.uid": "ユーザー ID", - "user-account-picker.username": "ユーザー名", - "user-account-picker.windowsConfiguration": "Windows 固有の構成", - "user-accounts-picker.addOne": "ユーザー アカウントを追加", - "user-accounts-picker.duplicate": "同じ名前 '{username}' を持つ 2 つのユーザーを持つことはできません。", - "virtual-network-picker.noneAvailable": "サブスクリプション '{subscriptionId}'、場所 '{location}' に使用可能な仮想ネットワークがありません。", - "virtual-network-picker.notArm": "ローカルバッチアカウントは仮想ネットワークでは使用できません。", - "virtual-network-picker.subnet": "サブネット", - "virtual-network-picker.virtualNetwork": "仮想ネットワーク" -} diff --git a/desktop/i18n-deprecated/resources.ko.json b/desktop/i18n-deprecated/resources.ko.json deleted file mode 100644 index ec374ebe6c..0000000000 --- a/desktop/i18n-deprecated/resources.ko.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "설명 (옵션)", - "aad-app-secret-picker.expireIn.label": "만료", - "aad-app-secret-picker.secret.label": "비밀. 하나가 제공되지 않으면 자동으로 생성됩니다.", - "account-cost-card.subtitle": "지금 보고 게신 부분은 세금을 제외한 항목입니다. 비용이 달라질수 있음을 확인하시길 바랍니다.", - "account-cost-card.title": "일일 비용", - "account-cost-card.total": "총 청구 기간", - "account-cost-card.unsupportedSubscription": "이 구독에 대한 비용을 확인할 수 없습니다 (지원되지 않음).", - "account-cost-card.usingLocalAccount": "로컬 배치 어카운트의 비용을 가져올 수 없습니다.", - "account-details.monitoring": "모니터링", - "account-details.resources": "리소스", - "account-monitoring.nodeStates": "노드 상태", - "account-monitoring.taskStates": "작업 상태", - "account-summary-card.resourceGroup": "리소스 그룹", - "account-summary-card.subscription": "구독", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "업로드 할 인증서 (pfx 또는 cer) 선택", - "add-certificate-form.certificate.invalid": "인증서는 유효한 CER 또는 PFX 파일이어야합니다.", - "add-certificate-form.certificate.label": "인증서", - "add-certificate-form.certificate.required": "유효한 인증서 파일을 선택하십시오", - "add-certificate-form.certificate.select": "인증서 선택", - "add-certificate-form.password.label": "인증서 암호", - "add-certificate-form.password.required": "인증서 형식이 '.pfx'인 경우 암호가 필요합니다.", - "add-certificate-form.title": "인증서 만들기", - "add-task-form.action": "추가", - "add-task-form.subtitle": "선택한 Job에 작업 추가", - "add-task-form.title": "작업 추가", - "batch-account-create.accountName.maxlength": "계정 이름의 최대 길이는 64 자입니다.", - "batch-account-create.accountName.minLength": "계정 이름에는 최소 3 문자가 필요합니다.", - "batch-account-create.accountName.pattern": "계정이름은 소문자와 숫자만 포함할 수 있습니다.", - "batch-account-create.accountName.required": "계정 이름 필드는 필수 필드입니다.", - "batch-account-create.location.reachedQuota": "이 위치의 {subscription} 구독에 대해 {quota} 계정 중 할당량 {used}에 도달했습니다. 계정 할당량 증가를 요청하거나, 다른 위치에서 계정을 만들거나, 다른 가입에서 계정을 만들 수 있습니다.", - "batch-account-create.location.required": "위치는 필수 입력 항목입니다.", - "batch-account-create.resourceGroup.noneAvailable": "구독 '{subscription}'에서 사용할 수 있는 리소스 그룹이 없습니다.", - "batch-account-create.resourceGroup.notAllowed": "이 리소스 그룹에서 배치 계정을 만들 권한이 없습니다.", - "batch-account-create.resourceGroup.required": "리소스 그룹은 필수 입력 필드입니다.", - "batch-account-create.resourceGroup.willCreate": "이 자원 그룹은 아직 존재하지 않으며 배치 계정 전에 작성될 것입니다.", - "batch-account-create.storageAccount.missingSubscription": "스토리지 계정을 선택하기 전에 구독 및 위치를 지정하십시오.", - "batch-account-create.subscription.required": "구독 필드는 필수 입력 필드입니다.", - "blob-container-picker.loading": "컨테이너를 불러오는 중입니다.", - "browse-layout.openedAdvancedFilter": "열려진 고급 필터 블레이드", - "certificate-references-picker.addOne": "인증서 추가", - "certificate-references-picker.duplicate": "동일한 인증서{thumbprint}를 두 번 참조할 수 없습니다", - "certificate-references-picker.noCertificates": "이 배치 계정에 대한 인증서가 없으므로, 먼저 인증서를 업로드 하세요.", - "common.apply": "적용", - "common.back": "뒤로", - "common.configuration": "CONFIGURATION", - "common.confirm": "확인", - "common.loading": "로드", - "common.no": "아니요", - "common.none": "None", - "common.rebootAll": "모두 재 부팅", - "common.refresh": "새로 고침", - "common.refreshing": "새로 고침", - "common.required": "필수", - "common.updated": "업데이트", - "common.yes": "예", - "create-new-aad-app.create": "만들기", - "create-new-aad-app.secret.label": "암호", - "create-new-aad-app.title": "새 응용 프로그램 만들기", - "sig-image-picker.sigImage.label": "이미지", - "sig-image-picker.errorLoading": "서버에서 사용자 정의 이미지를 로드하는 중에 오류가 발생했습니다. 나중에 다시 시도하십시오.", - "sig-image-picker.noSigImageAvailable": "이 계정의 해당 지역에 사용자 지정 이미지가 없습니다.", - "sig-image-picker.nodeAgentSku.label": "노드 에이전트", - "datetime-picker.currentTimeZone": "현재 시간대", - "datetime-picker.date": "날짜", - "datetime-picker.time": "시간", - "duration-picker.unit.custom": "사용자 정의 (ISO 형식)", - "duration-picker.unit.days": "일", - "duration-picker.unit.hours": "시간", - "duration-picker.unit.label": "단위", - "duration-picker.unit.minutes": "분", - "duration-picker.unit.seconds": "초", - "duration-picker.unit.unlimited": "제한 없음", - "edit-app-package-form.title": "풀{poolId}에 대한 응용 프로그램 패키지 참조를 편집하세요", - "edit-app-package-form.updated": "{poolId}에 대한 응용프로그램 패키지가 업데이트 되었습니다.", - "edit-certificate-references-form.title": "풀{poolId}에 대한 인증서 참조 편집", - "edit-certificate-references-form.updated": "{poolId}에 대한 인증서가 업데이트 되었습니다.", - "editable-table.deleteRow": "행 삭제", - "entity-command.confirm.multiple.title": "{count} {type} {action}을 수행하기 원하십니까?", - "entity-command.confirm.single.description": "{entityId}를 {action}하려고 합니다.", - "entity-command.confirm.single.title": "이 {type}에 {action}을(를) 하시겠습니까?", - "entity-configuration.viewAsJSON": "JSON으로 보기", - "entity-configuration.viewClassic": "클래식 보기", - "file-explorer.collapseAll": "모두 축소", - "file-explorer.noFiles": "파일 없음", - "file-explorer.noPathMatch": "\"{path}\"에 대한 파일을 찾을 수 없습니다.", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "이 파일을 찾을 수 없습니다. 경로를 확인해주십시오.", - "file-group-picker.create": "새 파일 그룹 만들기", - "file-group-picker.warning": "이 파일 그룹이 존재하지 않는 것 같습니다. 작업 제출시 작성됩니다.", - "file-viewer-container.notAllowed": "파일 \"{filename}\"에 액세스 할 수 없습니다. 서버가 금지 된 오류를 반환했습니다.", - "file-viewer-container.notFound": "파일{filename}이 존재하지 않습니다.", - "file-viewer-container.unkownFileType": "이 파일은 알려진 확장자가 아닙니다. 그래도 열어보시겠습니까?", - "form-footer.buttons.andClose": "{action}과 닫기", - "form-footer.buttons.cancel": "취소", - "form-footer.buttons.jsonEditor": "JSON 편집기로 전환", - "form-footer.buttons.normalForm": "클래식 양식으로 전환", - "form-footer.buttons.save": "저장", - "form-footer.buttons.select": "선택", - "gallery.actions": "동작", - "gallery.myLibrary": "내 라이브러리", - "gallery.recentTemplates": "최근 템플릿", - "gallery.title": "갤러리 응용 프로그램", - "gallery.viewReadme": "readme 보기", - "job-progress-status.inaccurate": "작업 수는 실시간으로 정확하지 않을 수 있습니다.", - "job-state.active.message": "작업이 현재 실행 중입니다. 작업을 예약할 수 있습니다.", - "job-state.completed.allTasksCompleted.message": "모든 동작이 완료되면, 작업이 성공적으로 완료됩니다.", - "job-state.completed.jmcomplete.message": "작업 관리자 작업이 완료되면 작업이 성공적으로 완료되었습니다.", - "job-state.completed.message": "작업이 완료되었습니다. 더 이상 작업이 허용되지 않습니다.", - "job-state.completed.taskfailed.message": "작업 중 하나가 실패하여 작업이 실패로 완료되었습니다.", - "job-state.completed.timeout.message": "작업 시간이 초과되었습니다. 작업이 제공된 제한 시간보다 오래 실행되었습니다.", - "job-state.completed.userTerminated.message": "사용자에 의해 작업이 완료되었습니다.", - "job-state.deleting.message": "삭제하는 과정을 돌리는 작업", - "job-state.disabled.message": "작업이 비활성화되었습니다. 작업이 실행되지 않습니다.", - "job-state.disabling.message": "작업이 비활성화되는 중입니다.", - "job-state.enabling.message": "작업이 사용 중지 된 상태에서 돌아오는 중입니다.", - "job-state.terminating.message": "작업이 종료 중입니다.", - "list-base.filterApplied": "새 필터가 적용되었습니다. (결과: {count})", - "list-base.filterCleared": "필터가 지워짐, 결과 {count}개", - "location-picker.noLocationInSubscription": "구독 '{name}'에 사용 가능한 위치가 없습니다.", - "main-menu.help.label": "도움말", - "main-menu.help.privacyStatement": "개인정보취급방침", - "main-menu.help.reportIssue": "문제 신고", - "main-menu.help.viewLicense": "라이센스 보기", - "main-navigation.certificates": "인증서", - "main-navigation.dashboard": "대시", - "main-navigation.data": "데이터", - "main-navigation.gallery": "갤러리", - "main-navigation.jobs": "작업", - "main-navigation.jobschedules": "작업 일정", - "main-navigation.label": "기본 탐색", - "main-navigation.packages": "패키지", - "main-navigation.pools": "풀", - "main-navigation.profile": "프로필", - "models.container": "컨테이너", - "models.node": "노드", - "models.nodes": "노드", - "models.pool": "풀", - "models.pools": "풀", - "node-configuration.allocation-time": "할당 시간", - "node-configuration.end-time": "종료 시간", - "node-configuration.exit-code": "종료 코드", - "node-configuration.external-ip": "외부 ip", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "내부 IP", - "node-configuration.is-dedicated": "전용", - "node-configuration.last-boot-time": "마지막 부팅 시간", - "node-configuration.node-agent-version": "노드 에이전트 버전", - "node-configuration.node-size": "노드 크기", - "node-configuration.retry-count": "재시도 횟수", - "node-configuration.run-time": "실행 시간", - "node-configuration.running-tasks-count": "실행중인 작업", - "node-configuration.scheduling-state": "스케줄링 상태", - "node-configuration.start-task-completed": "완료", - "node-configuration.start-task-execution": "작업 실행 시작", - "node-configuration.start-task-not-started": "작업 실행 시작", - "node-configuration.start-task-running": "에 대한 실행", - "node-configuration.start-time": "시작 시간", - "node-configuration.state": "상태", - "node-configuration.state-transition-time": "상태 전환 시간", - "node-configuration.total-tasks-run": "전체 작업 실행", - "node-configuration.total-tasks-succeeded": "총 성공한 작업", - "node-configuration.url": "URL", - "partial-sort-warning.load-all": "모두 불러오기 (시간이 오래 걸릴 수 있음)", - "partial-sort-warning.loading-all": "전체 목록을 불러오는 중입니다. 잠시만 기다려주세요.", - "partial-sort-warning.manual-update": "정렬 중에 목록이 자동으로 업데이트되지 않습니다. (성능상의 이유).", - "partial-sort-warning.message": "모드 엔티티가 로드되지 않아서 일부분만 보이고 있습니다.", - "partial-sort-warning.update": "업데이트", - "pool-details.estimatedCost": "현재 상태에서 이 풀의 예상 비용", - "pool-details.graphs": "그래프", - "pool-details.openInNewWindow": "새 창에서 열기", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "디스크 I/O", - "pool-graphs.diskUsage": "디스크 사용량", - "pool-graphs.last": "Last", - "pool-graphs.memory": "메모리", - "pool-graphs.network": "네트워크", - "pool-graphs.notEnabled": "CPU, 메모리, 디스크 등등", - "pool-graphs.timespan.10min": "10 분", - "pool-graphs.timespan.1h": "1시간", - "pool-graphs.timespan.24h": "24시간", - "pool-graphs.timespan.7d": "7 일", - "pool-graphs.timespan.label": "그래프 시간 범위", - "pool-os-picker.category.container": "컨테이너", - "pool-os-picker.category.dataScience": "데이터 사이언스", - "pool-os-picker.category.distributions": "배포판", - "pool-os-picker.category.rendering": "그래픽 및 렌더링", - "pool-os-picker.containerConfiguration": "컨테이너 구성", - "pool-os-picker.nodeAgentSelection": "선택에 따라 노드 에이전트 '{sku}'가 사용됩니다", - "pool-picker.filterByID": "Id로 검색", - "pool-picker.filterByOS": "OS별로 필터링", - "pool-picker.noneMatching": "현재의 필터와 일치하는 어떠한 Pool도 갖고 있지 않습니다.", - "pool-picker.reset": "다시 설정", - "pool-scale-picker.evaluationInterval.label": "수식 평가 간격", - "pool-scale-picker.resizeTimeout.label": "타임아웃 조정", - "pool-scale-picker.targetDedicatedNodes.label": "전용 노드", - "pool-scale-picker.targetLowPriorityNodes.label": "우선 순위가 낮은 노드", - "pool-scale-picker.type.autoscale": "자동조정", - "pool-scale-picker.type.fixed": "고정 크기", - "pool-scale-picker.type.label": "확장 유형", - "profile-button.about": "에 대한", - "profile-button.logout": "로그아웃", - "profile-button.profile": "프로필", - "profile-button.report": "버그 또는 기능 요청보고", - "profile-button.settings": "설정", - "profile-button.thirdPartyNotices": "제 3자 통지", - "profile-button.viewLogs": "로그 보기", - "profile-button.viewTheme": "테마 색상 보기", - "programmatic-usage.authenticationType": "인증 유형", - "programmatic-usage.credentials": "자격 증명", - "programmatic-usage.setup": "설치", - "programmatic-usage.title": "이 배치 계정의 자격증명 및 코드샘플", - "rerun-task-form.action": "재실행", - "rerun-task-form.subtitle": "이렇게 하면 작업이 삭제되고 동일한 ID로 새 작업이 생성됩니다.", - "rerun-task-form.title": "작업 재실행", - "resource-permission-button.giveRole": "{role} 역활부여", - "resource-permission-button.none": "None", - "resource-permission-button.permission": "사용 권한", - "resource-permission-button.removeAccess": "액세스 제거", - "settings.general": "일반", - "settings.saved": "저장됨", - "settings.title": "설정", - "task-commands.delete": "삭제", - "task-commands.rerun": "재실행", - "task-commands.terminate": "종료", - "task-configuration.affinityId.label": "동일 관심사 ID", - "task-configuration.applicationPackages.application": "응용 프로그램", - "task-configuration.applicationPackages.label": "응용 프로그램 패키지", - "task-configuration.applicationPackages.none": "이 작업에는 응용 프로그램 패키지 참조가 없습니다.", - "task-configuration.applicationPackages.summary": "{count} 애플리케이션 패키지 참조", - "task-configuration.applicationPackages.version": "버전", - "task-configuration.commandLine.label": "명령줄", - "task-configuration.computeNode": "계산된 노드", - "task-configuration.creationTime.label": "만든 시간", - "task-configuration.displayName.label": "표시 이름", - "task-configuration.exitConditions.default": "기본값", - "task-configuration.exitConditions.fileUploadError": "파일 업로드 오류", - "task-configuration.exitConditions.label": "종료 조건", - "task-configuration.exitConditions.noOpExitCodes": "어떤 작업도 수행하지 않는 종료 코드", - "task-configuration.exitConditions.onSchedulingError": "스케줄 오류시", - "task-configuration.exitConditions.terminateJobExitCodes": "작업 종료를 위한 종료 코드", - "task-configuration.general": "일반", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "마지막으로 수정한 날짜", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "조정 명령 라인", - "task-configuration.multiInstanceSettings.label": "다중 인스턴스 설정", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "인스턴스 갯수", - "task-configuration.nodeId.label": "노드 ID", - "task-configuration.nodeUrl.label": "노드 URL", - "task-configuration.outputFiles.destination": "대상", - "task-configuration.outputFiles.label": "출력 파일", - "task-configuration.outputFiles.pattern": "패턴", - "task-configuration.outputFiles.uploadWhen": "업로드 시점", - "task-configuration.pool.label": "풀", - "task-configuration.previousState.label": "이전 상태", - "task-configuration.previousStateTransitionTime.label": "이전 상태 전환 시간", - "task-configuration.state.label": "상태", - "task-configuration.stateTransitionTime.label": "상태 전환 시간", - "task-configuration.taskRootDir.label": "작업 루트 디렉터리", - "task-configuration.taskRootDirUrl.label": "작업 루트 디렉토리 URL", - "task-configuration.userIdentity.label": "사용자 ID", - "task-dependency-browser.no-dependency": "이 작업은 다른 작업에 의존 하지 않습니다.", - "task-node-info.navigateToNode": "노드를 계산하기 위해 이동", - "task-node-info.navigateToPool": "풀으로 이동", - "task-node-info.nodeNotFound": "계산된 노드가 더 이상 존재하지 않습니다.", - "task-node-info.poolNotFound": "풀이 더 이상 존재하지 않습니다.", - "task-resource-files.fileMode": "파일 모드", - "task-resource-files.filePath": "노드 파일 경로", - "task-resource-files.httpUrl": "Http url", - "task-resource-files.none": "이 작업에는 리소스 파일이 없습니다.", - "time-range-picker.customRange": "사용자 지정 범위", - "time-range-picker.errors.invalidRange": "시작 시간은 종료 시간보다 앞서야 합니다.", - "time-range-picker.errors.required": "시작 시간과 종료 시간은 필수입니다.", - "time-range-picker.timeRange": "시간 범위", - "user-account-picker.password": "암호", - "user-account-picker.username": "사용자 이름", - "virtual-network-picker.noneAvailable": "구독 '{subscriptionId}'및 위치 '{location}'에서 사용 가능한 가상 네트워크가 없습니다.", - "virtual-network-picker.notArm": "로컬 배치 계정을 사용할 때 VNET을 사용할 수 없습니다.", - "virtual-network-picker.subnet": "서브넷", - "virtual-network-picker.virtualNetwork": "가상 네트워크" -} diff --git a/desktop/i18n-deprecated/resources.nl.json b/desktop/i18n-deprecated/resources.nl.json deleted file mode 100644 index d652171a4f..0000000000 --- a/desktop/i18n-deprecated/resources.nl.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "create-new-aad-app.secret.label": "Geheim", - "duration-picker.unit.custom": "Aangepast (ISO formaat)", - "duration-picker.unit.days": "Dagen", - "duration-picker.unit.hours": "Uur", - "duration-picker.unit.minutes": "Minuten", - "duration-picker.unit.seconds": "Seconden", - "duration-picker.unit.unlimited": "Onbeperkt", - "entity-command.confirm.multiple.title": "Weet u zeker dat u deze {count} {type} wilt {action}", - "file-viewer-container.notFound": "Bestand {filename} bestaat niet.", - "file-viewer-container.unkownFileType": "Dit bestand heeft geen bekende extensie. Wilt u het nog steeds openen?", - "list-base.filterApplied": "Nieuw filter toegepast, {count} resultaten", - "list-base.filterCleared": "Filter uitgeschakeld, {count} resultaten", - "main-navigation.certificates": "Certificaten", - "main-navigation.data": "Gegevens", - "main-navigation.gallery": "Galerie", - "main-navigation.jobs": "Taken", - "main-navigation.jobschedules": "Taakplanningen", - "main-navigation.packages": "Pakketten", - "main-navigation.pools": "Groepen", - "main-navigation.profile": "Profiel", - "models.pools": "Groepen", - "models.storageAccount": "Opslagaccount", - "partial-sort-warning.loading-all": "Alle entiteiten aan het laden. Een ogenblik geduld.", - "pool-graphs.memory": "Geheugen", - "pool-picker.filterByOS": "Filter op OS", - "profile-button.profile": "Profiel", - "settings.saved": "Opgeslagen", - "task-configuration.outputFiles.destination": "Bestemming", - "task-configuration.outputFiles.pattern": "Patroon", - "user-account-picker.password": "Wachtwoord", - "user-account-picker.username": "Gebruikersnaam" -} \ No newline at end of file diff --git a/desktop/i18n-deprecated/resources.pl.json b/desktop/i18n-deprecated/resources.pl.json deleted file mode 100644 index 408bb4a81f..0000000000 --- a/desktop/i18n-deprecated/resources.pl.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "account-details.resources": "Zasoby", - "account-summary-card.resourceGroup": "Grupa zasobów", - "account-summary-card.url": "Adres URL", - "add-certificate-form.certificate.select": "Wybierz certyfikat", - "add-task-form.action": "Dodaj", - "add-task-form.subtitle": "Dodaj podzadanie do wybranego zadania", - "add-task-form.title": "Dodaj zadanie", - "blob-container-picker.loading": "Ładowanie kontenerów", - "common.apply": "Zastosuj", - "common.configuration": "KONFIGURACJA", - "common.loading": "Ładowanie", - "common.no": "Nie", - "common.none": "brak", - "common.refreshing": "Odświeżanie", - "common.yes": "Tak", - "sig-image-picker.sigImage.label": "Obraz", - "datetime-picker.currentTimeZone": "Bieżąca strefa czasowa", - "duration-picker.unit.custom": "Niestandardowe (format ISO)", - "duration-picker.unit.days": "Dni", - "duration-picker.unit.hours": "Godziny", - "duration-picker.unit.minutes": "Minuty", - "duration-picker.unit.seconds": "Sekundy", - "duration-picker.unit.unlimited": "Bez ograniczeń", - "entity-command.confirm.multiple.title": "Czy na pewno chcesz wykonać akcję {action} dla tych elementów {type} ({count})", - "entity-command.confirm.single.description": "Zamierzasz wykonać akcję {action} {entityId}", - "entity-command.confirm.single.title": "Czy na pewno chcesz wykonać akcję {action} dla tego typu {type}", - "entity-configuration.viewAsJSON": "Pokaż jako JSON", - "file-explorer.path": "ŚCIEŻKA", - "form-footer.buttons.cancel": "Anuluj", - "form-footer.buttons.save": "Zapisz", - "gallery.recentTemplates": "Ostatnie szablony", - "job-progress-status.inaccurate": "Liczba zadań może być niedokładna w czasie rzeczywistym", - "main-menu.help.label": "Pomoc", - "main-menu.help.reportIssue": "Zgłoś problem", - "main-menu.help.viewLicense": "Pokaż licencję", - "main-navigation.certificates": "Certyfikaty", - "main-navigation.dashboard": "Kreska", - "main-navigation.data": "Dane", - "main-navigation.gallery": "Galeria", - "main-navigation.jobs": "Zadania", - "main-navigation.jobschedules": "Harmonogramy zadań", - "main-navigation.packages": "Pakiety", - "main-navigation.pools": "Pule", - "main-navigation.profile": "Profil", - "models.nodes": "Węzły", - "models.pool": "Pula", - "models.pools": "Pule", - "models.storageAccount": "Konto magazynu", - "node-configuration.allocation-time": "Czas alokacji", - "node-configuration.end-time": "Czas zakończenia", - "node-configuration.exit-code": "Kod zakończenia", - "node-configuration.external-ip": "Zewnętrzny adres IP", - "node-configuration.id": "Identyfikator", - "node-configuration.internal-ip": "Wewnętrzny adres IP", - "node-configuration.is-dedicated": "Jest dedykowany", - "node-configuration.last-boot-time": "Ostatni czas rozruchu", - "node-configuration.node-agent-version": "Wersja agenta węzła", - "node-configuration.node-size": "Rozmiar węzła", - "node-configuration.retry-count": "Liczba ponowień próby", - "node-configuration.run-time": "Czas wykonania", - "node-configuration.running-tasks-count": "Uruchomione zadania", - "node-configuration.scheduling-state": "Stan planowania", - "node-configuration.start-task-completed": "Ukończone w", - "node-configuration.start-task-execution": "Rozpocznij wykonywanie zadania", - "node-configuration.start-task-not-started": "Rozpocznij wykonywanie zadania", - "node-configuration.start-task-running": "Uruchomione dla", - "node-configuration.start-time": "Czas rozpoczęcia", - "node-configuration.state": "Stan", - "node-configuration.state-transition-time": "Czas zmiany stanu", - "node-configuration.total-tasks-run": "Całkowite uruchomienie zadania", - "node-configuration.total-tasks-succeeded": "Łączna liczba pomyślnie wykonanych zadań", - "node-configuration.url": "Adres URL", - "partial-sort-warning.load-all": "Załaduj wszystko (może to zająć dużo czasu)", - "partial-sort-warning.loading-all": "Ładowanie wszystkich jednostek. Czekaj.", - "partial-sort-warning.manual-update": "Lista nie będzie automatycznie aktualizowana podczas sortowania (ze względu na wydajność)", - "partial-sort-warning.message": "Wszystkie jednostki nie zostały załadowane, tu pokazywane jest częściowe sortowanie.", - "partial-sort-warning.update": "Aktualizuj", - "pool-graphs.diskUsage": "Użycie dysku", - "pool-graphs.network": "Sieć", - "pool-os-picker.containerConfiguration": "Konfiguracja kontenera", - "pool-picker.reset": "Resetuj", - "pool-scale-picker.type.fixed": "Stały rozmiar", - "profile-button.about": "Informacje", - "profile-button.logout": "Wyloguj się", - "profile-button.profile": "Profil", - "profile-button.report": "Zgłoś błąd lub propozycję funkcji", - "profile-button.settings": "Ustawienia", - "profile-button.thirdPartyNotices": "Uwagi dotyczące innych firm", - "profile-button.viewLogs": "Wyświetl dzienniki", - "profile-button.viewTheme": "Wyświetl kolory motywu", - "rerun-task-form.action": "Uruchom ponownie", - "rerun-task-form.subtitle": "Spowoduje to usunięcie zadania i utworzenie nowego o tym samym identyfikatorze.", - "rerun-task-form.title": "Uruchom ponownie zadanie", - "resource-permission-button.none": "brak", - "resource-permission-button.permission": "Uprawnienie", - "settings.general": "Ogólne", - "settings.saved": "Zapisano", - "settings.title": "Ustawienia", - "task-commands.delete": "Usuń", - "task-configuration.affinityId.label": "Identyfikator koligacji", - "task-configuration.applicationPackages.application": "Aplikacja", - "task-configuration.applicationPackages.label": "Pakiety aplikacji", - "task-configuration.applicationPackages.none": "To zadanie nie zawiera żadnych odwołań do pakietu aplikacji", - "task-configuration.applicationPackages.summary": "Odwołanie pakietu aplikacji ({count})", - "task-configuration.applicationPackages.version": "Wersja", - "task-configuration.commandLine.label": "Wiersz polecenia", - "task-configuration.computeNode": "Węzeł obliczeniowy", - "task-configuration.creationTime.label": "Czas utworzenia", - "task-configuration.displayName.label": "Wyświetl nazwę", - "task-configuration.exitConditions.default": "Domyślny", - "task-configuration.exitConditions.label": "Warunki zakończenia", - "task-configuration.exitConditions.noOpExitCodes": "Kody zakończenia, które niczego nie robią", - "task-configuration.exitConditions.onSchedulingError": "Przy błędzie planowania", - "task-configuration.exitConditions.terminateJobExitCodes": "Kody zakończenia, które przerywają wykonywanie zadania", - "task-configuration.general": "Ogólne", - "task-configuration.id.label": "Identyfikator", - "task-configuration.lastModified.label": "Ostatnia modyfikacja", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "Wiersz polecenia koordynacji", - "task-configuration.multiInstanceSettings.label": "Ustawienia dotyczące wielu wystąpień", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Liczba wystąpień", - "task-configuration.nodeId.label": "Identyfikator węzła", - "task-configuration.nodeUrl.label": "Adres URL węzła", - "task-configuration.outputFiles.destination": "Miejsce docelowe", - "task-configuration.outputFiles.label": "Pliki wyjściowe", - "task-configuration.outputFiles.pattern": "Wzorzec", - "task-configuration.outputFiles.uploadWhen": "Przekaż, gdy", - "task-configuration.pool.label": "Pula", - "task-configuration.previousState.label": "Poprzedni stan", - "task-configuration.previousStateTransitionTime.label": "Poprzedni czas zmiany stanu", - "task-configuration.state.label": "Stan", - "task-configuration.stateTransitionTime.label": "Czas zmiany stanu", - "task-configuration.taskRootDir.label": "Katalog główny zadania", - "task-configuration.taskRootDirUrl.label": "Adres URL katalogu głównego zadania", - "task-configuration.userIdentity.label": "Tożsamość użytkownika", - "task-dependency-browser.no-dependency": "To zadanie nie zależy od żadnych innych zadań", - "task-node-info.nodeNotFound": "Węzęł obliczeniowy już nie istnieje", - "task-resource-files.fileMode": "Tryb plików", - "task-resource-files.filePath": "Ścieżka pliku węzła", - "task-resource-files.none": "To zadanie nie zawiera żadnych plików zasobów", - "user-account-picker.password": "Hasło", - "user-account-picker.username": "Nazwa użytkownika" -} diff --git a/desktop/i18n-deprecated/resources.pt-BR.json b/desktop/i18n-deprecated/resources.pt-BR.json deleted file mode 100644 index 606550ad9a..0000000000 --- a/desktop/i18n-deprecated/resources.pt-BR.json +++ /dev/null @@ -1,311 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "Descrição (Opcional)", - "aad-app-secret-picker.expireIn.label": "Expira em", - "aad-app-secret-picker.secret.label": "Segredo. Um será gerado automaticamente se não fornecido", - "account-cost-card.subtitle": "Os custos exibidos são referentes ao pré-imposto relatado. Por favor, observe que o custo poderá ser parcial.", - "account-cost-card.title": "Custo diário", - "account-cost-card.total": "Total para o período de faturamento", - "account-cost-card.unsupportedSubscription": "Os custos para esta subscrição não podem ser exibidos(Não suportado)", - "account-cost-card.usingLocalAccount": "Não pode obter o custo com a conta local lote", - "account-details.monitoring": "Monitoramento", - "account-details.resources": "Recursos", - "account-monitoring.aggregatedOver": "Agregado sobre intervalo {interval}", - "account-monitoring.coreCount": "Minutos de núcleo", - "account-monitoring.currentNodeStates": "Estados do nó atual", - "account-monitoring.failedTask": "Tarefa com falha", - "account-monitoring.nodeStates": "Estados do nó", - "account-monitoring.notARM": "O monitoramento de conta só é habilitado para contas de lote ARM", - "account-monitoring.taskStates": "Status da Tarefa", - "account-summary-card.resourceGroup": "Grupo de recursos", - "account-summary-card.subscription": "Assinatura", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "Selecione um certificado (pfx ou cer) para carregar", - "add-certificate-form.certificate.invalid": "O certificado precisa ser válido e dos tipos CER ou PFX somente", - "add-certificate-form.certificate.label": "Certificado", - "add-certificate-form.certificate.required": "Por favor, selecione um arquivo de certificado válido", - "add-certificate-form.certificate.select": "Selecionar um certificado", - "add-certificate-form.password.label": "Senha do certificado", - "add-certificate-form.password.required": "Uma senha é necessária se o certificado é no formato '.pfx'", - "add-certificate-form.title": "Criar certificado", - "add-task-form.action": "adicionar", - "add-task-form.subtitle": "Adicionar uma tarefa para o trabalho selecionado", - "add-task-form.title": "Adicionar tarefa", - "batch-account-create.accountName.maxlength": "O nome da conta deve ter comprimento máximo de 64 caracteres", - "batch-account-create.accountName.minLength": "Nome da conta tem um comprimento mínimo de 3 caracteres", - "batch-account-create.accountName.pattern": "Nome da conta pode conter apenas números e letras minúsculas", - "batch-account-create.accountName.required": "Nome da conta é um campo obrigatório", - "batch-account-create.location.reachedQuota": "Você já alcançou sua cota {used} de {quota} contas para a assinatura '{subscription}' neste local. Você pode solicitar um um aumento da sua quota, criar a conta em outro local ou criar a conta em outra assinatura.", - "batch-account-create.location.required": "Localização é um campo obrigatório", - "batch-account-create.resourceGroup.noneAvailable": "Não há grupos de recursos disponíveis na assinatura 'assinatura {}'", - "batch-account-create.resourceGroup.notAllowed": "Você não tem permissão para criar uma conta batch neste grupo de recursos.", - "batch-account-create.resourceGroup.required": "Grupo de recursos é um campo obrigatório", - "batch-account-create.resourceGroup.willCreate": "Este grupo de recurso ainda não existe, e ele será criado antes da conta do lote.", - "batch-account-create.storageAccount.missingSubscription": "Por favor especifique a assinatura e a localização antes de escolher uma conta de armazenamento.", - "batch-account-create.subscription.required": "Assinatura é um campo obrigatório", - "blob-container-picker.loading": "Carregando containers", - "browse-layout.openedAdvancedFilter": "Folha de filtro avançado aberta", - "certificate-references-picker.addOne": "Adicionar um certificado", - "certificate-references-picker.duplicate": "Não pode fazer referência a duas vezes o mesmo certificado {digital}", - "certificate-references-picker.noCertificates": "Sem certificado (s) encontrado para esta conta de lote, favor fazer upload de seu certificado (s) primeiro.", - "common.apply": "Aplicar", - "common.back": "voltar", - "common.configuration": "CONFIGURATION", - "common.confirm": "Confirmar", - "common.loading": "Carregando", - "common.no": "Não", - "common.none": "NENHUM", - "common.rebootAll": "Reiniciar todos", - "common.refresh": "Atualizar", - "common.refreshing": "Atualizando", - "common.required": "Obrigatório", - "common.updated": "Atualizado", - "common.yes": "Sim", - "create-new-aad-app.create": "Criar", - "create-new-aad-app.secret.label": "Segredo", - "create-new-aad-app.title": "Criar uma nova aplicação", - "sig-image-picker.sigImage.label": "Imagem", - "sig-image-picker.errorLoading": "Servidor encontrou um erro ao carregar imagens personalizadas, por favor, tente novamente mais tarde.", - "sig-image-picker.noSigImageAvailable": "Não existem imagens personalizadas nesta região para esta conta", - "sig-image-picker.nodeAgentSku.label": "Agente de nó", - "datetime-picker.currentTimeZone": "Fuso horário atual", - "datetime-picker.date": "Data", - "datetime-picker.pickDate": "Selecione uma data", - "datetime-picker.time": "Hora", - "duration-picker.unit.custom": "Personalizado (formato ISO)", - "duration-picker.unit.days": "Dias", - "duration-picker.unit.hours": "Horas", - "duration-picker.unit.label": "Unidade", - "duration-picker.unit.minutes": "Minutos", - "duration-picker.unit.seconds": "Segundos", - "duration-picker.unit.unlimited": "Ilimitado", - "edit-app-package-form.title": "Editar referências do pacote de aplicação para a pool {poolId}", - "edit-app-package-form.updated": "Pacotes de aplicativos para {poolId} foram atualizados", - "edit-certificate-references-form.title": "Editar referências de certificado para pool {poolId}", - "edit-certificate-references-form.updated": "Certificados para {poolId} foram atualizados", - "editable-table.deleteRow": "Excluir linha", - "entity-command.confirm.multiple.title": "Tem certeza de que deseja {action} este(s) {count} {type}", - "entity-command.confirm.single.description": "Você está prestes a {action} {entityId}", - "entity-command.confirm.single.title": "Tem certeza que deseja {action} este(a) {type}", - "entity-configuration.viewAsJSON": "Exibir como JSON", - "entity-configuration.viewClassic": "Modo de exibição clássico", - "file-explorer.collapseAll": "Recolher tudo", - "file-explorer.noFiles": "Não há arquivos", - "file-explorer.noPathMatch": "Nenhum arquivo encontrado para \"{caminho}\"", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "Não é possível encontrar este arquivo. Verifique o caminho.", - "file-group-picker.create": "Criar um novo grupo de arquivos", - "file-group-picker.warning": "Este grupo de arquivos parece não existir. Ele será criado quando o trabalho for enviado.", - "file-viewer-container.notAllowed": "Arquivo {filename} não pode ser acessado. Servidor retornou o erro forbidden.", - "file-viewer-container.notFound": "Arquivo {filename} não existe.", - "file-viewer-container.unkownFileType": "Este arquivo não tem uma extensão conhecida. Ainda quer abri-lo?", - "form-footer.buttons.andClose": "{action} e Fechar", - "form-footer.buttons.cancel": "Cancelar", - "form-footer.buttons.jsonEditor": "Alterne para o editor de JSON", - "form-footer.buttons.normalForm": "Alterne para o formulário clássico", - "form-footer.buttons.save": "Salvar", - "form-footer.buttons.select": "Selecione", - "gallery.actions": "Ações", - "gallery.myLibrary": "Minha biblioteca", - "gallery.recentTemplates": "Modelos recentes", - "gallery.title": "Aplicativos de galeria", - "gallery.viewReadme": "Visualizar readme", - "job-progress-status.inaccurate": "Contagem de tarefa pode não ser exata em tempo real", - "job-state.active.message": "O Job está sendo executado. A tarefa pode ser agendada.", - "job-state.completed.allTasksCompleted.message": "O Job será concluído quando todas as tarefas forem concluídas", - "job-state.completed.jmcomplete.message": "O Job será concluído com sucesso quando o Job de gerenciamento for concluído.", - "job-state.completed.message": "O Job foi concluído. Nenhuma outra tarefa será aceita.", - "job-state.completed.taskfailed.message": "Trabalho concluído com falha em uma das tarefas.", - "job-state.completed.timeout.message": "O tempo limite para o Job foi esgotado. O Job ficou em estado de execução por mais tempo que limite fornecido.", - "job-state.completed.userTerminated.message": "O Job foi concluído pelo usuário.", - "job-state.deleting.message": "O Job está em processo de exclusão", - "job-state.disabled.message": "O trabalho está desabilitado. Nenhuma tarefa será executada.", - "job-state.disabling.message": "O Job está em processo de desativação.", - "job-state.enabling.message": "O trabalho está retornando com status desativado", - "job-state.terminating.message": "O Job está sendo encerrado.", - "list-base.filterApplied": "Novo filtro aplicado, {count} resultados", - "list-base.filterCleared": "Filtro limpo, {count} resultados", - "location-picker.noLocationInSubscription": "Não há locais disponíveis em assinatura '{nome}'", - "main-menu.help.label": "Ajuda", - "main-menu.help.privacyStatement": "Declaração de Privacidade", - "main-menu.help.reportIssue": "Informar problema", - "main-menu.help.viewLicense": "Visualizar licença", - "main-navigation.certificates": "Certificados", - "main-navigation.dashboard": "Traço", - "main-navigation.data": "Dados", - "main-navigation.gallery": "Galeria", - "main-navigation.jobs": "Trabalhos", - "main-navigation.jobschedules": "Planos de trabalho", - "main-navigation.label": "Navegação principal", - "main-navigation.packages": "Pacotes", - "main-navigation.pools": "Pools", - "main-navigation.profile": "Perfil", - "models.container": "Container", - "models.node": "Nó", - "models.nodes": "Nós", - "models.pool": "Pool", - "models.pools": "Pools", - "models.storageAccount": "Conta de armazenamento", - "node-configuration.allocation-time": "Tempo de alocação", - "node-configuration.end-time": "Hora de término", - "node-configuration.exit-code": "Código de saída", - "node-configuration.external-ip": "Ip externo", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "Ip interno", - "node-configuration.is-dedicated": "É dedicado", - "node-configuration.last-boot-time": "Última inicialização", - "node-configuration.node-agent-version": "Versão do agente de nó", - "node-configuration.node-size": "Tamanho do nó", - "node-configuration.retry-count": "Repetir contagem", - "node-configuration.run-time": "Tempo de execução", - "node-configuration.running-tasks-count": "Executando tarefas", - "node-configuration.scheduling-state": "Estado de agendamento", - "node-configuration.start-task-completed": "Concluída em", - "node-configuration.start-task-execution": "Iniciar a execução da tarefa", - "node-configuration.start-task-not-started": "Iniciar a execução da tarefa", - "node-configuration.start-task-running": "Executando para", - "node-configuration.start-time": "Hora de início", - "node-configuration.state": "Estado", - "node-configuration.state-transition-time": "Tempo de transição de estado", - "node-configuration.total-tasks-run": "Total de Tarefas Executadas", - "node-configuration.total-tasks-succeeded": "Total de tarefas executadas com sucesso", - "node-configuration.url": "URL", - "partial-sort-warning.load-all": "Carregar todos (isto pode demorar muito tempo)", - "partial-sort-warning.loading-all": "Carregando todas as entidades. Por favor aguarde.", - "partial-sort-warning.manual-update": "Lista não será atualizada automaticamente enquanto classificando (por questões de desempenho)", - "partial-sort-warning.message": "Todas as entidades não foram carregadas, esta sendo apresentada uma classificação parcial.", - "partial-sort-warning.update": "Atualização", - "pool-commands.resize": "Redimensionar", - "pool-commands.stopResize": "Parar o redimensionamento", - "pool-details.estimatedCost": "Custo estimado deste pool no estado corrente", - "pool-details.graphs": "Gráficos", - "pool-details.openInNewWindow": "Abrir em uma nova janela", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "Leitra e Escrita de Disco.", - "pool-graphs.diskUsage": "Uso do disco", - "pool-graphs.last": "Último", - "pool-graphs.memory": "Memória", - "pool-graphs.network": "Rede", - "pool-graphs.notEnabled": "CPU, memória, disco, etc.", - "pool-graphs.timespan.10min": "10 minutos", - "pool-graphs.timespan.1h": "Uma hora.", - "pool-graphs.timespan.24h": "24 horas", - "pool-graphs.timespan.7d": "7 dias", - "pool-graphs.timespan.label": "Gráficos de intervalo de tempo", - "pool-os-picker.category.container": "Container", - "pool-os-picker.category.dataScience": "Data science", - "pool-os-picker.category.distributions": "Distribuições", - "pool-os-picker.category.rendering": "Gráficos e renderização", - "pool-os-picker.containerConfiguration": "Configuração do container", - "pool-os-picker.nodeAgentSelection": "Baseado em sua seleção, o seguinte agente '{sku}' será usado", - "pool-picker.filterByID": "Pesquisar por id", - "pool-picker.filterByOS": "Filtrar por sistema operacional", - "pool-picker.noneMatching": "Você não tem pools combinando os filtros atuais.", - "pool-picker.reset": "Redefinir", - "pool-scale-picker.evaluationInterval.label": "Intervalo de fórmula de avaliação", - "pool-scale-picker.resizeTimeout.label": "Redefinir timeout", - "pool-scale-picker.targetDedicatedNodes.label": "Nós dedicados", - "pool-scale-picker.targetLowPriorityNodes.label": "Nós de baixa prioridade", - "pool-scale-picker.type.autoscale": "AutoScale", - "pool-scale-picker.type.fixed": "Tamanho fixo", - "pool-scale-picker.type.label": "Tipo de escala", - "profile-button.about": "Sobre", - "profile-button.logout": "Logout", - "profile-button.profile": "Perfil", - "profile-button.report": "Relatar um bug ou recurso solicitado", - "profile-button.settings": "Configurações", - "profile-button.thirdPartyNotices": "Anúncios de terceiros", - "profile-button.viewLogs": "Exibição de Logs", - "profile-button.viewTheme": "Exibição de cores de tema", - "programmatic-usage.authenticationType": "Tipo de autenticação", - "programmatic-usage.credentials": "Credenciais", - "programmatic-usage.setup": "Configuração", - "programmatic-usage.title": "Credenciais e exemplos de código para esta conta de lote", - "rerun-task-form.action": "Reexecutar", - "rerun-task-form.subtitle": "Isto irá excluir a tarefa e criar uma nova com o mesmo id.", - "rerun-task-form.title": "Reexecutar tarefa", - "resource-permission-button.giveRole": "Dar papel {role}", - "resource-permission-button.none": "NENHUM", - "resource-permission-button.permission": "Permissão", - "resource-permission-button.removeAccess": "Remover o acesso", - "resourcefile-picker.add.dragAndDrop": "Você pode arrastar e soltar os arquivos aqui para que eles sejam carregados automaticamente", - "resourcefile-picker.add.fromStorage": "Adicionar do Azure Storage", - "resourcefile-picker.add.fromURL": "Adicionar URL", - "resourcefile-picker.add.uploadFile": "Upload de arquivo", - "resourcefile-picker.blobPrefix": "Prefixo de BLOB", - "resourcefile-picker.cloudFileDialog.title": "Escolher o(s) arquivo(s) da conta de armazenamento", - "settings.gallerySettings": "Configurações de galeria", - "settings.general": "Geral", - "settings.reset": "Retornar às configurações iniciais", - "settings.saved": "Salvo", - "settings.title": "Configurações", - "storage-error-display.noAutoStorage": "Nenhuma conta de armazenamento vinculados configurada para esta conta de lote. Isso é necessário para o gerenciamento de grupos de arquivos.", - "task-commands.delete": "Excluir", - "task-commands.rerun": "Executar novamente", - "task-commands.terminate": "Terminar", - "task-configuration.affinityId.label": "Identificação de afinidade", - "task-configuration.applicationPackages.application": "Aplicativo", - "task-configuration.applicationPackages.label": "Pacotes de aplicativos", - "task-configuration.applicationPackages.none": "Esta tarefa não contém nenhuma referência de pacote de aplicativo", - "task-configuration.applicationPackages.summary": "referência de pacote de aplicativo {count}", - "task-configuration.applicationPackages.version": "Versão", - "task-configuration.commandLine.label": "Linha de comando", - "task-configuration.computeNode": "Nó de Computação", - "task-configuration.creationTime.label": "Tempo de criação", - "task-configuration.displayName.label": "Nome para Exibição", - "task-configuration.exitConditions.default": "Padrão", - "task-configuration.exitConditions.fileUploadError": "Erro ao fazer upload de arquivo", - "task-configuration.exitConditions.label": "Condições de saída", - "task-configuration.exitConditions.noOpExitCodes": "Códigos de saída que não fazem nada", - "task-configuration.exitConditions.onSchedulingError": "No erro de agendamento", - "task-configuration.exitConditions.terminateJobExitCodes": "Códigos de saída que encerram o trabalho", - "task-configuration.general": "Geral", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Última Modificação", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "Coordenação de linha de comando", - "task-configuration.multiInstanceSettings.label": "Configurações de múltiplas instâncias", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Número de instâncias", - "task-configuration.nodeId.label": "ID do nó", - "task-configuration.nodeUrl.label": "URL do nó", - "task-configuration.outputFiles.destination": "Destino", - "task-configuration.outputFiles.label": "Arquivos de saída", - "task-configuration.outputFiles.pattern": "Padrão", - "task-configuration.outputFiles.uploadWhen": "Quando carregar", - "task-configuration.pool.label": "Pool", - "task-configuration.previousState.label": "Estado anterior", - "task-configuration.previousStateTransitionTime.label": "Tempo de transição de estado anterior", - "task-configuration.state.label": "Estado", - "task-configuration.stateTransitionTime.label": "Tempo de transição de estado", - "task-configuration.taskRootDir.label": "Diretório de raiz de tarefa", - "task-configuration.taskRootDirUrl.label": "URL do diretório raiz da tarefa", - "task-configuration.userIdentity.label": "Identidade de usuário", - "task-dependency-browser.no-dependency": "Esta tarefa não depende de qualquer outras tarefas", - "task-node-info.navigateToNode": "Navegue para o nó de computação", - "task-node-info.navigateToPool": "Navegar para o pool", - "task-node-info.nodeNotFound": "Nó de computação não existe mais", - "task-node-info.poolNotFound": "O pool não existe mais", - "task-resource-files.fileMode": "Modo de arquivo", - "task-resource-files.filePath": "Caminho do arquivo de nó", - "task-resource-files.httpUrl": "Url http", - "task-resource-files.none": "Essa tarefa não contém recurso de arquivos", - "time-range-picker.customRange": "Intervalo personalizado", - "time-range-picker.errors.invalidRange": "Hora de início deve ser menor do que a Hora de fim", - "time-range-picker.errors.required": "Pelo menos a hora de início ou de término deve ser fornecida", - "time-range-picker.quickRange": "Intervalo rápido", - "time-range-picker.timeRange": "Intervalo de tempo", - "timezone-dropdown.tooltip": "Selecione o fuso horário para as datas", - "user-account-picker.gid": "ID do grupo de usuários", - "user-account-picker.linuxConfiguration": "Configuração específica do Linux", - "user-account-picker.loginMode": "Modo de Login", - "user-account-picker.password": "Senha", - "user-account-picker.runAsAdmin": "Executar como administador", - "user-account-picker.sshPrivateKey": "Chave privada SSH", - "user-account-picker.uid": "Id de usuário", - "user-account-picker.username": "Nome do Usuário", - "user-account-picker.windowsConfiguration": "Configuração específica do Windows", - "user-accounts-picker.addOne": "Adicionar uma conta de usuário", - "user-accounts-picker.duplicate": "Não é possível ter 2 usuários com o mesmo nome '{username}'", - "virtual-network-picker.noneAvailable": "Existem redes virtuais disponíveis sob subscrição '{subscriptionId}' local '{location}'.", - "virtual-network-picker.notArm": "Não é possível usar VNET ao usar uma conta de grupo local", - "virtual-network-picker.subnet": "Subrede", - "virtual-network-picker.virtualNetwork": "Rede virtual" -} diff --git a/desktop/i18n-deprecated/resources.pt.json b/desktop/i18n-deprecated/resources.pt.json deleted file mode 100644 index be8216693d..0000000000 --- a/desktop/i18n-deprecated/resources.pt.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "Descrição (Opcional)", - "account-details.monitoring": "Monitorização", - "account-details.resources": "Recursos", - "account-summary-card.resourceGroup": "Grupo de recursos", - "account-summary-card.subscription": "Subscrição", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.label": "Certificado", - "add-certificate-form.certificate.select": "Selecionar um certificado:", - "add-certificate-form.password.label": "Palavra-passe de Certificado", - "add-certificate-form.title": "Criar certificado", - "add-task-form.action": "Adicionar...", - "add-task-form.title": "Adicionar Tarefa", - "common.back": "Anterior\r\n", - "common.configuration": "Configuração", - "common.confirm": "Confirmar", - "common.loading": "A carregar...", - "common.no": "Não", - "common.none": "Nenhum", - "common.refresh": "Atualizar", - "common.refreshing": "A atualizar...", - "common.yes": "Sim", - "create-new-aad-app.create": "Criar", - "create-new-aad-app.secret.label": "Segredo", - "sig-image-picker.sigImage.label": "Imagem", - "duration-picker.unit.days": "dias", - "duration-picker.unit.hours": "Horas", - "duration-picker.unit.label": "Unidade", - "duration-picker.unit.minutes": "Minutos", - "duration-picker.unit.seconds": "Segundos", - "duration-picker.unit.unlimited": "Ilimitado", - "editable-table.deleteRow": "Eliminar linha", - "file-explorer.collapseAll": "Fechar tudo", - "file-explorer.noFiles": "Nenhum ficheiro", - "file-explorer.path": "Caminho", - "form-footer.buttons.cancel": "Cancelar", - "form-footer.buttons.save": "Guardar", - "form-footer.buttons.select": "Selecionar", - "main-menu.help.label": "Ajuda", - "main-menu.help.privacyStatement": "Declaração de Privacidade\r\n", - "main-navigation.certificates": "Certificados", - "main-navigation.dashboard": "Travessão", - "main-navigation.data": "Dados", - "main-navigation.gallery": "Galeria", - "main-navigation.jobs": "Tarefas", - "main-navigation.jobschedules": "Agendas de trabalhos", - "main-navigation.packages": "Pacotes", - "main-navigation.pools": "Conjuntos", - "main-navigation.profile": "Perfil", - "models.container": "Contentor", - "models.node": "nó", - "models.nodes": "nós", - "models.pool": " Conjunto", - "models.pools": "Conjuntos", - "models.storageAccount": "Conta de armazenamento", - "node-configuration.end-time": "Hora de fim:", - "node-configuration.exit-code": "Código de Saída", - "node-configuration.external-ip": "IP externo", - "node-configuration.id": "ID", - "node-configuration.last-boot-time": "Último Arranque", - "node-configuration.node-size": "Tamanho do Nó", - "node-configuration.retry-count": "Contagem de repetições", - "node-configuration.run-time": "Tempo de execução", - "node-configuration.running-tasks-count": "Executar Tarefas", - "node-configuration.start-time": "Hora de início:", - "node-configuration.state": "Estado", - "node-configuration.url": "URL", - "partial-sort-warning.update": "Atualizar", - "pool-commands.resize": "Redimensionar", - "pool-details.graphs": "Gráficos", - "pool-details.openInNewWindow": "Abrir numa janela nova", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskUsage": "Utilização do Disco", - "pool-graphs.last": "Último", - "pool-graphs.memory": "Memória", - "pool-graphs.network": "Rede", - "pool-graphs.timespan.10min": "10 minutos", - "pool-graphs.timespan.1h": "1 Hora", - "pool-graphs.timespan.7d": "7 Dias", - "pool-os-picker.category.container": "Contentor", - "pool-picker.filterByOS": "Filtrar por SO", - "pool-picker.reset": "Repor", - "profile-button.about": "acerca de();", - "profile-button.logout": "Terminar Sessão", - "profile-button.profile": "Perfil", - "profile-button.settings": "Definições", - "profile-button.thirdPartyNotices": "Avisos de terceiros", - "profile-button.viewLogs": "Ver Registos", - "programmatic-usage.authenticationType": "Tipo de autenticação", - "programmatic-usage.credentials": "Credenciais", - "programmatic-usage.setup": "Configuração", - "rerun-task-form.action": "Voltar a executar", - "resource-permission-button.none": "Nenhum", - "resource-permission-button.removeAccess": "Remover acesso", - "settings.general": "Geral", - "settings.saved": "Guardado", - "settings.title": "Definições", - "task-commands.delete": "Eliminar", - "task-commands.terminate": "Terminar", - "task-configuration.affinityId.label": "ID de Afinidade", - "task-configuration.applicationPackages.application": "Aplicação", - "task-configuration.applicationPackages.label": "Pacotes de Aplicações", - "task-configuration.applicationPackages.version": "Versão", - "task-configuration.commandLine.label": "Linha de comandos:", - "task-configuration.creationTime.label": "Hora de Criação", - "task-configuration.displayName.label": "Nome a Apresentar", - "task-configuration.exitConditions.default": "Predefinição", - "task-configuration.general": "Geral", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "Última modificação", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "Número de instâncias", - "task-configuration.nodeId.label": "ID do Nó:", - "task-configuration.outputFiles.destination": "Destino", - "task-configuration.outputFiles.label": "Ficheiros de Saída", - "task-configuration.outputFiles.pattern": "Padrão", - "task-configuration.pool.label": " Conjunto", - "task-configuration.state.label": "Estado", - "task-configuration.userIdentity.label": "Identidade de Utilizador", - "user-account-picker.password": "Palavra-passe", - "user-account-picker.username": "Nome de Utilizador" -} diff --git a/desktop/i18n-deprecated/resources.ru.json b/desktop/i18n-deprecated/resources.ru.json deleted file mode 100644 index c591927ab6..0000000000 --- a/desktop/i18n-deprecated/resources.ru.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "account-details.monitoring": "Мониторинг", - "account-details.resources": "Ресурсы", - "account-summary-card.url": "URL-адрес", - "add-certificate-form.certificate.label": "Сертификат", - "add-certificate-form.certificate.select": "Выберите сертификат", - "add-certificate-form.title": "Создание сертификата", - "add-task-form.action": "добавить", - "browse-layout.openedAdvancedFilter": "Колонка расширенного фильтра открыта", - "common.apply": "Применить", - "common.back": "Назад", - "common.configuration": "CONFIGURATION", - "common.confirm": "Подтверждение", - "common.loading": "Загрузка", - "common.no": "Нет", - "common.none": "NONE", - "common.refresh": "Обновить", - "common.required": "Требуется", - "common.updated": "Обновлен", - "common.yes": "Да", - "create-new-aad-app.create": "Создать", - "sig-image-picker.sigImage.label": "Образ", - "datetime-picker.date": "Дата", - "datetime-picker.time": "Время", - "duration-picker.unit.custom": "Пользовательский (ISO формат)", - "duration-picker.unit.days": "Дни", - "duration-picker.unit.hours": "Часы", - "duration-picker.unit.label": "Единицы", - "duration-picker.unit.minutes": "Минуты", - "duration-picker.unit.seconds": "Секунды", - "duration-picker.unit.unlimited": "Неограниченно", - "file-explorer.path": "Путь", - "form-footer.buttons.cancel": "Отмена", - "form-footer.buttons.jsonEditor": "Переключиться в редактор JSON", - "form-footer.buttons.normalForm": "Переключиться на классический вид", - "form-footer.buttons.save": "Сохранить", - "form-footer.buttons.select": "Выбрать", - "gallery.actions": "Действия", - "job-state.active.message": "Задание выполняется. Сейчас можно запланировать задачу.", - "main-menu.help.label": "Справка", - "main-menu.help.privacyStatement": "Заявление о конфиденциальности", - "main-menu.help.viewLicense": "Просмотр лицензии", - "main-navigation.certificates": "Сертификаты", - "main-navigation.data": "Данные", - "main-navigation.gallery": "Галерея", - "main-navigation.jobs": "Задания", - "main-navigation.jobschedules": "Расписания заданий", - "main-navigation.packages": "Пакеты", - "main-navigation.pools": "Пулы", - "main-navigation.profile": "Профиль", - "models.container": "Контейнер", - "models.node": "Узел", - "models.pools": "Пулы", - "models.storageAccount": "Учетная запись хранения", - "node-configuration.allocation-time": "Время выделения", - "node-configuration.end-time": "Время окончания", - "node-configuration.id": "Идентификатор", - "node-configuration.start-time": "Время начала", - "node-configuration.state": "State", - "node-configuration.url": "URL-адрес", - "partial-sort-warning.update": "Обновить", - "pool-graphs.cpu": "ЦП", - "pool-graphs.last": "Последние", - "pool-graphs.memory": "Память", - "pool-graphs.network": "Сеть", - "pool-graphs.timespan.1h": "1 час", - "pool-graphs.timespan.24h": "24 часа", - "pool-os-picker.category.container": "Контейнер", - "pool-picker.reset": "Сброс", - "profile-button.profile": "Профиль", - "profile-button.settings": "Параметры", - "programmatic-usage.authenticationType": "Тип проверки подлинности", - "programmatic-usage.credentials": "Учетные данные", - "resource-permission-button.none": "NONE", - "resource-permission-button.permission": "Разрешение", - "settings.general": "Общее", - "settings.saved": "Сохранено", - "settings.title": "Параметры", - "task-commands.delete": "Удалить", - "task-commands.rerun": "Запустить повторно", - "task-configuration.applicationPackages.application": "Приложение", - "task-configuration.applicationPackages.none": "Эта задача не содержит ссылок на пакеты приложений", - "task-configuration.applicationPackages.version": "Версия", - "task-configuration.commandLine.label": "Командная строка", - "task-configuration.creationTime.label": "Время создания", - "task-configuration.displayName.label": "Отображаемое имя", - "task-configuration.exitConditions.default": "По умолчанию", - "task-configuration.general": "Общее", - "task-configuration.id.label": "Идентификатор", - "task-configuration.lastModified.label": "Дата изменения", - "task-configuration.nodeId.label": "Идентификатор узла", - "task-configuration.outputFiles.destination": "Назначение", - "task-configuration.outputFiles.pattern": "Шаблон", - "task-configuration.state.label": "State", - "time-range-picker.customRange": "Пользовательский диапазон", - "user-account-picker.password": "Пароль", - "user-account-picker.username": "Имя пользователя", - "virtual-network-picker.subnet": "Подсеть" -} diff --git a/desktop/i18n-deprecated/resources.sv.json b/desktop/i18n-deprecated/resources.sv.json deleted file mode 100644 index 88fd566e0b..0000000000 --- a/desktop/i18n-deprecated/resources.sv.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "duration-picker.unit.days": "Dagar", - "duration-picker.unit.hours": "Timmar", - "duration-picker.unit.minutes": "Minuter", - "duration-picker.unit.seconds": "Sekunder", - "duration-picker.unit.unlimited": "Obegr??nsad", - "main-navigation.certificates": "Certifikat", - "main-navigation.data": "Data", - "main-navigation.gallery": "Galleri", - "main-navigation.jobs": "Jobb", - "main-navigation.jobschedules": "Jobbscheman", - "main-navigation.packages": "Paket", - "main-navigation.pools": "Pooler", - "main-navigation.profile": "Profil", - "models.pools": "Pooler", - "models.storageAccount": "Lagringskonto", - "profile-button.profile": "Profil", - "settings.saved": "Sparade", - "user-account-picker.password": "L??senord", - "user-account-picker.username": "Anv??ndarnamn" -} \ No newline at end of file diff --git a/desktop/i18n-deprecated/resources.tr.json b/desktop/i18n-deprecated/resources.tr.json deleted file mode 100644 index c4f080ab92..0000000000 --- a/desktop/i18n-deprecated/resources.tr.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "account-details.resources": "Kaynaklar", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.required": "Lütfen geçerli bir sertifika dosyası seçin", - "add-certificate-form.certificate.select": "Sertifika seçin", - "add-task-form.action": "Ekle", - "add-task-form.title": "Görev Ekle", - "common.apply": "Uygula", - "common.configuration": "YAPILANDIRMA", - "common.loading": "Yükleniyor", - "common.no": "Hayır", - "common.none": "yok", - "common.yes": "Evet", - "duration-picker.unit.custom": "Custom (ISO biçimi)", - "duration-picker.unit.days": "Gün", - "duration-picker.unit.hours": "Saat", - "duration-picker.unit.label": "Birim", - "duration-picker.unit.minutes": "Dakika", - "duration-picker.unit.seconds": "Saniye", - "duration-picker.unit.unlimited": "Sınırsız", - "file-explorer.collapseAll": "Tümünü Daralt", - "file-explorer.path": "PATH", - "form-footer.buttons.cancel": "İptal", - "form-footer.buttons.save": "Kaydet", - "job-state.completed.allTasksCompleted.message": "Tüm görevler tamamlandığında iş başarıyla tamamlandı", - "job-state.completed.taskfailed.message": "Görevlerden biri başarısız olduğundan, iş bir hata ile sona erdi.", - "job-state.completed.timeout.message": "İş zaman aşımına uğradı. İş belirlenen sınırdan daha uzun süredir yürütülüyor.", - "main-menu.help.label": "Yardım", - "main-navigation.certificates": "Sertifikalar", - "main-navigation.dashboard": "Çizgi", - "main-navigation.data": "Veri", - "main-navigation.gallery": "Galeri", - "main-navigation.jobs": "Toplu İşlem işleri", - "main-navigation.jobschedules": "İş zamanlamaları", - "main-navigation.packages": "Paketler", - "main-navigation.pools": "Havuzlar", - "main-navigation.profile": "Profil", - "models.pools": "Havuzlar", - "models.storageAccount": "Depolama hesabı", - "node-configuration.id": "Kimlik", - "node-configuration.last-boot-time": "Son önyükleme zamanı", - "node-configuration.url": "URL", - "partial-sort-warning.update": "Güncelleştir", - "pool-picker.filterByOS": "İşletim sistemine göre filtrele", - "pool-picker.reset": "Sıfırla", - "profile-button.profile": "Profil", - "profile-button.settings": "Ayarlar", - "resource-permission-button.none": "yok", - "resource-permission-button.permission": "İzin", - "settings.general": "Genel", - "settings.saved": "Kaydedildi", - "settings.title": "Ayarlar", - "task-commands.delete": "Sil", - "task-configuration.applicationPackages.application": "Uygulama", - "task-configuration.applicationPackages.version": "SÜRÜM", - "task-configuration.displayName.label": "Görünen Ad", - "task-configuration.exitConditions.default": "Varsayılan", - "task-configuration.general": "Genel", - "task-configuration.id.label": "Kimlik", - "task-configuration.taskRootDir.label": "Görev kök dizini", - "user-account-picker.password": "Parola", - "user-account-picker.username": "Kullanıcı Adı" -} \ No newline at end of file diff --git a/desktop/i18n-deprecated/resources.zh-Hans.json b/desktop/i18n-deprecated/resources.zh-Hans.json deleted file mode 100644 index d44517cf46..0000000000 --- a/desktop/i18n-deprecated/resources.zh-Hans.json +++ /dev/null @@ -1,307 +0,0 @@ -{ - "aad-app-secret-picker.description.label": "说明 (可选)", - "aad-app-secret-picker.expireIn.label": "过期于", - "aad-app-secret-picker.secret.label": "隐私项。如果未提供, 将自动生成一个", - "account-cost-card.subtitle": "这是税前成本报告。请注意,费用可能是部分的。", - "account-cost-card.title": "日常花费", - "account-cost-card.total": "账单期间合计", - "account-cost-card.unsupportedSubscription": "无法查看此订阅的成本 (不支持)", - "account-cost-card.usingLocalAccount": "不能使用本地批处理帐户获得成本", - "account-details.monitoring": "监控", - "account-details.resources": "资源", - "account-monitoring.aggregatedOver": "在 {interval} 间隔聚合", - "account-monitoring.coreCount": "核心分钟", - "account-monitoring.currentNodeStates": "当前节点状态", - "account-monitoring.failedTask": "失败的任务", - "account-monitoring.nodeStates": "节点状态", - "account-monitoring.notARM": "仅对ARM 批处理帐户启用帐户监视", - "account-monitoring.taskStates": "任务状态", - "account-summary-card.resourceGroup": "资源组", - "account-summary-card.subscription": "订阅", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.description": "选择要上传的证书 (pfx 或 cer)", - "add-certificate-form.certificate.invalid": "证书必须只能是有效的 cer 或 pfx 文件", - "add-certificate-form.certificate.label": "证书", - "add-certificate-form.certificate.required": "请选择一个有效的证书文件", - "add-certificate-form.certificate.select": "选择证书", - "add-certificate-form.password.label": "证书密码", - "add-certificate-form.password.required": "如果证书格式为 \". pfx\", 则需要密码", - "add-certificate-form.title": "创建证书", - "add-task-form.action": "添加", - "add-task-form.subtitle": "向所选作业添加任务", - "add-task-form.title": "添加任务", - "batch-account-create.accountName.maxlength": "帐户名的最大长度为64个字符", - "batch-account-create.accountName.minLength": "帐户名的最小长度为3个字符", - "batch-account-create.accountName.pattern": "帐户名只能包含小写字母和数字", - "batch-account-create.accountName.required": "账户名称是必填字段", - "batch-account-create.location.reachedQuota": "您在这个位置的订阅 \"{subscription}\" 的 {quota}帐户已经达到了配额 {used}。您可以请求增加帐户配额、在其他位置创建帐户或在另一个订阅中创建帐户。", - "batch-account-create.location.required": "区域是必填字段", - "batch-account-create.resourceGroup.noneAvailable": "订阅 \"{subscription}\" 中没有可用的资源组", - "batch-account-create.resourceGroup.notAllowed": "您无权在此资源组下创建批处理帐户", - "batch-account-create.resourceGroup.required": "资源组是必填字段", - "batch-account-create.resourceGroup.willCreate": "此资源组尚未存在, 它将在这批帐户之前创建。", - "batch-account-create.storageAccount.missingSubscription": "请在选择存储帐户之前指定订阅和区域。", - "batch-account-create.subscription.required": "订阅是必填字段", - "blob-container-picker.loading": "容器加载中", - "browse-layout.openedAdvancedFilter": "打开的高级过滤项", - "certificate-references-picker.addOne": "添加证书", - "certificate-references-picker.duplicate": "不能两次引用同一个证书{thumbprint}", - "certificate-references-picker.noCertificates": "未找到此批处理帐户的证书, 请先上传您的证书。", - "common.apply": "应用", - "common.back": "上一步", - "common.configuration": "CONFIGURATION", - "common.confirm": "确认", - "common.loading": "正在加载", - "common.no": "否", - "common.none": "没有", - "common.rebootAll": "全部重新启动", - "common.refresh": "刷新", - "common.refreshing": "正在刷新", - "common.required": "必需", - "common.updated": "已更新", - "common.yes": "是", - "create-new-aad-app.create": "创建", - "create-new-aad-app.secret.label": "隐私", - "create-new-aad-app.title": "创建一个新的应用程序", - "sig-image-picker.sigImage.label": "图片", - "sig-image-picker.errorLoading": "服务器在加载自定义图像时遇到错误, 请稍后再试。", - "sig-image-picker.noSigImageAvailable": "此帐户的区域中没有自定义镜像", - "sig-image-picker.nodeAgentSku.label": "节点代理", - "datetime-picker.currentTimeZone": "当前时区", - "datetime-picker.date": "日期", - "datetime-picker.pickDate": "选择日期", - "datetime-picker.time": "时间", - "duration-picker.unit.custom": "自定义 (ISO 格式)", - "duration-picker.unit.days": "天", - "duration-picker.unit.hours": "小时", - "duration-picker.unit.label": "单位", - "duration-picker.unit.minutes": "分钟", - "duration-picker.unit.seconds": "秒", - "duration-picker.unit.unlimited": "无限制", - "edit-app-package-form.title": "编辑池 {poolId} 应用程序包", - "edit-app-package-form.updated": "{poolId} 的应用程序包已更新", - "edit-certificate-references-form.title": "为池 {poolId} 编辑证书引用", - "edit-certificate-references-form.updated": "{poolId}的证书已更新", - "editable-table.deleteRow": "删除行", - "entity-command.confirm.multiple.title": "您确定要 {action} 这些 {count} {type}", - "entity-command.confirm.single.description": "您将要使用{action} {entityId}", - "entity-command.confirm.single.title": "确实要 {action} 此 {type}", - "entity-configuration.viewAsJSON": "以JSON格式查看", - "entity-configuration.viewClassic": "经典视图", - "file-explorer.collapseAll": "全部折叠", - "file-explorer.noFiles": "没有文件", - "file-explorer.noPathMatch": "找不到在\"{path}\" 的文件", - "file-explorer.path": "PATH", - "file-explorer.unknownFile": "找不到此文件。请检查文件路径。", - "file-group-picker.create": "创建新的文件组", - "file-group-picker.warning": "文件组似乎不存在。将在提交作业时为您创建它。", - "file-viewer-container.notAllowed": "无法访问文件 {filename}。服务器返回禁止的错误", - "file-viewer-container.notFound": "文件 {filename} 不存在。", - "file-viewer-container.unkownFileType": "此文件扩展名未知。是否仍要打开它?", - "form-footer.buttons.andClose": "{action} 和关闭", - "form-footer.buttons.cancel": "取消", - "form-footer.buttons.jsonEditor": "切换到 JSON 编辑器", - "form-footer.buttons.normalForm": "切换到经典格式", - "form-footer.buttons.save": "保存", - "form-footer.buttons.select": "选择", - "gallery.actions": "操作", - "gallery.myLibrary": "我的库", - "gallery.recentTemplates": "最近使用的模板", - "gallery.title": "库应用程序", - "gallery.viewReadme": "查看自述文件", - "job-progress-status.inaccurate": "任务实时计数可能不准确", - "job-state.active.message": "当前作业正在运行。可以安排任务。", - "job-state.completed.allTasksCompleted.message": "当所有任务完成后,作业执行成功", - "job-state.completed.jmcomplete.message": "在作业管理器任务完成后,作业成功结束", - "job-state.completed.message": "作业已完成。不会再接受任何任务。", - "job-state.completed.taskfailed.message": "由于一个任务失败,作业完成失败。", - "job-state.completed.timeout.message": "作业超时。作业的运行时间超过了所提供的限制。", - "job-state.completed.userTerminated.message": "作业已由用户完成", - "job-state.deleting.message": "作业正在被删除的过程中", - "job-state.disabled.message": "作业已禁用。不会运行任何任务。", - "job-state.disabling.message": "任务正在被禁用", - "job-state.enabling.message": "作业正在从禁用状态返回", - "job-state.terminating.message": "作业正在终止", - "list-base.filterApplied": "应用了新的筛选器, {count} 结果", - "list-base.filterCleared": "筛选清除, {count} 结果", - "location-picker.noLocationInSubscription": "订阅 \"{name}\" 中没有可用的区域", - "main-menu.help.label": "帮助", - "main-menu.help.privacyStatement": "隐私声明", - "main-menu.help.reportIssue": "报告问题", - "main-menu.help.viewLicense": "查看许可证", - "main-navigation.certificates": "证书", - "main-navigation.dashboard": "破折号", - "main-navigation.data": "数据", - "main-navigation.gallery": "库", - "main-navigation.jobs": "作业", - "main-navigation.jobschedules": "作业计划", - "main-navigation.label": "主要内容导航", - "main-navigation.packages": "包", - "main-navigation.pools": "池", - "main-navigation.profile": "配置 文件", - "models.container": "容器", - "models.node": "节点", - "models.nodes": "节点集合", - "models.pool": "池", - "models.pools": "池", - "models.storageAccount": "存储帐户", - "node-configuration.allocation-time": "分配时间", - "node-configuration.end-time": "结束时间", - "node-configuration.exit-code": "退出代码", - "node-configuration.external-ip": "外部 ip", - "node-configuration.id": "ID", - "node-configuration.internal-ip": "内部 ip", - "node-configuration.is-dedicated": "是专用", - "node-configuration.last-boot-time": "最后启动时间", - "node-configuration.node-agent-version": "节点代理版本", - "node-configuration.node-size": "节点大小", - "node-configuration.retry-count": "重试次数", - "node-configuration.run-time": "执行时间", - "node-configuration.running-tasks-count": "运行任务", - "node-configuration.scheduling-state": "计划状态", - "node-configuration.start-task-completed": "完成于", - "node-configuration.start-task-execution": "启动任务执行", - "node-configuration.start-task-not-started": "启动任务执行", - "node-configuration.start-task-running": "运行的", - "node-configuration.start-time": "开始时间", - "node-configuration.state": "状态", - "node-configuration.state-transition-time": "状态转换时间", - "node-configuration.total-tasks-run": "全部任务运行", - "node-configuration.total-tasks-succeeded": "全部成功的任务", - "node-configuration.url": "URL", - "partial-sort-warning.load-all": "全部加载 (这可能需要很长时间)", - "partial-sort-warning.loading-all": "正在加载所有实体,请稍候。", - "partial-sort-warning.manual-update": "排序时不会自动更新列表 (性能原因)", - "partial-sort-warning.message": "尚未加载所有实体,这显示了部分排序。", - "partial-sort-warning.update": "更新", - "pool-commands.resize": "调整", - "pool-commands.stopResize": "停止调整大小", - "pool-details.estimatedCost": "当前状态下该池的估计成本", - "pool-details.graphs": "图表", - "pool-details.openInNewWindow": "在新窗口中打开", - "pool-graphs.cpu": "CPU", - "pool-graphs.diskIO": "磁盘 IO", - "pool-graphs.diskUsage": "磁盘使用情况", - "pool-graphs.last": "最后", - "pool-graphs.memory": "内存", - "pool-graphs.network": "网络", - "pool-graphs.notEnabled": "CPU、内存、磁盘等。", - "pool-graphs.timespan.10min": "10分钟", - "pool-graphs.timespan.1h": "1小时", - "pool-graphs.timespan.24h": "24小时", - "pool-graphs.timespan.7d": "7天", - "pool-graphs.timespan.label": "时间段图形", - "pool-os-picker.category.container": "容器", - "pool-os-picker.category.dataScience": "数据科学", - "pool-os-picker.category.distributions": "分发", - "pool-os-picker.category.rendering": "图形和渲染", - "pool-os-picker.containerConfiguration": "容器配置", - "pool-os-picker.nodeAgentSelection": "基于您的选择,节点代理 \"{sku}\"将被使用", - "pool-picker.filterByID": "按 id 搜索", - "pool-picker.filterByOS": "按操作系统筛选", - "pool-picker.noneMatching": "您没有与当前筛选器匹配的任何池。", - "pool-picker.reset": "重置", - "pool-scale-picker.evaluationInterval.label": "公式评估间隔", - "pool-scale-picker.resizeTimeout.label": "调整超时", - "pool-scale-picker.targetDedicatedNodes.label": "专用节点", - "pool-scale-picker.targetLowPriorityNodes.label": "低优先级节点", - "pool-scale-picker.type.autoscale": "自动缩放", - "pool-scale-picker.type.fixed": "固定尺寸", - "pool-scale-picker.type.label": "扩展类型", - "profile-button.about": "关于", - "profile-button.logout": "注销", - "profile-button.profile": "配置 文件", - "profile-button.report": "报告 bug 或功能请求", - "profile-button.settings": "设置", - "profile-button.thirdPartyNotices": "第三方通知", - "profile-button.viewLogs": "查看日志", - "profile-button.viewTheme": "查看主题颜色", - "programmatic-usage.authenticationType": "身份验证类型", - "programmatic-usage.credentials": "凭据", - "programmatic-usage.setup": "设置", - "programmatic-usage.title": "这批帐户的凭据和代码示例", - "rerun-task-form.action": "重新运行", - "rerun-task-form.subtitle": "这将删除该任务并创建一个具有相同ID的新任务。", - "rerun-task-form.title": "重新运行任务", - "resource-permission-button.giveRole": "授予 {role} 角色", - "resource-permission-button.none": "没有", - "resource-permission-button.permission": "权限", - "resource-permission-button.removeAccess": "删除访问权限", - "resourcefile-picker.add.dragAndDrop": "您可以在此处拖放文件以自动上传", - "resourcefile-picker.add.fromStorage": "从 Azure 存储添加", - "resourcefile-picker.add.fromURL": "从网址添加", - "resourcefile-picker.add.uploadFile": "上传文件", - "resourcefile-picker.blobPrefix": "Blob 前缀", - "resourcefile-picker.cloudFileDialog.title": "从存储帐户中选取文件", - "settings.general": "常规", - "settings.title": "设置", - "task-commands.delete": "删除", - "task-commands.rerun": "重新运行", - "task-commands.terminate": "终止", - "task-configuration.affinityId.label": "关联 id", - "task-configuration.applicationPackages.application": "应用程序", - "task-configuration.applicationPackages.label": "应用程序包", - "task-configuration.applicationPackages.none": "此任务不包含应用程序包引用", - "task-configuration.applicationPackages.summary": "{计数} 应用程序包引用", - "task-configuration.applicationPackages.version": "版本", - "task-configuration.commandLine.label": "命令行", - "task-configuration.computeNode": "运算节点", - "task-configuration.creationTime.label": "创建时间", - "task-configuration.displayName.label": "显示名称", - "task-configuration.exitConditions.default": "默认值", - "task-configuration.exitConditions.fileUploadError": "文件上传错误", - "task-configuration.exitConditions.label": "退出条件", - "task-configuration.exitConditions.noOpExitCodes": "不执行任何操作的退出代码", - "task-configuration.exitConditions.onSchedulingError": "在调度错误", - "task-configuration.exitConditions.terminateJobExitCodes": "退出代码终止作业", - "task-configuration.general": "常规", - "task-configuration.id.label": "ID", - "task-configuration.lastModified.label": "上次修改时间", - "task-configuration.multiInstanceSettings.coordinationCommandLine.label": "协调命令行", - "task-configuration.multiInstanceSettings.label": "多实例设置", - "task-configuration.multiInstanceSettings.numberOfInstances.label": "实例数量", - "task-configuration.nodeId.label": "节点 ID", - "task-configuration.nodeUrl.label": "节点 URL", - "task-configuration.outputFiles.destination": "目标", - "task-configuration.outputFiles.label": "输出文件", - "task-configuration.outputFiles.pattern": "模式", - "task-configuration.outputFiles.uploadWhen": "上载时", - "task-configuration.pool.label": "池", - "task-configuration.previousState.label": "前一状态", - "task-configuration.previousStateTransitionTime.label": "上一个状态转换时间", - "task-configuration.state.label": "状态", - "task-configuration.stateTransitionTime.label": "状态过渡时间", - "task-configuration.taskRootDir.label": "任务根目录", - "task-configuration.taskRootDirUrl.label": "任务根目录 URL", - "task-configuration.userIdentity.label": "用户标识", - "task-dependency-browser.no-dependency": "此任务不依赖于任何其他任务", - "task-node-info.navigateToNode": "导航到计算节点", - "task-node-info.navigateToPool": "导航到池", - "task-node-info.nodeNotFound": "计算节点已经不存在了", - "task-node-info.poolNotFound": "池已经不存在了", - "task-resource-files.fileMode": "文件模式", - "task-resource-files.filePath": "节点文件路径", - "task-resource-files.httpUrl": "Http url", - "task-resource-files.none": "此任务不包含任何资源文件", - "time-range-picker.customRange": "自定义范围", - "time-range-picker.errors.invalidRange": "开始时间必须小于结束时间", - "time-range-picker.errors.required": "必须提供至少开始时间或结束时间", - "time-range-picker.quickRange": "快速范围", - "time-range-picker.timeRange": "时间范围", - "timezone-dropdown.tooltip": "选择日期的时区", - "user-account-picker.gid": "用户组 id", - "user-account-picker.linuxConfiguration": "linux 特定配置", - "user-account-picker.loginMode": "登录模式", - "user-account-picker.password": "密码", - "user-account-picker.runAsAdmin": "以管理员身份运行", - "user-account-picker.sshPrivateKey": "SSH 私钥", - "user-account-picker.uid": "用户 id", - "user-account-picker.username": "用户名", - "user-account-picker.windowsConfiguration": "Windows特定配置", - "user-accounts-picker.addOne": "添加用户帐户", - "user-accounts-picker.duplicate": "不能有2个同名的用户 \"{username}\"", - "virtual-network-picker.noneAvailable": "订阅 “{subscriptionId}” 和位置 “{location}” 下没有可用的虚拟网络。", - "virtual-network-picker.notArm": "当使用本地批处理账户时无法使用 VNET", - "virtual-network-picker.subnet": "子网", - "virtual-network-picker.virtualNetwork": "虚拟网络" -} diff --git a/desktop/i18n-deprecated/resources.zh-Hant.json b/desktop/i18n-deprecated/resources.zh-Hant.json deleted file mode 100644 index 6b6b2edb52..0000000000 --- a/desktop/i18n-deprecated/resources.zh-Hant.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "account-details.resources": "資源", - "account-summary-card.url": "URL", - "add-certificate-form.certificate.label": "憑證", - "add-certificate-form.certificate.select": "選取憑證", - "add-task-form.action": "加入", - "batch-account-create.accountName.maxlength": "帳戶名稱最長為 64 個字元", - "browse-layout.openedAdvancedFilter": "已開啟進階篩選刀鋒視窗", - "common.apply": "套用", - "common.back": "上一頁", - "common.configuration": "組態", - "common.confirm": "確認", - "common.loading": "正在載入", - "common.no": "否", - "common.none": "無", - "common.rebootAll": "全部重新開機", - "common.refresh": "重新整理", - "common.required": "必要", - "common.yes": "是", - "create-new-aad-app.create": "建立", - "datetime-picker.date": "日期", - "datetime-picker.time": "時間", - "duration-picker.unit.custom": "自訂 (ISO 格式)", - "duration-picker.unit.days": "日", - "duration-picker.unit.hours": "小時", - "duration-picker.unit.minutes": "分鐘", - "duration-picker.unit.seconds": "秒", - "duration-picker.unit.unlimited": "無限制", - "editable-table.deleteRow": "刪除行", - "file-explorer.path": "PATH", - "form-footer.buttons.cancel": "取消", - "form-footer.buttons.save": "儲存", - "form-footer.buttons.select": "選擇", - "gallery.actions": "動作", - "job-state.completed.userTerminated.message": "作業已由使用者完成", - "main-menu.help.label": "說明", - "main-menu.help.privacyStatement": "隱私權聲明", - "main-navigation.certificates": "憑證", - "main-navigation.dashboard": "破折號", - "main-navigation.data": "資料", - "main-navigation.gallery": "主機庫", - "main-navigation.jobs": "作業", - "main-navigation.jobschedules": "作業排程", - "main-navigation.packages": "封裝", - "main-navigation.pools": "集區", - "main-navigation.profile": "設定檔", - "models.pools": "集區", - "node-configuration.end-time": "結束時間", - "node-configuration.external-ip": "外部 IP", - "node-configuration.id": "識別碼", - "node-configuration.retry-count": "重試計數", - "node-configuration.start-task-not-started": "執行任務", - "node-configuration.start-time": "開始時間", - "node-configuration.state": "狀態", - "node-configuration.url": "URL", - "partial-sort-warning.update": "更新", - "pool-graphs.memory": "記憶體", - "pool-graphs.network": "網路", - "pool-picker.reset": "重設", - "pool-scale-picker.resizeTimeout.label": "重新調整逾時長度", - "profile-button.logout": "登出", - "profile-button.profile": "設定檔", - "profile-button.report": "回報 bug 或功能請求", - "profile-button.settings": "設定", - "profile-button.viewLogs": "查看日誌", - "programmatic-usage.authenticationType": "驗證類型", - "programmatic-usage.credentials": "認證", - "resource-permission-button.giveRole": "給 {role} 角色", - "resource-permission-button.none": "無", - "resource-permission-button.permission": "使用權限", - "settings.general": "一般", - "settings.title": "設定", - "task-commands.delete": "刪除", - "task-configuration.applicationPackages.application": "應用程式", - "task-configuration.applicationPackages.version": "版本", - "task-configuration.commandLine.label": "命令列", - "task-configuration.displayName.label": "顯示名稱", - "task-configuration.exitConditions.default": "預設", - "task-configuration.general": "一般", - "task-configuration.id.label": "識別碼", - "task-configuration.lastModified.label": "上次修改日期", - "task-configuration.nodeId.label": "節點 ID", - "task-configuration.outputFiles.destination": "目的地", - "task-configuration.outputFiles.pattern": "模式", - "task-configuration.state.label": "狀態", - "task-dependency-browser.no-dependency": "此任務不依賴於任何其他任務", - "task-node-info.poolNotFound": "集區已不存在", - "task-resource-files.fileMode": "檔案模式", - "user-account-picker.password": "密碼", - "user-account-picker.username": "使用者名稱" -} diff --git a/desktop/i18n/resources.resjson b/desktop/i18n/resources.resjson index 319ca7f1f0..21cbec954f 100644 --- a/desktop/i18n/resources.resjson +++ b/desktop/i18n/resources.resjson @@ -50,6 +50,11 @@ "auth-service.activate-tenant": "Activate tenant to authorize", "auth-service.tenant-error": "Cannot access resources for tenant {tenantName}", "auth-settings.title": "Authentication Settings", + "auth.cancel-button.label": "Cancel", + "auth.not-logged-in": "You are not logged in. Please log in to continue.", + "auth.signin-button.label": "Sign in", + "auth.tenant-sign-in-title": "Sign in to {tenant}", + "auth.welcome": "Welcome to Azure Batch Explorer", "auto-storage-account-picker.clear-button-label": "Clear", "auto-storage-account-picker.fields.classic": "Classic", "auto-storage-account-picker.fields.location": "Location", @@ -82,6 +87,7 @@ "common.back": "Back", "common.configuration": "Configuration", "common.confirm": "Confirm", + "common.copyright": "Copyright", "common.creationTime": "Creation time", "common.displayName": "Display name", "common.done": "Done", @@ -109,6 +115,7 @@ "common.updated": "Updated", "common.value": "Value", "common.version": "Version", + "common.welcome": "Welcome to Batch Explorer", "common.yes": "Yes", "create-new-aad-app.create": "Create", "create-new-aad-app.secret.label": "Secret", @@ -255,6 +262,7 @@ "main-navigation.dashboard": "Dash", "main-navigation.data": "Data", "main-navigation.gallery": "Gallery", + "main-navigation.home": "Home", "main-navigation.jobs": "Jobs", "main-navigation.jobschedules": "Job schedules", "main-navigation.label": "Main sidebar", @@ -357,11 +365,12 @@ "profile-button.about": "About", "profile-button.authentication": "Authentication", "profile-button.keybindings": "Keybindings", - "profile-button.logout": "Logout", "profile-button.playground": "Playground", "profile-button.profile": "Profile", "profile-button.report": "Report a bug or feature request", "profile-button.settings": "Settings", + "profile-button.sign-in": "Sign in", + "profile-button.sign-out": "Sign out", "profile-button.thirdPartyNotices": "Third party notices", "profile-button.viewLogs": "View logs", "profile-button.viewTheme": "View theme colors", @@ -397,6 +406,8 @@ "select-dropdown.unselected": "Unselected", "server-error.debug-button-label": "Toggle troubleshooting info", "settings.advancedSettings": "Advanced settings", + "settings.external-browser-auth": "Use system browser for authentication", + "settings.external-browser-auth-hint": "Organizations with certain access policies may require sign-in with an internal window. Unset if you experience issues.", "settings.gallerySettings": "Gallery settings", "settings.general": "General", "settings.reset": "Reset to default settings", diff --git a/desktop/package.json b/desktop/package.json index c4343c75d5..57ca6e1e87 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -45,10 +45,7 @@ "build-client:dev": " tsc -p tsconfig.node.json --noUnusedLocals false", "build-app": "npm run webpack -- --profile", "build-python": "pyinstaller python/main.spec -y --distpath=python/dist --workpath=python/build", - "build-i18n": "npm run ts scripts/i18n/generate.ts", - "build-i18n-xliff": "npm run ts scripts/i18n/create-xliff.ts", - "build-i18n-digest": "npm run ts scripts/i18n/digest-xliff.ts", - "build": "npm run clean && npm run build-translations && npm run build-client && npm run build-app && npm run build-i18n", + "build": "npm run clean && npm run build-translations && npm run build-client && npm run build-app", "build:clean": "npm run build", "build:package": "npm run build:prod && npm run build-python && npm run package", "build:prod": "cross-env NODE_ENV=production npm run build", diff --git a/desktop/scripts/i18n/create-xliff.ts b/desktop/scripts/i18n/create-xliff.ts deleted file mode 100644 index 2cbd84d2e2..0000000000 --- a/desktop/scripts/i18n/create-xliff.ts +++ /dev/null @@ -1,29 +0,0 @@ -// eslint-disable no-console -import "../../src/client/init"; - -import * as fs from "fs"; -import mkdirp from "mkdirp"; -import * as path from "path"; -import { promisify } from "util"; -import { XliffSerializer } from "../../src/@batch-flask/compiler"; -import { loadDevTranslations } from "./load-dev-translations"; - -const ensureDir = mkdirp; -const writeFile = promisify(fs.writeFile); - -async function createXliffTranslations() { - const translations = await loadDevTranslations(); - const xliff = XliffSerializer.encode(translations); - const dest = "./i18n/xliffs/resources.en.xlf"; - await ensureDir(path.dirname(dest)); - await writeFile(dest, xliff); - console.log(`Saved compiled xliff to ${dest}`); -} - -async function run() { - await createXliffTranslations(); -} - -run().then(() => { - process.exit(0); -}); diff --git a/desktop/scripts/i18n/digest-xliff.ts b/desktop/scripts/i18n/digest-xliff.ts deleted file mode 100644 index d00c58cb9f..0000000000 --- a/desktop/scripts/i18n/digest-xliff.ts +++ /dev/null @@ -1,35 +0,0 @@ -// eslint-disable no-console -import "../../src/client/init"; - -import * as fs from "fs"; -import globNode from "glob"; -import { promisify } from "util"; -import { XliffSerializer } from "../../src/@batch-flask/compiler"; - -const readFile = promisify(fs.readFile); -const writeFile = promisify(fs.writeFile); -const glob = promisify(globNode); - -async function digestXliffTranslations(file: string) { - const content = await readFile(file); - const result = await XliffSerializer.decode(content.toString()); - const json = JSON.stringify(result.translations, Object.keys(result.translations).sort(), 2); - const dest = `./i18n-deprecated/resources.${result.targetLanguage}.json`; - await writeFile(dest, json); - console.log(`Parsed xliff file ${file} and wrote json translations into ${dest}`); -} - -async function run() { - const files = await glob("./i18n/xliffs/*.xlf", { - ignore: "./i18n/xliffs/*.en.xlf", - }); - console.log(`Found ${files.length} xliff files. Processing and compiling json translations`); - for (const file of files) { - await digestXliffTranslations(file); - } - console.log(`Done compiling json translations`); -} - -run().then(() => { - process.exit(0); -}); diff --git a/desktop/scripts/i18n/generate.ts b/desktop/scripts/i18n/generate.ts deleted file mode 100644 index f7d663b6a4..0000000000 --- a/desktop/scripts/i18n/generate.ts +++ /dev/null @@ -1,25 +0,0 @@ -// eslint-disable no-console -import "../../src/client/init"; - -import * as fs from "fs"; -import { promisify } from "util"; -import { loadDevTranslations } from "./load-dev-translations"; - -const writeFile = promisify(fs.writeFile); - -async function createEnglishTranslations() { - const translations = await loadDevTranslations(); - const content = JSON.stringify(translations, null, 2); - - const dest = "./i18n-deprecated/resources.en.json"; - await writeFile(dest, content); - console.log(`Saved combined english translations (${translations.size}) to ${dest}`); -} - -async function run() { - await createEnglishTranslations(); -} - -run().then(() => { - process.exit(0); -}); diff --git a/desktop/scripts/i18n/load-dev-translations.ts b/desktop/scripts/i18n/load-dev-translations.ts deleted file mode 100644 index 20c1e72d3f..0000000000 --- a/desktop/scripts/i18n/load-dev-translations.ts +++ /dev/null @@ -1,21 +0,0 @@ -// eslint-disable no-console -import { DevTranslationsLoader } from "../../src/@batch-flask/compiler"; - -export async function loadDevTranslations(): Promise<{ [key: string]: string }> { - const loader = new DevTranslationsLoader(); - console.log("Loading dev translations"); - let hasDuplicate = false; - const translations = await loader.load((key, file) => { - console.warn(`${key} is being duplicated. "${file}"`); - hasDuplicate = true; - }); - console.log(`Loaded dev translations (${translations.size})`); - if (hasDuplicate) { - process.exit(1); - } - - return Array.from(translations).reduce((obj, [key, value]) => { - obj[key] = value; - return obj; - }, {}); -} diff --git a/desktop/src/@batch-flask/core/aad/access-token/access-token.model.ts b/desktop/src/@batch-flask/core/aad/access-token/access-token.model.ts index 5e57768be9..2a2a2b8d60 100644 --- a/desktop/src/@batch-flask/core/aad/access-token/access-token.model.ts +++ b/desktop/src/@batch-flask/core/aad/access-token/access-token.model.ts @@ -61,3 +61,8 @@ export class AccessToken { return `${this.tokenType} ${this.accessToken}`; } } + +export interface AuthEvent { + type: "signout" | "cancel"; + message?: string; +} diff --git a/desktop/src/@batch-flask/core/material.module.ts b/desktop/src/@batch-flask/core/material.module.ts index be3865dbb6..70502211c1 100644 --- a/desktop/src/@batch-flask/core/material.module.ts +++ b/desktop/src/@batch-flask/core/material.module.ts @@ -3,6 +3,7 @@ import { NgModule } from "@angular/core"; import { MatAutocompleteModule } from "@angular/material/autocomplete"; import { MatButtonModule } from "@angular/material/button"; import { MatButtonToggleModule } from "@angular/material/button-toggle"; +import { MatSlideToggleModule } from "@angular/material/slide-toggle"; import { MatCheckboxModule } from "@angular/material/checkbox"; import { MatNativeDateModule } from "@angular/material/core"; import { MatDatepickerModule } from "@angular/material/datepicker"; @@ -31,6 +32,7 @@ const modules = [ MatDatepickerModule, MatDialogModule, MatSidenavModule, + MatSlideToggleModule, PortalModule, MatNativeDateModule, ]; diff --git a/desktop/src/@batch-flask/ui/common.i18n.yml b/desktop/src/@batch-flask/ui/common.i18n.yml index c08dfa67e5..b4ac54bf52 100644 --- a/desktop/src/@batch-flask/ui/common.i18n.yml +++ b/desktop/src/@batch-flask/ui/common.i18n.yml @@ -33,3 +33,5 @@ common: value: Value version: Version yes: "Yes" + welcome: Welcome to Batch Explorer + copyright: Copyright diff --git a/desktop/src/@batch-flask/ui/form/form.module.ts b/desktop/src/@batch-flask/ui/form/form.module.ts index 45f7b0b68f..4f1b36901e 100644 --- a/desktop/src/@batch-flask/ui/form/form.module.ts +++ b/desktop/src/@batch-flask/ui/form/form.module.ts @@ -24,6 +24,7 @@ import { InputDirective } from "./input"; import { KeyValuePickerComponent } from "./key-value-picker"; import { SimpleFormComponent } from "./simple-form"; import { SingleLineTextareaDirective } from "./single-line-textarea"; +import { SlideToggleComponent } from "./slide-toggle"; // components // Add submodules there @@ -47,6 +48,7 @@ const components = [ FormPickerItemTemplateDirective, FormSectionComponent, HintComponent, + SlideToggleComponent, InputDirective, KeyValuePickerComponent, SimpleFormComponent, diff --git a/desktop/src/@batch-flask/ui/form/index.ts b/desktop/src/@batch-flask/ui/form/index.ts index 607b1a633e..17106df90e 100644 --- a/desktop/src/@batch-flask/ui/form/index.ts +++ b/desktop/src/@batch-flask/ui/form/index.ts @@ -4,3 +4,4 @@ export * from "./form-picker"; export * from "./form-section"; export * from "./complex-form"; export * from "./simple-form"; +export * from "./slide-toggle"; diff --git a/desktop/src/@batch-flask/ui/form/slide-toggle/index.ts b/desktop/src/@batch-flask/ui/form/slide-toggle/index.ts new file mode 100644 index 0000000000..8432c4cfad --- /dev/null +++ b/desktop/src/@batch-flask/ui/form/slide-toggle/index.ts @@ -0,0 +1 @@ +export * from "./slide-toggle.component"; diff --git a/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.spec.ts b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.spec.ts new file mode 100644 index 0000000000..7551f72441 --- /dev/null +++ b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.spec.ts @@ -0,0 +1,65 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { FormsModule } from "@angular/forms"; +import { MatSlideToggleModule } from "@angular/material/slide-toggle"; +import { By } from "@angular/platform-browser"; +import { SlideToggleComponent } from "./slide-toggle.component"; +import { NoopAnimationsModule } from "@angular/platform-browser/animations"; + +describe("SlideToggleComponent", () => { + let component: SlideToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SlideToggleComponent], + imports: [FormsModule, MatSlideToggleModule, NoopAnimationsModule] + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SlideToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should toggle checked state", () => { + const slideToggle = fixture.debugElement.query(By.css("mat-slide-toggle")); + slideToggle.triggerEventHandler("change", { checked: true }); + fixture.detectChanges(); + expect(component.checked).toBe(true); + + slideToggle.triggerEventHandler("change", { checked: false }); + fixture.detectChanges(); + expect(component.checked).toBe(false); + }); + + it("should emit toggleChange event", () => { + spyOn(component.toggleChange, "emit"); + const slideToggle = fixture.debugElement.query(By.css("mat-slide-toggle")); + slideToggle.triggerEventHandler("change", { checked: true }); + fixture.detectChanges(); + expect(component.toggleChange.emit).toHaveBeenCalledWith(true); + + slideToggle.triggerEventHandler("change", { checked: false }); + fixture.detectChanges(); + expect(component.toggleChange.emit).toHaveBeenCalledWith(false); + }); + + it("should disable the slide toggle", () => { + component.isDisabled = true; + fixture.detectChanges(); + const slideToggle = fixture.debugElement.query(By.css("mat-slide-toggle")); + expect(slideToggle.attributes["ng-reflect-disabled"]).toBe("true"); + }); + + it("should call registerOnChange", () => { + const fn = jasmine.createSpy("onChangeCallback"); + component.registerOnChange(fn); + component.valueChange(true); + expect(fn).toHaveBeenCalledWith(true); + }); +}); diff --git a/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.ts b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.ts new file mode 100644 index 0000000000..4f70a8a128 --- /dev/null +++ b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.component.ts @@ -0,0 +1,43 @@ +import { Component, EventEmitter, Input, Output, forwardRef } from '@angular/core'; +import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; +import "./slide-toggle.scss"; +import { MatSlideToggleChange } from '@angular/material/slide-toggle'; + +@Component({ + selector: "be-slide-toggle", + templateUrl: "./slide-toggle.html", + providers: [{ + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => SlideToggleComponent), + multi: true + }] +}) +export class SlideToggleComponent implements ControlValueAccessor { + @Input() public checked: boolean; + @Input() public isDisabled: boolean = false; + @Output() public toggleChange = new EventEmitter(); + + private onChange = (_: boolean) => { /* void */ }; + + writeValue(value: boolean): void { + this.checked = value; + } + + registerOnChange(fn: any): void { + this.onChange = fn; + } + + registerOnTouched() { + // Do nothing + } + + public valueChange(value: boolean) { + this.checked = value; + this.onChange(value); + } + + public onToggleChange(event: MatSlideToggleChange): void { + this.writeValue(event.checked); + this.toggleChange.emit(event.checked); + } +} diff --git a/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.html b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.html new file mode 100644 index 0000000000..46fc5cb6df --- /dev/null +++ b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.html @@ -0,0 +1,3 @@ + + + diff --git a/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.scss b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.scss new file mode 100644 index 0000000000..e63e5d8a6d --- /dev/null +++ b/desktop/src/@batch-flask/ui/form/slide-toggle/slide-toggle.scss @@ -0,0 +1,13 @@ +@import "app/styles/variables"; + +be-slide-toggle { + .mat-slide-toggle-bar { + background-color: $secondary-background !important; + } + .mat-slide-toggle-thumb { + background-color: $primary-color !important; + } + .mat-slide-toggle.mat-checked .mat-slide-toggle-bar { + background-color: $primary-color-light !important; + } +} diff --git a/desktop/src/app/app.component.ts b/desktop/src/app/app.component.ts index 3986e7a6ab..c4537afc48 100644 --- a/desktop/src/app/app.component.ts +++ b/desktop/src/app/app.component.ts @@ -9,6 +9,8 @@ import { PermissionService } from "@batch-flask/ui/permission"; import { registerIcons } from "app/config"; import { AppTranslationsLoaderService, + AuthSelectRequest, + AuthSelectResult, AuthService, AuthorizationHttpService, BatchAccountService, @@ -24,6 +26,7 @@ import { BEUserConfiguration } from "common"; import { Subject, combineLatest } from "rxjs"; import { takeUntil } from "rxjs/operators"; import { initDesktopEnvironment } from "./environment/desktop-environment"; +import { IpcEvent } from "common/constants"; @Component({ selector: "bl-app", @@ -32,6 +35,10 @@ import { initDesktopEnvironment } from "./environment/desktop-environment"; export class AppComponent implements OnInit, OnDestroy { public isAppReady = false; public fullscreen = false; + public showAuthOverlay = false; + + public authTenantId: string; + public authRequestId: string; @HostBinding("class.batch-explorer") public readonly beCls = true; @HostBinding("class.high-contrast") public isHighContrast = false; @@ -45,13 +52,13 @@ export class AppComponent implements OnInit, OnDestroy { private accountService: BatchAccountService, private navigatorService: NavigatorService, userConfigurationService: UserConfigurationService, - remote: ElectronRemote, + private remote: ElectronRemote, pythonRpcService: PythonRpcService, themeService: ThemeService, private route: ActivatedRoute, permissionService: PermissionService, authHttpService: AuthorizationHttpService, - authService: AuthService, + private authService: AuthService, ipc: IpcService, keybindingService: KeyBindingsService, private telemetryService: TelemetryService, @@ -102,6 +109,21 @@ export class AppComponent implements OnInit, OnDestroy { themeService.currentTheme.pipe(takeUntil(this._destroy)).subscribe((theme) => { this.isHighContrast = theme.isHighContrast; }); + + this.registerAuthEvents(); + let initialNav = false; + this.authService.isLoggedIn().pipe(takeUntil(this._destroy)) + .subscribe((isLoggedIn) => { + if (!isLoggedIn) { + // Always navigate to welcome page if not logged in + this.navigatorService.goto("/welcome"); + } else { + if (!initialNav) { + initialNav = true; + this.navigatorService.goto("/accounts"); + } + } + }); } public ngOnInit() { @@ -123,4 +145,28 @@ export class AppComponent implements OnInit, OnDestroy { new Workspace({ ...endUserWorkspace }), ]); } + + private registerAuthEvents() { + this.authService.on("AuthSelect", (request: AuthSelectRequest) => { + this.showAuthOverlay = true; + this.authTenantId = request.tenantId; + this.authRequestId = request.requestId; + }); + this.authService.on("AuthSelectResult", (result: AuthSelectResult) => { + this.remote.send( + IpcEvent.userAuthSelectResponse(result.requestId), + result + ); + if (result.result === "cancel") { + this.showAuthOverlay = false; + } + }); + this.authService.on("AuthComplete", (result) => { + // Dismiss the overlay only if auth completed + this.showAuthOverlay = false; + }); + this.authService.on("Logout", () => { + this.accountService.clear(); + }); + } } diff --git a/desktop/src/app/app.layout.html b/desktop/src/app/app.layout.html index 496d0fa205..7a41da7b2b 100644 --- a/desktop/src/app/app.layout.html +++ b/desktop/src/app/app.layout.html @@ -30,4 +30,8 @@ + diff --git a/desktop/src/app/app.module.ts b/desktop/src/app/app.module.ts index 9241715c7c..462578696e 100644 --- a/desktop/src/app/app.module.ts +++ b/desktop/src/app/app.module.ts @@ -20,7 +20,9 @@ import { FileModule } from "app/components/file/file.module"; import { LayoutModule } from "app/components/layout"; import { MiscModule } from "app/components/misc"; import { SettingsModule } from "app/components/settings"; +import { WelcomeModule } from "app/components/welcome"; import { BatchExplorerErrorHandler } from "app/error-handler"; +import { AuthModule } from "app/components/auth"; import { routes } from "./app.routes"; import { AuthService, @@ -33,8 +35,10 @@ import { RendererTelemetryModule } from "./services/telemetry"; const modules = [ AccountModule, FileModule, + AuthModule, SettingsModule, LayoutModule, + WelcomeModule, MiscModule, ]; diff --git a/desktop/src/app/app.routes.ts b/desktop/src/app/app.routes.ts index 86370ffc4b..9299f583b1 100644 --- a/desktop/src/app/app.routes.ts +++ b/desktop/src/app/app.routes.ts @@ -9,10 +9,11 @@ import { AccountDefaultComponent, AccountDetailsComponent } from "./components/a import { AccountHomeComponent } from "./components/account/home/account-home.component"; import { AccountMonitoringHomeComponent } from "./components/account/monitoring"; import { PlaygroundRouteComponent } from "./components/misc/playground-route"; +import { WelcomeComponent } from "./components/welcome"; export const routes: Routes = [ - { path: "", redirectTo: "accounts", pathMatch: "full" }, + { path: "", redirectTo: "welcome", pathMatch: "full" }, { component: AccountHomeComponent, path: "accounts", @@ -116,4 +117,8 @@ export const routes: Routes = [ path: "keybindings", component: KeyBindingsComponent, }, + { + path: "welcome", + component: WelcomeComponent, + } ]; diff --git a/desktop/src/app/components/auth/auth-overlay/auth-overlay.component.ts b/desktop/src/app/components/auth/auth-overlay/auth-overlay.component.ts new file mode 100644 index 0000000000..6f03f6d4d2 --- /dev/null +++ b/desktop/src/app/components/auth/auth-overlay/auth-overlay.component.ts @@ -0,0 +1,52 @@ +import { Component, Input, OnInit, ViewChild } from "@angular/core"; +import { AuthService } from "app/services"; +import { autobind } from "@batch-flask/core"; +import { ExternalBrowserAuthToggleComponent } from ".."; + +@Component({ + selector: "be-auth-overlay", + templateUrl: "auth-overlay.html", +}) +export class AuthOverlayComponent implements OnInit { + public tenantName: string; + @Input() public tenantId: string; + @Input() public requestId: string; + + @ViewChild("authToggle") + private authToggleComponent: ExternalBrowserAuthToggleComponent; + + constructor(private authService: AuthService) {} + + public async ngOnInit() { + if (this.tenantId === "organizations") { + this.tenantName = "Azure"; + } else { + this.authService.tenants.subscribe((tenants) => { + const tenant = tenants.find(x => x.tenantId === this.tenantId); + if (tenant) { + this.tenantName = tenant.displayName; + } else { + this.tenantName = this.tenantId; + } + }); + } + } + + @autobind() + public async selectAuth() { + this.sendResponse("success"); + } + + @autobind() + public async cancel() { + this.sendResponse("cancel"); + } + + private sendResponse(result: "success" | "cancel") { + this.authService.authSelectResult({ + result, + requestId: this.requestId, + externalBrowserAuth: this.authToggleComponent.externalBrowserAuth, + }); + } +} diff --git a/desktop/src/app/components/auth/auth-overlay/auth-overlay.html b/desktop/src/app/components/auth/auth-overlay/auth-overlay.html new file mode 100644 index 0000000000..5a45d08100 --- /dev/null +++ b/desktop/src/app/components/auth/auth-overlay/auth-overlay.html @@ -0,0 +1,18 @@ +
+
+

{{"auth.tenant-sign-in-title" | i18n: { tenant: tenantName } }}

+

{{"common.id" | i18n}} {{tenantId}}

+
+ + {{"auth.signin-button.label" | i18n }} + + + {{"auth.cancel-button.label" | i18n }} + +
+ + +
+
diff --git a/desktop/src/app/components/auth/auth-overlay/index.ts b/desktop/src/app/components/auth/auth-overlay/index.ts new file mode 100644 index 0000000000..a3dcac11ba --- /dev/null +++ b/desktop/src/app/components/auth/auth-overlay/index.ts @@ -0,0 +1 @@ +export * from "./auth-overlay.component"; diff --git a/desktop/src/app/components/auth/auth.i18n.yml b/desktop/src/app/components/auth/auth.i18n.yml new file mode 100644 index 0000000000..f40a44f391 --- /dev/null +++ b/desktop/src/app/components/auth/auth.i18n.yml @@ -0,0 +1,8 @@ +auth: + welcome: Welcome to Azure Batch Explorer + not-logged-in: You are not logged in. Please log in to continue. + tenant-sign-in-title: Sign in to {tenant} + signin-button: + label: Sign in + cancel-button: + label: Cancel diff --git a/desktop/src/app/components/auth/auth.module.ts b/desktop/src/app/components/auth/auth.module.ts new file mode 100644 index 0000000000..ccced35482 --- /dev/null +++ b/desktop/src/app/components/auth/auth.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from "@angular/core"; +import { commonModules } from "app/common"; +import { AuthOverlayComponent, ExternalBrowserAuthToggleComponent } from "."; + +const components = [AuthOverlayComponent, ExternalBrowserAuthToggleComponent]; + +@NgModule({ + declarations: components, + exports: components, + imports: commonModules +}) +export class AuthModule { } diff --git a/desktop/src/app/components/auth/external-browser-auth-toggle.component.ts b/desktop/src/app/components/auth/external-browser-auth-toggle.component.ts new file mode 100644 index 0000000000..ce15281c07 --- /dev/null +++ b/desktop/src/app/components/auth/external-browser-auth-toggle.component.ts @@ -0,0 +1,26 @@ +import { Component, OnInit } from "@angular/core"; +import { UserConfigurationService, autobind } from "@batch-flask/core"; +import { BEUserConfiguration } from "common"; + +@Component({ + selector: "be-external-browser-auth-toggle", + templateUrl: "external-browser-auth-toggle.html", +}) +export class ExternalBrowserAuthToggleComponent implements OnInit { + public externalBrowserAuth = false; + + constructor( + public userConfigService: UserConfigurationService + ) {} + + public async ngOnInit() { + this.externalBrowserAuth = + await this.userConfigService.get("externalBrowserAuth"); + } + + @autobind() + public async toggleExternalBrowserAuth(value: boolean) { + await this.userConfigService.set("externalBrowserAuth", value); + this.externalBrowserAuth = value; + } +} diff --git a/desktop/src/app/components/auth/external-browser-auth-toggle.html b/desktop/src/app/components/auth/external-browser-auth-toggle.html new file mode 100644 index 0000000000..baa6caa138 --- /dev/null +++ b/desktop/src/app/components/auth/external-browser-auth-toggle.html @@ -0,0 +1,9 @@ +
+ + {{"settings.external-browser-auth" | i18n }} + +

+ {{"settings.external-browser-auth-hint" | i18n }} +

+
diff --git a/desktop/src/app/components/auth/index.ts b/desktop/src/app/components/auth/index.ts new file mode 100644 index 0000000000..8b0a315cf1 --- /dev/null +++ b/desktop/src/app/components/auth/index.ts @@ -0,0 +1,3 @@ +export * from "./auth-overlay"; +export * from "./external-browser-auth-toggle.component"; +export * from "./auth.module"; diff --git a/desktop/src/app/components/layout/main-navigation/main-navigation.component.ts b/desktop/src/app/components/layout/main-navigation/main-navigation.component.ts index 5d180ab2df..18cbe0be1c 100644 --- a/desktop/src/app/components/layout/main-navigation/main-navigation.component.ts +++ b/desktop/src/app/components/layout/main-navigation/main-navigation.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, HostBinding, OnDestroy } from "@angular/core"; import { I18nService } from "@batch-flask/core"; -import { BatchAccountService } from "app/services"; +import { AuthService, BatchAccountService } from "app/services"; import { Subscription } from "rxjs"; import "./main-navigation.scss"; @@ -13,6 +13,7 @@ import "./main-navigation.scss"; export class MainNavigationComponent implements OnDestroy { public selectedAccountAlias: string; public selectedId: string; + public loggedIn: boolean; @HostBinding("attr.role") public readonly role = "navigation"; @HostBinding("attr.aria-label") public get ariaLabel() { @@ -24,12 +25,18 @@ export class MainNavigationComponent implements OnDestroy { constructor( accountService: BatchAccountService, private changeDetector: ChangeDetectorRef, + authService: AuthService, private i18n: I18nService) { this._accountSub = accountService.currentAccountId.subscribe((accountId) => { this.selectedId = accountId; this.changeDetector.markForCheck(); }); + + authService.isLoggedIn().subscribe((loggedIn) => { + this.loggedIn = loggedIn; + this.changeDetector.markForCheck(); + }); } public ngOnDestroy(): void { diff --git a/desktop/src/app/components/layout/main-navigation/main-navigation.html b/desktop/src/app/components/layout/main-navigation/main-navigation.html index 0796d1c0e0..8a47c64c7c 100644 --- a/desktop/src/app/components/layout/main-navigation/main-navigation.html +++ b/desktop/src/app/components/layout/main-navigation/main-navigation.html @@ -1,40 +1,48 @@
    - -
    {{'main-navigation.dashboard' | i18n}}
    -
    -
    - -
    {{'main-navigation.jobs' | i18n}}
    -
    -
    - - -
    {{'main-navigation.jobschedules' | i18n}}
    -
    -
    - - -
    {{'main-navigation.pools' | i18n}}
    -
    -
    - - -
    {{'main-navigation.packages' | i18n}}
    -
    -
    - - -
    {{'main-navigation.certificates' | i18n}}
    -
    -
    - - -
    {{'main-navigation.data' | i18n}}
    + + +
    {{'main-navigation.dashboard' | i18n}}
    +
    + +
    {{'main-navigation.jobs' | i18n}}
    +
    +
    + + +
    {{'main-navigation.jobschedules' | i18n}}
    +
    +
    + + +
    {{'main-navigation.pools' | i18n}}
    +
    +
    + + +
    {{'main-navigation.packages' | i18n}}
    +
    +
    + + +
    {{'main-navigation.certificates' | i18n}}
    +
    +
    + + +
    {{'main-navigation.data' | i18n}}
    +
    +
    + + +
    {{'main-navigation.gallery' | i18n}}
    +
    +
    - - -
    {{'main-navigation.gallery' | i18n}}
    + + + +
    {{'main-navigation.home' | i18n}}
diff --git a/desktop/src/app/components/layout/main-navigation/main-navigation.i18n.yml b/desktop/src/app/components/layout/main-navigation/main-navigation.i18n.yml index a9dd0f82ae..62eced425d 100644 --- a/desktop/src/app/components/layout/main-navigation/main-navigation.i18n.yml +++ b/desktop/src/app/components/layout/main-navigation/main-navigation.i18n.yml @@ -8,4 +8,5 @@ main-navigation: certificates: Certificates data: Data gallery: Gallery + home: Home profile: Profile diff --git a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.spec.ts b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.spec.ts index 86bd0d5474..2538561c6d 100644 --- a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.spec.ts +++ b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.spec.ts @@ -45,6 +45,8 @@ describe("ProfileButtonComponent", () => { notificationServiceSpy = new NotificationServiceMock(); authServiceSpy = { currentUser: new BehaviorSubject(null), + login: jasmine.createSpy("login"), + logout: jasmine.createSpy("logout"), }; autoUpdateServiceSpy = { @@ -133,6 +135,33 @@ describe("ProfileButtonComponent", () => { expect(items.length).toBe(14); }); + describe("login/logout", () => { + it("shows sign-in when not signed in", () => { + click(clickableEl); + const items = contextMenuServiceSpy.lastMenu.items; + const signInItem = items[items.length - 1] as ContextMenuItem; + expect(signInItem.label).toBe("profile-button.sign-in"); + + // Perform the sign in + signInItem.click(); + expect(authServiceSpy.login).toHaveBeenCalledOnce(); + }); + + it("shows sign-out when signed in", () => { + authServiceSpy.currentUser.next({ + name: "Some Name", + username: "somename" + }); + click(clickableEl); + const items = contextMenuServiceSpy.lastMenu.items; + const signOutItem = items[items.length - 1] as ContextMenuItem; + expect(signOutItem.label).toBe("profile-button.sign-out"); + + // Perform the sign out + signOutItem.click(); + expect(authServiceSpy.logout).toHaveBeenCalledOnce(); + }); + }); describe("Clicking on the profile", () => { it("It shows a context menu", () => { click(clickableEl); @@ -164,7 +193,7 @@ describe("ProfileButtonComponent", () => { expectMenuItem(ContextMenuSeparator); expectMenuItem(MultiContextMenuItem, "Developer"); expectMenuItem(ContextMenuSeparator); - expectMenuItem(ContextMenuItem, "profile-button.logout"); + expectMenuItem(ContextMenuItem, "profile-button.sign-in"); }); it("check for updates and show update notification when there is one", fakeAsync(() => { diff --git a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.ts b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.ts index 9ae0eaf78a..b6e95daca6 100644 --- a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.ts +++ b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.component.ts @@ -133,13 +133,19 @@ export class ProfileButtonComponent implements OnDestroy, OnInit { ); } - items.push( - new ContextMenuSeparator(), - new ContextMenuItem({ - label: this.i18n.t("profile-button.logout"), + items.push(new ContextMenuSeparator()); + + if (this.currentUserName === "") { + items.push(new ContextMenuItem({ + label: this.i18n.t("profile-button.sign-in"), + click: () => this._login() + })); + } else { + items.push(new ContextMenuItem({ + label: this.i18n.t("profile-button.sign-out"), click: () => this._logout() - }) - ); + })); + } items.unshift(this._getAutoUpdateMenuItem()); this.contextMenuService.openMenu(new ContextMenu(items)); @@ -194,7 +200,11 @@ export class ProfileButtonComponent implements OnDestroy, OnInit { } private _logout() { - this.batchExplorer.logoutAndLogin(); + this.authService.logout(); + } + + private _login() { + this.authService.login(); } private async _checkForUpdates(showNotification = true) { @@ -222,7 +232,7 @@ export class ProfileButtonComponent implements OnDestroy, OnInit { if (!OS.isLinux()) { setImmediate(async () => { this.remote.electronApp.removeAllListeners("window-all-closed"); - await this.authService.logout(false); + await this.authService.logout(); this.autoUpdateService.quitAndInstall(); this.remote.getCurrentWindow().close(); }); diff --git a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.i18n.yml b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.i18n.yml index 33411ad874..08be91c0c0 100644 --- a/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.i18n.yml +++ b/desktop/src/app/components/layout/main-navigation/profile-button/profile-button.i18n.yml @@ -9,4 +9,5 @@ profile-button: viewLogs: View logs report: Report a bug or feature request viewTheme: View theme colors - logout: Logout + sign-out: Sign out + sign-in: Sign in diff --git a/desktop/src/app/components/settings/settings.component.spec.ts b/desktop/src/app/components/settings/settings.component.spec.ts index d4ec81105e..763e05945c 100644 --- a/desktop/src/app/components/settings/settings.component.spec.ts +++ b/desktop/src/app/components/settings/settings.component.spec.ts @@ -5,7 +5,7 @@ import { By } from "@angular/platform-browser"; import { NoopAnimationsModule } from "@angular/platform-browser/animations"; import { UserConfigurationService } from "@batch-flask/core"; import { I18nTestingModule, MockUserConfigurationService } from "@batch-flask/core/testing"; -import { FormModule, SelectComponent, SelectModule, ToolbarModule } from "@batch-flask/ui"; +import { FormModule, SelectComponent, SelectModule, SlideToggleComponent, ToolbarModule } from "@batch-flask/ui"; import { ButtonComponent, ButtonsModule } from "@batch-flask/ui/buttons"; import { PermissionService } from "@batch-flask/ui/permission"; import { SettingsComponent } from "app/components/settings"; @@ -25,6 +25,9 @@ describe("SettingsComponent", () => { let resetButtonEl: DebugElement; let resetButton: ButtonComponent; + let externalBrowserAuthToggleEl: DebugElement; + let externalBrowserAuthToggle: SlideToggleComponent; + let settingsServiceSpy: MockUserConfigurationService; let themeSelect: SelectComponent; @@ -54,6 +57,11 @@ describe("SettingsComponent", () => { resetButtonEl = de.query(By.css("bl-button.reset")); resetButton = resetButtonEl.componentInstance; + externalBrowserAuthToggleEl = de.query( + By.css("be-slide-toggle[formControlName=externalBrowserAuth]")); + externalBrowserAuthToggle = + externalBrowserAuthToggleEl.componentInstance; + themeSelect = de.query(By.css("bl-select[formControlName=theme]")).componentInstance; }); @@ -68,6 +76,17 @@ describe("SettingsComponent", () => { expect(resetButton.disabled).toBe(false); }); + it("updates the externalBrowserAuth setting", fakeAsync(() => { + tick(400); + expect(settingsServiceSpy.current.externalBrowserAuth).toBe(true); + externalBrowserAuthToggleEl.triggerEventHandler("toggleChange", false); + tick(1000); + fixture.detectChanges(); + expect(settingsServiceSpy.current.externalBrowserAuth).toBe(false); + tick(1000); + expect(settingsServiceSpy.current.externalBrowserAuth).toBe(false); + })); + it("updates the theme", fakeAsync(() => { tick(400); expect(settingsServiceSpy.current.theme).toEqual("classic"); diff --git a/desktop/src/app/components/settings/settings.component.ts b/desktop/src/app/components/settings/settings.component.ts index 7eaa638185..c076b61034 100644 --- a/desktop/src/app/components/settings/settings.component.ts +++ b/desktop/src/app/components/settings/settings.component.ts @@ -1,6 +1,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from "@angular/core"; import { FormBuilder, FormGroup } from "@angular/forms"; -import { EntityConfigurationView, UserConfigurationService } from "@batch-flask/core"; +import { EntityConfigurationView, UserConfigurationService, autobind } from "@batch-flask/core"; import { BEUserDesktopConfiguration, DEFAULT_BE_USER_CONFIGURATION } from "common"; import { Subject } from "rxjs"; import { debounceTime, takeUntil } from "rxjs/operators"; @@ -22,6 +22,7 @@ export interface SettingsSelection { microsoftPortfolioPath: string; defaultOutputFileGroup: string; theme: string; + externalBrowserAuth: boolean; } @Component({ @@ -47,6 +48,7 @@ export class SettingsComponent implements OnDestroy { formBuilder: FormBuilder) { this.form = formBuilder.group({ theme: [null], + externalBrowserAuth: [true], entityConfigurationDefaultView: [null], subscriptionsIgnore: [[]], fileAssociations: [[]], @@ -62,12 +64,13 @@ export class SettingsComponent implements OnDestroy { defaultOutputFileGroup: [""], }); - this.userConfigurationService.config.pipe(takeUntil(this._destroy)).subscribe((config) => { + this.userConfigurationService.config.pipe(takeUntil(this._destroy)).subscribe((config: BEUserDesktopConfiguration) => { this.modified = JSON.stringify(config) !== JSON.stringify(DEFAULT_BE_USER_CONFIGURATION); this.changeDetector.markForCheck(); const selection: SettingsSelection = { theme: config.theme, + externalBrowserAuth: config.externalBrowserAuth, entityConfigurationDefaultView: config.entityConfiguration.defaultView, subscriptionsIgnore: config.subscriptions.ignore.map(x => ({ pattern: x })), fileAssociations: config.fileAssociations, @@ -102,6 +105,12 @@ export class SettingsComponent implements OnDestroy { }); } + @autobind() + public updateExternalBrowserAuth(value: boolean) { + this.form.get("externalBrowserAuth").setValue(value); + this.changeDetector.markForCheck(); + } + public ngOnDestroy() { this._destroy.next(); this._destroy.complete(); @@ -114,6 +123,7 @@ export class SettingsComponent implements OnDestroy { private _buildConfig(selection: SettingsSelection): Partial { return { theme: selection.theme, + externalBrowserAuth: selection.externalBrowserAuth, fileAssociations: selection.fileAssociations, entityConfiguration: { defaultView: selection.entityConfigurationDefaultView, diff --git a/desktop/src/app/components/settings/settings.html b/desktop/src/app/components/settings/settings.html index 6fa2070133..e8b98baae0 100644 --- a/desktop/src/app/components/settings/settings.html +++ b/desktop/src/app/components/settings/settings.html @@ -19,6 +19,15 @@

{{'settings.general' | i18n}}

+
+ + {{"settings.external-browser-auth" | i18n}} + +

+ {{"settings.external-browser-auth-hint" | i18n}} +

+
diff --git a/desktop/src/app/components/settings/settings.i18n.yml b/desktop/src/app/components/settings/settings.i18n.yml index 30464133fd..52f9cdbaeb 100644 --- a/desktop/src/app/components/settings/settings.i18n.yml +++ b/desktop/src/app/components/settings/settings.i18n.yml @@ -5,3 +5,5 @@ settings: advancedSettings: Advanced settings gallerySettings: Gallery settings reset: Reset to default settings + external-browser-auth: Use system browser for authentication + external-browser-auth-hint: Organizations with certain access policies may require sign-in with an internal window. Unset if you experience issues. diff --git a/desktop/src/app/components/tenant-picker/tenant-card.component.ts b/desktop/src/app/components/tenant-picker/tenant-card.component.ts index 18c142ae21..ef475e7cc6 100644 --- a/desktop/src/app/components/tenant-picker/tenant-card.component.ts +++ b/desktop/src/app/components/tenant-picker/tenant-card.component.ts @@ -1,5 +1,5 @@ import { Component, ChangeDetectionStrategy, OnDestroy, Input, EventEmitter, Output, OnChanges } from "@angular/core"; -import { I18nService, TenantSettingsService } from "@batch-flask/core"; +import { I18nService, TenantSettingsService, autobind } from "@batch-flask/core"; import { TenantDetails } from "app/models"; import { TenantAuthorization, TenantStatus } from "app/services"; import { Subject } from "rxjs"; @@ -19,6 +19,7 @@ export class TenantCardComponent implements OnDestroy, OnChanges { status: TenantStatus; tenant: TenantDetails; active: boolean; + canReauthenticate: boolean; // Required for supporting enums within Angular templates tenantStatus = TenantStatus; @@ -31,7 +32,6 @@ export class TenantCardComponent implements OnDestroy, OnChanges { private i18n: I18nService, private settingsService: TenantSettingsService ) { - this.refresh = this.refresh.bind(this); } public ngOnDestroy() { @@ -43,6 +43,7 @@ export class TenantCardComponent implements OnDestroy, OnChanges { this.status = this.authorization.status; this.tenant = this.authorization.tenant; this.active = this.authorization.active; + this.updateCanReauthenticate(); } statusText = () => this.i18n.t(`tenant-card.status-${this.status}`); @@ -58,9 +59,17 @@ export class TenantCardComponent implements OnDestroy, OnChanges { this.tenant.tenantId, observed.checked); this.active = observed.checked; + this.updateCanReauthenticate(); this.refresh(this.active); } + private updateCanReauthenticate() { + this.canReauthenticate = this.active && + !this.isHomeTenant() && + this.status !== TenantStatus.authorized; + } + + @autobind() refresh(reauthenticate = false) { this.refreshTenant.emit({ tenantId: this.tenant.tenantId, diff --git a/desktop/src/app/components/tenant-picker/tenant-card.html b/desktop/src/app/components/tenant-picker/tenant-card.html index c01813e2a6..c4f15d9198 100644 --- a/desktop/src/app/components/tenant-picker/tenant-card.html +++ b/desktop/src/app/components/tenant-picker/tenant-card.html @@ -42,9 +42,11 @@ {{authorization.message}}
{{authorization.messageDetails}}
+ +
{{"tenant-card.reauthenticate-button" | i18n}} diff --git a/desktop/src/app/components/tenant-picker/tenant-card.scss b/desktop/src/app/components/tenant-picker/tenant-card.scss index 9d669dc0fe..01e6851175 100644 --- a/desktop/src/app/components/tenant-picker/tenant-card.scss +++ b/desktop/src/app/components/tenant-picker/tenant-card.scss @@ -51,6 +51,9 @@ be-tenant-card { white-space: pre-wrap; } } + .tenant-reauth { + text-align: right; + } } max-width: $tenant-card-width; diff --git a/desktop/src/app/components/tenant-picker/tenant-picker.component.spec.ts b/desktop/src/app/components/tenant-picker/tenant-picker.component.spec.ts new file mode 100644 index 0000000000..86d698d889 --- /dev/null +++ b/desktop/src/app/components/tenant-picker/tenant-picker.component.spec.ts @@ -0,0 +1,99 @@ +import { ComponentFixture, TestBed } from "@angular/core/testing"; +import { Component, DebugElement, NO_ERRORS_SCHEMA } from "@angular/core"; +import { of } from "rxjs"; +import { AuthService } from "app/services"; +import { TenantPickerComponent } from "./tenant-picker.component"; +import { I18nTestingModule } from "@batch-flask/core/testing"; +import { TenantCardComponent } from "."; +import { By } from "@angular/platform-browser"; + +@Component({ + template: ``, +}) +class TestComponent { +} + +describe("TenantPickerComponent", () => { + let fixture: ComponentFixture; + let de: DebugElement; + let component: TenantPickerComponent; + let authServiceMock: any; + + beforeEach(async () => { + authServiceMock = { + isLoggedIn: jasmine.createSpy("isLoggedIn").and.returnValue(of(true)), + getTenantAuthorizations: + jasmine.createSpy("getTenantAuthorizations") + .and.returnValue(of([])) + }; + + await TestBed.configureTestingModule({ + imports: [ + I18nTestingModule, + ], + declarations: [ + TenantPickerComponent, + TenantCardComponent, + TestComponent, + ], + providers: [ + { provide: AuthService, useValue: authServiceMock } + ], + schemas: [NO_ERRORS_SCHEMA], + }).compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(TestComponent); + de = fixture.debugElement.query(By.css("be-tenant-picker")); + component = de.componentInstance; + fixture.detectChanges(); + }); + + it("should create", () => { + expect(component).toBeTruthy(); + }); + + it("should initialize tenantSettings form control", () => { + expect(component.tenantSettings.value).toEqual([]); + }); + + it("should call fetchTenantAuthorizations on initialization if logged in", () => { + expect(authServiceMock.isLoggedIn).toHaveBeenCalled(); + expect(authServiceMock.getTenantAuthorizations).toHaveBeenCalled(); + }); + + it("should propagate changes when tenantSettings value changes", () => { + const propagateChangeSpy = jasmine.createSpy("propagateChange"); + component.registerOnChange(propagateChangeSpy); + + const newValue = [{ tenantId: "1", authorization: "auth1" }]; + component.tenantSettings.setValue(newValue); + + expect(propagateChangeSpy).toHaveBeenCalledWith(newValue); + }); + + it("should call fetchTenantAuthorizations with reauthenticate on refresh", () => { + const fetchTenantAuthorizationsSpy = + spyOn(component, "fetchTenantAuthorizations") + .and.callThrough(); + component.refresh(); + expect(fetchTenantAuthorizationsSpy).toHaveBeenCalledWith({ reauthenticate: true }); + }); + + it("should call fetchTenantAuthorizations with specific tenant on refreshTenant", () => { + const fetchTenantAuthorizationsSpy = + spyOn(component, "fetchTenantAuthorizations").and.callThrough(); + const refreshData = { tenantId: "1", reauthenticate: true }; + component.refreshTenant(refreshData); + expect(fetchTenantAuthorizationsSpy).toHaveBeenCalledWith(refreshData); + }); + + it("should clean up on destroy", () => { + const destroySpy = spyOn(component["_destroy"], "next"); + const completeSpy = spyOn(component["_destroy"], "complete"); + component.ngOnDestroy(); + expect(destroySpy).toHaveBeenCalled(); + expect(completeSpy).toHaveBeenCalled(); + }); +}); diff --git a/desktop/src/app/components/tenant-picker/tenant-picker.component.ts b/desktop/src/app/components/tenant-picker/tenant-picker.component.ts index de3c60a882..0f40dbda3a 100644 --- a/desktop/src/app/components/tenant-picker/tenant-picker.component.ts +++ b/desktop/src/app/components/tenant-picker/tenant-picker.component.ts @@ -3,6 +3,7 @@ import { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR } from "@angular/f import { AuthService, reauthenticateAll, TenantAuthorization } from "app/services"; import { Subject, throwError } from "rxjs"; import { catchError, first, takeUntil } from "rxjs/operators"; +import { autobind } from "@batch-flask/core"; import "./tenant-picker.scss"; @@ -33,6 +34,8 @@ export class TenantPickerComponent implements ControlValueAccessor, OnDestroy { public tenantSettings = new FormControl([]); public saved: false; + public loggedIn: boolean; + public loaded = false; private _destroy = new Subject(); private _propagateChange?: TenantSettingsChanged; @@ -48,8 +51,14 @@ export class TenantPickerComponent implements ControlValueAccessor, OnDestroy { this._propagateChange(value); } }); - this.fetchTenantAuthorizations(); - this.refresh = this.refresh.bind(this); + this.auth.isLoggedIn().subscribe((loggedIn) => { + this.loggedIn = loggedIn; + if (loggedIn) { + this.fetchTenantAuthorizations(); + } + this.loaded = true; + this.changeDetector.markForCheck(); + }); } private fetchTenantAuthorizations(data: TenantRefreshModel = {}) { @@ -89,6 +98,7 @@ export class TenantPickerComponent implements ControlValueAccessor, OnDestroy { // NOOP } + @autobind() public refresh() { // Refresh all tenants from the server this.fetchTenantAuthorizations({ reauthenticate: true }); diff --git a/desktop/src/app/components/tenant-picker/tenant-picker.html b/desktop/src/app/components/tenant-picker/tenant-picker.html index 8fcfc26413..f3e06a72df 100644 --- a/desktop/src/app/components/tenant-picker/tenant-picker.html +++ b/desktop/src/app/components/tenant-picker/tenant-picker.html @@ -1,4 +1,4 @@ -
+

{{'tenant-picker.title' | i18n}}

@@ -20,3 +20,6 @@

{{'tenant-picker.title' | i18n}}

+ +
+
diff --git a/desktop/src/app/components/welcome/index.ts b/desktop/src/app/components/welcome/index.ts new file mode 100644 index 0000000000..849c2329f2 --- /dev/null +++ b/desktop/src/app/components/welcome/index.ts @@ -0,0 +1,2 @@ +export * from "./welcome.component"; +export * from "./welcome.module"; diff --git a/desktop/src/app/components/welcome/welcome.component.spec.ts b/desktop/src/app/components/welcome/welcome.component.spec.ts new file mode 100644 index 0000000000..5e1f684a23 --- /dev/null +++ b/desktop/src/app/components/welcome/welcome.component.spec.ts @@ -0,0 +1,3 @@ +describe("WelcomeComponent", () => { + it("allows users to log in with an external browser"); +}); diff --git a/desktop/src/app/components/welcome/welcome.component.ts b/desktop/src/app/components/welcome/welcome.component.ts new file mode 100644 index 0000000000..134cb3a420 --- /dev/null +++ b/desktop/src/app/components/welcome/welcome.component.ts @@ -0,0 +1,29 @@ +import { Component } from "@angular/core"; +import { AuthService, NavigatorService } from "app/services"; +import { autobind } from "@batch-flask/core"; +import { first } from "rxjs/operators"; + +@Component({ + selector: "be-welcome", + templateUrl: "./welcome.html", +}) +export class WelcomeComponent { + public static breadcrumb() { + return { name: "Home" }; + } + + constructor( + private authService: AuthService, + private navigationService: NavigatorService + ) {} + + @autobind() + public async signIn() { + await this.authService.login(); + this.authService.isLoggedIn().pipe(first()).subscribe((isLoggedIn) => { + if (isLoggedIn) { + this.navigationService.goto("/accounts"); + } + }); + } +} diff --git a/desktop/src/app/components/welcome/welcome.html b/desktop/src/app/components/welcome/welcome.html new file mode 100644 index 0000000000..64bcc2feee --- /dev/null +++ b/desktop/src/app/components/welcome/welcome.html @@ -0,0 +1,13 @@ +
+
+

{{"common.welcome" | i18n}}

+
+ + {{"auth.tenant-sign-in-title" | i18n: { tenant: "Azure" } }} + +
+ + +
+
diff --git a/desktop/src/app/components/welcome/welcome.module.ts b/desktop/src/app/components/welcome/welcome.module.ts new file mode 100644 index 0000000000..a52aacceba --- /dev/null +++ b/desktop/src/app/components/welcome/welcome.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from "@angular/core"; +import { commonModules } from "app/common"; +import { WelcomeComponent } from "."; +import { AuthModule } from "../auth"; + +const components = [WelcomeComponent]; + +@NgModule({ + declarations: components, + exports: components, + imports: [ ...commonModules, AuthModule ], +}) +export class WelcomeModule { } diff --git a/desktop/src/app/services/aad/auth.service.spec.ts b/desktop/src/app/services/aad/auth.service.spec.ts index 5902a062ef..4682d33db3 100644 --- a/desktop/src/app/services/aad/auth.service.spec.ts +++ b/desktop/src/app/services/aad/auth.service.spec.ts @@ -24,8 +24,14 @@ const token2 = new AccessToken({ tokenType: "Bearer" }); -describe("AuthService spec", () => { - let service: AuthService; +class AuthServiceStub extends AuthService { + public getTokenCache() { + return (this as any).tokenCache; + } +} + +describe("AuthService", () => { + let service: AuthServiceStub; let aadServiceSpy; let remoteSpy; let batchExplorerSpy; @@ -83,7 +89,7 @@ describe("AuthService spec", () => { ] }); - service = new AuthService( + service = new AuthServiceStub( zoneSpy, batchExplorerSpy, remoteSpy, @@ -215,7 +221,58 @@ describe("AuthService spec", () => { }); }); expect(remoteSpy.send).toHaveBeenCalledTimes(2); + }); + + it("returns cached token if available and not expired", (done) => { + const cachedToken = new AccessToken({ + accessToken: "cachedToken", + expiresOn: DateTime.local().plus({ hours: 1 }).toJSDate(), + tokenType: "Bearer" + }); + service.getTokenCache().storeToken(FakeTenants.One, resource1, cachedToken); + + service.accessTokenData(FakeTenants.One, resource1).subscribe((token) => { + expect(token).toEqual(cachedToken); + done(); + }); + }); + + it("fetches a new token if no cached token is available", (done) => { + service.getTokenCache().removeToken(FakeTenants.One, resource1); + + service.accessTokenData(FakeTenants.One, resource1).subscribe((token) => { + expect(remoteSpy.send).toHaveBeenCalledOnce(); + expect(token).toEqual(token1); + done(); + }); + }); + + it("fetches a new token if cached token is expired", (done) => { + const expiredToken = new AccessToken({ + accessToken: "expiredToken", + expiresOn: DateTime.local().minus({ hours: 1 }).toJSDate(), + tokenType: "Bearer" + }); + service.getTokenCache().storeToken(FakeTenants.One, resource1, expiredToken); + + service.accessTokenData(FakeTenants.One, resource1).subscribe((token) => { + expect(remoteSpy.send).toHaveBeenCalledOnce(); + expect(token).toEqual(token1); + done(); + }); + }); + + it("handles errors correctly", (done) => { + remoteSpy.send.and.returnValue(Promise.reject("some-error")); + + service.accessTokenData(FakeTenants.One, resource1).subscribe({ + next: () => fail("Should not have a next() call"), + error: (error) => { + expect(error).toEqual("some-error"); + done(); + } }); + }); }); it("updates the tenants when updated by the auth service", () => { @@ -338,5 +395,137 @@ describe("AuthService spec", () => { forceRefresh: true }); }); + + it("doesn't notify on error if notifyOnError is false", async () => { + remoteSpy.send.and.callFake(async (_, { tenantId }) => { + if (tenantId === FakeTenants.One) { + throw new Error("Fake error for tenant-1"); + } else { + return token2; + } + }); + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active" + }); + const authorizations = await auth({ notifyOnError: false }); + expect(tenantErrorServiceSpy.showError).not.toHaveBeenCalled(); + }); + + it("caches authorization state for failed tenants", async () => { + remoteSpy.send.and.callFake(async (_, { tenantId }) => { + if (tenantId === FakeTenants.One) { + throw new Error("Fake error for tenant-1"); + } else { + return token2; + } + }); + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active", + [FakeTenants.Two]: "active" + }); + await auth(); + remoteSpy.send.calls.reset(); + const authorizations = await auth(); + expect(remoteSpy.send).not.toHaveBeenCalledWith( + IpcEvent.AAD.accessTokenData, { + tenantId: FakeTenants.One, + resource: null, + forceRefresh: false + }); + expect(authorizations[0].status).toEqual("failed"); + }); + + it("refreshes token if forceRefresh is true", async () => { + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active" + }); + await auth({ reauthenticate: FakeTenants.One }); + expect(remoteSpy.send).toHaveBeenCalledWith( + IpcEvent.AAD.accessTokenData, { + tenantId: FakeTenants.One, + resource: null, + forceRefresh: true + }); + }); + + it("does not refresh token if forceRefresh is false", async () => { + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active" + }); + await auth(); + expect(remoteSpy.send).toHaveBeenCalledWith( + IpcEvent.AAD.accessTokenData, { + tenantId: FakeTenants.One, + resource: null, + forceRefresh: false + }); + }); + + it("emits AuthComplete event after fetching token", async () => { + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active" + }); + const authCompleteSpy = jasmine.createSpy("authComplete"); + service.on("AuthComplete", authCompleteSpy); + await auth(); + expect(authCompleteSpy).toHaveBeenCalled(); + }); + + it("does not emit AuthComplete event if fetching token fails", async () => { + tenantSettingsServiceSpy.current.next({ + [FakeTenants.One]: "active" + }); + const authCompleteSpy = jasmine.createSpy("authComplete"); + service.on("AuthComplete", authCompleteSpy); + remoteSpy.send.and.callFake(async (_, { tenantId }) => { + if (tenantId === FakeTenants.One) { + throw new Error("Fake error for tenant-1"); + } else { + return token2; + } + }); + await auth(); + expect(authCompleteSpy).not.toHaveBeenCalled(); + }); + }); + + describe("#logout", () => { + it("clears the token cache and emits Logout event", async () => { + const logoutSpy = jasmine.createSpy("logout"); + service.on("Logout", logoutSpy); + + await service.logout(); + + expect(remoteSpy.send).toHaveBeenCalledWith(IpcEvent.logout); + expect(service.getTokenCache().hasToken(FakeTenants.One, resource1)).toBeFalse(); + expect(logoutSpy).toHaveBeenCalledOnce(); + }); + }); + + describe("#login", () => { + it("sends the login IPC event", async () => { + await service.login(); + expect(remoteSpy.send).toHaveBeenCalledWith(IpcEvent.login); + }); + }); + + describe("#isLoggedIn", () => { + it("returns true when user is logged in", (done) => { + aadServiceSpy.currentUser.next({ name: "test-user" }); + + service.isLoggedIn().subscribe((isLoggedIn) => { + expect(isLoggedIn).toBeTrue(); + done(); + }); + }); + + it("returns false when user is not logged in", (done) => { + aadServiceSpy.currentUser.next(null); + + service.isLoggedIn().subscribe((isLoggedIn) => { + expect(isLoggedIn).toBeFalse(); + done(); + }); + }); }); }); diff --git a/desktop/src/app/services/aad/auth.service.ts b/desktop/src/app/services/aad/auth.service.ts index 84b759e2cf..7fa23cba0f 100644 --- a/desktop/src/app/services/aad/auth.service.ts +++ b/desktop/src/app/services/aad/auth.service.ts @@ -1,5 +1,5 @@ -import { Injectable, NgZone, OnDestroy } from "@angular/core"; -import { AccessToken, AccessTokenCache, I18nService, ServerError, TenantSettings } from "@batch-flask/core"; +import { EventEmitter, Injectable, NgZone, OnDestroy } from "@angular/core"; +import { AccessToken, AccessTokenCache, AuthEvent, I18nService, ServerError, TenantSettings } from "@batch-flask/core"; import { TenantSettingsService } from "@batch-flask/core"; import { ElectronRemote } from "@batch-flask/electron"; import { wrapMainObservable } from "@batch-flask/electron/utils"; @@ -13,6 +13,7 @@ import { Constants } from "common"; import { Observable, from, throwError, combineLatest, forkJoin, of } from "rxjs"; import { catchError, map, publishReplay, refCount, share, switchMap } from "rxjs/operators"; import { TenantErrorService } from "./tenant-error.service"; +import { IpcEvent } from "common/constants"; export const reauthenticateAll = "*"; @@ -30,11 +31,25 @@ export interface TenantAuthorization { messageDetails?: string; } +export type AuthEventType = "AuthSelect" | "AuthSelectResult" | "AuthComplete" | + "Logout"; + type TenantAuthRequestOptions = { notifyOnError?: boolean; reauthenticate?: string; // "*" or tenantId }; +export interface AuthSelectResult { + result: "success" | "cancel"; + requestId?: string; + externalBrowserAuth?: boolean; +} + +export interface AuthSelectRequest { + tenantId?: string; + requestId?: string; +} + @Injectable({ providedIn: "root" }) export class AuthService implements OnDestroy { public tenants: Observable; @@ -46,6 +61,8 @@ export class AuthService implements OnDestroy { private previousTenantState: StringMap = {}; private tokenObservableCache: StringMap> = {}; + private authEvents = new Map>(); + constructor( zone: NgZone, batchExplorer: BatchExplorerService, @@ -69,16 +86,32 @@ export class AuthService implements OnDestroy { publishReplay(1), refCount(), ); + this.initializeEventEmitters(); } public ngOnDestroy() { - // Nothing to do + this.authEvents.forEach((event) => event.unsubscribe()); + } + + public async logout() { + await this.remote.send(IpcEvent.logout); + await this.tokenCache.clear(); + this.authEvents["Logout"].emit(); + return; } - public logout(closeWindows = true) { - this._aadService.logout(closeWindows); + public async login() { + return this.remote.send(IpcEvent.login); } + public isLoggedIn(): Observable { + return this.currentUser.pipe( + map(user => !!user), + catchError(() => of(false)) + ); + } + + /* Only used by Python-RPC */ public accessTokenFor(tenantId: string, resource: AADResourceName = null) { return this.accessTokenData(tenantId, resource) .pipe(map((x: AccessToken) => x.accessToken)); @@ -105,8 +138,7 @@ export class AuthService implements OnDestroy { switchMap(authorizations => forkJoin(authorizations.map( authorization => this.authorizeTenant(authorization, authOptions) - )) - ), + ))), share() ); } @@ -150,7 +182,7 @@ export class AuthService implements OnDestroy { return this.accessTokenData(tenantId, null, forceRefresh).pipe( switchMap(token => { - if (token) { + if (token?.accessToken) { authorization.status = TenantStatus.authorized; } return this.cacheAuthorization(authorization); @@ -166,7 +198,7 @@ export class AuthService implements OnDestroy { this.tenantErrorService.showError(authorization); } return this.cacheAuthorization(authorization); - }), + }) ); } } @@ -180,11 +212,14 @@ export class AuthService implements OnDestroy { */ public accessTokenData( tenantId: string, resource: AADResourceName = null, forceRefresh = false - ): - Observable { + ): Observable { const key = [tenantId, resource].join("|"); if (key in this.tokenObservableCache) { - return this.tokenObservableCache[key]; + if (forceRefresh) { + delete this.tokenObservableCache[key]; + } else { + return this.tokenObservableCache[key]; + } } if (this.tokenCache.hasToken(tenantId, resource)) { const token = this.tokenCache.getToken(tenantId, resource); @@ -194,20 +229,26 @@ export class AuthService implements OnDestroy { } } - const promise = this.remote.send( + const promise: Promise = this.remote.send( Constants.IpcEvent.AAD.accessTokenData, { tenantId, resource, forceRefresh } ); + promise.then((_) => this.authEvents["AuthComplete"].emit()); const tokenObservable = from(promise).pipe( - map(x => { - const token = new AccessToken({ ...x }); + map((tokenData: AccessToken | AuthEvent) => { + if (isAuthEvent(tokenData)) { + throw new AuthFlowException(tokenData); + } + const token = new AccessToken({ ...tokenData }); this.tokenCache.storeToken(tenantId, resource, token); delete this.tokenObservableCache[key]; return token; }), catchError(error => { delete this.tokenObservableCache[key]; - return throwError(error); + if (!(error instanceof AuthFlowException)) { + return throwError(error); + } }) ); this.tokenObservableCache[key] = tokenObservable; @@ -223,6 +264,18 @@ export class AuthService implements OnDestroy { .toPromise(); } + public showAuthSelect(data) { + this.authEvents["AuthSelect"].emit(data); + } + + public authSelectResult(result: AuthSelectResult) { + this.authEvents["AuthSelectResult"].emit(result); + } + + public on(event: AuthEventType, callback: (data: any) => void) { + this.authEvents[event].subscribe(callback); + } + // Caches current authorization state to avoid reauthenticating failed // tenants without user request. private cacheAuthorization(authorization: TenantAuthorization): @@ -231,4 +284,21 @@ export class AuthService implements OnDestroy { authorization; return of(authorization); } + + private initializeEventEmitters() { + this.authEvents["AuthSelect"] = new EventEmitter(); + this.authEvents["AuthSelectResult"] = new EventEmitter(); + this.authEvents["AuthComplete"] = new EventEmitter(); + this.authEvents["Logout"] = new EventEmitter(); + } +} + +class AuthFlowException extends Error { + constructor(public authEvent: AuthEvent) { + super(`Auth flow exception (${authEvent.type}): ${authEvent.message}`); + } +} + +function isAuthEvent(obj: any): obj is AuthEvent { + return obj && (obj.type === "cancel" || obj.type === "signout"); } diff --git a/desktop/src/app/services/batch-account/batch-account.service.ts b/desktop/src/app/services/batch-account/batch-account.service.ts index afc87e0729..62637711d2 100644 --- a/desktop/src/app/services/batch-account/batch-account.service.ts +++ b/desktop/src/app/services/batch-account/batch-account.service.ts @@ -165,6 +165,11 @@ export class BatchAccountService implements OnDestroy { }); } + public clear() { + DataCacheTracker.clearAllCaches(this._cache); + this._currentAccountId.next(null); + } + public load() { return forkJoin( this.localBatchAccountService.load(), diff --git a/desktop/src/app/services/batch-explorer.service.ts b/desktop/src/app/services/batch-explorer.service.ts index e4cbdf9a82..bba65c54d1 100644 --- a/desktop/src/app/services/batch-explorer.service.ts +++ b/desktop/src/app/services/batch-explorer.service.ts @@ -61,10 +61,6 @@ export class BatchExplorerService implements OnDestroy { return this._app.openNewWindow(link); } - public async logoutAndLogin() { - return this.remote.send(IpcEvent.logoutAndLogin); - } - public async launchApplication(name: string, args: any): Promise { return this.remote.send(IpcEvent.launchApplication, { name, args }); } diff --git a/desktop/src/app/services/navigator.service.spec.ts b/desktop/src/app/services/navigator.service.spec.ts new file mode 100644 index 0000000000..91cb59222d --- /dev/null +++ b/desktop/src/app/services/navigator.service.spec.ts @@ -0,0 +1,97 @@ +import { ElectronTestingModule } from '@batch-flask/electron/testing'; +import { TestBed } from "@angular/core/testing"; +import { Router } from "@angular/router"; +import { IpcService } from "@batch-flask/electron"; +import { BatchAccountService } from "./batch-account"; +import { AuthService } from "app/services"; +import { NavigatorService } from "./navigator.service"; +import { Constants, BatchExplorerLink, BatchExplorerLinkAction } from "common"; +import { IpcEvent } from "common/constants"; +import { RouterTestingModule } from "@angular/router/testing"; +import { of } from 'rxjs'; + +describe("NavigatorService", () => { + let service: NavigatorService; + let accountService: jasmine.SpyObj; + let router: jasmine.SpyObj; + let ipc: jasmine.SpyObj; + let authService: jasmine.SpyObj; + + beforeEach(() => { + const accountServiceSpy = jasmine.createSpyObj("BatchAccountService", ["selectAccount"]); + const authServiceSpy = jasmine.createSpyObj("AuthService", ["showAuthSelect"]); + const ipcSpy = jasmine.createSpyObj("IpcService", ["on"]); + const routerSpy = jasmine.createSpyObj("Router", ["navigateByUrl"]); + ipcSpy.on.and.returnValue(of([null, null])); + + TestBed.configureTestingModule({ + imports: [ElectronTestingModule, RouterTestingModule], + providers: [ + { provide: BatchAccountService, useValue: accountServiceSpy }, + { provide: AuthService, useValue: authServiceSpy }, + { provide: IpcService, useValue: ipcSpy }, + { provide: Router, useValue: routerSpy }, + ] + }); + + accountService = TestBed.inject(BatchAccountService) as jasmine.SpyObj; + router = TestBed.inject(Router) as jasmine.SpyObj; + ipc = TestBed.inject(IpcService) as jasmine.SpyObj; + authService = TestBed.inject(AuthService) as jasmine.SpyObj; + + service = new NavigatorService(accountService, router, ipc, authService); + }); + + it("should be created", () => { + expect(service).toBeTruthy(); + }); + + it("should unsubscribe from _destroy on ngOnDestroy", () => { + const destroySpy = spyOn(service["_destroy"], "next"); + const unsubscribeSpy = spyOn(service["_destroy"], "unsubscribe"); + + service.ngOnDestroy(); + + expect(destroySpy).toHaveBeenCalled(); + expect(unsubscribeSpy).toHaveBeenCalled(); + }); + + it("should initialize and subscribe to IPC events", () => { + service.init(); + + expect(ipc.on).toHaveBeenCalledWith(Constants.rendererEvents.batchExplorerLink); + expect(ipc.on).toHaveBeenCalledWith(Constants.rendererEvents.navigateTo); + expect(ipc.on).toHaveBeenCalledWith(IpcEvent.userAuthSelectRequest); + }); + + it("should handle openBatchExplorerLink with route action", () => { + const params = new URLSearchParams("param1=value1¶m2=value2"); + const link = new BatchExplorerLink({ + action: BatchExplorerLinkAction.route, + path: "/some/path", + queryParams: params, + session: null, + accountId: "account-id" + }); + + spyOn(service, "goto"); + + service.openBatchExplorerLink(link); + + expect(service.goto).toHaveBeenCalledWith("/some/path?param1=value1¶m2=value2", { accountId: "account-id" }); + }); + + it("should navigate to a route with goto method", async () => { + const route = "/some/path"; + const options = { accountId: "account-id" }; + + accountService.selectAccount.and.returnValue(undefined); + router.navigateByUrl.and.returnValue(Promise.resolve(true)); + + const result = await service.goto(route, options); + + expect(accountService.selectAccount).toHaveBeenCalledWith("account-id"); + expect(router.navigateByUrl).toHaveBeenCalledWith(route); + expect(result).toBe(true); + }); +}); diff --git a/desktop/src/app/services/navigator.service.ts b/desktop/src/app/services/navigator.service.ts index 55bce20ddf..6229bc1227 100644 --- a/desktop/src/app/services/navigator.service.ts +++ b/desktop/src/app/services/navigator.service.ts @@ -1,3 +1,4 @@ +import { AuthService } from 'app/services'; import { Injectable, OnDestroy } from "@angular/core"; import { Router } from "@angular/router"; import { IpcService } from "@batch-flask/electron"; @@ -7,6 +8,7 @@ import { Subject } from "rxjs"; import { takeUntil } from "rxjs/operators"; import { URLSearchParams } from "url"; import { BatchAccountService } from "./batch-account"; +import { IpcEvent } from "common/constants"; export interface GotoOptions { /** @@ -23,7 +25,9 @@ export class NavigatorService implements OnDestroy { constructor( private accountService: BatchAccountService, private router: Router, - private ipc: IpcService) { + private ipc: IpcService, + private authService: AuthService + ) { } public ngOnDestroy() { @@ -46,6 +50,11 @@ export class NavigatorService implements OnDestroy { this.goto(link); }); }); + this.ipc.on(IpcEvent.userAuthSelectRequest).pipe( + takeUntil(this._destroy), + ).subscribe(([_, data]) => { + this.authService.showAuthSelect(data); + }); } public get onLine(): boolean { diff --git a/desktop/src/app/styles/base/layout.scss b/desktop/src/app/styles/base/layout.scss index c437aee232..d3f83a426f 100644 --- a/desktop/src/app/styles/base/layout.scss +++ b/desktop/src/app/styles/base/layout.scss @@ -317,3 +317,13 @@ bl-app { position: relative; } } + +#auth-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(255, 255, 255, 0.8); + z-index: 1000; +} diff --git a/desktop/src/app/styles/main.scss b/desktop/src/app/styles/main.scss index b63e13daef..7a27692426 100644 --- a/desktop/src/app/styles/main.scss +++ b/desktop/src/app/styles/main.scss @@ -26,6 +26,7 @@ @import "./partials/grid"; @import "./partials/loading-indicators"; @import "./partials/icons"; +@import "./partials/central-panel"; // Vendor styles @import "./vendor/material-theme.scss"; diff --git a/desktop/src/app/styles/partials/central-panel.scss b/desktop/src/app/styles/partials/central-panel.scss new file mode 100644 index 0000000000..6e9d370d8e --- /dev/null +++ b/desktop/src/app/styles/partials/central-panel.scss @@ -0,0 +1,44 @@ +@import "app/styles/variables"; + +.central-panel { + width: 100%; + height: 100vh; + display: flex; + justify-content: center; + align-items: center; + .central-panel-content { + padding: 5em; + text-align: center; + max-width: 500px; + color: $primary-text; + background-color: $main-background; + border-radius: 10px; + .description { + margin-bottom: 1em; + margin-top: 1em; + } + .central-button-group { + margin: 2em 0; + .central-button { + margin-bottom: 2em; + display: block; + font-size: 120%; + border-radius: 5px; + height: inherit; /* override hardcoded height */ + padding: 6px; + &[color=light] { + border: 1px solid $primary-color; + } + } + } + .caption { + font-size: 80%; + color: $secondary-text; + } + .footer { + margin-top: 2em; + font-size: 80%; + color: $secondary-text; + } + } +} diff --git a/desktop/src/client/core/aad/auth-loopback-client.spec.ts b/desktop/src/client/core/aad/auth-loopback-client.spec.ts new file mode 100644 index 0000000000..1567b33ff0 --- /dev/null +++ b/desktop/src/client/core/aad/auth-loopback-client.spec.ts @@ -0,0 +1,166 @@ +import * as http from "http"; +import { AuthLoopbackClient } from "./auth-loopback-client"; +import { ServerAuthorizationCodeResponse } from "@azure/msal-node"; +import { IncomingMessage, ServerResponse } from "http"; + +describe("AuthLoopbackClient", () => { + let authLoopbackClient: AuthLoopbackClient; + let serverSpy; + + beforeEach(async () => { + authLoopbackClient = await AuthLoopbackClient.initialize(0); + }); + + afterEach(() => { + authLoopbackClient.closeServer(); + if (serverSpy) { + serverSpy.close(); + } + }); + + function createServerSpy(opts?: { listening?: boolean }) { + opts = opts || {}; + if (opts.listening === undefined) { + opts.listening = true; + } + serverSpy = jasmine.createSpyObj("server", + ["listen", "close", "emit", "address"]); + serverSpy.listen.and.returnValue({ on: () => jasmine.createSpy() }); + spyOn(http, "createServer").and.callFake((callback) => { + serverSpy.serverCallback = callback; + return serverSpy; + }); + serverSpy.listening = opts.listening; + } + + it("should initialize with preferredPort as undefined", async () => { + const client = await AuthLoopbackClient.initialize(undefined); + expect(client.port).toBe(0); + }); + + it("should initialize with a valid preferredPort", async () => { + spyOn(authLoopbackClient, "isPortAvailable").and.returnValue(Promise.resolve(true)); + const client = await AuthLoopbackClient.initialize(3000); + expect(client.port).toBe(3000); + }); + + it("should throw error if server is already initialized", () => { + createServerSpy(); + authLoopbackClient.listenForAuthCode(); + expectAsync(authLoopbackClient.listenForAuthCode()) + .toBeRejectedWithError("Auth code listener already exists. Cannot create another."); + }); + + it("should initialize and listen for auth code", () => { + createServerSpy(); + authLoopbackClient.listenForAuthCode(); + expect(serverSpy.listen).toHaveBeenCalled(); + }); + + it("should timeout if server does not start listening", () => { + createServerSpy({ listening: false }); + expectAsync(authLoopbackClient.listenForAuthCode()) + .toBeRejectedWithError("Timed out waiting for auth code listener to be registered."); + }); + + it("should throw error if server is not initialized in getRedirectUri", () => { + authLoopbackClient.closeServer(); + expect(() => authLoopbackClient.getRedirectUri()).toThrowError("No auth code listener exists yet."); + }); + + it("should throw error if server address is invalid in getRedirectUri", () => { + const serverSpy = jasmine.createSpyObj("server", ["address", "close"]); + serverSpy.address.and.returnValue(null); + (authLoopbackClient as any).server = serverSpy; + expect(() => authLoopbackClient.getRedirectUri()).toThrowError("Failed to read auth code listener port"); + }); + + it("should close the server", () => { + const serverSpy = jasmine.createSpyObj("server", ["close"]); + (authLoopbackClient as any).server = serverSpy; + authLoopbackClient.closeServer(); + expect(serverSpy.close).toHaveBeenCalled(); + }); + + it("should return true if port is available", async () => { + const result = await authLoopbackClient.isPortAvailable(3000); + expect(result).toBe(true); + }); + + it("should return false if port is unavailable", async () => { + createServerSpy(); + serverSpy.listen.and.callFake(() => ({ + on: (_, callback) => callback("Uhoh") + })); + const result = await authLoopbackClient.isPortAvailable(3000); + expect(result).toBe(false); + }); + + it("should return empty object for empty query in getDeserializedQueryString", () => { + const result = AuthLoopbackClient.getDeserializedQueryString(""); + expect(result).toEqual({}); + }); + + it("should return a valid redirect URI", () => { + createServerSpy(); + serverSpy.address.and.returnValue({ port: 3000 }); + authLoopbackClient.listenForAuthCode(); + const redirectUri = authLoopbackClient.getRedirectUri(); + expect(redirectUri).toMatch(/http:\/\/localhost:\d+/); + }); + + it("should parse query string correctly", () => { + const queryString = "code=authcode&state=state"; + const parsedObject = AuthLoopbackClient.queryStringToObject(queryString); + expect(parsedObject).toEqual({ + code: "authcode", + state: "state" + }); + }); + + it("should deserialize query string correctly", () => { + const queryString = "code=authcode&state=state"; + const deserializedObject = AuthLoopbackClient.getDeserializedQueryString(queryString); + expect(deserializedObject).toEqual({ + code: "authcode", + state: "state" + }); + }); + + it("should check if port is available", async () => { + const isAvailable = await authLoopbackClient.isPortAvailable(0); + expect(isAvailable).toBe(true); + }); + + it("should listen for auth code and return the response", async () => { + const successTemplate = "Success"; + const errorTemplate = "Error"; + + createServerSpy(); + spyOn(authLoopbackClient, "getRedirectUri").and.returnValue("http://localhost:3000"); + + const authCodeResponse: ServerAuthorizationCodeResponse = { + code: "authcode", + state: "state" + }; + + spyOn(AuthLoopbackClient, "getDeserializedQueryString").and.returnValue(authCodeResponse); + + const listenPromise = authLoopbackClient.listenForAuthCode(successTemplate, errorTemplate); + + // Simulate server behavior + const req = { url: "/?code=authcode&state=state" } as IncomingMessage; + const res = { + end: jasmine.createSpy("end"), + writeHead: jasmine.createSpy("writeHead") + } as unknown as ServerResponse; + + // Invoke the captured callback with the mock request and response + serverSpy.serverCallback(req, res); + + const result = await listenPromise; + + expect(result).toEqual(authCodeResponse); + expect(res.writeHead).toHaveBeenCalledWith(302, { location: "http://localhost:3000" }); + }); +}); diff --git a/desktop/src/client/core/aad/auth-loopback-client.ts b/desktop/src/client/core/aad/auth-loopback-client.ts new file mode 100644 index 0000000000..9a6800134d --- /dev/null +++ b/desktop/src/client/core/aad/auth-loopback-client.ts @@ -0,0 +1,195 @@ +import { log } from "@batch-flask/utils"; +import { IncomingMessage, Server, ServerResponse, createServer } from "http"; +import { ILoopbackClient, ServerAuthorizationCodeResponse } from "@azure/msal-node"; + +/** + * Listen for an auth code response on the loopback address. Will use a preferred + * port if available, but fall back to a random port if not. + */ +export class AuthLoopbackClient implements ILoopbackClient { + port: number = 0; // default port, which will be set to a random available port + private server: Server; + + private constructor(port: number = 0) { + this.port = port; + } + + /** + * Initializes a loopback server with an available port + * @param preferredPort + * @param logger + * @returns + */ + static async initialize(preferredPort: number | undefined): Promise { + const loopbackClient = new AuthLoopbackClient(); + + if (preferredPort === 0 || preferredPort === undefined) { + return loopbackClient; + } + const isPortAvailable = await loopbackClient.isPortAvailable(preferredPort); + + if (isPortAvailable) { + loopbackClient.port = preferredPort; + } + + return loopbackClient; + } + + /** + * Spins up a loopback server which returns the server response when the localhost redirectUri is hit + * @param successTemplate + * @param errorTemplate + * @returns + */ + async listenForAuthCode(successTemplate?: string, errorTemplate?: string): Promise { + if (!!this.server) { + throw new Error("Auth code listener already exists. Cannot create another."); + } + + const authCodeListener = new Promise((resolve, reject) => { + this.server = createServer(async (req: IncomingMessage, res: ServerResponse) => { + const url = req.url; + if (!url) { + res.end(errorTemplate || "Login failed: Error occurred loading redirectUrl"); + reject(new Error("Auth code listener callback was invoked without a url.")); + return; + } else if (url === "/") { + res.end(successTemplate || "Successfully logged in to Batch Explorer. You may close this window."); + return; + } + + const authCodeResponse = AuthLoopbackClient.getDeserializedQueryString(url); + if (authCodeResponse.code) { + const redirectUri = this.getRedirectUri(); + res.writeHead(302, { location: redirectUri }); // Prevent auth code from being saved in the browser history + res.end(); + } + resolve(authCodeResponse); + }); + this.server.listen(this.port); + log.debug(`Initialized auth code listener on port ${this.port}`); + }); + + // Wait for server to be listening + await new Promise((resolve) => { + let ticks = 0; + const id = setInterval(() => { + if ((5000 / 100) < ticks) { + throw new Error("Timed out waiting for auth code listener to be registered."); + } + + if (this.server.listening) { + clearInterval(id); + resolve(); + } + ticks++; + }, 100); + }); + + return authCodeListener; + } + + /** + * Get the port that the loopback server is running on + * @returns + */ + getRedirectUri(): string { + if (!this.server) { + throw new Error("No auth code listener exists yet."); + } + + const addressInfo = this.server.address(); + if (addressInfo == null || typeof addressInfo === "string") { + this.closeServer(); + throw new Error("Failed to read auth code listener port"); + } + + return `http://localhost:${addressInfo.port}`; + } + + /** + * Close the loopback server + */ + closeServer(): void { + if (!!this.server) { + this.server.close(); + } + } + + /** + * Attempts to create a server and listen on a given port + * @param port + * @returns + */ + isPortAvailable(port: number): Promise { + return new Promise(resolve => { + const server = createServer() + .listen(port, () => { + server.close(); + resolve(true); + }) + .on("error", () => { + resolve(false); + }); + }); + } + + /** + * Returns URL query string as server auth code response object. + */ + static getDeserializedQueryString( + query: string + ): ServerAuthorizationCodeResponse { + // Check if given query is empty + if (!query) { + return {}; + } + // Strip the ? symbol if present + const parsedQueryString = this.parseQueryString(query); + // If ? symbol was not present, above will return empty string, so give original query value + const deserializedQueryString: ServerAuthorizationCodeResponse = + this.queryStringToObject( + parsedQueryString || query + ); + // Check if deserialization didn't work + if (!deserializedQueryString) { + throw "Unable to deserialize query string"; + } + return deserializedQueryString; + } + + /** + * Parses query string from given string. Returns empty string if no query symbol is found. + * @param queryString + */ + static parseQueryString(queryString: string): string { + const queryIndex1 = queryString.indexOf("?"); + const queryIndex2 = queryString.indexOf("/?"); + if (queryIndex2 > -1) { + return queryString.substring(queryIndex2 + 2); + } else if (queryIndex1 > -1) { + return queryString.substring(queryIndex1 + 1); + } + return ""; + } + + /** + * Parses string into an object. + * + * @param query + */ + static queryStringToObject(query: string): ServerAuthorizationCodeResponse { + const obj: {[key:string]:string} = {}; + const params = query.split("&"); + const decode = (s: string) => decodeURIComponent(s.replace(/\+/g, " ")); + params.forEach((pair) => { + if (pair.trim()) { + const [key, value] = pair.split(/=(.+)/g, 2); // Split on the first occurence of the "=" character + if (key && value) { + obj[decode(key)] = decode(value); + } + } + }); + return obj as ServerAuthorizationCodeResponse; + } +} diff --git a/desktop/src/client/core/aad/auth-observer.ts b/desktop/src/client/core/aad/auth-observer.ts new file mode 100644 index 0000000000..78f14b93c1 --- /dev/null +++ b/desktop/src/client/core/aad/auth-observer.ts @@ -0,0 +1,9 @@ +export interface UserAuthSelection { + externalBrowserAuth?: boolean; +} + +export interface AuthObserver { + onAuthFailure(error); + selectUserAuthMethod(tenantId: string): Promise; + fetchAuthCode(url: string, tenantId: string): Promise; +} diff --git a/desktop/src/client/core/aad/auth-provider.spec.ts b/desktop/src/client/core/aad/auth-provider.spec.ts index 073b694d9d..e33feb42bc 100644 --- a/desktop/src/client/core/aad/auth-provider.spec.ts +++ b/desktop/src/client/core/aad/auth-provider.spec.ts @@ -1,10 +1,15 @@ -import { instrumentAuthProvider, instrumentForAuth, MockAuthorizeError } from "test/utils/mocks/auth"; +import { instrumentAuthProvider, instrumentForAuth } from "test/utils/mocks/auth"; import AuthProvider from "./auth-provider"; +import { AuthObserver } from "./auth-observer"; +import { PublicClientApplication } from "@azure/msal-node"; + +const FAKE_GET_TOKEN_ARGS = { + resourceURI: "resourceURI1", + tenantId: "tenant1" +}; describe("AuthProvider", () => { let authProvider: AuthProvider; - const authCodeCallbackSpy = jasmine.createSpy("authCodeCallback") - .and.returnValue("some-code"); const appSpy: any = { properties: { azureEnvironment: { @@ -14,6 +19,10 @@ describe("AuthProvider", () => { } } }; + let mockAuthCode; + let authObserver: jasmine.SpyObj; + let clientSpy: jasmine.SpyObj; + instrumentForAuth(appSpy); const config: any = { tenant: "common", @@ -23,33 +32,35 @@ describe("AuthProvider", () => { beforeEach(() => { authProvider = new AuthProvider(appSpy, config); + authObserver = { + selectUserAuthMethod: jasmine.createSpy("selectUserAuthMethod") + .and.returnValue(Promise.resolve({ externalBrowserAuth: false })), + onAuthFailure: jasmine.createSpy("mock-auth-failure"), + fetchAuthCode: jasmine.createSpy("fetchAuthCode") + }; + authProvider.setAuthObserver(authObserver); + mockAuthCode = "some-code"; }); it("authenticates interactively first, then silently", async () => { - const call = async () => await authProvider.getToken({ - resourceURI: "resourceURI1", tenantId: "tenant1", - authCodeCallback: authCodeCallbackSpy - }); - const clientSpy = makeClientApplicationSpy(); - spyOn(authProvider, "_getClient").and.returnValue(clientSpy); + authObserver.fetchAuthCode.and.returnValue(Promise.resolve(mockAuthCode)); + + const call = async () => await authProvider.getToken(FAKE_GET_TOKEN_ARGS); + clientSpy = createClientSpy(); instrumentAuthProvider(authProvider); - returnToken(clientSpy.acquireTokenByCode, "interactive-token-1"); returnToken(clientSpy.acquireTokenSilent, "silent-token-1"); const result1 = await call(); - expect(authCodeCallbackSpy).toHaveBeenCalled(); expect(clientSpy.getAuthCodeUrl).toHaveBeenCalled(); expect(clientSpy.acquireTokenByCode).toHaveBeenCalled(); expect(clientSpy.acquireTokenSilent).not.toHaveBeenCalled(); - expect(result1.accessToken).toEqual("interactive-token-1"); + expect(result1.accessToken).toEqual("tenant1-token"); clientSpy.getAuthCodeUrl.calls.reset(); clientSpy.acquireTokenByCode.calls.reset(); - authCodeCallbackSpy.calls.reset(); const result2 = await call(); - expect(authCodeCallbackSpy).not.toHaveBeenCalled(); expect(clientSpy.getAuthCodeUrl).not.toHaveBeenCalled(); expect(clientSpy.acquireTokenByCode).not.toHaveBeenCalled(); expect(clientSpy.acquireTokenSilent).toHaveBeenCalled(); @@ -57,127 +68,88 @@ describe("AuthProvider", () => { }); it("should return a per-tenant access token", async () => { - spyOn(authProvider, "_createClient").and.callFake(tenantId => { - const spy = makeClientApplicationSpy(); - returnToken(spy.acquireTokenByCode, `${tenantId}-token`); - return spy; - }); + createClientSpy(); - const result1 = await authProvider.getToken({ - resourceURI: "resourceURI1", - tenantId: "tenant1", - authCodeCallback: authCodeCallbackSpy - }); + const result1 = await authProvider.getToken(FAKE_GET_TOKEN_ARGS); const result2 = await authProvider.getToken({ - resourceURI: "resourceURI1", + ...FAKE_GET_TOKEN_ARGS, tenantId: "tenant2", - authCodeCallback: authCodeCallbackSpy }); expect(result1.accessToken).toEqual("tenant1-token"); expect(result2.accessToken).toEqual("tenant2-token"); }); - it("should retry interactive auth only for certain error codes", - async () => { - spyOn(authProvider, "_createClient").and.callFake(tenantId => { - const spy = makeClientApplicationSpy(); - returnToken(spy.acquireTokenByCode, `${tenantId}-token`); - return spy; + describe("#_externalBrowserAuth", () => { + beforeEach(() => { + clientSpy = createClientSpy(); + authObserver.selectUserAuthMethod.and.returnValue( + Promise.resolve({ externalBrowserAuth: true }) + ); }); + it("is called when externalBrowserAuth is true", async () => { + const browserSpy = + spyOn(authProvider, "_createExternalBrowserRequest"); + await authProvider.getToken(FAKE_GET_TOKEN_ARGS); + expect(browserSpy).toHaveBeenCalled(); + }); + it("handles error thrown by _createExternalBrowserRequest()", async () => { + const err = "fake external browser error"; + spyOn(authProvider, "_createExternalBrowserRequest") + .and.returnValue(Promise.reject(err)); + await expectAsync(authProvider.getToken(FAKE_GET_TOKEN_ARGS)) + .toBeRejectedWith(err); + expect(authObserver.onAuthFailure).toHaveBeenCalledWith(err); + }); + it("calls acquireTokenInteractive() with select_account prompt", async () => { + await authProvider.getToken(FAKE_GET_TOKEN_ARGS); + expect(clientSpy.acquireTokenInteractive).toHaveBeenCalledWith( + jasmine.objectContaining({ prompt: "select_account" })); + }); + }); - async function expectRetryable(code: string | string[], retryable) { - const authCodeSpy = - jasmine.createSpy("authCodeCallback").and.returnValues( - Promise.reject(new MockAuthorizeError({ - error: (retryable ? "Retryable" : "Unretryable") + - " error", - errorCodes: [].concat(code) // convert scalar or array - // into flat array - })), - // Second call for interactive auth - jasmine.anything - ); - - try { - await authProvider.getToken({ - tenantId: "tenant1", - resourceURI: "resourceURI1", - authCodeCallback: authCodeSpy - }); - if (!retryable) { - fail(`Should have thrown an error on code ${code}`); - } - } catch (e) { - if (retryable) { - fail(`Should not have thrown an error on code ${code}: ` + - e); - } - } - } - - await [ - "16000", "16001", "50013", "50027", "50050", "50056", "50058", - "50061", "50064", "50071", "50072", "50074", "50076", "50079", - "50085", "50089", "50097", "50125", "50126", "54005", "65004", - "70008", "700084", "70019", "90012", "90013" - ].forEach(code => expectRetryable(code, true)); - - await [ - "1000000", "1000031", "100007", "120012", "120013", "120014", - "120015", "120016", "120021", "130004", "130005", "130006", - "130007", "130008", "135010", "135011", "16003", "20001", "20012", - "20033", "220450", "220501", "221000", "240001", "240002", "28002", - "28003", "40008", "50002", "50002", "500021", "50005", "50007", - "50008", "50011", "50014", "50020", "50029", "50034", "50042", - "50043", "50048", "50049", "50053", "50055", "50057", "50059", - "50086", "50105", "50107", "501241", "50128", "50129", "50131", - "50132", "50133", "50134", "50135", "50140", "50143", "50144", - "50146", "50196", "51000", "51001", "51004", "53000", "53001", - "53002", "53003", "530032", "53011", "54000", "65005", "650052", - "650054", "650056", "650057", "67003", "700005", "70001", - "7000112", "7000114", "700016", "70002", "7000215", "700022", - "7000222", "700023", "70003", "700030", "70004", "70005", "700054", - "70007", "70011", "70018", "75003", "7500514", "7500529", "750054", - "75011", "75016", "80001", "80010", "80012", "80013", "81005", - "81006", "81007", "81009", "81010", "81011", "81012", "90002", - "90004", "90005", "90007", "90009", "90010", "9001023", "900144", - "90015", "90016", "90019", "90020", "90022", "90027", "90036", - "90038", "900382", "90043", "900432", "90051", "90055", "90056", - "90072", "90081", "90082", "90084", "90085", "90092", "90093", - "90094", "90095", "900971", "90099", "901002", "90107", "90123", - "90124", "90125", "90126", "90130" - ].forEach(code => expectRetryable(code, false)); - - expectRetryable([], true); - expectRetryable(["16000", "50071"], true); // Both retryable - expectRetryable(["90094", "50133"], false); // Both unretryable - expectRetryable(["50071", "50133"], false); // One retryable, one not - + describe("#_builtInWindowAuth", () => { + beforeEach(() => { + clientSpy = createClientSpy(); + authObserver.selectUserAuthMethod.and.returnValue( + Promise.resolve({ externalBrowserAuth: false }) + ); + }); + it("is called when externalBrowserAuth is false", async () => { + await authProvider.getToken(FAKE_GET_TOKEN_ARGS); + expect(clientSpy.getAuthCodeUrl).toHaveBeenCalled(); + expect(authObserver.fetchAuthCode).toHaveBeenCalled(); + expect(clientSpy.acquireTokenByCode).toHaveBeenCalled(); + }); + it("handles error thrown by client.getAuthCodeUrl()", async () => { + const err = "fake getAuthCodeUrl error"; + clientSpy.getAuthCodeUrl.and.returnValue(Promise.reject(err)); + await expectAsync(authProvider.getToken(FAKE_GET_TOKEN_ARGS)) + .toBeRejectedWith(err); + expect(authObserver.onAuthFailure).toHaveBeenCalledWith(err); + expect(clientSpy.acquireTokenByCode).not.toHaveBeenCalled(); + expect(authObserver.fetchAuthCode).not.toHaveBeenCalled(); + }); + it("handles error thrown by fetchAuthCode()", async () => { + const err = "fake fetchAuthCode error"; + authObserver.fetchAuthCode.and.returnValue(Promise.reject(err)); + await expectAsync(authProvider.getToken(FAKE_GET_TOKEN_ARGS)) + .toBeRejectedWith(err); + expect(clientSpy.getAuthCodeUrl).toHaveBeenCalled(); + expect(authObserver.onAuthFailure).toHaveBeenCalledWith(err); + expect(clientSpy.acquireTokenByCode).not.toHaveBeenCalled(); + }); }); - it("shouldn't fail with non-auth exception", async () => { + function createClientSpy() { + const spy = makeClientApplicationSpy(); spyOn(authProvider, "_createClient").and.callFake(tenantId => { - const spy = makeClientApplicationSpy(); returnToken(spy.acquireTokenByCode, `${tenantId}-token`); return spy; }); - const authCodeSpy = - jasmine.createSpy("authCodeCallback").and.returnValues( - Promise.reject(new Error("Non-auth error")), - ); - - try { - await authProvider.getToken({ - tenantId: "tenant1", - resourceURI: "resourceURI1", - authCodeCallback: authCodeSpy - }); - } catch (e) { - fail(`Should not have thrown error: ${e}`); - } - }); + return spy; + } }); const makeTokenCacheSpy = () => jasmine.createSpyObj( @@ -192,7 +164,8 @@ const makeClientApplicationSpy = () => jasmine.createSpyObj( acquireTokenSilent: jasmine.anything, getAuthCodeUrl: jasmine.anything, acquireTokenByCode: jasmine.anything, - getTokenCache: makeTokenCacheSpy() + getTokenCache: makeTokenCacheSpy(), + acquireTokenInteractive: jasmine.anything } ); diff --git a/desktop/src/client/core/aad/auth-provider.ts b/desktop/src/client/core/aad/auth-provider.ts index f3d1514f77..979e321782 100644 --- a/desktop/src/client/core/aad/auth-provider.ts +++ b/desktop/src/client/core/aad/auth-provider.ts @@ -1,22 +1,27 @@ import { AccountInfo, AuthenticationResult, - PublicClientApplication + InteractiveRequest, + PublicClientApplication, } from "@azure/msal-node"; import { log } from "@batch-flask/utils"; import { BatchExplorerApplication } from ".."; import { SecureDataStore } from "../secure-data-store"; import { AADConfig } from "./aad-config"; -import { defaultTenant, unretryableAuthCodeErrors, TenantPlaceholders } from "./aad-constants"; -import { AuthorizeError } from "./authentication"; +import { defaultTenant, TenantPlaceholders } from "./aad-constants"; import MSALCachePlugin from "./msal-cache-plugin"; +import { AuthObserver } from "./auth-observer"; +import { shell } from "electron"; +import { AuthLoopbackClient } from "./auth-loopback-client"; const MSAL_SCOPES = ["user_impersonation"]; export type AuthorizationResult = AuthenticationResult; - -export type AuthCodeCallback = - (url: string, tenant: string, silent?: boolean) => Promise; +interface MSALAuthRequest { + scopes: string[]; + redirectUri: string; + authority: string; +} /** * Provides authentication services @@ -28,6 +33,8 @@ export default class AuthProvider { private _logoutPromise?: Promise; private _primaryClient?: PublicClientApplication; + private authObserver: AuthObserver; + // Used for reauthentication to associated tenants private _primaryUsername?: string; @@ -39,6 +46,10 @@ export default class AuthProvider { new MSALCachePlugin(app.injector.get(SecureDataStore)); } + public setAuthObserver(observer: AuthObserver) { + this.authObserver = observer; + } + /** * Retrieves an access token for a tenant and resource * @@ -54,13 +65,11 @@ export default class AuthProvider { resourceURI: string, tenantId?: string, forceRefresh?: boolean, - authCodeCallback: AuthCodeCallback }): Promise { const { resourceURI, tenantId = defaultTenant, forceRefresh = false, - authCodeCallback } = options; if (this._logoutPromise) { @@ -77,56 +86,119 @@ export default class AuthProvider { const client = await this._getClient(tenantId); const authRequest = this._authRequest(resourceURI, tenantId); + let account: AccountInfo | null = null; try { - log.debug(`[${tenantId}] Trying to silently acquire token`); - const account = await this._getAccount(tenantId); + log.debug(`[${tenantId}] Trying to acquire token silently`); + account = await this._getAccount(tenantId); if (!account) { throw new Error( - "[internal] No account for silent token acquisition" + "[internal] No valid account found for silent auth" ); } + const result = await client.acquireTokenSilent({ ...authRequest, account, forceRefresh }); return result; } catch (silentTokenException) { - log.debug(`[${tenantId}] Trying silent auth code flow (${silentTokenException})`); - let url, code; + log.debug(`[${tenantId}] Silent token acquisition failed: ${ + silentTokenException}`); - try { - // Attempt to get authorization code silently - url = await client.getAuthCodeUrl( - { ...authRequest, prompt: "none" } - ); - code = await authCodeCallback(url, tenantId, true); - } catch (silentAuthException) { - log.debug(`[${tenantId}] Silent auth failed (${silentAuthException})`); - if (silentAuthException instanceof AuthorizeError && - !this._isTenantAuthRetryable(silentAuthException)) { - log.warn(`Fatal authentication exception for ${tenantId}:` + - ` ${silentAuthException} (non-retryable error code ` + - silentAuthException.errorCodes.join(";") + `)`); - throw silentAuthException; + // Prompt user for interactive authentication type + const { externalBrowserAuth } = + await this.authObserver.selectUserAuthMethod(tenantId); + + let result: AuthenticationResult; + if (externalBrowserAuth) { + log.debug(`[${tenantId}] Interactive auth code flow with ` + + `system browser (${silentTokenException})`); + result = await this._systemBrowserAuth(client, authRequest, + tenantId); + } else { + log.debug(`[${tenantId}] Interactive auth code flow with ` + + `built-in window (${silentTokenException})`); + result = await this._builtInWindowAuth(client, authRequest, + tenantId); + } + + if (result?.account) { + this._accounts[tenantId] = result.account; + if (!this._primaryUsername) { + this._primaryUsername = result.account.username; } - log.debug( - `[${tenantId}] Trying interactive auth code flow (${silentAuthException})`); - url = await client.getAuthCodeUrl({ - ...authRequest, - domainHint: tenantId, - loginHint: this._primaryUsername - }); - - code = await authCodeCallback(url, tenantId); + } else { + log.warn("Authentication result did not contain account information"); } - const result: AuthorizationResult = - await client.acquireTokenByCode({ ...authRequest, code }); - this._processAccountInfo(result.account); return result; } } + private async _systemBrowserAuth( + client: PublicClientApplication, + authRequest: MSALAuthRequest, + tenantId: string + ): Promise { + try { + const interactiveRequest = + await this._createExternalBrowserRequest(authRequest); + return await client.acquireTokenInteractive(interactiveRequest); + } catch (error) { + log.warn(`[${tenantId}] Failed to authenticate with browser: ${error}`); + this.authObserver.onAuthFailure(error); + throw error; + } + } + + private async _builtInWindowAuth( + client: PublicClientApplication, + authRequest: MSALAuthRequest, + tenantId: string, + ) { + let code: string; + let url: string; + try { + url = await client.getAuthCodeUrl({ + ...authRequest, + domainHint: tenantId, + loginHint: this._primaryUsername + }); + } catch (error) { + log.warn(`[${tenantId}] Failed to get auth code URL: ${error}`); + this.authObserver.onAuthFailure(error); + throw error; + } + + try { + code = await this.authObserver.fetchAuthCode(url, tenantId); + } catch (error) { + log.warn(`[${tenantId}] Failed to authenticate with built-in window: ${error}`); + this.authObserver.onAuthFailure(error); + throw error; + } + + const result = await client.acquireTokenByCode({ ...authRequest, code }); + return result; + } + + private async _createExternalBrowserRequest(authRequest: MSALAuthRequest): + Promise { + const loopbackClient = await AuthLoopbackClient.initialize(3874); + + // opens a browser instance via Electron shell API + const openBrowser = async (url: string) => { + await shell.openExternal(url); + }; + const interactiveRequest: InteractiveRequest = { + ...authRequest, + openBrowser, + loopbackClient, + prompt: "select_account" + }; + return interactiveRequest; + } + public async logout(tenantId?: string): Promise { this._logoutPromise = this._removeAccounts(tenantId); return this._logoutPromise; @@ -228,25 +300,10 @@ export default class AuthProvider { } throw new Error( - `Unable to find a valid AAD account for tenant ${tenantId}` + `Unable to find a valid account for tenant ${tenantId}` ); } - private _processAccountInfo(account: AccountInfo) { - if (!this._primaryUsername) { - this._primaryUsername = account.username; - } - } - - private _isTenantAuthRetryable(error: AuthorizeError) { - for (const code of error.errorCodes) { - if (unretryableAuthCodeErrors.includes(code)) { - return false; - } - } - return true; - } - private _getScopes(resourceURI: string): string[] { switch (resourceURI) { case this.app.properties.azureEnvironment.arm: @@ -257,7 +314,7 @@ export default class AuthProvider { } } - private _authRequest(resourceURI: string, tenantId?: string) { + private _authRequest(resourceURI: string, tenantId?: string): MSALAuthRequest { return { scopes: this._getScopes(resourceURI), redirectUri: this.config.redirectUri, diff --git a/desktop/src/client/core/aad/auth/aad.service.spec.ts b/desktop/src/client/core/aad/auth/aad.service.spec.ts index 589256d743..6d9b7137b2 100644 --- a/desktop/src/client/core/aad/auth/aad.service.spec.ts +++ b/desktop/src/client/core/aad/auth/aad.service.spec.ts @@ -61,55 +61,55 @@ describe("AADService", () => { dialogSpy = { showMessageBox: jasmine.createSpy("showMessageBox").and.returnValue(0), }; + }); + async function initService() { const mockAADService = mock("./aad.service", { electron: { dialog: dialogSpy, }, }); - service = new mockAADService.AADService( - appSpy, localStorage, propertiesSpy, telemetryManagerSpy, ipcMainMock); - - service.init(); - }); + appSpy, localStorage, propertiesSpy, telemetryManagerSpy, ipcMainMock + ); + spyOn(service, "_loadTenants").and.returnValue(Promise.resolve()); + await service.init(); + } - it("when there is no item in the localstorage it should not set the id_token", () => { + it("when there is no item in the localstorage it should not set the id_token", async () => { localStorage.removeItem(Constants.localStorageKey.currentUser); - const tmpService = new AADService( - appSpy, localStorage, propertiesSpy, telemetryManagerSpy, ipcMainMock); - tmpService.init(); + await initService(); let user: AADUser | null = null; - tmpService.currentUser.subscribe(x => user = x); + service.currentUser.subscribe(x => user = x); expect(user).toBeNull(); }); it("when localstorage has currentUser it should load it", async (done) => { await localStorage.setItem(Constants.localStorageKey.currentUser, JSON.stringify(sampleUser)); - const tmpService = new AADService( - appSpy, localStorage, propertiesSpy, telemetryManagerSpy, ipcMainMock); - await tmpService.init(); + await initService(); let user: AADUser | null = null; - tmpService.currentUser.subscribe(x => user = x); + service.currentUser.subscribe(x => user = x); expect(user).not.toBeNull(); expect(user.username).toEqual("frank.smith@example.com"); done(); }); - describe("Login", () => { - beforeEach(() => { + describe("Sign-in", () => { + beforeEach(async () => { const newToken = new AccessToken({ accessToken: "newToken", expiresOn: DateTime.local().plus({ hours: 1 }), } as any); - spyOn(service, "accessTokenData").and.returnValue(new Promise((resolve) => resolve(newToken))); + await initService(); + spyOn(service, "retrieveAccessToken") + .and.returnValue(Promise.resolve(newToken)); }); - it("login to public cloud", async () => { + it("sign in to public cloud", async () => { await service.login().done; expect(dialogSpy.showMessageBox).not.toHaveBeenCalled(); }); - it("login to national cloud", async () => { + it("sign in to national cloud", async () => { propertiesSpy.azureEnvironment = AzureChina; await service.login().done; expect(dialogSpy.showMessageBox).toHaveBeenCalledTimes(1); diff --git a/desktop/src/client/core/aad/auth/aad.service.ts b/desktop/src/client/core/aad/auth/aad.service.ts index 95d408c08b..f48e72a73b 100644 --- a/desktop/src/client/core/aad/auth/aad.service.ts +++ b/desktop/src/client/core/aad/auth/aad.service.ts @@ -1,6 +1,6 @@ import { Inject, Injectable, forwardRef } from "@angular/core"; -import { AccessToken, DataStore, ServerError } from "@batch-flask/core"; +import { AccessToken, AuthEvent, DataStore, ServerError } from "@batch-flask/core"; import { log } from "@batch-flask/utils"; import { TenantDetails } from "app/models"; import { AADResourceName, AzurePublic } from "client/azure-environment"; @@ -18,7 +18,11 @@ import { AADConfig } from "../aad-config"; import { defaultTenant } from "../aad-constants"; import AuthProvider from "../auth-provider"; import { - AuthenticationService, AuthenticationState, AuthorizeResult, LogoutError + AuthCancelException, + AuthenticationService, + AuthenticationState, + AuthorizeResult, + SignOutException } from "../authentication"; import { AADUser } from "./aad-user"; import { UserDecoder } from "./user-decoder"; @@ -29,6 +33,13 @@ const aadConfig: AADConfig = { redirectUri: "https://login.microsoftonline.com/common/oauth2/nativeclient", }; +interface RetrieveAccessTokenOptions { + tenantId?: string, + resource?: AADResourceName, + forceRefresh?: boolean, + selectAuthMode?: boolean +} + @Injectable() export class AADService { public currentUser: Observable; @@ -40,7 +51,7 @@ export class AADService { private _authenticationState = new BehaviorSubject(null); private _userDecoder: UserDecoder; - private _newAccessTokenSubject: StringMap> = {}; + private _newAccessTokenSubject: StringMap> = {}; private _currentUser = new BehaviorSubject(null); private _tenants = new BehaviorSubject([]); @@ -60,12 +71,23 @@ export class AADService { this.authenticationState = this._authenticationState.asObservable(); ipcMain.on(IpcEvent.AAD.accessTokenData, - async ({ tenantId, resource, forceRefresh }) => - await this.accessTokenData(tenantId, resource, forceRefresh)); + async ({ tenantId, resource, forceRefresh }) => { + const token = await this.retrieveAccessToken({ tenantId, + resource, forceRefresh }); + return { ...token, tenantId, resource }; + }); + this.userAuthorization.state.subscribe((state) => { this._authenticationState.next(state); }); + + + this.authenticationState.subscribe((state) => { + if (state === AuthenticationState.Authenticated) { + this._loadTenants(); + } + }); } public async init() { @@ -80,25 +102,19 @@ export class AADService { const started = this._ensureTelemetryOptInNationalClouds(); return { started, - done: started.then(() => this._loginInCurrentCloud()), + done: started.then(() => this._retrieveTokenAndTenants()), }; } - public async logout(closeWindows = true) { + public async logout() { await this.localStorage.removeItem(Constants.localStorageKey.currentUser); this._tenants.next([]); await this._clearUserSpecificCache(); for (const [, window] of this.app.windows) { window.webContents.session.clearStorageData({ storages: ["localstorage"] }); } - if (closeWindows) { - this.app.windows.closeAll(); - } - await this.userAuthorization.logout(); - } - - public async accessTokenFor(tenantId: string, resource?: AADResourceName) { - return this.accessTokenData(tenantId, resource).then(x => x.accessToken); + await this.userAuthorization.logout(null); + this._currentUser.next(null); } /** @@ -106,29 +122,29 @@ export class AADService { * @param tenantId * @param resource */ - public async accessTokenData( - tenantId: string, resource?: AADResourceName, forceRefresh = false - ): Promise { - return this._retrieveNewAccessToken(tenantId, resource || "arm", - forceRefresh); + private async retrieveAccessToken(options?: RetrieveAccessTokenOptions): + Promise { + options = (options ?? {}); + const { + tenantId = defaultTenant, + forceRefresh = false, + selectAuthMode = true + } = options; + const resource = options.resource ?? "arm"; + const defer = new Deferred(); + + this._newAccessTokenSubject[ + this._tenantResourceKey(tenantId, resource)] = defer; + this._redeemNewAccessToken({ tenantId, resource, forceRefresh, + selectAuthMode }); + return defer.promise; } - private async _loginInCurrentCloud() { - try { - await this.accessTokenData(defaultTenant); - this._authenticationState.next(AuthenticationState.Authenticated); - } catch (error) { - if (error instanceof LogoutError) { - throw error; - } else { - log.error("Error login in ", error); - throw error; - } - } + private async _retrieveTokenAndTenants() { + await this.retrieveAccessToken({ selectAuthMode: false }); + this._authenticationState.next(AuthenticationState.Authenticated); try { - const tenants = await this._loadTenants(); - - this._tenants.next(tenants); + await this._loadTenants(); } catch (error) { log.error("Error retrieving tenants", error); this._tenants.error(ServerError.fromARM(error)); @@ -144,26 +160,13 @@ export class AADService { try { const user = JSON.parse(userStr); this._currentUser.next(user); + this._authenticationState.next(AuthenticationState.Authenticated); } catch (e) { this.localStorage.removeItem(Constants.localStorageKey.currentUser); } } } - /** - * Retrieve a new access token. - * @return Observable with access token object - */ - private async _retrieveNewAccessToken( - tenantId: string, resource: AADResourceName, forceRefresh: boolean - ): Promise { - const defer = new Deferred(); - this._newAccessTokenSubject[ - this._tenantResourceKey(tenantId, resource)] = defer; - this._redeemNewAccessToken(tenantId, resource, forceRefresh); - return defer.promise; - } - private _tenantResourceKey(tenantId: string, resource: string) { return `${tenantId}|${resource}`; } @@ -171,19 +174,19 @@ export class AADService { /** * Load a new access token from the authorization code given at login */ - private async _redeemNewAccessToken( - tenantId: string, resource: AADResourceName, forceRefresh: boolean - ) { + private async _redeemNewAccessToken(options: RetrieveAccessTokenOptions) { + const { tenantId, resource, forceRefresh, selectAuthMode } = options; const subjectKey = this._tenantResourceKey(tenantId, resource); const defer = this._newAccessTokenSubject[subjectKey]; delete this._newAccessTokenSubject[subjectKey]; try { const result: AuthorizeResult = - await this.userAuthorization.authorizeResource( + await this.userAuthorization.authorizeResource({ tenantId, - this.properties.azureEnvironment[resource as string], - forceRefresh - ); + resourceURI: this.properties.azureEnvironment[resource as string], + forceRefresh, + selectAuthMode + }); this._processUserToken(result.idToken); defer.resolve(new AccessToken({ @@ -194,10 +197,18 @@ export class AADService { homeTenantId: result.account?.homeAccountId?.split(".")[1], resource })); - } catch (e) { - log.error(`Error redeeming auth code for a token for resource ` + - `${resource}: ${e}`); - defer.reject(e); + } catch (error) { + if (error instanceof SignOutException) { + defer.resolve({ type: "signout" }); + this._authenticationState.next(AuthenticationState.SignedOut); + } else if (error instanceof AuthCancelException) { + defer.resolve({ type: "cancel" }); + log.info("User cancelled login"); + } else { + log.error(`Error redeeming auth code for a token for resource ` + + `${resource}: ${error.message}`); + defer.reject(error); + } } } @@ -215,7 +226,11 @@ export class AADService { } private async _loadTenants(): Promise { - const token = await this.accessTokenData(defaultTenant); + await this.app.appReady.promise; + const token = await this.retrieveAccessToken(); + if (!(token instanceof AccessToken)) { + return; + } const headers = { Authorization: `${token.tokenType} ${token.accessToken}`, @@ -226,7 +241,7 @@ export class AADService { const { value } = await response.json(); const tenants = value as TenantDetails[]; tenants.forEach(tenant => tenant.homeTenantId = token.homeTenantId); - return tenants; + this._tenants.next(tenants); } private _tenantURL() { diff --git a/desktop/src/client/core/aad/authentication/authentication.service.spec.ts b/desktop/src/client/core/aad/authentication/authentication.service.spec.ts index 5862c80b9f..f167680d1f 100644 --- a/desktop/src/client/core/aad/authentication/authentication.service.spec.ts +++ b/desktop/src/client/core/aad/authentication/authentication.service.spec.ts @@ -1,3 +1,4 @@ +import { error } from './../../../../../../util/bux/util'; import { AccountInfo } from "@azure/msal-node"; import { delay } from "test/utils/helpers/misc"; import { MockAuthProvider } from "test/utils/mocks/auth"; @@ -26,10 +27,13 @@ describe("AuthenticationService", () => { let fakeAADService: AADService; let appSpy; let state: AuthenticationState; + let authWindowLoaded; beforeEach(() => { appSpy = { splashScreen: new MockSplashScreen(), - authenticationWindow: new MockAuthenticationWindow() + authenticationWindow: new MockAuthenticationWindow(), + onIPCEvent: jasmine.createSpy("onIPCEvent"), + sendIPCEvent: jasmine.createSpy("sendIPCEvent"), }; fakeAuthProvider = new MockAuthProvider(appSpy, CONFIG); fakeAADService = { @@ -38,39 +42,60 @@ describe("AuthenticationService", () => { userAuthorization = new AuthenticationService(appSpy, CONFIG, fakeAuthProvider, fakeAADService); + userAuthorization.selectUserAuthMethod = + jasmine.createSpy("selectUserAuthMethod").and.returnValue( + Promise.resolve({ externalBrowserAuth: false })); fakeAuthWindow = appSpy.authenticationWindow; + authWindowLoaded = fakeAuthWindow.domReady; userAuthorization.state.subscribe(x => state = x); }); - describe("Authorize", () => { + describe("authorize()", () => { let result: AuthorizeResult | null; let error: AuthorizeError | null; - let promise; + beforeEach(async () => { result = null; error = null; - const obs = userAuthorization.authorize("tenant-1"); - promise = obs.then((out) => result = out).catch((e) => error = e); - await delay(); }); - it("Should have called loadurl", async () => { - fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); - await promise; + const runAuthorize = async (eventCallback?: () => Promise | void) => { + try { + const promise = userAuthorization.authorize("tenant-1"); + + await authWindowLoaded; + + if (eventCallback) { + const callbackResult = eventCallback(); + if (callbackResult instanceof Promise) { + await callbackResult; + } + } else { + await fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); + } + result = await promise; + } catch (_error) { + error = _error; + } + }; + + it("Should have called loadURL", async () => { + await runAuthorize(); expect(fakeAuthWindow.loadURL).toHaveBeenCalledTimes(1); const args = fakeAuthWindow.loadURL.calls.mostRecent().args; expect(args.length).toBe(1); }); - it("window should be visible", () => { + it("window should be visible", async () => { + await runAuthorize(); expect(fakeAuthWindow.isVisible()).toBe(true); }); it("should return the id token and code when successful", async () => { - fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); fakeAuthProvider.fakeToken = FAKE_TOKEN; - await promise; + await runAuthorize(); + expect(result).not.toBeNull(); expect(result.accessToken).toEqual("somecode"); expect(error).toBeNull(); @@ -79,99 +104,103 @@ describe("AuthenticationService", () => { expect(state).toBe(AuthenticationState.Authenticated); }); - it("Should error when the window fails to load", async () => { - fakeAuthWindow.notifyError({ code: 4, description: "Foo bar" }); - await promise; + it("should error when the window fails to load", async () => { + await runAuthorize(() => + fakeAuthWindow.notifyError({ code: 4, description: "Foo bar" }) + ); expect(result).toBeNull(); expect(error).not.toBeNull(); expect(error.error).toEqual("Failed to authenticate"); - expect(error.description).toEqual("Failed to load the AAD login page (4:Foo bar)"); + expect(error.description).toEqual("Failed to load the Microsoft login page (4:Foo bar)"); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(1); }); - it("Should error when the url redirect returns an error", async () => { - fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); - fakeAuthProvider.fakeError = { - error: "someerror", - description: "There was an error", - errorCodes: [ unretryableAuthCodeErrors[0] ] - }; - await promise; + it("should error when the url redirect returns an error", async () => { + await runAuthorize(() => fakeAuthWindow.notifyError({ + code: 4, description: "out of guacamole" + })); expect(result).toBeNull(); expect(error).not.toBeNull(); - expect(error.error).toEqual("someerror"); - expect(error.description).toEqual("There was an error"); + expect(error.error).toEqual("Failed to authenticate"); + expect(error.description).toContain("4:out of guacamole"); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(1); }); it("should only authorize 1 tenant at a time and queue the others", async () => { - const obs1 = userAuthorization.authorize("tenant-1"); - const obs2 = userAuthorization.authorize("tenant-2"); - const tenant1Spy = jasmine.createSpy("Tenant-1"); - const tenant2Spy = jasmine.createSpy("Tenant-2"); - const p1 = obs1.then(tenant1Spy); - const p2 = obs2.then(tenant2Spy); + const result1 = userAuthorization.authorize("tenant-1"); + const result2 = userAuthorization.authorize("tenant-2"); + const spy = jasmine.createSpy("multipleTenants"); + const promise1 = result1.then(spy); + const promise2 = result2.then(spy); + + expect(spy).not.toHaveBeenCalled(); - expect(tenant1Spy).not.toHaveBeenCalled(); - expect(tenant2Spy).not.toHaveBeenCalled(); + await authWindowLoaded; fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); fakeAuthProvider.fakeToken = FAKE_TOKEN; - await p1; + await promise1; + + result = spy.calls.mostRecent().args[0]; // Should have set tenant-1 expect(result).not.toBeNull(); expect(result.accessToken).toEqual("somecode"); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(1); - expect(tenant1Spy).toHaveBeenCalled(); - expect(tenant1Spy).toHaveBeenCalledWith({ + + await authWindowLoaded; + + expect(spy).toHaveBeenCalled(); + expect(spy).toHaveBeenCalledWith({ id_token: null, code: null, session_state: null, + state: null, ...FAKE_TOKEN }); - expect(tenant2Spy).not.toHaveBeenCalled(); - // Should now authorize for tenant-2 fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); - await p2; + await promise2; - expect(tenant2Spy).toHaveBeenCalled(); - expect(tenant2Spy).toHaveBeenCalledWith({ + expect(spy).toHaveBeenCalled(); + expect(spy).toHaveBeenCalledWith({ id_token: null, code: null, session_state: null, + state: null, ...FAKE_TOKEN }); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(2); }); it("should continue authorizing even if a tenant fails", async () => { - fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); fakeAuthProvider.fakeError = { error: "tenant1Error", description: "Tenant 1 Error", errorCodes: [ unretryableAuthCodeErrors[0] ] }; - const obs1 = userAuthorization.authorize("tenant-1"); - const obs2 = userAuthorization.authorize("tenant-2"); - const tenant1Spy = jasmine.createSpy("Tenant-1"); - const tenant2Spy = jasmine.createSpy("Tenant-2"); - const p1 = obs1.then(tenant1Spy); - const p2 = obs2.then(tenant2Spy); + const result1 = userAuthorization.authorize("tenant-1"); + const result2 = userAuthorization.authorize("tenant-2"); + const spy = jasmine.createSpy("multipleTenants"); + const promise1 = result1.then(spy); + const promise2 = result2.then(spy); + + expect(spy).not.toHaveBeenCalled(); - expect(tenant1Spy).not.toHaveBeenCalled(); + await authWindowLoaded; + fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); try { - await p1; + await promise1; fail("should have thrown an error"); - } catch (error) { + } catch (_error) { + error = _error; expect(error.error).toEqual("tenant1Error"); } @@ -181,20 +210,23 @@ describe("AuthenticationService", () => { expect(error.error).toEqual("tenant1Error"); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(1); - expect(tenant1Spy).not.toHaveBeenCalled(); - expect(tenant2Spy).not.toHaveBeenCalled(); + expect(spy).not.toHaveBeenCalled(); - // Should now authorize tenant-2 - fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); fakeAuthProvider.fakeError = null; fakeAuthProvider.fakeToken = FAKE_TOKEN; - await p2; - expect(tenant2Spy).toHaveBeenCalled(); - expect(tenant2Spy).toHaveBeenCalledWith({ + await authWindowLoaded; + + // Should now authorize tenant-2 + fakeAuthWindow.notifyRedirect(CONFIG.redirectUri); + await promise2; + + expect(spy).toHaveBeenCalled(); + expect(spy).toHaveBeenCalledWith({ id_token: null, code: null, session_state: null, + state: null, ...FAKE_TOKEN }); expect(fakeAuthWindow.destroy).toHaveBeenCalledTimes(2); @@ -206,7 +238,7 @@ describe("AuthenticationService", () => { userAuthorization.authorize("tenant-1"); }); - it("shoud not be visible", () => { + it("should not be visible", () => { expect(fakeAuthWindow.isVisible()).toBe(false); }); }); diff --git a/desktop/src/client/core/aad/authentication/authentication.service.ts b/desktop/src/client/core/aad/authentication/authentication.service.ts index 61fe47e6a9..bfcd6f407e 100644 --- a/desktop/src/client/core/aad/authentication/authentication.service.ts +++ b/desktop/src/client/core/aad/authentication/authentication.service.ts @@ -1,4 +1,4 @@ -import { SanitizedError } from "@batch-flask/utils"; +import { SanitizedError, SecureUtils } from "@batch-flask/utils"; import { BatchExplorerApplication } from "client/core/batch-explorer-application"; import { Deferred } from "common"; import { BehaviorSubject, Observable } from "rxjs"; @@ -6,6 +6,10 @@ import { AADService } from ".."; import { AADConfig } from "../aad-config"; import * as AADConstants from "../aad-constants"; import AuthProvider, { AuthorizationResult } from "../auth-provider"; +import { AuthError } from "@azure/msal-node"; +import { AuthObserver, UserAuthSelection } from "../auth-observer"; +import { IpcEvent } from "common/constants"; +import { first } from "rxjs/operators"; export interface AuthorizeResult extends AuthorizationResult { code: string; @@ -58,33 +62,46 @@ export class AuthorizeError extends Error { } } -interface AuthorizeQueueItem { - tenantId: string; - resourceURI: string; - forceRefresh: boolean; - deferred: Deferred; -} - export enum AuthenticationState { None, UserInput, Authenticated, + SignedOut, + Canceled } -export class LogoutError extends SanitizedError { - constructor() { - super("User logged out"); - } +enum TenantAuthState { + canceled, + pending, + completed, + signedOut, + failed +} + +export class SignOutException extends SanitizedError { + constructor() { super("User logged out"); } +} + +export class AuthCancelException extends SanitizedError { + constructor() { super("User canceled"); } +} + +export interface AuthorizeResourceOptions { + tenantId: string; + resourceURI: string; + forceRefresh?: boolean; + selectAuthMode?: boolean; } /** * This will open a new window at the /authorize endpoint to get the user */ -export class AuthenticationService { +export class AuthenticationService implements AuthObserver { public state: Observable; private _authQueue = new AuthorizeQueue(); private _state = new BehaviorSubject(AuthenticationState.None); - private _logoutDeferred: Deferred | null; + + public browserAuthMode: boolean; constructor( private app: BatchExplorerApplication, @@ -93,6 +110,7 @@ export class AuthenticationService { private aadService: AADService ) { this.state = this._state.asObservable(); + authProvider.setAuthObserver(this); } /** @@ -101,9 +119,11 @@ export class AuthenticationService { */ public async authorize(tenantId: string, forceRefresh = false): Promise { - return this.authorizeResource( - tenantId, this.app.properties.azureEnvironment.arm, forceRefresh - ); + return this.authorizeResource({ + tenantId, + resourceURI: this.app.properties.azureEnvironment.arm, + forceRefresh + }); } /** @@ -116,16 +136,27 @@ export class AuthenticationService { * @returns a promise with AuthorizedResult */ public async authorizeResource( - tenantId: string, resourceURI: string, forceRefresh: boolean + options: AuthorizeResourceOptions ): Promise { + const { + tenantId, + resourceURI, + forceRefresh, + selectAuthMode = true + } = options; const existingAuth = this._authQueue.get(tenantId, resourceURI); if (existingAuth) { - return existingAuth.deferred.promise; + if (forceRefresh) { + existingAuth.cancel("Force refresh"); + } else { + return this.convertToAuthResponse(existingAuth.promise()); + } } - const deferred = this._authQueue.add(tenantId, resourceURI, - forceRefresh); + const authItem = this._authQueue.add({ + tenantId, resourceURI, forceRefresh, selectAuthMode + }); this._authorizeNext(); - return deferred.promise; + return this.convertToAuthResponse(authItem.promise()); } /** @@ -134,83 +165,71 @@ export class AuthenticationService { * If a tenant is specified, only logout from that tenant */ public async logout(tenant?: string) { - if (this._logoutDeferred) { - return this._logoutDeferred.promise; - } - let showWindow = true; - - this.authProvider.logout(tenant); + await this.authProvider.logout(tenant); if (tenant) { this._authQueue.remove(tenant, this.app.properties.azureEnvironment.arm); - showWindow = false; } else { this._authQueue.clear(); } - - const url = AADConstants.logoutUrl( - this.app.properties.azureEnvironment.aadUrl, - tenant || this.config.tenant - ); - this._loadAuthWindow(url, { clear: true, tenant, show: showWindow }); - return this._logoutDeferred = new Deferred(); } private async _authorizeNext() { if (this._authQueue.authInProgress()) { return; } - const { tenantId, resourceURI, forceRefresh, deferred } = - this._authQueue.shift(); + const authItem = this._authQueue.shift(); + const { tenantId, resourceURI, forceRefresh } = authItem; try { const authResult: AuthorizationResult = await this.authProvider.getToken({ resourceURI, tenantId, - forceRefresh, - authCodeCallback: (url, tenant, silent) => - this._authorizationCodeCallback(url, tenant, silent) + forceRefresh }); if (this._state.getValue() !== AuthenticationState.Authenticated) { this._state.next(AuthenticationState.Authenticated); } - deferred.resolve({ + authItem.complete({ ...authResult, code: null, id_token: null, - session_state: null + session_state: null, + state: null }); - } catch (e) { - deferred.reject(e); + } catch (error) { + authItem.error(error); } finally { this._authQueue.current = null; this._authorizeNext(); } } - private async _authorizationCodeCallback(url: string, tenant: string, - silent = false) { - this._state.next(AuthenticationState.UserInput); - return await this._loadAuthWindow(url, { show: !silent, tenant }); - } - - private _loadAuthWindow(url: string, + /** + * Authenticate using an Electron browser window + * + * @returns A promise which resolves to an auth code string + */ + private async _loadAuthWindow(url: string, { clear = false, show = true, tenant = "" } = {} - ) { + ): Promise { const authWindow = this.app.authenticationWindow; - const deferred = new Deferred(); authWindow.create(); if (tenant !== "" && !(tenant in AADConstants.TenantPlaceholders)) { this._setAuthWindowTitle(tenant); } - authWindow.onRedirect(newUrl => - this._authWindowRedirected(newUrl, deferred)); - authWindow.onNavigate(newUrl => this._handleNavigate(newUrl)); - authWindow.onError(error => this._handleError(error)); + const deferred = new Deferred(); + authWindow.onRedirect(url => this._authWindowRedirected(url, + data => deferred.resolve(data) + )); + authWindow.onError(error => { + this._handleError(error); + deferred.reject(error); + }); authWindow.onClose(() => this._authCanceled()); if (clear) { @@ -224,22 +243,14 @@ export class AuthenticationService { return deferred.promise; } - private _handleNavigate(url: string) { - if (this._logoutDeferred && AADConstants.isLogoutURL(url)) { - this._closeWindow(); - const deferred = this._logoutDeferred; - this._logoutDeferred = null; - deferred.resolve(); - } - } - /** * Get called when the auth window redirect or navigate somewhere. * This is used to catch the final redirect_uri of AD' * @param url Url used for callback * @param callback Called with the result of the auth code */ - private _authWindowRedirected(url: string, deferred: Deferred) { + private _authWindowRedirected(url: string, + callback: (code: string) => void) { if (!this._isRedirectUrl(url) || !this._authQueue.hasCurrent()) { return; } @@ -247,19 +258,13 @@ export class AuthenticationService { this._closeWindow(); const params: AuthCodeResult = this._getRedirectUrlParams(url); if (params.error) { - deferred.reject( - new AuthorizeError(params as AuthorizeResponseError) - ); - } else { - deferred.resolve(params.code); + throw new AuthorizeError(params as AuthorizeResponseError); } + callback(params.code); } private _authCanceled() { - this._authQueue.rejectCurrent(new AuthorizeError({ - error: "Canceled authentication", - error_description: `User canceled authentication` - })); + this._authQueue.cancelCurrent("Canceled authentication"); if (!this._authQueue.empty()) { this._authorizeNext(); } @@ -267,9 +272,9 @@ export class AuthenticationService { private _handleError({code, description}) { this._closeWindow(); - this._authQueue.rejectCurrent(new AuthorizeError({ + this._authQueue.failCurrent(new AuthorizeError({ error: "Failed to authenticate", - error_description: `Failed to load the AAD login page (${code}:${description})`, + error_description: `Failed to load the Microsoft login page (${code}:${description})`, })); if (!this._authQueue.empty()) { this._authorizeNext(); @@ -312,6 +317,120 @@ export class AuthenticationService { } ); } + + public onAuthFailure(error: AuthError) { + if (this._authQueue.hasCurrent()) { + this._authQueue.failCurrent(error); + this._authorizeNext(); + } + } + + public async selectUserAuthMethod(tenantId: string): Promise { + if (this._authQueue.current?.selectAuthMode) { + this._state.next(AuthenticationState.UserInput); + return this._selectUserAuthMethod(tenantId); + } else { + return new Promise(resolve => { + this.app.userSettings.pipe(first()).subscribe(settings => { + resolve({ externalBrowserAuth: settings.externalBrowserAuth }); + }); + }); + } + } + + private async _selectUserAuthMethod(tenantId: string): Promise { + return new Promise((resolve, reject) => { + const requestId = createUniqueId(); + const responseEvent = IpcEvent.userAuthSelectResponse(requestId); + const listener = async (data) => { + if (data.result === "cancel") { + this._authQueue.cancelCurrent("User canceled"); + reject({ message: "User canceled" }); + } else { + resolve(data); + } + }; + this.app.onIPCEvent(responseEvent, data => listener(data)); + this.app.sendIPCEvent(IpcEvent.userAuthSelectRequest, { + requestId, + tenantId + }); + }); + } + + public fetchAuthCode(url: string, tenantId: string): Promise { + return this._loadAuthWindow(url, { tenant: tenantId }); + } + + private convertToAuthResponse(promise: Promise): Promise { + return promise.then(result => { + if (result.type === TenantAuthState.completed) { + return result.result; + } else if (result.type === TenantAuthState.canceled) { + throw new AuthCancelException(); + } else if (result.type === TenantAuthState.signedOut) { + throw new SignOutException(); + } else { + throw new Error(result.message); + } + }); + } +} + +type TenantAuthResult = { + type: TenantAuthState, + message?: string; + result?: AuthorizeResult; +}; + +class AuthorizeQueueItem { + private deferred: Deferred; + private _state: TenantAuthState = TenantAuthState.pending; + + constructor( + public tenantId: string, + public resourceURI: string, + public forceRefresh: boolean, + public selectAuthMode: boolean + ) { + this.deferred = new Deferred(); + } + + public promise() { + return this.deferred.promise; + } + + public cancel(reason?: string) { + this.deferred.resolve({ + type: TenantAuthState.canceled, + message: reason + }); + this._state = TenantAuthState.canceled; + } + + public complete(result: AuthorizeResult) { + this.deferred.resolve({ + type: TenantAuthState.completed, + result + }); + this._state = TenantAuthState.completed; + } + + public error(error: Error) { + this.deferred.reject(error); + this._state = TenantAuthState.failed; + } + + public signOut() { + this.deferred.resolve({ + type: TenantAuthState.signedOut + }); + this._state = TenantAuthState.signedOut; + } + + public get state() { + return this._state; + } } /** @@ -322,16 +441,20 @@ class AuthorizeQueue { public current: AuthorizeQueueItem = null; public clear() { - this.queue.forEach( - auth => auth.deferred.reject(new LogoutError())); + this.queue.forEach(auth => auth.cancel()); this.queue.length = 0; this.current = null; } - public add(tenantId: string, resourceURI: string, forceRefresh = false) { - const deferred = new Deferred(); - this.queue.push({ tenantId, resourceURI, forceRefresh, deferred }); - return deferred; + public add(options: AuthorizeResourceOptions): AuthorizeQueueItem { + const item = new AuthorizeQueueItem( + options.tenantId, + options.resourceURI, + options.forceRefresh, + options.selectAuthMode + ); + this.queue.push(item); + return item; } public shift(): AuthorizeQueueItem { @@ -343,18 +466,18 @@ class AuthorizeQueue { return this.hasCurrent() || this.queue.length === 0; } - public resolveCurrent(callback) { - const deferred = this.current.deferred; - this.clearCurrent(); - deferred.resolve(callback); - return deferred; + public cancelCurrent(message?: string) { + if (this.current) { + this.current.cancel(message); + } } - public rejectCurrent(callback) { - const deferred = this.current.deferred; - this.clearCurrent(); - deferred.reject(callback); - return deferred; + public failCurrent(error: Error) { + if (this.current) { + this.current.error(error); + } else { + throw new Error(`No auth in progress. Original: ${error.message}`); + } } public get(tenantId: string, resourceURI: string): AuthorizeQueueItem { @@ -367,16 +490,16 @@ class AuthorizeQueue { public remove(tenantId: string, resourceURI: string) { let index = 0; - let auth = null; + let auth: AuthorizeQueueItem = null; while (index < this.queue.length) { auth = this.queue[index]; if (this.matches(auth, tenantId, resourceURI)) { - auth.deferred.reject(new LogoutError()); + auth.signOut(); break; } index++; } - if (auth === this.current) { + if (auth?.tenantId === this.current?.tenantId) { this.shift(); } else if (index < this.queue.length) { this.queue.splice(index, 1); @@ -395,9 +518,8 @@ class AuthorizeQueue { public empty() { return this.queue.length === 0; } +} - private clearCurrent() { - this.current = null; - this.queue = this.queue.filter(item => !!item); - } +function createUniqueId(): string { + return SecureUtils.uuid(); } diff --git a/desktop/src/client/core/batch-explorer-application.ts b/desktop/src/client/core/batch-explorer-application.ts index da384e6779..1b4ee44473 100644 --- a/desktop/src/client/core/batch-explorer-application.ts +++ b/desktop/src/client/core/batch-explorer-application.ts @@ -1,5 +1,5 @@ import { Injectable, Injector } from "@angular/core"; -import { LocaleService, TelemetryService, TranslationsLoaderService } from "@batch-flask/core"; +import { LocaleService, TelemetryService, TranslationsLoaderService, UserConfigurationService } from "@batch-flask/core"; import { AutoUpdateService } from "@batch-flask/electron"; import { log } from "@batch-flask/utils"; import { AzureEnvironment } from "client/azure-environment"; @@ -10,7 +10,7 @@ import { TelemetryManager } from "client/core/telemetry/telemetry-manager"; import { ManualProxyConfigurationWindow } from "client/proxy/manual-proxy-configuration-window"; import { ProxyCredentialsWindow } from "client/proxy/proxy-credentials-window"; import { ProxySettingsManager } from "client/proxy/proxy-settings"; -import { BatchExplorerLink, Constants, Deferred } from "common"; +import { BEUserConfiguration, BatchExplorerLink, Constants, Deferred } from "common"; import { IpcEvent } from "common/constants"; import { app, dialog, ipcMain, protocol, session } from "electron"; import { UpdateCheckResult } from "electron-updater"; @@ -21,10 +21,11 @@ import { Constants as ClientConstants } from "../client-constants"; import { MainWindow, WindowState } from "../main-window"; import { PythonRpcServerProcess } from "../python-process"; import { RecoverWindow } from "../recover-window"; -import { AADService, AuthenticationState, AuthenticationWindow, LogoutError } from "./aad"; +import { AADService, AuthenticationWindow } from "./aad"; import { BatchExplorerInitializer } from "./batch-explorer-initializer"; import { MainWindowManager } from "./main-window-manager"; import { StorageBlobAdapter } from "./storage"; +import { filter, first, map } from "rxjs/operators"; const osName = `${os.platform()}-${os.arch()}/${os.release()}`; const isDev = ClientConstants.isDev ? "-dev" : ""; @@ -44,27 +45,31 @@ export class BatchExplorerApplication { public aadService: AADService; public state: Observable; public proxySettings: ProxySettingsManager; + public userSettings: Observable; + public appReady: Deferred; private _state = new BehaviorSubject(BatchExplorerState.Loading); private _initializer: BatchExplorerInitializer; private _currentlyAskingForCredentials: Promise | null; + private mainWindow: MainWindow; constructor( public autoUpdater: AutoUpdateService, public translationLoader: TranslationsLoaderService, public localeService: LocaleService, public injector: Injector, + public ipcMain: BlIpcMain, public properties: BatchExplorerProperties, private telemetryService: TelemetryService, private telemetryManager: TelemetryManager, - private ipcMain: BlIpcMain, - private storageBlobAdapter: StorageBlobAdapter) { + private storageBlobAdapter: StorageBlobAdapter, + configurationStore: UserConfigurationService + ) { this.windows = new MainWindowManager(this, this.telemetryManager); this.state = this._state.asObservable(); + this.appReady = new Deferred(); - ipcMain.on(IpcEvent.logoutAndLogin, () => { - return this.logoutAndLogin(); - }); + this.userSettings = configurationStore.config; } public async init() { @@ -90,8 +95,6 @@ export class BatchExplorerApplication { * Start the app by showing the splash screen */ public async start() { - const appReady = new Deferred(); - const loggedIn = new Deferred(); this.pythonServer.start(); this._initializer.init(); @@ -99,20 +102,6 @@ export class BatchExplorerApplication { if (!window) { return; } this._setCommonHeaders(window); - const loginResponse = this.aadService.login(); - loginResponse.done.catch((e) => { - if (e instanceof LogoutError) { - return; - } - log.error("Error while login", e); - dialog.showMessageBox({ - title: "Error during login", - type: "error", - message: e.toString(), - }); - this.logoutAndLogin(); - }); - await loginResponse.started; this._initializer.setTaskStatus("window", "Loading application"); @@ -130,27 +119,15 @@ export class BatchExplorerApplication { break; case WindowState.Ready: this._initializer.completeTask("window"); - appReady.resolve(); - } - }); - const authSub = this.aadService.authenticationState.subscribe((state) => { - switch (state) { - case AuthenticationState.None: - this._initializer.setLoginStatus("Login to azure active directory"); - break; - case AuthenticationState.UserInput: - this._initializer.setLoginStatus("Prompting for user input"); - break; - case AuthenticationState.Authenticated: - this._initializer.completeLogin(); - loggedIn.resolve(); - break; + this.appReady.resolve(); } }); - await Promise.all([appReady.promise, loggedIn.promise]); + await this.appReady.promise; + + this.ipcMain.on(IpcEvent.login, () => this.login()); + this.ipcMain.on(IpcEvent.logout, () => this.logout()); windowSub.unsubscribe(); - authSub.unsubscribe(); window.show(); } @@ -161,16 +138,30 @@ export class BatchExplorerApplication { */ public async updateAzureEnvironment(env: AzureEnvironment) { await this.aadService.logout(); - this.windows.closeAll(); await this.properties.updateAzureEnvironment(env); await this.aadService.login().done; - this.windows.openNewWindow(); + this.openMainWindow(); } - public async logoutAndLogin() { - await this.aadService.logout(); + public logout() { + return this.aadService.logout(); + } + + public async login() { await this.aadService.login().done; - this.windows.openNewWindow(); + this.openMainWindow(); + } + + private openMainWindow(showWhenReady = true) { + if (this.mainWindow && !this.mainWindow.isDestroyed()) { + if (!this.mainWindow.isVisible()) { + this.mainWindow.show(); + } + } else { + this.mainWindow = + this.windows.openNewWindow(undefined, showWhenReady); + } + return this.mainWindow; } /** @@ -192,12 +183,12 @@ export class BatchExplorerApplication { public async openFromArguments(argv: string[], showWhenReady = true): Promise { if (ClientConstants.isDev) { - return this.windows.openNewWindow(undefined, showWhenReady); + return this.openMainWindow(showWhenReady); } const program = parseArguments(argv); const arg = program.args[0]; if (!arg || arg.startsWith("data:")) { - return this.windows.openNewWindow(undefined, showWhenReady); + return this.openMainWindow(showWhenReady); } try { const link = new BatchExplorerLink(arg); @@ -260,6 +251,28 @@ export class BatchExplorerApplication { return app.getVersion(); } + public async getUserSetting(key: keyof BEUserConfiguration): + Promise { + const settingValue = this.userSettings.pipe( + map(settings => settings[key]), + filter(value => value !== undefined), + first(), + ); + return settingValue.toPromise(); + } + + public async sendIPCEvent(event: string, properties?: { [key: string]: string }): Promise { + if (!this.mainWindow || this.mainWindow.isDestroyed()) { + throw new Error("Main window is not available"); + } + return this.mainWindow.webContents.send(event, properties); + } + + public onIPCEvent(event: string, listener: (...args) => Promise): () => void { + const { unsubscribe } = this.ipcMain.on(event, listener); + return unsubscribe; + } + private _setupProcessEvents() { ipcMain.on("reload", () => { this.pythonServer.restart(); @@ -287,7 +300,7 @@ export class BatchExplorerApplication { // eslint-disable-next-line @typescript-eslint/ban-types process.on("uncaughtException" as any, (error: Error) => { - log.error("There was a uncaught exception", error); + log.error("There was an uncaught exception", error); this.recoverWindow.createWithError(error.message); this.telemetryService.trackError(error); this.telemetryService.flush(true); diff --git a/desktop/src/client/core/unique-window.ts b/desktop/src/client/core/unique-window.ts index 28b609b3e4..874b7adb64 100644 --- a/desktop/src/client/core/unique-window.ts +++ b/desktop/src/client/core/unique-window.ts @@ -50,6 +50,10 @@ export abstract class GenericWindow { return Boolean(this._window && this._window.isVisible()); } + public isDestroyed(): boolean { + return !this._window; + } + /** * Display the window only if not already visible * @param focus If we should focus on the window if it is already visible. @default false diff --git a/desktop/src/client/main-window/main-window.ts b/desktop/src/client/main-window/main-window.ts index 22c824f11a..28296e926c 100644 --- a/desktop/src/client/main-window/main-window.ts +++ b/desktop/src/client/main-window/main-window.ts @@ -5,6 +5,7 @@ import { BrowserWindow, app, ipcMain, nativeImage } from "electron"; import { BehaviorSubject, Observable } from "rxjs"; import { Constants } from "../client-constants"; import { BatchExplorerApplication, GenericWindow, enableRemoteForWindow } from "../core"; +import { is } from "immutable"; // Webpack dev server url when using HOT=1 const devServerUrl = Constants.urls.main.dev; @@ -26,6 +27,9 @@ export enum WindowState { FailedLoad, } +const AllowedDevToolsModes = ["left", "right", "undocked", "detach", "bottom"] as const; +type DevToolMode = typeof AllowedDevToolsModes[number]; + export class MainWindow extends GenericWindow { public appReady: Promise; public state: Observable; @@ -99,7 +103,9 @@ export class MainWindow extends GenericWindow { // Open the DevTools. if (process.env.NODE_ENV !== "production") { - window.webContents.openDevTools({ mode: 'undocked' }); + const mode = isDevToolsMode(process.env.DEV_TOOLS_MODE) ? + process.env.DEV_TOOLS_MODE : "undocked"; + window.webContents.openDevTools({ mode }); } return window; @@ -135,3 +141,7 @@ export class MainWindow extends GenericWindow { }); } } + +function isDevToolsMode(value: any): value is DevToolMode { + return AllowedDevToolsModes.includes(value); +} diff --git a/desktop/src/common/be-user-configuration.model.ts b/desktop/src/common/be-user-configuration.model.ts index 4777ce2d07..454fde0e94 100644 --- a/desktop/src/common/be-user-configuration.model.ts +++ b/desktop/src/common/be-user-configuration.model.ts @@ -6,6 +6,8 @@ import type { BatchFlaskUserConfiguration, EntityConfigurationView } from "@batc export interface BEUserConfiguration extends BatchFlaskUserConfiguration { theme: string; + externalBrowserAuth: boolean; + subscriptions: { ignore: string[], }; @@ -97,4 +99,5 @@ export const DEFAULT_BE_USER_CONFIGURATION: BEUserDesktopConfiguration = { defaultOutputFileGroup: null, }, theme: "classic", + externalBrowserAuth: true }; diff --git a/desktop/src/common/constants/constants.ts b/desktop/src/common/constants/constants.ts index 5416333b44..5bbe8f8e05 100644 --- a/desktop/src/common/constants/constants.ts +++ b/desktop/src/common/constants/constants.ts @@ -208,7 +208,11 @@ export const IpcEvent = { clearTenantAuth: "AAD_CLEAR_TENANT_AUTH" }, launchApplication: "LAUNCH_APPLICATION", - logoutAndLogin: "LOGOUT_AND_LOGIN", + login: "LOGIN", + logout: "LOGOUT", + userAuthSelectRequest: "USER_AUTH_SELECT", + userAuthSelectResponse: + (requestId: string) => `USER_AUTH_SELECT_${requestId}`, sendTelemetry: "SEND_TELEMETRY", log: "SEND_LOG", storageBlob: { diff --git a/desktop/src/test/utils/mocks/auth/auth-provider.mock.ts b/desktop/src/test/utils/mocks/auth/auth-provider.mock.ts index 184d478ec7..249e11d4e4 100644 --- a/desktop/src/test/utils/mocks/auth/auth-provider.mock.ts +++ b/desktop/src/test/utils/mocks/auth/auth-provider.mock.ts @@ -1,21 +1,25 @@ -import { AuthenticationResult, ClientApplication } from "@azure/msal-node"; +import { AuthenticationResult, ClientApplication, InteractionRequiredAuthError } from "@azure/msal-node"; import { AzurePublic } from "client/azure-environment"; import { AuthorizeError, AuthorizeResponseError } from "client/core/aad"; import { AADConfig } from "client/core/aad/aad-config"; +import { AuthObserver } from "client/core/aad/auth-observer"; import AuthProvider from "client/core/aad/auth-provider"; export class MockAuthProvider extends AuthProvider { public fakeToken: Partial; public fakeConfig: AADConfig; public fakeError: Partial; + public fakeAuthObserver: jasmine.SpyObj; constructor(app: any, config: AADConfig) { instrumentForAuth(app); super(app, config); this.fakeConfig = config; spyOn(this, "_getClient").and.returnValue( - new MockClientApplication(this) + Promise.resolve(new MockClientApplication(this)) ); instrumentAuthProvider(this); + this.fakeAuthObserver = mockAuthObserver(); + this.setAuthObserver(this.fakeAuthObserver); } } export class MockClientApplication extends ClientApplication { @@ -29,13 +33,13 @@ export class MockClientApplication extends ClientApplication { public getAuthCodeUrl(request) { if (request?.prompt === "none") { - throw new AuthorizeError({ + return Promise.reject(new AuthorizeError({ error: "fakeError", error_description: "fakeErrorDescription", error_code: "" - }); + })); } - return Promise.resolve(this.fakeAuthProvider?.fakeConfig.redirectUri); + return Promise.resolve("https://login.contoso.net?fakeauthcode=12345"); } public acquireTokenByCode() { @@ -46,11 +50,20 @@ export class MockClientApplication extends ClientApplication { this.fakeAuthProvider.fakeToken as AuthenticationResult); } - public async acquireTokenSilent() { - return null; + public async acquireTokenSilent(): Promise { + throw new InteractionRequiredAuthError("Fake interaction required auth error"); } } +function mockAuthObserver(): jasmine.SpyObj { + return { + onAuthFailure: jasmine.createSpy("onAuthFailure"), + selectUserAuthMethod: jasmine.createSpy("selectUserAuthMethod") + .and.returnValue(Promise.resolve({ externalBrowserAuth: false })), + fetchAuthCode: jasmine.createSpy("fetchAuthCode") + }; +} + export class MockAuthorizeError extends AuthorizeError { static responseErrorPrototype: AuthorizeResponseError = { error: "error", @@ -87,7 +100,10 @@ export const instrumentAuthProvider = (authProvider: AuthProvider) => { const tenants = {}; spyOn(authProvider, "_getAccount").and.callFake(tenantId => { if (tenantId in tenants) { - return new MockClientApplication(); + return { + tenantId, + localAccountId: `${tenantId}-account1` + }; } else { tenants[tenantId] = true; throw new Error("no account"); diff --git a/desktop/src/test/utils/mocks/windows/windows.mock.ts b/desktop/src/test/utils/mocks/windows/windows.mock.ts index 1cbbeb1f25..016daa102b 100644 --- a/desktop/src/test/utils/mocks/windows/windows.mock.ts +++ b/desktop/src/test/utils/mocks/windows/windows.mock.ts @@ -1,3 +1,4 @@ +import { Deferred } from "common"; import { Subject } from "rxjs"; export class MockBrowserWindow { @@ -76,13 +77,23 @@ export class MockUniqueWindow { public show: jasmine.Spy; public hide: jasmine.Spy; public destroy: jasmine.Spy; + public domReady: Promise; private _visible: boolean = false; + private _domReadyDeferred: Deferred; constructor() { - this.create = jasmine.createSpy("create"); + this._domReadyDeferred = new Deferred(); + this.domReady = this._domReadyDeferred.promise; + + this.create = jasmine.createSpy("create").and.callFake(() => { + this._domReadyDeferred.resolve(); + }); this.show = jasmine.createSpy("show").and.callFake(() => this._visible = true); this.hide = jasmine.createSpy("hide").and.callFake(() => this._visible = false); - this.destroy = jasmine.createSpy("destroy"); + this.destroy = jasmine.createSpy("destroy").and.callFake(() => { + this._domReadyDeferred = new Deferred(); + this.domReady = this._domReadyDeferred.promise; + }); } public isVisible() { @@ -129,9 +140,9 @@ export class MockAuthenticationWindow extends MockUniqueWindow { } public notifyRedirect(newUrl) { - for (const callback of this._onRedirectCallbacks) { + this._onRedirectCallbacks.forEach((callback) => { callback(newUrl); - } + }); } public notifyNavigate(newUrl) { diff --git a/docs/setup.md b/docs/setup.md index b040a09fc1..d195fb6152 100644 --- a/docs/setup.md +++ b/docs/setup.md @@ -52,6 +52,21 @@ This command will enable hot reload for a better development experience. Simply Please also take a look at the [coding guidelines](coding-guidelines.md) for this repo for best practices. +In developer-mode, Batch Explorer starts with Chrome Developer Tools (DevTools) opened in "undocked" mode. To open DevTools in another mode, set the `DEV_TOOLS_MODE` environment variables. The allowed values are "left", "right", "bottom", "undocked", and "detach". + +**Linux shells:** + +```bash +DEV_TOOLS_MODE=right npm run launch:desktop +``` + +**Powershell:** + +```powershell +$Env:DEV_TOOLS_MODE = "right" +npm run launch:desktop +``` + ## Editor If you're using VSCode (recommended) we suggest you use the following extensions: diff --git a/package-lock.json b/package-lock.json index d709e69409..8b95297c82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4423,12 +4423,12 @@ } }, "node_modules/axios": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.1.tgz", - "integrity": "sha512-vfBmhDpKafglh0EldBEbVuoe7DyAavGSLWhuSm5ZSEKQnHhBf0xAAwybbNH1IkrJNGnS/VG4I5yxig1pCEXE4g==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6227,9 +6227,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { diff --git a/util/bux/cli.ts b/util/bux/cli.ts index 5029bd581e..0e6a8bca14 100755 --- a/util/bux/cli.ts +++ b/util/bux/cli.ts @@ -82,10 +82,6 @@ yargs type: "string", describe: "The path to Batch Explorer/Shared Libraries", }) - .option("paths.batchPortalExtension", { - type: "string", - describe: "The path to the Batch portal extension", - }) .option("print", { type: "boolean", describe: "Print the resultant configuration object", diff --git a/util/bux/util.ts b/util/bux/util.ts index 98389052d9..5678b9822b 100644 --- a/util/bux/util.ts +++ b/util/bux/util.ts @@ -17,19 +17,21 @@ import { export const defaultBatchExplorerHome = path.resolve(__dirname, "../../"); export const configFile = path.resolve(os.homedir(), ".config/batch/bux.json"); -const portalReactPath = "src/src/BatchExtension/Client/ReactViews"; const defaultJsonIndentSize = 2; const printJsonIndentSize = 4; export interface Configuration { paths: { batchExplorer?: string; - batchPortalExtension?: string; }; } type ConfigPath = keyof Configuration["paths"]; +export interface BuxConfig { + rootPackage: string; +} + export const info = (...args: string[]) => console.log(color.blue(...args)); export const warn = (...args: string[]) => console.warn(color.yellow(...args)); export const error = (...args: string[]) => console.error(color.red(...args)); @@ -71,6 +73,26 @@ export async function loadConfiguration(): Promise { return readJsonOrDefault(configFile); } +// Recursively searches upward from startDir (the current working directory from which the command is run) for a bux.json configuration file +export async function findBuxConfig( + startDir: string +): Promise<{ buxConfig: BuxConfig | null; rootDir: string }> { + let currentDir = startDir; + + while (currentDir !== path.parse(currentDir).root) { + const configPath = path.join(currentDir, "bux.json"); + if (fs.existsSync(configPath)) { + return { + buxConfig: readJsonOrDefault(configPath), + rootDir: currentDir, + }; + } + currentDir = path.dirname(currentDir); + } + + return { buxConfig: null, rootDir: "" }; +} + /** * Gets option from the project's editor config. * @param {string} option The config option to return @@ -222,7 +244,7 @@ function getGitInfo(path: string): GitInfo { }); } catch (e) { if (e instanceof Error) { - error(`Error retreiving Git info: ${e.message}`); + error(`Error retrieving Git info: ${e.message}`); } throw e; } @@ -252,28 +274,35 @@ function printInfo(name: string, repoPath?: string): void { } } -async function printLinkStatus(): Promise { +async function printLinkStatus(rootPackage: string): Promise { const linkChecks: boolean[] = []; - await runLinkageTask((opts: LinkOptions) => { - let isLinked = false; + await runLinkageTask( + (opts: LinkOptions) => { + let isLinked = false; - const nodeModulePath = path.join( - opts.targetPath, - "node_modules", - opts.packageName - ); + const nodeModulePath = path.join( + opts.targetPath, + "node_modules", + opts.packageName + ); - if (fs.existsSync(nodeModulePath)) { - const stats = fs.lstatSync(nodeModulePath); - if (stats.isSymbolicLink()) { - isLinked = true; + if (fs.existsSync(nodeModulePath)) { + const stats = fs.lstatSync(nodeModulePath); + if (stats.isSymbolicLink()) { + isLinked = true; + } } - } - linkChecks.push(isLinked); - }); + linkChecks.push(isLinked); + }, + undefined, + rootPackage + ); - const allPackagesLinked = linkChecks.reduce((prev, curr) => prev && curr); + const allPackagesLinked = linkChecks.reduce( + (prev, curr) => prev && curr, + true + ); let linkStatus; if (allPackagesLinked) { linkStatus = color.green("active"); @@ -285,13 +314,22 @@ async function printLinkStatus(): Promise { export async function printStatus() { const config = await loadConfiguration(); + const { buxConfig, rootDir } = await findBuxConfig(process.cwd()); + + if (!buxConfig || !rootDir) { + error("No bux.json configuration found. Exiting..."); + process.exit(1); + } try { printInfo("Batch Explorer", config.paths.batchExplorer); info(""); - printInfo("Batch portal extension", config.paths.batchPortalExtension); - info(""); - await printLinkStatus(); + const gitRoot = findGitRoot(process.cwd()); + if (gitRoot) { + printInfo("Current repository", gitRoot); + info(""); + } + await printLinkStatus(buxConfig.rootPackage); } catch (e) { error("Config errors found. Run `bux configure` to re-configure."); throw e; @@ -354,44 +392,62 @@ export async function gatherBuildResults(basePath: string) { } export async function linkLocalProjects() { - runLinkageTask((opts: LinkOptions) => { - info(`Linking ${opts.versionedPackageName}`); + const { buxConfig, rootDir } = await findBuxConfig(process.cwd()); - const nodeModulesPath = path.join(opts.targetPath, "node_modules"); - const targetPath = path.join(nodeModulesPath, opts.packageName); + if (!buxConfig || !rootDir) { + error("No bux.json configuration found. Exiting..."); + process.exit(1); + } - if (!fs.existsSync(nodeModulesPath)) { - throw new Error( - `Failed to link ${opts.packageName}: ${nodeModulesPath} doesn't exist` - ); - } - if (!fs.lstatSync(nodeModulesPath).isDirectory()) { - throw new Error( - `Failed to link ${opts.packageName}: ${nodeModulesPath} is not a directory` - ); - } + runLinkageTask( + (opts: LinkOptions) => { + info(`Linking ${opts.versionedPackageName}`); - if (fs.existsSync(targetPath)) { - if (fs.lstatSync(targetPath).isSymbolicLink()) { - // Early out if target is already a symlink - console.warn( - `${targetPath} is already a symbolic link - skipping` + const nodeModulesPath = path.join(opts.targetPath, "node_modules"); + const targetPath = path.join(nodeModulesPath, opts.packageName); + + if (!fs.existsSync(nodeModulesPath)) { + throw new Error( + `Failed to link ${opts.packageName}: ${nodeModulesPath} doesn't exist` + ); + } + if (!fs.lstatSync(nodeModulesPath).isDirectory()) { + throw new Error( + `Failed to link ${opts.packageName}: ${nodeModulesPath} is not a directory` ); - return; + } + + if (fs.existsSync(targetPath)) { + if (fs.lstatSync(targetPath).isSymbolicLink()) { + // Early out if target is already a symlink + console.warn( + `${targetPath} is already a symbolic link - skipping` + ); + return; + } else { + shell.rm("-rf", targetPath); + } } else { - shell.rm("-rf", targetPath); + console.warn( + `No directory for ${opts.packageName} found in node_modules.` + ); } - } else { - console.warn( - `No directory for ${opts.packageName} found in node_modules.` - ); - } - shell.ln("-s", opts.packagePath, targetPath); - }); + shell.ln("-s", opts.packagePath, targetPath); + }, + undefined, + buxConfig.rootPackage + ); } export async function unlinkLocalProjects() { + const { buxConfig, rootDir } = await findBuxConfig(process.cwd()); + + if (!buxConfig || !rootDir) { + error("No bux.json configuration found. Exiting..."); + process.exit(1); + } + runLinkageTask( (opts: LinkOptions) => { info(`Unlinking ${opts.versionedPackageName}`); @@ -421,13 +477,13 @@ export async function unlinkLocalProjects() { info("Running `npm install` to restore packages..."); shell.cd(targetPath); shell.exec(`npm install -s`); - } + }, + buxConfig.rootPackage ); } export type ConfigureCommandOptions = { "paths.batchExplorer"?: string; - "paths.batchPortalExtension"?: string; print: boolean; }; @@ -448,16 +504,10 @@ export async function configure(options: ConfigureCommandOptions) { } } else { const answers = await inquirer.prompt([ - { - name: "batchPortalExtension", - message: "Path to Batch Portal Extension", - default: config.paths.batchPortalExtension, - validate: validateDirectory, - type: "string", - }, { name: "batchExplorer", - message: "Path to Batch Explorer", + message: + "Path to Batch Explorer (use /mnt/c/... for WSL, e.g., CycleCloud):", default: config.paths.batchExplorer || defaultBatchExplorerHome, validate: validateDirectory, type: "string", @@ -508,20 +558,24 @@ interface LinkOptions { */ async function runLinkageTask( perPackageCallback: (opts: LinkOptions) => void, - cleanupCallback?: (targetPath: string) => void + cleanupCallback?: (targetPath: string) => void, + rootPackage?: string ) { const config = await loadConfiguration(); - if (!config.paths || !config.paths.batchPortalExtension) { + if (!rootPackage) { error( - `Configuration does not contain portal paths. ` + - `Run the 'configure' command to fix.` + `No root package path found. Ensure bux.json contains the rootPackage path.` ); return; } - const targetPath = path.join( - config.paths.batchPortalExtension, - portalReactPath - ); + + const { buxConfig, rootDir } = await findBuxConfig(process.cwd()); + if (!buxConfig || !rootDir) { + error(`No bux.json configuration found. Exiting...`); + process.exit(1); + } + + const targetPath = path.join(rootDir, rootPackage); const targetPackageJson = path.join(targetPath, "package.json"); if (!fs.existsSync(targetPackageJson)) { error(`No package.json in target directory ${targetPath}`); @@ -529,7 +583,6 @@ async function runLinkageTask( } const targetConf = readJsonOrDefault(targetPackageJson); - const packageRoot = path.join( config.paths.batchExplorer || defaultBatchExplorerHome, "packages" @@ -575,9 +628,19 @@ function isConfigurationObject(object: unknown): object is Configuration { } function isConfigPathKey(key: string): key is ConfigPath { - return ["batchExplorer", "batchPortalExtension"].includes(key); + return ["batchExplorer"].includes(key); } function printJson(json: object) { info(JSON.stringify(json, null, printJsonIndentSize)); } + +function findGitRoot(currentDir: string): string | null { + while (currentDir !== path.parse(currentDir).root) { + if (fs.existsSync(path.join(currentDir, ".git"))) { + return currentDir; + } + currentDir = path.dirname(currentDir); + } + return null; +} diff --git a/util/common-config/package-lock.json b/util/common-config/package-lock.json index 9a3d98a927..7f8631db2b 100644 --- a/util/common-config/package-lock.json +++ b/util/common-config/package-lock.json @@ -4142,9 +4142,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0"