From c71ca89fc5b1eabb1040f61fd314c73e4e76b183 Mon Sep 17 00:00:00 2001 From: John Date: Mon, 8 Apr 2024 21:13:38 +0100 Subject: [PATCH] Update to improve the bundle size Also broke out source maps and have added two useful commands to generate overviews of the provider.bundle.js file and all modules. --- .gitignore | 2 + .../workspace-platform-starter/CHANGELOG.md | 4 + .../client/src/framework/fdc3/errors.ts | 32 ++++ .../broker/client-registration-helper.ts | 3 +- .../platform/broker/intent-resolver-helper.ts | 2 +- .../src/framework/platform/interopbroker.ts | 15 +- .../client/webpack.config.js | 66 ++++---- .../docs/how-to-add-a-module.md | 2 +- .../workspace-platform-starter/package.json | 6 +- .../templates/scripts/generate-module.mjs | 2 +- .../templates/webpack.config.js | 24 +-- package-lock.json | 146 +++++++++--------- 12 files changed, 172 insertions(+), 132 deletions(-) create mode 100644 how-to/workspace-platform-starter/client/src/framework/fdc3/errors.ts diff --git a/.gitignore b/.gitignore index 9836495c95..b8c625a065 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ how-to/integrate-with-salesforce/public/js/preload.js how-to/integrate-with-salesforce-basic/public/js/preload.js # Bundle/builds **/*.bundle.js +**/*.bundle.js.map +**/*.bundle.js.LICENSE.txt **/build ./public*/ updatable-packages.txt diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index 9b2275a5cb..915ced6df9 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,10 @@ ## v17.2.0 +- Updated default build options. No longer bundling fdc3 module just for error strings. We have a copy of the strings to remove the dependency from the output (as it increased the size of the provider js) +- Updated webpack config to use source-map instead of inline-source-map to have smaller js files by default (devtools will import the sourcemap). It also gives you the option of whether or not you copy source map files alongside the files. +- Changed to production instead of development for the webpack build in package.json to have a more efficient js file. +- Added some useful commands `npm run explore-platform` and `npm run explore-modules` which should be run after you have run an initial build `npm run build`. This provides an overview of the bundles that are produced and lets you track the size of your modules as well as the platform. - Improved performance of switching schemes - Improved performance of computing dock configuration, especially on theme changes. - Added lifecycle events for `language-changed` which includes the selected locale and updated `page-changed` so that you can listen for when a page is focused as there is now a focus event. diff --git a/how-to/workspace-platform-starter/client/src/framework/fdc3/errors.ts b/how-to/workspace-platform-starter/client/src/framework/fdc3/errors.ts new file mode 100644 index 0000000000..18073bbbf9 --- /dev/null +++ b/how-to/workspace-platform-starter/client/src/framework/fdc3/errors.ts @@ -0,0 +1,32 @@ +/** Constants representing the errors that can be encountered when calling the `open` method on the DesktopAgent object (`fdc3`). */ +export const OPEN_ERROR = { + /** Returned if the specified application is not found.*/ + AppNotFound: "AppNotFound", + /** Returned if the specified application fails to launch correctly.*/ + ErrorOnLaunch: "ErrorOnLaunch", + /** Returned if the specified application launches but fails to add a context listener in order to receive the context passed to the `fdc3.open` call.*/ + AppTimeout: "AppTimeout", + /** Returned if the FDC3 desktop agent implementation is not currently able to handle the request.*/ + ResolverUnavailable: "ResolverUnavailable", + /** Returned if a call to the `open` function is made with an invalid context argument. Contexts should be Objects with at least a `type` field that has a `string` value.*/ + MalformedContext: "MalformedContext" +}; +/** Constants representing the errors that can be encountered when calling the `findIntent`, `findIntentsByContext`, `raiseIntent` or `raiseIntentForContext` methods on the DesktopAgent (`fdc3`). */ +export const RESOLVE_ERROR = { + /** SHOULD be returned if no apps are available that can resolve the intent and context combination.*/ + NoAppsFound: "NoAppsFound", + /** Returned if the FDC3 desktop agent implementation is not currently able to handle the request.*/ + ResolverUnavailable: "ResolverUnavailable", + /** Returned if the user cancelled the resolution request, for example by closing or cancelling a resolver UI.*/ + UserCancelled: "UserCancelledResolution", + /** SHOULD be returned if a timeout cancels an intent resolution that required user interaction. Please use `ResolverUnavailable` instead for situations where a resolver UI or similar fails.*/ + ResolverTimeout: "ResolverTimeout", + /** Returned if a specified target application is not available or a new instance of it cannot be opened. */ + TargetAppUnavailable: "TargetAppUnavailable", + /** Returned if a specified target application instance is not available, for example because it has been closed. */ + TargetInstanceUnavailable: "TargetInstanceUnavailable", + /** Returned if the intent and context could not be delivered to the selected application or instance, for example because it has not added an intent handler within a timeout.*/ + IntentDeliveryFailed: "IntentDeliveryFailed", + /** Returned if a call to one of the `raiseIntent` functions is made with an invalid context argument. Contexts should be Objects with at least a `type` field that has a `string` value.*/ + MalformedContext: "MalformedContext" +}; diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/broker/client-registration-helper.ts b/how-to/workspace-platform-starter/client/src/framework/platform/broker/client-registration-helper.ts index a0dfe5473d..e0279297cd 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/broker/client-registration-helper.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/broker/client-registration-helper.ts @@ -1,5 +1,6 @@ -import { OpenError, ResolveError, type AppIdentifier } from "@finos/fdc3"; +import type { AppIdentifier } from "@finos/fdc3"; import type OpenFin from "@openfin/core"; +import { OPEN_ERROR as OpenError, RESOLVE_ERROR as ResolveError } from "../../fdc3/errors"; import type { IntentRegistrationEntry, ContextRegistrationEntry, diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/broker/intent-resolver-helper.ts b/how-to/workspace-platform-starter/client/src/framework/platform/broker/intent-resolver-helper.ts index ce6c89e363..0d8cdd6b0b 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/broker/intent-resolver-helper.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/broker/intent-resolver-helper.ts @@ -1,6 +1,6 @@ -import { ResolveError } from "@finos/fdc3"; import type OpenFin from "@openfin/core"; import type { AppIntent } from "@openfin/workspace-platform"; +import { RESOLVE_ERROR as ResolveError } from "../../fdc3/errors"; import type { PlatformApp } from "../../shapes/app-shapes"; import type { IntentResolverResponse, IntentResolverOptions } from "../../shapes/interopbroker-shapes"; import type { Logger } from "../../shapes/logger-shapes"; diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/interopbroker.ts b/how-to/workspace-platform-starter/client/src/framework/platform/interopbroker.ts index ff79a34065..2366d0bb95 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/interopbroker.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/interopbroker.ts @@ -1,11 +1,9 @@ -import { - OpenError, - ResolveError, - type AppIdentifier, - type AppMetadata, - type ImplementationMetadata, - type IntentResolution, - type ContextMetadata +import type { + AppIdentifier, + AppMetadata, + ImplementationMetadata, + IntentResolution, + ContextMetadata } from "@finos/fdc3"; import type OpenFin from "@openfin/core"; import type { WindowPositioningOptions } from "workspace-platform-starter/shapes/browser-shapes"; @@ -18,6 +16,7 @@ import * as connectionProvider from "../connections"; import { hasEndpoint, requestResponse } from "../endpoint"; import { mapToAppMetaData as mapTo12AppMetaData } from "../fdc3/1.2/mapper"; import { mapToAppMetaData as mapTo20AppMetaData } from "../fdc3/2.0/mapper"; +import { OPEN_ERROR as OpenError, RESOLVE_ERROR as ResolveError } from "../fdc3/errors"; import { bringToFront, launch } from "../launch"; import { createLogger } from "../logger-provider"; import { MANIFEST_TYPES } from "../manifest-types"; diff --git a/how-to/workspace-platform-starter/client/webpack.config.js b/how-to/workspace-platform-starter/client/webpack.config.js index 80b8095c7f..708e551cf8 100644 --- a/how-to/workspace-platform-starter/client/webpack.config.js +++ b/how-to/workspace-platform-starter/client/webpack.config.js @@ -8,7 +8,7 @@ const alias = { const configs = [ { entry: './client/src/provider.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -36,7 +36,7 @@ const configs = [ }, { entry: './client/src/shell.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -64,7 +64,7 @@ const configs = [ }, { entry: './client/src/modules/auth/example/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -92,7 +92,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/local-storage/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -120,7 +120,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/channel/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -148,7 +148,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/inline-apps/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -176,7 +176,7 @@ const configs = [ }, { entry: './client/src/modules/init-options/interop/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -204,7 +204,7 @@ const configs = [ }, { entry: './client/src/modules/init-options/launch-app/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -232,7 +232,7 @@ const configs = [ }, { entry: './client/src/modules/log/console/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -260,7 +260,7 @@ const configs = [ }, { entry: './client/src/modules/actions/opacity/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -288,7 +288,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/example-connection-validation/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -316,7 +316,7 @@ const configs = [ }, { entry: './client/src/modules/analytics/console/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -344,7 +344,7 @@ const configs = [ }, { entry: './client/src/modules/composite/developer/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -372,7 +372,7 @@ const configs = [ }, { entry: './client/src/modules/integrations/apps/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -400,7 +400,7 @@ const configs = [ }, { entry: './client/src/modules/integrations/workspaces/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -428,7 +428,7 @@ const configs = [ }, { entry: './client/src/modules/integrations/pages/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -456,7 +456,7 @@ const configs = [ }, { entry: './client/src/modules/composite/about/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -484,7 +484,7 @@ const configs = [ }, { entry: './client/src/modules/composite/pages/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -512,7 +512,7 @@ const configs = [ }, { entry: './client/src/modules/composite/windows/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -540,7 +540,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/example-context-processor/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -568,7 +568,7 @@ const configs = [ }, { entry: './client/src/framework/fdc3/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -596,7 +596,7 @@ const configs = [ }, { entry: './client/src/modules/actions/custom-menu/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -624,7 +624,7 @@ const configs = [ }, { entry: './client/src/modules/auth/openid-connect/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -652,7 +652,7 @@ const configs = [ }, { entry: './client/src/modules/endpoint/favorite-local-storage/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -680,7 +680,7 @@ const configs = [ }, { entry: './client/src/modules/actions/favorites-menu/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -708,7 +708,7 @@ const configs = [ }, { entry: './client/src/modules/composite/include-in-snapshot/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -736,7 +736,7 @@ const configs = [ }, { entry: './client/src/modules/lifecycle/example-notification-service/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -764,7 +764,7 @@ const configs = [ }, { entry: './client/src/modules/init-options/launch-workspace/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -792,7 +792,7 @@ const configs = [ }, { entry: './client/src/modules/composite/default-workspace/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -820,7 +820,7 @@ const configs = [ }, { entry: './client/src/modules/content-creation/view-position/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -848,7 +848,7 @@ const configs = [ }, { entry: './client/src/modules/actions/window-platform/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -876,7 +876,7 @@ const configs = [ }, { entry: './client/src/modules/share/pages/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -904,7 +904,7 @@ const configs = [ }, { entry: './client/src/modules/share/workspaces/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { diff --git a/how-to/workspace-platform-starter/docs/how-to-add-a-module.md b/how-to/workspace-platform-starter/docs/how-to-add-a-module.md index ba661f7193..f5a98d2915 100644 --- a/how-to/workspace-platform-starter/docs/how-to-add-a-module.md +++ b/how-to/workspace-platform-starter/docs/how-to-add-a-module.md @@ -96,7 +96,7 @@ The module should be compiled as a JavaScript ESM module, an example webpack con ```js { entry: './client/src/modules/log/console/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 1e5e83540e..ac03425e4e 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -10,8 +10,8 @@ "prebuild-client": "node -p \"'// Generated from package.json version at build time. Do not modify directly.\\nexport const PLATFORM_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > client/src/framework/platform/platform-version.ts", "build-client": "npm run prebuild-client && npm run build-client-parallel", "build-client-parallel": "node scripts/webpack-parallel.mjs ./client/webpack.config.js", - "build-client-serial": "webpack build --config ./client/webpack.config.js --mode=development", - "build-templates": "webpack build --config ./templates/webpack.config.js --mode=development", + "build-client-serial": "webpack build --config ./client/webpack.config.js --mode=production", + "build-templates": "webpack build --config ./templates/webpack.config.js --mode=production", "start": "npm run server", "client": "node ./scripts/launch.mjs", "secondclient": "node ./scripts/launch.mjs http://localhost:8080/second.manifest.fin.json", @@ -20,6 +20,8 @@ "emptyclient": "node ./scripts/launch.mjs http://localhost:8080/empty.manifest.fin.json", "server": "node ./server/build/index.js", "setup": "npm install && npm run build", + "explore-platform": "npx source-map-explorer public/js/provider.bundle.js", + "explore-modules": "npx source-map-explorer public/js/modules/**/*.js", "generate-types": "tsc --project ./client/tsconfig.types.json && tsc --project ./client/tsconfig.types-module.json && npx rimraf ./client/types/framework", "generate-schema": "npm run generate-settings-schema && npm run generate-fdc3v2-schema && npm run generate-fdc3v1-schema && npm run generate-platform-apps-schema && npm run generate-view-options-schema && npm run generate-window-options-schema && npm run generate-snapshot-options-schema && npm run generate-wps-manifest-schema && npm run generate-openfin-manifest-schema", "generate-settings-schema": "npx --yes typescript-json-schema client/tsconfig.schema.json CustomSettings --topRef --required --noExtraProps --aliasRefs --out public/schemas/settings.schema.json", diff --git a/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs b/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs index 73c4c7913a..191a9e3fcd 100644 --- a/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs +++ b/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs @@ -186,7 +186,7 @@ async function addWebPackEntry(moduleOutputDir, kebabType, kebabName) { entries += `, { entry: './${path.relative('.', path.join(moduleOutputDir, 'index.ts')).replace(/\\/g, '/')}', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { diff --git a/how-to/workspace-platform-starter/templates/webpack.config.js b/how-to/workspace-platform-starter/templates/webpack.config.js index aabef86cd9..1dea5ab934 100644 --- a/how-to/workspace-platform-starter/templates/webpack.config.js +++ b/how-to/workspace-platform-starter/templates/webpack.config.js @@ -7,7 +7,7 @@ const alias = { const configs = [ { entry: './templates/src/actions/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -35,7 +35,7 @@ const configs = [ }, { entry: './templates/src/analytics/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -63,7 +63,7 @@ const configs = [ }, { entry: './templates/src/auth/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -91,7 +91,7 @@ const configs = [ }, { entry: './templates/src/conditions/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -119,7 +119,7 @@ const configs = [ }, { entry: './templates/src/endpoint/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -147,7 +147,7 @@ const configs = [ }, { entry: './templates/src/init-options/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -175,7 +175,7 @@ const configs = [ }, { entry: './templates/src/integrations/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -203,7 +203,7 @@ const configs = [ }, { entry: './templates/src/lifecycle/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -231,7 +231,7 @@ const configs = [ }, { entry: './templates/src/log/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -259,7 +259,7 @@ const configs = [ }, { entry: './templates/src/menus/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -287,7 +287,7 @@ const configs = [ }, { entry: './templates/src/content-creation/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { @@ -315,7 +315,7 @@ const configs = [ }, { entry: './templates/src/share/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [ { diff --git a/package-lock.json b/package-lock.json index e354e250c7..1784abdce2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5191,23 +5191,23 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.5.0.tgz", - "integrity": "sha512-HpqNTH8Du34nLxbKgVMGljZMG0rJd2O9ecvr2QLYp+7512ty1j42KnsFwspPXg1Vh8an9YImf6CokUBltisZFQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", + "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", "dev": true, "peer": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/type-utils": "7.5.0", - "@typescript-eslint/utils": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/type-utils": "7.6.0", + "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5227,16 +5227,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.5.0.tgz", - "integrity": "sha512-cj+XGhNujfD2/wzR1tabNsidnYRaFfEkcULdcIyVBYcXjBvBKOes+mpMBP7hMpOyk+gBcfXsrg4NBGAStQyxjQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", + "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4" }, "engines": { @@ -5256,14 +5256,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.5.0.tgz", - "integrity": "sha512-Z1r7uJY0MDeUlql9XJ6kRVgk/sP11sr3HKXn268HZyqL7i4cEfrdFuSSY/0tUqT37l5zT0tJOsuDP16kio85iA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.6.0.tgz", + "integrity": "sha512-ngttyfExA5PsHSx0rdFgnADMYQi+Zkeiv4/ZxGYUWd0nLs63Ha0ksmp8VMxAIC0wtCFxMos7Lt3PszJssG/E6w==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0" + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5274,16 +5274,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.5.0.tgz", - "integrity": "sha512-A021Rj33+G8mx2Dqh0nMO9GyjjIBK3MqgVgZ2qlKf6CJy51wY/lkkFqq3TqqnH34XyAHUkq27IjlUkWlQRpLHw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", + "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.5.0", - "@typescript-eslint/utils": "7.5.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "@typescript-eslint/utils": "7.6.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5302,9 +5302,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.5.0.tgz", - "integrity": "sha512-tv5B4IHeAdhR7uS4+bf8Ov3k793VEVHd45viRRkehIUZxm0WF82VPiLgHzA/Xl4TGPg1ZD49vfxBKFPecD5/mg==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", + "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", "dev": true, "peer": true, "engines": { @@ -5316,20 +5316,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.5.0.tgz", - "integrity": "sha512-YklQQfe0Rv2PZEueLTUffiQGKQneiIEKKnfIqPIOxgM9lKSZFCjT5Ad4VqRKj/U4+kQE3fa8YQpskViL7WjdPQ==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", + "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/visitor-keys": "7.5.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/visitor-keys": "7.6.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5345,9 +5345,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "peer": true, "dependencies": { @@ -5361,19 +5361,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.5.0.tgz", - "integrity": "sha512-3vZl9u0R+/FLQcpy2EHyRGNqAS/ofJ3Ji8aebilfJe+fobK8+LbIFmrHciLVDxjDoONmufDcnVSF38KwMEOjzw==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", + "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.5.0", - "@typescript-eslint/types": "7.5.0", - "@typescript-eslint/typescript-estree": "7.5.0", - "semver": "^7.5.4" + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.6.0", + "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/typescript-estree": "7.6.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5387,14 +5387,14 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.5.0.tgz", - "integrity": "sha512-mcuHM/QircmA6O7fy6nn2w/3ditQkj+SgtOc8DW3uQ10Yfj42amm2i+6F2K4YAOPNNTmE6iM1ynM6lrSwdendA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.6.0.tgz", + "integrity": "sha512-4eLB7t+LlNUmXzfOu1VAIAdkjbu5xNSerURS9X/S5TUKWFRpXRQZbmtPqgKmYx8bj3J0irtQXSiWAOY82v+cgw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.5.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "7.6.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7301,9 +7301,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1594.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1594.0.tgz", - "integrity": "sha512-ZvJ63Vm/ZuygGuO19n1PjPkyo4OcKQzgK62kAhsp4SUBDMYuemOXHpIH+ORFOjO8Js7exoqHtNS4p9fHt6cW2Q==", + "version": "2.1595.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1595.0.tgz", + "integrity": "sha512-ee0FaplSMz9Y6XJnnyDCHv6SLziJ2YCI4SsO0VRFUKK4Jtk/KErp20CJI/4ZsS+oz7k2/vQ3JqGQXCz95nU8Ww==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -9732,9 +9732,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.729", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.729.tgz", - "integrity": "sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA==" + "version": "1.4.730", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.730.tgz", + "integrity": "sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==" }, "node_modules/emittery": { "version": "0.13.1", @@ -12930,9 +12930,9 @@ } }, "node_modules/i18next": { - "version": "23.10.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.10.1.tgz", - "integrity": "sha512-NDiIzFbcs3O9PXpfhkjyf7WdqFn5Vq6mhzhtkXzj51aOcNuPNcTwuYNuXCpHsanZGHlHKL35G7huoFeVic1hng==", + "version": "23.11.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.0.tgz", + "integrity": "sha512-VwFtlgy2LDbY0Qs6VfekIm6mv5/JmSJrtBf4aszl7Vby8+GcBlri0/7dkMZXmzTfiBMPUPBOmYCdQK7K4emkGQ==", "funding": [ { "type": "individual", @@ -15246,12 +15246,12 @@ } }, "node_modules/locate-app": { - "version": "2.2.28", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.2.28.tgz", - "integrity": "sha512-D8bQCKomh9funoJEDBYyqIq3Cr75ugselnBMcB248LOK8ZkhsJaR+BqmSYoCABPXevjdWIROb1MCsVZ1GHdiOQ==", + "version": "2.2.29", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.2.29.tgz", + "integrity": "sha512-OwxwMkhz+EpQIWRTe3JlgMwPdoT2HCNnKno/0BdNp4pPuB7qpNmf1L8p3EEEXCUQqh/kzA/RJ3ZkOlTeaq9Wrw==", "dev": true, "dependencies": { - "n12": "1.8.31", + "n12": "1.8.32", "type-fest": "2.13.0", "userhome": "1.0.0" } @@ -16224,9 +16224,9 @@ } }, "node_modules/n12": { - "version": "1.8.31", - "resolved": "https://registry.npmjs.org/n12/-/n12-1.8.31.tgz", - "integrity": "sha512-xfC1A3RigwHK4j7zlosZCnhlc14WIz7oz0PPA0y4I/p6HVBxz7UdsJpgOAJFIefbFYZpeRG7/Quiry8x7VFSIg==", + "version": "1.8.32", + "resolved": "https://registry.npmjs.org/n12/-/n12-1.8.32.tgz", + "integrity": "sha512-nLqtUdj2XNjBCku+s60zv/RXhatbXet2SynQhjOU1QTc+bqqwjp/bEV+WVcYLxLgv7K8ji5rlNrkBhfglx3ULQ==", "dev": true }, "node_modules/nano-time": {