From 5d3a5eda514ef8b561580dd3899558eb72fd2e82 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 10 Apr 2024 16:01:03 +0100 Subject: [PATCH 01/23] Add additional action for a workspace lifecycle event. Added an extra action to make it clear when a workspace was applied. Updated impacted modules. --- how-to/workspace-platform-starter/CHANGELOG.md | 3 +++ .../client/src/framework/platform/platform-override.ts | 2 +- .../client/src/framework/shapes/lifecycle-shapes.ts | 2 +- .../src/modules/composite/default-workspace/lifecycle.ts | 4 +++- .../client/src/modules/integrations/workspaces/integration.ts | 2 +- .../client/types/module/shapes/lifecycle-shapes.d.ts | 2 +- 6 files changed, 10 insertions(+), 5 deletions(-) diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index 5018883127..5b22a15952 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,9 @@ ## v18.0.0 +- Improvement: Added `apply` as an action on the WorkspaceChangedLifecyclePayload. Previously we had `create`, `update`, `delete`. `update` was being fired when a workspace was updated and when a workspace was applied. `apply` now makes it clear when a particular workspace platform override has been triggered. +- Improvement: modules/integrations/workspaces this module now refreshes the entries when a workspace is applied. So if a workspace entry in Home said it was selected it would be updated and the newly selected workspace would be updated to reflect it is the currently selected workspace. +- Updated: modules/composite/default-workspace/lifecycle logic to listen out for the new `apply` action. - Added support for rspack for faster builds. `npm run build-client-rspack` will npx install rspack and use the webpack config file to build the JavaScript from the TypeScript files. It is faster but no type checking is performed so we still recommend doing validated builds using `npm run build` or `npm run build-client`. - Improved performance of switching schemes - Improved performance of computing dock configuration, especially on theme changes. diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts index 81acdb1684..da71225302 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts @@ -412,7 +412,7 @@ export function overrideCallback( } await fireLifecycleEvent(platform, "workspace-changed", { - action: "update", + action: "apply", id: payload.workspaceId, workspace: payload }); diff --git a/how-to/workspace-platform-starter/client/src/framework/shapes/lifecycle-shapes.ts b/how-to/workspace-platform-starter/client/src/framework/shapes/lifecycle-shapes.ts index 54ba206e9a..55b236580d 100644 --- a/how-to/workspace-platform-starter/client/src/framework/shapes/lifecycle-shapes.ts +++ b/how-to/workspace-platform-starter/client/src/framework/shapes/lifecycle-shapes.ts @@ -57,7 +57,7 @@ export interface WorkspaceChangedLifecyclePayload { /** * The action that happened to the workspace. */ - action: "create" | "update" | "delete"; + action: "create" | "apply" | "update" | "delete"; /** * The id of the workspace. diff --git a/how-to/workspace-platform-starter/client/src/modules/composite/default-workspace/lifecycle.ts b/how-to/workspace-platform-starter/client/src/modules/composite/default-workspace/lifecycle.ts index cd13164907..c7ba13c028 100644 --- a/how-to/workspace-platform-starter/client/src/modules/composite/default-workspace/lifecycle.ts +++ b/how-to/workspace-platform-starter/client/src/modules/composite/default-workspace/lifecycle.ts @@ -92,7 +92,9 @@ export class ApplyDefaultWorkspaceProvider implements Lifecycle platform: WorkspacePlatformModule, payload?: WorkspaceChangedLifecyclePayload ): Promise => { - if (payload?.action === "create") { + if (payload?.action === "create" || payload?.action === "apply") { if (!isEmpty(this._lastQuery) && !this._lastQuery.startsWith("/w ")) { await this.rebuildResults(platform); } diff --git a/how-to/workspace-platform-starter/client/types/module/shapes/lifecycle-shapes.d.ts b/how-to/workspace-platform-starter/client/types/module/shapes/lifecycle-shapes.d.ts index 43ffd09d44..f589e1f304 100644 --- a/how-to/workspace-platform-starter/client/types/module/shapes/lifecycle-shapes.d.ts +++ b/how-to/workspace-platform-starter/client/types/module/shapes/lifecycle-shapes.d.ts @@ -51,7 +51,7 @@ export interface WorkspaceChangedLifecyclePayload { /** * The action that happened to the workspace. */ - action: "create" | "update" | "delete"; + action: "create" | "apply" | "update" | "delete"; /** * The id of the workspace. */ From 2b0b4f1c78694048c715c5bf42fedc31e61a8a83 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 11 Apr 2024 17:05:15 +0100 Subject: [PATCH 02/23] Improving FDC3 docs to make it easier to learn about fdc3 (#704) Also added urls if people want to add the tooling to their own platform. --- .../how-to-add-context-support-to-your-app.md | 30 ++++++++ .../how-to-add-intent-support-to-your-app.md | 30 ++++++++ .../docs/what-is-fdc3.md | 71 ++++++++++++++++++- 3 files changed, 130 insertions(+), 1 deletion(-) diff --git a/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md b/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md index daf6cd8955..9675ef4e26 100644 --- a/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md +++ b/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md @@ -190,6 +190,36 @@ This app supports FDC3 System and App Channels, lists all the supported context ![Context Using FDC3](./assets/view-context-fdc3.png) +#### Can I use that tool within my own platform? + +Yes, to make development easier you can define a view that uses our app. We follow the versioning used by workspace so that you can stay in sync: + +##### FDC3 2.0 Tool - View Options + +```javascript +{ + "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "fdc3InteropApi": "2.0", + "customData": { + "contextData": null, + "customChannel": "" + } +} +``` + +##### FDC3 1.2 Tool - View Options + +```javascript +{ + "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/context/fdc3-broadcast-view.html", + "fdc3InteropApi": "1.2", + "customData": { + "contextData": null, + "customChannel": "" + } +} +``` + ### FDC3 Workbench This is the FinOS test harness to show our compatibility: diff --git a/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md b/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md index 980e1b400a..e317aca71f 100644 --- a/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md +++ b/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md @@ -129,6 +129,36 @@ This app supports FDC3 raiseIntent and raiseIntentByContext, it lists all the su ![Intents Using FDC3](./assets/view-intents-fdc3.png) +#### Can I use that tool within my own platform? + +Yes, to make development easier you can define a view that uses our app. We follow the versioning used by workspace so that you can stay in sync: + +##### FDC3 2.0 Tool - View Options + +```javascript +{ + "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/intent/2-0/fdc3-intent-view.html", + "fdc3InteropApi": "2.0", + "customData": { + "contextData": null, + "intentData": null + } +} +``` + +##### FDC3 1.2 Tool - View Options + +```javascript +{ + "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/intent/fdc3-intent-view.html", + "fdc3InteropApi": "1.2", + "customData": { + "contextData": null, + "intentData": null + } +} +``` + ### FDC3 Workbench This is the FinOS test harness to show our compatibility: diff --git a/how-to/workspace-platform-starter/docs/what-is-fdc3.md b/how-to/workspace-platform-starter/docs/what-is-fdc3.md index 4a90894f20..d0322f4a69 100644 --- a/how-to/workspace-platform-starter/docs/what-is-fdc3.md +++ b/how-to/workspace-platform-starter/docs/what-is-fdc3.md @@ -26,6 +26,75 @@ As a content creator: - Whether you content will listen for intent requests - What intents you wish to declare that you support in your app definition -We provide guides on [how to configure contextual groups](./how-to-configure-fdc3-context-groups.md) and [how to configure intents](./how-to-configure-fdc3-intents.md) for your workspace platform and [how to add context support](./how-to-add-context-support-to-your-app.md), [how to add intent support](./how-to-add-intent-support-to-your-app.md) and [how to add fdc3 open support](./how-to-add-open-support-to-your-app.md) to your content/app. We recommend going through the concepts and working your way down the guides if you are new to OpenFin and OpenFin Workspace. We also provide a configured workspace (see [third.manifest.fin.json](../public/third.manifest.fin.json)) that is configured to use an FDC3 App Directory and only brings in FDC3 related tools. +## Useful links + +- - FDC3 related content on the OpenFin website +- - The official fdc3 content. +- - Linux Foundation's free Introduction to FDC3 course. + +## Enabling FDC3 in your Openfin Application + +### Manifest + +In your manifest you can define default Window Options and default View Options. You can specify that you wish FDC3 (and what version) enabled for all views and windows in your manifest: + +```js +"platform": { + "defaultWindowOptions": { + "fdc3InteropApi" : '2.0' + }, + "defaultViewOptions": { + "fdc3InteropApi" : '2.0' + } +} +``` + +In your manifest within the platform definition you can also enable/disable the FDC3/Interop console logging OpenFin does (it is true by default): + +```js +"platform": { + "interopBrokerConfiguration": { + "logging": { + "beforeAction": { + "enabled": true + }, + "afterAction": { + "enabled": true + } + } + } +} +``` + +### Window / View Options + +If you do not globally enable the fdc3 API you can opt into FDC3 at the Window/View level via Window/View options. + +#### Enabling the FDC3 API + +```js +{ + "url": "http://yoururl", + "fdc3InteropApi" : '2.0' +} +``` + +#### Defaulting to a user channel + +You can have a view/window automatically join a user channel if it is specified in the View/Window Options + +```js +{ + "url": "http://yoururl", + "fdc3InteropApi": "2.0", + "interop": { + "currentContextGroup": "green" + }, +} +``` + +## Guides + +We provide guides on [how to configure intents](./how-to-configure-fdc3-intents.md) for your workspace platform and [how to add context support](./how-to-add-context-support-to-your-app.md), [how to add intent support](./how-to-add-intent-support-to-your-app.md) and [how to add fdc3 open support](./how-to-add-open-support-to-your-app.md) to your content/app. We recommend going through the concepts and working your way down the guides if you are new to OpenFin and OpenFin Workspace. We also provide a configured workspace (see [third.manifest.fin.json](../public/third.manifest.fin.json)) that is configured to use an FDC3 App Directory and only brings in FDC3 related tools. [<- Back to Table Of Contents](../README.md) From 194d60cfe5bf685178d7dd3175b0d401bbf1bd57 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 10:05:13 +0100 Subject: [PATCH 03/23] Update versioning in docs --- .../docs/how-to-add-context-support-to-your-app.md | 4 ++-- .../docs/how-to-add-intent-support-to-your-app.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md b/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md index 9675ef4e26..ef502afd1d 100644 --- a/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md +++ b/how-to/workspace-platform-starter/docs/how-to-add-context-support-to-your-app.md @@ -198,7 +198,7 @@ Yes, to make development easier you can define a view that uses our app. We foll ```javascript { - "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", + "url": "https://samples.openfin.co/dev-extensions/extensions/v18.0.0/interop/fdc3/context/2-0/fdc3-broadcast-view.html", "fdc3InteropApi": "2.0", "customData": { "contextData": null, @@ -211,7 +211,7 @@ Yes, to make development easier you can define a view that uses our app. We foll ```javascript { - "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/context/fdc3-broadcast-view.html", + "url": "https://samples.openfin.co/dev-extensions/extensions/v18.0.0/interop/fdc3/context/fdc3-broadcast-view.html", "fdc3InteropApi": "1.2", "customData": { "contextData": null, diff --git a/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md b/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md index e317aca71f..bfe3442402 100644 --- a/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md +++ b/how-to/workspace-platform-starter/docs/how-to-add-intent-support-to-your-app.md @@ -137,7 +137,7 @@ Yes, to make development easier you can define a view that uses our app. We foll ```javascript { - "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/intent/2-0/fdc3-intent-view.html", + "url": "https://samples.openfin.co/dev-extensions/extensions/v18.0.0/interop/fdc3/intent/2-0/fdc3-intent-view.html", "fdc3InteropApi": "2.0", "customData": { "contextData": null, @@ -150,7 +150,7 @@ Yes, to make development easier you can define a view that uses our app. We foll ```javascript { - "url": "https://samples.openfin.co/dev-extensions/extensions/v17.2.0/interop/fdc3/intent/fdc3-intent-view.html", + "url": "https://samples.openfin.co/dev-extensions/extensions/v18.0.0/interop/fdc3/intent/fdc3-intent-view.html", "fdc3InteropApi": "1.2", "customData": { "contextData": null, From 11f4a28e783eafb765ee77ad3174c4a839261f67 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 12:47:48 +0100 Subject: [PATCH 04/23] Window state improvements and dependency pinning. Also added optimization for module --- .../client/src/framework/modules.ts | 1 + .../client/src/framework/platform/browser.ts | 26 +- .../framework/platform/platform-override.ts | 23 +- .../client/webpack.config.js | 2 +- package-lock.json | 4109 ++++++++--------- package.json | 3 + 6 files changed, 1970 insertions(+), 2194 deletions(-) diff --git a/how-to/workspace-platform-starter/client/src/framework/modules.ts b/how-to/workspace-platform-starter/client/src/framework/modules.ts index 1ab96fec69..ba698be277 100644 --- a/how-to/workspace-platform-starter/client/src/framework/modules.ts +++ b/how-to/workspace-platform-starter/client/src/framework/modules.ts @@ -322,6 +322,7 @@ export function getDefaultHelpers(): ModuleHelpers { pageId: string, options?: { bounds?: OpenFin.Bounds; + state?: "normal" | "minimized" | "maximized"; targetWindowIdentity?: OpenFin.Identity; createCopyIfExists?: boolean; }, diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts b/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts index b203c88472..dce6e76b7c 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts @@ -299,16 +299,16 @@ export async function getPageForView(view: OpenFin.View): Promise { - let bounds: OpenFin.Bounds | undefined; +): Promise<{ bounds?: OpenFin.Bounds; state?: "maximized" | "minimized" | "normal"} | undefined> { + let boundsAndState: { bounds?: OpenFin.Bounds; state?: "maximized" | "minimized" | "normal"} | undefined; const platform = getCurrentSync(); if (fromStorage) { const page = await platform.Storage.getPage(pageId); if (!isEmpty(page?.customData?.windowBounds)) { - return page?.customData?.windowBounds; + return { bounds: page?.customData?.windowBounds, state: page?.customData?.windowState }; } } @@ -327,7 +327,7 @@ export async function getPageBounds( const savedPage = await platform.Storage.getPage(pageId); if (!isEmpty(savedPage)) { // the requested page is not currently open but is a saved page so try and fetch it from storage as a fallback - return savedPage?.customData?.windowBounds; + return { bounds: savedPage?.customData?.windowBounds, state: savedPage?.customData?.windowState }; } // it is not an active page and it isn't saved so it is likely a new instance of an existing page (save as) // use the current windowId @@ -336,10 +336,11 @@ export async function getPageBounds( if (!isEmpty(windowId)) { const hostWindow = platform.Browser.wrapSync(windowId); - bounds = await hostWindow.openfinWindow.getBounds(); + boundsAndState = { bounds: await hostWindow.openfinWindow.getBounds(), + state: await hostWindow.openfinWindow.getState() }; } - return bounds; + return boundsAndState; } /** @@ -347,6 +348,7 @@ export async function getPageBounds( * @param page The page to launch. * @param options The options for the launch. * @param options.bounds The optional bounds for the page. + * @param options.state The optional window state of the page. * @param options.targetWindowIdentity The optional target window for the page. * @param options.createCopyIfExists Create a copy of the page if it exists. * @param logger Log output from the operation. @@ -356,6 +358,7 @@ export async function launchPage( page: Page, options?: { bounds?: OpenFin.Bounds; + state?: "maximized" | "minimized" | "normal"; targetWindowIdentity?: OpenFin.Identity; createCopyIfExists?: boolean; }, @@ -441,7 +444,10 @@ export async function launchPage( if (isEmpty(customBounds) && !isEmpty(page.customData?.windowBounds)) { customBounds = page.customData.windowBounds; } - + let customState = options?.state; + if (isEmpty(customState) && !isEmpty(page.customData?.windowState)) { + customState = page.customData.windowState; + } const newWindowRequest: BrowserCreateWindowRequest = { workspacePlatform: { pages: [page] @@ -469,6 +475,10 @@ export async function launchPage( } } + if(!isEmpty(customState)) { + newWindowRequest.state = customState; + } + const newWindow = await platform.Browser.createWindow(newWindowRequest); logger?.info("Page does not exist, creating new window and adding page", { diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts index da71225302..2d5a1b0430 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts @@ -69,7 +69,7 @@ import { applyClientSnapshot, decorateSnapshot } from "../snapshot-source"; import { setCurrentColorSchemeMode } from "../themes"; import { deepMerge, isEmpty, isStringValue, randomUUID } from "../utils"; import { loadConfig, saveConfig } from "../workspace/dock"; -import { getPageBounds } from "./browser"; +import { getPageBoundsAndState } from "./browser"; import { closedown as closedownPlatform } from "./platform"; import { mapPlatformPageFromStorage, @@ -490,13 +490,19 @@ export function overrideCallback( */ public async createSavedPage(req: CreateSavedPageRequest): Promise { const platform = getCurrentSync(); - - const windowBounds = await getPageBounds(req.page.pageId); - if (!isEmpty(windowBounds)) { + const windowBoundsAndState = await getPageBoundsAndState(req.page.pageId); + if (!isEmpty(windowBoundsAndState)) { if (isEmpty(req.page.customData)) { req.page.customData = {}; } - req.page.customData.windowBounds = windowBounds; + // only set if it hasn't been provided by the caller + if(isEmpty(req.page?.customData?.windowBounds)) { + req.page.customData.windowBounds = windowBoundsAndState.bounds; + } + + if(isEmpty(req.page?.customData?.windowState)) { + req.page.customData.windowState = windowBoundsAndState.state; + } } // you can add your own custom implementation here if you are storing your pages @@ -540,12 +546,13 @@ export function overrideCallback( * @param req the update saved page request. */ public async updateSavedPage(req: UpdateSavedPageRequest): Promise { - const windowBounds = await getPageBounds(req.page.pageId); - if (!isEmpty(windowBounds)) { + const windowBoundsAndState = await getPageBoundsAndState(req.page.pageId); + if (!isEmpty(windowBoundsAndState)) { if (isEmpty(req.page.customData)) { req.page.customData = {}; } - req.page.customData.windowBounds = windowBounds; + req.page.customData.windowBounds = windowBoundsAndState.bounds; + req.page.customData.windowState = windowBoundsAndState.state; } // you can add your own custom implementation here if you are storing your pages // in non-default location (e.g. on the server instead of locally) diff --git a/how-to/workspace-platform-starter/client/webpack.config.js b/how-to/workspace-platform-starter/client/webpack.config.js index 491570875f..141e24a874 100644 --- a/how-to/workspace-platform-starter/client/webpack.config.js +++ b/how-to/workspace-platform-starter/client/webpack.config.js @@ -774,7 +774,7 @@ const configs = [ }, { entry: './client/src/modules/interop-override/wps-interop-override/index.ts', - devtool: 'inline-source-map', + devtool: 'source-map', module: { rules: [loaderRule] }, diff --git a/package-lock.json b/package-lock.json index 1bb9ba3816..d8fbd5a6bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,38 +34,6 @@ "mochawesome": "7.1.3" } }, - "how-to/automation-testing/register-with-home-js/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, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "how-to/automation-testing/register-with-home-js/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "how-to/automation-testing/register-with-home-js/node_modules/jasmine": { "version": "2.99.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", @@ -90,19 +58,6 @@ "jasmine": "^2.4.1" } }, - "how-to/automation-testing/register-with-home-js/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, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "how-to/automation-testing/register-with-home-ts": { "name": "automation-testing-register-with-home", "version": "18.0.0", @@ -141,27 +96,23 @@ "selenium-webdriver": "4.18.1" } }, - "how-to/automation-testing/selenium/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" - } - }, - "how-to/automation-testing/selenium/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "how-to/automation-testing/selenium/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "how-to/automation-testing/selenium/node_modules/mocha": { @@ -213,42 +164,6 @@ "node": ">= 14.20.0" } }, - "how-to/automation-testing/selenium/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" - } - }, - "how-to/automation-testing/selenium/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "how-to/automation-testing/selenium/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -267,15 +182,6 @@ "node": ">=10" } }, - "how-to/automation-testing/selenium/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "how-to/automation-testing/wdio": { "name": "automation-testing-wdio", "version": "18.0.0", @@ -2168,12 +2074,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2531,48 +2431,6 @@ } } }, - "node_modules/@jest/reporters/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/@jest/reporters/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@jest/reporters/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" - }, - "engines": { - "node": "*" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3779,9 +3637,9 @@ } }, "node_modules/@openfin/bloomberg/node_modules/@finos/fdc3": { - "version": "2.1.0-beta.6", - "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.6.tgz", - "integrity": "sha512-iKrAY8I6k2sWYBZ+fW0Iz5IvUHV/A3lsb/7dtkjnJhN2dzFX1HfzJ4mgMAqmXk9HNSgP8lS3hOt2DC/kiApNiA==" + "version": "2.1.0-beta.7", + "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.7.tgz", + "integrity": "sha512-YtNKYPk2daq4ByS7WccRiYxTi80/GXTPObYmbNiS9OXA4+Er/JwCB77CkVCL+TQ8z/LWzPulR+w4PParLTXdKA==" }, "node_modules/@openfin/core": { "version": "36.80.8", @@ -3797,6 +3655,31 @@ "ws": "^7.3.0" } }, + "node_modules/@openfin/core/node_modules/@types/node": { + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" + }, + "node_modules/@openfin/core/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@openfin/excel": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@openfin/excel/-/excel-1.5.0.tgz", @@ -3843,6 +3726,33 @@ "ws": "^7.3.0" } }, + "node_modules/@openfin/node-adapter/node_modules/@types/node": { + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==", + "dev": true + }, + "node_modules/@openfin/node-adapter/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@openfin/openid-connect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@openfin/openid-connect/-/openid-connect-1.0.0.tgz", @@ -4015,48 +3925,114 @@ "node": ">=16.3.0" } }, - "node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "node_modules/@puppeteer/browsers/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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10" + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", - "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "node_modules/@puppeteer/browsers/node_modules/http-proxy-agent": { + "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==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "engines": { + "node": ">= 14" } }, - "node_modules/@radix-ui/react-collection": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", - "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "node_modules/@puppeteer/browsers/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" - }, + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@puppeteer/browsers/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@puppeteer/browsers/node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", + "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", @@ -4568,83 +4544,83 @@ } }, "node_modules/@sentry-internal/feedback": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.109.0.tgz", - "integrity": "sha512-EL7N++poxvJP9rYvh6vSu24tsKkOveNCcCj4IM7+irWPjsuD2GLYYlhp/A/Mtt9l7iqO4plvtiQU5HGk7smcTQ==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.110.0.tgz", + "integrity": "sha512-hrfWa3WkSOiBO5Srcr1j4kuGOlbsQic+REpLOofllVIs56DOo9+Aj9svxT+dcvZERv/nlFSV/E0BfGy9g08IEg==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.109.0.tgz", - "integrity": "sha512-Lh/K60kmloR6lkPUcQP0iamw7B/MdEUEx/ImAx4tUSMrLj+IoUEcq/ECgnnVyQkJq59+8nPEKrVLt7x6PUPEjw==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.110.0.tgz", + "integrity": "sha512-SNa+AfyfX+vc6Xw0pIfDsa5Qnc9cpexU6M2D19gadtVhmep7qoFBuhBVZrSv6BtdCxvrb5EyYsHYGfjQdIDcvg==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/replay": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.110.0", + "@sentry/replay": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.109.0.tgz", - "integrity": "sha512-PzK/joC5tCuh2R/PRh+7dp+uuZl7pTsBIjPhVZHMTtb9+ls65WkdZJ1/uKXPouyz8NOo9Xok7aEvEo9seongyw==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.110.0.tgz", + "integrity": "sha512-IIHHa9e/mE7uOMJfNELI8adyoELxOy6u6TNCn5t6fphmq84w8FTc9adXkG/FY2AQpglkIvlILojfMROFB2aaAQ==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.109.0.tgz", - "integrity": "sha512-yx+OFG+Ab9qUDDgV9ZDv8M9O9Mqr0fjKta/LMlWALYLjzkMvxsPlRPFj7oMBlHqOTVLDeg7lFYmsA8wyWQ8Z8g==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.110.0.tgz", + "integrity": "sha512-gIxedVm6ZgkjQfgCDgLWJgAsolq6OxV8hQ2j1+RaDL2RngvelFo/vlX5f2sD6EbjVp77Cri8u5GkMJF+v4p84g==", "dependencies": { - "@sentry-internal/feedback": "7.109.0", - "@sentry-internal/replay-canvas": "7.109.0", - "@sentry-internal/tracing": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/replay": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry-internal/feedback": "7.110.0", + "@sentry-internal/replay-canvas": "7.110.0", + "@sentry-internal/tracing": "7.110.0", + "@sentry/core": "7.110.0", + "@sentry/replay": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.109.0.tgz", - "integrity": "sha512-xwD4U0IlvvlE/x/g/W1I8b4Cfb16SsCMmiEuBf6XxvAa3OfWBxKoqLifb3GyrbxMC4LbIIZCN/SvLlnGJPgszA==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.110.0.tgz", + "integrity": "sha512-g4suCQO94mZsKVaAbyD1zLFC5YSuBQCIPHXx9fdgtfoPib7BWjWWePkllkrvsKAv4u8Oq05RfnKOhOMRHpOKqg==", "dependencies": { - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.109.0.tgz", - "integrity": "sha512-KqXoDh6LVhNO+FLdM5LiTGpuorFvjoBPQ4nPGIVbjeMY/KZIau3kFxR142EvCApxmD69yvS5EhMnEqlNdaQPGw==", - "dependencies": { - "@sentry/browser": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.110.0.tgz", + "integrity": "sha512-ryfA2QR41PV+kP3g0lGvpDZ+OkuxSdj2nTjCqPeZKHsK45GYvDMlWkukdHbwrx8ulkbAcWEjPmuZZzHspyieNw==", + "dependencies": { + "@sentry/browser": "7.110.0", + "@sentry/core": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4655,33 +4631,33 @@ } }, "node_modules/@sentry/replay": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.109.0.tgz", - "integrity": "sha512-hCDjbTNO7ErW/XsaBXlyHFsUhneyBUdTec1Swf98TFEfVqNsTs6q338aUcaR8dGRLbLrJ9YU9D1qKq++v5h2CA==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.110.0.tgz", + "integrity": "sha512-EEpGPf3iBJjWejvoxKLVMnLtLNwPTUxHJV1oxUkbcSi3B/tG5hW7LArYDjAcvkfa4VmA8JLCwj2vYU5MQ8tj6g==", "dependencies": { - "@sentry-internal/tracing": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry-internal/tracing": "7.110.0", + "@sentry/core": "7.110.0", + "@sentry/types": "7.110.0", + "@sentry/utils": "7.110.0" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.109.0.tgz", - "integrity": "sha512-egCBnDv3YpVFoNzRLdP0soVrxVLCQ+rovREKJ1sw3rA2/MFH9WJ+DZZexsX89yeAFzy1IFsCp7/dEqudusml6g==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.110.0.tgz", + "integrity": "sha512-DqYBLyE8thC5P5MuPn+sj8tL60nCd/f5cerFFPcudn5nJ4Zs1eI6lKlwwyHYTEu5c4KFjCB0qql6kXfwAHmTyA==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.109.0.tgz", - "integrity": "sha512-3RjxMOLMBwZ5VSiH84+o/3NY2An4Zldjz0EbfEQNRY9yffRiCPJSQiCJID8EoylCFOh/PAhPimBhqbtWJxX6iw==", + "version": "7.110.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.110.0.tgz", + "integrity": "sha512-VBsdLLN+5tf73fhf/Cm7JIsUJ6y9DkJj8h4I6Mxx0rszrvOyH6S5px40K+V4jdLBzMEvVinC7q2Cbf1YM18BSw==", "dependencies": { - "@sentry/types": "7.109.0" + "@sentry/types": "7.110.0" }, "engines": { "node": ">=8" @@ -4896,9 +4872,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", - "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", + "version": "8.56.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", + "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5053,9 +5029,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.18.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", - "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/node-emoji": { "version": "1.8.2", @@ -5087,9 +5066,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.75", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.75.tgz", - "integrity": "sha512-+DNnF7yc5y0bHkBTiLKqXFe+L4B3nvOphiMY3tuA5X10esmjqk7smyBZzbGTy2vsiy/Bnzj8yFIBL8xhRacoOg==", + "version": "18.2.77", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.77.tgz", + "integrity": "sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -5413,9 +5392,9 @@ "dev": true }, "node_modules/@vitest/snapshot": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.4.0.tgz", - "integrity": "sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.0.tgz", + "integrity": "sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -5464,13 +5443,46 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/cli/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "node_modules/@wdio/cli/node_modules/@wdio/config": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", + "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/cli/node_modules/@wdio/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" } }, "node_modules/@wdio/cli/node_modules/chalk": { @@ -5485,16 +5497,37 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@wdio/cli/node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/@wdio/cli/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@wdio/cli/node_modules/devtools-protocol": { "version": "0.0.1263784", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1263784.tgz", "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, - "node_modules/@wdio/cli/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/@wdio/cli/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "engines": { "node": ">=12" @@ -5503,116 +5536,563 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "node_modules/@wdio/cli/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/webdriver": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.34.0.tgz", - "integrity": "sha512-r8oe6tIm2qSdLNhzwVpVMWJvuoZTbeTZI21+EidqZtp6krlnJzd+hIRD5ojTm+yYi86JlRQnMMQ40LUBsAGVsQ==", + "node_modules/@wdio/cli/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dev": true, "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "8.34.0", - "@wdio/logger": "8.28.0", - "@wdio/protocols": "8.32.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "deepmerge-ts": "^5.1.0", - "got": "^12.6.1", - "ky": "^0.33.0", - "ws": "^8.8.0" + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" }, "engines": { - "node": "^16.13 || >=18" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/webdriverio": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.34.1.tgz", - "integrity": "sha512-9C+sy8mkvIGdKFFHL5oq6s2Uhq1lsAXybG3MsF0QA2822Jm+oYHN4KohrOGF0yBJc/x5JRaW3/hXvldnj7a55A==", + "node_modules/@wdio/cli/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": { - "@types/node": "^20.1.0", - "@wdio/config": "8.34.0", - "@wdio/logger": "8.28.0", - "@wdio/protocols": "8.32.0", - "@wdio/repl": "8.24.12", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "archiver": "^7.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1263784", - "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^4.0.0", - "is-plain-obj": "^4.1.0", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.0", - "puppeteer-core": "^20.9.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.1", - "webdriver": "8.34.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": "^16.13 || >=18" - }, - "peerDependencies": { - "devtools": "^8.14.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "devtools": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "node_modules/@wdio/cli/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node": ">=16" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/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==", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wdio/cli/node_modules/hosted-git-info": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@wdio/cli/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@wdio/cli/node_modules/inquirer": { + "version": "9.2.12", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", + "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", + "dev": true, + "dependencies": { + "@ljharb/through": "^2.3.11", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/@wdio/cli/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@wdio/cli/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wdio/cli/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@wdio/cli/node_modules/normalize-package-data": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@wdio/cli/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/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/@wdio/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/read-pkg-up": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.0.0.tgz", + "integrity": "sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^8.0.0", + "type-fest": "^3.12.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@wdio/config": { + "node_modules/@wdio/cli/node_modules/read-pkg/node_modules/type-fest": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@wdio/cli/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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@wdio/cli/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/cli/node_modules/webdriver": { "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", - "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.34.0.tgz", + "integrity": "sha512-r8oe6tIm2qSdLNhzwVpVMWJvuoZTbeTZI21+EidqZtp6krlnJzd+hIRD5ojTm+yYi86JlRQnMMQ40LUBsAGVsQ==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "8.34.0", + "@wdio/logger": "8.28.0", + "@wdio/protocols": "8.32.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "deepmerge-ts": "^5.1.0", + "got": "^12.6.1", + "ky": "^0.33.0", + "ws": "^8.8.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/cli/node_modules/webdriverio": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.34.1.tgz", + "integrity": "sha512-9C+sy8mkvIGdKFFHL5oq6s2Uhq1lsAXybG3MsF0QA2822Jm+oYHN4KohrOGF0yBJc/x5JRaW3/hXvldnj7a55A==", "dev": true, "dependencies": { + "@types/node": "^20.1.0", + "@wdio/config": "8.34.0", "@wdio/logger": "8.28.0", + "@wdio/protocols": "8.32.0", + "@wdio/repl": "8.24.12", "@wdio/types": "8.32.4", "@wdio/utils": "8.33.1", + "archiver": "^7.0.0", + "aria-query": "^5.0.0", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "devtools-protocol": "^0.0.1263784", + "grapheme-splitter": "^1.0.2", + "import-meta-resolve": "^4.0.0", + "is-plain-obj": "^4.1.0", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "minimatch": "^9.0.0", + "puppeteer-core": "^20.9.0", + "query-selector-shadow-dom": "^1.0.0", + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.1", + "webdriver": "8.34.0" + }, + "engines": { + "node": "^16.13 || >=18" + }, + "peerDependencies": { + "devtools": "^8.14.0" + }, + "peerDependenciesMeta": { + "devtools": { + "optional": true + } + } + }, + "node_modules/@wdio/cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wdio/cli/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@wdio/config": { + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", + "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", + "dev": true, + "dependencies": { + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.35.0", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -5622,6 +6102,18 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/config/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@wdio/config/node_modules/glob": { "version": "10.3.12", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", @@ -5672,14 +6164,61 @@ "webdriverio": "8.34.1" } }, - "node_modules/@wdio/globals/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "node_modules/@wdio/globals/node_modules/@wdio/config": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", + "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", "dev": true, "optional": true, "dependencies": { - "undici-types": "~5.26.4" + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/globals/node_modules/@wdio/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "dev": true, + "optional": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/globals/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "optional": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/globals/node_modules/devtools-protocol": { @@ -5689,6 +6228,29 @@ "dev": true, "optional": true }, + "node_modules/@wdio/globals/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==", + "dev": true, + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@wdio/globals/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -5768,41 +6330,19 @@ "minimatch": "^9.0.0", "puppeteer-core": "^20.9.0", "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.1", - "webdriver": "8.34.0" - }, - "engines": { - "node": "^16.13 || >=18" - }, - "peerDependencies": { - "devtools": "^8.14.0" - }, - "peerDependenciesMeta": { - "devtools": { - "optional": true - } - } - }, - "node_modules/@wdio/globals/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "optional": true, + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.1", + "webdriver": "8.34.0" + }, "engines": { - "node": ">=10.0.0" + "node": "^16.13 || >=18" }, "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "devtools": "^8.14.0" }, "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { + "devtools": { "optional": true } } @@ -5826,15 +6366,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/local-runner/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@wdio/logger": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.28.0.tgz", @@ -5906,13 +6437,40 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/mocha-framework/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/protocols": { @@ -5933,15 +6491,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@wdio/reporter": { "version": "8.32.4", "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.32.4.tgz", @@ -5958,15 +6507,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/reporter/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@wdio/runner": { "version": "8.34.1", "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.34.1.tgz", @@ -5989,13 +6529,58 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/runner/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "node_modules/@wdio/runner/node_modules/@wdio/config": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", + "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", + "dev": true, + "dependencies": { + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/runner/node_modules/@wdio/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/runner/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/runner/node_modules/devtools-protocol": { @@ -6004,6 +6589,28 @@ "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, + "node_modules/@wdio/runner/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==", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@wdio/runner/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6096,27 +6703,6 @@ } } }, - "node_modules/@wdio/runner/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@wdio/shared-store-service": { "version": "8.34.1", "resolved": "https://registry.npmjs.org/@wdio/shared-store-service/-/shared-store-service-8.34.1.tgz", @@ -6134,13 +6720,58 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/shared-store-service/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", + "node_modules/@wdio/shared-store-service/node_modules/@wdio/config": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", + "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/shared-store-service/node_modules/@wdio/utils": { + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.32.4", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/shared-store-service/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/shared-store-service/node_modules/devtools-protocol": { @@ -6149,6 +6780,28 @@ "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, + "node_modules/@wdio/shared-store-service/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==", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@wdio/shared-store-service/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6241,27 +6894,6 @@ } } }, - "node_modules/@wdio/shared-store-service/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@wdio/spec-reporter": { "version": "8.32.4", "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.32.4.tgz", @@ -6302,19 +6934,10 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/types/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, "node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "version": "8.35.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", + "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", @@ -6332,7 +6955,19 @@ "wait-port": "^1.0.4" }, "engines": { - "node": "^16.13 || >=18" + "node": "^16.13 || >=18" + } + }, + "node_modules/@wdio/utils/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@webassemblyjs/ast": { @@ -6599,15 +7234,15 @@ } }, "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==", + "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.3.4" + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6.0.0" } }, "node_modules/aggregate-error": { @@ -6964,6 +7599,15 @@ "ieee754": "^1.2.1" } }, + "node_modules/archiver/node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/archiver/node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -7303,9 +7947,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1595.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1595.0.tgz", - "integrity": "sha512-ee0FaplSMz9Y6XJnnyDCHv6SLziJ2YCI4SsO0VRFUKK4Jtk/KErp20CJI/4ZsS+oz7k2/vQ3JqGQXCz95nU8Ww==", + "version": "2.1598.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1598.0.tgz", + "integrity": "sha512-/oPetmY5v62lAt2jTRfIEHrdrg8hfz5KI8qvvP/jhFdNJfLZ85nsn3+fSS8i3FgfeWXIS5yv4ZPpA+JNAnBwdQ==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -7825,12 +8469,12 @@ } }, "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { - "node": ">=8.0.0" + "node": "*" } }, "node_modules/buffer-equal": { @@ -8013,9 +8657,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001607", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001607.tgz", - "integrity": "sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==", + "version": "1.0.30001609", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz", + "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==", "funding": [ { "type": "opencollective", @@ -8031,6 +8675,16 @@ } ] }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "dev": true, + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, "node_modules/chai": { "version": "4.3.10", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", @@ -8077,6 +8731,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chalk/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/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -8172,34 +8838,6 @@ "node": ">=18" } }, - "node_modules/chromedriver/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/chromedriver/node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/chromium-bidi": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", @@ -8320,12 +8958,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, "node_modules/cli-truncate/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -8359,12 +8991,12 @@ } }, "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, "engines": { - "node": ">= 12" + "node": ">= 10" } }, "node_modules/clipboardy": { @@ -8382,153 +9014,15 @@ "node": ">=8" } }, - "node_modules/clipboardy/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, - "peer": 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/clipboardy/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, - "peer": 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/clipboardy/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==", - "dev": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/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==", - "dev": true, - "peer": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "node_modules/clipboardy/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "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==", + "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.1", + "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" } }, "node_modules/clone": { @@ -9200,12 +9694,12 @@ "peer": true }, "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==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, "engines": { - "node": ">= 12" + "node": ">= 14" } }, "node_modules/data-urls": { @@ -9304,12 +9798,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "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, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -9383,9 +9877,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9716,6 +10210,18 @@ "edgedriver": "bin/edgedriver.js" } }, + "node_modules/edgedriver/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/edgedriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -9762,9 +10268,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.730", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.730.tgz", - "integrity": "sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==" + "version": "1.4.735", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.735.tgz", + "integrity": "sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==" }, "node_modules/emittery": { "version": "0.13.1", @@ -9778,10 +10284,10 @@ "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, "node_modules/emojis-list": { @@ -10393,13 +10899,6 @@ "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "peer": true - }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -10608,135 +11107,6 @@ "eslint": ">=8.56.0" } }, - "node_modules/eslint-plugin-unicorn/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/eslint-plugin-unicorn/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data/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/eslint-plugin-unicorn/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/eslint-plugin-unicorn/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-unicorn/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==", - "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" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-unicorn/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==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-plugin-unicorn/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==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint-plugin-unicorn/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_modules/eslint-plugin-unused-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.1.0.tgz", @@ -10925,26 +11295,95 @@ } }, "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, + "peer": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "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": ">=16.17" + "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, + "peer": 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" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": ">=4.8" + } + }, + "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, + "peer": 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, + "peer": 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, + "peer": 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, + "peer": 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, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, "node_modules/exif-parser": { @@ -11251,31 +11690,27 @@ } }, "node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=14" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/figures/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, "node_modules/file-entry-cache": { @@ -11504,22 +11939,13 @@ "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", "dev": true, "dependencies": { - "escape-string-regexp": "5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fkill-cli/node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", - "dev": true, + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/fkill-cli/node_modules/escape-string-regexp": { @@ -11557,30 +11983,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/fkill-cli/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/fkill-cli/node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/fkill-cli/node_modules/fkill": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/fkill/-/fkill-8.1.1.tgz", @@ -11613,15 +12015,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill-cli/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/fkill-cli/node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -11634,63 +12027,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill-cli/node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fkill-cli/node_modules/inquirer-autocomplete-prompt": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", - "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "figures": "^3.2.0", - "run-async": "^2.4.0", - "rxjs": "^6.6.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/fkill-cli/node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, "node_modules/fkill-cli/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -11703,21 +12039,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill-cli/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/fkill-cli/node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, "node_modules/fkill-cli/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -11730,21 +12051,6 @@ "node": ">=8" } }, - "node_modules/fkill-cli/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/fkill-cli/node_modules/pid-port": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/pid-port/-/pid-port-0.2.0.tgz", @@ -11760,30 +12066,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill-cli/node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/fkill-cli/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/fkill-cli/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": ">=6" - } - }, "node_modules/fkill-cli/node_modules/taskkill": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-4.0.0.tgz", @@ -11800,26 +12082,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill-cli/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/fkill-cli/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fkill/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -11855,15 +12117,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill/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/fkill/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -11876,15 +12129,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fkill/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/fkill/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -11897,36 +12141,6 @@ "node": ">=8" } }, - "node_modules/fkill/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/fkill/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/fkill/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": ">=6" - } - }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -12022,6 +12236,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/foreground-child/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, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -12132,65 +12358,23 @@ "os": [ "darwin" ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/fstream/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/fstream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/fstream/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" }, "engines": { - "node": "*" + "node": ">=0.6" } }, "node_modules/fstream/node_modules/rimraf": { @@ -12287,6 +12471,56 @@ "node": "^16.13 || >=18 || >=20" } }, + "node_modules/geckodriver/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==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/geckodriver/node_modules/decamelize": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/geckodriver/node_modules/http-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/geckodriver/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/geckodriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -12411,15 +12645,16 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, - "engines": { - "node": ">=16" + "peer": true, + "dependencies": { + "pump": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, "node_modules/get-symbol-description": { @@ -12454,15 +12689,6 @@ "node": ">= 14" } }, - "node_modules/get-uri/node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -12475,19 +12701,19 @@ } }, "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -12510,6 +12736,26 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/glob/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -12892,16 +13138,17 @@ } }, "node_modules/http-proxy-agent": { - "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==", + "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": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/http2-wrapper": { @@ -12918,31 +13165,31 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "6", "debug": "4" }, "engines": { - "node": ">= 14" + "node": ">= 6" } }, "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "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": ">=16.17.0" + "node": ">=10.17.0" } }, "node_modules/i18next": { - "version": "23.11.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.0.tgz", - "integrity": "sha512-VwFtlgy2LDbY0Qs6VfekIm6mv5/JmSJrtBf4aszl7Vby8+GcBlri0/7dkMZXmzTfiBMPUPBOmYCdQK7K4emkGQ==", + "version": "23.11.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.1.tgz", + "integrity": "sha512-mXw4A24BiPZKRsbb9ewgSvjYd6fxFCNwJyfK6nYfSTIAX2GkCWcb598m3DFkDZmqADatvuASrKo6qwORz3VwTQ==", "funding": [ { "type": "individual", @@ -13111,43 +13358,68 @@ } }, "node_modules/inquirer": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", - "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.11", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^5.0.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", "lodash": "^4.17.21", - "mute-stream": "1.0.0", + "mute-stream": "0.0.8", "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": ">=14.18.0" + "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" } }, + "node_modules/inquirer-autocomplete-prompt/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/inquirer/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -13427,12 +13699,15 @@ } }, "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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-function": { @@ -13616,15 +13891,13 @@ } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, + "peer": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/is-string": { @@ -13672,12 +13945,12 @@ } }, "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "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": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13821,6 +14094,18 @@ "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", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "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", @@ -14072,15 +14357,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/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/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -14093,15 +14369,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/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/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -14114,36 +14381,6 @@ "node": ">=8" } }, - "node_modules/jest-changed-files/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/jest-changed-files/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/jest-changed-files/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": ">=6" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -14253,16 +14490,6 @@ } } }, - "node_modules/jest-config/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/jest-config/node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -14278,38 +14505,6 @@ "node": ">=8" } }, - "node_modules/jest-config/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-config/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" - }, - "engines": { - "node": "*" - } - }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -14641,48 +14836,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/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/jest-runtime/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/jest-runtime/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" - }, - "engines": { - "node": "*" - } - }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -14809,21 +14962,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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/jimp": { "version": "0.16.13", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", @@ -14950,66 +15088,6 @@ } } }, - "node_modules/jsdom/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/jsdom/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/jsdom/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/jsesc": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", @@ -15407,18 +15485,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/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/loglevel": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", @@ -15790,18 +15856,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/meow/node_modules/read-pkg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", @@ -15945,15 +15999,12 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "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": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/mimic-response": { @@ -15988,9 +16039,9 @@ } }, "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -16098,43 +16149,24 @@ "engines": { "node": ">= 14.0.0" } - }, - "node_modules/mocha/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/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/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==", + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/mocha/node_modules/yargs": { @@ -16155,15 +16187,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/mochawesome": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", @@ -16238,13 +16261,10 @@ "dev": true }, "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/n12": { "version": "1.8.32", @@ -16425,6 +16445,15 @@ "url": "https://opencollective.com/node-fetch" } }, + "node_modules/node-fetch/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/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16473,30 +16502,26 @@ } }, "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, + "peer": true, "dependencies": { - "path-key": "^4.0.0" + "path-key": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "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, + "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/nprogress": { @@ -16667,15 +16692,15 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "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": "^4.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16724,6 +16749,26 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, + "node_modules/openfin-adapter/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/openfin-notifications": { "version": "2.4.0-alpha-3443", "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.4.0-alpha-3443.tgz", @@ -16912,18 +16957,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/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/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -17010,6 +17043,44 @@ "node": ">= 14" } }, + "node_modules/pac-proxy-agent/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==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/pac-resolver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", @@ -17244,12 +17315,17 @@ "dev": true }, "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", "dev": true, - "peer": true + "peer": true, + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } }, "node_modules/picocolors": { "version": "1.0.0", @@ -17317,15 +17393,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pid-port/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/pid-port/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -17338,15 +17405,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pid-port/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/pid-port/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -17359,36 +17417,6 @@ "node": ">=8" } }, - "node_modules/pid-port/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/pid-port/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/pid-port/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": ">=6" - } - }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -17718,15 +17746,15 @@ } }, "node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", @@ -17736,6 +17764,44 @@ "node": ">= 14" } }, + "node_modules/proxy-agent/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==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/proxy-agent/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -17839,15 +17905,41 @@ "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/puppeteer-core/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==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/puppeteer-core/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" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=12" } }, "node_modules/puppeteer-core/node_modules/devtools-protocol": { @@ -17856,6 +17948,32 @@ "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, + "node_modules/puppeteer-core/node_modules/http-proxy-agent": { + "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==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/puppeteer-core/node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/puppeteer-core/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -17923,6 +18041,15 @@ "node": ">=12" } }, + "node_modules/puppeteer-core/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/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -18253,229 +18380,132 @@ } }, "node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/read-pkg-up": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.0.0.tgz", - "integrity": "sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==", + "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==", "dev": true, "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.0.0", - "type-fest": "^3.12.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=16" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/read-pkg-up/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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/read-pkg-up/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==", + "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": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "p-limit": "^2.2.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/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": ">=8" } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "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": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/read-pkg/node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/read-pkg/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" - } + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/read-pkg/node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "node_modules/read-pkg/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, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "semver": "bin/semver" } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/readable-stream": { @@ -18540,6 +18570,18 @@ "minimatch": "^5.1.0" } }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -18754,6 +18796,25 @@ "node": ">=10" } }, + "node_modules/replace-in-file/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -18888,36 +18949,6 @@ "node": ">=8" } }, - "node_modules/restore-cursor/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/restore-cursor/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/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -18948,49 +18979,10 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true, "engines": { "node": ">=0.12.0" @@ -19209,28 +19201,6 @@ "node": ">= 14.20.0" } }, - "node_modules/selenium-webdriver/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -19454,16 +19424,10 @@ } }, "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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/sisteransi": { "version": "1.0.5", @@ -19508,18 +19472,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -19531,9 +19483,9 @@ } }, "node_modules/socks": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", - "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { "ip-address": "^9.0.5", @@ -19558,6 +19510,18 @@ "node": ">= 14" } }, + "node_modules/socks-proxy-agent/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==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/sortablejs": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", @@ -19755,6 +19719,36 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width-cjs/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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/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", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -19876,15 +19870,12 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "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": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/strip-indent": { @@ -20020,15 +20011,17 @@ } }, "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, + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -20170,15 +20163,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/taskkill/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/taskkill/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -20191,21 +20175,6 @@ "node": ">=8" } }, - "node_modules/taskkill/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/taskkill/node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -20215,21 +20184,6 @@ "node": ">=8" } }, - "node_modules/taskkill/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/taskkill/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": ">=6" - } - }, "node_modules/tcomb": { "version": "3.2.29", "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", @@ -20361,23 +20315,9 @@ "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/terser-webpack-plugin/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==", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "randombytes": "^2.1.0" } }, "node_modules/terser/node_modules/commander": { @@ -20418,26 +20358,6 @@ "concat-map": "0.0.1" } }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -20703,6 +20623,15 @@ } } }, + "node_modules/ts-jest/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/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -20944,9 +20873,9 @@ } }, "node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -21019,8 +20948,7 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicorn-magic": { "version": "0.1.0", @@ -21440,115 +21368,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/webdriver/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/webdriver/node_modules/@wdio/config": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", - "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", - "dev": true, - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriver/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==", - "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" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/webdriver/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/webdriver/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/webdriverio": { "version": "8.35.1", "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.35.1.tgz", @@ -21592,79 +21411,6 @@ } } }, - "node_modules/webdriverio/node_modules/@types/node": { - "version": "20.12.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.6.tgz", - "integrity": "sha512-3KurE8taB8GCvZBPngVbp0lk5CKi8M9f9k1rsADh0Evdz5SzJ+Q+Hx9uHoFGsLnLnd1xmkDQr2hVhlA0Mn0lKQ==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/webdriverio/node_modules/@wdio/config": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", - "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", - "dev": true, - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/webdriverio/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==", - "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" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/webdriverio/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -22073,22 +21819,17 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -22197,12 +21938,12 @@ } }, "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==", + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/yargs-unparser": { @@ -22253,6 +21994,29 @@ "node": ">=8" } }, + "node_modules/yargs/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/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", @@ -22263,15 +22027,6 @@ "fd-slicer": "~1.1.0" } }, - "node_modules/yauzl/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 02cf7158dc..f74d51aaa9 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,9 @@ "overrides": { "parse-bmfont-xml": { "xml2js": "0.5.0" + }, + "@openfin/automation-native": { + "phin": "3.7.1" } } } From fc8bbdb09886775c8bb24c6af51b272ce6086c69 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 16:10:32 +0100 Subject: [PATCH 05/23] Update the launch script for workspace v18 --- .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../integrate-with-excel/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../integrate-with-ms365/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/integrate-with-rss/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/integrate-with-snap/scripts/launch.mjs | 193 ++++++++++++------ .../register-with-browser/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/register-with-dock/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/register-with-home/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/register-with-store/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ how-to/use-notifications/scripts/launch.mjs | 193 ++++++++++++------ how-to/use-theming-basic/scripts/launch.mjs | 193 ++++++++++++------ how-to/use-theming/scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../scripts/launch.mjs | 193 ++++++++++++------ .../workspace-platform-starter/CHANGELOG.md | 2 + .../scripts/launch.mjs | 193 ++++++++++++------ 32 files changed, 4032 insertions(+), 1953 deletions(-) diff --git a/how-to/customize-home-templates/scripts/launch.mjs b/how-to/customize-home-templates/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/customize-home-templates/scripts/launch.mjs +++ b/how-to/customize-home-templates/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-server-authentication/scripts/launch.mjs b/how-to/integrate-server-authentication/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-server-authentication/scripts/launch.mjs +++ b/how-to/integrate-server-authentication/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-bloomberg-basic/scripts/launch.mjs b/how-to/integrate-with-bloomberg-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-bloomberg-basic/scripts/launch.mjs +++ b/how-to/integrate-with-bloomberg-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-excel/scripts/launch.mjs b/how-to/integrate-with-excel/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-excel/scripts/launch.mjs +++ b/how-to/integrate-with-excel/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-ms365-basic/scripts/launch.mjs b/how-to/integrate-with-ms365-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-ms365-basic/scripts/launch.mjs +++ b/how-to/integrate-with-ms365-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-ms365-low-code-basic/scripts/launch.mjs b/how-to/integrate-with-ms365-low-code-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-ms365-low-code-basic/scripts/launch.mjs +++ b/how-to/integrate-with-ms365-low-code-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-ms365-low-code/scripts/launch.mjs b/how-to/integrate-with-ms365-low-code/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-ms365-low-code/scripts/launch.mjs +++ b/how-to/integrate-with-ms365-low-code/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-ms365/scripts/launch.mjs b/how-to/integrate-with-ms365/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-ms365/scripts/launch.mjs +++ b/how-to/integrate-with-ms365/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-openid-connect/scripts/launch.mjs b/how-to/integrate-with-openid-connect/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-openid-connect/scripts/launch.mjs +++ b/how-to/integrate-with-openid-connect/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-rss/scripts/launch.mjs b/how-to/integrate-with-rss/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-rss/scripts/launch.mjs +++ b/how-to/integrate-with-rss/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-salesforce-basic/scripts/launch.mjs b/how-to/integrate-with-salesforce-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-salesforce-basic/scripts/launch.mjs +++ b/how-to/integrate-with-salesforce-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-salesforce/scripts/launch.mjs b/how-to/integrate-with-salesforce/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-salesforce/scripts/launch.mjs +++ b/how-to/integrate-with-salesforce/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-servicenow-basic/scripts/launch.mjs b/how-to/integrate-with-servicenow-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-servicenow-basic/scripts/launch.mjs +++ b/how-to/integrate-with-servicenow-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-servicenow/scripts/launch.mjs b/how-to/integrate-with-servicenow/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-servicenow/scripts/launch.mjs +++ b/how-to/integrate-with-servicenow/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-snap-basic/scripts/launch.mjs b/how-to/integrate-with-snap-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-snap-basic/scripts/launch.mjs +++ b/how-to/integrate-with-snap-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/integrate-with-snap/scripts/launch.mjs b/how-to/integrate-with-snap/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/integrate-with-snap/scripts/launch.mjs +++ b/how-to/integrate-with-snap/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-browser/scripts/launch.mjs b/how-to/register-with-browser/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-browser/scripts/launch.mjs +++ b/how-to/register-with-browser/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-dock-basic/scripts/launch.mjs b/how-to/register-with-dock-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-dock-basic/scripts/launch.mjs +++ b/how-to/register-with-dock-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-dock/scripts/launch.mjs b/how-to/register-with-dock/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-dock/scripts/launch.mjs +++ b/how-to/register-with-dock/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-home-basic/scripts/launch.mjs b/how-to/register-with-home-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-home-basic/scripts/launch.mjs +++ b/how-to/register-with-home-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-home/scripts/launch.mjs b/how-to/register-with-home/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-home/scripts/launch.mjs +++ b/how-to/register-with-home/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-platform-windows/scripts/launch.mjs b/how-to/register-with-platform-windows/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-platform-windows/scripts/launch.mjs +++ b/how-to/register-with-platform-windows/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-store-basic/scripts/launch.mjs b/how-to/register-with-store-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-store-basic/scripts/launch.mjs +++ b/how-to/register-with-store-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/register-with-store/scripts/launch.mjs b/how-to/register-with-store/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/register-with-store/scripts/launch.mjs +++ b/how-to/register-with-store/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/support-context-and-intents/scripts/launch.mjs b/how-to/support-context-and-intents/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/support-context-and-intents/scripts/launch.mjs +++ b/how-to/support-context-and-intents/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/use-notifications/scripts/launch.mjs b/how-to/use-notifications/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/use-notifications/scripts/launch.mjs +++ b/how-to/use-notifications/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/use-theming-basic/scripts/launch.mjs b/how-to/use-theming-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/use-theming-basic/scripts/launch.mjs +++ b/how-to/use-theming-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/use-theming/scripts/launch.mjs b/how-to/use-theming/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/use-theming/scripts/launch.mjs +++ b/how-to/use-theming/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/workspace-native-window-integration/scripts/launch.mjs b/how-to/workspace-native-window-integration/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/workspace-native-window-integration/scripts/launch.mjs +++ b/how-to/workspace-native-window-integration/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/workspace-platform-starter-basic/scripts/launch.mjs b/how-to/workspace-platform-starter-basic/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/workspace-platform-starter-basic/scripts/launch.mjs +++ b/how-to/workspace-platform-starter-basic/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index 5b22a15952..b443076b51 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,8 @@ ## v18.0.0 +- npm run launch now launches via the fins link when running on mac instead of the node adapter. +- We now capture the window state when saving a page and apply it if a page is being launched into a new window. - Improvement: Added `apply` as an action on the WorkspaceChangedLifecyclePayload. Previously we had `create`, `update`, `delete`. `update` was being fired when a workspace was updated and when a workspace was applied. `apply` now makes it clear when a particular workspace platform override has been triggered. - Improvement: modules/integrations/workspaces this module now refreshes the entries when a workspace is applied. So if a workspace entry in Home said it was selected it would be updated and the newly selected workspace would be updated to reflect it is the currently selected workspace. - Updated: modules/composite/default-workspace/lifecycle logic to listen out for the new `apply` action. diff --git a/how-to/workspace-platform-starter/scripts/launch.mjs b/how-to/workspace-platform-starter/scripts/launch.mjs index 2aa68a3fc1..49f9b4c9c4 100644 --- a/how-to/workspace-platform-starter/scripts/launch.mjs +++ b/how-to/workspace-platform-starter/scripts/launch.mjs @@ -5,6 +5,7 @@ * Pressing Ctrl+C/Command+C will terminate the application. */ import { connect, launch } from '@openfin/node-adapter'; +import { exec } from 'child_process'; import { setDefaultResultOrder } from 'dns'; /** @@ -13,68 +14,10 @@ import { setDefaultResultOrder } from 'dns'; */ async function run(manifestUrl) { try { - let quitRequested = false; - let quit; - - const fin = await launchFromNode(manifestUrl); - - if (fin) { - const manifest = await fin.System.fetchManifest(manifestUrl); - - if (manifest.platform?.uuid !== undefined) { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling platform quit'); - const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); - await platform.quit(); - } - } catch (err) { - if (err.toString().includes('no longer connected')) { - console.log('Platform no longer connected'); - console.log('Exiting process'); - process.exit(); - } else { - console.error(err); - } - } - }; - console.log(`Wrapped target platform: ${manifest.platform.uuid}`); - } else { - quit = async () => { - try { - if (!quitRequested) { - quitRequested = true; - console.log('Calling application quit'); - const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); - await app.quit(); - } - } catch (err) { - console.error(err); - } - }; - console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); - } - - // do something when app is closing - process.on('exit', async () => { - console.log('Process exit called'); - await quit(); - }); - - // catches ctrl+c event - process.on('SIGINT', async () => { - console.log('Ctrl + C called'); - await quit(); - }); - - console.log(`You successfully connected to the manifest: ${manifestUrl}`); - console.log(`Please wait while the sample loads.`); - console.log(); - console.log(`If using browser use the Quit option from the main menu.`); - console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); - console.log(); + if (process.platform === 'darwin') { + await launchFromFinsLink(manifestUrl); + } else { + await launchFromNodeAdapter(manifestUrl); } } catch (e) { console.error(`Error: Connection failed`); @@ -82,13 +25,137 @@ async function run(manifestUrl) { } } +/** + * Launch the manifest using the node adapter. + * @param manifestUrl the url to launch + */ +async function launchFromNodeAdapter(manifestUrl) { + let quitRequested = false; + let quit; + + const fin = await connectAndGetFinAPI(manifestUrl); + + if (fin) { + const manifest = await fin.System.fetchManifest(manifestUrl); + + if (manifest.platform?.uuid !== undefined) { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling platform quit'); + const platform = fin.Platform.wrapSync({ uuid: manifest.platform.uuid }); + await platform.quit(); + } + } catch (err) { + if (err.toString().includes('no longer connected')) { + console.log('Platform no longer connected'); + console.log('Exiting process'); + process.exit(); + } else { + console.error(err); + } + } + }; + console.log(`Wrapped target platform: ${manifest.platform.uuid}`); + } else { + quit = async () => { + try { + if (!quitRequested) { + quitRequested = true; + console.log('Calling application quit'); + const app = fin.Application.wrapSync({ uuid: manifest.startup_app.uuid }); + await app.quit(); + } + } catch (err) { + console.error(err); + } + }; + console.log(`Wrapped classic app: ${manifest.startup_app.uuid}`); + } + + // do something when app is closing + process.on('exit', async () => { + console.log('Process exit called'); + await quit(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + await quit(); + }); + + console.log(`You successfully connected to the manifest: ${manifestUrl}`); + console.log(`Please wait while the sample loads.`); + console.log(); + console.log(`If using browser use the Quit option from the main menu.`); + console.log(`Otherwise press Ctrl + C (Windows) or Command + C (Mac) to exit and close the sample.`); + console.log(); + } +} + +/** + * Launch the manifest using the node adapter. + * @param manifestUrl The manifest to launch. + */ +async function launchFromFinsLink(manifestUrl) { + console.log(); + console.log(`Launching manifest...`); + console.log(); + const finsLink = manifestUrl.replace('http', 'fin'); + const finsProcess = exec(`open ${finsLink}`); + + /** + * A simple message to inform the user how to quit the platform. + */ + function logQuitMessage() { + console.log(); + console.log('Please quit the platform using:'); + console.log(); + console.log('- Process Manager (https://start.openfin.co/pm)'); + console.log('- the Quit option from the Workspace Browser main menu or Dock.'); + console.log('- run npm run kill to kill all OpenFin processes.'); + console.log(); + console.log(); + } + + finsProcess.stdout.on('data', (data) => { + console.log(`stdout: ${data}`); + }); + + finsProcess.stderr.on('data', (data) => { + console.error(`stderr: ${data}`); + }); + + // do something when app is closing + process.on('exit', async () => { + console.log('Please wait for the OpenFin application to launch.'); + logQuitMessage(); + }); + + // catches ctrl+c event + process.on('SIGINT', async () => { + console.log('Ctrl + C called'); + logQuitMessage(); + }); + + finsProcess.on('exit', (code) => { + if (code === 0) { + console.log('Manifest launched successfully'); + } else { + console.log(`Child process exited with code ${code.toString()}`); + } + }); +} + /** * Launch the manifest using the node adapter. * @param manifestUrl The manifest to launch. * @param exitMethod The method to call if the adapter connection exits. * @returns The fin object representing the connection. */ -async function launchFromNode(manifestUrl, exitMethod) { +async function connectAndGetFinAPI(manifestUrl, exitMethod) { try { console.log(`Launching manifest...`); console.log(); From bbbb95ecf78f19e66994e97e869a3de097e9c258 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 16:10:52 +0100 Subject: [PATCH 06/23] Include window state on page save --- .../client/src/framework/platform/browser.ts | 12 +++++++----- .../src/framework/platform/platform-override.ts | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts b/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts index dce6e76b7c..703f832f63 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/browser.ts @@ -302,8 +302,8 @@ export async function getPageForView(view: OpenFin.View): Promise { - let boundsAndState: { bounds?: OpenFin.Bounds; state?: "maximized" | "minimized" | "normal"} | undefined; +): Promise<{ bounds?: OpenFin.Bounds; state?: "maximized" | "minimized" | "normal" } | undefined> { + let boundsAndState: { bounds?: OpenFin.Bounds; state?: "maximized" | "minimized" | "normal" } | undefined; const platform = getCurrentSync(); if (fromStorage) { const page = await platform.Storage.getPage(pageId); @@ -336,8 +336,10 @@ export async function getPageBoundsAndState( if (!isEmpty(windowId)) { const hostWindow = platform.Browser.wrapSync(windowId); - boundsAndState = { bounds: await hostWindow.openfinWindow.getBounds(), - state: await hostWindow.openfinWindow.getState() }; + boundsAndState = { + bounds: await hostWindow.openfinWindow.getBounds(), + state: await hostWindow.openfinWindow.getState() + }; } return boundsAndState; @@ -475,7 +477,7 @@ export async function launchPage( } } - if(!isEmpty(customState)) { + if (!isEmpty(customState)) { newWindowRequest.state = customState; } diff --git a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts index 2d5a1b0430..b8092deb8b 100644 --- a/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts +++ b/how-to/workspace-platform-starter/client/src/framework/platform/platform-override.ts @@ -496,11 +496,11 @@ export function overrideCallback( req.page.customData = {}; } // only set if it hasn't been provided by the caller - if(isEmpty(req.page?.customData?.windowBounds)) { + if (isEmpty(req.page?.customData?.windowBounds)) { req.page.customData.windowBounds = windowBoundsAndState.bounds; } - if(isEmpty(req.page?.customData?.windowState)) { + if (isEmpty(req.page?.customData?.windowState)) { req.page.customData.windowState = windowBoundsAndState.state; } } From bbc263027af39d7a493c02d6aeadb172f99b20e2 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 17:01:46 +0100 Subject: [PATCH 07/23] Remove rspack --- .../workspace-platform-starter/CHANGELOG.md | 1 - .../client/webpack.config.js | 35 +------------------ .../workspace-platform-starter/package.json | 1 - 3 files changed, 1 insertion(+), 36 deletions(-) diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index b443076b51..f989530279 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -7,7 +7,6 @@ - Improvement: Added `apply` as an action on the WorkspaceChangedLifecyclePayload. Previously we had `create`, `update`, `delete`. `update` was being fired when a workspace was updated and when a workspace was applied. `apply` now makes it clear when a particular workspace platform override has been triggered. - Improvement: modules/integrations/workspaces this module now refreshes the entries when a workspace is applied. So if a workspace entry in Home said it was selected it would be updated and the newly selected workspace would be updated to reflect it is the currently selected workspace. - Updated: modules/composite/default-workspace/lifecycle logic to listen out for the new `apply` action. -- Added support for rspack for faster builds. `npm run build-client-rspack` will npx install rspack and use the webpack config file to build the JavaScript from the TypeScript files. It is faster but no type checking is performed so we still recommend doing validated builds using `npm run build` or `npm run build-client`. - Improved performance of switching schemes - Improved performance of computing dock configuration, especially on theme changes. - Breaking Change (if you do not update your manifest): Added modules as an option for platformProvider.interop settings and made the workspace platform starter interop override a module (so you can decide to load it, chain it with other overrides or exclude it). Please see the new document [how to customize your interop broker](./docs/how-to-customize-your-interop-broker.md). If you want the default interop broker to check endpoints to see if a context type should be enriched through an endpoint then you need to add the wps-interop-override module id to the endpoint clients array in the endpointProvider (see the manifest.fin.json as an example). diff --git a/how-to/workspace-platform-starter/client/webpack.config.js b/how-to/workspace-platform-starter/client/webpack.config.js index 141e24a874..b786e2fcef 100644 --- a/how-to/workspace-platform-starter/client/webpack.config.js +++ b/how-to/workspace-platform-starter/client/webpack.config.js @@ -6,45 +6,12 @@ const alias = { 'workspace-platform-starter/utils': path.resolve(__dirname, '../client/src/framework/utils') }; -const request = process.argv; - -let loaderRule = { +const loaderRule = { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ }; -if (request.length > 1 && request[1].includes('rspack')) { - console.log( - '-------------------------------------------------------------------------------------------------' - ); - console.log('Using rspack with SWC Loader.'); - console.log( - 'This will transpile TypeScript files to JavaScript but will not perform TypeScript type checking.' - ); - console.log('Use npm run build or npm run build-client if you want the files built with type checking.'); - console.log( - '-------------------------------------------------------------------------------------------------' - ); - loaderRule = { - test: /\.(j|t)s$/, - exclude: [/[\\/]node_modules[\\/]/], - loader: 'builtin:swc-loader', - options: { - sourceMap: true, - jsc: { - parser: { - syntax: 'typescript' - }, - externalHelpers: true - }, - env: { - targets: 'Chrome >= 110' - } - } - }; -} - const configs = [ { entry: './client/src/provider.ts', diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 1962390d6c..1e85ee8195 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -9,7 +9,6 @@ "build-server": "tsc --project ./server", "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-rspack": "npm run prebuild-client && npx @rspack/cli --config ./client/webpack.config.js --mode=production", "build-client-parallel": "node scripts/webpack-parallel.mjs ./client/webpack.config.js", "build-client-serial": "webpack build --config ./client/webpack.config.js --mode=production", "build-templates": "webpack build --config ./templates/webpack.config.js --mode=production", From 94a2ffe79fa487b5488be937f539c0b0abb6af63 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 17:58:41 +0100 Subject: [PATCH 08/23] Gave greater control over what is built. --- .../workspace-platform-starter/CHANGELOG.md | 1 + .../client/framework.webpack.config.js | 63 ++ .../client/starter-modules.webpack.config.js | 723 +++++++++++++++++ .../client/webpack.config.js | 753 +----------------- .../docs/how-to-authenticate.md | 2 +- ...how-to-setup-workspace-platform-starter.md | 28 +- .../workspace-platform-starter/package.json | 13 +- .../scripts/webpack-parallel.mjs | 9 +- .../templates/scripts/generate-module.mjs | 7 +- 9 files changed, 839 insertions(+), 760 deletions(-) create mode 100644 how-to/workspace-platform-starter/client/framework.webpack.config.js create mode 100644 how-to/workspace-platform-starter/client/starter-modules.webpack.config.js diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index f989530279..bb21dc875c 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,7 @@ ## v18.0.0 +- Broke up the build process to make it easier to just build your modules. `npm run build` still builds everything and `npm run build-client` still builds all client related code but now if you change framework files you can use `npm run build-framework`, or if you modify our starter modules you can use `npm run build-starter-modules` or if you just want to build your modules (that are listed in webpack.config.js) then you can use `npm run build-client-modules`. This will let you have a much faster build. - npm run launch now launches via the fins link when running on mac instead of the node adapter. - We now capture the window state when saving a page and apply it if a page is being launched into a new window. - Improvement: Added `apply` as an action on the WorkspaceChangedLifecyclePayload. Previously we had `create`, `update`, `delete`. `update` was being fired when a workspace was updated and when a workspace was applied. `apply` now makes it clear when a particular workspace platform override has been triggered. diff --git a/how-to/workspace-platform-starter/client/framework.webpack.config.js b/how-to/workspace-platform-starter/client/framework.webpack.config.js new file mode 100644 index 0000000000..40063e7c41 --- /dev/null +++ b/how-to/workspace-platform-starter/client/framework.webpack.config.js @@ -0,0 +1,63 @@ +/* eslint-disable unicorn/better-regex */ +const path = require('path'); + +const alias = { + 'workspace-platform-starter': path.resolve(__dirname, '../client/src/framework'), + 'workspace-platform-starter/utils': path.resolve(__dirname, '../client/src/framework/utils') +}; + +const loaderRule = { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ +}; + +const configs = [ + { + entry: './client/src/provider.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'provider.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/shell.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'shell.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js') + }, + experiments: { + outputModule: true + } + } +]; + +module.exports = + process.env.WEBPACK_CONFIG_INDEX !== undefined ? configs[process.env.WEBPACK_CONFIG_INDEX] : configs; diff --git a/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js b/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js new file mode 100644 index 0000000000..a5cbe74ce9 --- /dev/null +++ b/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js @@ -0,0 +1,723 @@ +/* eslint-disable unicorn/better-regex */ +const path = require('path'); + +const alias = { + 'workspace-platform-starter': path.resolve(__dirname, '../client/src/framework'), + 'workspace-platform-starter/utils': path.resolve(__dirname, '../client/src/framework/utils') +}; + +const loaderRule = { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ +}; + +const configs = [ + { + entry: './client/src/modules/auth/example/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'example.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'auth') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/local-storage/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'local-storage.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/channel/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'channel.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/inline-apps/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'inline-apps.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/init-options/interop/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'interop.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/init-options/launch-app/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'launch-app.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/log/console/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'console.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'log') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/actions/opacity/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'opacity.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/example-connection-validation/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'example.connection.validation.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/analytics/console/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'console.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'analytics') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/developer/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'developer.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/integrations/apps/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'apps.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/integrations/workspaces/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'workspaces.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/integrations/pages/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'pages.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/about/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'about.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/pages/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'pages.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/windows/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'windows.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/example-context-processor/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'example.context.processor.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/framework/fdc3/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'fdc3.mapper.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'common', 'lib', 'fdc3') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/actions/custom-menu/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'custom-menu.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/auth/openid-connect/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'openid-connect.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'auth') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/endpoint/favorite-local-storage/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'favorite-local-storage.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/actions/favorites-menu/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'favorites-menu.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/include-in-snapshot/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'include-in-snapshot.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/lifecycle/example-notification-service/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'example-notification-service.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'lifecycle') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/init-options/launch-workspace/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'launch-workspace.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/composite/default-workspace/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'default-workspace.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/content-creation/view-position/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'view-position.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'content-creation') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/actions/window-platform/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'window-platform.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/share/pages/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'pages.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'share') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/share/workspaces/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'workspaces.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'share') + }, + experiments: { + outputModule: true + } + }, + { + entry: './client/src/modules/interop-override/wps-interop-override/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'wps-interop-override.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'interop-override') + }, + experiments: { + outputModule: true + } + } +]; + +module.exports = + process.env.WEBPACK_CONFIG_INDEX !== undefined ? configs[process.env.WEBPACK_CONFIG_INDEX] : configs; diff --git a/how-to/workspace-platform-starter/client/webpack.config.js b/how-to/workspace-platform-starter/client/webpack.config.js index b786e2fcef..19bd16fb48 100644 --- a/how-to/workspace-platform-starter/client/webpack.config.js +++ b/how-to/workspace-platform-starter/client/webpack.config.js @@ -1,767 +1,20 @@ /* eslint-disable unicorn/better-regex */ const path = require('path'); +// eslint-disable-next-line no-unused-vars const alias = { 'workspace-platform-starter': path.resolve(__dirname, '../client/src/framework'), 'workspace-platform-starter/utils': path.resolve(__dirname, '../client/src/framework/utils') }; +// eslint-disable-next-line no-unused-vars const loaderRule = { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ }; -const configs = [ - { - entry: './client/src/provider.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'provider.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/shell.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'shell.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/auth/example/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'example.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'auth') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/local-storage/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'local-storage.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/channel/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'channel.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/inline-apps/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'inline-apps.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/init-options/interop/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'interop.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/init-options/launch-app/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'launch-app.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/log/console/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'console.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'log') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/actions/opacity/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'opacity.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/example-connection-validation/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'example.connection.validation.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/analytics/console/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'console.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'analytics') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/developer/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'developer.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/integrations/apps/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'apps.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/integrations/workspaces/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'workspaces.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/integrations/pages/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'pages.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'integrations') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/about/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'about.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/pages/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'pages.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/windows/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'windows.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/example-context-processor/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'example.context.processor.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/framework/fdc3/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'fdc3.mapper.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'common', 'lib', 'fdc3') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/actions/custom-menu/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'custom-menu.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/auth/openid-connect/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'openid-connect.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'auth') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/endpoint/favorite-local-storage/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'favorite-local-storage.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'endpoint') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/actions/favorites-menu/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'favorites-menu.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/include-in-snapshot/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'include-in-snapshot.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/lifecycle/example-notification-service/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'example-notification-service.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'lifecycle') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/init-options/launch-workspace/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'launch-workspace.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'init-options') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/composite/default-workspace/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'default-workspace.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'composite') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/content-creation/view-position/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'view-position.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'content-creation') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/actions/window-platform/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'window-platform.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'actions') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/share/pages/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'pages.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'share') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/share/workspaces/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'workspaces.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'share') - }, - experiments: { - outputModule: true - } - }, - { - entry: './client/src/modules/interop-override/wps-interop-override/index.ts', - devtool: 'source-map', - module: { - rules: [loaderRule] - }, - resolve: { - extensions: ['.tsx', '.ts', '.js'], - alias - }, - externals: { fin: 'fin' }, - output: { - filename: 'wps-interop-override.bundle.js', - library: { - type: 'module' - }, - path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'interop-override') - }, - experiments: { - outputModule: true - } - } -]; +const configs = []; module.exports = process.env.WEBPACK_CONFIG_INDEX !== undefined ? configs[process.env.WEBPACK_CONFIG_INDEX] : configs; diff --git a/how-to/workspace-platform-starter/docs/how-to-authenticate.md b/how-to/workspace-platform-starter/docs/how-to-authenticate.md index 7a8dacf6b8..66e04cc5f7 100644 --- a/how-to/workspace-platform-starter/docs/how-to-authenticate.md +++ b/how-to/workspace-platform-starter/docs/how-to-authenticate.md @@ -43,7 +43,7 @@ We provide a basic example authentication module to give you an idea of how it w This is an example of a module (see [How To Add A Module](./how-to-add-a-module.md)) that has been created and referenced in the authProvider modules array. Each module can be passed data in a format that the specific module understands. -The source for this example module can be found here: [auth-provider.ts](../client/src/modules/auth/example/auth-provider.ts). It is exported from [index.ts](../client/src/modules/auth/example/index.ts) and it is built on it's own via a [webpack](../client/webpack.config.js) entry. +The source for this example module can be found here: [auth-provider.ts](../client/src/modules/auth/example/auth-provider.ts). It is exported from [index.ts](../client/src/modules/auth/example/index.ts) and it is built on it's own via a [webpack](../client/starter-modules.webpack.config.js) entry. This example module is there for you to test different auth flows (e.g. autoLogin) and to give an example of how a module could be built and plugged in. The settings are: diff --git a/how-to/workspace-platform-starter/docs/how-to-setup-workspace-platform-starter.md b/how-to/workspace-platform-starter/docs/how-to-setup-workspace-platform-starter.md index b4b27465b4..d285c8b968 100644 --- a/how-to/workspace-platform-starter/docs/how-to-setup-workspace-platform-starter.md +++ b/how-to/workspace-platform-starter/docs/how-to-setup-workspace-platform-starter.md @@ -52,12 +52,38 @@ This runs the same code with slightly different settings to load an FDC3 directo 7. To launch your store launch the Home UI and use / to show a list of the available commands and select Store. Storefront will be shown and your store will be listed. The [apps](../public/common/apps.json) are displayed as described in their respective files alongside a Storefront configuration setting defined in your [manifest](../public/manifest.fin.json). -8. If you modify the project and want to rebuild. +8. If you modify the project and want to rebuild everything. ```shell npm run build ``` +9. If you modify the [client/src/provider.ts](../client/src/provider.ts), [client/src/shell.ts](../client/src/shell.ts) or anything under [client/src/framework](../client/src/framework) you can build just those files. + +```shell +npm run build-framework +``` + +10. If you modify any of the workspace platform starter modules in [client/src/modules](../client/src/modules) you can rebuild the workspace platform starter modules. + +```shell +npm run build-starter-modules +``` + +11. If you are generating and working on your own modules in [client/src/modules](../client/src/modules) you can rebuild the your modules. + +```shell +npm run build-client-modules +``` + +12. If you have changed the sample server logic in [server/src](../server/src) you can rebuild the just the server. + +```shell +npm run build-server +``` + +You will need to do a complete build at least once. From there you may end up only needing to use `npm run build-client-modules` to quickly build just your modules. + Once you have built the project it is easy to extend through config (either the manifest file or settings returned from a service) and custom JavaScript Modules. The remaining guides will walk you through the process. [<- Back to Table Of Contents](../README.md) diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 1e85ee8195..d1bb08df6b 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -8,9 +8,16 @@ "build": "npm run build-server & npm run build-client", "build-server": "tsc --project ./server", "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=production", + "build-client": "npm run build-framework && npm run build-starter-modules && npm run build-client-modules", + "build-framework": "npm run prebuild-client && npm run build-framework-parallel", + "build-framework-parallel": "node scripts/webpack-parallel.mjs ./client/framework.webpack.config.js framework", + "build-framework-serial": "webpack build --config ./client/framework.webpack.config.js --mode=production", + "build-client-modules": "npm run build-client-modules-parallel", + "build-client-modules-parallel": "node scripts/webpack-parallel.mjs ./client/webpack.config.js client-modules", + "build-client-modules-serial": "webpack build --config ./client/webpack.config.js --mode=production", + "build-starter-modules": "npm run build-starter-modules-parallel", + "build-starter-modules-parallel": "node scripts/webpack-parallel.mjs ./client/starter-modules.webpack.config.js starter-modules", + "build-starter-modules-serial": "webpack build --config ./client/starter-modules.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", diff --git a/how-to/workspace-platform-starter/scripts/webpack-parallel.mjs b/how-to/workspace-platform-starter/scripts/webpack-parallel.mjs index 575ac9a7a8..6076dbea54 100644 --- a/how-to/workspace-platform-starter/scripts/webpack-parallel.mjs +++ b/how-to/workspace-platform-starter/scripts/webpack-parallel.mjs @@ -6,10 +6,13 @@ import path from 'path'; * Run the process. * @param packageDir The directory for the package json. * @param configFile The config file to read. + * @param buildTarget The build target to use. */ -async function run(packageDir, configFile) { +async function run(packageDir, configFile, buildTarget) { console.log('packagerDir:', packageDir); console.log('configFile:', configFile); + console.log('buildTarget:', buildTarget); + const serialTaskTarget = `build-${buildTarget}-serial`; const fullConfigFilename = path.join(packageDir, configFile); @@ -26,7 +29,7 @@ async function run(packageDir, configFile) { for (let i = chunk * chunkSize; i < Math.min(configModule.default.length, (chunk + 1) * chunkSize); i++) { promises.push( new Promise((resolve, reject) => { - const sp = spawn('npm', ['run', 'build-client-serial'], { + const sp = spawn('npm', ['run', serialTaskTarget], { stdio: 'inherit', env: { ...process.env, WEBPACK_CONFIG_INDEX: i }, shell: true @@ -51,4 +54,4 @@ async function run(packageDir, configFile) { } } -run(path.resolve(path.join(path.dirname(process.argv[1]), '..')), process.argv[2]); +run(path.resolve(path.join(path.dirname(process.argv[1]), '..')), process.argv[2], process.argv[3]); 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 8febeebcda..c62f187a28 100644 --- a/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs +++ b/how-to/workspace-platform-starter/templates/scripts/generate-module.mjs @@ -185,8 +185,11 @@ async function addWebPackEntry(moduleOutputDir, kebabType, kebabName) { // eslint-disable-next-line no-div-regex const entriesRegEx = /= \[([\S\s]*)];/; let entries = entriesRegEx.exec(webPackConfig)[1].trim(); - entries += `, - { + if (entries.length > 0) { + entries += `, + `; + } + entries += `{ entry: './${path.relative('.', path.join(moduleOutputDir, 'index.ts')).replace(/\\/g, '/')}', devtool: 'source-map', module: { From 6592b9798bf0b3c13b188b580ce0ad7233ccc361 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 12 Apr 2024 20:56:59 +0100 Subject: [PATCH 09/23] Added Cloud Interop support with documentation. --- how-to/support-context-and-intents/README.md | 12 + .../client/src/interopbroker.ts | 824 +++++++++--------- .../client/src/provider.ts | 15 +- .../client/src/shapes.ts | 22 + .../support-context-and-intents/package.json | 1 + .../public/manifest.fin.json | 12 + .../public/second.manifest.fin.json | 12 + .../workspace-platform-starter/CHANGELOG.md | 1 + how-to/workspace-platform-starter/README.md | 1 + .../openfin-cloud-interop/index.ts | 9 + .../openfin-cloud-interop/interop-override.ts | 97 +++ .../openfin-cloud-interop/shapes.ts | 10 + .../client/starter-modules.webpack.config.js | 22 + ...dd-cloud-interop-to-your-interop-broker.md | 61 ++ .../how-to-customize-your-interop-broker.md | 8 +- .../workspace-platform-starter/package.json | 1 + .../public/manifest.fin.json | 16 + .../public/settings.json | 16 + package-lock.json | 390 ++++++++- 19 files changed, 1095 insertions(+), 435 deletions(-) create mode 100644 how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/index.ts create mode 100644 how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/interop-override.ts create mode 100644 how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts create mode 100644 how-to/workspace-platform-starter/docs/how-to-add-cloud-interop-to-your-interop-broker.md diff --git a/how-to/support-context-and-intents/README.md b/how-to/support-context-and-intents/README.md index 59b6d29f8a..aea181a028 100644 --- a/how-to/support-context-and-intents/README.md +++ b/how-to/support-context-and-intents/README.md @@ -8,6 +8,7 @@ This sample covers: - Supporting Interop/FDC3 Context messages - Supporting Interop/FDC3 Intents +- Optionally supporting OpenFin Cloud Interop for context sharing: - Using a golden data source (in [apps](./public/common/) apps\*.json) to drive the apps that show up in Home and in intent resolution - Customization through config (in the [manifest.fin.json](public/manifest.fin.json) file) @@ -71,6 +72,8 @@ This runs the same code with slightly different settings to show a different the npm run build ``` +8. If you wish to test Cloud Interop so that you can launch the two platforms and see them communicating via the cloud then please contact your OpenFin sales account manager to get your connection information. Once you have that you can update the cloudInteropProvider settings in the [manifest](public/manifest.fin.json) and/or [second.manifest.fin.json](public/second.manifest.fin.json). Once enabled you will be able to share context across user channels between platforms regardless of whether they are running on the same machine or not. + ## How it works The Server in this example provides two sets of content over HTTP GET. @@ -105,6 +108,15 @@ Intent support is added to the sample in the following ways: - Update [apps.json](./public/common/apps.json) to add the new views/pages and specify that they support intents in their metadata. - Update [apps.ts](client/src/apps.ts) to support getting apps that support intents or context types. +# Cloud Interop Support implemented? + +Adding cloud interop support is very simple. + +- We npm install [@openfin/cloud-interop](https://www.npmjs.com/package/@openfin/cloud-interop) +- We provide a way of providing cloud interop configuration through a manifest (in a real application you should be fetching this information from a service). +- We pass the settings to the cloudInteropOverride function provided by the @openfin/cloud-interop library. +- We add the initialized cloudInteropOverride to the interopOverride array that is set as part of your [platform's initialization](./client/src/provider.ts). + ## Using the Sample To run this sample: diff --git a/how-to/support-context-and-intents/client/src/interopbroker.ts b/how-to/support-context-and-intents/client/src/interopbroker.ts index ed87e0a100..6822c0444e 100644 --- a/how-to/support-context-and-intents/client/src/interopbroker.ts +++ b/how-to/support-context-and-intents/client/src/interopbroker.ts @@ -15,355 +15,400 @@ const RESOLVER_TIMEOUT = "ResolverTimeout"; /** * Create an override for the platform interop. * @param customSettings Custom settings to initialize the platform. - * @param InteropBroker The interop broker base type to derive from. * @returns The override for the interop broker. */ export function createInteropOverride( - customSettings: CustomSettings, - InteropBroker: OpenFin.Constructor -): OpenFin.InteropBroker { - /** - * Override the InteropBroken class. - */ - class InteropOverride extends InteropBroker { + customSettings: CustomSettings +): OpenFin.ConstructorOverride { + return (Base: OpenFin.Constructor) => /** - * Launch an applications with a specific intent. - * @param app The app to launch. - * @param intent The intent to launch the app with. - * @returns The source and version of the app that was launched if there was one. + * In Interop Broker Implementation that supports fdc3 1.2 */ - public async launchAppWithIntent( - app: App, - intent: OpenFin.Intent - ): Promise< - | { - source: string; - version?: string; - } - | undefined - > { - console.log("Launching app with intent."); - - if ( - app.manifestType !== "view" && - app.manifestType !== "inline-view" && - app.manifestType !== "snapshot" - ) { - // optional logic show a prompt to the user to let them know - console.warn("Unable to raise intent against app as only view/snapshot based apps are supported."); - return; - } - - if (app.manifestType === "view" || app.manifestType === "inline-view") { - console.log(`The supporting app is a view (${app.manifestType})`); - - const identity = await launchView(app); - if (!identity) { + class InteropOverride extends Base { + /** + * Launch an applications with a specific intent. + * @param app The app to launch. + * @param intent The intent to launch the app with. + * @returns The source and version of the app that was launched if there was one. + */ + public async launchAppWithIntent( + app: App, + intent: OpenFin.Intent + ): Promise< + | { + source: string; + version?: string; + } + | undefined + > { + console.log("Launching app with intent."); + + if ( + app.manifestType !== "view" && + app.manifestType !== "inline-view" && + app.manifestType !== "snapshot" + ) { // optional logic show a prompt to the user to let them know - console.warn("Unable to raise intent against view as no identity was returned."); + console.warn("Unable to raise intent against app as only view/snapshot based apps are supported."); return; } - await super.setIntentTarget(intent, identity); - } - if (app.manifestType === "snapshot") { - console.log("The supporting app is a view."); + if (app.manifestType === "view" || app.manifestType === "inline-view") { + console.log(`The supporting app is a view (${app.manifestType})`); - const identities = await launchSnapshot(app); - if (!identities) { - // optional logic show a prompt to the user to let them know - console.warn("Unable to raise intent against target as no identity was returned."); - return; - } - for (const identity of identities) { + const identity = await launchView(app); + if (!identity) { + // optional logic show a prompt to the user to let them know + console.warn("Unable to raise intent against view as no identity was returned."); + return; + } await super.setIntentTarget(intent, identity); } - } - return { - source: app.appId, - version: app.version - }; - } + if (app.manifestType === "snapshot") { + console.log("The supporting app is a view."); - /** - * Get the target identity of the requested app. - * @param appId The app id to get the target for. - * @returns The identity of the target app. - */ - public async getTargetIdentity(appId: string | undefined): Promise { - if (!appId) { - return; - } - const passedIdentity = appId.split("@"); - const name = passedIdentity[0]; - let uuid = fin.me.identity.uuid; - if (passedIdentity.length === 2) { - uuid = passedIdentity[1]; - } - const resolvedIdentity = { uuid, name }; + const identities = await launchSnapshot(app); + if (!identities) { + // optional logic show a prompt to the user to let them know + console.warn("Unable to raise intent against target as no identity was returned."); + return; + } + for (const identity of identities) { + await super.setIntentTarget(intent, identity); + } + } - try { - const targetView = await fin.View.wrap({ uuid, name }); - await targetView.getInfo(); - // passed identity found - return resolvedIdentity; - } catch { - // passed identity does not exist + return { + source: app.appId, + version: app.version + }; } - } - /** - * Launch a picker to chose an application for an intent. - * @param launchOptions The launch options for the app. - * @param launchOptions.apps The optional list of apps to display. - * @param launchOptions.intent The optional intent to support. - * @param launchOptions.intents The optional intents to pick from. - * @returns The picked app. - */ - public async launchAppPicker(launchOptions: { - apps?: App[]; - intent?: Partial; - intents?: { intent: Partial; apps: App[] }[]; - }): Promise< - | { - appId: string; - intent: Partial; - } - | undefined - > { - // show menu - // launch a new window and optionally pass the available intents as customData.apps as part of the window options - // the window can then use raiseIntent against a specific app (the selected one). This is a very basic example. - const height = customSettings?.platformProvider?.intentPicker?.height ?? 400; - const width = customSettings?.platformProvider?.intentPicker?.width ?? 400; - - // this logic runs in the provider so we are using it as a way of determining the root (so it works with root hosting and subdirectory based hosting if a url is not provided) - const url = - customSettings?.platformProvider?.intentPicker?.url ?? - "http://localhost:8080/common/windows/intents/picker.html"; - - const winOption: OpenFin.WindowCreationOptions = { - name: "intent-picker", - includeInSnapshots: false, - fdc3InteropApi: "1.2", - defaultWidth: width, - defaultHeight: height, - showTaskbarIcon: false, - saveWindowState: false, - defaultCentered: true, - customData: { - apps: launchOptions.apps, - intent: launchOptions.intent, - intents: launchOptions.intents - }, - url, - frame: false, - autoShow: true, - alwaysOnTop: true - }; - - const win = await fin.Window.create(winOption); - const webWindow = win.getWebWindow(); - try { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const getIntentSelection = (webWindow as any).getIntentSelection; + /** + * Get the target identity of the requested app. + * @param appId The app id to get the target for. + * @returns The identity of the target app. + */ + public async getTargetIdentity(appId: string | undefined): Promise { + if (!appId) { + return; + } + const passedIdentity = appId.split("@"); + const name = passedIdentity[0]; + let uuid = fin.me.identity.uuid; + if (passedIdentity.length === 2) { + uuid = passedIdentity[1]; + } + const resolvedIdentity = { uuid, name }; - if (getIntentSelection) { - const selectedAppId = await getIntentSelection(); - return selectedAppId as { - appId: string; - intent: AppIntent; - }; + try { + const targetView = await fin.View.wrap({ uuid, name }); + await targetView.getInfo(); + // passed identity found + return resolvedIdentity; + } catch { + // passed identity does not exist } - } catch { - console.error("App for intent not selected/launched.", launchOptions.intent); } - } - - /** - * Is the connection for the specific identity authorized. - * @param identity The identity of the connection to check. - * @param payload The optional payload. - * @returns True if the connection is authorized. - */ - public async isConnectionAuthorized(identity: OpenFin.Identity, payload?: unknown): Promise { - console.log("Interop connection being made by the following identity with payload:", identity, payload); - // perform connection validation checks here if required and return false if it shouldn't be allowed. - return true; - } - /** - * Is the action authorized. - * @param action The action to test for being authorized. - * @param payload The payload to use in the test. - * @param identity The identity of the client being asked about the action. - * @returns True if the action is authorized. - */ - public async isActionAuthorized( - action: string, - payload: unknown, - identity: OpenFin.ClientIdentity - ): Promise { - console.log("Interop Broker is action authorized:", action, payload, identity); - // perform check here if you wish and return true/false accordingly - return true; - } - - /** - * Get the information for the intents by context. - * @param context The context to get the information for. - * @param context.type The type of the context. - * @param clientIdentity The identity of the client to get the information from. - * @returns The information about the intents for the context. - */ - public async handleInfoForIntentsByContext( - context: { type: string }, - clientIdentity: OpenFin.Identity - ): Promise< - { - intent: { name: string; displayName: string }; - apps: { name: string; appId: string; title: string }[]; - }[] - > { - const intents = await getIntentsByContext(customSettings?.appProvider, context.type); - - if (intents.length === 0) { - throw new Error(NO_APPS_FOUND); + /** + * Launch a picker to chose an application for an intent. + * @param launchOptions The launch options for the app. + * @param launchOptions.apps The optional list of apps to display. + * @param launchOptions.intent The optional intent to support. + * @param launchOptions.intents The optional intents to pick from. + * @returns The picked app. + */ + public async launchAppPicker(launchOptions: { + apps?: App[]; + intent?: Partial; + intents?: { intent: Partial; apps: App[] }[]; + }): Promise< + | { + appId: string; + intent: Partial; + } + | undefined + > { + // show menu + // launch a new window and optionally pass the available intents as customData.apps as part of the window options + // the window can then use raiseIntent against a specific app (the selected one). This is a very basic example. + const height = customSettings?.platformProvider?.intentPicker?.height ?? 400; + const width = customSettings?.platformProvider?.intentPicker?.width ?? 400; + + // this logic runs in the provider so we are using it as a way of determining the root (so it works with root hosting and subdirectory based hosting if a url is not provided) + const url = + customSettings?.platformProvider?.intentPicker?.url ?? + "http://localhost:8080/common/windows/intents/picker.html"; + + const winOption: OpenFin.WindowCreationOptions = { + name: "intent-picker", + includeInSnapshots: false, + fdc3InteropApi: "1.2", + defaultWidth: width, + defaultHeight: height, + showTaskbarIcon: false, + saveWindowState: false, + defaultCentered: true, + customData: { + apps: launchOptions.apps, + intent: launchOptions.intent, + intents: launchOptions.intents + }, + url, + frame: false, + autoShow: true, + alwaysOnTop: true + }; + + const win = await fin.Window.create(winOption); + const webWindow = win.getWebWindow(); + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const getIntentSelection = (webWindow as any).getIntentSelection; + + if (getIntentSelection) { + const selectedAppId = await getIntentSelection(); + return selectedAppId as { + appId: string; + intent: AppIntent; + }; + } + } catch { + console.error("App for intent not selected/launched.", launchOptions.intent); + } } - return intents.map((entry) => ({ - intent: entry.intent, - apps: entry.apps.map((app) => ({ - name: app.appId, - appId: app.appId, - title: app.title - })) - })); - } + /** + * Is the connection for the specific identity authorized. + * @param identity The identity of the connection to check. + * @param payload The optional payload. + * @returns True if the connection is authorized. + */ + public async isConnectionAuthorized(identity: OpenFin.Identity, payload?: unknown): Promise { + console.log( + "Interop connection being made by the following identity with payload:", + identity, + payload + ); + // perform connection validation checks here if required and return false if it shouldn't be allowed. + return true; + } - /** - * Get the information for the apps by intent. - * @param intentOptions The options for the intent. - * @param intentOptions.name The name of the intent. - * @param intentOptions.context The optional context for the intent. - * @param intentOptions.context.type The context type. - * @param clientIdentity The client identity to get the information from. - * @returns The information about the intents for the context. - */ - public async handleInfoForIntent( - intentOptions: { name: string; context?: { type: string } }, - clientIdentity: OpenFin.Identity - ): Promise<{ - intent: { name: string; displayName: string }; - apps: { name: string; appId: string; title: string }[]; - }> { - const result = await getIntent( - customSettings?.appProvider, - intentOptions.name, - intentOptions.context?.type - ); - if (!result) { - throw new Error(NO_APPS_FOUND); + /** + * Is the action authorized. + * @param action The action to test for being authorized. + * @param payload The payload to use in the test. + * @param identity The identity of the client being asked about the action. + * @returns True if the action is authorized. + */ + public async isActionAuthorized( + action: string, + payload: unknown, + identity: OpenFin.ClientIdentity + ): Promise { + console.log("Interop Broker is action authorized:", action, payload, identity); + // perform check here if you wish and return true/false accordingly + return true; } - return { - intent: result.intent, - apps: result.apps.map((app) => { - const appEntry = { + /** + * Get the information for the intents by context. + * @param context The context to get the information for. + * @param context.type The type of the context. + * @param clientIdentity The identity of the client to get the information from. + * @returns The information about the intents for the context. + */ + public async handleInfoForIntentsByContext( + context: { type: string }, + clientIdentity: OpenFin.Identity + ): Promise< + { + intent: { name: string; displayName: string }; + apps: { name: string; appId: string; title: string }[]; + }[] + > { + const intents = await getIntentsByContext(customSettings?.appProvider, context.type); + + if (intents.length === 0) { + throw new Error(NO_APPS_FOUND); + } + + return intents.map((entry) => ({ + intent: entry.intent, + apps: entry.apps.map((app) => ({ name: app.appId, appId: app.appId, title: app.title - }; - return appEntry; - }) - }; - } - - /** - * Handle and intent for the fired context. - * @param contextForIntent The context for the intent. - * @param contextForIntent.type Tht type of the context. - * @param contextForIntent.metadata The metadata for the context. - * @param contextForIntent.metadata.target The optional target for the context. - * @param clientIdentity The identity of the client to handle the intent. - * @returns The application details for the app that handled the intent. - */ - public async handleFiredIntentForContext( - contextForIntent: { type: string; metadata?: { target?: string } }, - clientIdentity: OpenFin.Identity - ): Promise< - | { - source: string; - version?: string; - } - | undefined - > { - const availableIntents = await getIntentsByContext(customSettings?.appProvider, contextForIntent.type); - if (availableIntents.length === 0) { - throw new Error(NO_APPS_FOUND); - } - const intent: OpenFin.Intent & { displayName?: string } = { - context: contextForIntent, - name: "", - displayName: undefined - }; - let targetApp: App | undefined; - let targetAppIntent; - let targetAppIntentCount = 0; - - if (contextForIntent.metadata?.target !== undefined) { - targetApp = await getApp(customSettings?.appProvider, contextForIntent.metadata?.target); + })) + })); } - if (targetApp !== undefined && Array.isArray(targetApp.intents)) { - for (const element of targetApp.intents) { - targetAppIntent = element; - if ( - Array.isArray(targetAppIntent.contexts) && - targetAppIntent.contexts.includes(contextForIntent.type) - ) { - targetAppIntentCount++; - } + /** + * Get the information for the apps by intent. + * @param intentOptions The options for the intent. + * @param intentOptions.name The name of the intent. + * @param intentOptions.context The optional context for the intent. + * @param intentOptions.context.type The context type. + * @param clientIdentity The client identity to get the information from. + * @returns The information about the intents for the context. + */ + public async handleInfoForIntent( + intentOptions: { name: string; context?: { type: string } }, + clientIdentity: OpenFin.Identity + ): Promise<{ + intent: { name: string; displayName: string }; + apps: { name: string; appId: string; title: string }[]; + }> { + const result = await getIntent( + customSettings?.appProvider, + intentOptions.name, + intentOptions.context?.type + ); + if (!result) { + throw new Error(NO_APPS_FOUND); } + + return { + intent: result.intent, + apps: result.apps.map((app) => { + const appEntry = { + name: app.appId, + appId: app.appId, + title: app.title + }; + return appEntry; + }) + }; } - if (targetApp !== undefined && targetAppIntent !== undefined && targetAppIntentCount === 1) { - // a preferred name for an app was given with the context object - // the app existed and it supported the context type and there was only one intent that supported - // that context type. Launch the app with that intent otherwise present the user with a list of - // everything that supports that context type - intent.name = targetAppIntent.name; - intent.displayName = targetAppIntent.name; - const intentResolver = await this.launchAppWithIntent(targetApp, intent); - if (!intentResolver) { + /** + * Handle and intent for the fired context. + * @param contextForIntent The context for the intent. + * @param contextForIntent.type Tht type of the context. + * @param contextForIntent.metadata The metadata for the context. + * @param contextForIntent.metadata.target The optional target for the context. + * @param clientIdentity The identity of the client to handle the intent. + * @returns The application details for the app that handled the intent. + */ + public async handleFiredIntentForContext( + contextForIntent: { type: string; metadata?: { target?: string } }, + clientIdentity: OpenFin.Identity + ): Promise< + | { + source: string; + version?: string; + } + | undefined + > { + const availableIntents = await getIntentsByContext( + customSettings?.appProvider, + contextForIntent.type + ); + if (availableIntents.length === 0) { throw new Error(NO_APPS_FOUND); } - return intentResolver; - } + const intent: OpenFin.Intent & { displayName?: string } = { + context: contextForIntent, + name: "", + displayName: undefined + }; + let targetApp: App | undefined; + let targetAppIntent; + let targetAppIntentCount = 0; + + if (contextForIntent.metadata?.target !== undefined) { + targetApp = await getApp(customSettings?.appProvider, contextForIntent.metadata?.target); + } - if (availableIntents.length === 1) { - intent.name = availableIntents[0].intent.name; - intent.displayName = availableIntents[0].intent.name; - if (availableIntents[0].apps.length === 1) { - const intentResolver = await this.launchAppWithIntent(availableIntents[0].apps[0], intent); + if (targetApp !== undefined && Array.isArray(targetApp.intents)) { + for (const element of targetApp.intents) { + targetAppIntent = element; + if ( + Array.isArray(targetAppIntent.contexts) && + targetAppIntent.contexts.includes(contextForIntent.type) + ) { + targetAppIntentCount++; + } + } + } + + if (targetApp !== undefined && targetAppIntent !== undefined && targetAppIntentCount === 1) { + // a preferred name for an app was given with the context object + // the app existed and it supported the context type and there was only one intent that supported + // that context type. Launch the app with that intent otherwise present the user with a list of + // everything that supports that context type + intent.name = targetAppIntent.name; + intent.displayName = targetAppIntent.name; + const intentResolver = await this.launchAppWithIntent(targetApp, intent); if (!intentResolver) { throw new Error(NO_APPS_FOUND); } return intentResolver; } - if (availableIntents[0].apps.length > 1) { + + if (availableIntents.length === 1) { + intent.name = availableIntents[0].intent.name; + intent.displayName = availableIntents[0].intent.name; + if (availableIntents[0].apps.length === 1) { + const intentResolver = await this.launchAppWithIntent(availableIntents[0].apps[0], intent); + if (!intentResolver) { + throw new Error(NO_APPS_FOUND); + } + return intentResolver; + } + if (availableIntents[0].apps.length > 1) { + try { + const userSelection = await this.launchAppPicker({ + apps: availableIntents[0].apps, + intent + }); + + if (userSelection) { + const selectedApp = availableIntents[0].apps.find( + (entry) => entry.appId === userSelection.appId && entry.appId !== undefined + ); + if (selectedApp) { + const intentResolver = await this.launchAppWithIntent(selectedApp, intent); + if (!intentResolver) { + throw new Error(NO_APPS_FOUND); + } + return intentResolver; + } + } + console.error("We were returned a non existent appId to launch with the intent."); + throw new Error(NO_APPS_FOUND); + } catch { + console.error("App for intent by context not selected/launched.", intent); + throw new Error(RESOLVER_TIMEOUT); + } + } + } else { try { const userSelection = await this.launchAppPicker({ - apps: availableIntents[0].apps, - intent + intent, + intents: availableIntents }); if (userSelection) { - const selectedApp = availableIntents[0].apps.find( + const selectedIntent = availableIntents.find( + (entry) => entry.intent.name === userSelection.intent.name + ); + + if (selectedIntent === undefined) { + console.error( + "The user selected an intent but it's name doesn't match the available intents.", + userSelection + ); + throw new Error(NO_APPS_FOUND); + } + const selectedApp = selectedIntent.apps.find( (entry) => entry.appId === userSelection.appId && entry.appId !== undefined ); if (selectedApp) { + intent.displayName = userSelection.intent.displayName; + intent.name = userSelection.intent?.name ?? ""; const intentResolver = await this.launchAppWithIntent(selectedApp, intent); if (!intentResolver) { throw new Error(NO_APPS_FOUND); @@ -378,132 +423,91 @@ export function createInteropOverride( throw new Error(RESOLVER_TIMEOUT); } } - } else { - try { - const userSelection = await this.launchAppPicker({ - intent, - intents: availableIntents - }); - - if (userSelection) { - const selectedIntent = availableIntents.find( - (entry) => entry.intent.name === userSelection.intent.name - ); + } - if (selectedIntent === undefined) { - console.error( - "The user selected an intent but it's name doesn't match the available intents.", - userSelection + /** + * Handle an intent that was fired. + * @param intent The intent that was fired. + * @returns The source and version of the application that was opened. + */ + public async handleFiredIntent(intent: OpenFin.Intent): Promise< + | { + source: string; + version?: string; + } + | undefined + > { + console.log("Received request for a raised intent:", intent); + let intentApps = await getAppsByIntent(customSettings?.appProvider, intent.name); + let targetApp: App | undefined; + + if (intent.metadata?.target) { + targetApp = await getApp(customSettings?.appProvider, intent.metadata.target as string); + if (targetApp === undefined) { + // check to see if you have been passed a specific identity for a view that should be targeted instead of an app + const targetIdentity = await this.getTargetIdentity(intent.metadata?.target as string); + if (targetIdentity) { + console.log( + "We were passed a view identity instead of an app entry when raising/firing an intent. We will fire the intent at that as it exists and no app entry exists with that name.:", + targetIdentity, + intent ); - throw new Error(NO_APPS_FOUND); - } - const selectedApp = selectedIntent.apps.find( - (entry) => entry.appId === userSelection.appId && entry.appId !== undefined - ); - if (selectedApp) { - intent.displayName = userSelection.intent.displayName; - intent.name = userSelection.intent?.name ?? ""; - const intentResolver = await this.launchAppWithIntent(selectedApp, intent); - if (!intentResolver) { - throw new Error(NO_APPS_FOUND); - } - return intentResolver; + await super.setIntentTarget(intent, targetIdentity); + return { + source: targetIdentity.name + }; } } - console.error("We were returned a non existent appId to launch with the intent."); - throw new Error(NO_APPS_FOUND); - } catch { - console.error("App for intent by context not selected/launched.", intent); - throw new Error(RESOLVER_TIMEOUT); - } - } - } - - /** - * Handle an intent that was fired. - * @param intent The intent that was fired. - * @returns The source and version of the application that was opened. - */ - public async handleFiredIntent(intent: OpenFin.Intent): Promise< - | { - source: string; - version?: string; - } - | undefined - > { - console.log("Received request for a raised intent:", intent); - let intentApps = await getAppsByIntent(customSettings?.appProvider, intent.name); - let targetApp: App | undefined; - - if (intent.metadata?.target) { - targetApp = await getApp(customSettings?.appProvider, intent.metadata.target as string); - if (targetApp === undefined) { - // check to see if you have been passed a specific identity for a view that should be targeted instead of an app - const targetIdentity = await this.getTargetIdentity(intent.metadata?.target as string); - if (targetIdentity) { - console.log( - "We were passed a view identity instead of an app entry when raising/firing an intent. We will fire the intent at that as it exists and no app entry exists with that name.:", - targetIdentity, - intent - ); - await super.setIntentTarget(intent, targetIdentity); - return { - source: targetIdentity.name - }; - } } - } - - if (intentApps.length === 0) { - console.log("No apps support this intent."); - throw new Error(NO_APPS_FOUND); - } - - if (targetApp !== undefined && intentApps.includes(targetApp)) { - console.log("Assigning selected application with intent.", intent); - intentApps = [targetApp]; - } - if (intentApps.length === 1) { - // handle single entry - const intentResolver = await this.launchAppWithIntent(intentApps[0], intent); - if (!intentResolver) { + if (intentApps.length === 0) { + console.log("No apps support this intent."); throw new Error(NO_APPS_FOUND); } - return intentResolver; - } - // show menu - // launch a new window and optionally pass the available intents as customData.apps as part of the window options - // the window can then use raiseIntent against a specific app (the selected one). This is a very basic example. - try { - const userSelection = await this.launchAppPicker({ - apps: intentApps, - intent - }); - if (intentApps === undefined) { - console.warn("We should have a list of apps to search from."); - intentApps = []; + + if (targetApp !== undefined && intentApps.includes(targetApp)) { + console.log("Assigning selected application with intent.", intent); + intentApps = [targetApp]; } - const selectedApp = intentApps.find( - (entry) => entry.appId === userSelection?.appId && entry.appId !== undefined - ); - if (selectedApp) { - const intentResolver = await this.launchAppWithIntent(selectedApp, intent); + + if (intentApps.length === 1) { + // handle single entry + const intentResolver = await this.launchAppWithIntent(intentApps[0], intent); if (!intentResolver) { throw new Error(NO_APPS_FOUND); } return intentResolver; } - console.error("We were returned a non existent appId to launch with the intent."); - throw new Error(NO_APPS_FOUND); - } catch { - console.error("App for intent not selected/launched.", intent); - throw new Error(RESOLVER_TIMEOUT); + // show menu + // launch a new window and optionally pass the available intents as customData.apps as part of the window options + // the window can then use raiseIntent against a specific app (the selected one). This is a very basic example. + try { + const userSelection = await this.launchAppPicker({ + apps: intentApps, + intent + }); + if (intentApps === undefined) { + console.warn("We should have a list of apps to search from."); + intentApps = []; + } + const selectedApp = intentApps.find( + (entry) => entry.appId === userSelection?.appId && entry.appId !== undefined + ); + if (selectedApp) { + const intentResolver = await this.launchAppWithIntent(selectedApp, intent); + if (!intentResolver) { + throw new Error(NO_APPS_FOUND); + } + return intentResolver; + } + console.error("We were returned a non existent appId to launch with the intent."); + throw new Error(NO_APPS_FOUND); + } catch { + console.error("App for intent not selected/launched.", intent); + throw new Error(RESOLVER_TIMEOUT); + } } - } - } - - return new InteropOverride(); + }; } /** diff --git a/how-to/support-context-and-intents/client/src/provider.ts b/how-to/support-context-and-intents/client/src/provider.ts index bc129fb72c..61ea48f996 100644 --- a/how-to/support-context-and-intents/client/src/provider.ts +++ b/how-to/support-context-and-intents/client/src/provider.ts @@ -1,3 +1,4 @@ +import { cloudInteropOverride } from "@openfin/cloud-interop"; import type OpenFin from "@openfin/core"; import { CLITemplate, Home, type App, type HomeSearchListenerRequest } from "@openfin/workspace"; import { init } from "@openfin/workspace-platform"; @@ -28,6 +29,18 @@ window.addEventListener("DOMContentLoaded", async () => { */ async function initializeWorkspacePlatform(customSettings: CustomSettings): Promise { console.log("Initializing workspace platform"); + + const defaultBroker = createInteropOverride(customSettings); + const interopOverride: OpenFin.ConstructorOverride[] = [defaultBroker]; + + if (customSettings?.cloudInteropProvider?.enabled === true) { + console.log("Initializing the cloud interop override"); + const initializedCloudInteropOverride = (await cloudInteropOverride( + customSettings.cloudInteropProvider + )) as unknown as OpenFin.ConstructorOverride; + interopOverride.push(initializedCloudInteropOverride); + } + await init({ browser: { defaultWindowOptions: { @@ -50,7 +63,7 @@ async function initializeWorkspacePlatform(customSettings: CustomSettings): Prom } ], // Use an override for the platform interop to handle the context and intents - interopOverride: (interopBroker) => createInteropOverride(customSettings, interopBroker) + interopOverride }); } diff --git a/how-to/support-context-and-intents/client/src/shapes.ts b/how-to/support-context-and-intents/client/src/shapes.ts index 4f6dbe644e..73e9201bf0 100644 --- a/how-to/support-context-and-intents/client/src/shapes.ts +++ b/how-to/support-context-and-intents/client/src/shapes.ts @@ -1,3 +1,5 @@ +import type { ConnectParams } from "@openfin/cloud-interop/dist/interfaces"; + /** * The custom settings stored in the manifest.fin.json. */ @@ -11,6 +13,11 @@ export interface CustomSettings { * Provider for platform configuration. */ platformProvider?: PlatformProviderSettings; + + /** + * Provider for cloud interop configuration. + */ + cloudInteropProvider?: CloudInteropProviderSettings; } /** @@ -46,3 +53,18 @@ export interface AppProviderSettings { */ cacheDurationInMinutes?: number; } + +/** + * Settings for the cloud interop provider. + */ +export interface CloudInteropProviderSettings extends ConnectParams { + /** + * Is the cloud interop provider enabled + */ + enabled: boolean; + + /** + * The connect parameters for the cloud interop provider. + */ + connectParams: ConnectParams; +} diff --git a/how-to/support-context-and-intents/package.json b/how-to/support-context-and-intents/package.json index a8efa800e8..ba4a934a0c 100644 --- a/how-to/support-context-and-intents/package.json +++ b/how-to/support-context-and-intents/package.json @@ -21,6 +21,7 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { + "@openfin/cloud-interop": "^0.4.0", "@openfin/workspace": "18.0.7", "@openfin/workspace-platform": "18.0.7" }, diff --git a/how-to/support-context-and-intents/public/manifest.fin.json b/how-to/support-context-and-intents/public/manifest.fin.json index c6fba48c61..c96c310e23 100644 --- a/how-to/support-context-and-intents/public/manifest.fin.json +++ b/how-to/support-context-and-intents/public/manifest.fin.json @@ -69,6 +69,18 @@ "window", "inline-appasset" ] + }, + "cloudInteropProvider": { + "enabled": false, + "connectParams": { + "url": "", + "userId": "", + "password": "", + "platformId": "", + "sourceId": "", + "sourceDisplayName": "", + "realm": "default" + } } } } diff --git a/how-to/support-context-and-intents/public/second.manifest.fin.json b/how-to/support-context-and-intents/public/second.manifest.fin.json index 61551e431c..da3c2e59ac 100644 --- a/how-to/support-context-and-intents/public/second.manifest.fin.json +++ b/how-to/support-context-and-intents/public/second.manifest.fin.json @@ -54,6 +54,18 @@ ], "cacheDurationInMinutes": 1, "manifestTypes": ["view", "snapshot", "manifest", "external", "inline-view"] + }, + "cloudInteropProvider": { + "enabled": false, + "connectParams": { + "url": "", + "userId": "", + "password": "", + "platformId": "", + "sourceId": "", + "sourceDisplayName": "", + "realm": "default" + } } } } diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index bb21dc875c..fe37735b1b 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,7 @@ ## v18.0.0 +- Added a cloud interop override module so that you can easily test out OpenFin's cloud interop offering. See [How To Add Cloud Interop To Your Interop Broker](./docs/how-to-add-cloud-interop-to-your-interop-broker.md). - Broke up the build process to make it easier to just build your modules. `npm run build` still builds everything and `npm run build-client` still builds all client related code but now if you change framework files you can use `npm run build-framework`, or if you modify our starter modules you can use `npm run build-starter-modules` or if you just want to build your modules (that are listed in webpack.config.js) then you can use `npm run build-client-modules`. This will let you have a much faster build. - npm run launch now launches via the fins link when running on mac instead of the node adapter. - We now capture the window state when saving a page and apply it if a page is being launched into a new window. diff --git a/how-to/workspace-platform-starter/README.md b/how-to/workspace-platform-starter/README.md index f9f32c05a8..bd30963e5c 100644 --- a/how-to/workspace-platform-starter/README.md +++ b/how-to/workspace-platform-starter/README.md @@ -50,6 +50,7 @@ The information below provides information related to configuring and using the | [Configure Your Platform's Intent Support](./docs/how-to-configure-fdc3-intents.md) | How to configure your platform's Intent support. What UI to present to the user if they have to make an application selection after an intent is raised. | | [Add FDC3 Open Support To Your App](./docs/how-to-add-open-support-to-your-app.md) | If you have added one or more apps to your platform you may wish to have them easily opened using fdc3.open with the option of passing context. | | [Customize Your Interop Broker](./docs/how-to-customize-your-interop-broker.md) | You now have control over the interop broker beyond settings. You can use the default implementation, replace it or extend it without having to touch the main codebase. | +| [Add Cloud Interop To Your Interop Broker](./docs/how-to-add-cloud-interop-to-your-interop-broker.md) | OpenFin supports sharing context across platforms and devices using our cloud offering. You can now easily add your cloud interop settings to our cloud interop module and simply enable it to see it in action. | | [Use Notifications](./docs/how-to-use-notifications.md) | Your platform or you app(s) may want to get the end user's attention and capture a response. | | [Customize The Bootstrapping Process](./docs/how-to-customize-the-bootstrapping-process.md) | This section covers how you can manage what gets registered and what background behavior do you want to run (e.g. do you want to register all of the Workspace Components or just some of them?). | | [Theme Your Platform](./docs/how-to-theme-your-platform.md) | The workspace components support a dark theme out of the box. This section covers how to define the theme and logo for your platform and some tools that make that process easier. | diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/index.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/index.ts new file mode 100644 index 0000000000..e4bfc45c20 --- /dev/null +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/index.ts @@ -0,0 +1,9 @@ +import type { ModuleImplementation, ModuleTypes } from "workspace-platform-starter/shapes/module-shapes"; +import { OpenFinCloudInterop } from "./interop-override"; + +/** + * Define the entry points for the module. + */ +export const entryPoints: { [type in ModuleTypes]?: ModuleImplementation } = { + interopOverride: new OpenFinCloudInterop() +}; diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/interop-override.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/interop-override.ts new file mode 100644 index 0000000000..602bc38c26 --- /dev/null +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/interop-override.ts @@ -0,0 +1,97 @@ +// eslint-disable-next-line max-classes-per-file +import { cloudInteropOverride } from "@openfin/cloud-interop"; +import type OpenFin from "@openfin/core"; +import type { + PlatformInteropOverride, + PlatformInteropOverrideOptions +} from "workspace-platform-starter/shapes/interopbroker-shapes"; +import type { Logger, LoggerCreator } from "workspace-platform-starter/shapes/logger-shapes"; +import type { ModuleDefinition, ModuleHelpers } from "workspace-platform-starter/shapes/module-shapes"; +import { isStringValue } from "workspace-platform-starter/utils"; +import type { OpenFinCloudInteropOptions } from "./shapes"; + +/** + * Implementation for the openfin cloud interop interop override. + */ +export class OpenFinCloudInterop implements PlatformInteropOverride { + /** + * The module definition including settings. + * @internal + */ + private _definition: ModuleDefinition | undefined; + + /** + * The logger for displaying information from the module. + * @internal + */ + private _logger?: Logger; + + /** + * Helper methods for the module. + * @internal + */ + private _helpers: ModuleHelpers | undefined; + + /** + * Initialize the module. + * @param definition The definition of the module from configuration include custom options. + * @param loggerCreator For logging entries. + * @param helpers Helper methods for the module to interact with the application core. + * @returns Nothing. + */ + public async initialize( + definition: ModuleDefinition, + loggerCreator: LoggerCreator, + helpers: ModuleHelpers + ): Promise { + this._definition = definition; + const loggerName = definition.data?.loggerName ?? "OpenfinCloudInterop"; + this._logger = loggerCreator(loggerName); + this._helpers = helpers; + + this._logger.info("Initializing"); + } + + /** + * Close down any resources being used by the module. + * @returns Nothing. + */ + public async closedown(): Promise { + this._logger?.info("Closedown"); + } + + /** + * Get the override constructor for the interop broker (useful if you wish this implementation to be layered with other implementations and passed to the platform's initialization object as part of an array). + * @param options The options for the interop broker defined as part of the platform. + * @returns The override constructor to be used in an array. + */ + public async getConstructorOverride( + options: PlatformInteropOverrideOptions + ): Promise> { + if ( + !isStringValue(this._definition?.data?.userId) || + !isStringValue(this._definition?.data?.password) || + !isStringValue(this._definition?.data?.platformId) || + !isStringValue(this._definition?.data?.url) + ) { + const errorMessage = `The data setting for the interopOverride module ${this._definition?.id} is missing one of the following settings: userId, password, platformId, url.`; + this._logger?.error(errorMessage); + throw new Error(errorMessage); + } + const cloudConfig: OpenFinCloudInteropOptions = { + userId: this._definition?.data?.userId, + password: this._definition?.data?.password, + platformId: this._definition?.data?.platformId, + url: this._definition?.data?.url, + realm: this._definition?.data?.realm, + sourceDisplayName: this._definition.data.sourceDisplayName, + sourceId: isStringValue(this._definition?.data?.sourceId) + ? this._definition?.data?.sourceId + : fin.me.identity.uuid + }; + const initializedCloudInteropOverride = (await cloudInteropOverride( + cloudConfig + )) as unknown as OpenFin.ConstructorOverride; + return initializedCloudInteropOverride; + } +} diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts new file mode 100644 index 0000000000..bdbd803d7f --- /dev/null +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts @@ -0,0 +1,10 @@ +import type { ConnectParams } from "@openfin/cloud-interop/dist/interfaces"; +/** + * Options for the openfin cloud interop interop override. These settings can be provided by OpenFin and user credentials should not be checked in. + */ +export interface OpenFinCloudInteropOptions extends ConnectParams { + /** + * Optional name for the logger of this module. + */ + loggerName?: string; +} diff --git a/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js b/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js index a5cbe74ce9..23877c9a1a 100644 --- a/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js +++ b/how-to/workspace-platform-starter/client/starter-modules.webpack.config.js @@ -716,6 +716,28 @@ const configs = [ experiments: { outputModule: true } + }, + { + entry: './client/src/modules/interop-override/openfin-cloud-interop/index.ts', + devtool: 'source-map', + module: { + rules: [loaderRule] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'], + alias + }, + externals: { fin: 'fin' }, + output: { + filename: 'openfin-cloud-interop.bundle.js', + library: { + type: 'module' + }, + path: path.resolve(__dirname, '..', 'public', 'js', 'modules', 'interop-override') + }, + experiments: { + outputModule: true + } } ]; diff --git a/how-to/workspace-platform-starter/docs/how-to-add-cloud-interop-to-your-interop-broker.md b/how-to/workspace-platform-starter/docs/how-to-add-cloud-interop-to-your-interop-broker.md new file mode 100644 index 0000000000..f535e1aa6b --- /dev/null +++ b/how-to/workspace-platform-starter/docs/how-to-add-cloud-interop-to-your-interop-broker.md @@ -0,0 +1,61 @@ +> **_:information_source: OpenFin Workspace:_** [OpenFin Workspace](https://www.openfin.co/workspace/) is a commercial product and this repo is for evaluation purposes (See [LICENSE.MD](../LICENSE.MD)). Use of the OpenFin Container and OpenFin Workspace components is only granted pursuant to a license from OpenFin (see [manifest](../public/manifest.fin.json)). Please [**contact us**](https://www.openfin.co/workspace/poc/) if you would like to request a developer evaluation key or to discuss a production license. + +[<- Back to Table Of Contents](../README.md) + +# How To Add Cloud Interop To Your Interop Broker + +Workspace Platform Starter includes a default interop broker override that includes support for FDC3 2.0 and intents as well as context. It has been built to support interop with support for the Platform Apps format used by Workspace Platform Starter (directories can still use the FDC3 1.2 & 2.0 format as these are mapped internally to the PlatformApp format). + +OpenFin Workspace 18.0+ lets you specify an array of interop overrides that can be layered on top of each other so that different overrides can add custom behavior. + +Workspace Platform Starter 18.0 supports this ability by adding module support to platformProvider.interop and this support lets us easily offer optional cloud interop support through a module. + +## Cloud Interop interop override is available as a module + +Our default interop broker is now available as a module and you can easily generate your own interop broker override: See [How To Customize Your Interop Broker](./how-to-customize-your-interop-broker.md). + +To make it easy to test OpenFin's cloud interop support we have generated an [openfin-cloud-interop](../client/src/modules/interop-override/openfin-cloud-interop/interop-override.ts) that imports and configures the [@openfin/cloud-interop](https://www.npmjs.com/package/@openfin/cloud-interop) npm module. + +You can see this in platformProvider.interop section of the [manifest.fin.json](../public/manifest.fin.json) and [settings.json](../public/settings.json) files (an example is shown below). + +### Settings + +The settings are in a manifest and static settings.json file but this type of information is best served from a service after the user has authenticated. Do not check in your credentials. Please contact your OpenFin Sales Account Manager to get your cloud credentials. + +```json +"platformProvider": { + ... + "interop": { + "modules": [ + { + "id": "openfin-cloud-interop", + "icon": "http://localhost:8080/favicon.ico", + "title": "OpenFin Cloud Interop", + "description": "OpenFin Cloud Interop", + "enabled": false, + "url": "http://localhost:8080/js/modules/interop-override/openfin-cloud-interop.bundle.js", + "data": { + "userId": "", + "password": "", + "platformId": "", + "url": "", + "sourceDisplayName":"", + "sourceId": "" + } + } + ] + } +} +``` + +Once you have cloud interop enabled you will be able to share context across user channels (green, yellow, red etc) across devices and platforms. + +## Other Examples + +We have also updated our _support-context-and-intents_ how-to example to optionally support cloud interop. This is a much simpler example and doesn't use the module pattern which is useful if you have your own workspace platform and you just want to see how to use the [@openfin/cloud-interop](https://www.npmjs.com/package/@openfin/cloud-interop) npm module. + +## Source Reference + +- [OpenFin Cloud Interop Override Module](../client/src/modules/interop-override/openfin-cloud-interop/) + +[<- Back to Table Of Contents](../README.md) diff --git a/how-to/workspace-platform-starter/docs/how-to-customize-your-interop-broker.md b/how-to/workspace-platform-starter/docs/how-to-customize-your-interop-broker.md index 4c428bd9e4..9b6bebe5fc 100644 --- a/how-to/workspace-platform-starter/docs/how-to-customize-your-interop-broker.md +++ b/how-to/workspace-platform-starter/docs/how-to-customize-your-interop-broker.md @@ -4,11 +4,11 @@ # How To Customize Your Interop Broker -Workspace Platform Starter includes a default interop broker override that includes support for FDC3 2.0 and intents as well as context. If has been built to support interop with support for the Platform Apps format used by Workspace Platform Starter (directories can still use the FDC3 1.2 & 2.0 format as these are mapped internally to the PlatformApp format). +Workspace Platform Starter includes a default interop broker override that includes support for FDC3 2.0 and intents as well as context. It has been built to support interop with support for the Platform Apps format used by Workspace Platform Starter (directories can still use the FDC3 1.2 & 2.0 format as these are mapped internally to the PlatformApp format). -OpenFin Workspace 17.4+ lets you specify an array of interop overrides that can be layered on top of each other so that different overrides can add custom behavior. +OpenFin Workspace 18.0+ lets you specify an array of interop overrides that can be layered on top of each other so that different overrides can add custom behavior. -Workspace Platform Starter 17.4 supports this ability by adding module support to platformProvider.interop. +Workspace Platform Starter 18.0 supports this ability by adding module support to platformProvider.interop. ## default workspace platform interop override is now a module @@ -22,7 +22,7 @@ If you do not include our default implementation in the modules array then you w ## modules -The ability to specify an [array of interop override constructors](https://cdn.openfin.co/docs/javascript/stable/interfaces/OpenFin.InitPlatformOptions.html#interopOverride) was introduced in the v33 release of the OpenFin runtime and is now exposed to your workspace platform in version 17.4 of workspace. +The ability to specify an [array of interop override constructors](https://cdn.openfin.co/docs/javascript/stable/interfaces/OpenFin.InitPlatformOptions.html#interopOverride) was introduced in the v33 release of the OpenFin runtime and is now exposed to your workspace platform in version 18.0 of workspace. These are interop modules that provide custom interop broker logic. If there are more than one then they will extend each other (the earlier entries will act as the base for subsequent entries). If you wish to use the Workspace Platform Starter interop override module as a base for your interop overrides so it should be at the start of the modules array. Here is an extract from [manifest.fin.json](../public/manifest.fin.json): diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index d1bb08df6b..dc15d94e8b 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -59,6 +59,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", + "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.2.0", "@openfin/workspace": "18.0.7", diff --git a/how-to/workspace-platform-starter/public/manifest.fin.json b/how-to/workspace-platform-starter/public/manifest.fin.json index 2f368d3694..7ef93e85d8 100644 --- a/how-to/workspace-platform-starter/public/manifest.fin.json +++ b/how-to/workspace-platform-starter/public/manifest.fin.json @@ -176,6 +176,22 @@ "data": { "loggerName": "WpsInteropOverride" } + }, + { + "id": "openfin-cloud-interop", + "icon": "http://localhost:8080/favicon.ico", + "title": "OpenFin Cloud Interop", + "description": "OpenFin Cloud Interop", + "enabled": false, + "url": "http://localhost:8080/js/modules/interop-override/openfin-cloud-interop.bundle.js", + "data": { + "userId": "", + "password": "", + "platformId": "", + "url": "", + "sourceDisplayName": "", + "sourceId": "" + } } ] } diff --git a/how-to/workspace-platform-starter/public/settings.json b/how-to/workspace-platform-starter/public/settings.json index 1453f8181b..954b8700a6 100644 --- a/how-to/workspace-platform-starter/public/settings.json +++ b/how-to/workspace-platform-starter/public/settings.json @@ -106,6 +106,22 @@ "data": { "loggerName": "WpsInteropOverride" } + }, + { + "id": "openfin-cloud-interop", + "icon": "http://localhost:8080/favicon.ico", + "title": "OpenFin Cloud Interop", + "description": "OpenFin Cloud Interop", + "enabled": false, + "url": "http://localhost:8080/js/modules/interop-override/openfin-cloud-interop.bundle.js", + "data": { + "userId": "", + "password": "", + "platformId": "", + "url": "", + "sourceDisplayName": "", + "sourceId": "" + } } ] } diff --git a/package-lock.json b/package-lock.json index d8fbd5a6bf..38214f0f14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -955,6 +955,7 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { + "@openfin/cloud-interop": "^0.4.0", "@openfin/workspace": "18.0.7", "@openfin/workspace-platform": "18.0.7" }, @@ -1108,6 +1109,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", + "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.2.0", "@openfin/workspace": "18.0.7", @@ -3641,6 +3643,51 @@ "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.7.tgz", "integrity": "sha512-YtNKYPk2daq4ByS7WccRiYxTi80/GXTPObYmbNiS9OXA4+Er/JwCB77CkVCL+TQ8z/LWzPulR+w4PParLTXdKA==" }, + "node_modules/@openfin/cloud-interop": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.4.0.tgz", + "integrity": "sha512-rXifPr8RjJC8SO/YXp0RnWaXJdEbRyYXg1LEnmsNaPp1cL6r088LKBrkMTKYkRDZj9Z9CDieWxbbKpeAJ6+fBg==", + "dependencies": { + "@openfin/core": "^37.80.39", + "axios": "^1.6.2", + "mqtt": "^5.3.1" + } + }, + "node_modules/@openfin/cloud-interop/node_modules/@openfin/core": { + "version": "37.81.17", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.17.tgz", + "integrity": "sha512-EFpXM/420GPPgFoOs5Fh9GRo5by1wOt35DKC3Rd12pZwCNeZTHpkgDHljQK/sTfbGzJqvZ/DpIJjKJRkwHMmig==", + "dependencies": { + "@types/node": "^16.0.0", + "lodash": "^4.17.21", + "ws": "^7.3.0" + } + }, + "node_modules/@openfin/cloud-interop/node_modules/@types/node": { + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" + }, + "node_modules/@openfin/cloud-interop/node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@openfin/core": { "version": "36.80.8", "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.8.tgz", @@ -5085,6 +5132,20 @@ "redux": "^4.0.0" } }, + "node_modules/@types/readable-stream": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.11.tgz", + "integrity": "sha512-R3eUMUTTKoIoaz7UpYLxvZCrOmCRPRbAmoDDHKcimTEySltaJhF8hLzj4+EzyDifiX5eK6oDQGSfmNnXjxZzYQ==", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/@types/readable-stream/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/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", @@ -5141,7 +5202,6 @@ "version": "8.5.10", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, "dependencies": { "@types/node": "*" } @@ -7909,8 +7969,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/automation-testing-register-with-home": { "resolved": "how-to/automation-testing/register-with-home-ts", @@ -7989,7 +8048,6 @@ "version": "1.6.8", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dev": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -9102,7 +9160,6 @@ "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" }, @@ -9128,6 +9185,11 @@ "node": ">= 12.0.0" } }, + "node_modules/commist": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz", + "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==" + }, "node_modules/compare-versions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", @@ -9236,6 +9298,33 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/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==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -10016,7 +10105,6 @@ "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" } @@ -11609,6 +11697,18 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-unique-numbers": { + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-8.0.13.tgz", + "integrity": "sha512-7OnTFAVPefgw2eBJ1xj2PGGR9FwYzSUso9decayHgCDX4sJkHLdcsYTytTg+tYv+wKF3U8gJuSBz2jJpQV4u/g==", + "dependencies": { + "@babel/runtime": "^7.23.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.1.0" + } + }, "node_modules/fast-xml-parser": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", @@ -12196,7 +12296,6 @@ "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": [ { "type": "individual", @@ -12252,7 +12351,6 @@ "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", @@ -13041,6 +13139,11 @@ "he": "bin/he" } }, + "node_modules/help-me": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", + "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" + }, "node_modules/hey-listen": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", @@ -15006,6 +15109,15 @@ "dev": true, "peer": true }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -16054,7 +16166,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16254,6 +16365,197 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/mqtt": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.2.tgz", + "integrity": "sha512-dlKxINBrrorgMp1A5UHQVf5GAkn1m/dY12W2Sp6LAY794RxQ0OPo0Q9N2S3qrNRjjC1WETA/9oYR6yadhR3siw==", + "dependencies": { + "@types/readable-stream": "^4.0.5", + "@types/ws": "^8.5.9", + "commist": "^3.2.0", + "concat-stream": "^2.0.0", + "debug": "^4.3.4", + "help-me": "^5.0.0", + "lru-cache": "^10.0.1", + "minimist": "^1.2.8", + "mqtt": "^5.2.0", + "mqtt-packet": "^9.0.0", + "number-allocator": "^1.0.14", + "readable-stream": "^4.4.2", + "reinterval": "^1.1.0", + "rfdc": "^1.3.0", + "split2": "^4.2.0", + "worker-timers": "^7.1.4", + "ws": "^8.14.2" + }, + "bin": { + "mqtt": "build/bin/mqtt.js", + "mqtt_pub": "build/bin/pub.js", + "mqtt_sub": "build/bin/sub.js" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/mqtt-packet": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.0.tgz", + "integrity": "sha512-8v+HkX+fwbodsWAZIZTI074XIoxVBOmPeggQuDFCGg1SqNcC+uoRMWu7J6QlJPqIUIJXmjNYYHxBBLr1Y/Df4w==", + "dependencies": { + "bl": "^6.0.8", + "debug": "^4.3.4", + "process-nextick-args": "^2.0.1" + } + }, + "node_modules/mqtt-packet/node_modules/bl": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.12.tgz", + "integrity": "sha512-EnEYHilP93oaOa2MnmNEjAcovPS3JlQZOyzGXi3EyEpPhm9qWvdDp7BmAVEVusGzp8LlwQK56Av+OkDoRjzE0w==", + "dependencies": { + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "inherits": "^2.0.4", + "readable-stream": "^4.2.0" + } + }, + "node_modules/mqtt-packet/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/mqtt-packet/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/mqtt-packet/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/mqtt-packet/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/mqtt/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/mqtt/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/mqtt/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==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/mqtt/node_modules/readable-stream": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/mqtt/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -16541,6 +16843,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/number-allocator": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", + "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", + "dependencies": { + "debug": "^4.3.1", + "js-sdsl": "4.3.0" + } + }, "node_modules/nwsapi": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", @@ -17697,8 +18008,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -17814,8 +18124,7 @@ "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/ps-list": { "version": "7.2.0", @@ -18774,6 +19083,11 @@ "jsesc": "bin/jsesc" } }, + "node_modules/reinterval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", + "integrity": "sha512-QIRet3SYrGp0HUHO88jVskiG6seqUGC5iAG7AwI/BV4ypGcuqk9Du6YQBUOUqm9c8pw1eyLoIaONifRua1lsEQ==" + }, "node_modules/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", @@ -18959,6 +19273,11 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.1.tgz", + "integrity": "sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==" + }, "node_modules/rgb2hex": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.5.tgz", @@ -19599,7 +19918,6 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "dev": true, "engines": { "node": ">= 10.x" } @@ -19666,7 +19984,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -19674,8 +19991,7 @@ "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==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/string-length": { "version": "4.0.2", @@ -20872,6 +21188,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/typescript": { "version": "5.4.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", @@ -21151,8 +21472,7 @@ "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==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -21760,6 +22080,37 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "node_modules/worker-timers": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.7.tgz", + "integrity": "sha512-Dr4La61d94SjOA8P57h2LN8W3MXOVe/m1P7jER8cmuIy+JaDMqPttSwo6QRJFSK6YnG9cD6SU7J8m7CVlu8jlw==", + "dependencies": { + "@babel/runtime": "^7.24.4", + "tslib": "^2.6.2", + "worker-timers-broker": "^6.1.7", + "worker-timers-worker": "^7.0.70" + } + }, + "node_modules/worker-timers-broker": { + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-6.1.7.tgz", + "integrity": "sha512-8hb4lSMAijDY/Dp/MOw9Hc2x6uU59XWFYjcWQgC4bai+sxcLXjeexd9aYKdYMFZPiPoieGzMYIs9WGpv2Co3eA==", + "dependencies": { + "@babel/runtime": "^7.24.4", + "fast-unique-numbers": "^8.0.13", + "tslib": "^2.6.2", + "worker-timers-worker": "^7.0.70" + } + }, + "node_modules/worker-timers-worker": { + "version": "7.0.70", + "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-7.0.70.tgz", + "integrity": "sha512-lemWEME0RHB78hzGkkQcKfF6L82gqVhV3T9iY14jHBhbLxLq9t1RRCLmPDBZV7sdnUoW6Khkfn6coqPjgEK6cw==", + "dependencies": { + "@babel/runtime": "^7.24.4", + "tslib": "^2.6.2" + } + }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -21823,7 +22174,6 @@ "version": "8.16.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", - "dev": true, "engines": { "node": ">=10.0.0" }, From bf7ffcf8ccb4284d318e765cc24a86c94293460b Mon Sep 17 00:00:00 2001 From: John Date: Tue, 16 Apr 2024 21:23:31 +0100 Subject: [PATCH 10/23] Added option of creating analytics for your modules (except analytics modules) --- .../workspace-platform-starter/CHANGELOG.md | 1 + .../client/src/framework/analytics.ts | 10 ++++++- .../client/src/framework/modules.ts | 25 +++++++++++++++++ .../src/framework/shapes/analytics-shapes.ts | 25 ++++++++++++++++- .../src/framework/shapes/module-shapes.ts | 7 +++++ .../types/module/shapes/analytics-shapes.d.ts | 22 ++++++++++++++- .../types/module/shapes/module-shapes.d.ts | 6 ++++ .../docs/how-to-add-a-module.md | 6 +++- .../docs/how-to-configure-analytics.md | 28 +++++++++++++++++++ 9 files changed, 126 insertions(+), 4 deletions(-) diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index fe37735b1b..9004ab816f 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,7 @@ ## v18.0.0 +- Module Helpers now provide a getAnalyticsClient (it is marked as optional and the result could be undefined so it leaves the option for it to be denied to a module or removed). This client supports a ModuleAnalytic event which will have a source of Module assigned to it (you can still specify type and use the data property to provide additional module specific information). This data will be passed to the analyticProviders that receive the Workspace Analytic events. See [How to Configure Analytics](./docs/how-to-configure-analytics.md). - Added a cloud interop override module so that you can easily test out OpenFin's cloud interop offering. See [How To Add Cloud Interop To Your Interop Broker](./docs/how-to-add-cloud-interop-to-your-interop-broker.md). - Broke up the build process to make it easier to just build your modules. `npm run build` still builds everything and `npm run build-client` still builds all client related code but now if you change framework files you can use `npm run build-framework`, or if you modify our starter modules you can use `npm run build-starter-modules` or if you just want to build your modules (that are listed in webpack.config.js) then you can use `npm run build-client-modules`. This will let you have a much faster build. - npm run launch now launches via the fins link when running on mac instead of the node adapter. diff --git a/how-to/workspace-platform-starter/client/src/framework/analytics.ts b/how-to/workspace-platform-starter/client/src/framework/analytics.ts index 0a279dfb0a..99510d08d2 100644 --- a/how-to/workspace-platform-starter/client/src/framework/analytics.ts +++ b/how-to/workspace-platform-starter/client/src/framework/analytics.ts @@ -23,7 +23,15 @@ export async function init( if (options) { logger.info("Initializing with options", options); modules = await loadModules(options, "analytics"); - await initializeModules(modules, helpers); + // eslint-disable-next-line @typescript-eslint/unbound-method + const { getAnalyticsClient, ...analyticsHelper } = helpers; + + if (getAnalyticsClient) { + logger.info( + "getAnalyticsClient is defined as part of helpers but not passed to analytics modules. This is to prevent an endless loop where an analytics module may be feeding events to itself." + ); + } + await initializeModules(modules, analyticsHelper); isAnalyticsEnabled = modules.length > 0; } } diff --git a/how-to/workspace-platform-starter/client/src/framework/modules.ts b/how-to/workspace-platform-starter/client/src/framework/modules.ts index ba698be277..5dee932dcf 100644 --- a/how-to/workspace-platform-starter/client/src/framework/modules.ts +++ b/how-to/workspace-platform-starter/client/src/framework/modules.ts @@ -4,6 +4,7 @@ import { type BrowserWindowModule, type WorkspacePlatformModule } from "@openfin/workspace-platform"; +import { handleAnalytics } from "./analytics"; import { getApp, getApps } from "./apps"; import { checkCondition, conditionChanged } from "./conditions"; import * as connectionProvider from "./connections"; @@ -17,6 +18,12 @@ import { createLogger } from "./logger-provider"; import { MANIFEST_TYPES } from "./manifest-types"; import * as Menu from "./menu"; import { launchPage, launchView } from "./platform/browser"; +import { + MODULE_ANALYTICS_SOURCE, + type AnalyticsClient, + type ModuleAnalyticsEvent, + type PlatformAnalyticsEvent +} from "./shapes/analytics-shapes"; import type { PlatformApp, PlatformAppIdentifier, UpdatableLaunchPreference } from "./shapes/app-shapes"; import type { ConditionContextTypes, ConditionsClient } from "./shapes/conditions-shapes"; import type { ConnectionValidationOptions, ConnectionValidationResponse } from "./shapes/connection-shapes"; @@ -283,6 +290,7 @@ export function getDefaultHelpers(): ModuleHelpers { sessionId: passedSessionId, bringAppToFront: bringToFront, getPlatform: getCurrentSync, + getAnalyticsClient, getApps: async (): Promise => { logger.info("getApps: getting public apps for module."); return getApps({ private: false }); @@ -445,6 +453,23 @@ async function getMenuClient(): Promise { }; } +/** + * Get analytics client. + * @returns The analytics client. + */ +async function getAnalyticsClient(): Promise { + return { + handleAnalytics: async (events: ModuleAnalyticsEvent[]): Promise => { + if (Array.isArray(events)) { + const platformAnalyticEvents: PlatformAnalyticsEvent[] = events.map( + (entry) => ({ ...entry, source: MODULE_ANALYTICS_SOURCE }) + ); + return handleAnalytics(platformAnalyticEvents); + } + } + }; +} + /** * Get the conditions client to use with the modules. * @returns The conditions client. diff --git a/how-to/workspace-platform-starter/client/src/framework/shapes/analytics-shapes.ts b/how-to/workspace-platform-starter/client/src/framework/shapes/analytics-shapes.ts index 565c383bd8..ca1617e705 100644 --- a/how-to/workspace-platform-starter/client/src/framework/shapes/analytics-shapes.ts +++ b/how-to/workspace-platform-starter/client/src/framework/shapes/analytics-shapes.ts @@ -30,6 +30,11 @@ export interface AnalyticsProviderOptions extends ModuleList { */ export const PLATFORM_ANALYTICS_SOURCE = "WorkspacePlatform"; +/** + * Additional source for module events. + */ +export const MODULE_ANALYTICS_SOURCE = "Module"; + /** * The data for the analytics events that need to be handled. Extends the platform AnalyticsEvent with additional data * source. @@ -38,10 +43,28 @@ export interface PlatformAnalyticsEvent extends Omit { /** * The source of the event. */ - source: typeof PLATFORM_ANALYTICS_SOURCE | AnalyticsSource; + source: typeof PLATFORM_ANALYTICS_SOURCE | typeof MODULE_ANALYTICS_SOURCE | AnalyticsSource; /** * The timestamp for the event. */ timestamp: Date; } + +/** + * The data for the analytics events that need to be handled. Extends the platform AnalyticsEvent but enforces source as + * Module. Modules can use type (to specify module id) and use action, value and data to provide module specific information if required. + */ +export type ModuleAnalyticsEvent = Omit; + +/** + * Provides a client for handling analytics events. + */ +export interface AnalyticsClient { + /** + * Handle a list of analytics events. + * @param events The events to handle. + * @returns Nothing. + */ + handleAnalytics(events: ModuleAnalyticsEvent[]): Promise; +} diff --git a/how-to/workspace-platform-starter/client/src/framework/shapes/module-shapes.ts b/how-to/workspace-platform-starter/client/src/framework/shapes/module-shapes.ts index 0b42fd93ee..294bb045a7 100644 --- a/how-to/workspace-platform-starter/client/src/framework/shapes/module-shapes.ts +++ b/how-to/workspace-platform-starter/client/src/framework/shapes/module-shapes.ts @@ -1,5 +1,6 @@ import type OpenFin from "@openfin/core"; import type { BrowserWindowModule, WorkspacePlatformModule } from "@openfin/workspace-platform"; +import type { AnalyticsClient } from "./analytics-shapes"; import type { PlatformApp, PlatformAppIdentifier, UpdatableLaunchPreference } from "./app-shapes"; import type { ConditionsClient } from "./conditions-shapes"; import type { ConnectionValidationOptions, ConnectionValidationResponse } from "./connection-shapes"; @@ -93,6 +94,12 @@ export interface ModuleHelpers { */ getPlatform?(): WorkspacePlatformModule; + /** + * Get Analytics Client. + * @returns The analytics client that can be used to feed analytics to the analytics provider or undefined if it isn't available. + */ + getAnalyticsClient?(): Promise; + /** * Get the list of apps supported by this platform and/or user. * @returns The list of platform apps available from the module. diff --git a/how-to/workspace-platform-starter/client/types/module/shapes/analytics-shapes.d.ts b/how-to/workspace-platform-starter/client/types/module/shapes/analytics-shapes.d.ts index fd0aaabcd4..cfda19adb9 100644 --- a/how-to/workspace-platform-starter/client/types/module/shapes/analytics-shapes.d.ts +++ b/how-to/workspace-platform-starter/client/types/module/shapes/analytics-shapes.d.ts @@ -26,6 +26,10 @@ export interface AnalyticsProviderOptions extends ModuleList { * Additional source for workspace platform events. */ export declare const PLATFORM_ANALYTICS_SOURCE = "WorkspacePlatform"; +/** + * Additional source for module events. + */ +export declare const MODULE_ANALYTICS_SOURCE = "Module"; /** * The data for the analytics events that need to be handled. Extends the platform AnalyticsEvent with additional data * source. @@ -34,9 +38,25 @@ export interface PlatformAnalyticsEvent extends Omit { /** * The source of the event. */ - source: typeof PLATFORM_ANALYTICS_SOURCE | AnalyticsSource; + source: typeof PLATFORM_ANALYTICS_SOURCE | typeof MODULE_ANALYTICS_SOURCE | AnalyticsSource; /** * The timestamp for the event. */ timestamp: Date; } +/** + * The data for the analytics events that need to be handled. Extends the platform AnalyticsEvent but enforces source as + * Module. Modules can use type (to specify module id) and use action, value and data to provide module specific information if required. + */ +export type ModuleAnalyticsEvent = Omit; +/** + * Provides a client for handling analytics events. + */ +export interface AnalyticsClient { + /** + * Handle a list of analytics events. + * @param events The events to handle. + * @returns Nothing. + */ + handleAnalytics(events: ModuleAnalyticsEvent[]): Promise; +} diff --git a/how-to/workspace-platform-starter/client/types/module/shapes/module-shapes.d.ts b/how-to/workspace-platform-starter/client/types/module/shapes/module-shapes.d.ts index b003930444..0c4a7abc61 100644 --- a/how-to/workspace-platform-starter/client/types/module/shapes/module-shapes.d.ts +++ b/how-to/workspace-platform-starter/client/types/module/shapes/module-shapes.d.ts @@ -1,5 +1,6 @@ import type OpenFin from "@openfin/core"; import type { BrowserWindowModule, WorkspacePlatformModule } from "@openfin/workspace-platform"; +import type { AnalyticsClient } from "./analytics-shapes"; import type { PlatformApp, PlatformAppIdentifier, UpdatableLaunchPreference } from "./app-shapes"; import type { ConditionsClient } from "./conditions-shapes"; import type { ConnectionValidationOptions, ConnectionValidationResponse } from "./connection-shapes"; @@ -80,6 +81,11 @@ export interface ModuleHelpers { * @returns The current platform. */ getPlatform?(): WorkspacePlatformModule; + /** + * Get Analytics Client. + * @returns The analytics client that can be used to feed analytics to the analytics provider or undefined if it isn't available. + */ + getAnalyticsClient?(): Promise; /** * Get the list of apps supported by this platform and/or user. * @returns The list of platform apps available from the module. 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 f5a98d2915..4aa0bcc958 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 @@ -12,11 +12,15 @@ The following features are currently extendable using modules: - analytics - auth - conditions +- content-creation - endpoint -- initOptions +- init-options - integrations +- interop-override - lifecycle - log +- menus +- share ## Configuration diff --git a/how-to/workspace-platform-starter/docs/how-to-configure-analytics.md b/how-to/workspace-platform-starter/docs/how-to-configure-analytics.md index 9b50e71709..6d1f2b1265 100644 --- a/how-to/workspace-platform-starter/docs/how-to-configure-analytics.md +++ b/how-to/workspace-platform-starter/docs/how-to-configure-analytics.md @@ -35,6 +35,34 @@ public async handleAnalytics(events: AnalyticsEvent[]) { } ``` +## Module Helper - getAnalyticsClient + +The module helper that gets passed to modules has an optional getAnalyticsClient function that might be available to your module. If available you can use it to request an analytics client. This may come back undefined if there is a reason why it cannot be provided to that module. If available it will let you pass one or more ModuleAnalyticEvents. These events do not have a source setting as this is set to Module but you can specify type and there is a data setting where you can put event/module specific information. This will be passed to the analytics modules so that they can take that feed and do something with it (send to a backend, display on as a report etc). + +> **INFO:** This helper method is not passed to an analytics module to prevent accidental endless loops where submitting an analytical event would go back to the module that submitted it. + +```javascript + if(helpers?.getAnalyticsClient !== undefined) { + const analyticsClient = await helpers.getAnalyticsClient(); + ... + if(analyticsClient !== undefined) { + analyticsClient.handleAnalytics([ + { + action: "Event Happened", + timestamp: new Date(), + type: this._definition?.id ?? "my module", + value: "Custom Value", + data: { } + } + ]); + } + } +``` + +### Existing analytics + +If you are creating an action for the Browser or a Home result through an integration then please remember that since they are being actioned by Workspace Components (Browser/Home) they will already be generating analytical events so you might not need to make use of this helper client. + ## Generate From Template You can generate the scaffold for a new module by using the following command line, where "My Analytics" is the name you want to give your module: From c9e78ceeff9153f1199e95332e85f6726cf34bb4 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 18 Apr 2024 13:33:48 +0100 Subject: [PATCH 11/23] Bump versions for v18 Beta Release --- README.md | 2 +- .../register-with-home-js/package.json | 18 +- .../register-with-home-js/tests/index.spec.js | 2 +- .../register-with-home-ts/package.json | 18 +- .../register-with-home-ts/tests/index.spec.ts | 2 +- .../register-with-store-js/package.json | 14 +- .../tests/index.spec.js | 2 +- .../selenium/scripts/dos.mjs | 2 +- .../automation-testing/selenium/selenium.js | 2 +- .../selenium/test/index.spec.js | 2 +- .../automation-testing/wdio/scripts/dos.mjs | 2 +- .../wdio/test/index.spec.js | 2 +- how-to/automation-testing/wdio/wdio.conf.js | 2 +- how-to/customize-home-templates/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-excel/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../integrate-with-ms365-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-ms365/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- how-to/integrate-with-rss/package.json | 8 +- .../integrate-with-rss/public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-salesforce/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-servicenow/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-snap-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-snap/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../migrate-from-a-previous-version/README.md | 4 +- how-to/register-with-browser/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-dock-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-dock/package.json | 8 +- .../register-with-dock/public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-home-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-home/package.json | 8 +- .../register-with-home/public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-store-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/register-with-store/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../support-context-and-intents/package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- how-to/use-notifications/package.json | 8 +- .../use-notifications/public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/use-theming-basic/package.json | 8 +- .../use-theming-basic/public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/use-theming/package.json | 6 +- how-to/use-theming/public/common/dos.json | 2 +- how-to/use-theming/public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../public/manifest.fin.json | 2 +- .../docs/how-to-customize-sharing.md | 4 +- .../e2e/tests/platform.spec.ts | 2 +- .../workspace-platform-starter/package.json | 10 +- .../public/common/dos.json | 2 +- .../public/empty.manifest.fin.json | 2 +- .../public/fourth.manifest.fin.json | 2 +- .../public/manifest.fin.json | 2 +- .../public/pack.manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- .../public/third.manifest.fin.json | 2 +- package-lock.json | 4840 +++++++++-------- package.json | 2 +- 118 files changed, 2824 insertions(+), 2484 deletions(-) diff --git a/README.md b/README.md index 22862be79f..88f90d0a7d 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The OpenFin Workspace is a full-featured work environment designed to improve th ## What version does this branch cover? -This branch covers version **v18.0.0** of OpenFin Workspace (there are versioned branches for other releases). [Click here to visit the release notes.](https://developer.openfin.co/versions/?product=Runtime#/?product=Workspace&sub-product=Workspace&version=18.0.7) +This branch covers version **v18.0.0** of OpenFin Workspace (there are versioned branches for other releases). [Click here to visit the release notes.](https://developer.openfin.co/versions/?product=Runtime#/?product=Workspace&sub-product=Workspace&version=18.0.8) ## Before you get started diff --git a/how-to/automation-testing/register-with-home-js/package.json b/how-to/automation-testing/register-with-home-js/package.json index 7eb853b2d6..d7f4644ceb 100644 --- a/how-to/automation-testing/register-with-home-js/package.json +++ b/how-to/automation-testing/register-with-home-js/package.json @@ -4,15 +4,15 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --reporter ./mocha.reporter.json --testFailCount 1 --workspace 18.0.7", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.7", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --reporter ./jasmine.reporter.json --testFailCount 1 --workspace 18.0.7", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.7", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jest --reporter ./jest.reporter.json --testFailCount 1 --workspace 18.0.7", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.7", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.7", - "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.7", - "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.7" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --reporter ./mocha.reporter.json --testFailCount 1 --workspace 18.0.8", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --reporter ./jasmine.reporter.json --testFailCount 1 --workspace 18.0.8", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jest --reporter ./jest.reporter.json --testFailCount 1 --workspace 18.0.8", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.8", + "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.8", + "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.8" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/register-with-home-js/tests/index.spec.js b/how-to/automation-testing/register-with-home-js/tests/index.spec.js index 8fe1cfdf60..d68360daf3 100644 --- a/how-to/automation-testing/register-with-home-js/tests/index.spec.js +++ b/how-to/automation-testing/register-with-home-js/tests/index.spec.js @@ -42,7 +42,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.8'); + expect(version).to.equal('36.122.80.10'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/register-with-home-ts/package.json b/how-to/automation-testing/register-with-home-ts/package.json index 0d5f003167..d1b500aed5 100644 --- a/how-to/automation-testing/register-with-home-ts/package.json +++ b/how-to/automation-testing/register-with-home-ts/package.json @@ -4,15 +4,15 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.7 --testFailCount 1", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.7 --testFailCount 1", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.7 --testFailCount 1", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.7 --testFailCount 1", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.7 --testFailCount 1", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.7 --testFailCount 1", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --offline --storageFolder=./offline-storage --workspace 18.0.7 --testFailCount 1", - "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.7 --testFailCount 1", - "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.7 --testFailCount 1" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.8 --testFailCount 1", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.8 --testFailCount 1", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.8 --testFailCount 1", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.8 --testFailCount 1", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.8 --testFailCount 1", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.8 --testFailCount 1", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --offline --storageFolder=./offline-storage --workspace 18.0.8 --testFailCount 1", + "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.8 --testFailCount 1", + "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.8 --testFailCount 1" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts index e9fe9bf3a4..8cecf8f89d 100644 --- a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts +++ b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts @@ -43,7 +43,7 @@ describe("Register with Home", () => { it("The runtime version should be set", async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal("36.122.80.8"); + expect(version).to.equal("36.122.80.10"); }); it("The identity should be set", async () => { diff --git a/how-to/automation-testing/register-with-store-js/package.json b/how-to/automation-testing/register-with-store-js/package.json index edc82bd761..a539b4280d 100644 --- a/how-to/automation-testing/register-with-store-js/package.json +++ b/how-to/automation-testing/register-with-store-js/package.json @@ -4,13 +4,13 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.7", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.7", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.7", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.7", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.7", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.7", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.7" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.8" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/register-with-store-js/tests/index.spec.js b/how-to/automation-testing/register-with-store-js/tests/index.spec.js index f0dd818ab9..b7a157287c 100644 --- a/how-to/automation-testing/register-with-store-js/tests/index.spec.js +++ b/how-to/automation-testing/register-with-store-js/tests/index.spec.js @@ -15,7 +15,7 @@ describe('Register with Store', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.8'); + expect(version).to.equal('36.122.80.10'); }); it('Can open the store window', async () => { diff --git a/how-to/automation-testing/selenium/scripts/dos.mjs b/how-to/automation-testing/selenium/scripts/dos.mjs index a9c5673dd4..814b7f4ade 100644 --- a/how-to/automation-testing/selenium/scripts/dos.mjs +++ b/how-to/automation-testing/selenium/scripts/dos.mjs @@ -11,7 +11,7 @@ const DOS = { securedAPIDefaultPermission: 'allow', systemApps: { workspace: { - version: '18.0.7' + version: '18.0.8' } } } diff --git a/how-to/automation-testing/selenium/selenium.js b/how-to/automation-testing/selenium/selenium.js index 67d15dea29..55c4a3d02f 100644 --- a/how-to/automation-testing/selenium/selenium.js +++ b/how-to/automation-testing/selenium/selenium.js @@ -106,7 +106,7 @@ async function runMochaTests() { } // The version of the chromedriver in the package.json should match the runtime version from the app manifest. -// e.g. if the manifest runtime version is 36.122.80.8 then the chromedriver version should be "118.0.0" +// e.g. if the manifest runtime version is 36.122.80.10 then the chromedriver version should be "118.0.0" const testManifestUrl = 'https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json'; const chromeDriverPort = 5678; diff --git a/how-to/automation-testing/selenium/test/index.spec.js b/how-to/automation-testing/selenium/test/index.spec.js index 45ebf2ac40..6bc947a9c6 100644 --- a/how-to/automation-testing/selenium/test/index.spec.js +++ b/how-to/automation-testing/selenium/test/index.spec.js @@ -40,7 +40,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.8'); + expect(version).to.equal('36.122.80.10'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/wdio/scripts/dos.mjs b/how-to/automation-testing/wdio/scripts/dos.mjs index a9c5673dd4..814b7f4ade 100644 --- a/how-to/automation-testing/wdio/scripts/dos.mjs +++ b/how-to/automation-testing/wdio/scripts/dos.mjs @@ -11,7 +11,7 @@ const DOS = { securedAPIDefaultPermission: 'allow', systemApps: { workspace: { - version: '18.0.7' + version: '18.0.8' } } } diff --git a/how-to/automation-testing/wdio/test/index.spec.js b/how-to/automation-testing/wdio/test/index.spec.js index 45ebf2ac40..6bc947a9c6 100644 --- a/how-to/automation-testing/wdio/test/index.spec.js +++ b/how-to/automation-testing/wdio/test/index.spec.js @@ -40,7 +40,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.8'); + expect(version).to.equal('36.122.80.10'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/wdio/wdio.conf.js b/how-to/automation-testing/wdio/wdio.conf.js index e05a738a0d..069d0e9065 100644 --- a/how-to/automation-testing/wdio/wdio.conf.js +++ b/how-to/automation-testing/wdio/wdio.conf.js @@ -7,7 +7,7 @@ const fsPromises = require('fs/promises'); const path = require('path'); // The version of the chromedriver in the package.json should match the runtime version from the app manifest. -// e.g. if the manifest runtime version is 36.122.80.8 then the chromedriver version should be '118.0.0' +// e.g. if the manifest runtime version is 36.122.80.10 then the chromedriver version should be '118.0.0' const manifestUrl = 'https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json'; const chromeDriverPort = 5843; diff --git a/how-to/customize-home-templates/package.json b/how-to/customize-home-templates/package.json index 3597385b5a..e0b0f49bcc 100644 --- a/how-to/customize-home-templates/package.json +++ b/how-to/customize-home-templates/package.json @@ -23,16 +23,16 @@ ], "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "chart.js": "^4.4.2", "csstype": "^3.1.3", "luxon": "^3.4.4", "node-emoji": "1.11.0" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/luxon": "^3.4.2", "@types/node-emoji": "^1.8.2", "eslint": "8.57.0", diff --git a/how-to/customize-home-templates/public/common/dos.json b/how-to/customize-home-templates/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/customize-home-templates/public/common/dos.json +++ b/how-to/customize-home-templates/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/customize-home-templates/public/manifest.fin.json b/how-to/customize-home-templates/public/manifest.fin.json index 3a41d1bdbe..4c3b48af28 100644 --- a/how-to/customize-home-templates/public/manifest.fin.json +++ b/how-to/customize-home-templates/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "customize-home-templates", diff --git a/how-to/integrate-server-authentication/package.json b/how-to/integrate-server-authentication/package.json index 18dd0e20d9..0d88ed2b13 100644 --- a/how-to/integrate-server-authentication/package.json +++ b/how-to/integrate-server-authentication/package.json @@ -21,13 +21,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "cookie-parser": "^1.4.6" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/cookie-parser": "^1.4.7", "@types/express": "^4.17.21", "eslint": "8.57.0", diff --git a/how-to/integrate-server-authentication/public/common/dos.json b/how-to/integrate-server-authentication/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-server-authentication/public/common/dos.json +++ b/how-to/integrate-server-authentication/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-server-authentication/public/manifest.fin.json b/how-to/integrate-server-authentication/public/manifest.fin.json index 69e53af1b4..68af1d19c7 100644 --- a/how-to/integrate-server-authentication/public/manifest.fin.json +++ b/how-to/integrate-server-authentication/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-server-authentication", diff --git a/how-to/integrate-with-bloomberg-basic/package.json b/how-to/integrate-with-bloomberg-basic/package.json index decc9692cd..3a66eab166 100644 --- a/how-to/integrate-with-bloomberg-basic/package.json +++ b/how-to/integrate-with-bloomberg-basic/package.json @@ -25,12 +25,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/bloomberg": "^2.0.0", - "@openfin/core": "36.80.8", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/core": "36.80.10", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/node-adapter": "36.80.8", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-bloomberg-basic/public/common/dos.json b/how-to/integrate-with-bloomberg-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-bloomberg-basic/public/common/dos.json +++ b/how-to/integrate-with-bloomberg-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json b/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json index 6130c38280..b521337542 100644 --- a/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json +++ b/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-bloomberg-basic", diff --git a/how-to/integrate-with-excel/package.json b/how-to/integrate-with-excel/package.json index 773575e8ba..93767ec89c 100644 --- a/how-to/integrate-with-excel/package.json +++ b/how-to/integrate-with-excel/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/excel": "^1.5.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-excel/public/common/dos.json b/how-to/integrate-with-excel/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-excel/public/common/dos.json +++ b/how-to/integrate-with-excel/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-excel/public/manifest.fin.json b/how-to/integrate-with-excel/public/manifest.fin.json index 3fd5e0017b..12554c0657 100644 --- a/how-to/integrate-with-excel/public/manifest.fin.json +++ b/how-to/integrate-with-excel/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-excel", diff --git a/how-to/integrate-with-ms365-basic/package.json b/how-to/integrate-with-ms365-basic/package.json index 6c18352e48..1e5b1fd1f5 100644 --- a/how-to/integrate-with-ms365-basic/package.json +++ b/how-to/integrate-with-ms365-basic/package.json @@ -22,12 +22,12 @@ "dependencies": { "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-basic/public/common/dos.json b/how-to/integrate-with-ms365-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-ms365-basic/public/common/dos.json +++ b/how-to/integrate-with-ms365-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-basic/public/manifest.fin.json b/how-to/integrate-with-ms365-basic/public/manifest.fin.json index 8942628128..ace462e225 100644 --- a/how-to/integrate-with-ms365-basic/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-ms365-basic", diff --git a/how-to/integrate-with-ms365-low-code-basic/package.json b/how-to/integrate-with-ms365-low-code-basic/package.json index ee4d585af9..352f4d66f0 100644 --- a/how-to/integrate-with-ms365-low-code-basic/package.json +++ b/how-to/integrate-with-ms365-low-code-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json b/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json +++ b/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json b/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json index a136e1c485..2940dfad48 100644 --- a/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=msft-low-code-basic", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-ms365-low-code-basic", diff --git a/how-to/integrate-with-ms365-low-code/package.json b/how-to/integrate-with-ms365-low-code/package.json index 0e068e4e43..43564d8e60 100644 --- a/how-to/integrate-with-ms365-low-code/package.json +++ b/how-to/integrate-with-ms365-low-code/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-low-code/public/common/dos.json b/how-to/integrate-with-ms365-low-code/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-ms365-low-code/public/common/dos.json +++ b/how-to/integrate-with-ms365-low-code/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-low-code/public/manifest.fin.json b/how-to/integrate-with-ms365-low-code/public/manifest.fin.json index 3567ad029a..0f7838d5e2 100644 --- a/how-to/integrate-with-ms365-low-code/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-low-code/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=msft-low-code", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-ms365-low-code", diff --git a/how-to/integrate-with-ms365/package.json b/how-to/integrate-with-ms365/package.json index c1dee9b9bd..9b69bbe82e 100644 --- a/how-to/integrate-with-ms365/package.json +++ b/how-to/integrate-with-ms365/package.json @@ -23,13 +23,13 @@ "@finos/fdc3": "^2.0.3", "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365/public/common/dos.json b/how-to/integrate-with-ms365/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-ms365/public/common/dos.json +++ b/how-to/integrate-with-ms365/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365/public/manifest.fin.json b/how-to/integrate-with-ms365/public/manifest.fin.json index 63084597c1..73cc900c54 100644 --- a/how-to/integrate-with-ms365/public/manifest.fin.json +++ b/how-to/integrate-with-ms365/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-ms365", diff --git a/how-to/integrate-with-openid-connect/package.json b/how-to/integrate-with-openid-connect/package.json index b89212784e..582719596d 100644 --- a/how-to/integrate-with-openid-connect/package.json +++ b/how-to/integrate-with-openid-connect/package.json @@ -24,12 +24,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/openid-connect": "^1.0.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-openid-connect/public/common/dos.json b/how-to/integrate-with-openid-connect/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-openid-connect/public/common/dos.json +++ b/how-to/integrate-with-openid-connect/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-openid-connect/public/manifest.fin.json b/how-to/integrate-with-openid-connect/public/manifest.fin.json index 910cc34af4..29cf2a2f07 100644 --- a/how-to/integrate-with-openid-connect/public/manifest.fin.json +++ b/how-to/integrate-with-openid-connect/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-openid-connect", diff --git a/how-to/integrate-with-openid-connect/public/second.manifest.fin.json b/how-to/integrate-with-openid-connect/public/second.manifest.fin.json index 60e5825ce2..f85ebf24d0 100644 --- a/how-to/integrate-with-openid-connect/public/second.manifest.fin.json +++ b/how-to/integrate-with-openid-connect/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=integrate-with-openid-connect-app", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-openid-connect-app", diff --git a/how-to/integrate-with-rss/package.json b/how-to/integrate-with-rss/package.json index eca2a7462f..bd6a0d7c9c 100644 --- a/how-to/integrate-with-rss/package.json +++ b/how-to/integrate-with-rss/package.json @@ -21,13 +21,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "fast-xml-parser": "4.3.6" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/express": "^4.17.21", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", diff --git a/how-to/integrate-with-rss/public/common/dos.json b/how-to/integrate-with-rss/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-rss/public/common/dos.json +++ b/how-to/integrate-with-rss/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-rss/public/manifest.fin.json b/how-to/integrate-with-rss/public/manifest.fin.json index 71e80b85f5..69834cfc93 100644 --- a/how-to/integrate-with-rss/public/manifest.fin.json +++ b/how-to/integrate-with-rss/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-rss", diff --git a/how-to/integrate-with-salesforce-basic/package.json b/how-to/integrate-with-salesforce-basic/package.json index 17e2702641..e1ecb3614e 100644 --- a/how-to/integrate-with-salesforce-basic/package.json +++ b/how-to/integrate-with-salesforce-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/salesforce": "2.3.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-salesforce-basic/public/common/dos.json b/how-to/integrate-with-salesforce-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-salesforce-basic/public/common/dos.json +++ b/how-to/integrate-with-salesforce-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-salesforce-basic/public/manifest.fin.json b/how-to/integrate-with-salesforce-basic/public/manifest.fin.json index 2d7447fe0c..2459935eb4 100644 --- a/how-to/integrate-with-salesforce-basic/public/manifest.fin.json +++ b/how-to/integrate-with-salesforce-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-salesforce-basic", diff --git a/how-to/integrate-with-salesforce/package.json b/how-to/integrate-with-salesforce/package.json index ae4bb94208..3f540a87e6 100644 --- a/how-to/integrate-with-salesforce/package.json +++ b/how-to/integrate-with-salesforce/package.json @@ -25,12 +25,12 @@ "dependencies": { "@openfin/salesforce": "2.3.0", "@openfin/salesforce-lwc": "1.1.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", diff --git a/how-to/integrate-with-salesforce/public/common/dos.json b/how-to/integrate-with-salesforce/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-salesforce/public/common/dos.json +++ b/how-to/integrate-with-salesforce/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-salesforce/public/manifest.fin.json b/how-to/integrate-with-salesforce/public/manifest.fin.json index f0ddcc8fe6..2a217a8f82 100644 --- a/how-to/integrate-with-salesforce/public/manifest.fin.json +++ b/how-to/integrate-with-salesforce/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-salesforce", diff --git a/how-to/integrate-with-servicenow-basic/package.json b/how-to/integrate-with-servicenow-basic/package.json index c6ec609549..5bff119e3e 100644 --- a/how-to/integrate-with-servicenow-basic/package.json +++ b/how-to/integrate-with-servicenow-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-servicenow-basic/public/common/dos.json b/how-to/integrate-with-servicenow-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-servicenow-basic/public/common/dos.json +++ b/how-to/integrate-with-servicenow-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-servicenow-basic/public/manifest.fin.json b/how-to/integrate-with-servicenow-basic/public/manifest.fin.json index d896a674a5..a1f7db8ac6 100644 --- a/how-to/integrate-with-servicenow-basic/public/manifest.fin.json +++ b/how-to/integrate-with-servicenow-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-servicenow-basic", diff --git a/how-to/integrate-with-servicenow/package.json b/how-to/integrate-with-servicenow/package.json index ec07ddfa06..8033d666ce 100644 --- a/how-to/integrate-with-servicenow/package.json +++ b/how-to/integrate-with-servicenow/package.json @@ -21,13 +21,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-servicenow/public/common/dos.json b/how-to/integrate-with-servicenow/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-servicenow/public/common/dos.json +++ b/how-to/integrate-with-servicenow/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-servicenow/public/manifest.fin.json b/how-to/integrate-with-servicenow/public/manifest.fin.json index d79baab8d3..0a0fd4ce92 100644 --- a/how-to/integrate-with-servicenow/public/manifest.fin.json +++ b/how-to/integrate-with-servicenow/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-servicenow", diff --git a/how-to/integrate-with-snap-basic/package.json b/how-to/integrate-with-snap-basic/package.json index 8b02bf24f3..471c106a07 100644 --- a/how-to/integrate-with-snap-basic/package.json +++ b/how-to/integrate-with-snap-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-snap-basic/public/common/dos.json b/how-to/integrate-with-snap-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-snap-basic/public/common/dos.json +++ b/how-to/integrate-with-snap-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-snap-basic/public/manifest.fin.json b/how-to/integrate-with-snap-basic/public/manifest.fin.json index 6d02577df0..05f60d6435 100644 --- a/how-to/integrate-with-snap-basic/public/manifest.fin.json +++ b/how-to/integrate-with-snap-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-snap-basic", diff --git a/how-to/integrate-with-snap/package.json b/how-to/integrate-with-snap/package.json index c96bff7e8f..4054d9b8a6 100644 --- a/how-to/integrate-with-snap/package.json +++ b/how-to/integrate-with-snap/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-snap/public/common/dos.json b/how-to/integrate-with-snap/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/integrate-with-snap/public/common/dos.json +++ b/how-to/integrate-with-snap/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-snap/public/manifest.fin.json b/how-to/integrate-with-snap/public/manifest.fin.json index 452c0e5ca8..f972ef116e 100644 --- a/how-to/integrate-with-snap/public/manifest.fin.json +++ b/how-to/integrate-with-snap/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "integrate-with-snap", diff --git a/how-to/migrate-from-a-previous-version/README.md b/how-to/migrate-from-a-previous-version/README.md index 9f7bb2ebda..70649fbb85 100644 --- a/how-to/migrate-from-a-previous-version/README.md +++ b/how-to/migrate-from-a-previous-version/README.md @@ -5,7 +5,7 @@ ## Migrate from a previous version - From v17.2 to v18.0 -- [Please see the v18.0 Release Notes](https://developer.openfin.co/versions/#/?product=Workspace&sub-product=Workspace&version=18.0.7) +- [Please see the v18.0 Release Notes](https://developer.openfin.co/versions/#/?product=Workspace&sub-product=Workspace&version=18.0.8) ## Migrate from a previous version - From v17.0 to v17.2 @@ -205,7 +205,7 @@ You should update your dev dependencies ```javascript "devDependencies": { - "@openfin/core": "36.80.8" + "@openfin/core": "36.80.10" } ``` diff --git a/how-to/register-with-browser/package.json b/how-to/register-with-browser/package.json index 4239cb176f..eba9e4a42c 100644 --- a/how-to/register-with-browser/package.json +++ b/how-to/register-with-browser/package.json @@ -20,12 +20,12 @@ "author": "adam.saland@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-browser/public/common/dos.json b/how-to/register-with-browser/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-browser/public/common/dos.json +++ b/how-to/register-with-browser/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-browser/public/manifest.fin.json b/how-to/register-with-browser/public/manifest.fin.json index f800226365..1438a9ff73 100644 --- a/how-to/register-with-browser/public/manifest.fin.json +++ b/how-to/register-with-browser/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "launch-browser-from-window", diff --git a/how-to/register-with-dock-basic/package.json b/how-to/register-with-dock-basic/package.json index 6a8b296693..7fffb61d77 100644 --- a/how-to/register-with-dock-basic/package.json +++ b/how-to/register-with-dock-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-dock-basic/public/common/dos.json b/how-to/register-with-dock-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-dock-basic/public/common/dos.json +++ b/how-to/register-with-dock-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-dock-basic/public/manifest.fin.json b/how-to/register-with-dock-basic/public/manifest.fin.json index ed443edf99..80d86dbc81 100644 --- a/how-to/register-with-dock-basic/public/manifest.fin.json +++ b/how-to/register-with-dock-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-dock-basic", diff --git a/how-to/register-with-dock/package.json b/how-to/register-with-dock/package.json index 84046ba625..ea130a2317 100644 --- a/how-to/register-with-dock/package.json +++ b/how-to/register-with-dock/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-dock/public/common/dos.json b/how-to/register-with-dock/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-dock/public/common/dos.json +++ b/how-to/register-with-dock/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-dock/public/manifest.fin.json b/how-to/register-with-dock/public/manifest.fin.json index 61ea5633cb..d3b9c59c80 100644 --- a/how-to/register-with-dock/public/manifest.fin.json +++ b/how-to/register-with-dock/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-dock", diff --git a/how-to/register-with-home-basic/package.json b/how-to/register-with-home-basic/package.json index f4c53cd8f6..c0647e3039 100644 --- a/how-to/register-with-home-basic/package.json +++ b/how-to/register-with-home-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-home-basic/public/common/dos.json b/how-to/register-with-home-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-home-basic/public/common/dos.json +++ b/how-to/register-with-home-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-home-basic/public/manifest.fin.json b/how-to/register-with-home-basic/public/manifest.fin.json index 04c5a99785..ed44f0c18b 100644 --- a/how-to/register-with-home-basic/public/manifest.fin.json +++ b/how-to/register-with-home-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-home-basic", diff --git a/how-to/register-with-home/package.json b/how-to/register-with-home/package.json index 8b83ffbdd5..4fc0702d3d 100644 --- a/how-to/register-with-home/package.json +++ b/how-to/register-with-home/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-home/public/common/dos.json b/how-to/register-with-home/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-home/public/common/dos.json +++ b/how-to/register-with-home/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-home/public/manifest.fin.json b/how-to/register-with-home/public/manifest.fin.json index 24a27d9d26..eb7577cba3 100644 --- a/how-to/register-with-home/public/manifest.fin.json +++ b/how-to/register-with-home/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-home", diff --git a/how-to/register-with-platform-windows/package.json b/how-to/register-with-platform-windows/package.json index 9129c41827..436aee605f 100644 --- a/how-to/register-with-platform-windows/package.json +++ b/how-to/register-with-platform-windows/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-platform-windows/public/common/dos.json b/how-to/register-with-platform-windows/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-platform-windows/public/common/dos.json +++ b/how-to/register-with-platform-windows/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-platform-windows/public/manifest.fin.json b/how-to/register-with-platform-windows/public/manifest.fin.json index 8c215de6ba..3424f45415 100644 --- a/how-to/register-with-platform-windows/public/manifest.fin.json +++ b/how-to/register-with-platform-windows/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-platform-windows", diff --git a/how-to/register-with-store-basic/package.json b/how-to/register-with-store-basic/package.json index af872a2e2d..b8895c4f5e 100644 --- a/how-to/register-with-store-basic/package.json +++ b/how-to/register-with-store-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-store-basic/public/common/dos.json b/how-to/register-with-store-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-store-basic/public/common/dos.json +++ b/how-to/register-with-store-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-store-basic/public/manifest.fin.json b/how-to/register-with-store-basic/public/manifest.fin.json index f6cc0c4601..55aa27fc12 100644 --- a/how-to/register-with-store-basic/public/manifest.fin.json +++ b/how-to/register-with-store-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-store-basic", diff --git a/how-to/register-with-store/package.json b/how-to/register-with-store/package.json index e6f6e16c11..4aa816f866 100644 --- a/how-to/register-with-store/package.json +++ b/how-to/register-with-store/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-store/public/common/dos.json b/how-to/register-with-store/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/register-with-store/public/common/dos.json +++ b/how-to/register-with-store/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-store/public/manifest.fin.json b/how-to/register-with-store/public/manifest.fin.json index 8606e17991..daaf9c892b 100644 --- a/how-to/register-with-store/public/manifest.fin.json +++ b/how-to/register-with-store/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "register-with-store", diff --git a/how-to/support-context-and-intents/package.json b/how-to/support-context-and-intents/package.json index ba4a934a0c..bd1aefc6f7 100644 --- a/how-to/support-context-and-intents/package.json +++ b/how-to/support-context-and-intents/package.json @@ -22,12 +22,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/cloud-interop": "^0.4.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/support-context-and-intents/public/common/dos.json b/how-to/support-context-and-intents/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/support-context-and-intents/public/common/dos.json +++ b/how-to/support-context-and-intents/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/support-context-and-intents/public/manifest.fin.json b/how-to/support-context-and-intents/public/manifest.fin.json index c96c310e23..e41c44f885 100644 --- a/how-to/support-context-and-intents/public/manifest.fin.json +++ b/how-to/support-context-and-intents/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "support-context-and-intents", diff --git a/how-to/support-context-and-intents/public/second.manifest.fin.json b/how-to/support-context-and-intents/public/second.manifest.fin.json index da3c2e59ac..5eeba3a7da 100644 --- a/how-to/support-context-and-intents/public/second.manifest.fin.json +++ b/how-to/support-context-and-intents/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=second-support-context-and-intents", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "second-support-context-and-intents", diff --git a/how-to/use-notifications/package.json b/how-to/use-notifications/package.json index 1f5f5729ee..7cd2fbda15 100644 --- a/how-to/use-notifications/package.json +++ b/how-to/use-notifications/package.json @@ -20,13 +20,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-notifications/public/common/dos.json b/how-to/use-notifications/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/use-notifications/public/common/dos.json +++ b/how-to/use-notifications/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-notifications/public/manifest.fin.json b/how-to/use-notifications/public/manifest.fin.json index 0eda1cd1f4..ac0af6bd2c 100644 --- a/how-to/use-notifications/public/manifest.fin.json +++ b/how-to/use-notifications/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "use-notifications", diff --git a/how-to/use-theming-basic/package.json b/how-to/use-theming-basic/package.json index bd64d023bf..cf6f881053 100644 --- a/how-to/use-theming-basic/package.json +++ b/how-to/use-theming-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-theming-basic/public/common/dos.json b/how-to/use-theming-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/use-theming-basic/public/common/dos.json +++ b/how-to/use-theming-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-theming-basic/public/manifest.fin.json b/how-to/use-theming-basic/public/manifest.fin.json index 7625a621ab..3311f3a807 100644 --- a/how-to/use-theming-basic/public/manifest.fin.json +++ b/how-to/use-theming-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "use-theming-basic", diff --git a/how-to/use-theming/package.json b/how-to/use-theming/package.json index c92b38eb33..5d9b6385cf 100644 --- a/how-to/use-theming/package.json +++ b/how-to/use-theming/package.json @@ -21,11 +21,11 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7" + "@openfin/workspace": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-theming/public/common/dos.json b/how-to/use-theming/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/use-theming/public/common/dos.json +++ b/how-to/use-theming/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-theming/public/manifest.fin.json b/how-to/use-theming/public/manifest.fin.json index 8be092c81b..45011f5c2c 100644 --- a/how-to/use-theming/public/manifest.fin.json +++ b/how-to/use-theming/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "use-theming", diff --git a/how-to/workspace-native-window-integration/package.json b/how-to/workspace-native-window-integration/package.json index 4241a5f345..3acf64b286 100644 --- a/how-to/workspace-native-window-integration/package.json +++ b/how-to/workspace-native-window-integration/package.json @@ -21,13 +21,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/native-window-integration-client": "0.0.17", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "file-loader": "^6.2.0" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/workspace-native-window-integration/public/common/dos.json b/how-to/workspace-native-window-integration/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/workspace-native-window-integration/public/common/dos.json +++ b/how-to/workspace-native-window-integration/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-native-window-integration/public/manifest.fin.json b/how-to/workspace-native-window-integration/public/manifest.fin.json index 66557c6230..6ccf682d8f 100644 --- a/how-to/workspace-native-window-integration/public/manifest.fin.json +++ b/how-to/workspace-native-window-integration/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "workspace-native-window-integration" diff --git a/how-to/workspace-platform-starter-basic/package.json b/how-to/workspace-platform-starter-basic/package.json index a62b19714a..d81f07377f 100644 --- a/how-to/workspace-platform-starter-basic/package.json +++ b/how-to/workspace-platform-starter-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/workspace-platform-starter-basic/public/common/dos.json b/how-to/workspace-platform-starter-basic/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/workspace-platform-starter-basic/public/common/dos.json +++ b/how-to/workspace-platform-starter-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-platform-starter-basic/public/manifest.fin.json b/how-to/workspace-platform-starter-basic/public/manifest.fin.json index 52e2bb8d2e..278eee1db7 100644 --- a/how-to/workspace-platform-starter-basic/public/manifest.fin.json +++ b/how-to/workspace-platform-starter-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "platform": { "uuid": "workspace-platform-start-basic", diff --git a/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md b/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md index 51f6b3c5b3..e9002fec8f 100644 --- a/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md +++ b/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md @@ -237,7 +237,7 @@ The snapshot is a workspace platform snapshot. MonitorInfo and Window details ha "snapshot": { "snapshotDetails": { "timestamp": "2022-09-21T19:16:59.461Z", - "runtimeVersion": "36.122.80.8", + "runtimeVersion": "36.122.80.10", "monitorInfo": { ... }, "windows": [ { ... } @@ -351,7 +351,7 @@ The snapshot is a workspace platform snapshot. MonitorInfo and Window details ha "snapshot": { "snapshotDetails": { "timestamp": "2022-09-21T19:16:59.461Z", - "runtimeVersion": "36.122.80.8", + "runtimeVersion": "36.122.80.10", "monitorInfo": { ... }, }, "windows": [ diff --git a/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts b/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts index 0c3be35dea..088610e442 100644 --- a/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts +++ b/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts @@ -16,7 +16,7 @@ describe("Platform", () => { it("The runtime version should be set", async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).toEqual("36.122.80.8"); + expect(version).toEqual("36.122.80.10"); }); it("Can open the home window", async () => { diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index dc15d94e8b..cd83a315f0 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -49,7 +49,7 @@ "markdownlint": "markdownlint **/*.md --ignore **/node_modules/**", "validate": "npm run prettier && npm run eslint && npm run markdownlint", "test": "jest --config ./jest.config.js", - "e2e": "of-automation http://localhost:8080/manifest.fin.json ./e2e/**/*.spec.ts --workspace 18.0.7 --testFailCount 1 --framework jest --storageFolder ./e2e/storage" + "e2e": "of-automation http://localhost:8080/manifest.fin.json ./e2e/**/*.spec.ts --workspace 18.0.8 --testFailCount 1 --framework jest --storageFolder ./e2e/storage" }, "author": "john.mandia@openfin.co", "contributors": [ @@ -62,16 +62,16 @@ "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", "@openfin/automation-native": "^1.2.0", - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.12", diff --git a/how-to/workspace-platform-starter/public/common/dos.json b/how-to/workspace-platform-starter/public/common/dos.json index 4fa0df4e13..e7de1be9c4 100644 --- a/how-to/workspace-platform-starter/public/common/dos.json +++ b/how-to/workspace-platform-starter/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.7", + "version": "18.0.8", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-platform-starter/public/empty.manifest.fin.json b/how-to/workspace-platform-starter/public/empty.manifest.fin.json index 190198caa5..d01b34c664 100644 --- a/how-to/workspace-platform-starter/public/empty.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/empty.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "empty-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/fourth.manifest.fin.json b/how-to/workspace-platform-starter/public/fourth.manifest.fin.json index e2b7acb6bf..f219094896 100644 --- a/how-to/workspace-platform-starter/public/fourth.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/fourth.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=fourth-workspace-starter-how-to-workspace-platform-starter", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "fourth-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/manifest.fin.json b/how-to/workspace-platform-starter/public/manifest.fin.json index 7ef93e85d8..8698b559a1 100644 --- a/how-to/workspace-platform-starter/public/manifest.fin.json +++ b/how-to/workspace-platform-starter/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/pack.manifest.fin.json b/how-to/workspace-platform-starter/public/pack.manifest.fin.json index c2c75f3631..2f30ebbae1 100644 --- a/how-to/workspace-platform-starter/public/pack.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/pack.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "default-workspace-platform" diff --git a/how-to/workspace-platform-starter/public/second.manifest.fin.json b/how-to/workspace-platform-starter/public/second.manifest.fin.json index f0bcf73d4f..6170a13991 100644 --- a/how-to/workspace-platform-starter/public/second.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=second-workspace-starter-how-to-workspace-platform-starter", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "second-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/third.manifest.fin.json b/how-to/workspace-platform-starter/public/third.manifest.fin.json index a08bec6d35..4f0cfe7c5a 100644 --- a/how-to/workspace-platform-starter/public/third.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/third.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=workspace-platform-starter-for-fdc3", - "version": "36.122.80.8" + "version": "36.122.80.10" }, "startup_app": { "name": "workspace-platform-starter-for-fdc3" diff --git a/package-lock.json b/package-lock.json index 38214f0f14..8ab334ee55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "how-to/automation-testing/*" ], "devDependencies": { - "@openfin/node-adapter": "36.80.8", + "@openfin/node-adapter": "36.80.10", "fast-glob": "3.3.2", "fs-extra": "11.2.0", "replace-in-file": "7.1.0", @@ -34,6 +34,38 @@ "mochawesome": "7.1.3" } }, + "how-to/automation-testing/register-with-home-js/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, + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "how-to/automation-testing/register-with-home-js/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "how-to/automation-testing/register-with-home-js/node_modules/jasmine": { "version": "2.99.0", "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.99.0.tgz", @@ -58,6 +90,19 @@ "jasmine": "^2.4.1" } }, + "how-to/automation-testing/register-with-home-js/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, + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "how-to/automation-testing/register-with-home-ts": { "name": "automation-testing-register-with-home", "version": "18.0.0", @@ -96,23 +141,27 @@ "selenium-webdriver": "4.18.1" } }, - "how-to/automation-testing/selenium/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "how-to/automation-testing/selenium/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": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "how-to/automation-testing/selenium/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "how-to/automation-testing/selenium/node_modules/mocha": { @@ -164,6 +213,42 @@ "node": ">= 14.20.0" } }, + "how-to/automation-testing/selenium/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" + } + }, + "how-to/automation-testing/selenium/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "how-to/automation-testing/selenium/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -182,6 +267,15 @@ "node": ">=10" } }, + "how-to/automation-testing/selenium/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "how-to/automation-testing/wdio": { "name": "automation-testing-wdio", "version": "18.0.0", @@ -205,16 +299,16 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "chart.js": "^4.4.2", "csstype": "^3.1.3", "luxon": "^3.4.4", "node-emoji": "1.11.0" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/luxon": "^3.4.2", "@types/node-emoji": "^1.8.2", "eslint": "8.57.0", @@ -241,13 +335,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "cookie-parser": "^1.4.6" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/cookie-parser": "^1.4.7", "@types/express": "^4.17.21", "eslint": "8.57.0", @@ -275,12 +369,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/bloomberg": "^2.0.0", - "@openfin/core": "36.80.8", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/core": "36.80.10", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/node-adapter": "36.80.8", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -306,12 +400,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/excel": "^1.5.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -339,13 +433,13 @@ "@finos/fdc3": "^2.0.3", "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -372,12 +466,12 @@ "dependencies": { "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -402,12 +496,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -432,12 +526,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -463,12 +557,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/openid-connect": "^1.0.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -493,13 +587,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "fast-xml-parser": "4.3.6" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/express": "^4.17.21", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", @@ -528,12 +622,12 @@ "dependencies": { "@openfin/salesforce": "2.3.0", "@openfin/salesforce-lwc": "1.1.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", @@ -560,12 +654,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/salesforce": "2.3.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -591,13 +685,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -623,12 +717,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -654,12 +748,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -685,12 +779,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -715,12 +809,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -745,12 +839,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -775,12 +869,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -805,12 +899,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -835,12 +929,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -865,12 +959,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -895,12 +989,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -925,12 +1019,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -956,12 +1050,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/cloud-interop": "^0.4.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -986,13 +1080,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1017,11 +1111,11 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7" + "@openfin/workspace": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1046,12 +1140,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1077,13 +1171,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/native-window-integration-client": "0.0.17", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "file-loader": "^6.2.0" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1112,16 +1206,16 @@ "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.2.0", - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7", + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" }, "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", "@openfin/automation-native": "^1.2.0", - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.12", @@ -1156,12 +1250,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.7", - "@openfin/workspace-platform": "18.0.7" + "@openfin/workspace": "18.0.8", + "@openfin/workspace-platform": "18.0.8" }, "devDependencies": { - "@openfin/core": "36.80.8", - "@openfin/node-adapter": "36.80.8", + "@openfin/core": "36.80.10", + "@openfin/node-adapter": "36.80.10", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -2076,6 +2170,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2433,6 +2533,48 @@ } } }, + "node_modules/@jest/reporters/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/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@jest/reporters/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3639,9 +3781,12 @@ } }, "node_modules/@openfin/bloomberg/node_modules/@finos/fdc3": { - "version": "2.1.0-beta.7", - "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.7.tgz", - "integrity": "sha512-YtNKYPk2daq4ByS7WccRiYxTi80/GXTPObYmbNiS9OXA4+Er/JwCB77CkVCL+TQ8z/LWzPulR+w4PParLTXdKA==" + "version": "2.1.0-beta.8", + "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.8.tgz", + "integrity": "sha512-u8DVO9gZKnPk7iKTnKi8ecQ8qTNqehXRLzBFbEwlov0BnHtLnoygXw/4YrSTYrA6f0Z1MhmQTCaQzCjx7x33VQ==", + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.14.1" + } }, "node_modules/@openfin/cloud-interop": { "version": "0.4.0", @@ -3654,44 +3799,19 @@ } }, "node_modules/@openfin/cloud-interop/node_modules/@openfin/core": { - "version": "37.81.17", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.17.tgz", - "integrity": "sha512-EFpXM/420GPPgFoOs5Fh9GRo5by1wOt35DKC3Rd12pZwCNeZTHpkgDHljQK/sTfbGzJqvZ/DpIJjKJRkwHMmig==", + "version": "37.81.19", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.19.tgz", + "integrity": "sha512-cfDQVxyQave/Zbpcfxj6PDGgtGJGKogqzg2CDjKhnuPqIfctdteuekmdeBtPo0EjQZIzjD8STi2S057wFEg9SQ==", "dependencies": { "@types/node": "^16.0.0", "lodash": "^4.17.21", "ws": "^7.3.0" } }, - "node_modules/@openfin/cloud-interop/node_modules/@types/node": { - "version": "16.18.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", - "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" - }, - "node_modules/@openfin/cloud-interop/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@openfin/core": { - "version": "36.80.8", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.8.tgz", - "integrity": "sha512-SCAGTXzMVMNzjG3gWMO/vbNTWCvfm2guIW+AVZ0nUuMi6DBI6vx2TjljjOL1fvfY933J4b5LhtqiD3CUFnRY7g==", + "version": "36.80.10", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.10.tgz", + "integrity": "sha512-B/OixAQ4iz8DtUdKyIQr8PUME5wzJ/8w34m2nqNkisAaFHXew3yuoGhEUKL1GldzgpKCiGFnyW8QOm4mGkdutQ==", "bundleDependencies": [ "openfin-adapter" ], @@ -3702,31 +3822,6 @@ "ws": "^7.3.0" } }, - "node_modules/@openfin/core/node_modules/@types/node": { - "version": "16.18.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", - "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" - }, - "node_modules/@openfin/core/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@openfin/excel": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@openfin/excel/-/excel-1.5.0.tgz", @@ -3759,9 +3854,9 @@ } }, "node_modules/@openfin/node-adapter": { - "version": "36.80.8", - "resolved": "https://registry.npmjs.org/@openfin/node-adapter/-/node-adapter-36.80.8.tgz", - "integrity": "sha512-R31U2PUYQq0ca6hPL8N+GzUFlrnSQOG8RoEi5mL7ALCCppQiS3MooH/+avarWM4zlPmAjEBFo5tZcDwH0SpiFw==", + "version": "36.80.10", + "resolved": "https://registry.npmjs.org/@openfin/node-adapter/-/node-adapter-36.80.10.tgz", + "integrity": "sha512-BtuqcqGcbaLWt7creYTzkgzzQxV0nRVTr89dtleL9+mnAhoJrYkoG6+jIok+ykTrMHn6r9MSheOHJn0JmJwJ0A==", "bundleDependencies": [ "openfin-adapter" ], @@ -3773,33 +3868,6 @@ "ws": "^7.3.0" } }, - "node_modules/@openfin/node-adapter/node_modules/@types/node": { - "version": "16.18.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", - "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==", - "dev": true - }, - "node_modules/@openfin/node-adapter/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@openfin/openid-connect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@openfin/openid-connect/-/openid-connect-1.0.0.tgz", @@ -3841,9 +3909,9 @@ } }, "node_modules/@openfin/workspace": { - "version": "18.0.7", - "resolved": "https://registry.npmjs.org/@openfin/workspace/-/workspace-18.0.7.tgz", - "integrity": "sha512-2LSWsaH9TdzASw/rsEwgeyfVPAI7cm9yaNg7WR1AWn05XCJgBXnMeYpB+KRtmGqu4A5VQqH8YJI3vm6iR5ILlg==", + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@openfin/workspace/-/workspace-18.0.8.tgz", + "integrity": "sha512-KHfrUiiccokLx+OTif9+pzpvsMgKARN5wmTfgi4GMK/isZ2RB1JgULT12BBlKHDAt80NGrPfK+SUT+aKFuObuA==", "dependencies": { "@openfin/microsoft365": "^1.0.1", "@radix-ui/react-dropdown-menu": "^2.0.4", @@ -3861,7 +3929,7 @@ "lodash.merge": "^4.6.2", "next": "^12.3.4", "nprogress": "0.2.0", - "openfin-notifications": "2.4.0-alpha-3443", + "openfin-notifications": "2.5.0", "react": "17.0.2", "react-color": "2.19.3", "react-dom": "17.0.2", @@ -3875,14 +3943,14 @@ "title-case": "3.0.3" }, "peerDependencies": { - "@openfin/core": "36.80.8", + "@openfin/core": "36.80.10", "@openfin/microsoft365": "^1.0.0" } }, "node_modules/@openfin/workspace-platform": { - "version": "18.0.7", - "resolved": "https://registry.npmjs.org/@openfin/workspace-platform/-/workspace-platform-18.0.7.tgz", - "integrity": "sha512-SxpVWh3sssqEiEtZEGdmcRAjpHEjwrkGUKGDQxOWbUChcMouu9leYR4BnbwAqPRsejxta/EgH4SODowqLcyCRw==", + "version": "18.0.8", + "resolved": "https://registry.npmjs.org/@openfin/workspace-platform/-/workspace-platform-18.0.8.tgz", + "integrity": "sha512-8Uq1FynEaxf0oFuKdZefQmAKP3mZz2HNnxv5MTCnLVSNVeP1HAvrfUWerL64e1ZVqqjxgjTrTa0P+8PwJjcjjw==", "dependencies": { "@openfin/microsoft365": "^1.0.1", "@radix-ui/react-dropdown-menu": "^2.0.4", @@ -3900,7 +3968,7 @@ "lodash.merge": "^4.6.2", "next": "^12.3.4", "nprogress": "0.2.0", - "openfin-notifications": "2.4.0-alpha-3443", + "openfin-notifications": "2.5.0", "react": "17.0.2", "react-color": "2.19.3", "react-dom": "17.0.2", @@ -3914,7 +3982,7 @@ "title-case": "3.0.3" }, "peerDependencies": { - "@openfin/core": "36.80.8" + "@openfin/core": "36.80.10" } }, "node_modules/@pkgjs/parseargs": { @@ -3951,6 +4019,45 @@ "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, + "node_modules/@promptbook/core": { + "version": "0.44.0-1", + "resolved": "https://registry.npmjs.org/@promptbook/core/-/core-0.44.0-1.tgz", + "integrity": "sha512-+HS9RPOYj7v+SYxzUeJGfgffh1Kp2YsLlGy4CkWlxtk2NAcSz8IokhlJbed7WyMH0I+EvoKnD3DAU6ZadNjIvA==", + "dev": true, + "peer": true, + "dependencies": { + "spacetrim": "0.11.2" + } + }, + "node_modules/@promptbook/utils": { + "version": "0.44.0-1", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.44.0-1.tgz", + "integrity": "sha512-6twWfKlM0wOqPTzyKKCn2OcXVxloveTfK/x2sFDIqOiyMYehrHVksrETEqr0QnZ4uY/yLMs6jIx5DdDlJrUJQw==", + "dev": true, + "dependencies": { + "moment": "^2.30.1", + "prettier": "2.8.1", + "spacetrim": "0.11.2" + }, + "peerDependencies": { + "@promptbook/core": "0.44.0-1" + } + }, + "node_modules/@promptbook/utils/node_modules/prettier": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@puppeteer/browsers": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", @@ -3972,72 +4079,6 @@ "node": ">=16.3.0" } }, - "node_modules/@puppeteer/browsers/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@puppeteer/browsers/node_modules/http-proxy-agent": { - "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==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@puppeteer/browsers/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@puppeteer/browsers/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@puppeteer/browsers/node_modules/proxy-agent": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", - "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.2", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/@radix-ui/primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", @@ -4590,84 +4631,96 @@ } } }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@sentry-internal/feedback": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.110.0.tgz", - "integrity": "sha512-hrfWa3WkSOiBO5Srcr1j4kuGOlbsQic+REpLOofllVIs56DOo9+Aj9svxT+dcvZERv/nlFSV/E0BfGy9g08IEg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.110.1.tgz", + "integrity": "sha512-0aR3wuEW+SZKOVNamuy0pTQyPmqDjWPPLrB2GAXGT3ZjrVxjEzzVPqk6DVBYxSV2MuJaD507SZnvfoSPNgoBmw==", "dependencies": { - "@sentry/core": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.110.0.tgz", - "integrity": "sha512-SNa+AfyfX+vc6Xw0pIfDsa5Qnc9cpexU6M2D19gadtVhmep7qoFBuhBVZrSv6BtdCxvrb5EyYsHYGfjQdIDcvg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.110.1.tgz", + "integrity": "sha512-zdcCmWFXM4DHOau/BCZVb6jf9zozdbAiJ1MzQ6azuZEuysOl00YfktoWZBbZjjjpWT6025s+wrmFz54t0O+enw==", "dependencies": { - "@sentry/core": "7.110.0", - "@sentry/replay": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry/core": "7.110.1", + "@sentry/replay": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.110.0.tgz", - "integrity": "sha512-IIHHa9e/mE7uOMJfNELI8adyoELxOy6u6TNCn5t6fphmq84w8FTc9adXkG/FY2AQpglkIvlILojfMROFB2aaAQ==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.110.1.tgz", + "integrity": "sha512-4kTd6EM0OP1SVWl2yLn3KIwlCpld1lyhNDeR8G1aKLm1PN+kVsR6YB/jy9KPPp4Q3lN3W9EkTSES3qhP4jVffQ==", "dependencies": { - "@sentry/core": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.110.0.tgz", - "integrity": "sha512-gIxedVm6ZgkjQfgCDgLWJgAsolq6OxV8hQ2j1+RaDL2RngvelFo/vlX5f2sD6EbjVp77Cri8u5GkMJF+v4p84g==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.110.1.tgz", + "integrity": "sha512-H3TZlbdsgxuoVxhotMtBDemvAofx3UPNcS+UjQ40Bd+hKX01IIbEN3i+9RQ0jmcbU6xjf+yhjwp+Ejpm4FmYMw==", "dependencies": { - "@sentry-internal/feedback": "7.110.0", - "@sentry-internal/replay-canvas": "7.110.0", - "@sentry-internal/tracing": "7.110.0", - "@sentry/core": "7.110.0", - "@sentry/replay": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry-internal/feedback": "7.110.1", + "@sentry-internal/replay-canvas": "7.110.1", + "@sentry-internal/tracing": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/replay": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.110.0.tgz", - "integrity": "sha512-g4suCQO94mZsKVaAbyD1zLFC5YSuBQCIPHXx9fdgtfoPib7BWjWWePkllkrvsKAv4u8Oq05RfnKOhOMRHpOKqg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.110.1.tgz", + "integrity": "sha512-yC1yeUFQlmHj9u/KxKmwOMVanBmgfX+4MZnZU31QPqN95adyZTwpaYFZl4fH5kDVnz7wXJI0qRP8SxuMePtqhw==", "dependencies": { - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.110.0.tgz", - "integrity": "sha512-ryfA2QR41PV+kP3g0lGvpDZ+OkuxSdj2nTjCqPeZKHsK45GYvDMlWkukdHbwrx8ulkbAcWEjPmuZZzHspyieNw==", - "dependencies": { - "@sentry/browser": "7.110.0", - "@sentry/core": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.110.1.tgz", + "integrity": "sha512-kXdMrDexPyBf0KP/IfgCk5NS1Yfz6tFK/+UKWTxEM5PVRZkHzV7CBdd50IFGL3xMGbJmtE5Bly6WzezqUgWZ5w==", + "dependencies": { + "@sentry/browser": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4678,33 +4731,33 @@ } }, "node_modules/@sentry/replay": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.110.0.tgz", - "integrity": "sha512-EEpGPf3iBJjWejvoxKLVMnLtLNwPTUxHJV1oxUkbcSi3B/tG5hW7LArYDjAcvkfa4VmA8JLCwj2vYU5MQ8tj6g==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.110.1.tgz", + "integrity": "sha512-R49fGOuKYsJ97EujPTzMjs3ZSuSkLTFFQmVBbsu/o6beRp4kK9l8H7r2BfLEcWJOXdWO5EU4KpRWgIxHaDK2aw==", "dependencies": { - "@sentry-internal/tracing": "7.110.0", - "@sentry/core": "7.110.0", - "@sentry/types": "7.110.0", - "@sentry/utils": "7.110.0" + "@sentry-internal/tracing": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.110.0.tgz", - "integrity": "sha512-DqYBLyE8thC5P5MuPn+sj8tL60nCd/f5cerFFPcudn5nJ4Zs1eI6lKlwwyHYTEu5c4KFjCB0qql6kXfwAHmTyA==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.110.1.tgz", + "integrity": "sha512-sZxOpM5gfyxvJeWVvNpHnxERTnlqcozjqNcIv29SZ6wonlkekmxDyJ3uCuPv85VO54WLyA4uzskPKnNFHacI8A==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.110.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.110.0.tgz", - "integrity": "sha512-VBsdLLN+5tf73fhf/Cm7JIsUJ6y9DkJj8h4I6Mxx0rszrvOyH6S5px40K+V4jdLBzMEvVinC7q2Cbf1YM18BSw==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.110.1.tgz", + "integrity": "sha512-eibLo2m1a7sHkOHxYYmRujr3D7ek2l9sv26F1SLoQBVDF7Afw5AKyzPmtA1D+4M9P/ux1okj7cGj3SaBrVpxXA==", "dependencies": { - "@sentry/types": "7.110.0" + "@sentry/types": "7.110.1" }, "engines": { "node": ">=8" @@ -5076,12 +5129,9 @@ "dev": true }, "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==", - "dependencies": { - "undici-types": "~5.26.4" - } + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" }, "node_modules/@types/node-emoji": { "version": "1.8.2", @@ -5101,9 +5151,9 @@ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", - "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", + "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": { @@ -5113,9 +5163,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.77", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.77.tgz", - "integrity": "sha512-CUT9KUUF+HytDM7WiXKLF9qUSg4tGImwy4FXTlfEDPEkkNUzJ7rVFolYweJ9fS1ljoIaP7M7Rdjc5eUm/Yu5AA==", + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -5232,17 +5282,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", - "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", + "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", "dev": true, "peer": true, "dependencies": { "@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", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/type-utils": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -5268,16 +5318,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", - "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", "dev": true, "peer": true, "dependencies": { - "@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", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4" }, "engines": { @@ -5297,14 +5347,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "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==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", + "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0" + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5315,14 +5365,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", - "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", + "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.6.0", - "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/utils": "7.7.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5343,9 +5393,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", - "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", + "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", "dev": true, "peer": true, "engines": { @@ -5357,14 +5407,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", - "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", + "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5402,18 +5452,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", - "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", + "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@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", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", "semver": "^7.6.0" }, "engines": { @@ -5428,13 +5478,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "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==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", + "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/types": "7.7.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -5503,46 +5553,13 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/cli/node_modules/@wdio/config": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", - "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/cli/node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "node_modules/@wdio/cli/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==", "dev": true, "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" + "undici-types": "~5.26.4" } }, "node_modules/@wdio/cli/node_modules/chalk": { @@ -5557,37 +5574,16 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/@wdio/cli/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/cli/node_modules/devtools-protocol": { "version": "0.0.1263784", "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1263784.tgz", "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, - "node_modules/@wdio/cli/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/@wdio/cli/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "engines": { "node": ">=12" @@ -5596,563 +5592,116 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/@wdio/cli/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=16.17" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@wdio/cli/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", + "node_modules/@wdio/cli/node_modules/webdriver": { + "version": "8.34.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.34.0.tgz", + "integrity": "sha512-r8oe6tIm2qSdLNhzwVpVMWJvuoZTbeTZI21+EidqZtp6krlnJzd+hIRD5ojTm+yYi86JlRQnMMQ40LUBsAGVsQ==", "dev": true, "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" + "@types/node": "^20.1.0", + "@types/ws": "^8.5.3", + "@wdio/config": "8.34.0", + "@wdio/logger": "8.28.0", + "@wdio/protocols": "8.32.0", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "deepmerge-ts": "^5.1.0", + "got": "^12.6.1", + "ky": "^0.33.0", + "ws": "^8.8.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.13 || >=18" } }, - "node_modules/@wdio/cli/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==", + "node_modules/@wdio/cli/node_modules/webdriverio": { + "version": "8.34.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.34.1.tgz", + "integrity": "sha512-9C+sy8mkvIGdKFFHL5oq6s2Uhq1lsAXybG3MsF0QA2822Jm+oYHN4KohrOGF0yBJc/x5JRaW3/hXvldnj7a55A==", "dev": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "@types/node": "^20.1.0", + "@wdio/config": "8.34.0", + "@wdio/logger": "8.28.0", + "@wdio/protocols": "8.32.0", + "@wdio/repl": "8.24.12", + "@wdio/types": "8.32.4", + "@wdio/utils": "8.33.1", + "archiver": "^7.0.0", + "aria-query": "^5.0.0", + "css-shorthand-properties": "^1.1.1", + "css-value": "^0.0.1", + "devtools-protocol": "^0.0.1263784", + "grapheme-splitter": "^1.0.2", + "import-meta-resolve": "^4.0.0", + "is-plain-obj": "^4.1.0", + "lodash.clonedeep": "^4.5.0", + "lodash.zip": "^4.2.0", + "minimatch": "^9.0.0", + "puppeteer-core": "^20.9.0", + "query-selector-shadow-dom": "^1.0.0", + "resq": "^1.9.1", + "rgb2hex": "0.2.5", + "serialize-error": "^11.0.1", + "webdriver": "8.34.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^16.13 || >=18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "devtools": "^8.14.0" + }, + "peerDependenciesMeta": { + "devtools": { + "optional": true + } } }, - "node_modules/@wdio/cli/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/@wdio/cli/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@wdio/cli/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==", - "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" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/cli/node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/@wdio/cli/node_modules/inquirer": { - "version": "9.2.12", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", - "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", - "dev": true, - "dependencies": { - "@ljharb/through": "^2.3.11", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^5.0.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/@wdio/cli/node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/cli/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/@wdio/cli/node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/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/@wdio/cli/node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/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/@wdio/cli/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/read-pkg-up": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.0.0.tgz", - "integrity": "sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==", - "dev": true, - "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^8.0.0", - "type-fest": "^3.12.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/read-pkg/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/@wdio/cli/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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/cli/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/cli/node_modules/webdriver": { + "node_modules/@wdio/config": { "version": "8.34.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.34.0.tgz", - "integrity": "sha512-r8oe6tIm2qSdLNhzwVpVMWJvuoZTbeTZI21+EidqZtp6krlnJzd+hIRD5ojTm+yYi86JlRQnMMQ40LUBsAGVsQ==", - "dev": true, - "dependencies": { - "@types/node": "^20.1.0", - "@types/ws": "^8.5.3", - "@wdio/config": "8.34.0", - "@wdio/logger": "8.28.0", - "@wdio/protocols": "8.32.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "deepmerge-ts": "^5.1.0", - "got": "^12.6.1", - "ky": "^0.33.0", - "ws": "^8.8.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/cli/node_modules/webdriverio": { - "version": "8.34.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.34.1.tgz", - "integrity": "sha512-9C+sy8mkvIGdKFFHL5oq6s2Uhq1lsAXybG3MsF0QA2822Jm+oYHN4KohrOGF0yBJc/x5JRaW3/hXvldnj7a55A==", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", + "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", "dev": true, "dependencies": { - "@types/node": "^20.1.0", - "@wdio/config": "8.34.0", "@wdio/logger": "8.28.0", - "@wdio/protocols": "8.32.0", - "@wdio/repl": "8.24.12", "@wdio/types": "8.32.4", "@wdio/utils": "8.33.1", - "archiver": "^7.0.0", - "aria-query": "^5.0.0", - "css-shorthand-properties": "^1.1.1", - "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1263784", - "grapheme-splitter": "^1.0.2", - "import-meta-resolve": "^4.0.0", - "is-plain-obj": "^4.1.0", - "lodash.clonedeep": "^4.5.0", - "lodash.zip": "^4.2.0", - "minimatch": "^9.0.0", - "puppeteer-core": "^20.9.0", - "query-selector-shadow-dom": "^1.0.0", - "resq": "^1.9.1", - "rgb2hex": "0.2.5", - "serialize-error": "^11.0.1", - "webdriver": "8.34.0" - }, - "engines": { - "node": "^16.13 || >=18" - }, - "peerDependencies": { - "devtools": "^8.14.0" - }, - "peerDependenciesMeta": { - "devtools": { - "optional": true - } - } - }, - "node_modules/@wdio/cli/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wdio/cli/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", - "dev": true, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@wdio/config": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", - "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -6162,18 +5711,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/config/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wdio/config/node_modules/glob": { "version": "10.3.12", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", @@ -6224,61 +5761,14 @@ "webdriverio": "8.34.1" } }, - "node_modules/@wdio/globals/node_modules/@wdio/config": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", - "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", - "dev": true, - "optional": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/globals/node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "node_modules/@wdio/globals/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==", "dev": true, "optional": true, "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/globals/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "optional": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "undici-types": "~5.26.4" } }, "node_modules/@wdio/globals/node_modules/devtools-protocol": { @@ -6288,29 +5778,6 @@ "dev": true, "optional": true }, - "node_modules/@wdio/globals/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==", - "dev": true, - "optional": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@wdio/globals/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6407,6 +5874,28 @@ } } }, + "node_modules/@wdio/globals/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@wdio/local-runner": { "version": "8.34.1", "resolved": "https://registry.npmjs.org/@wdio/local-runner/-/local-runner-8.34.1.tgz", @@ -6426,6 +5915,15 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/local-runner/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@wdio/logger": { "version": "8.28.0", "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.28.0.tgz", @@ -6497,40 +5995,13 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", - "dev": true, - "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/mocha-framework/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", + "node_modules/@wdio/mocha-framework/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==", "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "undici-types": "~5.26.4" } }, "node_modules/@wdio/protocols": { @@ -6551,6 +6022,15 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/repl/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@wdio/reporter": { "version": "8.32.4", "resolved": "https://registry.npmjs.org/@wdio/reporter/-/reporter-8.32.4.tgz", @@ -6567,6 +6047,15 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/reporter/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@wdio/runner": { "version": "8.34.1", "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.34.1.tgz", @@ -6589,58 +6078,13 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/runner/node_modules/@wdio/config": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", - "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/runner/node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "node_modules/@wdio/runner/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==", "dev": true, "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/runner/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "undici-types": "~5.26.4" } }, "node_modules/@wdio/runner/node_modules/devtools-protocol": { @@ -6649,28 +6093,6 @@ "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, - "node_modules/@wdio/runner/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==", - "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" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@wdio/runner/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6763,6 +6185,27 @@ } } }, + "node_modules/@wdio/runner/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@wdio/shared-store-service": { "version": "8.34.1", "resolved": "https://registry.npmjs.org/@wdio/shared-store-service/-/shared-store-service-8.34.1.tgz", @@ -6780,58 +6223,13 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/shared-store-service/node_modules/@wdio/config": { - "version": "8.34.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.34.0.tgz", - "integrity": "sha512-dtVGW/QEqM/WLUEZvca09y12L+hMZnzuwGuSzdG8B3wT6OaT+lSktU842HqHPC7OnZ27kRORhDJM6JLDy1T7dw==", - "dev": true, - "dependencies": { - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.33.1", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.0.0", - "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/shared-store-service/node_modules/@wdio/utils": { - "version": "8.33.1", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", - "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", + "node_modules/@wdio/shared-store-service/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==", "dev": true, "dependencies": { - "@puppeteer/browsers": "^1.6.0", - "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "decamelize": "^6.0.0", - "deepmerge-ts": "^5.1.0", - "edgedriver": "^5.3.5", - "geckodriver": "^4.3.1", - "get-port": "^7.0.0", - "import-meta-resolve": "^4.0.0", - "locate-app": "^2.1.0", - "safaridriver": "^0.1.0", - "split2": "^4.2.0", - "wait-port": "^1.0.4" - }, - "engines": { - "node": "^16.13 || >=18" - } - }, - "node_modules/@wdio/shared-store-service/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "undici-types": "~5.26.4" } }, "node_modules/@wdio/shared-store-service/node_modules/devtools-protocol": { @@ -6840,28 +6238,6 @@ "integrity": "sha512-k0SCZMwj587w4F8QYbP5iIbSonL6sd3q8aVJch036r9Tv2t9b5/Oq7AiJ/FJvRuORm/pJNXZtrdNNWlpRnl56A==", "dev": true }, - "node_modules/@wdio/shared-store-service/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==", - "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" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@wdio/shared-store-service/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -6954,6 +6330,27 @@ } } }, + "node_modules/@wdio/shared-store-service/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@wdio/spec-reporter": { "version": "8.32.4", "resolved": "https://registry.npmjs.org/@wdio/spec-reporter/-/spec-reporter-8.32.4.tgz", @@ -6994,10 +6391,19 @@ "node": "^16.13 || >=18" } }, + "node_modules/@wdio/types/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@wdio/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", + "version": "8.33.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.33.1.tgz", + "integrity": "sha512-W0ArrZbs4M23POv8+FPsgHDFxg+wwklfZgLSsjVq2kpCmBCfIPxKSAOgTo/XrcH4We/OnshgBzxLcI+BHDgi4w==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", @@ -7018,18 +6424,6 @@ "node": "^16.13 || >=18" } }, - "node_modules/@wdio/utils/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@webassemblyjs/ast": { "version": "1.12.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", @@ -7294,15 +6688,15 @@ } }, "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -7650,22 +7044,13 @@ "url": "https://www.patreon.com/feross" }, { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver/node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "dev": true, - "engines": { - "node": ">=8.0.0" + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "node_modules/archiver/node_modules/ieee754": { @@ -8006,9 +7391,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1598.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1598.0.tgz", - "integrity": "sha512-/oPetmY5v62lAt2jTRfIEHrdrg8hfz5KI8qvvP/jhFdNJfLZ85nsn3+fSS8i3FgfeWXIS5yv4ZPpA+JNAnBwdQ==", + "version": "2.1601.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1601.0.tgz", + "integrity": "sha512-znwVdKs3g0j1cAFfi+PGPSmBxXjiekJXp1nnOUq4rxXYvN7av8gxptXaQz+vqB4uhNFsD+OXNQh+6bd9eQxZmw==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -8322,21 +7707,20 @@ } }, "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.12.tgz", + "integrity": "sha512-EnEYHilP93oaOa2MnmNEjAcovPS3JlQZOyzGXi3EyEpPhm9qWvdDp7BmAVEVusGzp8LlwQK56Av+OkDoRjzE0w==", "dependencies": { - "buffer": "^5.5.0", + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "readable-stream": "^4.2.0" } }, "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -8353,21 +7737,49 @@ ], "dependencies": { "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "ieee754": "^1.2.1" } }, + "node_modules/bl/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/bl/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, + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", + "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/bl/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" } }, "node_modules/bluebird": { @@ -8527,12 +7939,12 @@ } }, "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", "dev": true, "engines": { - "node": "*" + "node": ">=8.0.0" } }, "node_modules/buffer-equal": { @@ -8715,9 +8127,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001609", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001609.tgz", - "integrity": "sha512-JFPQs34lHKx1B5t1EpQpWH4c+29zIyn/haGsbpfq3suuV9v56enjFt23zqijxGTMwy1p/4H2tjnQMY+p1WoAyA==", + "version": "1.0.30001611", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", + "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", "funding": [ { "type": "opencollective", @@ -8789,18 +8201,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/chalk/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/char-regex": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", @@ -8896,6 +8296,34 @@ "node": ">=18" } }, + "node_modules/chromedriver/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/chromedriver/node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/chromium-bidi": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", @@ -9016,6 +8444,12 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "node_modules/cli-truncate/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -9049,12 +8483,12 @@ } }, "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", "dev": true, "engines": { - "node": ">= 10" + "node": ">= 12" } }, "node_modules/clipboardy": { @@ -9072,15 +8506,153 @@ "node": ">=8" } }, + "node_modules/clipboardy/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, + "peer": 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/clipboardy/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, + "peer": 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/clipboardy/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==", + "dev": true, + "peer": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clipboardy/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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/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==", + "dev": true, + "peer": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/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, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/clipboardy/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, + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/clipboardy/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, + "peer": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/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, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/clipboardy/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "peer": true + }, + "node_modules/clipboardy/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "peer": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "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": { @@ -9480,9 +9052,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", "dev": true, "dependencies": { "browserslist": "^4.23.0" @@ -9783,12 +9355,12 @@ "peer": true }, "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "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": ">= 14" + "node": ">= 12" } }, "node_modules/data-urls": { @@ -9887,12 +9459,12 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", + "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10157,9 +9729,9 @@ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/devtools-protocol": { - "version": "0.0.1273771", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz", - "integrity": "sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==", + "version": "0.0.1282316", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1282316.tgz", + "integrity": "sha512-i7eIqWdVxeXBY/M+v83yRkOV1sTHnr3XYiC0YNBivLIE6hBfE2H0c2o8VC5ynT44yjy+Ei0kLrBQFK/RUKaAHQ==", "dev": true }, "node_modules/diff": { @@ -10298,18 +9870,6 @@ "edgedriver": "bin/edgedriver.js" } }, - "node_modules/edgedriver/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/edgedriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -10341,9 +9901,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -10356,9 +9916,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.735", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.735.tgz", - "integrity": "sha512-pkYpvwg8VyOTQAeBqZ7jsmpCjko1Qc6We1ZtZCjRyYbT5v4AIUKDy5cQTRotQlSSZmMr8jqpEt6JtOj5k7lR7A==" + "version": "1.4.740", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", + "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==" }, "node_modules/emittery": { "version": "0.13.1", @@ -10373,9 +9933,9 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "node_modules/emojis-list": { @@ -10987,6 +10547,13 @@ "concat-map": "0.0.1" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "peer": true + }, "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11195,6 +10762,135 @@ "eslint": ">=8.56.0" } }, + "node_modules/eslint-plugin-unicorn/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/eslint-plugin-unicorn/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/eslint-plugin-unicorn/node_modules/normalize-package-data/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/eslint-plugin-unicorn/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/eslint-plugin-unicorn/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-plugin-unicorn/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==", + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-plugin-unicorn/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==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-plugin-unicorn/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint-plugin-unicorn/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_modules/eslint-plugin-unused-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.1.0.tgz", @@ -11346,132 +11042,63 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "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, - "peer": 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, - "peer": 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/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, - "peer": 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, - "peer": 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==", + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "peer": 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==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "dev": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "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==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "peer": true, "dependencies": { - "isexe": "^2.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, "node_modules/exif-parser": { @@ -11507,9 +11134,9 @@ } }, "node_modules/expect-webdriverio": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.12.2.tgz", - "integrity": "sha512-tmfOzPWTWzGa0678Ru5qmGX1g8v3AtDdK4Ko64WV4l3jSrcudMTxCOyeY0LWSN30923BBqZaWJwlx/u+T6UNBw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.13.0.tgz", + "integrity": "sha512-y2LF6vECifTOiOk0i0FMPWJGyntiW+eqzQWFZimu9Cae8XMUH5q4F5SzpfGCxsvmOdf3uFjlr+u9IXrQBN5o0Q==", "dev": true, "dependencies": { "@vitest/snapshot": "^1.2.2", @@ -11790,27 +11417,31 @@ } }, "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" }, "engines": { - "node": ">=8" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/file-entry-cache": { @@ -12048,6 +11679,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/fkill-cli/node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -12083,6 +11723,30 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/fkill-cli/node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fkill-cli/node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/fkill-cli/node_modules/fkill": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/fkill/-/fkill-8.1.1.tgz", @@ -12115,6 +11779,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/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/fkill-cli/node_modules/indent-string": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", @@ -12127,6 +11800,63 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/fkill-cli/node_modules/inquirer-autocomplete-prompt": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", + "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.1", + "chalk": "^4.0.0", + "figures": "^3.2.0", + "run-async": "^2.4.0", + "rxjs": "^6.6.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/fkill-cli/node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, "node_modules/fkill-cli/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -12139,6 +11869,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/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/fkill-cli/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, "node_modules/fkill-cli/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -12151,6 +11896,21 @@ "node": ">=8" } }, + "node_modules/fkill-cli/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/fkill-cli/node_modules/pid-port": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/pid-port/-/pid-port-0.2.0.tgz", @@ -12166,6 +11926,30 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/fkill-cli/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/fkill-cli/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": ">=6" + } + }, "node_modules/fkill-cli/node_modules/taskkill": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/taskkill/-/taskkill-4.0.0.tgz", @@ -12182,6 +11966,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill-cli/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/fkill-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/fkill/node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -12217,6 +12021,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill/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/fkill/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -12229,6 +12042,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fkill/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/fkill/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -12241,6 +12063,36 @@ "node": ">=8" } }, + "node_modules/fkill/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/fkill/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/fkill/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": ">=6" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -12335,18 +12187,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/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, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", @@ -12475,6 +12315,48 @@ "node": ">=0.6" } }, + "node_modules/fstream/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/fstream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fstream/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/fstream/node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -12569,56 +12451,6 @@ "node": "^16.13 || >=18 || >=20" } }, - "node_modules/geckodriver/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/decamelize": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-6.0.0.tgz", - "integrity": "sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/geckodriver/node_modules/http-proxy-agent": { - "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==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/geckodriver/node_modules/isexe": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", @@ -12743,16 +12575,15 @@ } }, "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": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { @@ -12787,6 +12618,15 @@ "node": ">= 14" } }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/gifwrap": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", @@ -12799,19 +12639,19 @@ } }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -12834,26 +12674,6 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, - "node_modules/glob/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==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/global": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", @@ -13241,17 +13061,16 @@ } }, "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==", + "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==", "dev": true, "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/http2-wrapper": { @@ -13268,31 +13087,31 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=16.17.0" } }, "node_modules/i18next": { - "version": "23.11.1", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.1.tgz", - "integrity": "sha512-mXw4A24BiPZKRsbb9ewgSvjYd6fxFCNwJyfK6nYfSTIAX2GkCWcb598m3DFkDZmqADatvuASrKo6qwORz3VwTQ==", + "version": "23.11.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz", + "integrity": "sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA==", "funding": [ { "type": "individual", @@ -13451,77 +13270,52 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/ini": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", - "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", - "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer-autocomplete-prompt": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.4.0.tgz", - "integrity": "sha512-qHgHyJmbULt4hI+kCmwX92MnSxDs/Yhdt4wPA30qnoa01OF6uTXV8yvH4hKXgdaTNmkZ9D01MHjqKYEuJN+ONw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.3.1", - "chalk": "^4.0.0", - "figures": "^3.2.0", - "run-async": "^2.4.0", - "rxjs": "^6.6.2" - }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "inquirer": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/inquirer-autocomplete-prompt/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "node_modules/inquirer": { + "version": "9.2.12", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.12.tgz", + "integrity": "sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==", "dev": true, "dependencies": { - "tslib": "^1.9.0" + "@ljharb/through": "^2.3.11", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^5.0.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" }, "engines": { - "npm": ">=2.0.0" + "node": ">=14.18.0" } }, - "node_modules/inquirer-autocomplete-prompt/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/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, "node_modules/inquirer/node_modules/wrap-ansi": { "version": "6.2.0", @@ -13802,15 +13596,12 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/is-function": { @@ -13994,13 +13785,15 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { @@ -14048,12 +13841,12 @@ } }, "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==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14197,18 +13990,6 @@ "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", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "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", @@ -14460,6 +14241,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-changed-files/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/jest-changed-files/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -14472,6 +14262,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/jest-changed-files/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/jest-changed-files/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -14484,6 +14283,36 @@ "node": ">=8" } }, + "node_modules/jest-changed-files/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/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/jest-changed-files/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": ">=6" + } + }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -14593,6 +14422,16 @@ } } }, + "node_modules/jest-config/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/jest-config/node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -14608,6 +14447,38 @@ "node": ">=8" } }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-config/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -14939,6 +14810,48 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/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/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jest-runtime/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" + }, + "engines": { + "node": "*" + } + }, "node_modules/jest-snapshot": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", @@ -15065,6 +14978,21 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "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/jimp": { "version": "0.16.13", "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", @@ -15189,13 +15117,73 @@ "xml-name-validator": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/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/jsdom/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/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "canvas": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } @@ -15459,12 +15447,12 @@ } }, "node_modules/locate-app": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.2.29.tgz", - "integrity": "sha512-OwxwMkhz+EpQIWRTe3JlgMwPdoT2HCNnKno/0BdNp4pPuB7qpNmf1L8p3EEEXCUQqh/kzA/RJ3ZkOlTeaq9Wrw==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.5.tgz", + "integrity": "sha512-TDRQt0uUzc1oUEUjzyUbgRzaYICHrYcO/xIdDpJkL8Yp1Bkle775gCmdsl0DnifDgerE5VWH5ZMOGfhp8sTSfQ==", "dev": true, "dependencies": { - "n12": "1.8.32", + "@promptbook/utils": "0.44.0-1", "type-fest": "2.13.0", "userhome": "1.0.0" } @@ -15597,6 +15585,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-symbols/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/loglevel": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.1.tgz", @@ -15738,15 +15738,12 @@ } }, "node_modules/magic-string": { - "version": "0.30.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", - "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/make-dir": { @@ -15968,6 +15965,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/meow/node_modules/read-pkg": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", @@ -16111,12 +16120,15 @@ } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/mimic-response": { @@ -16151,9 +16163,9 @@ } }, "node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -16261,23 +16273,42 @@ "node": ">= 14.0.0" } }, - "node_modules/mocha/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/mocha/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": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=10" + } + }, + "node_modules/mocha/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/sponsors/isaacs" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, "node_modules/mocha/node_modules/yargs": { @@ -16298,6 +16329,15 @@ "node": ">=10" } }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/mochawesome": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/mochawesome/-/mochawesome-7.1.3.tgz", @@ -16365,6 +16405,15 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/mqtt": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.2.tgz", @@ -16407,82 +16456,6 @@ "process-nextick-args": "^2.0.1" } }, - "node_modules/mqtt-packet/node_modules/bl": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.12.tgz", - "integrity": "sha512-EnEYHilP93oaOa2MnmNEjAcovPS3JlQZOyzGXi3EyEpPhm9qWvdDp7BmAVEVusGzp8LlwQK56Av+OkDoRjzE0w==", - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/mqtt-packet/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/mqtt-packet/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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/mqtt-packet/node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/mqtt-packet/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/mqtt/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -16556,6 +16529,26 @@ "safe-buffer": "~5.2.0" } }, + "node_modules/mqtt/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -16563,16 +16556,13 @@ "dev": true }, "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/n12": { - "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 + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } }, "node_modules/nano-time": { "version": "1.0.0", @@ -16747,15 +16737,6 @@ "url": "https://opencollective.com/node-fetch" } }, - "node_modules/node-fetch/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/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16804,26 +16785,30 @@ } }, "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": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, - "peer": true, "dependencies": { - "path-key": "^2.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, - "peer": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/nprogress": { @@ -17003,15 +16988,15 @@ } }, "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17060,30 +17045,10 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, - "node_modules/openfin-adapter/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/openfin-notifications": { - "version": "2.4.0-alpha-3443", - "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.4.0-alpha-3443.tgz", - "integrity": "sha512-0l4lit7uat8fL9QQ6NPs7hUHRrEaSfdc6p/C2J36Dpk/0WxbVR33kbXFbLmrf3qCXh1/tMYOstp85ucAig09xw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.5.0.tgz", + "integrity": "sha512-1ShP0oyziXYN6xCIPbgAh/N8fxH/RJydoNv5fx+c+f9S+5vOuZUSYsGd3cWcESRkeuPMWU+9xFQjcyWjQ7uymw==", "dependencies": { "openfin-service-async": "^1.0.1", "openfin-service-signal": "^1.0.0", @@ -17092,7 +17057,7 @@ "styled-components": "4.4.1" }, "peerDependencies": { - "@openfin/core": "36.80.8" + "@openfin/core": "36.80.10" } }, "node_modules/openfin-service-async": { @@ -17268,6 +17233,67 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ora/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/ora/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "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" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/ora/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/ora/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/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -17354,44 +17380,6 @@ "node": ">= 14" } }, - "node_modules/pac-proxy-agent/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { - "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==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/pac-resolver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", @@ -17704,6 +17692,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pid-port/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/pid-port/node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -17716,6 +17713,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pid-port/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/pid-port/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -17728,6 +17734,36 @@ "node": ">=8" } }, + "node_modules/pid-port/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/pid-port/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/pid-port/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": ">=6" + } + }, "node_modules/pirates": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", @@ -18056,15 +18092,15 @@ } }, "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", "dev": true, "dependencies": { "agent-base": "^7.0.2", "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "lru-cache": "^7.14.1", "pac-proxy-agent": "^7.0.1", "proxy-from-env": "^1.1.0", @@ -18074,44 +18110,6 @@ "node": ">= 14" } }, - "node_modules/proxy-agent/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/http-proxy-agent": { - "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==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/proxy-agent/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -18203,52 +18201,26 @@ "dev": true, "dependencies": { "debug": "4.3.4", - "extract-zip": "2.0.1", - "progress": "2.0.3", - "proxy-agent": "6.3.0", - "tar-fs": "3.0.4", - "unbzip2-stream": "1.4.3", - "yargs": "17.7.1" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=16.3.0" - }, - "peerDependencies": { - "typescript": ">= 4.7.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/puppeteer-core/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/puppeteer-core/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" + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=12" + "node": ">=16.3.0" + }, + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/puppeteer-core/node_modules/devtools-protocol": { @@ -18257,32 +18229,6 @@ "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", "dev": true }, - "node_modules/puppeteer-core/node_modules/http-proxy-agent": { - "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==", - "dev": true, - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/puppeteer-core/node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", - "dev": true, - "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/puppeteer-core/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", @@ -18350,15 +18296,6 @@ "node": ">=12" } }, - "node_modules/puppeteer-core/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/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -18689,132 +18626,229 @@ } }, "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==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "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" + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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": "10.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.0.0.tgz", + "integrity": "sha512-jgmKiS//w2Zs+YbX039CorlkOp8FIVbSAN8r8GJHDsGlmNPXo+VeHkqAwCiQVTTx5/LwLZTcEw59z3DvcLbr0g==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "find-up": "^6.3.0", + "read-pkg": "^8.0.0", + "type-fest": "^3.12.0" }, "engines": { - "node": ">=8" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "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": "^5.0.0", - "path-exists": "^4.0.0" + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "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": "^4.1.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/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==", + "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": { - "p-try": "^2.0.0" + "yocto-queue": "^1.0.0" }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "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": "^2.2.0" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/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/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": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", + "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg/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/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", + "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/read-pkg/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "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==", + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", + "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/readable-stream": { @@ -18879,18 +18913,6 @@ "minimatch": "^5.1.0" } }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -19110,25 +19132,6 @@ "node": ">=10" } }, - "node_modules/replace-in-file/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -19263,6 +19266,36 @@ "node": ">=8" } }, + "node_modules/restore-cursor/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/restore-cursor/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/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -19298,10 +19331,49 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/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==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "engines": { "node": ">=0.12.0" @@ -19520,6 +19592,28 @@ "node": ">= 14.20.0" } }, + "node_modules/selenium-webdriver/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/semver": { "version": "7.6.0", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", @@ -19743,10 +19837,16 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/sisteransi": { "version": "1.0.5", @@ -19791,6 +19891,18 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -19829,18 +19941,6 @@ "node": ">= 14" } }, - "node_modules/socks-proxy-agent/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==", - "dev": true, - "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/sortablejs": { "version": "1.15.2", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.2.tgz", @@ -19872,6 +19972,12 @@ "source-map": "^0.6.0" } }, + "node_modules/spacetrim": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.2.tgz", + "integrity": "sha512-/rdSi1YqdWpJ2fm2tan8O9ntmAFm04K+aSBgntGJib8nw1aPYZNxGGoPq0c1bC36CbVwLzaiPOLIITQXLBM5Pw==", + "dev": true + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -20035,36 +20141,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width-cjs/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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/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", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.matchall": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", @@ -20186,12 +20262,15 @@ } }, "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==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-indent": { @@ -20327,17 +20406,15 @@ } }, "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==", + "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": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=8" } }, "node_modules/supports-preserve-symlinks-flag": { @@ -20479,6 +20556,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/taskkill/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/taskkill/node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -20491,6 +20577,21 @@ "node": ">=8" } }, + "node_modules/taskkill/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/taskkill/node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -20500,6 +20601,21 @@ "node": ">=8" } }, + "node_modules/taskkill/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/taskkill/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": ">=6" + } + }, "node_modules/tcomb": { "version": "3.2.29", "resolved": "https://registry.npmjs.org/tcomb/-/tcomb-3.2.29.tgz", @@ -20636,6 +20752,20 @@ "randombytes": "^2.1.0" } }, + "node_modules/terser-webpack-plugin/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -20674,6 +20804,26 @@ "concat-map": "0.0.1" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/test-exclude/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -20939,15 +21089,6 @@ } } }, - "node_modules/ts-jest/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/ts-loader": { "version": "9.5.1", "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", @@ -21269,7 +21410,8 @@ "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true }, "node_modules/unicorn-magic": { "version": "0.1.0", @@ -21667,18 +21809,18 @@ } }, "node_modules/webdriver": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.35.0.tgz", - "integrity": "sha512-D13EroddIXDqdq3jgO8j6sorgTWqTwEiTqwlDoJizpRIgHGBy+UjkNM7XW1yVcvt8gsD2Dei2LQth2tJEnu5Ng==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.36.0.tgz", + "integrity": "sha512-6fmZI1+OCGbhuGMLBLvA7m9TJvHU1Cyzxqd8rGzIyb8hocR53yh/olfOL1BPcjU1NXmKuU1BePSGF+yiKajiEA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.35.0", + "@wdio/config": "8.36.0", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.0", + "@wdio/utils": "8.36.0", "deepmerge-ts": "^5.1.0", "got": "^12.6.1", "ky": "^0.33.0", @@ -21688,24 +21830,145 @@ "node": "^16.13 || >=18" } }, + "node_modules/webdriver/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/webdriver/node_modules/@wdio/config": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.0.tgz", + "integrity": "sha512-sAbqnx/G+OsrMquIncFXjM4U0/E0ULMP0jDHZND75r0e1DYYCHmyacrvIHu3Jyxinl9f6+4XQdev6vqdTqPdNg==", + "dev": true, + "dependencies": { + "@wdio/logger": "8.28.0", + "@wdio/types": "8.36.0", + "@wdio/utils": "8.36.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriver/node_modules/@wdio/types": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.0.tgz", + "integrity": "sha512-0hw/PaJHqDrbIMvU08w3oMDGg89udSkqWF2hFlGAjOc20quRrhn0F1L+NhFpYdezeRKz5gpgTDIqaQs9RWKq1A==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriver/node_modules/@wdio/utils": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.0.tgz", + "integrity": "sha512-3VAbavN206qkvm6lITtOtTgscFChax7shzqHjUNln+QWMRyELtT81iw32ux2ld+Bg3F60LAmhbGodu0lJH7k2w==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.36.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriver/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==", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webdriver/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webdriver/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/webdriverio": { - "version": "8.35.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.35.1.tgz", - "integrity": "sha512-YAuKR4JERGiMqCJmm5fEVZ160iiFPyupwALqfXfzrYVcEmKltKPFY/oUCArmi6Uzqd+Sa2Kp9WZtz2Eu1R76JA==", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.36.0.tgz", + "integrity": "sha512-4WnEI+OxslHpfSnDXuADaR6bL1M7QxBUEF1mTN56AroOCJelyPvt94yRhszwQnLcJJB2OLn49eUz8M4yBCB51w==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.35.0", + "@wdio/config": "8.36.0", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", "@wdio/repl": "8.24.12", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.0", + "@wdio/utils": "8.36.0", "archiver": "^7.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1273771", + "devtools-protocol": "^0.0.1282316", "grapheme-splitter": "^1.0.2", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", @@ -21717,7 +21980,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.35.0" + "webdriver": "8.36.0" }, "engines": { "node": "^16.13 || >=18" @@ -21731,6 +21994,91 @@ } } }, + "node_modules/webdriverio/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==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/webdriverio/node_modules/@wdio/config": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.0.tgz", + "integrity": "sha512-sAbqnx/G+OsrMquIncFXjM4U0/E0ULMP0jDHZND75r0e1DYYCHmyacrvIHu3Jyxinl9f6+4XQdev6vqdTqPdNg==", + "dev": true, + "dependencies": { + "@wdio/logger": "8.28.0", + "@wdio/types": "8.36.0", + "@wdio/utils": "8.36.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.0.0", + "glob": "^10.2.2", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriverio/node_modules/@wdio/types": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.0.tgz", + "integrity": "sha512-0hw/PaJHqDrbIMvU08w3oMDGg89udSkqWF2hFlGAjOc20quRrhn0F1L+NhFpYdezeRKz5gpgTDIqaQs9RWKq1A==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriverio/node_modules/@wdio/utils": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.0.tgz", + "integrity": "sha512-3VAbavN206qkvm6lITtOtTgscFChax7shzqHjUNln+QWMRyELtT81iw32ux2ld+Bg3F60LAmhbGodu0lJH7k2w==", + "dev": true, + "dependencies": { + "@puppeteer/browsers": "^1.6.0", + "@wdio/logger": "8.28.0", + "@wdio/types": "8.36.0", + "decamelize": "^6.0.0", + "deepmerge-ts": "^5.1.0", + "edgedriver": "^5.3.5", + "geckodriver": "^4.3.1", + "get-port": "^7.0.0", + "import-meta-resolve": "^4.0.0", + "locate-app": "^2.1.0", + "safaridriver": "^0.1.0", + "split2": "^4.2.0", + "wait-port": "^1.0.4" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, + "node_modules/webdriverio/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==", + "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" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/webdriverio/node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -22170,16 +22518,22 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "utf-8-validate": "^5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -22288,12 +22642,12 @@ } }, "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "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": ">=10" + "node": ">=12" } }, "node_modules/yargs-unparser": { @@ -22344,29 +22698,6 @@ "node": ">=8" } }, - "node_modules/yargs/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/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", @@ -22377,6 +22708,15 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index f74d51aaa9..b652f3d1dd 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ ], "license": "SEE LICENSE IN LICENSE.MD", "devDependencies": { - "@openfin/node-adapter": "36.80.8", + "@openfin/node-adapter": "36.80.10", "fast-glob": "3.3.2", "fs-extra": "11.2.0", "replace-in-file": "7.1.0", From d00722d839c2afdc7c72e4c765edea9d8bfa9fb6 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 19 Apr 2024 17:11:26 +0100 Subject: [PATCH 12/23] Improved how appIds associated with views/windows are validated (#708) --- .../workspace-platform-starter/CHANGELOG.md | 1 + .../broker/app-id-helper.ts | 93 +++++++++ .../broker/wps-interop-override.ts | 59 +----- .../app-id-helper.spec.ts | 190 ++++++++++++++++++ 4 files changed, 295 insertions(+), 48 deletions(-) create mode 100644 how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/app-id-helper.ts create mode 100644 how-to/workspace-platform-starter/test/modules/interop-override/wps-interop-override/app-id-helper.spec.ts diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index 9004ab816f..fab7edaa99 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,7 @@ ## v18.0.0 +- More efficient validation of appIds associated with views/windows for faster interop based actions. The appId validation in our wps module (modules directory) has extracted into its own file and tests to ensure it continues to behave as expected across future updates have been added to the test directory. - Module Helpers now provide a getAnalyticsClient (it is marked as optional and the result could be undefined so it leaves the option for it to be denied to a module or removed). This client supports a ModuleAnalytic event which will have a source of Module assigned to it (you can still specify type and use the data property to provide additional module specific information). This data will be passed to the analyticProviders that receive the Workspace Analytic events. See [How to Configure Analytics](./docs/how-to-configure-analytics.md). - Added a cloud interop override module so that you can easily test out OpenFin's cloud interop offering. See [How To Add Cloud Interop To Your Interop Broker](./docs/how-to-add-cloud-interop-to-your-interop-broker.md). - Broke up the build process to make it easier to just build your modules. `npm run build` still builds everything and `npm run build-client` still builds all client related code but now if you change framework files you can use `npm run build-framework`, or if you modify our starter modules you can use `npm run build-starter-modules` or if you just want to build your modules (that are listed in webpack.config.js) then you can use `npm run build-client-modules`. This will let you have a much faster build. diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/app-id-helper.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/app-id-helper.ts new file mode 100644 index 0000000000..67a47d5f1a --- /dev/null +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/app-id-helper.ts @@ -0,0 +1,93 @@ +import type OpenFin from "@openfin/core"; +import type { PlatformApp } from "../../../../framework/shapes/app-shapes"; +import type { Logger } from "../../../../framework/shapes/logger-shapes"; +/** + * The AppIdHelper class provides helpful functions related to app ids. + */ +export class AppIdHelper { + private readonly _validatedAppIds: string[] = []; + + private readonly _invalidAppIds: string[] = []; + + private readonly _unregisteredApp: PlatformApp | undefined; + + private readonly _logger: Logger; + + private readonly _getApp: (appId: string) => Promise; + + private readonly _platformId: string; + + /** + * Provides helpful functions related to app ids. + * @param getApp The function to use to get an app for validation. + * @param platformId The platform id that represents the current platform. + * @param logger The logger to use + * @param unregisteredApp The app to use as a placeholder for unregistered apps. + */ + constructor( + getApp: (appId: string) => Promise, + platformId: string, + logger: Logger, + unregisteredApp?: PlatformApp + ) { + this._unregisteredApp = unregisteredApp; + this._logger = logger; + this._getApp = getApp; + this._platformId = platformId; + } + + /** + * Lookup an application identity. + * @param clientIdentity The client identity to use. + * @returns The application identity. + */ + public async lookupAppId(clientIdentity: OpenFin.ClientIdentity): Promise { + if (clientIdentity.name.startsWith("internal-generated-")) { + if (clientIdentity.uuid === this._platformId) { + if (this._unregisteredApp) { + this._logger.debug( + `A window or view that is not an app but runs within the platform is running and a placeholder app has been specified ${this._unregisteredApp?.appId}}.`, + clientIdentity + ); + return this._unregisteredApp.appId; + } + this._logger.debug( + "A window or view that is not an app but runs within the platform is running and no unregistered placeholder app is specified so no appId will be returned.", + clientIdentity + ); + return; + } + this._logger.debug( + "A window or view that follows the runtime generated naming convention is running from another platform. It will not be assigned an appId.", + clientIdentity + ); + return; + } + const nameParts = clientIdentity.name.split("/"); + let appId: string | undefined; + if (nameParts.length === 1 || nameParts.length === 2) { + appId = nameParts[0]; + } else { + appId = `${nameParts[0]}/${nameParts[1]}`; + } + + if (this._validatedAppIds.includes(appId)) { + return appId; + } + if (this._invalidAppIds.includes(appId)) { + return; + } + + // perform a lookup to validate the appId + const app = await this._getApp(appId); + + if (app) { + this._validatedAppIds.push(appId); + return appId; + } + this._invalidAppIds.push(appId); + this._logger.warn( + `AppId ${appId} does not exist in the directory and it isn't a generated view/window that falls under this platform. No app id will be returned as it is unconfirmed.` + ); + } +} diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/wps-interop-override.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/wps-interop-override.ts index 4f777493c2..afffb82eae 100644 --- a/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/wps-interop-override.ts +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/wps-interop-override/broker/wps-interop-override.ts @@ -43,6 +43,7 @@ import { sanitizeString } from "workspace-platform-starter/utils"; import { getWindowPositionUsingStrategy } from "workspace-platform-starter/utils-position"; +import { AppIdHelper } from "./app-id-helper"; import { AppIntentHelper } from "./app-intent-helper"; import { ClientRegistrationHelper } from "./client-registration-helper"; import { IntentResolverHelper } from "./intent-resolver-helper"; @@ -70,8 +71,8 @@ export async function getConstructorOverride( if (helpers?.getEndpointClient) { endpointClient = await helpers?.getEndpointClient(); } - const launch = helpers.launchApp; + return (Base: OpenFin.Constructor) => /** * Extend the InteropBroker to handle intents. @@ -89,6 +90,8 @@ export async function getConstructorOverride( private readonly _metadataKey: Readonly; + private readonly _appIdHelper: AppIdHelper; + /** * Create a new instance of InteropBroker. */ @@ -96,10 +99,6 @@ export async function getConstructorOverride( super(); logger.info("Interop Broker Constructor applying settings."); this._appIntentHelper = new AppIntentHelper(getApps, logger); - this._clientRegistrationHelper = new ClientRegistrationHelper( - async (clientIdentity: OpenFin.ClientIdentity) => this.lookupAppId(clientIdentity), - logger - ); this._metadataKey = `_metadata_${randomUUID()}`; if (options.intentResolver) { this._intentResolverHelper = new IntentResolverHelper( @@ -114,6 +113,11 @@ export async function getConstructorOverride( if (!isEmpty(this._unregisteredApp)) { this._unregisteredApp.manifestType = MANIFEST_TYPES.UnregisteredApp.id; } + this._appIdHelper = new AppIdHelper(getApp, fin.me.identity.uuid, logger, this._unregisteredApp); + this._clientRegistrationHelper = new ClientRegistrationHelper( + async (clientIdentity: OpenFin.ClientIdentity) => this._appIdHelper.lookupAppId(clientIdentity), + logger + ); } /** @@ -845,7 +849,7 @@ export async function getConstructorOverride( payload, clientIdentity )) as ImplementationMetadata; - const appId = await this.lookupAppId(clientIdentity); + const appId = await this._appIdHelper.lookupAppId(clientIdentity); if (!isEmpty(appId)) { const updatedResponse = { ...response, @@ -1356,47 +1360,6 @@ export async function getConstructorOverride( return apiMetadata.type === "fdc3" && apiMetadata.version === "2.0"; } - /** - * Lookup an application identity. - * @param clientIdentity The client identity to use. - * @returns The application identity. - */ - private async lookupAppId(clientIdentity: OpenFin.ClientIdentity): Promise { - const nameParts = clientIdentity.name.split("/"); - let app: PlatformApp | undefined; - - if (nameParts.length === 1 || nameParts.length === 2) { - app = await getApp(nameParts[0]); - } - if (nameParts.length > 2) { - app = await getApp(`${nameParts[0]}/${nameParts[1]}`); - } - - const appNotFound = isEmpty(app); - - if (appNotFound && clientIdentity.uuid !== fin.me.identity.uuid) { - logger.warn( - "Lookup made by a non-registered app that is outside of this platform.", - clientIdentity - ); - return; - } - - if (appNotFound && isEmpty(this._unregisteredApp)) { - logger.warn( - "Lookup made by a non-registered app that falls under this platform. No unregistered placeholder app is specified.", - clientIdentity - ); - return; - } - - if (appNotFound) { - app = this._unregisteredApp; - logger.info("Assigned the following unregistered app to represent the app.", app); - } - return app?.appId; - } - /** * Process a context. * @param context The context to process. @@ -1428,7 +1391,7 @@ export async function getConstructorOverride( * @returns The context metadata. */ private async getContextMetadata(clientIdentity: OpenFin.ClientIdentity): Promise { - const appId = (await this.lookupAppId(clientIdentity)) ?? clientIdentity.name; + const appId = (await this._appIdHelper.lookupAppId(clientIdentity)) ?? "unknown"; return { source: { appId, diff --git a/how-to/workspace-platform-starter/test/modules/interop-override/wps-interop-override/app-id-helper.spec.ts b/how-to/workspace-platform-starter/test/modules/interop-override/wps-interop-override/app-id-helper.spec.ts new file mode 100644 index 0000000000..56703c2168 --- /dev/null +++ b/how-to/workspace-platform-starter/test/modules/interop-override/wps-interop-override/app-id-helper.spec.ts @@ -0,0 +1,190 @@ +import type { PlatformApp } from "../../../../client/src/framework/shapes/app-shapes"; +import type { Logger } from "../../../../client/src/framework/shapes/logger-shapes"; +import { AppIdHelper } from "../../../../client/src/modules/interop-override/wps-interop-override/broker/app-id-helper"; + +describe("app-id-helper", () => { + describe("isAppIdValid", () => { + const standardApp = "test-app-1"; + const directoryBasedApp = "directory1/test-app-2"; + const internalGeneratedViewWindow = "internal-generated-test"; + const platformId = "platform-id"; + const otherPlatformId = "other-platform-id"; + const unknownAppId = "unknown-app-id"; + const logger: Logger = { + debug: console.log, + info: console.log, + warn: console.warn, + error: console.error, + trace: console.trace + }; + + const apps: string[] = [standardApp, directoryBasedApp]; + /** + * Get an app by id. + * @param appId The app id to get. + * @returns The app or undefined if not found. + */ + async function getApp(appId: string): Promise { + if (apps.includes(appId)) { + return { appId } as PlatformApp; + } + return undefined; + } + + const unregisteredApp: PlatformApp = { appId: "unregistered-app" } as PlatformApp; + + it("should return undefined for internal generated views and windows from other platforms", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger); + const validatedAppId = await appIdHelper.lookupAppId({ + name: internalGeneratedViewWindow, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBeUndefined(); + }); + + it("should return undefined for internal generated views and windows from the same platform if no unregistered app is passed.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger); + const validatedAppId = await appIdHelper.lookupAppId({ + name: internalGeneratedViewWindow, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBeUndefined(); + }); + + it("should return a defined unregistered appId for internal generated views and windows from the same platform if an unregistered app is passed.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: internalGeneratedViewWindow, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBe(unregisteredApp.appId); + }); + + it("should return an undefined appId for internal generated views and windows from a different platform even if an unregistered app is passed.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: internalGeneratedViewWindow, + uuid: otherPlatformId, + endpointId: "x", + isLocalEndpointId: false + }); + expect(validatedAppId).toBeUndefined(); + }); + + it("should return a standard appId if it exists in the directory.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: standardApp, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBe(standardApp); + }); + + it("should return a directory structured appId if it exists in the directory.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: `${directoryBasedApp}/guid`, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBe(directoryBasedApp); + }); + + it("should return a standard appId if it exists in the directory and comes from a different platform.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: standardApp, + uuid: otherPlatformId, + endpointId: "x", + isLocalEndpointId: false + }); + expect(validatedAppId).toBe(standardApp); + }); + + it("should return an undefined appId if an unlisted appId is provided.", async () => { + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const validatedAppId = await appIdHelper.lookupAppId({ + name: unknownAppId, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }); + expect(validatedAppId).toBeUndefined(); + }); + + it("A valid appId should not query the app directory more than once if queried more than once.", async () => { + const getAppSpy = jest.fn(getApp); + const appIdHelper = new AppIdHelper(getAppSpy, platformId, logger, unregisteredApp); + const clientIdentity = { + name: standardApp, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }; + let validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBe(standardApp); + expect(getAppSpy).toHaveBeenCalledTimes(1); + validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBe(standardApp); + expect(getAppSpy).toHaveBeenCalledTimes(1); + }); + + it("An invalid appId should not query the app directory more than once if queried more than once.", async () => { + const getAppSpy = jest.fn(getApp); + const appIdHelper = new AppIdHelper(getAppSpy, platformId, logger, unregisteredApp); + const clientIdentity = { + name: unknownAppId, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }; + let validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBeUndefined(); + expect(getAppSpy).toHaveBeenCalledTimes(1); + validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBeUndefined(); + expect(getAppSpy).toHaveBeenCalledTimes(1); + }); + + it("A warning should be logged if an invalid appId is passed.", async () => { + const loggerSpy = jest.spyOn(logger, "warn"); + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const clientIdentity = { + name: unknownAppId, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }; + const validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBeUndefined(); + expect(loggerSpy).toHaveBeenCalled(); + }); + + it("An invalid appId will only log one warning regardless of how many times it is checked.", async () => { + const loggerSpy = jest.spyOn(logger, "warn"); + loggerSpy.mockClear(); + const appIdHelper = new AppIdHelper(getApp, platformId, logger, unregisteredApp); + const clientIdentity = { + name: unknownAppId, + uuid: platformId, + endpointId: "x", + isLocalEndpointId: true + }; + let validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBeUndefined(); + expect(loggerSpy).toHaveBeenCalled(); + validatedAppId = await appIdHelper.lookupAppId(clientIdentity); + expect(validatedAppId).toBeUndefined(); + expect(loggerSpy).toHaveBeenCalledTimes(1); + }); + }); +}); From ec1bc66e2b5398e74c4631bdd21105c16a378e66 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 23 Apr 2024 19:13:58 +0100 Subject: [PATCH 13/23] Updated Snap to 0.3.0 (#710) --- how-to/integrate-with-snap-basic/package.json | 2 +- .../public/manifest.fin.json | 4 +- how-to/integrate-with-snap/package.json | 2 +- .../public/manifest.fin.json | 4 +- .../workspace-platform-starter/CHANGELOG.md | 1 + .../client/src/framework/integrations.ts | 2 +- .../docs/how-to-configure-snap.md | 4 +- .../workspace-platform-starter/package.json | 2 +- .../public/manifest.fin.json | 4 +- .../public/pack.manifest.fin.json | 4 +- package-lock.json | 639 +++++++++++------- package.json | 3 + 12 files changed, 402 insertions(+), 269 deletions(-) diff --git a/how-to/integrate-with-snap-basic/package.json b/how-to/integrate-with-snap-basic/package.json index 13b1c12a82..8cf96a00a0 100644 --- a/how-to/integrate-with-snap-basic/package.json +++ b/how-to/integrate-with-snap-basic/package.json @@ -20,7 +20,7 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14" }, diff --git a/how-to/integrate-with-snap-basic/public/manifest.fin.json b/how-to/integrate-with-snap-basic/public/manifest.fin.json index 5000ad708a..1e1971d80c 100644 --- a/how-to/integrate-with-snap-basic/public/manifest.fin.json +++ b/how-to/integrate-with-snap-basic/public/manifest.fin.json @@ -44,9 +44,9 @@ }, "appAssets": [ { - "src": "https://cdn.openfin.co/release/snap/0.2.0/snap.zip", + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", "alias": "openfin-snap", - "version": "0.2.0", + "version": "0.3.0", "target": "OpenFinSnap.exe", "mandatory": true }, diff --git a/how-to/integrate-with-snap/package.json b/how-to/integrate-with-snap/package.json index d1798152bc..28d893f6b6 100644 --- a/how-to/integrate-with-snap/package.json +++ b/how-to/integrate-with-snap/package.json @@ -20,7 +20,7 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14" }, diff --git a/how-to/integrate-with-snap/public/manifest.fin.json b/how-to/integrate-with-snap/public/manifest.fin.json index 321fe72a28..8cec51130e 100644 --- a/how-to/integrate-with-snap/public/manifest.fin.json +++ b/how-to/integrate-with-snap/public/manifest.fin.json @@ -47,9 +47,9 @@ }, "appAssets": [ { - "src": "https://cdn.openfin.co/release/snap/0.2.0/snap.zip", + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", "alias": "openfin-snap", - "version": "0.2.0", + "version": "0.3.0", "target": "OpenFinSnap.exe", "mandatory": true } diff --git a/how-to/workspace-platform-starter/CHANGELOG.md b/how-to/workspace-platform-starter/CHANGELOG.md index 915ced6df9..5c89c83dee 100644 --- a/how-to/workspace-platform-starter/CHANGELOG.md +++ b/how-to/workspace-platform-starter/CHANGELOG.md @@ -2,6 +2,7 @@ ## v17.2.0 +- Updated SnapSDK to version 0.3.0 - This includes a new feature in the developer tool that comes with Snap that lets you identity Snap Strategies, bug fixes and new features (windows excluded from snapshots are not tracked by the Snap Server). - 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. diff --git a/how-to/workspace-platform-starter/client/src/framework/integrations.ts b/how-to/workspace-platform-starter/client/src/framework/integrations.ts index 1e48c7d574..fc4e21b1ae 100644 --- a/how-to/workspace-platform-starter/client/src/framework/integrations.ts +++ b/how-to/workspace-platform-starter/client/src/framework/integrations.ts @@ -66,7 +66,7 @@ export async function init( integrationHelpers = { ...helpers, templateHelpers, - openUrl: async (url) => fin.System.openUrlWithBrowser(url), + openUrl: async (url): Promise => fin.System.openUrlWithBrowser(url), setSearchQuery }; diff --git a/how-to/workspace-platform-starter/docs/how-to-configure-snap.md b/how-to/workspace-platform-starter/docs/how-to-configure-snap.md index 63163fe2df..dbd16d2849 100644 --- a/how-to/workspace-platform-starter/docs/how-to-configure-snap.md +++ b/how-to/workspace-platform-starter/docs/how-to-configure-snap.md @@ -17,9 +17,9 @@ To enable snap support in your platform you can add the following in your manife "enabled": true, "id": "workspace-platform-starter", "serverAssetInfo": { - "src": "https://cdn.openfin.co/release/snap/0.2.0/snap.zip", + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", "alias": "openfin-snap", - "version": "0.2.0", + "version": "0.3.0", "target": "OpenFinSnap.exe" }, "showDebugWindow": false diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index ac03425e4e..9c1d69726b 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -53,7 +53,7 @@ "dependencies": { "@finos/fdc3": "^2.0.3", "@openfin/openid-connect": "^1.0.0", - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14", "csstype": "^3.1.3" diff --git a/how-to/workspace-platform-starter/public/manifest.fin.json b/how-to/workspace-platform-starter/public/manifest.fin.json index 0b9f55f860..bc1aad885b 100644 --- a/how-to/workspace-platform-starter/public/manifest.fin.json +++ b/how-to/workspace-platform-starter/public/manifest.fin.json @@ -1701,9 +1701,9 @@ "enabled": false, "id": "workspace-platform-starter", "serverAssetInfo": { - "src": "https://cdn.openfin.co/release/snap/0.2.0/snap.zip", + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", "alias": "openfin-snap", - "version": "0.2.0", + "version": "0.3.0", "target": "OpenFinSnap.exe" }, "showDebugWindow": false diff --git a/how-to/workspace-platform-starter/public/pack.manifest.fin.json b/how-to/workspace-platform-starter/public/pack.manifest.fin.json index 73cc4f0d5d..752701e35a 100644 --- a/how-to/workspace-platform-starter/public/pack.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/pack.manifest.fin.json @@ -859,9 +859,9 @@ "enabled": false, "id": "workspace-platform-starter", "serverAssetInfo": { - "src": "https://cdn.openfin.co/release/snap/0.2.0/snap.zip", + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", "alias": "openfin-snap", - "version": "0.2.0", + "version": "0.3.0", "target": "OpenFinSnap.exe" }, "showDebugWindow": false diff --git a/package-lock.json b/package-lock.json index 1784abdce2..c74c99664c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -747,7 +747,7 @@ "version": "17.2.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14" }, @@ -778,7 +778,7 @@ "version": "17.2.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14" }, @@ -1203,7 +1203,7 @@ "dependencies": { "@finos/fdc3": "^2.0.3", "@openfin/openid-connect": "^1.0.0", - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "17.2.14", "@openfin/workspace-platform": "17.2.14", "csstype": "^3.1.3" @@ -3779,9 +3779,12 @@ } }, "node_modules/@openfin/bloomberg/node_modules/@finos/fdc3": { - "version": "2.1.0-beta.6", - "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.6.tgz", - "integrity": "sha512-iKrAY8I6k2sWYBZ+fW0Iz5IvUHV/A3lsb/7dtkjnJhN2dzFX1HfzJ4mgMAqmXk9HNSgP8lS3hOt2DC/kiApNiA==" + "version": "2.1.0-beta.8", + "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.8.tgz", + "integrity": "sha512-u8DVO9gZKnPk7iKTnKi8ecQ8qTNqehXRLzBFbEwlov0BnHtLnoygXw/4YrSTYrA6f0Z1MhmQTCaQzCjx7x33VQ==", + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.14.1" + } }, "node_modules/@openfin/core": { "version": "34.78.80", @@ -3867,9 +3870,9 @@ "integrity": "sha512-nw9pf6BvoVuAAjegUl9lIu8Cpp13FG3jXkESm2Z3uhQhc9vragecZpRkHEP8sn67KYjaCvHHgGn1sb3QT/5YSA==" }, "node_modules/@openfin/snap-sdk": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@openfin/snap-sdk/-/snap-sdk-0.2.0.tgz", - "integrity": "sha512-F03j+4qo2sHYLbkH/wPf6TIsb2ad/MlvvVXiiAgcrBeukCaesHypg21fZDXx+/Lojr3vCbFFnpmFLueW+2Xkmg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@openfin/snap-sdk/-/snap-sdk-0.3.0.tgz", + "integrity": "sha512-VZWNuC6KKakO2AJOVRU606PfakvGQ6oZr9MOCY0Tfcu3UUTd9VuEcqWmD5y2bIFiR+bqxIVZRX1K2c6V1NlT6Q==", "dependencies": { "@openfin/core": "^32.76.10", "events": "^3.3.0" @@ -3992,6 +3995,45 @@ "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, + "node_modules/@promptbook/core": { + "version": "0.44.0-1", + "resolved": "https://registry.npmjs.org/@promptbook/core/-/core-0.44.0-1.tgz", + "integrity": "sha512-+HS9RPOYj7v+SYxzUeJGfgffh1Kp2YsLlGy4CkWlxtk2NAcSz8IokhlJbed7WyMH0I+EvoKnD3DAU6ZadNjIvA==", + "dev": true, + "peer": true, + "dependencies": { + "spacetrim": "0.11.2" + } + }, + "node_modules/@promptbook/utils": { + "version": "0.44.0-1", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.44.0-1.tgz", + "integrity": "sha512-6twWfKlM0wOqPTzyKKCn2OcXVxloveTfK/x2sFDIqOiyMYehrHVksrETEqr0QnZ4uY/yLMs6jIx5DdDlJrUJQw==", + "dev": true, + "dependencies": { + "moment": "^2.30.1", + "prettier": "2.8.1", + "spacetrim": "0.11.2" + }, + "peerDependencies": { + "@promptbook/core": "0.44.0-1" + } + }, + "node_modules/@promptbook/utils/node_modules/prettier": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/@puppeteer/browsers": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.9.1.tgz", @@ -4565,84 +4607,111 @@ } } }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.1.tgz", + "integrity": "sha512-9Q7DGjZN+hTdJomaQ3Iub4m6VPu1r94bmK2z3UeWP3dGUecRC54tmVu9vKHTm1bOt3ASoYtEz6JSRLFzrysKlA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@sentry-internal/feedback": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.109.0.tgz", - "integrity": "sha512-EL7N++poxvJP9rYvh6vSu24tsKkOveNCcCj4IM7+irWPjsuD2GLYYlhp/A/Mtt9l7iqO4plvtiQU5HGk7smcTQ==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.1.tgz", + "integrity": "sha512-ejE4eRXLqv5emxVWudBkRQCv5Q7s21thei7gqSxGLBXe8AUrCjTiD0qA1ToJAKcleIyRRf/TQvGb/T7U6vwAAw==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.109.0.tgz", - "integrity": "sha512-Lh/K60kmloR6lkPUcQP0iamw7B/MdEUEx/ImAx4tUSMrLj+IoUEcq/ECgnnVyQkJq59+8nPEKrVLt7x6PUPEjw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.112.1.tgz", + "integrity": "sha512-+xDd/LEiJZGk4PQKs4xcAWKJFzFKpuNF64DFW/JWuJ5FDnKB+t7w198nQyAZKGjupN7LixLb49Z8O2Gda7fHQQ==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/replay": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.112.1", + "@sentry/replay": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.109.0.tgz", - "integrity": "sha512-PzK/joC5tCuh2R/PRh+7dp+uuZl7pTsBIjPhVZHMTtb9+ls65WkdZJ1/uKXPouyz8NOo9Xok7aEvEo9seongyw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.1.tgz", + "integrity": "sha512-pZVIOB6+t4HlgU3mCRtIbvo//t8uQY9tnBjbJJ2nEv8nTu8A7/dZ5ebrLOWStV3bNp/+uCqLuLuuimJeNNn6vQ==", "dependencies": { - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.109.0.tgz", - "integrity": "sha512-yx+OFG+Ab9qUDDgV9ZDv8M9O9Mqr0fjKta/LMlWALYLjzkMvxsPlRPFj7oMBlHqOTVLDeg7lFYmsA8wyWQ8Z8g==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.112.1.tgz", + "integrity": "sha512-NRTo3mJbhiCd9GEFEWL8SplFJhTCPjiAlOhjUw8MnJb7pkxWm2xhC7PVi6SUE8hF/g1rrEwgUr9SX5v8+xwK6g==", "dependencies": { - "@sentry-internal/feedback": "7.109.0", - "@sentry-internal/replay-canvas": "7.109.0", - "@sentry-internal/tracing": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/replay": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry-internal/feedback": "7.112.1", + "@sentry-internal/replay-canvas": "7.112.1", + "@sentry-internal/tracing": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/integrations": "7.112.1", + "@sentry/replay": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.109.0.tgz", - "integrity": "sha512-xwD4U0IlvvlE/x/g/W1I8b4Cfb16SsCMmiEuBf6XxvAa3OfWBxKoqLifb3GyrbxMC4LbIIZCN/SvLlnGJPgszA==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.1.tgz", + "integrity": "sha512-ZhOxt4sZVLqHurWqIY1ExWYZ20ViFTbqgW2GdJGHz4XwJhBln0ZVpHD+tKXy3GBEY+2Ee4qoqHi6tDrFgPvJqw==", "dependencies": { - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.1.tgz", + "integrity": "sha512-jIgXT+ahUS7zmhDMAzsgQHCNA6ZwZAp0Bwjoz0tcuGzNcv7mOCnjHz5YooJVQgXuREV653RmEuGGTklrpn6S2w==", + "dependencies": { + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.109.0.tgz", - "integrity": "sha512-KqXoDh6LVhNO+FLdM5LiTGpuorFvjoBPQ4nPGIVbjeMY/KZIau3kFxR142EvCApxmD69yvS5EhMnEqlNdaQPGw==", - "dependencies": { - "@sentry/browser": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.112.1.tgz", + "integrity": "sha512-q0fDW3omq/NPaL7yRqWA1USxGtEAcdFZOngIMsr9Bc4fJBGXDO+xLwPWjo1MIVvdDBJJYL/9Z56ppqTb3kiGXw==", + "dependencies": { + "@sentry/browser": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4653,33 +4722,33 @@ } }, "node_modules/@sentry/replay": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.109.0.tgz", - "integrity": "sha512-hCDjbTNO7ErW/XsaBXlyHFsUhneyBUdTec1Swf98TFEfVqNsTs6q338aUcaR8dGRLbLrJ9YU9D1qKq++v5h2CA==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.112.1.tgz", + "integrity": "sha512-4lobxfgmbB2C7ZHk1inWt9IRIvlQa2Sczau5ngE4Qd4mZSKIgIYGtIJC52uOuGvBcP8gHiIbA7ACihkd7834Ew==", "dependencies": { - "@sentry-internal/tracing": "7.109.0", - "@sentry/core": "7.109.0", - "@sentry/types": "7.109.0", - "@sentry/utils": "7.109.0" + "@sentry-internal/tracing": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.109.0.tgz", - "integrity": "sha512-egCBnDv3YpVFoNzRLdP0soVrxVLCQ+rovREKJ1sw3rA2/MFH9WJ+DZZexsX89yeAFzy1IFsCp7/dEqudusml6g==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.1.tgz", + "integrity": "sha512-5dLIxWZfCXH5kExrsWc+R6loMr3RR6OQuonVNL3Fa8Dw37Q7aExCrjRmocOHeQKhHwNBd3QhYm7phjnbxS6Oaw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.109.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.109.0.tgz", - "integrity": "sha512-3RjxMOLMBwZ5VSiH84+o/3NY2An4Zldjz0EbfEQNRY9yffRiCPJSQiCJID8EoylCFOh/PAhPimBhqbtWJxX6iw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.1.tgz", + "integrity": "sha512-/AMGDD6OMvT2cpfL5KuDC10oTS8yOt7BAPomXJNS/xn1TRcEEEZ1TWbYZiGT5ijggQEL1OXSojpeQU8XEW8dcQ==", "dependencies": { - "@sentry/types": "7.109.0" + "@sentry/types": "7.112.1" }, "engines": { "node": ">=8" @@ -4894,9 +4963,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.7.tgz", - "integrity": "sha512-SjDvI/x3zsZnOkYZ3lCt9lOZWZLB2jIlNKz+LBgCtDurK0JZcwucxYHn1w2BJkD34dgX9Tjnak0txtq4WTggEA==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5051,9 +5120,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "16.18.95", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.95.tgz", - "integrity": "sha512-z9w+CcR7ahc7UhsKe+PGB25nmPmCERQBAdLdFHhoZ6+FfgSr7gUvdQI0eLH2t7ue8u5wKsLdde6cHKPjhC8vGg==" + "version": "16.18.96", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", + "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" }, "node_modules/@types/node-emoji": { "version": "1.8.2", @@ -5073,9 +5142,9 @@ "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" }, "node_modules/@types/qs": { - "version": "6.9.14", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", - "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", + "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": { @@ -5085,9 +5154,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.74", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.74.tgz", - "integrity": "sha512-9AEqNZZyBx8OdZpxzQlaFEVCSFUM2YXJH46yPOiOpm078k6ZLOCcuAzGum/zK8YBwY+dbahVNbHrbgrAwIRlqw==", + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -5191,17 +5260,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.6.0.tgz", - "integrity": "sha512-gKmTNwZnblUdnTIJu3e9kmeRRzV2j1a/LUO27KNNAnIC5zjy1aSvXSRp4rVNlmAoHlQ7HzX42NbKpcSr4jF80A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", "dev": true, "peer": true, "dependencies": { "@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", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -5227,16 +5296,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.6.0.tgz", - "integrity": "sha512-usPMPHcwX3ZoPWnBnhhorc14NJw9J4HpSXQX4urF2TPKG0au0XhJoZyX62fmvdHONUkmyUe74Hzm1//XA+BoYg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", "dev": true, "peer": true, "dependencies": { - "@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", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4" }, "engines": { @@ -5256,14 +5325,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "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==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0" + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5274,14 +5343,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.6.0.tgz", - "integrity": "sha512-NxAfqAPNLG6LTmy7uZgpK8KcuiS2NZD/HlThPXQRGwz6u7MDBWRVliEEl1Gj6U7++kVJTpehkhZzCJLMK66Scw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.6.0", - "@typescript-eslint/utils": "7.6.0", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5302,9 +5371,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.6.0.tgz", - "integrity": "sha512-h02rYQn8J+MureCvHVVzhl69/GAfQGPQZmOMjG1KfCl7o3HtMSlPaPUAPu6lLctXI5ySRGIYk94clD/AUMCUgQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", "dev": true, "peer": true, "engines": { @@ -5316,14 +5385,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.6.0.tgz", - "integrity": "sha512-+7Y/GP9VuYibecrCQWSKgl3GvUM5cILRttpWtnAu8GNL9j11e4tbuGZmZjJ8ejnKYyBRb2ddGQ3rEFCq3QjMJw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", - "@typescript-eslint/visitor-keys": "7.6.0", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5361,18 +5430,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.6.0.tgz", - "integrity": "sha512-x54gaSsRRI+Nwz59TXpCsr6harB98qjXYzsRxGqvA5Ue3kQH+FxS7FYU81g/omn22ML2pZJkisy6Q+ElK8pBCA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@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", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", "semver": "^7.6.0" }, "engines": { @@ -5387,13 +5456,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "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==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.6.0", + "@typescript-eslint/types": "7.7.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -5411,9 +5480,9 @@ "dev": true }, "node_modules/@vitest/snapshot": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.4.0.tgz", - "integrity": "sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.0.tgz", + "integrity": "sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -5463,9 +5532,9 @@ } }, "node_modules/@wdio/cli/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5671,9 +5740,9 @@ } }, "node_modules/@wdio/globals/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "optional": true, "dependencies": { @@ -5825,9 +5894,9 @@ } }, "node_modules/@wdio/local-runner/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5905,9 +5974,9 @@ } }, "node_modules/@wdio/mocha-framework/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5932,9 +6001,9 @@ } }, "node_modules/@wdio/repl/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5957,9 +6026,9 @@ } }, "node_modules/@wdio/reporter/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -5988,9 +6057,9 @@ } }, "node_modules/@wdio/runner/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -6133,9 +6202,9 @@ } }, "node_modules/@wdio/shared-store-service/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -6301,9 +6370,9 @@ } }, "node_modules/@wdio/types/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -7301,9 +7370,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1595.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1595.0.tgz", - "integrity": "sha512-ee0FaplSMz9Y6XJnnyDCHv6SLziJ2YCI4SsO0VRFUKK4Jtk/KErp20CJI/4ZsS+oz7k2/vQ3JqGQXCz95nU8Ww==", + "version": "2.1604.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1604.0.tgz", + "integrity": "sha512-JSXNwKylbSZR2AL/jczOGJmPCZ/QpTys6SP89rhgy5LN677PJ6weQx5ShpPfGIcczGXjAeJDm8faWT53fYPCCw==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -8011,9 +8080,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001607", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001607.tgz", - "integrity": "sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==", + "version": "1.0.30001612", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", + "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", "funding": [ { "type": "opencollective", @@ -8029,6 +8098,16 @@ } ] }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "dev": true, + "peer": true, + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, "node_modules/chai": { "version": "4.3.10", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", @@ -8867,9 +8946,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.36.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", - "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", + "version": "3.37.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", + "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", "dev": true, "dependencies": { "browserslist": "^4.23.0" @@ -9353,9 +9432,9 @@ } }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "peerDependencies": { "babel-plugin-macros": "^3.1.0" @@ -9545,9 +9624,9 @@ "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/devtools-protocol": { - "version": "0.0.1273771", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1273771.tgz", - "integrity": "sha512-QDbb27xcTVReQQW/GHJsdQqGKwYBE7re7gxehj467kKP2DKuYBUj6i2k5LRiAC66J1yZG/9gsxooz/s9pcm0Og==", + "version": "0.0.1282316", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1282316.tgz", + "integrity": "sha512-i7eIqWdVxeXBY/M+v83yRkOV1sTHnr3XYiC0YNBivLIE6hBfE2H0c2o8VC5ynT44yjy+Ei0kLrBQFK/RUKaAHQ==", "dev": true }, "node_modules/diff": { @@ -9717,9 +9796,9 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { "jake": "^10.8.5" @@ -9732,9 +9811,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.730", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.730.tgz", - "integrity": "sha512-oJRPo82XEqtQAobHpJIR3zW5YO3sSRRkPz2an4yxi1UvqhsGm54vR/wzTFV74a3soDOJ8CKW7ajOOX5ESzddwg==" + "version": "1.4.746", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.746.tgz", + "integrity": "sha512-jeWaIta2rIG2FzHaYIhSuVWqC6KJYo7oSBX4Jv7g+aVujKztfvdpf+n6MGwZdC5hQXbax4nntykLH2juIQrfPg==" }, "node_modules/emittery": { "version": "0.13.1", @@ -10950,9 +11029,9 @@ } }, "node_modules/expect-webdriverio": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.12.2.tgz", - "integrity": "sha512-tmfOzPWTWzGa0678Ru5qmGX1g8v3AtDdK4Ko64WV4l3jSrcudMTxCOyeY0LWSN30923BBqZaWJwlx/u+T6UNBw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-4.13.0.tgz", + "integrity": "sha512-y2LF6vECifTOiOk0i0FMPWJGyntiW+eqzQWFZimu9Cae8XMUH5q4F5SzpfGCxsvmOdf3uFjlr+u9IXrQBN5o0Q==", "dev": true, "dependencies": { "@vitest/snapshot": "^1.2.2", @@ -12930,9 +13009,9 @@ } }, "node_modules/i18next": { - "version": "23.11.0", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.0.tgz", - "integrity": "sha512-VwFtlgy2LDbY0Qs6VfekIm6mv5/JmSJrtBf4aszl7Vby8+GcBlri0/7dkMZXmzTfiBMPUPBOmYCdQK7K4emkGQ==", + "version": "23.11.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz", + "integrity": "sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA==", "funding": [ { "type": "individual", @@ -13002,8 +13081,7 @@ "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immer": { "version": "9.0.21", @@ -15245,13 +15323,29 @@ "node": ">=8.9.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/locate-app": { - "version": "2.2.29", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.2.29.tgz", - "integrity": "sha512-OwxwMkhz+EpQIWRTe3JlgMwPdoT2HCNnKno/0BdNp4pPuB7qpNmf1L8p3EEEXCUQqh/kzA/RJ3ZkOlTeaq9Wrw==", + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.8.tgz", + "integrity": "sha512-Sut0UwjwQePwsfkUWwvJt6upC5nnlUp9+ac1ARtunD7evNpBnj3DAysTv4LIpEcsGfihJryqocMuowj8fF06TA==", "dev": true, "dependencies": { - "n12": "1.8.32", + "@promptbook/utils": "0.44.0-1", "type-fest": "2.13.0", "userhome": "1.0.0" } @@ -15537,15 +15631,12 @@ } }, "node_modules/magic-string": { - "version": "0.30.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", - "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" } }, "node_modules/make-dir": { @@ -16208,6 +16299,15 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -16223,12 +16323,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/n12": { - "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": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", @@ -16494,9 +16588,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", "dev": true }, "node_modules/object-assign": { @@ -17234,12 +17328,17 @@ "dev": true }, "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", "dev": true, - "peer": true + "peer": true, + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } }, "node_modules/picocolors": { "version": "1.0.0", @@ -18104,9 +18203,9 @@ } }, "node_modules/react-i18next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.0.tgz", - "integrity": "sha512-3KwX6LHpbvGQ+sBEntjV4sYW3Zovjjl3fpoHbUwSgFHf0uRBcbeCBLR5al6ikncI5+W0EFb71QXZmfop+J6NrQ==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.1.tgz", + "integrity": "sha512-QSiKw+ihzJ/CIeIYWrarCmXJUySHDwQr5y8uaNIkbxoGRm/5DukkxZs+RPla79IKyyDPzC/DRlgQCABHtrQuQQ==", "dependencies": { "@babel/runtime": "^7.23.9", "html-parse-stringify": "^3.0.1" @@ -18483,9 +18582,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.16.0.tgz", + "integrity": "sha512-z7Rf5PXxIhbI6eJBTwdqe5bO02nUUmctq4WqviFSstBAWV0YNtEQRhEnZw73WJ8sZOqgFG6Jdl8gYZu7NBJZnA==", "dev": true, "engines": { "node": ">=16" @@ -19547,9 +19646,9 @@ } }, "node_modules/socks": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", - "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { "ip-address": "^9.0.5", @@ -19605,6 +19704,12 @@ "source-map": "^0.6.0" } }, + "node_modules/spacetrim": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.2.tgz", + "integrity": "sha512-/rdSi1YqdWpJ2fm2tan8O9ntmAFm04K+aSBgntGJib8nw1aPYZNxGGoPq0c1bC36CbVwLzaiPOLIITQXLBM5Pw==", + "dev": true + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -20295,9 +20400,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.30.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", + "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -20960,9 +21065,9 @@ } }, "node_modules/typescript": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.4.tgz", - "integrity": "sha512-dGE2Vv8cpVvw28v8HCPqyb08EzbBURxDpuhJvTrusShUfGnhHBafDsLdS1EhhxyL6BJQE+2cT3dDPAv+MQ6oLw==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -21435,18 +21540,18 @@ } }, "node_modules/webdriver": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.35.0.tgz", - "integrity": "sha512-D13EroddIXDqdq3jgO8j6sorgTWqTwEiTqwlDoJizpRIgHGBy+UjkNM7XW1yVcvt8gsD2Dei2LQth2tJEnu5Ng==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.36.1.tgz", + "integrity": "sha512-547RivYCHStVqtiGQBBcABAkzJbPnAWsxpXGzmj5KL+TOM2JF41N2iQRtUxXqr0jme1Nzzye7WS7Y7iSnK6i1g==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.35.0", + "@wdio/config": "8.36.1", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "deepmerge-ts": "^5.1.0", "got": "^12.6.1", "ky": "^0.33.0", @@ -21457,23 +21562,23 @@ } }, "node_modules/webdriver/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/webdriver/node_modules/@wdio/config": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", - "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.1.tgz", + "integrity": "sha512-yCENnym0CrYuLKMJ3fv00WkjCR8QpPqVohGBkq5FvZOZpVJEpoG86Q8l4HtyRnd6ggMTKCA1vTQ/myhbPmZmaQ==", "dev": true, "dependencies": { "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -21483,15 +21588,27 @@ "node": "^16.13 || >=18" } }, + "node_modules/webdriver/node_modules/@wdio/types": { + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.1.tgz", + "integrity": "sha512-kKtyJbypasKo/VQuJ6dTQQwFtHE9qoygjoCZjrQCLGraRSjOEiqZHPR0497wbeCvcgHIYyImbmcylqZNGUE0CQ==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.1.tgz", + "integrity": "sha512-xmgPHU11/o9n2FeRmDFkPRC0okiwA1i2xOcR2c3aSpuk99XkAm9RaMn/6u9LFaqsCpgaVxazcYEGSceO7U4hZA==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", + "@wdio/types": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", @@ -21566,23 +21683,23 @@ } }, "node_modules/webdriverio": { - "version": "8.35.1", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.35.1.tgz", - "integrity": "sha512-YAuKR4JERGiMqCJmm5fEVZ160iiFPyupwALqfXfzrYVcEmKltKPFY/oUCArmi6Uzqd+Sa2Kp9WZtz2Eu1R76JA==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.36.1.tgz", + "integrity": "sha512-vzE09oFQeMbOYJ/75jZ13sDIljzC3HH7uoUJKAMAEtyrn/bu1F9Sg/4IDEsvQaRD3pz3ae6SkRld33lcQk6HJA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.35.0", + "@wdio/config": "8.36.1", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", "@wdio/repl": "8.24.12", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "archiver": "^7.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", - "devtools-protocol": "^0.0.1273771", + "devtools-protocol": "^0.0.1282316", "grapheme-splitter": "^1.0.2", "import-meta-resolve": "^4.0.0", "is-plain-obj": "^4.1.0", @@ -21594,7 +21711,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.35.0" + "webdriver": "8.36.1" }, "engines": { "node": "^16.13 || >=18" @@ -21609,23 +21726,23 @@ } }, "node_modules/webdriverio/node_modules/@types/node": { - "version": "20.12.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", - "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "dev": true, "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/webdriverio/node_modules/@wdio/config": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.35.0.tgz", - "integrity": "sha512-I36sBPMl/+LCyQ3Pwb8gGQM6KxwmUfhOPp16TxN21Qo/Bc0fZfyGIg6KevmRu4DuqpGUm5MMVSfyPhLUkMk3Cg==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.1.tgz", + "integrity": "sha512-yCENnym0CrYuLKMJ3fv00WkjCR8QpPqVohGBkq5FvZOZpVJEpoG86Q8l4HtyRnd6ggMTKCA1vTQ/myhbPmZmaQ==", "dev": true, "dependencies": { "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", - "@wdio/utils": "8.35.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -21635,15 +21752,27 @@ "node": "^16.13 || >=18" } }, + "node_modules/webdriverio/node_modules/@wdio/types": { + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.1.tgz", + "integrity": "sha512-kKtyJbypasKo/VQuJ6dTQQwFtHE9qoygjoCZjrQCLGraRSjOEiqZHPR0497wbeCvcgHIYyImbmcylqZNGUE0CQ==", + "dev": true, + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": "^16.13 || >=18" + } + }, "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "8.35.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.35.0.tgz", - "integrity": "sha512-9KCyn4aS+9tWfthnUkNFVe52AM6QrLGAeIxgGxNlzTAcQGl7jjwdDM7aSK0RjLkWI3a/88DRH21mN/t2LGDmPQ==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.1.tgz", + "integrity": "sha512-xmgPHU11/o9n2FeRmDFkPRC0okiwA1i2xOcR2c3aSpuk99XkAm9RaMn/6u9LFaqsCpgaVxazcYEGSceO7U4hZA==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.28.0", - "@wdio/types": "8.32.4", + "@wdio/types": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", diff --git a/package.json b/package.json index ae81e6d2f9..d1ceca2e7c 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,9 @@ "overrides": { "parse-bmfont-xml": { "xml2js": "0.5.0" + }, + "@openfin/automation-native": { + "phin": "3.7.1" } } } From 7cc29db5e7cec1d9924db203abeddc7fb0c8f5f4 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 23 Apr 2024 19:55:24 +0100 Subject: [PATCH 14/23] Update snap version to 0.3.0 --- how-to/integrate-with-snap-basic/package.json | 2 +- how-to/integrate-with-snap/package.json | 2 +- .../workspace-platform-starter/package.json | 2 +- package-lock.json | 382 ++++++++++-------- 4 files changed, 209 insertions(+), 179 deletions(-) diff --git a/how-to/integrate-with-snap-basic/package.json b/how-to/integrate-with-snap-basic/package.json index 471c106a07..b40567e296 100644 --- a/how-to/integrate-with-snap-basic/package.json +++ b/how-to/integrate-with-snap-basic/package.json @@ -20,7 +20,7 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8" }, diff --git a/how-to/integrate-with-snap/package.json b/how-to/integrate-with-snap/package.json index 4054d9b8a6..9ee932428a 100644 --- a/how-to/integrate-with-snap/package.json +++ b/how-to/integrate-with-snap/package.json @@ -20,7 +20,7 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8" }, diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index cd83a315f0..7e37078ebf 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -61,7 +61,7 @@ "@finos/fdc3": "^2.0.3", "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" diff --git a/package-lock.json b/package-lock.json index 8ab334ee55..9cc244018d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -747,7 +747,7 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8" }, @@ -778,7 +778,7 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8" }, @@ -1205,7 +1205,7 @@ "@finos/fdc3": "^2.0.3", "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", - "@openfin/snap-sdk": "0.2.0", + "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.8", "@openfin/workspace-platform": "18.0.8", "csstype": "^3.1.3" @@ -3799,9 +3799,9 @@ } }, "node_modules/@openfin/cloud-interop/node_modules/@openfin/core": { - "version": "37.81.19", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.19.tgz", - "integrity": "sha512-cfDQVxyQave/Zbpcfxj6PDGgtGJGKogqzg2CDjKhnuPqIfctdteuekmdeBtPo0EjQZIzjD8STi2S057wFEg9SQ==", + "version": "37.81.20", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.20.tgz", + "integrity": "sha512-ak1IduUsWRmLIfdFj726tujc0Q1P4xybmqjZg6drBzXir3wvvB/gXMxt9bpD/t14O8owBqVVKyynZ6YxFxmY/w==", "dependencies": { "@types/node": "^16.0.0", "lodash": "^4.17.21", @@ -3892,9 +3892,9 @@ "integrity": "sha512-nw9pf6BvoVuAAjegUl9lIu8Cpp13FG3jXkESm2Z3uhQhc9vragecZpRkHEP8sn67KYjaCvHHgGn1sb3QT/5YSA==" }, "node_modules/@openfin/snap-sdk": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@openfin/snap-sdk/-/snap-sdk-0.2.0.tgz", - "integrity": "sha512-F03j+4qo2sHYLbkH/wPf6TIsb2ad/MlvvVXiiAgcrBeukCaesHypg21fZDXx+/Lojr3vCbFFnpmFLueW+2Xkmg==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@openfin/snap-sdk/-/snap-sdk-0.3.0.tgz", + "integrity": "sha512-VZWNuC6KKakO2AJOVRU606PfakvGQ6oZr9MOCY0Tfcu3UUTd9VuEcqWmD5y2bIFiR+bqxIVZRX1K2c6V1NlT6Q==", "dependencies": { "@openfin/core": "^32.76.10", "events": "^3.3.0" @@ -4644,83 +4644,98 @@ ] }, "node_modules/@sentry-internal/feedback": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.110.1.tgz", - "integrity": "sha512-0aR3wuEW+SZKOVNamuy0pTQyPmqDjWPPLrB2GAXGT3ZjrVxjEzzVPqk6DVBYxSV2MuJaD507SZnvfoSPNgoBmw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.1.tgz", + "integrity": "sha512-ejE4eRXLqv5emxVWudBkRQCv5Q7s21thei7gqSxGLBXe8AUrCjTiD0qA1ToJAKcleIyRRf/TQvGb/T7U6vwAAw==", "dependencies": { - "@sentry/core": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.110.1.tgz", - "integrity": "sha512-zdcCmWFXM4DHOau/BCZVb6jf9zozdbAiJ1MzQ6azuZEuysOl00YfktoWZBbZjjjpWT6025s+wrmFz54t0O+enw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.112.1.tgz", + "integrity": "sha512-+xDd/LEiJZGk4PQKs4xcAWKJFzFKpuNF64DFW/JWuJ5FDnKB+t7w198nQyAZKGjupN7LixLb49Z8O2Gda7fHQQ==", "dependencies": { - "@sentry/core": "7.110.1", - "@sentry/replay": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry/core": "7.112.1", + "@sentry/replay": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.110.1.tgz", - "integrity": "sha512-4kTd6EM0OP1SVWl2yLn3KIwlCpld1lyhNDeR8G1aKLm1PN+kVsR6YB/jy9KPPp4Q3lN3W9EkTSES3qhP4jVffQ==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.1.tgz", + "integrity": "sha512-pZVIOB6+t4HlgU3mCRtIbvo//t8uQY9tnBjbJJ2nEv8nTu8A7/dZ5ebrLOWStV3bNp/+uCqLuLuuimJeNNn6vQ==", "dependencies": { - "@sentry/core": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.110.1.tgz", - "integrity": "sha512-H3TZlbdsgxuoVxhotMtBDemvAofx3UPNcS+UjQ40Bd+hKX01IIbEN3i+9RQ0jmcbU6xjf+yhjwp+Ejpm4FmYMw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.112.1.tgz", + "integrity": "sha512-NRTo3mJbhiCd9GEFEWL8SplFJhTCPjiAlOhjUw8MnJb7pkxWm2xhC7PVi6SUE8hF/g1rrEwgUr9SX5v8+xwK6g==", "dependencies": { - "@sentry-internal/feedback": "7.110.1", - "@sentry-internal/replay-canvas": "7.110.1", - "@sentry-internal/tracing": "7.110.1", - "@sentry/core": "7.110.1", - "@sentry/replay": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry-internal/feedback": "7.112.1", + "@sentry-internal/replay-canvas": "7.112.1", + "@sentry-internal/tracing": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/integrations": "7.112.1", + "@sentry/replay": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.110.1.tgz", - "integrity": "sha512-yC1yeUFQlmHj9u/KxKmwOMVanBmgfX+4MZnZU31QPqN95adyZTwpaYFZl4fH5kDVnz7wXJI0qRP8SxuMePtqhw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.1.tgz", + "integrity": "sha512-ZhOxt4sZVLqHurWqIY1ExWYZ20ViFTbqgW2GdJGHz4XwJhBln0ZVpHD+tKXy3GBEY+2Ee4qoqHi6tDrFgPvJqw==", "dependencies": { - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@sentry/integrations": { + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.1.tgz", + "integrity": "sha512-jIgXT+ahUS7zmhDMAzsgQHCNA6ZwZAp0Bwjoz0tcuGzNcv7mOCnjHz5YooJVQgXuREV653RmEuGGTklrpn6S2w==", + "dependencies": { + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1", + "localforage": "^1.8.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.110.1.tgz", - "integrity": "sha512-kXdMrDexPyBf0KP/IfgCk5NS1Yfz6tFK/+UKWTxEM5PVRZkHzV7CBdd50IFGL3xMGbJmtE5Bly6WzezqUgWZ5w==", - "dependencies": { - "@sentry/browser": "7.110.1", - "@sentry/core": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.112.1.tgz", + "integrity": "sha512-q0fDW3omq/NPaL7yRqWA1USxGtEAcdFZOngIMsr9Bc4fJBGXDO+xLwPWjo1MIVvdDBJJYL/9Z56ppqTb3kiGXw==", + "dependencies": { + "@sentry/browser": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4731,33 +4746,33 @@ } }, "node_modules/@sentry/replay": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.110.1.tgz", - "integrity": "sha512-R49fGOuKYsJ97EujPTzMjs3ZSuSkLTFFQmVBbsu/o6beRp4kK9l8H7r2BfLEcWJOXdWO5EU4KpRWgIxHaDK2aw==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.112.1.tgz", + "integrity": "sha512-4lobxfgmbB2C7ZHk1inWt9IRIvlQa2Sczau5ngE4Qd4mZSKIgIYGtIJC52uOuGvBcP8gHiIbA7ACihkd7834Ew==", "dependencies": { - "@sentry-internal/tracing": "7.110.1", - "@sentry/core": "7.110.1", - "@sentry/types": "7.110.1", - "@sentry/utils": "7.110.1" + "@sentry-internal/tracing": "7.112.1", + "@sentry/core": "7.112.1", + "@sentry/types": "7.112.1", + "@sentry/utils": "7.112.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.110.1.tgz", - "integrity": "sha512-sZxOpM5gfyxvJeWVvNpHnxERTnlqcozjqNcIv29SZ6wonlkekmxDyJ3uCuPv85VO54WLyA4uzskPKnNFHacI8A==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.1.tgz", + "integrity": "sha512-5dLIxWZfCXH5kExrsWc+R6loMr3RR6OQuonVNL3Fa8Dw37Q7aExCrjRmocOHeQKhHwNBd3QhYm7phjnbxS6Oaw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.110.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.110.1.tgz", - "integrity": "sha512-eibLo2m1a7sHkOHxYYmRujr3D7ek2l9sv26F1SLoQBVDF7Afw5AKyzPmtA1D+4M9P/ux1okj7cGj3SaBrVpxXA==", + "version": "7.112.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.1.tgz", + "integrity": "sha512-/AMGDD6OMvT2cpfL5KuDC10oTS8yOt7BAPomXJNS/xn1TRcEEEZ1TWbYZiGT5ijggQEL1OXSojpeQU8XEW8dcQ==", "dependencies": { - "@sentry/types": "7.110.1" + "@sentry/types": "7.112.1" }, "engines": { "node": ">=8" @@ -4972,9 +4987,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.9", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.9.tgz", - "integrity": "sha512-W4W3KcqzjJ0sHg2vAq9vfml6OhsJ53TcUjUqfzzZf/EChUtwspszj/S0pzMxnfRcO55/iGq47dscXw71Fxc4Zg==", + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -5282,17 +5297,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", - "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", + "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", "dev": true, "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/type-utils": "7.7.0", - "@typescript-eslint/utils": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/type-utils": "7.7.1", + "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -5318,16 +5333,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", - "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", + "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4" }, "engines": { @@ -5347,14 +5362,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", - "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", + "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0" + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5365,14 +5380,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", - "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", + "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.0", - "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/utils": "7.7.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5393,9 +5408,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", - "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", + "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", "dev": true, "peer": true, "engines": { @@ -5407,14 +5422,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", - "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", + "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/visitor-keys": "7.7.0", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/visitor-keys": "7.7.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5452,18 +5467,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", - "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", + "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.0", - "@typescript-eslint/types": "7.7.0", - "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/scope-manager": "7.7.1", + "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/typescript-estree": "7.7.1", "semver": "^7.6.0" }, "engines": { @@ -5478,13 +5493,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", - "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", + "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/types": "7.7.1", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -7391,9 +7406,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1601.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1601.0.tgz", - "integrity": "sha512-znwVdKs3g0j1cAFfi+PGPSmBxXjiekJXp1nnOUq4rxXYvN7av8gxptXaQz+vqB4uhNFsD+OXNQh+6bd9eQxZmw==", + "version": "2.1605.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1605.0.tgz", + "integrity": "sha512-/wtOuF7WgkbN6YL3xJ+FB54kvIAfnP/DQVDaE6rSYv6ft0xr01Si94NgQWhb5OcFkFfRAC4auZX8PiFNtOi9xQ==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -8127,9 +8142,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001611", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz", - "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==", + "version": "1.0.30001612", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", + "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", "funding": [ { "type": "opencollective", @@ -9916,9 +9931,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.740", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.740.tgz", - "integrity": "sha512-Yvg5i+iyv7Xm18BRdVPVm8lc7kgxM3r6iwqCH2zB7QZy1kZRNmd0Zqm0zcD9XoFREE5/5rwIuIAOT+/mzGcnZg==" + "version": "1.4.747", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.747.tgz", + "integrity": "sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==" }, "node_modules/emittery": { "version": "0.13.1", @@ -13181,8 +13196,7 @@ "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" }, "node_modules/immer": { "version": "9.0.21", @@ -15446,10 +15460,26 @@ "node": ">=8.9.0" } }, + "node_modules/localforage": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz", + "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==", + "dependencies": { + "lie": "3.1.1" + } + }, + "node_modules/localforage/node_modules/lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/locate-app": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.5.tgz", - "integrity": "sha512-TDRQt0uUzc1oUEUjzyUbgRzaYICHrYcO/xIdDpJkL8Yp1Bkle775gCmdsl0DnifDgerE5VWH5ZMOGfhp8sTSfQ==", + "version": "2.4.8", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.8.tgz", + "integrity": "sha512-Sut0UwjwQePwsfkUWwvJt6upC5nnlUp9+ac1ARtunD7evNpBnj3DAysTv4LIpEcsGfihJryqocMuowj8fF06TA==", "dev": true, "dependencies": { "@promptbook/utils": "0.44.0-1", @@ -16415,9 +16445,9 @@ } }, "node_modules/mqtt": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.2.tgz", - "integrity": "sha512-dlKxINBrrorgMp1A5UHQVf5GAkn1m/dY12W2Sp6LAY794RxQ0OPo0Q9N2S3qrNRjjC1WETA/9oYR6yadhR3siw==", + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.3.tgz", + "integrity": "sha512-R5fTibItlB5kvikTrU29ZgImvAch2ihKMyuvN3CJqd6nsZuearCSv3IGqxEdsSIXxflK6lGDgFmqnsnyJqzYtQ==", "dependencies": { "@types/readable-stream": "^4.0.5", "@types/ws": "^8.5.9", @@ -16838,9 +16868,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", + "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", "dev": true }, "node_modules/object-assign": { @@ -18461,9 +18491,9 @@ } }, "node_modules/react-i18next": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.0.tgz", - "integrity": "sha512-3KwX6LHpbvGQ+sBEntjV4sYW3Zovjjl3fpoHbUwSgFHf0uRBcbeCBLR5al6ikncI5+W0EFb71QXZmfop+J6NrQ==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.1.tgz", + "integrity": "sha512-QSiKw+ihzJ/CIeIYWrarCmXJUySHDwQr5y8uaNIkbxoGRm/5DukkxZs+RPla79IKyyDPzC/DRlgQCABHtrQuQQ==", "dependencies": { "@babel/runtime": "^7.23.9", "html-parse-stringify": "^3.0.1" @@ -18840,9 +18870,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.15.0.tgz", - "integrity": "sha512-tB9lu0pQpX5KJq54g+oHOLumOx+pMep4RaM6liXh2PKmVRFF+/vAtUP0ZaJ0kOySfVNjF6doBWPHhBhISKdlIA==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.16.0.tgz", + "integrity": "sha512-z7Rf5PXxIhbI6eJBTwdqe5bO02nUUmctq4WqviFSstBAWV0YNtEQRhEnZw73WJ8sZOqgFG6Jdl8gYZu7NBJZnA==", "dev": true, "engines": { "node": ">=16" @@ -20665,9 +20695,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.30.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", - "integrity": "sha512-STdUgOUx8rLbMGO9IOwHLpCqolkDITFFQSMYYwKE1N2lY6MVSaeoi10z/EhWxRc6ybqoVmKSkhKYH/XUpl7vSA==", + "version": "5.30.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", + "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -21809,18 +21839,18 @@ } }, "node_modules/webdriver": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.36.0.tgz", - "integrity": "sha512-6fmZI1+OCGbhuGMLBLvA7m9TJvHU1Cyzxqd8rGzIyb8hocR53yh/olfOL1BPcjU1NXmKuU1BePSGF+yiKajiEA==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.36.1.tgz", + "integrity": "sha512-547RivYCHStVqtiGQBBcABAkzJbPnAWsxpXGzmj5KL+TOM2JF41N2iQRtUxXqr0jme1Nzzye7WS7Y7iSnK6i1g==", "dev": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "8.36.0", + "@wdio/config": "8.36.1", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", - "@wdio/types": "8.36.0", - "@wdio/utils": "8.36.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "deepmerge-ts": "^5.1.0", "got": "^12.6.1", "ky": "^0.33.0", @@ -21840,14 +21870,14 @@ } }, "node_modules/webdriver/node_modules/@wdio/config": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.0.tgz", - "integrity": "sha512-sAbqnx/G+OsrMquIncFXjM4U0/E0ULMP0jDHZND75r0e1DYYCHmyacrvIHu3Jyxinl9f6+4XQdev6vqdTqPdNg==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.1.tgz", + "integrity": "sha512-yCENnym0CrYuLKMJ3fv00WkjCR8QpPqVohGBkq5FvZOZpVJEpoG86Q8l4HtyRnd6ggMTKCA1vTQ/myhbPmZmaQ==", "dev": true, "dependencies": { "@wdio/logger": "8.28.0", - "@wdio/types": "8.36.0", - "@wdio/utils": "8.36.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -21858,9 +21888,9 @@ } }, "node_modules/webdriver/node_modules/@wdio/types": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.0.tgz", - "integrity": "sha512-0hw/PaJHqDrbIMvU08w3oMDGg89udSkqWF2hFlGAjOc20quRrhn0F1L+NhFpYdezeRKz5gpgTDIqaQs9RWKq1A==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.1.tgz", + "integrity": "sha512-kKtyJbypasKo/VQuJ6dTQQwFtHE9qoygjoCZjrQCLGraRSjOEiqZHPR0497wbeCvcgHIYyImbmcylqZNGUE0CQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0" @@ -21870,14 +21900,14 @@ } }, "node_modules/webdriver/node_modules/@wdio/utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.0.tgz", - "integrity": "sha512-3VAbavN206qkvm6lITtOtTgscFChax7shzqHjUNln+QWMRyELtT81iw32ux2ld+Bg3F60LAmhbGodu0lJH7k2w==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.1.tgz", + "integrity": "sha512-xmgPHU11/o9n2FeRmDFkPRC0okiwA1i2xOcR2c3aSpuk99XkAm9RaMn/6u9LFaqsCpgaVxazcYEGSceO7U4hZA==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.28.0", - "@wdio/types": "8.36.0", + "@wdio/types": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", @@ -21952,18 +21982,18 @@ } }, "node_modules/webdriverio": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.36.0.tgz", - "integrity": "sha512-4WnEI+OxslHpfSnDXuADaR6bL1M7QxBUEF1mTN56AroOCJelyPvt94yRhszwQnLcJJB2OLn49eUz8M4yBCB51w==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.36.1.tgz", + "integrity": "sha512-vzE09oFQeMbOYJ/75jZ13sDIljzC3HH7uoUJKAMAEtyrn/bu1F9Sg/4IDEsvQaRD3pz3ae6SkRld33lcQk6HJA==", "dev": true, "dependencies": { "@types/node": "^20.1.0", - "@wdio/config": "8.36.0", + "@wdio/config": "8.36.1", "@wdio/logger": "8.28.0", "@wdio/protocols": "8.32.0", "@wdio/repl": "8.24.12", - "@wdio/types": "8.36.0", - "@wdio/utils": "8.36.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "archiver": "^7.0.0", "aria-query": "^5.0.0", "css-shorthand-properties": "^1.1.1", @@ -21980,7 +22010,7 @@ "resq": "^1.9.1", "rgb2hex": "0.2.5", "serialize-error": "^11.0.1", - "webdriver": "8.36.0" + "webdriver": "8.36.1" }, "engines": { "node": "^16.13 || >=18" @@ -22004,14 +22034,14 @@ } }, "node_modules/webdriverio/node_modules/@wdio/config": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.0.tgz", - "integrity": "sha512-sAbqnx/G+OsrMquIncFXjM4U0/E0ULMP0jDHZND75r0e1DYYCHmyacrvIHu3Jyxinl9f6+4XQdev6vqdTqPdNg==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.36.1.tgz", + "integrity": "sha512-yCENnym0CrYuLKMJ3fv00WkjCR8QpPqVohGBkq5FvZOZpVJEpoG86Q8l4HtyRnd6ggMTKCA1vTQ/myhbPmZmaQ==", "dev": true, "dependencies": { "@wdio/logger": "8.28.0", - "@wdio/types": "8.36.0", - "@wdio/utils": "8.36.0", + "@wdio/types": "8.36.1", + "@wdio/utils": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.0.0", "glob": "^10.2.2", @@ -22022,9 +22052,9 @@ } }, "node_modules/webdriverio/node_modules/@wdio/types": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.0.tgz", - "integrity": "sha512-0hw/PaJHqDrbIMvU08w3oMDGg89udSkqWF2hFlGAjOc20quRrhn0F1L+NhFpYdezeRKz5gpgTDIqaQs9RWKq1A==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-8.36.1.tgz", + "integrity": "sha512-kKtyJbypasKo/VQuJ6dTQQwFtHE9qoygjoCZjrQCLGraRSjOEiqZHPR0497wbeCvcgHIYyImbmcylqZNGUE0CQ==", "dev": true, "dependencies": { "@types/node": "^20.1.0" @@ -22034,14 +22064,14 @@ } }, "node_modules/webdriverio/node_modules/@wdio/utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.0.tgz", - "integrity": "sha512-3VAbavN206qkvm6lITtOtTgscFChax7shzqHjUNln+QWMRyELtT81iw32ux2ld+Bg3F60LAmhbGodu0lJH7k2w==", + "version": "8.36.1", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.36.1.tgz", + "integrity": "sha512-xmgPHU11/o9n2FeRmDFkPRC0okiwA1i2xOcR2c3aSpuk99XkAm9RaMn/6u9LFaqsCpgaVxazcYEGSceO7U4hZA==", "dev": true, "dependencies": { "@puppeteer/browsers": "^1.6.0", "@wdio/logger": "8.28.0", - "@wdio/types": "8.36.0", + "@wdio/types": "8.36.1", "decamelize": "^6.0.0", "deepmerge-ts": "^5.1.0", "edgedriver": "^5.3.5", From 8f8aa83591a00899b97aa982d82653fc42b37925 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 24 Apr 2024 19:21:01 +0100 Subject: [PATCH 15/23] Bumping runtime version to take in patched runtime. --- .../register-with-home-js/tests/index.spec.js | 2 +- .../register-with-home-ts/tests/index.spec.ts | 2 +- .../register-with-store-js/tests/index.spec.js | 2 +- how-to/automation-testing/selenium/selenium.js | 2 +- how-to/automation-testing/selenium/test/index.spec.js | 2 +- how-to/automation-testing/wdio/test/index.spec.js | 2 +- how-to/automation-testing/wdio/wdio.conf.js | 2 +- how-to/customize-home-templates/public/manifest.fin.json | 2 +- .../integrate-server-authentication/public/manifest.fin.json | 2 +- .../integrate-with-bloomberg-basic/public/manifest.fin.json | 2 +- how-to/integrate-with-excel/public/manifest.fin.json | 2 +- how-to/integrate-with-ms365-basic/public/manifest.fin.json | 2 +- .../public/manifest.fin.json | 2 +- how-to/integrate-with-ms365-low-code/public/manifest.fin.json | 2 +- how-to/integrate-with-ms365/public/manifest.fin.json | 2 +- how-to/integrate-with-openid-connect/public/manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- how-to/integrate-with-rss/public/manifest.fin.json | 2 +- .../integrate-with-salesforce-basic/public/manifest.fin.json | 2 +- how-to/integrate-with-salesforce/public/manifest.fin.json | 2 +- .../integrate-with-servicenow-basic/public/manifest.fin.json | 2 +- how-to/integrate-with-servicenow/public/manifest.fin.json | 2 +- how-to/integrate-with-snap-basic/public/manifest.fin.json | 2 +- how-to/integrate-with-snap/public/manifest.fin.json | 2 +- how-to/register-with-browser/public/manifest.fin.json | 2 +- how-to/register-with-dock-basic/public/manifest.fin.json | 2 +- how-to/register-with-dock/public/manifest.fin.json | 2 +- how-to/register-with-home-basic/public/manifest.fin.json | 2 +- how-to/register-with-home/public/manifest.fin.json | 2 +- .../register-with-platform-windows/public/manifest.fin.json | 2 +- how-to/register-with-store-basic/public/manifest.fin.json | 2 +- how-to/register-with-store/public/manifest.fin.json | 2 +- how-to/support-context-and-intents/public/manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- how-to/use-notifications/public/manifest.fin.json | 2 +- how-to/use-theming-basic/public/manifest.fin.json | 2 +- how-to/use-theming/public/manifest.fin.json | 2 +- .../public/manifest.fin.json | 2 +- .../workspace-platform-starter-basic/public/manifest.fin.json | 2 +- .../docs/how-to-customize-sharing.md | 4 ++-- how-to/workspace-platform-starter/e2e/tests/platform.spec.ts | 2 +- .../workspace-platform-starter/public/empty.manifest.fin.json | 2 +- .../public/fourth.manifest.fin.json | 2 +- how-to/workspace-platform-starter/public/manifest.fin.json | 2 +- .../workspace-platform-starter/public/pack.manifest.fin.json | 2 +- .../public/second.manifest.fin.json | 2 +- .../workspace-platform-starter/public/third.manifest.fin.json | 2 +- 47 files changed, 48 insertions(+), 48 deletions(-) diff --git a/how-to/automation-testing/register-with-home-js/tests/index.spec.js b/how-to/automation-testing/register-with-home-js/tests/index.spec.js index d68360daf3..854779824b 100644 --- a/how-to/automation-testing/register-with-home-js/tests/index.spec.js +++ b/how-to/automation-testing/register-with-home-js/tests/index.spec.js @@ -42,7 +42,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.10'); + expect(version).to.equal('36.122.80.11'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts index 8cecf8f89d..a185b99f64 100644 --- a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts +++ b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts @@ -43,7 +43,7 @@ describe("Register with Home", () => { it("The runtime version should be set", async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal("36.122.80.10"); + expect(version).to.equal("36.122.80.11"); }); it("The identity should be set", async () => { diff --git a/how-to/automation-testing/register-with-store-js/tests/index.spec.js b/how-to/automation-testing/register-with-store-js/tests/index.spec.js index b7a157287c..0c92954d91 100644 --- a/how-to/automation-testing/register-with-store-js/tests/index.spec.js +++ b/how-to/automation-testing/register-with-store-js/tests/index.spec.js @@ -15,7 +15,7 @@ describe('Register with Store', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.10'); + expect(version).to.equal('36.122.80.11'); }); it('Can open the store window', async () => { diff --git a/how-to/automation-testing/selenium/selenium.js b/how-to/automation-testing/selenium/selenium.js index 55c4a3d02f..4953f5cccc 100644 --- a/how-to/automation-testing/selenium/selenium.js +++ b/how-to/automation-testing/selenium/selenium.js @@ -106,7 +106,7 @@ async function runMochaTests() { } // The version of the chromedriver in the package.json should match the runtime version from the app manifest. -// e.g. if the manifest runtime version is 36.122.80.10 then the chromedriver version should be "118.0.0" +// e.g. if the manifest runtime version is 36.122.80.11 then the chromedriver version should be "118.0.0" const testManifestUrl = 'https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json'; const chromeDriverPort = 5678; diff --git a/how-to/automation-testing/selenium/test/index.spec.js b/how-to/automation-testing/selenium/test/index.spec.js index 6bc947a9c6..85710a25ba 100644 --- a/how-to/automation-testing/selenium/test/index.spec.js +++ b/how-to/automation-testing/selenium/test/index.spec.js @@ -40,7 +40,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.10'); + expect(version).to.equal('36.122.80.11'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/wdio/test/index.spec.js b/how-to/automation-testing/wdio/test/index.spec.js index 6bc947a9c6..85710a25ba 100644 --- a/how-to/automation-testing/wdio/test/index.spec.js +++ b/how-to/automation-testing/wdio/test/index.spec.js @@ -40,7 +40,7 @@ describe('Register with Home', () => { it('The runtime version should be set', async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).to.equal('36.122.80.10'); + expect(version).to.equal('36.122.80.11'); }); it('The identity should be set', async () => { diff --git a/how-to/automation-testing/wdio/wdio.conf.js b/how-to/automation-testing/wdio/wdio.conf.js index 069d0e9065..9ecc4d54da 100644 --- a/how-to/automation-testing/wdio/wdio.conf.js +++ b/how-to/automation-testing/wdio/wdio.conf.js @@ -7,7 +7,7 @@ const fsPromises = require('fs/promises'); const path = require('path'); // The version of the chromedriver in the package.json should match the runtime version from the app manifest. -// e.g. if the manifest runtime version is 36.122.80.10 then the chromedriver version should be '118.0.0' +// e.g. if the manifest runtime version is 36.122.80.11 then the chromedriver version should be '118.0.0' const manifestUrl = 'https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json'; const chromeDriverPort = 5843; diff --git a/how-to/customize-home-templates/public/manifest.fin.json b/how-to/customize-home-templates/public/manifest.fin.json index 4c3b48af28..ff9f9fdf09 100644 --- a/how-to/customize-home-templates/public/manifest.fin.json +++ b/how-to/customize-home-templates/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "customize-home-templates", diff --git a/how-to/integrate-server-authentication/public/manifest.fin.json b/how-to/integrate-server-authentication/public/manifest.fin.json index 68af1d19c7..c505689a5f 100644 --- a/how-to/integrate-server-authentication/public/manifest.fin.json +++ b/how-to/integrate-server-authentication/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-server-authentication", diff --git a/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json b/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json index b521337542..3d370abde1 100644 --- a/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json +++ b/how-to/integrate-with-bloomberg-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-bloomberg-basic", diff --git a/how-to/integrate-with-excel/public/manifest.fin.json b/how-to/integrate-with-excel/public/manifest.fin.json index 12554c0657..fdbb645150 100644 --- a/how-to/integrate-with-excel/public/manifest.fin.json +++ b/how-to/integrate-with-excel/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-excel", diff --git a/how-to/integrate-with-ms365-basic/public/manifest.fin.json b/how-to/integrate-with-ms365-basic/public/manifest.fin.json index ace462e225..39f978c21b 100644 --- a/how-to/integrate-with-ms365-basic/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-ms365-basic", diff --git a/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json b/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json index 2940dfad48..845596bf53 100644 --- a/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-low-code-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=msft-low-code-basic", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-ms365-low-code-basic", diff --git a/how-to/integrate-with-ms365-low-code/public/manifest.fin.json b/how-to/integrate-with-ms365-low-code/public/manifest.fin.json index 0f7838d5e2..d2a3da0c2b 100644 --- a/how-to/integrate-with-ms365-low-code/public/manifest.fin.json +++ b/how-to/integrate-with-ms365-low-code/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=msft-low-code", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-ms365-low-code", diff --git a/how-to/integrate-with-ms365/public/manifest.fin.json b/how-to/integrate-with-ms365/public/manifest.fin.json index 73cc900c54..970d2f1281 100644 --- a/how-to/integrate-with-ms365/public/manifest.fin.json +++ b/how-to/integrate-with-ms365/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-ms365", diff --git a/how-to/integrate-with-openid-connect/public/manifest.fin.json b/how-to/integrate-with-openid-connect/public/manifest.fin.json index 29cf2a2f07..52304a2080 100644 --- a/how-to/integrate-with-openid-connect/public/manifest.fin.json +++ b/how-to/integrate-with-openid-connect/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-openid-connect", diff --git a/how-to/integrate-with-openid-connect/public/second.manifest.fin.json b/how-to/integrate-with-openid-connect/public/second.manifest.fin.json index f85ebf24d0..9a88e0769a 100644 --- a/how-to/integrate-with-openid-connect/public/second.manifest.fin.json +++ b/how-to/integrate-with-openid-connect/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=integrate-with-openid-connect-app", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-openid-connect-app", diff --git a/how-to/integrate-with-rss/public/manifest.fin.json b/how-to/integrate-with-rss/public/manifest.fin.json index 69834cfc93..19ede4b441 100644 --- a/how-to/integrate-with-rss/public/manifest.fin.json +++ b/how-to/integrate-with-rss/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-rss", diff --git a/how-to/integrate-with-salesforce-basic/public/manifest.fin.json b/how-to/integrate-with-salesforce-basic/public/manifest.fin.json index 2459935eb4..3ee7d03940 100644 --- a/how-to/integrate-with-salesforce-basic/public/manifest.fin.json +++ b/how-to/integrate-with-salesforce-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-salesforce-basic", diff --git a/how-to/integrate-with-salesforce/public/manifest.fin.json b/how-to/integrate-with-salesforce/public/manifest.fin.json index 2a217a8f82..e9089fe636 100644 --- a/how-to/integrate-with-salesforce/public/manifest.fin.json +++ b/how-to/integrate-with-salesforce/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-salesforce", diff --git a/how-to/integrate-with-servicenow-basic/public/manifest.fin.json b/how-to/integrate-with-servicenow-basic/public/manifest.fin.json index a1f7db8ac6..78a68b0032 100644 --- a/how-to/integrate-with-servicenow-basic/public/manifest.fin.json +++ b/how-to/integrate-with-servicenow-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-servicenow-basic", diff --git a/how-to/integrate-with-servicenow/public/manifest.fin.json b/how-to/integrate-with-servicenow/public/manifest.fin.json index 0a0fd4ce92..900ddac5d8 100644 --- a/how-to/integrate-with-servicenow/public/manifest.fin.json +++ b/how-to/integrate-with-servicenow/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-servicenow", diff --git a/how-to/integrate-with-snap-basic/public/manifest.fin.json b/how-to/integrate-with-snap-basic/public/manifest.fin.json index 8213595f80..188b1a5ec9 100644 --- a/how-to/integrate-with-snap-basic/public/manifest.fin.json +++ b/how-to/integrate-with-snap-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-snap-basic", diff --git a/how-to/integrate-with-snap/public/manifest.fin.json b/how-to/integrate-with-snap/public/manifest.fin.json index 3378e03bd4..d0f824de0b 100644 --- a/how-to/integrate-with-snap/public/manifest.fin.json +++ b/how-to/integrate-with-snap/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "integrate-with-snap", diff --git a/how-to/register-with-browser/public/manifest.fin.json b/how-to/register-with-browser/public/manifest.fin.json index 1438a9ff73..22c6bf1dc0 100644 --- a/how-to/register-with-browser/public/manifest.fin.json +++ b/how-to/register-with-browser/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "launch-browser-from-window", diff --git a/how-to/register-with-dock-basic/public/manifest.fin.json b/how-to/register-with-dock-basic/public/manifest.fin.json index 80d86dbc81..189b9249b5 100644 --- a/how-to/register-with-dock-basic/public/manifest.fin.json +++ b/how-to/register-with-dock-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-dock-basic", diff --git a/how-to/register-with-dock/public/manifest.fin.json b/how-to/register-with-dock/public/manifest.fin.json index d3b9c59c80..9b390fbcf2 100644 --- a/how-to/register-with-dock/public/manifest.fin.json +++ b/how-to/register-with-dock/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-dock", diff --git a/how-to/register-with-home-basic/public/manifest.fin.json b/how-to/register-with-home-basic/public/manifest.fin.json index ed44f0c18b..635d5e732d 100644 --- a/how-to/register-with-home-basic/public/manifest.fin.json +++ b/how-to/register-with-home-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-home-basic", diff --git a/how-to/register-with-home/public/manifest.fin.json b/how-to/register-with-home/public/manifest.fin.json index eb7577cba3..6dbbace03a 100644 --- a/how-to/register-with-home/public/manifest.fin.json +++ b/how-to/register-with-home/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-home", diff --git a/how-to/register-with-platform-windows/public/manifest.fin.json b/how-to/register-with-platform-windows/public/manifest.fin.json index 3424f45415..df027d3420 100644 --- a/how-to/register-with-platform-windows/public/manifest.fin.json +++ b/how-to/register-with-platform-windows/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-platform-windows", diff --git a/how-to/register-with-store-basic/public/manifest.fin.json b/how-to/register-with-store-basic/public/manifest.fin.json index 55aa27fc12..f2060350fc 100644 --- a/how-to/register-with-store-basic/public/manifest.fin.json +++ b/how-to/register-with-store-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-store-basic", diff --git a/how-to/register-with-store/public/manifest.fin.json b/how-to/register-with-store/public/manifest.fin.json index daaf9c892b..55ea05d4f2 100644 --- a/how-to/register-with-store/public/manifest.fin.json +++ b/how-to/register-with-store/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "register-with-store", diff --git a/how-to/support-context-and-intents/public/manifest.fin.json b/how-to/support-context-and-intents/public/manifest.fin.json index e41c44f885..08b315b5a2 100644 --- a/how-to/support-context-and-intents/public/manifest.fin.json +++ b/how-to/support-context-and-intents/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "support-context-and-intents", diff --git a/how-to/support-context-and-intents/public/second.manifest.fin.json b/how-to/support-context-and-intents/public/second.manifest.fin.json index 5eeba3a7da..c00ad46a8f 100644 --- a/how-to/support-context-and-intents/public/second.manifest.fin.json +++ b/how-to/support-context-and-intents/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=second-support-context-and-intents", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "second-support-context-and-intents", diff --git a/how-to/use-notifications/public/manifest.fin.json b/how-to/use-notifications/public/manifest.fin.json index ac0af6bd2c..744b7c6f60 100644 --- a/how-to/use-notifications/public/manifest.fin.json +++ b/how-to/use-notifications/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "use-notifications", diff --git a/how-to/use-theming-basic/public/manifest.fin.json b/how-to/use-theming-basic/public/manifest.fin.json index 3311f3a807..00d7e700f3 100644 --- a/how-to/use-theming-basic/public/manifest.fin.json +++ b/how-to/use-theming-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "use-theming-basic", diff --git a/how-to/use-theming/public/manifest.fin.json b/how-to/use-theming/public/manifest.fin.json index 45011f5c2c..0ee8caed74 100644 --- a/how-to/use-theming/public/manifest.fin.json +++ b/how-to/use-theming/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "use-theming", diff --git a/how-to/workspace-native-window-integration/public/manifest.fin.json b/how-to/workspace-native-window-integration/public/manifest.fin.json index 6ccf682d8f..18a9b59b5d 100644 --- a/how-to/workspace-native-window-integration/public/manifest.fin.json +++ b/how-to/workspace-native-window-integration/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "workspace-native-window-integration" diff --git a/how-to/workspace-platform-starter-basic/public/manifest.fin.json b/how-to/workspace-platform-starter-basic/public/manifest.fin.json index 278eee1db7..3845c668be 100644 --- a/how-to/workspace-platform-starter-basic/public/manifest.fin.json +++ b/how-to/workspace-platform-starter-basic/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "platform": { "uuid": "workspace-platform-start-basic", diff --git a/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md b/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md index e9002fec8f..c0b6040dbf 100644 --- a/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md +++ b/how-to/workspace-platform-starter/docs/how-to-customize-sharing.md @@ -237,7 +237,7 @@ The snapshot is a workspace platform snapshot. MonitorInfo and Window details ha "snapshot": { "snapshotDetails": { "timestamp": "2022-09-21T19:16:59.461Z", - "runtimeVersion": "36.122.80.10", + "runtimeVersion": "36.122.80.11", "monitorInfo": { ... }, "windows": [ { ... } @@ -351,7 +351,7 @@ The snapshot is a workspace platform snapshot. MonitorInfo and Window details ha "snapshot": { "snapshotDetails": { "timestamp": "2022-09-21T19:16:59.461Z", - "runtimeVersion": "36.122.80.10", + "runtimeVersion": "36.122.80.11", "monitorInfo": { ... }, }, "windows": [ diff --git a/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts b/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts index 088610e442..a3a79d3ced 100644 --- a/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts +++ b/how-to/workspace-platform-starter/e2e/tests/platform.spec.ts @@ -16,7 +16,7 @@ describe("Platform", () => { it("The runtime version should be set", async () => { const fin = await OpenFinProxy.fin(); const version = await fin.System.getVersion(); - expect(version).toEqual("36.122.80.10"); + expect(version).toEqual("36.122.80.11"); }); it("Can open the home window", async () => { diff --git a/how-to/workspace-platform-starter/public/empty.manifest.fin.json b/how-to/workspace-platform-starter/public/empty.manifest.fin.json index d01b34c664..23c27d7c6d 100644 --- a/how-to/workspace-platform-starter/public/empty.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/empty.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "empty-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/fourth.manifest.fin.json b/how-to/workspace-platform-starter/public/fourth.manifest.fin.json index f219094896..b0fa4502ff 100644 --- a/how-to/workspace-platform-starter/public/fourth.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/fourth.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=fourth-workspace-starter-how-to-workspace-platform-starter", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "fourth-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/manifest.fin.json b/how-to/workspace-platform-starter/public/manifest.fin.json index a777cfaaa1..ed35296840 100644 --- a/how-to/workspace-platform-starter/public/manifest.fin.json +++ b/how-to/workspace-platform-starter/public/manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/pack.manifest.fin.json b/how-to/workspace-platform-starter/public/pack.manifest.fin.json index bdb3dc6463..93e26c7e4f 100644 --- a/how-to/workspace-platform-starter/public/pack.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/pack.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "default-workspace-platform" diff --git a/how-to/workspace-platform-starter/public/second.manifest.fin.json b/how-to/workspace-platform-starter/public/second.manifest.fin.json index 6170a13991..455fe26e2c 100644 --- a/how-to/workspace-platform-starter/public/second.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=second-workspace-starter-how-to-workspace-platform-starter", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "second-workspace-starter-how-to-workspace-platform-starter" diff --git a/how-to/workspace-platform-starter/public/third.manifest.fin.json b/how-to/workspace-platform-starter/public/third.manifest.fin.json index 4f0cfe7c5a..09ac070116 100644 --- a/how-to/workspace-platform-starter/public/third.manifest.fin.json +++ b/how-to/workspace-platform-starter/public/third.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect --enable-mesh --security-realm=workspace-platform-starter-for-fdc3", - "version": "36.122.80.10" + "version": "36.122.80.11" }, "startup_app": { "name": "workspace-platform-starter-for-fdc3" From 6f155e8f152cb1e7f0458870307a9bce6d5bbdb2 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 25 Apr 2024 14:49:42 +0100 Subject: [PATCH 16/23] Added a classic app example and the ability to easily test snap with a preload (#713) --- how-to/integrate-with-snap/README.md | 48 +++++++++++++++ .../integrate-with-snap/client/src/preload.ts | 47 +++++++++++++++ .../client/webpack.config.js | 58 +++++++++++++------ how-to/integrate-with-snap/package.json | 1 + .../public/second.manifest.fin.json | 49 ++++++++++++++++ 5 files changed, 185 insertions(+), 18 deletions(-) create mode 100644 how-to/integrate-with-snap/client/src/preload.ts create mode 100644 how-to/integrate-with-snap/public/second.manifest.fin.json diff --git a/how-to/integrate-with-snap/README.md b/how-to/integrate-with-snap/README.md index b91a7af37c..46e9933125 100644 --- a/how-to/integrate-with-snap/README.md +++ b/how-to/integrate-with-snap/README.md @@ -16,6 +16,8 @@ The package utilized by this example is [@openfin/snap-sdk](https://www.npmjs.co - [Live Launch Example](https://start.openfin.co/?manifest=https%3A%2F%2Fbuilt-on-openfin.github.io%2Fworkspace-starter%2Fworkspace%2Fv17.2.0%2Fintegrate-with-snap%2Fmanifest.fin.json) +- [Live Launch Classic Example](https://start.openfin.co/?manifest=https%3A%2F%2Fbuilt-on-openfin.github.io%2Fworkspace-starter%2Fworkspace%2Fv17.2.0%2Fintegrate-with-snap%2Fsecond.manifest.fin.json) + ## Getting Started 1. Install dependencies and do the initial build. Note that these examples assume you are in the sub-directory for the example. @@ -133,6 +135,52 @@ You app should now be listed and you should be able to launch it and snap it wit ![Launch Your App](my-app.png) +### Testing Snap with an existing Platform/Classic App + +We have a [preload.ts](./client/src/preload.ts) file that is a preload script that can be added to your platform provider or classic app to show Snap working without any coding. Your manifest will need to load the preload script snap.preload.bundle.js (this is how it is defined in our [webpack.config.js](./client/webpack.config.js)) and you will need to request the permissions and define the app asset. + +#### Preload Script Entry + +```json + "preloadScripts": [{ "url": "http://localhost:8080/js/snap.preload.bundle.js" }], +``` + +#### Permissions + +These permissions need to be added at the platform or startup_app level depending on the type of application you are building. + +```json +"permissions": { + "System": { + "launchExternalProcess": true, + "downloadAsset": true + } + } +``` + +#### App Asset + +Your manifest will need to include the following app asset information: + +```json +"appAssets": [ + { + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", + "alias": "openfin-snap", + "version": "0.3.0", + "target": "OpenFinSnap.exe" + } + ] +``` + +#### Running an example + +To see an example of a classic app using the preload please launch our second manifest: + +```shell +npm run secondclient +``` + --- ### Read more about [working with Workspace](https://developers.openfin.co/of-docs/docs/overview-of-workspace) diff --git a/how-to/integrate-with-snap/client/src/preload.ts b/how-to/integrate-with-snap/client/src/preload.ts new file mode 100644 index 0000000000..826e8e8b54 --- /dev/null +++ b/how-to/integrate-with-snap/client/src/preload.ts @@ -0,0 +1,47 @@ +import type OpenFin from "@openfin/core"; +import * as Snap from "@openfin/snap-sdk"; +import type { SnapProviderOptions } from "./shapes"; + +if (window === window.top) { + console.log("Adding snap support through a preload."); + + window.addEventListener("DOMContentLoaded", async () => { + await initialize({ platformId: fin.me.identity.uuid, showDebugWindow: true }); + }); +} + +/** + * Initialize the snap components. + * @param options The options for initializing the snap provider. + */ +export async function initialize(options: SnapProviderOptions): Promise { + try { + if (options.platformId) { + console.log("Registering Snap with platformId", options.platformId); + const server = new Snap.SnapServer(options.platformId); + console.log("Enabling debug window:", options.showDebugWindow ?? false); + await server.start({ showDebug: options.showDebugWindow ?? false }); + const app = fin.Application.getCurrentSync(); + await app.on("window-created", async (e) => { + const win = fin.Window.wrapSync(e); + const winOptions = await win.getOptions(); + if (!winOptions.includeInSnapshots) { + console.log("Window is not registered with Snap because includeInSnapshots is disabled."); + } else { + const nativeId = await win.getNativeId(); + console.log("Registering window with NativeID with Snap", nativeId); + await server.registerWindow(win.identity.name, nativeId); + } + }); + const hostOptions = (await fin.me.getOptions()) as OpenFin.WindowOptions; + if (hostOptions.autoShow) { + console.log("Registering current window with snap"); + await server.registerWindow(fin.me.identity.name, await fin.Window.getCurrentSync().getNativeId()); + } else { + console.log("Current window is not registered with Snap because autoShow is disabled."); + } + } + } catch (err) { + console.error("Error initializing Snap", err); + } +} diff --git a/how-to/integrate-with-snap/client/webpack.config.js b/how-to/integrate-with-snap/client/webpack.config.js index 5811b88a02..d5c417b26d 100644 --- a/how-to/integrate-with-snap/client/webpack.config.js +++ b/how-to/integrate-with-snap/client/webpack.config.js @@ -1,22 +1,44 @@ const path = require('path'); -module.exports = { - entry: './client/src/provider.ts', - devtool: 'inline-source-map', - module: { - rules: [ - { - test: /\.tsx?$/, - use: 'ts-loader', - exclude: /node_modules/ - } - ] +module.exports = [ + { + entry: './client/src/provider.ts', + devtool: 'inline-source-map', + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ + } + ] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + output: { + filename: 'provider.bundle.js', + path: path.resolve(__dirname, '..', 'public', 'js') + } }, - resolve: { - extensions: ['.tsx', '.ts', '.js'] - }, - output: { - filename: 'provider.bundle.js', - path: path.resolve(__dirname, '..', 'public', 'js') + { + entry: './client/src/preload.ts', + devtool: 'inline-source-map', + module: { + rules: [ + { + test: /\.tsx?$/, + use: 'ts-loader', + exclude: /node_modules/ + } + ] + }, + resolve: { + extensions: ['.tsx', '.ts', '.js'] + }, + output: { + filename: 'snap.preload.bundle.js', + path: path.resolve(__dirname, '..', 'public', 'js') + } } -}; +]; diff --git a/how-to/integrate-with-snap/package.json b/how-to/integrate-with-snap/package.json index 28d893f6b6..2808bd6ded 100644 --- a/how-to/integrate-with-snap/package.json +++ b/how-to/integrate-with-snap/package.json @@ -7,6 +7,7 @@ "dos": "node ./scripts/dos.mjs && node ./scripts/kill.mjs", "kill": "node ./scripts/kill.mjs", "client": "node ./scripts/launch.mjs", + "secondclient": "node ./scripts/launch.mjs http://localhost:8080/second.manifest.fin.json", "build-client": "webpack build --config ./client/webpack.config.js --mode=development", "build": "npm run build-client", "start": "npx --yes http-server ./public -p 8080 -c-1", diff --git a/how-to/integrate-with-snap/public/second.manifest.fin.json b/how-to/integrate-with-snap/public/second.manifest.fin.json new file mode 100644 index 0000000000..03635f1097 --- /dev/null +++ b/how-to/integrate-with-snap/public/second.manifest.fin.json @@ -0,0 +1,49 @@ +{ + "devtools_port": 9090, + "licenseKey": "openfin-demo-license-key", + "runtime": { + "arguments": "--v=1 --inspect", + "version": "34.118.78.80" + }, + "startup_app": { + "name": "Integrate With Snap - Classic App", + "url": "http://built-on-openfin.github.io/container-starter/v34/use-window-options/html/app.html", + "uuid": "integrate-with-snap-classic", + "autoShow": true, + "frame": true, + "minWidth": 850, + "minHeight": 700, + "defaultWidth": 850, + "defaultHeight": 700, + "saveWindowState": false, + "preloadScripts": [{ "url": "http://localhost:8080/js/snap.preload.bundle.js" }], + "permissions": { + "System": { + "launchExternalProcess": true, + "downloadAsset": true + } + } + }, + "shortcut": { + "company": "OpenFin", + "description": "A way of showing examples of what OpenFin can do.", + "icon": "http://localhost:8080/favicon.ico", + "name": "Integrate With Snap Classic - v17.2.0", + "target": ["desktop", "start-menu"] + }, + "supportInformation": { + "company": "OpenFin", + "product": "Workspace Starter - Integrate With Snap - Classic Client", + "email": "support@openfin.co", + "forwardErrorReports": true + }, + "appAssets": [ + { + "src": "https://cdn.openfin.co/release/snap/0.3.0/snap.zip", + "alias": "openfin-snap", + "version": "0.3.0", + "target": "OpenFinSnap.exe", + "mandatory": true + } + ] +} From ea4a5ea1372a424d423019cab5293c801f57b459 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 26 Apr 2024 17:56:18 +0100 Subject: [PATCH 17/23] Added restrictive model for launch external process and updated docs (#714) --- how-to/integrate-with-snap/README.md | 41 +++++++++++++++++-- .../public/manifest.fin.json | 28 ++++++------- .../public/second.manifest.fin.json | 23 ++++++++++- 3 files changed, 73 insertions(+), 19 deletions(-) diff --git a/how-to/integrate-with-snap/README.md b/how-to/integrate-with-snap/README.md index 46e9933125..fbcce350a1 100644 --- a/how-to/integrate-with-snap/README.md +++ b/how-to/integrate-with-snap/README.md @@ -141,18 +141,53 @@ We have a [preload.ts](./client/src/preload.ts) file that is a preload script th #### Preload Script Entry +This is the preload definition inside of "startup_app" or "platform" within your manifest. + +If you are running the local example you will see: + ```json "preloadScripts": [{ "url": "http://localhost:8080/js/snap.preload.bundle.js" }], ``` +If you just want to test Snap within your own manifest by using a hosted preload script then you can add the following to the "startup_app" or "platform" definition in your manifest: + +```json + "preloadScripts": [{ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v17.2.0/integrate-with-snap/js/snap.preload.bundle.js" }], +``` + #### Permissions -These permissions need to be added at the platform or startup_app level depending on the type of application you are building. +These permissions need to be added at the platform or startup_app level depending on the type of application you are building. We are using the restrictive permission model so we are only allowing launch external process for an app asset that comes from a particular url. ```json -"permissions": { + "permissions": { "System": { - "launchExternalProcess": true, + "launchExternalProcess": { + "enabled": true, + "assets": { + "enabled": true, + "srcRules": [ + { + "match": [ + "https://cdn.openfin.co/release/snap/*" + ], + "behavior": "allow" + }, + { + "match": [ + "" + ], + "behavior": "block" + } + ] + }, + "downloads": { + "enabled": false + }, + "executables": { + "enabled": false + } + }, "downloadAsset": true } } diff --git a/how-to/integrate-with-snap/public/manifest.fin.json b/how-to/integrate-with-snap/public/manifest.fin.json index 8cec51130e..dbe93f9619 100644 --- a/how-to/integrate-with-snap/public/manifest.fin.json +++ b/how-to/integrate-with-snap/public/manifest.fin.json @@ -13,24 +13,22 @@ "preventQuitOnLastWindowClosed": true, "permissions": { "System": { - "launchExternalProcess": true, - "downloadAsset": true, - "openUrlWithBrowser": { + "launchExternalProcess": { "enabled": true, - "protocols": ["mailto"] - } - } - }, - "defaultWindowOptions": { - "permissions": { - "System": { - "openUrlWithBrowser": { - "enabled": true, - "protocols": ["mailto"] + "assets": { + "enabled": true + }, + "downloads": { + "enabled": false + }, + "executables": { + "enabled": true } - } + }, + "downloadAsset": true } - } + }, + "defaultWindowOptions": {} }, "shortcut": { "company": "OpenFin", diff --git a/how-to/integrate-with-snap/public/second.manifest.fin.json b/how-to/integrate-with-snap/public/second.manifest.fin.json index 03635f1097..307d67b72a 100644 --- a/how-to/integrate-with-snap/public/second.manifest.fin.json +++ b/how-to/integrate-with-snap/public/second.manifest.fin.json @@ -19,7 +19,28 @@ "preloadScripts": [{ "url": "http://localhost:8080/js/snap.preload.bundle.js" }], "permissions": { "System": { - "launchExternalProcess": true, + "launchExternalProcess": { + "enabled": true, + "assets": { + "enabled": true, + "srcRules": [ + { + "match": ["https://cdn.openfin.co/release/snap/*"], + "behavior": "allow" + }, + { + "match": [""], + "behavior": "block" + } + ] + }, + "downloads": { + "enabled": false + }, + "executables": { + "enabled": false + } + }, "downloadAsset": true } } From cf75f82fe906a5b0d4cf5927ae47c429b5eb8234 Mon Sep 17 00:00:00 2001 From: John Date: Fri, 26 Apr 2024 18:07:22 +0100 Subject: [PATCH 18/23] Update version paths in snap example --- how-to/integrate-with-snap/README.md | 4 ++-- how-to/integrate-with-snap/public/second.manifest.fin.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/how-to/integrate-with-snap/README.md b/how-to/integrate-with-snap/README.md index c491ee71e4..2dff988da8 100644 --- a/how-to/integrate-with-snap/README.md +++ b/how-to/integrate-with-snap/README.md @@ -14,7 +14,7 @@ The package utilized by this example is [@openfin/snap-sdk](https://www.npmjs.co > The **@openfin/snap-sdk** is currently in beta. The version of the Snap SDK is referenced in package.json and the app asset defined in manifest.fin.json. -- [Live Launch Classic Example](https://start.openfin.co/?manifest=https%3A%2F%2Fbuilt-on-openfin.github.io%2Fworkspace-starter%2Fworkspace%2Fv17.2.0%2Fintegrate-with-snap%2Fsecond.manifest.fin.json) +- [Live Launch Classic Example](https://start.openfin.co/?manifest=https%3A%2F%2Fbuilt-on-openfin.github.io%2Fworkspace-starter%2Fworkspace%2Fv18.0.0%2Fintegrate-with-snap%2Fsecond.manifest.fin.json) ## Getting Started @@ -150,7 +150,7 @@ If you are running the local example you will see: If you just want to test Snap within your own manifest by using a hosted preload script then you can add the following to the "startup_app" or "platform" definition in your manifest: ```json - "preloadScripts": [{ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v17.2.0/integrate-with-snap/js/snap.preload.bundle.js" }], + "preloadScripts": [{ "url": "https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/integrate-with-snap/js/snap.preload.bundle.js" }], ``` #### Permissions diff --git a/how-to/integrate-with-snap/public/second.manifest.fin.json b/how-to/integrate-with-snap/public/second.manifest.fin.json index 307d67b72a..e9e8cfb94a 100644 --- a/how-to/integrate-with-snap/public/second.manifest.fin.json +++ b/how-to/integrate-with-snap/public/second.manifest.fin.json @@ -3,7 +3,7 @@ "licenseKey": "openfin-demo-license-key", "runtime": { "arguments": "--v=1 --inspect", - "version": "34.118.78.80" + "version": "36.122.80.11" }, "startup_app": { "name": "Integrate With Snap - Classic App", @@ -49,7 +49,7 @@ "company": "OpenFin", "description": "A way of showing examples of what OpenFin can do.", "icon": "http://localhost:8080/favicon.ico", - "name": "Integrate With Snap Classic - v17.2.0", + "name": "Integrate With Snap Classic - v18.0.0", "target": ["desktop", "start-menu"] }, "supportInformation": { From ca955202655a5693912d9bd3c62810ea5447d166 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 27 Apr 2024 18:58:15 +0100 Subject: [PATCH 19/23] Update workspace to 18.0.9 --- README.md | 2 +- .../register-with-home-js/package.json | 18 +- .../register-with-home-ts/package.json | 18 +- .../register-with-store-js/package.json | 14 +- .../selenium/scripts/dos.mjs | 2 +- .../automation-testing/wdio/scripts/dos.mjs | 2 +- how-to/customize-home-templates/package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-excel/package.json | 8 +- .../public/common/dos.json | 2 +- .../integrate-with-ms365-basic/package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-ms365/package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-rss/package.json | 8 +- .../integrate-with-rss/public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-salesforce/package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-servicenow/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-snap-basic/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/integrate-with-snap/package.json | 8 +- .../public/common/dos.json | 2 +- .../migrate-from-a-previous-version/README.md | 4 +- how-to/register-with-browser/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/register-with-dock-basic/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/register-with-dock/package.json | 8 +- .../register-with-dock/public/common/dos.json | 2 +- how-to/register-with-home-basic/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/register-with-home/package.json | 8 +- .../register-with-home/public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- how-to/register-with-store-basic/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/register-with-store/package.json | 8 +- .../public/common/dos.json | 2 +- .../support-context-and-intents/package.json | 8 +- .../public/common/dos.json | 2 +- how-to/use-notifications/package.json | 8 +- .../use-notifications/public/common/dos.json | 2 +- how-to/use-theming-basic/package.json | 8 +- .../use-theming-basic/public/common/dos.json | 2 +- how-to/use-theming/package.json | 6 +- how-to/use-theming/public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../package.json | 8 +- .../public/common/dos.json | 2 +- .../workspace-platform-starter/package.json | 10 +- .../public/common/dos.json | 2 +- package-lock.json | 688 ++++++++---------- package.json | 2 +- 71 files changed, 497 insertions(+), 563 deletions(-) diff --git a/README.md b/README.md index 88f90d0a7d..3c166c3f1b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The OpenFin Workspace is a full-featured work environment designed to improve th ## What version does this branch cover? -This branch covers version **v18.0.0** of OpenFin Workspace (there are versioned branches for other releases). [Click here to visit the release notes.](https://developer.openfin.co/versions/?product=Runtime#/?product=Workspace&sub-product=Workspace&version=18.0.8) +This branch covers version **v18.0.0** of OpenFin Workspace (there are versioned branches for other releases). [Click here to visit the release notes.](https://developer.openfin.co/versions/?product=Runtime#/?product=Workspace&sub-product=Workspace&version=18.0.9) ## Before you get started diff --git a/how-to/automation-testing/register-with-home-js/package.json b/how-to/automation-testing/register-with-home-js/package.json index d7f4644ceb..870c637257 100644 --- a/how-to/automation-testing/register-with-home-js/package.json +++ b/how-to/automation-testing/register-with-home-js/package.json @@ -4,15 +4,15 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --reporter ./mocha.reporter.json --testFailCount 1 --workspace 18.0.8", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --reporter ./jasmine.reporter.json --testFailCount 1 --workspace 18.0.8", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jest --reporter ./jest.reporter.json --testFailCount 1 --workspace 18.0.8", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.8", - "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.8", - "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.8" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --reporter ./mocha.reporter.json --testFailCount 1 --workspace 18.0.9", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.9", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --reporter ./jasmine.reporter.json --testFailCount 1 --workspace 18.0.9", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.9", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --framework jest --reporter ./jest.reporter.json --testFailCount 1 --workspace 18.0.9", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.9", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.9", + "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.9", + "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --driver=selenium --workspace 18.0.9" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/register-with-home-ts/package.json b/how-to/automation-testing/register-with-home-ts/package.json index d1b500aed5..7209d62c49 100644 --- a/how-to/automation-testing/register-with-home-ts/package.json +++ b/how-to/automation-testing/register-with-home-ts/package.json @@ -4,15 +4,15 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.8 --testFailCount 1", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.8 --testFailCount 1", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.8 --testFailCount 1", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.8 --testFailCount 1", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.8 --testFailCount 1", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.8 --testFailCount 1", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --offline --storageFolder=./offline-storage --workspace 18.0.8 --testFailCount 1", - "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.8 --testFailCount 1", - "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.8 --testFailCount 1" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.9 --testFailCount 1", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --workspace 18.0.9 --testFailCount 1", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.9 --testFailCount 1", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jasmine --workspace 18.0.9 --testFailCount 1", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.9 --testFailCount 1", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --framework jest --workspace 18.0.9 --testFailCount 1", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --offline --storageFolder=./offline-storage --workspace 18.0.9 --testFailCount 1", + "test-remote-mocha-selenium": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-home/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.9 --testFailCount 1", + "test-local-mocha-selenium": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.ts --driver=selenium --workspace 18.0.9 --testFailCount 1" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/register-with-store-js/package.json b/how-to/automation-testing/register-with-store-js/package.json index a539b4280d..5f6ca1f8f1 100644 --- a/how-to/automation-testing/register-with-store-js/package.json +++ b/how-to/automation-testing/register-with-store-js/package.json @@ -4,13 +4,13 @@ "description": "OpenFin Workspace Starter Automation Tests", "scripts": { "build": "echo Nothing to build", - "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", - "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.8", - "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", - "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.8", - "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", - "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.8", - "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.8" + "test-remote-mocha": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.9", + "test-local-mocha": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --workspace 18.0.9", + "test-remote-jasmine": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.9", + "test-local-jasmine": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jasmine --workspace 18.0.9", + "test-remote-jest": "of-automation https://built-on-openfin.github.io/workspace-starter/workspace/v18.0.0/register-with-store/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.9", + "test-local-jest": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --framework jest --workspace 18.0.9", + "test-offline": "of-automation http://localhost:8080/manifest.fin.json ./tests/**/*.spec.js --offline --storageFolder=./offline-storage --workspace 18.0.9" }, "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", diff --git a/how-to/automation-testing/selenium/scripts/dos.mjs b/how-to/automation-testing/selenium/scripts/dos.mjs index 814b7f4ade..5b00e50843 100644 --- a/how-to/automation-testing/selenium/scripts/dos.mjs +++ b/how-to/automation-testing/selenium/scripts/dos.mjs @@ -11,7 +11,7 @@ const DOS = { securedAPIDefaultPermission: 'allow', systemApps: { workspace: { - version: '18.0.8' + version: '18.0.9' } } } diff --git a/how-to/automation-testing/wdio/scripts/dos.mjs b/how-to/automation-testing/wdio/scripts/dos.mjs index 814b7f4ade..5b00e50843 100644 --- a/how-to/automation-testing/wdio/scripts/dos.mjs +++ b/how-to/automation-testing/wdio/scripts/dos.mjs @@ -11,7 +11,7 @@ const DOS = { securedAPIDefaultPermission: 'allow', systemApps: { workspace: { - version: '18.0.8' + version: '18.0.9' } } } diff --git a/how-to/customize-home-templates/package.json b/how-to/customize-home-templates/package.json index e0b0f49bcc..7a8d45701d 100644 --- a/how-to/customize-home-templates/package.json +++ b/how-to/customize-home-templates/package.json @@ -23,16 +23,16 @@ ], "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "chart.js": "^4.4.2", "csstype": "^3.1.3", "luxon": "^3.4.4", "node-emoji": "1.11.0" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/luxon": "^3.4.2", "@types/node-emoji": "^1.8.2", "eslint": "8.57.0", diff --git a/how-to/customize-home-templates/public/common/dos.json b/how-to/customize-home-templates/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/customize-home-templates/public/common/dos.json +++ b/how-to/customize-home-templates/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-server-authentication/package.json b/how-to/integrate-server-authentication/package.json index 0d88ed2b13..5541de19f3 100644 --- a/how-to/integrate-server-authentication/package.json +++ b/how-to/integrate-server-authentication/package.json @@ -21,13 +21,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "cookie-parser": "^1.4.6" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/cookie-parser": "^1.4.7", "@types/express": "^4.17.21", "eslint": "8.57.0", diff --git a/how-to/integrate-server-authentication/public/common/dos.json b/how-to/integrate-server-authentication/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-server-authentication/public/common/dos.json +++ b/how-to/integrate-server-authentication/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-bloomberg-basic/package.json b/how-to/integrate-with-bloomberg-basic/package.json index 3a66eab166..1494b1cb9d 100644 --- a/how-to/integrate-with-bloomberg-basic/package.json +++ b/how-to/integrate-with-bloomberg-basic/package.json @@ -25,12 +25,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/bloomberg": "^2.0.0", - "@openfin/core": "36.80.10", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/core": "36.80.11", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/node-adapter": "36.80.10", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-bloomberg-basic/public/common/dos.json b/how-to/integrate-with-bloomberg-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-bloomberg-basic/public/common/dos.json +++ b/how-to/integrate-with-bloomberg-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-excel/package.json b/how-to/integrate-with-excel/package.json index 93767ec89c..e113469df2 100644 --- a/how-to/integrate-with-excel/package.json +++ b/how-to/integrate-with-excel/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/excel": "^1.5.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-excel/public/common/dos.json b/how-to/integrate-with-excel/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-excel/public/common/dos.json +++ b/how-to/integrate-with-excel/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-basic/package.json b/how-to/integrate-with-ms365-basic/package.json index 1e5b1fd1f5..2a59352ec4 100644 --- a/how-to/integrate-with-ms365-basic/package.json +++ b/how-to/integrate-with-ms365-basic/package.json @@ -22,12 +22,12 @@ "dependencies": { "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-basic/public/common/dos.json b/how-to/integrate-with-ms365-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-ms365-basic/public/common/dos.json +++ b/how-to/integrate-with-ms365-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-low-code-basic/package.json b/how-to/integrate-with-ms365-low-code-basic/package.json index 352f4d66f0..7eccac0003 100644 --- a/how-to/integrate-with-ms365-low-code-basic/package.json +++ b/how-to/integrate-with-ms365-low-code-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json b/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json +++ b/how-to/integrate-with-ms365-low-code-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365-low-code/package.json b/how-to/integrate-with-ms365-low-code/package.json index 43564d8e60..10222cbf27 100644 --- a/how-to/integrate-with-ms365-low-code/package.json +++ b/how-to/integrate-with-ms365-low-code/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365-low-code/public/common/dos.json b/how-to/integrate-with-ms365-low-code/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-ms365-low-code/public/common/dos.json +++ b/how-to/integrate-with-ms365-low-code/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-ms365/package.json b/how-to/integrate-with-ms365/package.json index 9b69bbe82e..fa7812f975 100644 --- a/how-to/integrate-with-ms365/package.json +++ b/how-to/integrate-with-ms365/package.json @@ -23,13 +23,13 @@ "@finos/fdc3": "^2.0.3", "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-ms365/public/common/dos.json b/how-to/integrate-with-ms365/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-ms365/public/common/dos.json +++ b/how-to/integrate-with-ms365/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-openid-connect/package.json b/how-to/integrate-with-openid-connect/package.json index 582719596d..c7025551ed 100644 --- a/how-to/integrate-with-openid-connect/package.json +++ b/how-to/integrate-with-openid-connect/package.json @@ -24,12 +24,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/openid-connect": "^1.0.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-openid-connect/public/common/dos.json b/how-to/integrate-with-openid-connect/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-openid-connect/public/common/dos.json +++ b/how-to/integrate-with-openid-connect/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-rss/package.json b/how-to/integrate-with-rss/package.json index bd6a0d7c9c..a145d322bc 100644 --- a/how-to/integrate-with-rss/package.json +++ b/how-to/integrate-with-rss/package.json @@ -21,13 +21,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "fast-xml-parser": "4.3.6" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/express": "^4.17.21", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", diff --git a/how-to/integrate-with-rss/public/common/dos.json b/how-to/integrate-with-rss/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-rss/public/common/dos.json +++ b/how-to/integrate-with-rss/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-salesforce-basic/package.json b/how-to/integrate-with-salesforce-basic/package.json index e1ecb3614e..0660f5d498 100644 --- a/how-to/integrate-with-salesforce-basic/package.json +++ b/how-to/integrate-with-salesforce-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/salesforce": "2.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-salesforce-basic/public/common/dos.json b/how-to/integrate-with-salesforce-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-salesforce-basic/public/common/dos.json +++ b/how-to/integrate-with-salesforce-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-salesforce/package.json b/how-to/integrate-with-salesforce/package.json index 3f540a87e6..ed315ae62d 100644 --- a/how-to/integrate-with-salesforce/package.json +++ b/how-to/integrate-with-salesforce/package.json @@ -25,12 +25,12 @@ "dependencies": { "@openfin/salesforce": "2.3.0", "@openfin/salesforce-lwc": "1.1.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", diff --git a/how-to/integrate-with-salesforce/public/common/dos.json b/how-to/integrate-with-salesforce/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-salesforce/public/common/dos.json +++ b/how-to/integrate-with-salesforce/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-servicenow-basic/package.json b/how-to/integrate-with-servicenow-basic/package.json index 5bff119e3e..750df1e697 100644 --- a/how-to/integrate-with-servicenow-basic/package.json +++ b/how-to/integrate-with-servicenow-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-servicenow-basic/public/common/dos.json b/how-to/integrate-with-servicenow-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-servicenow-basic/public/common/dos.json +++ b/how-to/integrate-with-servicenow-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-servicenow/package.json b/how-to/integrate-with-servicenow/package.json index 8033d666ce..42b18bfc8c 100644 --- a/how-to/integrate-with-servicenow/package.json +++ b/how-to/integrate-with-servicenow/package.json @@ -21,13 +21,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-servicenow/public/common/dos.json b/how-to/integrate-with-servicenow/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-servicenow/public/common/dos.json +++ b/how-to/integrate-with-servicenow/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-snap-basic/package.json b/how-to/integrate-with-snap-basic/package.json index b40567e296..7e83bed5ff 100644 --- a/how-to/integrate-with-snap-basic/package.json +++ b/how-to/integrate-with-snap-basic/package.json @@ -21,12 +21,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-snap-basic/public/common/dos.json b/how-to/integrate-with-snap-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-snap-basic/public/common/dos.json +++ b/how-to/integrate-with-snap-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/integrate-with-snap/package.json b/how-to/integrate-with-snap/package.json index b688bfbf20..ebbb949da8 100644 --- a/how-to/integrate-with-snap/package.json +++ b/how-to/integrate-with-snap/package.json @@ -22,12 +22,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/integrate-with-snap/public/common/dos.json b/how-to/integrate-with-snap/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/integrate-with-snap/public/common/dos.json +++ b/how-to/integrate-with-snap/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/migrate-from-a-previous-version/README.md b/how-to/migrate-from-a-previous-version/README.md index 70649fbb85..b6f3734105 100644 --- a/how-to/migrate-from-a-previous-version/README.md +++ b/how-to/migrate-from-a-previous-version/README.md @@ -5,7 +5,7 @@ ## Migrate from a previous version - From v17.2 to v18.0 -- [Please see the v18.0 Release Notes](https://developer.openfin.co/versions/#/?product=Workspace&sub-product=Workspace&version=18.0.8) +- [Please see the v18.0 Release Notes](https://developer.openfin.co/versions/#/?product=Workspace&sub-product=Workspace&version=18.0.9) ## Migrate from a previous version - From v17.0 to v17.2 @@ -205,7 +205,7 @@ You should update your dev dependencies ```javascript "devDependencies": { - "@openfin/core": "36.80.10" + "@openfin/core": "36.80.11" } ``` diff --git a/how-to/register-with-browser/package.json b/how-to/register-with-browser/package.json index eba9e4a42c..60c6fbb0e7 100644 --- a/how-to/register-with-browser/package.json +++ b/how-to/register-with-browser/package.json @@ -20,12 +20,12 @@ "author": "adam.saland@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-browser/public/common/dos.json b/how-to/register-with-browser/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-browser/public/common/dos.json +++ b/how-to/register-with-browser/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-dock-basic/package.json b/how-to/register-with-dock-basic/package.json index 7fffb61d77..b855b6f07b 100644 --- a/how-to/register-with-dock-basic/package.json +++ b/how-to/register-with-dock-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-dock-basic/public/common/dos.json b/how-to/register-with-dock-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-dock-basic/public/common/dos.json +++ b/how-to/register-with-dock-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-dock/package.json b/how-to/register-with-dock/package.json index ea130a2317..5ae620e895 100644 --- a/how-to/register-with-dock/package.json +++ b/how-to/register-with-dock/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-dock/public/common/dos.json b/how-to/register-with-dock/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-dock/public/common/dos.json +++ b/how-to/register-with-dock/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-home-basic/package.json b/how-to/register-with-home-basic/package.json index c0647e3039..82f7ed2234 100644 --- a/how-to/register-with-home-basic/package.json +++ b/how-to/register-with-home-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-home-basic/public/common/dos.json b/how-to/register-with-home-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-home-basic/public/common/dos.json +++ b/how-to/register-with-home-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-home/package.json b/how-to/register-with-home/package.json index 4fc0702d3d..7c3670fded 100644 --- a/how-to/register-with-home/package.json +++ b/how-to/register-with-home/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-home/public/common/dos.json b/how-to/register-with-home/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-home/public/common/dos.json +++ b/how-to/register-with-home/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-platform-windows/package.json b/how-to/register-with-platform-windows/package.json index 436aee605f..89f32c51b4 100644 --- a/how-to/register-with-platform-windows/package.json +++ b/how-to/register-with-platform-windows/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-platform-windows/public/common/dos.json b/how-to/register-with-platform-windows/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-platform-windows/public/common/dos.json +++ b/how-to/register-with-platform-windows/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-store-basic/package.json b/how-to/register-with-store-basic/package.json index b8895c4f5e..a98f6a6de7 100644 --- a/how-to/register-with-store-basic/package.json +++ b/how-to/register-with-store-basic/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-store-basic/public/common/dos.json b/how-to/register-with-store-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-store-basic/public/common/dos.json +++ b/how-to/register-with-store-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/register-with-store/package.json b/how-to/register-with-store/package.json index 4aa816f866..b89533fe7c 100644 --- a/how-to/register-with-store/package.json +++ b/how-to/register-with-store/package.json @@ -20,12 +20,12 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/register-with-store/public/common/dos.json b/how-to/register-with-store/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/register-with-store/public/common/dos.json +++ b/how-to/register-with-store/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/support-context-and-intents/package.json b/how-to/support-context-and-intents/package.json index bd1aefc6f7..2e6b4ab4e3 100644 --- a/how-to/support-context-and-intents/package.json +++ b/how-to/support-context-and-intents/package.json @@ -22,12 +22,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/cloud-interop": "^0.4.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/support-context-and-intents/public/common/dos.json b/how-to/support-context-and-intents/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/support-context-and-intents/public/common/dos.json +++ b/how-to/support-context-and-intents/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-notifications/package.json b/how-to/use-notifications/package.json index 7cd2fbda15..49a12cb4ac 100644 --- a/how-to/use-notifications/package.json +++ b/how-to/use-notifications/package.json @@ -20,13 +20,13 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-notifications/public/common/dos.json b/how-to/use-notifications/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/use-notifications/public/common/dos.json +++ b/how-to/use-notifications/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-theming-basic/package.json b/how-to/use-theming-basic/package.json index cf6f881053..ae52020d67 100644 --- a/how-to/use-theming-basic/package.json +++ b/how-to/use-theming-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-theming-basic/public/common/dos.json b/how-to/use-theming-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/use-theming-basic/public/common/dos.json +++ b/how-to/use-theming-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/use-theming/package.json b/how-to/use-theming/package.json index 5d9b6385cf..32fb7006b7 100644 --- a/how-to/use-theming/package.json +++ b/how-to/use-theming/package.json @@ -21,11 +21,11 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8" + "@openfin/workspace": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/use-theming/public/common/dos.json b/how-to/use-theming/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/use-theming/public/common/dos.json +++ b/how-to/use-theming/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-native-window-integration/package.json b/how-to/workspace-native-window-integration/package.json index 3acf64b286..423fff7ce7 100644 --- a/how-to/workspace-native-window-integration/package.json +++ b/how-to/workspace-native-window-integration/package.json @@ -21,13 +21,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/native-window-integration-client": "0.0.17", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "file-loader": "^6.2.0" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/workspace-native-window-integration/public/common/dos.json b/how-to/workspace-native-window-integration/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/workspace-native-window-integration/public/common/dos.json +++ b/how-to/workspace-native-window-integration/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-platform-starter-basic/package.json b/how-to/workspace-platform-starter-basic/package.json index d81f07377f..4ab5da00eb 100644 --- a/how-to/workspace-platform-starter-basic/package.json +++ b/how-to/workspace-platform-starter-basic/package.json @@ -20,12 +20,12 @@ "author": "martyn.janes@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", diff --git a/how-to/workspace-platform-starter-basic/public/common/dos.json b/how-to/workspace-platform-starter-basic/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/workspace-platform-starter-basic/public/common/dos.json +++ b/how-to/workspace-platform-starter-basic/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 7e37078ebf..eca6acc0e0 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -49,7 +49,7 @@ "markdownlint": "markdownlint **/*.md --ignore **/node_modules/**", "validate": "npm run prettier && npm run eslint && npm run markdownlint", "test": "jest --config ./jest.config.js", - "e2e": "of-automation http://localhost:8080/manifest.fin.json ./e2e/**/*.spec.ts --workspace 18.0.8 --testFailCount 1 --framework jest --storageFolder ./e2e/storage" + "e2e": "of-automation http://localhost:8080/manifest.fin.json ./e2e/**/*.spec.ts --workspace 18.0.9 --testFailCount 1 --framework jest --storageFolder ./e2e/storage" }, "author": "john.mandia@openfin.co", "contributors": [ @@ -62,16 +62,16 @@ "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", "@openfin/automation-native": "^1.2.0", - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.12", diff --git a/how-to/workspace-platform-starter/public/common/dos.json b/how-to/workspace-platform-starter/public/common/dos.json index e7de1be9c4..63b6565975 100644 --- a/how-to/workspace-platform-starter/public/common/dos.json +++ b/how-to/workspace-platform-starter/public/common/dos.json @@ -2,7 +2,7 @@ "desktopSettings": { "systemApps": { "workspace": { - "version": "18.0.8", + "version": "18.0.9", "customConfig": { "hotkeys": { "toggleHomeVisibility": "CommandOrControl+Space" diff --git a/package-lock.json b/package-lock.json index 9cc244018d..d04fd00514 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "how-to/automation-testing/*" ], "devDependencies": { - "@openfin/node-adapter": "36.80.10", + "@openfin/node-adapter": "36.80.11", "fast-glob": "3.3.2", "fs-extra": "11.2.0", "replace-in-file": "7.1.0", @@ -299,16 +299,16 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "chart.js": "^4.4.2", "csstype": "^3.1.3", "luxon": "^3.4.4", "node-emoji": "1.11.0" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/luxon": "^3.4.2", "@types/node-emoji": "^1.8.2", "eslint": "8.57.0", @@ -335,13 +335,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "cookie-parser": "^1.4.6" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/cookie-parser": "^1.4.7", "@types/express": "^4.17.21", "eslint": "8.57.0", @@ -369,12 +369,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/bloomberg": "^2.0.0", - "@openfin/core": "36.80.10", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/core": "36.80.11", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/node-adapter": "36.80.10", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -400,12 +400,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/excel": "^1.5.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -433,13 +433,13 @@ "@finos/fdc3": "^2.0.3", "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -466,12 +466,12 @@ "dependencies": { "@microsoft/microsoft-graph-types": "^2.40.0", "@openfin/microsoft365": "1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -496,12 +496,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -526,12 +526,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -557,12 +557,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/openid-connect": "^1.0.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -587,13 +587,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "fast-xml-parser": "4.3.6" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/express": "^4.17.21", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", @@ -622,12 +622,12 @@ "dependencies": { "@openfin/salesforce": "2.3.0", "@openfin/salesforce-lwc": "1.1.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "copy-webpack-plugin": "^12.0.2", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", @@ -654,12 +654,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/salesforce": "2.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -685,13 +685,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -717,12 +717,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/servicenow": "^1.0.1", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -748,12 +748,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -779,12 +779,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -809,12 +809,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -839,12 +839,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -869,12 +869,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -899,12 +899,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -929,12 +929,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -959,12 +959,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -989,12 +989,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1019,12 +1019,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1050,12 +1050,12 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/cloud-interop": "^0.4.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1080,13 +1080,13 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1111,11 +1111,11 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8" + "@openfin/workspace": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1140,12 +1140,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1171,13 +1171,13 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@openfin/native-window-integration-client": "0.0.17", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "file-loader": "^6.2.0" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1206,16 +1206,16 @@ "@openfin/cloud-interop": "^0.4.0", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8", + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9", "csstype": "^3.1.3" }, "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", "@openfin/automation-native": "^1.2.0", - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "@types/cors": "^2.8.17", "@types/express": "^4.17.21", "@types/jest": "^29.5.12", @@ -1250,12 +1250,12 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/workspace": "18.0.8", - "@openfin/workspace-platform": "18.0.8" + "@openfin/workspace": "18.0.9", + "@openfin/workspace-platform": "18.0.9" }, "devDependencies": { - "@openfin/core": "36.80.10", - "@openfin/node-adapter": "36.80.10", + "@openfin/core": "36.80.11", + "@openfin/node-adapter": "36.80.11", "eslint": "8.57.0", "eslint-config-airbnb": "19.0.4", "eslint-config-airbnb-typescript": "18.0.0", @@ -1275,15 +1275,6 @@ "webpack-cli": "^5.1.4" } }, - "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.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -3799,9 +3790,9 @@ } }, "node_modules/@openfin/cloud-interop/node_modules/@openfin/core": { - "version": "37.81.20", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.20.tgz", - "integrity": "sha512-ak1IduUsWRmLIfdFj726tujc0Q1P4xybmqjZg6drBzXir3wvvB/gXMxt9bpD/t14O8owBqVVKyynZ6YxFxmY/w==", + "version": "37.81.22", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.22.tgz", + "integrity": "sha512-WUWjvswf8hNXwvRmiVNfyC0paXiFggdVwqkzDrhIlisg99MxtVfScfAkNjftVI9OlkDTfodQn9NJqF9OCtDCdA==", "dependencies": { "@types/node": "^16.0.0", "lodash": "^4.17.21", @@ -3809,9 +3800,9 @@ } }, "node_modules/@openfin/core": { - "version": "36.80.10", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.10.tgz", - "integrity": "sha512-B/OixAQ4iz8DtUdKyIQr8PUME5wzJ/8w34m2nqNkisAaFHXew3yuoGhEUKL1GldzgpKCiGFnyW8QOm4mGkdutQ==", + "version": "36.80.11", + "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.11.tgz", + "integrity": "sha512-C0dQROnoxk5p+4ZfSo1gzkzncHhd3jECX/2orQuBNgTu1QHkxfK4ecHONUsIhJO2M3inFP5BTkSmybf+znJbTg==", "bundleDependencies": [ "openfin-adapter" ], @@ -3854,9 +3845,9 @@ } }, "node_modules/@openfin/node-adapter": { - "version": "36.80.10", - "resolved": "https://registry.npmjs.org/@openfin/node-adapter/-/node-adapter-36.80.10.tgz", - "integrity": "sha512-BtuqcqGcbaLWt7creYTzkgzzQxV0nRVTr89dtleL9+mnAhoJrYkoG6+jIok+ykTrMHn6r9MSheOHJn0JmJwJ0A==", + "version": "36.80.11", + "resolved": "https://registry.npmjs.org/@openfin/node-adapter/-/node-adapter-36.80.11.tgz", + "integrity": "sha512-j8bjHwJnEp084UfIjxQ9WUTIvHC0c2Yt/m9lXYgBpQQrFTKhwERGgFDYBL0jgmXcT6ukLGkSl+KYAO7+v2zrNw==", "bundleDependencies": [ "openfin-adapter" ], @@ -3909,9 +3900,9 @@ } }, "node_modules/@openfin/workspace": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@openfin/workspace/-/workspace-18.0.8.tgz", - "integrity": "sha512-KHfrUiiccokLx+OTif9+pzpvsMgKARN5wmTfgi4GMK/isZ2RB1JgULT12BBlKHDAt80NGrPfK+SUT+aKFuObuA==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@openfin/workspace/-/workspace-18.0.9.tgz", + "integrity": "sha512-xt1K/B/wAxsWuRL8vlr9RNPYNg4V2pESPCb/2JZmW0/99C//Y/B+v6doR7XxDlWXpuSAh0ily+6so4ffZoNA6w==", "dependencies": { "@openfin/microsoft365": "^1.0.1", "@radix-ui/react-dropdown-menu": "^2.0.4", @@ -3929,7 +3920,7 @@ "lodash.merge": "^4.6.2", "next": "^12.3.4", "nprogress": "0.2.0", - "openfin-notifications": "2.5.0", + "openfin-notifications": "2.5.1", "react": "17.0.2", "react-color": "2.19.3", "react-dom": "17.0.2", @@ -3943,14 +3934,14 @@ "title-case": "3.0.3" }, "peerDependencies": { - "@openfin/core": "36.80.10", + "@openfin/core": "36.80.11", "@openfin/microsoft365": "^1.0.0" } }, "node_modules/@openfin/workspace-platform": { - "version": "18.0.8", - "resolved": "https://registry.npmjs.org/@openfin/workspace-platform/-/workspace-platform-18.0.8.tgz", - "integrity": "sha512-8Uq1FynEaxf0oFuKdZefQmAKP3mZz2HNnxv5MTCnLVSNVeP1HAvrfUWerL64e1ZVqqjxgjTrTa0P+8PwJjcjjw==", + "version": "18.0.9", + "resolved": "https://registry.npmjs.org/@openfin/workspace-platform/-/workspace-platform-18.0.9.tgz", + "integrity": "sha512-pyOjjiu9dO+fNrB2O/SSDp0HZhtJ+bL9CgL1Jy65K0wLAeSPlEqgvNoR/KFCaJJ6ExhyNIV62o8UXjoJvCJs0A==", "dependencies": { "@openfin/microsoft365": "^1.0.1", "@radix-ui/react-dropdown-menu": "^2.0.4", @@ -3968,7 +3959,7 @@ "lodash.merge": "^4.6.2", "next": "^12.3.4", "nprogress": "0.2.0", - "openfin-notifications": "2.5.0", + "openfin-notifications": "2.5.1", "react": "17.0.2", "react-color": "2.19.3", "react-dom": "17.0.2", @@ -3982,7 +3973,7 @@ "title-case": "3.0.3" }, "peerDependencies": { - "@openfin/core": "36.80.10" + "@openfin/core": "36.80.11" } }, "node_modules/@pkgjs/parseargs": { @@ -4019,28 +4010,15 @@ "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", "dev": true }, - "node_modules/@promptbook/core": { - "version": "0.44.0-1", - "resolved": "https://registry.npmjs.org/@promptbook/core/-/core-0.44.0-1.tgz", - "integrity": "sha512-+HS9RPOYj7v+SYxzUeJGfgffh1Kp2YsLlGy4CkWlxtk2NAcSz8IokhlJbed7WyMH0I+EvoKnD3DAU6ZadNjIvA==", - "dev": true, - "peer": true, - "dependencies": { - "spacetrim": "0.11.2" - } - }, "node_modules/@promptbook/utils": { - "version": "0.44.0-1", - "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.44.0-1.tgz", - "integrity": "sha512-6twWfKlM0wOqPTzyKKCn2OcXVxloveTfK/x2sFDIqOiyMYehrHVksrETEqr0QnZ4uY/yLMs6jIx5DdDlJrUJQw==", + "version": "0.45.0", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.45.0.tgz", + "integrity": "sha512-vahioBdwWDuc9KpAyJAHVNMUjrM0X/XxxtxpnSmFHrHnmK/8imlqP/Jk7wbuhp98XjUOCCQVFqKmh+9Kp78Q9g==", "dev": true, "dependencies": { "moment": "^2.30.1", "prettier": "2.8.1", - "spacetrim": "0.11.2" - }, - "peerDependencies": { - "@promptbook/core": "0.44.0-1" + "spacetrim": "0.11.20" } }, "node_modules/@promptbook/utils/node_modules/prettier": { @@ -4644,83 +4622,83 @@ ] }, "node_modules/@sentry-internal/feedback": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.1.tgz", - "integrity": "sha512-ejE4eRXLqv5emxVWudBkRQCv5Q7s21thei7gqSxGLBXe8AUrCjTiD0qA1ToJAKcleIyRRf/TQvGb/T7U6vwAAw==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.112.2.tgz", + "integrity": "sha512-z+XP8BwB8B3pa+i8xqbrPsbtDWUFUS6wo+FJbmOYUqOusJJbVFDAhBoEdKoo5ZjOcsAZG7XR6cA9zrhJynIWBA==", "dependencies": { - "@sentry/core": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.112.1.tgz", - "integrity": "sha512-+xDd/LEiJZGk4PQKs4xcAWKJFzFKpuNF64DFW/JWuJ5FDnKB+t7w198nQyAZKGjupN7LixLb49Z8O2Gda7fHQQ==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.112.2.tgz", + "integrity": "sha512-BCCCxrZ1wJvN6La5gg1JJbKitAhJI5MATCnhtklsZbUcHkHB9iZoj19J65+P56gwssvHz5xh63AjNiITaetIRg==", "dependencies": { - "@sentry/core": "7.112.1", - "@sentry/replay": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry/core": "7.112.2", + "@sentry/replay": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.1.tgz", - "integrity": "sha512-pZVIOB6+t4HlgU3mCRtIbvo//t8uQY9tnBjbJJ2nEv8nTu8A7/dZ5ebrLOWStV3bNp/+uCqLuLuuimJeNNn6vQ==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.112.2.tgz", + "integrity": "sha512-fT1Y46J4lfXZkgFkb03YMNeIEs2xS6jdKMoukMFQfRfVvL9fSWEbTgZpHPd/YTT8r2i082XzjtAoQNgklm/0Hw==", "dependencies": { - "@sentry/core": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.112.1.tgz", - "integrity": "sha512-NRTo3mJbhiCd9GEFEWL8SplFJhTCPjiAlOhjUw8MnJb7pkxWm2xhC7PVi6SUE8hF/g1rrEwgUr9SX5v8+xwK6g==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.112.2.tgz", + "integrity": "sha512-wULwavCch84+d0bueAdFm6CDm1u0TfOjN91VgY+sj/vxUV2vesvDgI8zRZfmbZEor3MYA90zerkZT3ehZQKbYw==", "dependencies": { - "@sentry-internal/feedback": "7.112.1", - "@sentry-internal/replay-canvas": "7.112.1", - "@sentry-internal/tracing": "7.112.1", - "@sentry/core": "7.112.1", - "@sentry/integrations": "7.112.1", - "@sentry/replay": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry-internal/feedback": "7.112.2", + "@sentry-internal/replay-canvas": "7.112.2", + "@sentry-internal/tracing": "7.112.2", + "@sentry/core": "7.112.2", + "@sentry/integrations": "7.112.2", + "@sentry/replay": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.1.tgz", - "integrity": "sha512-ZhOxt4sZVLqHurWqIY1ExWYZ20ViFTbqgW2GdJGHz4XwJhBln0ZVpHD+tKXy3GBEY+2Ee4qoqHi6tDrFgPvJqw==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.112.2.tgz", + "integrity": "sha512-gHPCcJobbMkk0VR18J65WYQTt3ED4qC6X9lHKp27Ddt63E+MDGkG6lvYBU1LS8cV7CdyBGC1XXDCfor61GvLsA==", "dependencies": { - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/integrations": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.1.tgz", - "integrity": "sha512-jIgXT+ahUS7zmhDMAzsgQHCNA6ZwZAp0Bwjoz0tcuGzNcv7mOCnjHz5YooJVQgXuREV653RmEuGGTklrpn6S2w==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/integrations/-/integrations-7.112.2.tgz", + "integrity": "sha512-ioC2yyU6DqtLkdmWnm87oNvdn2+9oKctJeA4t+jkS6JaJ10DcezjCwiLscX4rhB9aWJV3IWF7Op0O6K3w0t2Hg==", "dependencies": { - "@sentry/core": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1", + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2", "localforage": "^1.8.1" }, "engines": { @@ -4728,14 +4706,14 @@ } }, "node_modules/@sentry/react": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.112.1.tgz", - "integrity": "sha512-q0fDW3omq/NPaL7yRqWA1USxGtEAcdFZOngIMsr9Bc4fJBGXDO+xLwPWjo1MIVvdDBJJYL/9Z56ppqTb3kiGXw==", - "dependencies": { - "@sentry/browser": "7.112.1", - "@sentry/core": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.112.2.tgz", + "integrity": "sha512-Xf6mc1+/ncCk6ZFIj0oT4or2o0UxqqJZk09U/21RYNvVCn7+DNyCdJZ/F5wXWgPqVE67PrjydLLYaQWiqLibiA==", + "dependencies": { + "@sentry/browser": "7.112.2", + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4746,33 +4724,33 @@ } }, "node_modules/@sentry/replay": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.112.1.tgz", - "integrity": "sha512-4lobxfgmbB2C7ZHk1inWt9IRIvlQa2Sczau5ngE4Qd4mZSKIgIYGtIJC52uOuGvBcP8gHiIbA7ACihkd7834Ew==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.112.2.tgz", + "integrity": "sha512-7Ns/8D54WPsht1nlVj93Inf6rXyve2AZoibYN0YfcM2w3lI4NO51gPPHJU0lFEfMwzwK4ZBJWzOeW9098a+uEg==", "dependencies": { - "@sentry-internal/tracing": "7.112.1", - "@sentry/core": "7.112.1", - "@sentry/types": "7.112.1", - "@sentry/utils": "7.112.1" + "@sentry-internal/tracing": "7.112.2", + "@sentry/core": "7.112.2", + "@sentry/types": "7.112.2", + "@sentry/utils": "7.112.2" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.1.tgz", - "integrity": "sha512-5dLIxWZfCXH5kExrsWc+R6loMr3RR6OQuonVNL3Fa8Dw37Q7aExCrjRmocOHeQKhHwNBd3QhYm7phjnbxS6Oaw==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.112.2.tgz", + "integrity": "sha512-kCMLt7yhY5OkWE9MeowlTNmox9pqDxcpvqguMo4BDNZM5+v9SEb1AauAdR78E1a1V8TyCzjBD7JDfXWhvpYBcQ==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.112.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.1.tgz", - "integrity": "sha512-/AMGDD6OMvT2cpfL5KuDC10oTS8yOt7BAPomXJNS/xn1TRcEEEZ1TWbYZiGT5ijggQEL1OXSojpeQU8XEW8dcQ==", + "version": "7.112.2", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.112.2.tgz", + "integrity": "sha512-OjLh0hx0t1EcL4ZIjf+4svlmmP+tHUDGcr5qpFWH78tjmkPW4+cqPuZCZfHSuWcDdeiaXi8TnYoVRqDcJKK/eQ==", "dependencies": { - "@sentry/types": "7.112.1" + "@sentry/types": "7.112.2" }, "engines": { "node": ">=8" @@ -5178,9 +5156,9 @@ "dev": true }, "node_modules/@types/react": { - "version": "18.2.79", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", - "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", + "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -5517,9 +5495,9 @@ "dev": true }, "node_modules/@vitest/snapshot": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.0.tgz", - "integrity": "sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.2.tgz", + "integrity": "sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -7406,9 +7384,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1605.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1605.0.tgz", - "integrity": "sha512-/wtOuF7WgkbN6YL3xJ+FB54kvIAfnP/DQVDaE6rSYv6ft0xr01Si94NgQWhb5OcFkFfRAC4auZX8PiFNtOi9xQ==", + "version": "2.1608.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1608.0.tgz", + "integrity": "sha512-qqmKS6PRNTRO+O3ZVp9+tvB6asy5uRYDpR6AhSrnhu46JtDpI47aB/O9vyykqQf3JsFu0loinDJjl2hxQoal9A==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -7614,34 +7592,44 @@ "optional": true }, "node_modules/bare-fs": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.3.tgz", - "integrity": "sha512-amG72llr9pstfXOBOHve1WjiuKKAMnebcmMbPWDZ7BCevAoJLpugjuAPRsDINEyjT0a6tbaVx3DctkXIRbLuJw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz", + "integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==", "dev": true, "optional": true, "dependencies": { "bare-events": "^2.0.0", "bare-path": "^2.0.0", - "streamx": "^2.13.0" + "bare-stream": "^1.0.0" } }, "node_modules/bare-os": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", - "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz", + "integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==", "dev": true, "optional": true }, "node_modules/bare-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.1.tgz", - "integrity": "sha512-OHM+iwRDRMDBsSW7kl3dO62JyHdBKO3B25FB9vNQBPcGHMo4+eA8Yj41Lfbk3pS/seDY+siNge0LdRTulAau/A==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz", + "integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==", "dev": true, "optional": true, "dependencies": { "bare-os": "^2.1.0" } }, + "node_modules/bare-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz", + "integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==", + "dev": true, + "optional": true, + "dependencies": { + "streamx": "^2.16.1" + } + }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -7686,19 +7674,6 @@ "node": "*" } }, - "node_modules/binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==", - "dev": true, - "dependencies": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -7977,24 +7952,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-polyfill": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", - "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ==", - "dev": true, - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/builtin-modules": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", @@ -8188,18 +8145,6 @@ "node": ">=4" } }, - "node_modules/chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==", - "dev": true, - "dependencies": { - "traverse": ">=0.3.0 <0.4" - }, - "engines": { - "node": "*" - } - }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9868,9 +9813,9 @@ } }, "node_modules/edgedriver": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.3.10.tgz", - "integrity": "sha512-RFSHYMNtcF1PjaGZCA2rdQQ8hSTLPZgcYgeY1V6dC+tR4NhZXwFAku+8hCbRYh7ZlwKKrTbVu9FwknjFddIuuw==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-5.4.0.tgz", + "integrity": "sha512-5gA79cSdvB/wucK809OTxKP3hsVyXVROE8DL9vFiReYbknghadioV5pFXRr2kA4MZKJMKNsNCsInmaLeyCf03A==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -9878,7 +9823,7 @@ "decamelize": "^6.0.0", "edge-paths": "^3.0.5", "node-fetch": "^3.3.2", - "unzipper": "^0.10.14", + "unzipper": "^0.11.4", "which": "^4.0.0" }, "bin": { @@ -9931,9 +9876,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.747", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.747.tgz", - "integrity": "sha512-+FnSWZIAvFHbsNVmUxhEqWiaOiPMcfum1GQzlWCg/wLigVtshOsjXHyEFfmt6cFK6+HkS3QOJBv6/3OPumbBfw==" + "version": "1.4.750", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", + "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==" }, "node_modules/emittery": { "version": "0.13.1", @@ -10104,15 +10049,15 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", - "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", + "es-abstract": "^1.23.3", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", @@ -10658,9 +10603,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "peer": true, "engines": { @@ -12444,9 +12389,9 @@ } }, "node_modules/geckodriver": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.3.3.tgz", - "integrity": "sha512-we2c2COgxFkLVuoknJNx+ioP+7VDq0sr6SCqWHTzlA4kzIbzR0EQ1Pps34s8WrsOnQqPC8a4sZV9dRPROOrkSg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-4.4.0.tgz", + "integrity": "sha512-Y/Np2VkAhBkJoFAIY3pKH3rICUcR5rH9VD6EHwh0CqUIh6Opzr/NFwfcQenYfbRT/659R15/35LpA1s6h9wPPg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -12455,8 +12400,8 @@ "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.4", "node-fetch": "^3.3.2", - "tar-fs": "^3.0.5", - "unzipper": "^0.10.14", + "tar-fs": "^3.0.6", + "unzipper": "^0.11.4", "which": "^4.0.0" }, "bin": { @@ -12476,9 +12421,9 @@ } }, "node_modules/geckodriver/node_modules/tar-fs": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", - "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "dependencies": { "pump": "^3.0.0", @@ -15416,12 +15361,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/listenercount": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", - "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ==", - "dev": true - }, "node_modules/load-bmfont": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", @@ -15477,12 +15416,12 @@ } }, "node_modules/locate-app": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.8.tgz", - "integrity": "sha512-Sut0UwjwQePwsfkUWwvJt6upC5nnlUp9+ac1ARtunD7evNpBnj3DAysTv4LIpEcsGfihJryqocMuowj8fF06TA==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/locate-app/-/locate-app-2.4.11.tgz", + "integrity": "sha512-PS3s33TwvMte9SEWAMtZglr7hrgnEqivajB/zaaQ4u0xOYVtzerPSjSZqNsyMPycJyfJG30c5lpjoJsxvo835g==", "dev": true, "dependencies": { - "@promptbook/utils": "0.44.0-1", + "@promptbook/utils": "0.45.0", "type-fest": "2.13.0", "userhome": "1.0.0" } @@ -16445,9 +16384,9 @@ } }, "node_modules/mqtt": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.3.tgz", - "integrity": "sha512-R5fTibItlB5kvikTrU29ZgImvAch2ihKMyuvN3CJqd6nsZuearCSv3IGqxEdsSIXxflK6lGDgFmqnsnyJqzYtQ==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.5.4.tgz", + "integrity": "sha512-odO09EheOHFo8Bv6yM2iEtsM75t06tGZfyq5TrQboQmOYEzX053WqvygNPCCxqQ+iSYAuQxGpsx1f5WUtF8bCw==", "dependencies": { "@types/readable-stream": "^4.0.5", "@types/ws": "^8.5.9", @@ -16529,9 +16468,9 @@ ] }, "node_modules/mqtt/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==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", + "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", "engines": { "node": "14 || >=16.14" } @@ -17076,9 +17015,9 @@ "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, "node_modules/openfin-notifications": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.5.0.tgz", - "integrity": "sha512-1ShP0oyziXYN6xCIPbgAh/N8fxH/RJydoNv5fx+c+f9S+5vOuZUSYsGd3cWcESRkeuPMWU+9xFQjcyWjQ7uymw==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/openfin-notifications/-/openfin-notifications-2.5.1.tgz", + "integrity": "sha512-MhCwQ+I0WyIxbjr7WWlJFtP15LhB7jPftzRHWSO0Mnuu22o/VL/Kq9h3TwmdtBMbZ7IZSvUPxnECYl6fGke5uQ==", "dependencies": { "openfin-service-async": "^1.0.1", "openfin-service-signal": "^1.0.0", @@ -17087,7 +17026,7 @@ "styled-components": "4.4.1" }, "peerDependencies": { - "@openfin/core": "36.80.10" + "@openfin/core": "36.80.11" } }, "node_modules/openfin-service-async": { @@ -17224,17 +17163,17 @@ "link": true }, "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" @@ -17584,9 +17523,9 @@ } }, "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==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", + "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -18019,9 +17958,9 @@ } }, "node_modules/pretty-format/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/pretty-ms": { @@ -18815,9 +18754,9 @@ } }, "node_modules/read-pkg/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==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", + "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -18870,9 +18809,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.16.0.tgz", - "integrity": "sha512-z7Rf5PXxIhbI6eJBTwdqe5bO02nUUmctq4WqviFSstBAWV0YNtEQRhEnZw73WJ8sZOqgFG6Jdl8gYZu7NBJZnA==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz", + "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==", "dev": true, "engines": { "node": ">=16" @@ -19608,9 +19547,9 @@ "dev": true }, "node_modules/selenium-webdriver": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.19.0.tgz", - "integrity": "sha512-8XHW8m9V2XN2/SC1kr4bWzMtGvjmKUEZ6S0UBoDBqonhmwEIzKOLbzhanBd08HCOg1s1O0XrDWCD71NnA8Zt0g==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-4.20.0.tgz", + "integrity": "sha512-s/G44lGQ1xB3tmtX6NNPomlkpL6CxLdmAvp/AGWWwi4qv5Te1+qji7tPSyr6gyuoPpdYiof1rKnWe3luy0MrYA==", "dev": true, "peer": true, "dependencies": { @@ -20003,9 +19942,9 @@ } }, "node_modules/spacetrim": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.2.tgz", - "integrity": "sha512-/rdSi1YqdWpJ2fm2tan8O9ntmAFm04K+aSBgntGJib8nw1aPYZNxGGoPq0c1bC36CbVwLzaiPOLIITQXLBM5Pw==", + "version": "0.11.20", + "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.20.tgz", + "integrity": "sha512-YGGUh6s1exCagGQyG4z2cZcSwB6tsMFBKS6xUI9AuYBgkr5WHYoWx0KoBh33U2zKIQSRQZsQkRP/dI9Ly10k3g==", "dev": true }, "node_modules/spdx-correct": { @@ -21030,15 +20969,6 @@ "node": ">=12" } }, - "node_modules/traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/trim-newlines": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", @@ -21483,21 +21413,16 @@ } }, "node_modules/unzipper": { - "version": "0.10.14", - "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.14.tgz", - "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.11.4.tgz", + "integrity": "sha512-T6CZQdmCMhlpHM+x4E5E9pIYCXH5INcrI8Cowr4tLQIciuw5nnp+X/LEwgeuFnay3vp9hVo4ydPw3WYSg2agWQ==", "dev": true, "dependencies": { "big-integer": "^1.6.17", - "binary": "~0.3.0", "bluebird": "~3.4.1", - "buffer-indexof-polyfill": "~1.0.0", "duplexer2": "~0.1.4", "fstream": "^1.0.12", - "graceful-fs": "^4.2.2", - "listenercount": "~1.0.1", - "readable-stream": "~2.3.6", - "setimmediate": "~1.0.4" + "graceful-fs": "^4.2.2" } }, "node_modules/update-browserslist-db": { @@ -22458,6 +22383,15 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/worker-timers": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-7.1.7.tgz", diff --git a/package.json b/package.json index b652f3d1dd..8e6d729d32 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ ], "license": "SEE LICENSE IN LICENSE.MD", "devDependencies": { - "@openfin/node-adapter": "36.80.10", + "@openfin/node-adapter": "36.80.11", "fast-glob": "3.3.2", "fs-extra": "11.2.0", "replace-in-file": "7.1.0", From 440480f32c575068276d94459e58c4472fe16660 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 30 Apr 2024 12:57:22 +0100 Subject: [PATCH 20/23] Update cloud interop to 0.36.11 --- .../client/src/provider.ts | 7 ++- .../client/src/shapes.ts | 6 +-- .../support-context-and-intents/package.json | 2 +- .../openfin-cloud-interop/shapes.ts | 4 +- .../workspace-platform-starter/package.json | 2 +- package-lock.json | 48 ++++++++++--------- 6 files changed, 38 insertions(+), 31 deletions(-) diff --git a/how-to/support-context-and-intents/client/src/provider.ts b/how-to/support-context-and-intents/client/src/provider.ts index 61ea48f996..df1a61b915 100644 --- a/how-to/support-context-and-intents/client/src/provider.ts +++ b/how-to/support-context-and-intents/client/src/provider.ts @@ -33,10 +33,13 @@ async function initializeWorkspacePlatform(customSettings: CustomSettings): Prom const defaultBroker = createInteropOverride(customSettings); const interopOverride: OpenFin.ConstructorOverride[] = [defaultBroker]; - if (customSettings?.cloudInteropProvider?.enabled === true) { + if ( + customSettings?.cloudInteropProvider?.enabled === true && + customSettings?.cloudInteropProvider?.connectParams !== undefined + ) { console.log("Initializing the cloud interop override"); const initializedCloudInteropOverride = (await cloudInteropOverride( - customSettings.cloudInteropProvider + customSettings?.cloudInteropProvider?.connectParams )) as unknown as OpenFin.ConstructorOverride; interopOverride.push(initializedCloudInteropOverride); } diff --git a/how-to/support-context-and-intents/client/src/shapes.ts b/how-to/support-context-and-intents/client/src/shapes.ts index 73e9201bf0..c44fd8dee5 100644 --- a/how-to/support-context-and-intents/client/src/shapes.ts +++ b/how-to/support-context-and-intents/client/src/shapes.ts @@ -1,4 +1,4 @@ -import type { ConnectParams } from "@openfin/cloud-interop/dist/interfaces"; +import type { CloudInteropOverrideParams } from "@openfin/cloud-interop"; /** * The custom settings stored in the manifest.fin.json. @@ -57,7 +57,7 @@ export interface AppProviderSettings { /** * Settings for the cloud interop provider. */ -export interface CloudInteropProviderSettings extends ConnectParams { +export interface CloudInteropProviderSettings { /** * Is the cloud interop provider enabled */ @@ -66,5 +66,5 @@ export interface CloudInteropProviderSettings extends ConnectParams { /** * The connect parameters for the cloud interop provider. */ - connectParams: ConnectParams; + connectParams: CloudInteropOverrideParams; } diff --git a/how-to/support-context-and-intents/package.json b/how-to/support-context-and-intents/package.json index 2e6b4ab4e3..d413f2a5bc 100644 --- a/how-to/support-context-and-intents/package.json +++ b/how-to/support-context-and-intents/package.json @@ -21,7 +21,7 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/cloud-interop": "^0.4.0", + "@openfin/cloud-interop": "0.36.11", "@openfin/workspace": "18.0.9", "@openfin/workspace-platform": "18.0.9" }, diff --git a/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts index bdbd803d7f..25e7d0ecf9 100644 --- a/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts +++ b/how-to/workspace-platform-starter/client/src/modules/interop-override/openfin-cloud-interop/shapes.ts @@ -1,8 +1,8 @@ -import type { ConnectParams } from "@openfin/cloud-interop/dist/interfaces"; +import type { CloudInteropOverrideParams } from "@openfin/cloud-interop"; /** * Options for the openfin cloud interop interop override. These settings can be provided by OpenFin and user credentials should not be checked in. */ -export interface OpenFinCloudInteropOptions extends ConnectParams { +export interface OpenFinCloudInteropOptions extends CloudInteropOverrideParams { /** * Optional name for the logger of this module. */ diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index eca6acc0e0..257441b139 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -59,7 +59,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", - "@openfin/cloud-interop": "^0.4.0", + "@openfin/cloud-interop": "0.36.11", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.9", diff --git a/package-lock.json b/package-lock.json index d04fd00514..8e45105008 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1049,7 +1049,7 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/cloud-interop": "^0.4.0", + "@openfin/cloud-interop": "0.36.11", "@openfin/workspace": "18.0.9", "@openfin/workspace-platform": "18.0.9" }, @@ -1075,6 +1075,18 @@ "webpack-cli": "^5.1.4" } }, + "how-to/support-context-and-intents/node_modules/@openfin/cloud-interop": { + "version": "0.36.11", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", + "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", + "dependencies": { + "axios": "^1.6.2", + "mqtt": "^5.3.1" + }, + "peerDependencies": { + "@openfin/core": "36.80.11" + } + }, "how-to/use-notifications": { "name": "openfin-workspace--use-notifications", "version": "18.0.0", @@ -1203,7 +1215,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", - "@openfin/cloud-interop": "^0.4.0", + "@openfin/cloud-interop": "0.36.11", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.9", @@ -1275,6 +1287,18 @@ "webpack-cli": "^5.1.4" } }, + "how-to/workspace-platform-starter/node_modules/@openfin/cloud-interop": { + "version": "0.36.11", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", + "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", + "dependencies": { + "axios": "^1.6.2", + "mqtt": "^5.3.1" + }, + "peerDependencies": { + "@openfin/core": "36.80.11" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -3779,26 +3803,6 @@ "@rollup/rollup-linux-x64-gnu": "4.14.1" } }, - "node_modules/@openfin/cloud-interop": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.4.0.tgz", - "integrity": "sha512-rXifPr8RjJC8SO/YXp0RnWaXJdEbRyYXg1LEnmsNaPp1cL6r088LKBrkMTKYkRDZj9Z9CDieWxbbKpeAJ6+fBg==", - "dependencies": { - "@openfin/core": "^37.80.39", - "axios": "^1.6.2", - "mqtt": "^5.3.1" - } - }, - "node_modules/@openfin/cloud-interop/node_modules/@openfin/core": { - "version": "37.81.22", - "resolved": "https://registry.npmjs.org/@openfin/core/-/core-37.81.22.tgz", - "integrity": "sha512-WUWjvswf8hNXwvRmiVNfyC0paXiFggdVwqkzDrhIlisg99MxtVfScfAkNjftVI9OlkDTfodQn9NJqF9OCtDCdA==", - "dependencies": { - "@types/node": "^16.0.0", - "lodash": "^4.17.21", - "ws": "^7.3.0" - } - }, "node_modules/@openfin/core": { "version": "36.80.11", "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.11.tgz", From 44ddca2fd2951cb8039f38da17da7ea44a529ff3 Mon Sep 17 00:00:00 2001 From: John Date: Tue, 30 Apr 2024 13:29:39 +0100 Subject: [PATCH 21/23] Remove native ui automation until a review is performed. --- README.md | 1 - .../register-with-home-js/package.json | 1 - .../register-with-home-js/tests/index.spec.js | 40 - .../register-with-home-ts/package.json | 1 - .../register-with-home-ts/tests/index.spec.ts | 40 - .../register-with-store-js/package.json | 1 - .../automation-testing/selenium/package.json | 1 - .../selenium/test/index.spec.js | 40 - how-to/automation-testing/wdio/package.json | 1 - .../wdio/test/index.spec.js | 40 - .../workspace-platform-starter/package.json | 1 - package-lock.json | 1832 +++-------------- package.json | 3 - 13 files changed, 259 insertions(+), 1743 deletions(-) diff --git a/README.md b/README.md index 3c166c3f1b..3325cfabcb 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,6 @@ OpenFin provides some packages to assist in automation testing of your apps. - [@openfin/automation-cli](https://www.npmjs.com/package/@openfin/automation-cli) - A command line tool for running tests in an OpenFin environment. - [@openfin/automation-helpers](https://www.npmjs.com/package/@openfin/automation-helpers) - A package of helper methods for interacting with OpenFin components. -- [@openfin/automation-native](https://www.npmjs.com/package/@openfin/automation-native) - Helper methods to help interacting with native mouse and keyboard elements, such as context menus. | Example | Description | Live Launch | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ----------- | diff --git a/how-to/automation-testing/register-with-home-js/package.json b/how-to/automation-testing/register-with-home-js/package.json index 870c637257..3c034b43c5 100644 --- a/how-to/automation-testing/register-with-home-js/package.json +++ b/how-to/automation-testing/register-with-home-js/package.json @@ -19,7 +19,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10", "jasmine-pretty-html-reporter": "0.2.5", "jest-html-reporters": "3.1.7", diff --git a/how-to/automation-testing/register-with-home-js/tests/index.spec.js b/how-to/automation-testing/register-with-home-js/tests/index.spec.js index 854779824b..8571801e2b 100644 --- a/how-to/automation-testing/register-with-home-js/tests/index.spec.js +++ b/how-to/automation-testing/register-with-home-js/tests/index.spec.js @@ -7,7 +7,6 @@ const { WebDriver, WebDriverKeys } = require('@openfin/automation-helpers'); -const { NativeDriver, NativeDriverKeys } = require('@openfin/automation-native'); const { expect } = require('chai'); const { By } = require('selenium-webdriver'); @@ -277,43 +276,4 @@ describe('Register with Home', () => { await WebDriver.sleep(2000); }); - - it('Can select a context menu entry in the interop window', async () => { - const foundWin = await WebDriver.switchToWindow('identityString', [ - /internal-generated-window*/, - /register-with-home/ - ]); - expect(foundWin).to.be.true; - - if (foundWin) { - const elem = await WebDriver.findElementByPath("//*[@aria-label='Open Browser Menu']"); - expect(elem).to.exist; - - if (elem) { - // First click on the button to show the native context menu - await WebDriver.actions([ - { type: 'mouseMove', origin: elem }, - // Open the context menu - { type: 'mouseClick', button: MouseButton.Left }, - // Pause to give the menu time to appear - { type: 'pause', duration: 2000 } - ]); - - // Do down arrow * 7 to select the close, you should see the confirmation popup - await NativeDriver.actions([ - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'pause', duration: 1000 }, - { type: 'keyPress', key: NativeDriverKeys.Enter }, - // Pause to see the confirmation - { type: 'pause', duration: 2000 } - ]); - } - } - }); }); diff --git a/how-to/automation-testing/register-with-home-ts/package.json b/how-to/automation-testing/register-with-home-ts/package.json index 7209d62c49..16a0148e04 100644 --- a/how-to/automation-testing/register-with-home-ts/package.json +++ b/how-to/automation-testing/register-with-home-ts/package.json @@ -19,7 +19,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@types/chai": "4.3.12", "chai": "4.3.10" } diff --git a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts index a185b99f64..830772bb53 100644 --- a/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts +++ b/how-to/automation-testing/register-with-home-ts/tests/index.spec.ts @@ -8,7 +8,6 @@ import { WebDriver, WebDriverKeys } from "@openfin/automation-helpers"; -import { NativeDriver, NativeDriverKeys } from "@openfin/automation-native"; import { expect } from "chai"; import { By } from "selenium-webdriver"; @@ -278,43 +277,4 @@ describe("Register with Home", () => { await WebDriver.sleep(2000); }); - - it("Can select a context menu entry in the interop window", async () => { - const foundWin = await WebDriver.switchToWindow("identityString", [ - /internal-generated-window*/, - /register-with-home/ - ]); - expect(foundWin).to.be.true; - - if (foundWin) { - const elem = await WebDriver.findElementByPath("//*[@aria-label='Open Browser Menu']"); - expect(elem).to.exist; - - if (elem) { - // First click on the button to show the native context menu - await WebDriver.actions([ - { type: "mouseMove", origin: elem }, - // Open the context menu - { type: "mouseClick", button: MouseButton.Left }, - // Pause to give the menu time to appear - { type: "pause", duration: 2000 } - ]); - - // Do down arrow * 7 to select the close, you should see the confirmation popup - await NativeDriver.actions([ - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "keyPress", key: NativeDriverKeys.Down }, - { type: "pause", duration: 1000 }, - { type: "keyPress", key: NativeDriverKeys.Enter }, - // Pause to see the confirmation - { type: "pause", duration: 2000 } - ]); - } - } - }); }); diff --git a/how-to/automation-testing/register-with-store-js/package.json b/how-to/automation-testing/register-with-store-js/package.json index 5f6ca1f8f1..1c74082efa 100644 --- a/how-to/automation-testing/register-with-store-js/package.json +++ b/how-to/automation-testing/register-with-store-js/package.json @@ -17,7 +17,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10" } } diff --git a/how-to/automation-testing/selenium/package.json b/how-to/automation-testing/selenium/package.json index 0cb9fee76c..3caa18c3bc 100644 --- a/how-to/automation-testing/selenium/package.json +++ b/how-to/automation-testing/selenium/package.json @@ -12,7 +12,6 @@ "license": "SEE LICENSE IN LICENSE.MD", "devDependencies": { "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10", "chromedriver": "122.0.6", "fkill": "7.2.1", diff --git a/how-to/automation-testing/selenium/test/index.spec.js b/how-to/automation-testing/selenium/test/index.spec.js index 85710a25ba..f45b770513 100644 --- a/how-to/automation-testing/selenium/test/index.spec.js +++ b/how-to/automation-testing/selenium/test/index.spec.js @@ -7,7 +7,6 @@ const { WebDriver, WebDriverKeys } = require('@openfin/automation-helpers'); -const { NativeDriver, NativeDriverKeys } = require('@openfin/automation-native'); const { expect } = require('chai'); const { By } = require('selenium-webdriver'); @@ -275,43 +274,4 @@ describe('Register with Home', () => { await WebDriver.sleep(2000); }); - - it('Can select a context menu entry in the interop window', async () => { - const foundWin = await WebDriver.switchToWindow('identityString', [ - /internal-generated-window*/, - /register-with-home/ - ]); - expect(foundWin).to.be.true; - - if (foundWin) { - const elem = await WebDriver.findElementByPath("//*[@aria-label='Open Browser Menu']"); - expect(elem).to.exist; - - if (elem) { - // First click on the button to show the native context menu - await WebDriver.actions([ - { type: 'mouseMove', origin: elem }, - // Open the context menu - { type: 'mouseClick', button: MouseButton.Left }, - // Pause to give the menu time to appear - { type: 'pause', duration: 2000 } - ]); - - // Do down arrow * 7 to select the close, you should see the confirmation popup - await NativeDriver.actions([ - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'pause', duration: 1000 }, - { type: 'keyPress', key: NativeDriverKeys.Enter }, - // Pause to see the confirmation - { type: 'pause', duration: 2000 } - ]); - } - } - }); }); diff --git a/how-to/automation-testing/wdio/package.json b/how-to/automation-testing/wdio/package.json index 4db74eb54e..5f1858cdad 100644 --- a/how-to/automation-testing/wdio/package.json +++ b/how-to/automation-testing/wdio/package.json @@ -9,7 +9,6 @@ }, "devDependencies": { "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@wdio/cli": "8.34.1", "@wdio/local-runner": "8.34.1", "@wdio/mocha-framework": "8.33.1", diff --git a/how-to/automation-testing/wdio/test/index.spec.js b/how-to/automation-testing/wdio/test/index.spec.js index 85710a25ba..f45b770513 100644 --- a/how-to/automation-testing/wdio/test/index.spec.js +++ b/how-to/automation-testing/wdio/test/index.spec.js @@ -7,7 +7,6 @@ const { WebDriver, WebDriverKeys } = require('@openfin/automation-helpers'); -const { NativeDriver, NativeDriverKeys } = require('@openfin/automation-native'); const { expect } = require('chai'); const { By } = require('selenium-webdriver'); @@ -275,43 +274,4 @@ describe('Register with Home', () => { await WebDriver.sleep(2000); }); - - it('Can select a context menu entry in the interop window', async () => { - const foundWin = await WebDriver.switchToWindow('identityString', [ - /internal-generated-window*/, - /register-with-home/ - ]); - expect(foundWin).to.be.true; - - if (foundWin) { - const elem = await WebDriver.findElementByPath("//*[@aria-label='Open Browser Menu']"); - expect(elem).to.exist; - - if (elem) { - // First click on the button to show the native context menu - await WebDriver.actions([ - { type: 'mouseMove', origin: elem }, - // Open the context menu - { type: 'mouseClick', button: MouseButton.Left }, - // Pause to give the menu time to appear - { type: 'pause', duration: 2000 } - ]); - - // Do down arrow * 7 to select the close, you should see the confirmation popup - await NativeDriver.actions([ - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'keyPress', key: NativeDriverKeys.Down }, - { type: 'pause', duration: 1000 }, - { type: 'keyPress', key: NativeDriverKeys.Enter }, - // Pause to see the confirmation - { type: 'pause', duration: 2000 } - ]); - } - } - }); }); diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 257441b139..59fc22a37e 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -69,7 +69,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@openfin/core": "36.80.11", "@openfin/node-adapter": "36.80.11", "@types/cors": "^2.8.17", diff --git a/package-lock.json b/package-lock.json index 8e45105008..588c976a96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,7 +27,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10", "jasmine-pretty-html-reporter": "0.2.5", "jest-html-reporters": "3.1.7", @@ -110,7 +109,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@types/chai": "4.3.12", "chai": "4.3.10" } @@ -122,7 +120,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10" } }, @@ -132,7 +129,6 @@ "license": "SEE LICENSE IN LICENSE.MD", "devDependencies": { "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "chai": "4.3.10", "chromedriver": "122.0.6", "fkill": "7.2.1", @@ -229,9 +225,9 @@ } }, "how-to/automation-testing/selenium/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -281,7 +277,6 @@ "version": "18.0.0", "devDependencies": { "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@wdio/cli": "8.34.1", "@wdio/local-runner": "8.34.1", "@wdio/mocha-framework": "8.33.1", @@ -1075,18 +1070,6 @@ "webpack-cli": "^5.1.4" } }, - "how-to/support-context-and-intents/node_modules/@openfin/cloud-interop": { - "version": "0.36.11", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", - "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", - "dependencies": { - "axios": "^1.6.2", - "mqtt": "^5.3.1" - }, - "peerDependencies": { - "@openfin/core": "36.80.11" - } - }, "how-to/use-notifications": { "name": "openfin-workspace--use-notifications", "version": "18.0.0", @@ -1225,7 +1208,6 @@ "devDependencies": { "@openfin/automation-cli": "^1.2.0", "@openfin/automation-helpers": "^1.2.0", - "@openfin/automation-native": "^1.2.0", "@openfin/core": "36.80.11", "@openfin/node-adapter": "36.80.11", "@types/cors": "^2.8.17", @@ -1287,18 +1269,6 @@ "webpack-cli": "^5.1.4" } }, - "how-to/workspace-platform-starter/node_modules/@openfin/cloud-interop": { - "version": "0.36.11", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", - "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", - "dependencies": { - "axios": "^1.6.2", - "mqtt": "^5.3.1" - }, - "peerDependencies": { - "@openfin/core": "36.80.11" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1341,20 +1311,20 @@ } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", + "@babel/generator": "^7.24.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -1378,11 +1348,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -1479,15 +1449,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1497,30 +1467,30 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", - "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", "engines": { "node": ">=6.9.0" } }, "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.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "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.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -1535,9 +1505,9 @@ } }, "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.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "engines": { "node": ">=6.9.0" } @@ -1551,24 +1521,24 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -1642,9 +1612,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1829,9 +1799,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1853,18 +1823,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@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.24.1", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1881,12 +1851,12 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -2048,28 +2018,28 @@ "integrity": "sha512-sq+iGbjU6yRl7xHhp62nB1tV4biFaHZgUAInzPTJvzXWl9xjZMmXvvbeZW6WGZaCSvjQhJPSrmWs+4z2c73T+g==" }, "node_modules/@floating-ui/core": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", - "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.1.tgz", + "integrity": "sha512-42UH54oPZHPdRHdw6BgoBD6cg/eVTmVrFcgeRDM3jbO7uxSoipVcmcIGFcA5jmOHO5apcyvBhkSKES3fQJnu7A==", "dependencies": { - "@floating-ui/utils": "^0.2.1" + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", - "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.4.tgz", + "integrity": "sha512-0G8R+zOvQsAG1pg2Q99P21jiqxqGBW1iRe/iXHsBRBxnpXKFI8QwbB4x5KmYLggNO5m34IQgOIu9SCRfR/WWiQ==", "dependencies": { "@floating-ui/core": "^1.0.0", "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", - "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.9.tgz", + "integrity": "sha512-q0umO0+LQK4+p6aGyvzASqKbKOJcAHJ7ycE9CuUvfx3s9zTHWmGJTPOIlM/hmSBfUfg/XfY5YhLBLR/LHwShQQ==", "dependencies": { - "@floating-ui/dom": "^1.6.1" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -2077,9 +2047,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", - "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.14", @@ -2689,521 +2659,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "node_modules/@jimp/core/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@jimp/utils/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true, - "peer": true - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -3521,181 +2976,54 @@ "node": ">= 10" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.3.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.4.tgz", - "integrity": "sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nut-tree/libnut": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut/-/libnut-2.5.2.tgz", - "integrity": "sha512-IwlGgalGQjjCrbPq52HTLtsR6MRsGJ6c4GhgHmgwJPD/yBVCzsU5EA2rwDgjKSgK+jiLOpykySDZQ+owhyd1zw==", - "dev": true, - "peer": true, - "dependencies": { - "@nut-tree/libnut-darwin": "2.5.2", - "@nut-tree/libnut-linux": "2.5.2", - "@nut-tree/libnut-win32": "2.5.2" - }, - "engines": { - "node": ">=10.15.3" - } - }, - "node_modules/@nut-tree/libnut-darwin": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-darwin/-/libnut-darwin-2.5.2.tgz", - "integrity": "sha512-OKqCgpBbZj2oNQkLM+mM7TyiLBAQsRyN7Q5UXVKbyXnzcQTU1FZBJ1mLGvdfzzspajznL3Mkl08AQE+xYYbTMw==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/libnut-linux": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-linux/-/libnut-linux-2.5.2.tgz", - "integrity": "sha512-uY6XDuNE8soYRUhV23g6KQN5BRR43MYNLyPnrrQa5Wtfgm6oW9kBRu6JtkWz6Fn6trAWrVAKnbPoTiEgHuGz9w==", - "cpu": [ - "x64", - "arm64" - ], - "dev": true, - "os": [ - "darwin", - "linux", - "win32" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0" - }, - "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" - } - }, - "node_modules/@nut-tree/libnut-win32": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@nut-tree/libnut-win32/-/libnut-win32-2.5.2.tgz", - "integrity": "sha512-cnNAQ0pzUMH7hrSjTWRiFfXid3sbSZ78jpv1rA154dlka3wqo6m1OtaX4PLVQK4irZl5REz74iPdHcjeTy9rtg==", + "node_modules/@next/swc-win32-x64-msvc": { + "version": "12.3.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.4.tgz", + "integrity": "sha512-DQ20JEfTBZAgF8QCjYfJhv2/279M6onxFjdG/+5B0Cyj00/EdBxiWb2eGGFgQhrBbNv/lsvzFbbi0Ptf8Vw/bg==", "cpu": [ - "x64", - "arm64" + "x64" ], - "dev": true, + "optional": true, "os": [ - "darwin", - "linux", "win32" ], - "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, "dependencies": { - "bindings": "1.5.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=10.15.3" - }, - "optionalDependencies": { - "@nut-tree/node-mac-permissions": "2.2.1" + "node": ">= 8" } }, - "node_modules/@nut-tree/node-mac-permissions": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@nut-tree/node-mac-permissions/-/node-mac-permissions-2.2.1.tgz", - "integrity": "sha512-yoijwCqt2yS9UFTv7THGUwZgy2D2TorN703QpYNOergbTJ6vEmeG379pIZDfBuvf56n24RMzKJVoSqr9WIq/Yw==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "dependencies": { - "bindings": "1.5.0", - "node-addon-api": "5.0.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@nut-tree/nut-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@nut-tree/nut-js/-/nut-js-3.1.2.tgz", - "integrity": "sha512-hi7DBZz9O/t4goeQu3hKeauQbb0PcBmurScl3/t5L3I1pub3ibV24sft8KNSS3INKnGCj7I3Ma5iNHQ24g+95g==", - "cpu": [ - "x64", - "arm64" - ], + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "os": [ - "linux", - "darwin", - "win32" - ], - "peer": true, "dependencies": { - "@nut-tree/libnut": "2.5.2", - "clipboardy": "2.3.0", - "jimp": "0.16.13", - "node-abort-controller": "2.0.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, "node_modules/@openfin/automation-cli": { @@ -3775,18 +3103,6 @@ "webdriver": "8.x" } }, - "node_modules/@openfin/automation-native": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@openfin/automation-native/-/automation-native-1.2.0.tgz", - "integrity": "sha512-AqhfmN4geVnmPr+BuojnDw34z4JkXGMCvoC4xl6uozATtr86O5SYHS+uGzpqymh2eFv9WOyBevA0RqeVzXMuqA==", - "dev": true, - "dependencies": { - "@openfin/automation-helpers": "1.2.0" - }, - "peerDependencies": { - "@nut-tree/nut-js": "3.x" - } - }, "node_modules/@openfin/bloomberg": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@openfin/bloomberg/-/bloomberg-2.0.0.tgz", @@ -3796,13 +3112,25 @@ } }, "node_modules/@openfin/bloomberg/node_modules/@finos/fdc3": { - "version": "2.1.0-beta.8", - "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.8.tgz", - "integrity": "sha512-u8DVO9gZKnPk7iKTnKi8ecQ8qTNqehXRLzBFbEwlov0BnHtLnoygXw/4YrSTYrA6f0Z1MhmQTCaQzCjx7x33VQ==", + "version": "2.1.0-beta.9", + "resolved": "https://registry.npmjs.org/@finos/fdc3/-/fdc3-2.1.0-beta.9.tgz", + "integrity": "sha512-At9TWVjLiUDF6qd1pNRRoAqGFY6ZzqMVSNIe+oH2s0hGBbTBeFoWthwfaLmFgkQfpMZDWMGKVUlOxGtD1RIaMA==", "optionalDependencies": { "@rollup/rollup-linux-x64-gnu": "4.14.1" } }, + "node_modules/@openfin/cloud-interop": { + "version": "0.36.11", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", + "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", + "dependencies": { + "axios": "^1.6.2", + "mqtt": "^5.3.1" + }, + "peerDependencies": { + "@openfin/core": "36.80.11" + } + }, "node_modules/@openfin/core": { "version": "36.80.11", "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.11.tgz", @@ -4834,13 +4162,6 @@ "integrity": "sha512-kIhULpw9TrGYnHp/8VfdcneIcxKnLixmADtukQRtJUmsVlMg0niMkwV0xZmi8hqa57xqilIHjWFA0GKvEjVU5g==", "dev": true }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true, - "peer": true - }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -5279,17 +4600,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.1.tgz", - "integrity": "sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz", + "integrity": "sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==", "dev": true, "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/type-utils": "7.7.1", - "@typescript-eslint/utils": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/type-utils": "7.8.0", + "@typescript-eslint/utils": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.3.1", @@ -5315,16 +4636,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.1.tgz", - "integrity": "sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.8.0.tgz", + "integrity": "sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4" }, "engines": { @@ -5344,14 +4665,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.1.tgz", - "integrity": "sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz", + "integrity": "sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1" + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -5362,14 +4683,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.1.tgz", - "integrity": "sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz", + "integrity": "sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.7.1", - "@typescript-eslint/utils": "7.7.1", + "@typescript-eslint/typescript-estree": "7.8.0", + "@typescript-eslint/utils": "7.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -5390,9 +4711,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.1.tgz", - "integrity": "sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.8.0.tgz", + "integrity": "sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==", "dev": true, "peer": true, "engines": { @@ -5404,14 +4725,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.1.tgz", - "integrity": "sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz", + "integrity": "sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/visitor-keys": "7.7.1", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/visitor-keys": "7.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -5449,18 +4770,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.1.tgz", - "integrity": "sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.8.0.tgz", + "integrity": "sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.15", "@types/semver": "^7.5.8", - "@typescript-eslint/scope-manager": "7.7.1", - "@typescript-eslint/types": "7.7.1", - "@typescript-eslint/typescript-estree": "7.7.1", + "@typescript-eslint/scope-manager": "7.8.0", + "@typescript-eslint/types": "7.8.0", + "@typescript-eslint/typescript-estree": "7.8.0", "semver": "^7.6.0" }, "engines": { @@ -5475,13 +4796,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.1.tgz", - "integrity": "sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz", + "integrity": "sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/types": "7.7.1", + "@typescript-eslint/types": "7.8.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -5499,9 +4820,9 @@ "dev": true }, "node_modules/@vitest/snapshot": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.2.tgz", - "integrity": "sha512-CTEp/lTYos8fuCc9+Z55Ga5NVPKUgExritjF5VY7heRFUfheoAqBneUlvXSUJHUZPjnPmyZA96yLRJDP1QATFQ==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.3.tgz", + "integrity": "sha512-K3mvIsjyKYBhNIDujMD2gfQEzddLe51nNOAf45yKRt/QFJcUIeTQd2trRvv6M6oCBHNVnZwFWbQ4yj96ibiDsA==", "dev": true, "dependencies": { "magic-string": "^0.30.5", @@ -5670,9 +4991,9 @@ } }, "node_modules/@wdio/cli/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -5872,9 +5193,9 @@ } }, "node_modules/@wdio/globals/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "optional": true, "engines": { @@ -6183,9 +5504,9 @@ } }, "node_modules/@wdio/runner/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -6328,9 +5649,9 @@ } }, "node_modules/@wdio/shared-store-service/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -6742,15 +6063,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -6831,13 +6152,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", - "dev": true, - "peer": true - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6851,27 +6165,6 @@ "node": ">= 8" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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" - } - ], - "peer": true - }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -7388,9 +6681,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1608.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1608.0.tgz", - "integrity": "sha512-qqmKS6PRNTRO+O3ZVp9+tvB6asy5uRYDpR6AhSrnhu46JtDpI47aB/O9vyykqQf3JsFu0loinDJjl2hxQoal9A==", + "version": "2.1609.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1609.0.tgz", + "integrity": "sha512-l5RiTld8f0AtxgSN2hXkuM/PPD04UHm4yfnJR6NpuQ+VSCl9RQfdNFUlnnVrJPd2hcoq/qz/gQiBVPjFqGAZwQ==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -7690,16 +6983,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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, - "peer": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, "node_modules/bl": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/bl/-/bl-6.0.12.tgz", @@ -7782,13 +7065,6 @@ "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==", "dev": true }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", - "dev": true, - "peer": true - }, "node_modules/body-parser": { "version": "1.20.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", @@ -7941,16 +7217,6 @@ "node": ">=8.0.0" } }, - "node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -8103,9 +7369,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", + "version": "1.0.30001614", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", + "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", "funding": [ { "type": "opencollective", @@ -8121,16 +7387,6 @@ } ] }, - "node_modules/centra": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", - "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", - "dev": true, - "peer": true, - "dependencies": { - "follow-redirects": "^1.15.6" - } - }, "node_modules/chai": { "version": "4.3.10", "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", @@ -8316,9 +7572,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/classnames": { @@ -8455,156 +7711,6 @@ "node": ">= 12" } }, - "node_modules/clipboardy": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-2.3.0.tgz", - "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==", - "dev": true, - "peer": true, - "dependencies": { - "arch": "^2.1.1", - "execa": "^1.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clipboardy/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, - "peer": 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/clipboardy/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, - "peer": 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/clipboardy/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==", - "dev": true, - "peer": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/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==", - "dev": true, - "peer": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clipboardy/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "peer": true - }, - "node_modules/clipboardy/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "peer": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -9741,13 +8847,6 @@ "node": ">=6.0.0" } }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", - "dev": true, - "peer": true - }, "node_modules/domexception": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", @@ -9880,9 +8979,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.750", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz", - "integrity": "sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA==" + "version": "1.4.751", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", + "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==" }, "node_modules/emittery": { "version": "0.13.1", @@ -9953,9 +9052,9 @@ } }, "node_modules/envinfo": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", - "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", + "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" @@ -10079,9 +9178,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==" + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.2.tgz", + "integrity": "sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA==" }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -11065,13 +10164,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==", - "dev": true, - "peer": true - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -11456,31 +10548,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dev": true, - "peer": true, - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "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, - "peer": true - }, "node_modules/filelist": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", @@ -12587,19 +11654,8 @@ "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, - "engines": { - "node": ">= 14" - } - }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dev": true, - "peer": true, - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" + "engines": { + "node": ">= 14" } }, "node_modules/glob": { @@ -12638,17 +11694,6 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dev": true, - "peer": true, - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -12665,12 +11710,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" @@ -13073,9 +12119,9 @@ } }, "node_modules/i18next": { - "version": "23.11.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz", - "integrity": "sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA==", + "version": "23.11.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.3.tgz", + "integrity": "sha512-Pq/aSKowir7JM0rj+Wa23Kb6KKDUGno/HjG+wRQu0PxoTbpQ4N89MAT0rFGvXmLkRLNMb1BbBOKGozl01dabzg==", "funding": [ { "type": "individual", @@ -13125,23 +12171,6 @@ "node": ">= 4" } }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/image-q/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "dev": true, - "peer": true - }, "node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", @@ -13192,9 +12221,9 @@ } }, "node_modules/import-meta-resolve": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", - "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, "funding": { "type": "github", @@ -13567,13 +12596,6 @@ "node": ">=8" } }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", - "dev": true, - "peer": true - }, "node_modules/is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -14956,27 +13978,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "dev": true, - "peer": true, - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jimp/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "dev": true, - "peer": true - }, "node_modules/jmespath": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", @@ -14993,13 +13994,6 @@ "url": "https://github.com/sponsors/panva" } }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", - "dev": true, - "peer": true - }, "node_modules/js-sdsl": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", @@ -15131,9 +14125,9 @@ } }, "node_modules/jsdom/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -15365,23 +14359,6 @@ "uc.micro": "^2.0.0" } }, - "node_modules/load-bmfont": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", - "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", - "dev": true, - "peer": true, - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^2.9.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -16116,16 +15093,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dev": true, - "peer": true, - "dependencies": { - "dom-walk": "^0.1.0" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -16472,9 +15439,9 @@ ] }, "node_modules/mqtt/node_modules/lru-cache": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", - "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } @@ -16503,9 +15470,9 @@ } }, "node_modules/mqtt/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "engines": { "node": ">=10.0.0" }, @@ -16643,28 +15610,6 @@ } } }, - "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, - "peer": true - }, - "node_modules/node-abort-controller": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-2.0.0.tgz", - "integrity": "sha512-L8RfEgjBTHAISTuagw51PprVAqNZoG6KSB6LQ6H1bskMVkFs5E71IyjauLBv3XbuomJlguWF/VnRHdJ1gqiAqA==", - "dev": true, - "peer": true - }, - "node_modules/node-addon-api": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz", - "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/node-domexception": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", @@ -16933,13 +15878,6 @@ "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", - "dev": true, - "peer": true - }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -17286,13 +16224,12 @@ } }, "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==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", "dev": true, - "peer": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/p-limit": { @@ -17384,52 +16321,6 @@ "node": ">=6" } }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", - "dev": true, - "peer": true - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", - "dev": true, - "peer": true - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", - "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", - "dev": true, - "peer": true, - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.5.0" - } - }, - "node_modules/parse-bmfont-xml/node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, - "peer": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", - "dev": true, - "peer": true - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -17527,9 +16418,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", - "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -17566,39 +16457,12 @@ "node": "*" } }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "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==", "dev": true }, - "node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "dev": true, - "peer": true, - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -17746,19 +16610,6 @@ "node": ">= 6" } }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dev": true, - "peer": true, - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -17832,16 +16683,6 @@ "node": ">=4" } }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/polka": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", @@ -18758,9 +17599,9 @@ } }, "node_modules/read-pkg/node_modules/lru-cache": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.1.tgz", - "integrity": "sha512-tS24spDe/zXhWbNPErCHs/AGOzbKGHT+ybSBqmdLm8WZ1xXLWvH8Qn71QPAlqVhd0qUTWjy+Kl9JmISgDdEjsA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -18813,9 +17654,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.17.0.tgz", - "integrity": "sha512-9flrz1zkfLRH3jO3bLflmTxryzKMxVa7841VeMgBaNQGY6vH4RCcpN/sQLB7mQQYh1GZ5utT2deypMuCy4yicw==", + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.18.0.tgz", + "integrity": "sha512-+dbmiyliDY/2TTcjCS7NpI9yV2iEFlUDk5TKnsbkN7ZoRu5s7bT+zvYtNFhFXC2oLwURGT2frACAZvbbyNBI+w==", "dev": true, "engines": { "node": ">=16" @@ -18845,38 +17686,6 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "peer": true, - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/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, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdir-glob": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", @@ -19517,15 +18326,15 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -19566,9 +18375,9 @@ } }, "node_modules/selenium-webdriver/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "peer": true, "engines": { @@ -20224,16 +19033,6 @@ "node": ">=8" } }, - "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==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -20275,24 +19074,6 @@ "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dev": true, - "peer": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/style-value-types": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz", @@ -20565,15 +19346,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/taskkill/node_modules/p-finally": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", - "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/taskkill/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -20638,9 +19410,9 @@ "dev": true }, "node_modules/terser": { - "version": "5.30.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", - "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.0.tgz", + "integrity": "sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -20821,13 +19593,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", - "dev": true, - "peer": true - }, "node_modules/tiny-invariant": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.2.0.tgz", @@ -20898,49 +19663,10 @@ "node": ">=0.6" } }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dev": true, - "peer": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/token-types/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "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" - } - ], - "peer": true - }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -21548,16 +20274,6 @@ "node": ">= 0.8.0" } }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dev": true, - "peer": true, - "dependencies": { - "pako": "^1.0.5" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -21890,9 +20606,9 @@ } }, "node_modules/webdriver/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -22512,19 +21228,6 @@ } } }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dev": true, - "peer": true, - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, "node_modules/xml-name-validator": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", @@ -22534,13 +21237,6 @@ "node": ">=12" } }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", - "dev": true, - "peer": true - }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", @@ -22567,16 +21263,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "dev": true }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 8e6d729d32..1054f3087f 100644 --- a/package.json +++ b/package.json @@ -60,9 +60,6 @@ "overrides": { "parse-bmfont-xml": { "xml2js": "0.5.0" - }, - "@openfin/automation-native": { - "phin": "3.7.1" } } } From 4c391f9be1e2607ac2d17d5d0664ddb3ab30a84c Mon Sep 17 00:00:00 2001 From: John Date: Tue, 7 May 2024 20:50:28 +0100 Subject: [PATCH 22/23] Update cloud interop version --- .../support-context-and-intents/package.json | 2 +- .../workspace-platform-starter/package.json | 2 +- package-lock.json | 40 ++++++++++++------- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/how-to/support-context-and-intents/package.json b/how-to/support-context-and-intents/package.json index d413f2a5bc..3d769507b2 100644 --- a/how-to/support-context-and-intents/package.json +++ b/how-to/support-context-and-intents/package.json @@ -21,7 +21,7 @@ "author": "john.mandia@openfin.co", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/cloud-interop": "0.36.11", + "@openfin/cloud-interop": "0.36.12", "@openfin/workspace": "18.0.9", "@openfin/workspace-platform": "18.0.9" }, diff --git a/how-to/workspace-platform-starter/package.json b/how-to/workspace-platform-starter/package.json index 59fc22a37e..30bffbbe93 100644 --- a/how-to/workspace-platform-starter/package.json +++ b/how-to/workspace-platform-starter/package.json @@ -59,7 +59,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", - "@openfin/cloud-interop": "0.36.11", + "@openfin/cloud-interop": "0.36.12", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.9", diff --git a/package-lock.json b/package-lock.json index 588c976a96..128968bda7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1044,7 +1044,7 @@ "version": "18.0.0", "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { - "@openfin/cloud-interop": "0.36.11", + "@openfin/cloud-interop": "0.36.12", "@openfin/workspace": "18.0.9", "@openfin/workspace-platform": "18.0.9" }, @@ -1070,6 +1070,18 @@ "webpack-cli": "^5.1.4" } }, + "how-to/support-context-and-intents/node_modules/@openfin/cloud-interop": { + "version": "0.36.12", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.12.tgz", + "integrity": "sha512-2fSQEiKjO+D8IhUFKa4pg16yKWj5xunwg0Hii/6A3NYYcaKtSqLiMUuUA9PVKUJ4f7dChBK1kuZdyJ1esYLZDg==", + "dependencies": { + "axios": "^1.6.2", + "mqtt": "^5.3.1" + }, + "peerDependencies": { + "@openfin/core": "36.80.11" + } + }, "how-to/use-notifications": { "name": "openfin-workspace--use-notifications", "version": "18.0.0", @@ -1198,7 +1210,7 @@ "license": "SEE LICENSE IN LICENSE.MD", "dependencies": { "@finos/fdc3": "^2.0.3", - "@openfin/cloud-interop": "0.36.11", + "@openfin/cloud-interop": "0.36.12", "@openfin/openid-connect": "^1.0.0", "@openfin/snap-sdk": "0.3.0", "@openfin/workspace": "18.0.9", @@ -1269,6 +1281,18 @@ "webpack-cli": "^5.1.4" } }, + "how-to/workspace-platform-starter/node_modules/@openfin/cloud-interop": { + "version": "0.36.12", + "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.12.tgz", + "integrity": "sha512-2fSQEiKjO+D8IhUFKa4pg16yKWj5xunwg0Hii/6A3NYYcaKtSqLiMUuUA9PVKUJ4f7dChBK1kuZdyJ1esYLZDg==", + "dependencies": { + "axios": "^1.6.2", + "mqtt": "^5.3.1" + }, + "peerDependencies": { + "@openfin/core": "36.80.11" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -3119,18 +3143,6 @@ "@rollup/rollup-linux-x64-gnu": "4.14.1" } }, - "node_modules/@openfin/cloud-interop": { - "version": "0.36.11", - "resolved": "https://registry.npmjs.org/@openfin/cloud-interop/-/cloud-interop-0.36.11.tgz", - "integrity": "sha512-QSpcjZ/9/WpJxQ1lNO17ACEFEiQk32iMd1WV6IX69CIqcYnNjTCf1efFWrK0kUJ79dmf6UQHM4sXxPVGEZ/oxw==", - "dependencies": { - "axios": "^1.6.2", - "mqtt": "^5.3.1" - }, - "peerDependencies": { - "@openfin/core": "36.80.11" - } - }, "node_modules/@openfin/core": { "version": "36.80.11", "resolved": "https://registry.npmjs.org/@openfin/core/-/core-36.80.11.tgz", From 81b2a0a60aaf09644903def533bc7eaeb3a150ea Mon Sep 17 00:00:00 2001 From: John Date: Wed, 8 May 2024 11:08:48 +0100 Subject: [PATCH 23/23] Updated the common call and manager portal apps so they support running in the desktop browser as well as workspace. --- .../common/views/contact/call-app/index.html | 1 + .../common/views/contact/call-app/index.js | 44 ++++-- .../common/views/contact/common/contacts.js | 17 ++- .../contact/investments-and-models/index.html | 1 + .../contact/investments-and-models/index.js | 17 ++- .../contact/participant-history/index.html | 1 + .../contact/participant-history/index.js | 17 ++- .../contact/participant-selection/index.html | 1 + .../contact/participant-selection/index.js | 129 ++++++++++-------- .../contact/participant-summary/index.html | 1 + .../contact/participant-summary/index.js | 22 ++- .../common/views/contact/call-app/index.html | 1 + .../common/views/contact/call-app/index.js | 44 ++++-- .../common/views/contact/common/contacts.js | 17 ++- .../contact/investments-and-models/index.html | 1 + .../contact/investments-and-models/index.js | 17 ++- .../contact/participant-history/index.html | 1 + .../contact/participant-history/index.js | 17 ++- .../contact/participant-selection/index.html | 1 + .../contact/participant-selection/index.js | 129 ++++++++++-------- .../contact/participant-summary/index.html | 1 + .../contact/participant-summary/index.js | 22 ++- .../common/views/contact/call-app/index.html | 1 + .../common/views/contact/call-app/index.js | 44 ++++-- .../common/views/contact/common/contacts.js | 17 ++- .../contact/investments-and-models/index.html | 1 + .../contact/investments-and-models/index.js | 17 ++- .../contact/participant-history/index.html | 1 + .../contact/participant-history/index.js | 17 ++- .../contact/participant-selection/index.html | 1 + .../contact/participant-selection/index.js | 129 ++++++++++-------- .../contact/participant-summary/index.html | 1 + .../contact/participant-summary/index.js | 22 ++- .../common/views/contact/call-app/index.html | 1 + .../common/views/contact/call-app/index.js | 44 ++++-- .../common/views/contact/common/contacts.js | 17 ++- .../contact/investments-and-models/index.html | 1 + .../contact/investments-and-models/index.js | 17 ++- .../contact/participant-history/index.html | 1 + .../contact/participant-history/index.js | 17 ++- .../contact/participant-selection/index.html | 1 + .../contact/participant-selection/index.js | 129 ++++++++++-------- .../contact/participant-summary/index.html | 1 + .../contact/participant-summary/index.js | 22 ++- .../workspace-platform-starter/CHANGELOG.md | 1 + .../common/views/contact/call-app/index.html | 1 + .../common/views/contact/call-app/index.js | 44 ++++-- .../common/views/contact/common/contacts.js | 17 ++- .../contact/investments-and-models/index.html | 1 + .../contact/investments-and-models/index.js | 17 ++- .../contact/participant-history/index.html | 1 + .../contact/participant-history/index.js | 17 ++- .../contact/participant-selection/index.html | 1 + .../contact/participant-selection/index.js | 129 ++++++++++-------- .../contact/participant-summary/index.html | 1 + .../contact/participant-summary/index.js | 22 ++- .../views/manager-portal/common/common.js | 5 + .../views/manager-portal/common/contacts.js | 17 ++- .../manager-portal/manager-paths/index.html | 1 + .../manager-portal/manager-paths/index.js | 6 +- .../views/manager-portal/my-team/index.html | 6 +- 61 files changed, 856 insertions(+), 435 deletions(-) diff --git a/how-to/register-with-home/public/common/views/contact/call-app/index.html b/how-to/register-with-home/public/common/views/contact/call-app/index.html index e433b97bad..3637d0686b 100644 --- a/how-to/register-with-home/public/common/views/contact/call-app/index.html +++ b/how-to/register-with-home/public/common/views/contact/call-app/index.html @@ -6,6 +6,7 @@ Call Application + diff --git a/how-to/register-with-home/public/common/views/contact/call-app/index.js b/how-to/register-with-home/public/common/views/contact/call-app/index.js index f74c2b9fc9..7cd441c56a 100644 --- a/how-to/register-with-home/public/common/views/contact/call-app/index.js +++ b/how-to/register-with-home/public/common/views/contact/call-app/index.js @@ -104,24 +104,38 @@ function initializeDOM() { await appChannel.broadcast(context); } - if (window.fdc3 !== undefined) { + /** + * Sets up the related fdc3 listeners once fdc3 is available. + */ + function setupListeners() { const startCallIntent = 'StartCall'; const openAppIntent = 'OpenApp'; - fdc3.addIntentListener(startCallIntent, (ctx, metadata) => { - console.log(`Received Context For Intent: ${startCallIntent}`, ctx, metadata); - updateCallInformation(ctx, startCallIntent); - return new Promise((resolve) => { - // To demonstrate getResult in fdc3 2.0 we simply return the context that was sent. - resolve(ctx); + try { + fdc3.addContextListener('fdc3.contact', (ctx, metadata) => { + console.log('Received Context', ctx, metadata); + updateCallInformation(ctx); }); - }); - fdc3.addIntentListener(openAppIntent, (ctx, metadata) => { - console.log(`Received Context For Intent: ${openAppIntent}`, ctx, metadata); - updateCallInformation(ctx, openAppIntent); - }); - fdc3.addContextListener('fdc3.contact', (ctx, metadata) => { - console.log('Received Context', ctx, metadata); - updateCallInformation(ctx); + fdc3.addIntentListener(startCallIntent, (ctx, metadata) => { + console.log(`Received Context For Intent: ${startCallIntent}`, ctx, metadata); + updateCallInformation(ctx, startCallIntent); + return new Promise((resolve) => { + // To demonstrate getResult in fdc3 2.0 we simply return the context that was sent. + resolve(ctx); + }); + }); + fdc3.addIntentListener(openAppIntent, (ctx, metadata) => { + console.log(`Received Context For Intent: ${openAppIntent}`, ctx, metadata); + updateCallInformation(ctx, openAppIntent); + }); + } catch (error) { + console.error('Error setting up all of the fdc3 listeners', error); + } + } + if (window.fdc3 !== undefined) { + setupListeners(); + } else { + window.addEventListener('fdc3Ready', async () => { + setupListeners(); }); } } diff --git a/how-to/register-with-home/public/common/views/contact/common/contacts.js b/how-to/register-with-home/public/common/views/contact/common/contacts.js index 2c9de045e1..37d14d7fb8 100644 --- a/how-to/register-with-home/public/common/views/contact/common/contacts.js +++ b/how-to/register-with-home/public/common/views/contact/common/contacts.js @@ -79,10 +79,17 @@ export function userToFdc3Context(user) { * @returns The custom settings from the manifest. */ async function getManifestCustomSettings() { - // Get the manifest for the current application - const app = await fin.Application.getCurrent(); + try { + if (window.fin) { + // Get the manifest for the current application + const app = await fin.Application.getCurrent(); - // Extract the custom settings for this application - const manifest = await app.getManifest(); - return manifest.customSettings ?? {}; + // Extract the custom settings for this application + const manifest = await app.getManifest(); + return manifest.customSettings ?? {}; + } + } catch { + // not inside of an OpenFin container or there isn't app support. + } + return {}; } diff --git a/how-to/register-with-home/public/common/views/contact/investments-and-models/index.html b/how-to/register-with-home/public/common/views/contact/investments-and-models/index.html index bb27b20a85..6eeea8e8fa 100644 --- a/how-to/register-with-home/public/common/views/contact/investments-and-models/index.html +++ b/how-to/register-with-home/public/common/views/contact/investments-and-models/index.html @@ -6,6 +6,7 @@ Investments & Models + diff --git a/how-to/register-with-home/public/common/views/contact/investments-and-models/index.js b/how-to/register-with-home/public/common/views/contact/investments-and-models/index.js index 97359789b7..71f36524d5 100644 --- a/how-to/register-with-home/public/common/views/contact/investments-and-models/index.js +++ b/how-to/register-with-home/public/common/views/contact/investments-and-models/index.js @@ -2,9 +2,24 @@ * Initialize the DOM. */ function initializeDOM() { - if (window.fdc3) { + if (window.fdc3 !== undefined) { + setupListeners(); + } else { + window.addEventListener('fdc3Ready', async () => { + setupListeners(); + }); + } +} + +/** + * Sets up the related fdc3 listeners once fdc3 is available. + */ +function setupListeners() { + try { window.fdc3.addContextListener(contextHandler); window.fdc3.addIntentListener('ViewContact', contextHandler); + } catch (error) { + console.error('There was an error while setting up all of the fdc3 listeners', error); } } diff --git a/how-to/register-with-home/public/common/views/contact/participant-history/index.html b/how-to/register-with-home/public/common/views/contact/participant-history/index.html index 4c468baec6..9477f2e6fb 100644 --- a/how-to/register-with-home/public/common/views/contact/participant-history/index.html +++ b/how-to/register-with-home/public/common/views/contact/participant-history/index.html @@ -6,6 +6,7 @@ Participant History + diff --git a/how-to/register-with-home/public/common/views/contact/participant-history/index.js b/how-to/register-with-home/public/common/views/contact/participant-history/index.js index 75de7f400e..5835e9a94f 100644 --- a/how-to/register-with-home/public/common/views/contact/participant-history/index.js +++ b/how-to/register-with-home/public/common/views/contact/participant-history/index.js @@ -2,9 +2,24 @@ * Initialize the DOM. */ function initializeDOM() { - if (window.fdc3) { + if (window.fdc3 !== undefined) { + setupListeners(); + } else { + window.addEventListener('fdc3Ready', async () => { + setupListeners(); + }); + } +} + +/** + * Sets up the related fdc3 listeners once fdc3 is available. + */ +function setupListeners() { + try { window.fdc3.addContextListener(contextHandler); window.fdc3.addIntentListener('ViewContact', contextHandler); + } catch (error) { + console.error('There was an error while setting up all of the fdc3 listeners', error); } } diff --git a/how-to/register-with-home/public/common/views/contact/participant-selection/index.html b/how-to/register-with-home/public/common/views/contact/participant-selection/index.html index 02183eb297..e6994a9576 100644 --- a/how-to/register-with-home/public/common/views/contact/participant-selection/index.html +++ b/how-to/register-with-home/public/common/views/contact/participant-selection/index.html @@ -6,6 +6,7 @@ Participant Selection +