From 75ee3f7982236f917bad3425a758f9f8ab83c40b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 8 Sep 2024 03:10:55 +0000 Subject: [PATCH 01/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6207) Update report Co-authored-by: mcasimir <334881+mcasimir@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index e4afdb12f6b..4bbe021a8c5 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Thu Sep 05 2024. +This document was automatically generated on Sun Sep 08 2024. ## List of dependencies From 02b83c35894eb7cff1bdebb1d9321a7592090b98 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 05:05:21 +0000 Subject: [PATCH 02/57] v1.44.4-beta.0 --- package-lock.json | 2 +- packages/compass/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0cfbc4d6bb0..e67c6eae0bb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44484,7 +44484,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.2-beta.0", + "version": "1.44.4-beta.0", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index d3bc842cbb6..093f4b5ad5b 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.2-beta.0", + "version": "1.44.4-beta.0", "apiVersion": "3.0.0", "main": "build/main.js", "author": { @@ -278,5 +278,5 @@ "macos-export-certificate-and-key": "^1.1.2", "win-export-certificate-and-key": "^2.0.1" }, - "releasePublisher": "Anna Henningsen " + "releasePublisher": "Maurizio Casimirri " } From adb8f53eb63686578c8980732a239cdecd701050 Mon Sep 17 00:00:00 2001 From: Paula Stachova Date: Mon, 9 Sep 2024 10:39:56 +0200 Subject: [PATCH 03/57] fix: remove outdated shortcut COMPASS-8259 (#6204) --- .../components/shell-info-modal/keyboard-shortcuts-table.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/compass-shell/src/components/shell-info-modal/keyboard-shortcuts-table.tsx b/packages/compass-shell/src/components/shell-info-modal/keyboard-shortcuts-table.tsx index b2495c16526..5da2d4978cd 100644 --- a/packages/compass-shell/src/components/shell-info-modal/keyboard-shortcuts-table.tsx +++ b/packages/compass-shell/src/components/shell-info-modal/keyboard-shortcuts-table.tsx @@ -13,10 +13,6 @@ import { } from '@mongodb-js/compass-components'; const hotkeys = [ - { - key: 'Ctrl+`', - description: 'Toggle shell.', - }, { key: 'Ctrl+A', description: 'Moves the cursor to the beginning of the line.', From a1c7ebeee29d1a66b0852939991bad76682e1729 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 08:46:41 +0000 Subject: [PATCH 04/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6208) Update report Co-authored-by: paula-stacho <5196720+paula-stacho@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 4bbe021a8c5..a01fc3005aa 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Sun Sep 08 2024. +This document was automatically generated on Mon Sep 09 2024. ## List of dependencies From 8fbd864cde76c12936fcf8b2b2e0811e51058f71 Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Mon, 9 Sep 2024 14:40:20 +0200 Subject: [PATCH 05/57] fix(explain-plan): use executionStats verbosity COMPASS-8263 (#6209) use correct explain verbosity --- .../src/stores/explain-plan-modal-store.ts | 12 ++++-------- packages/data-service/src/data-service.ts | 10 ++++------ 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts index 66aa9e0699c..7267d7b9c4e 100644 --- a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts +++ b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts @@ -198,13 +198,13 @@ export const openExplainPlanModal = ( const { isDataLake, namespace } = getState(); + const explainVerbosity = isDataLake + ? 'queryPlannerExtended' + : 'executionStats'; + try { if (event.aggregation) { const { collation, maxTimeMS } = event.aggregation; - const explainVerbosity = isDataLake - ? 'queryPlannerExtended' - : 'allPlansExecution'; - const pipeline = event.aggregation.pipeline.filter((stage) => { // Getting explain plan for a pipeline with an out / merge stage can // cause data corruption issues in non-genuine MongoDB servers, for @@ -254,10 +254,6 @@ export const openExplainPlanModal = ( if (event.query) { const { filter, ...options } = event.query; - const explainVerbosity = isDataLake - ? 'queryPlannerExtended' - : 'allPlansExecution'; - const explainOptions = { ...options, maxTimeMS: capMaxTimeMSAtPreferenceLimit( diff --git a/packages/data-service/src/data-service.ts b/packages/data-service/src/data-service.ts index f6c595ac145..2761fd7ba59 100644 --- a/packages/data-service/src/data-service.ts +++ b/packages/data-service/src/data-service.ts @@ -1861,8 +1861,7 @@ class DataServiceImpl extends WithLogContext implements DataService { return { ns, verbosity: - executionOptions?.explainVerbosity || - ExplainVerbosity.allPlansExecution, + executionOptions?.explainVerbosity || ExplainVerbosity.executionStats, }; }) explainFind( @@ -1872,7 +1871,7 @@ class DataServiceImpl extends WithLogContext implements DataService { executionOptions?: ExplainExecuteOptions ): Promise { const verbosity = - executionOptions?.explainVerbosity || ExplainVerbosity.allPlansExecution; + executionOptions?.explainVerbosity || ExplainVerbosity.executionStats; let cursor: FindCursor; return this._cancellableOperation( @@ -1894,8 +1893,7 @@ class DataServiceImpl extends WithLogContext implements DataService { return { ns, verbosity: - executionOptions?.explainVerbosity || - ExplainVerbosity.allPlansExecution, + executionOptions?.explainVerbosity || ExplainVerbosity.executionStats, }; }) explainAggregate( @@ -1905,7 +1903,7 @@ class DataServiceImpl extends WithLogContext implements DataService { executionOptions?: ExplainExecuteOptions ): Promise { const verbosity = - executionOptions?.explainVerbosity || ExplainVerbosity.queryPlanner; + executionOptions?.explainVerbosity || ExplainVerbosity.executionStats; let cursor: AggregationCursor; return this._cancellableOperation( From baecaefa76df5424fd63a281e39ced1a83474f27 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Mon, 9 Sep 2024 15:23:33 +0200 Subject: [PATCH 06/57] chore(testing-library): cleanup implementation; use react-hooks for rendering hooks instead of custom implementation; refactor plugin helpers interface (#6210) * chore(testing-library): cleanup implementation; use react-hooks for rendering hooks instead of custom implementation; refactor plugin helpers interface * chore(testing-library): add README; make small adjustments to a few tests * chore(testing-library): update readme; remove unnecessary type assertion Co-authored-by: Anna Henningsen --------- Co-authored-by: Anna Henningsen --- configs/testing-library-compass/README.md | 122 ++++ configs/testing-library-compass/package.json | 1 + configs/testing-library-compass/src/index.tsx | 633 +++++++++--------- configs/tsconfig-compass/tsconfig.common.json | 5 +- configs/tsconfig-compass/tsconfig.react.json | 5 +- package-lock.json | 8 +- .../src/stores/create-view.spec.ts | 22 +- .../test/configure-store.ts | 26 +- .../src/stores/instance-store.spec.ts | 20 +- .../src/hooks/use-export-connections.spec.tsx | 36 +- .../src/stores/connections-store.spec.tsx | 18 +- .../compass-field-store/src/index.spec.ts | 39 +- .../src/stores/store.spec.ts | 7 +- .../src/modules/export.spec.ts | 18 +- .../src/modules/import.spec.ts | 18 +- .../src/stores/export-store.spec.tsx | 6 +- .../src/stores/import-store.spec.tsx | 6 +- .../multiple-connections/sidebar.spec.tsx | 87 +-- .../src/stores/workspaces.spec.ts | 16 +- .../hadron-app-registry/src/react-context.tsx | 2 +- 20 files changed, 642 insertions(+), 453 deletions(-) create mode 100644 configs/testing-library-compass/README.md diff --git a/configs/testing-library-compass/README.md b/configs/testing-library-compass/README.md new file mode 100644 index 00000000000..989c031ef09 --- /dev/null +++ b/configs/testing-library-compass/README.md @@ -0,0 +1,122 @@ +# @mongodb-js/testing-library-compass + +This package provides re-exports for @testing-library/react and @testing-library/react-hooks methods that should ease writing unit and functional tests for UI in the Compass application. As [suggested by testing-library documentation](https://testing-library.com/docs/react-testing-library/setup/#custom-render), all the re-exported render methods provide default wrappers that do a bunch of required context setup for tests that should ease common re-configuration that almost every test would need to do manually. + +## render / renderWithConnections + +Default `render` / `renderHook` methods will provide a wrapper that sets up the following contexts around the rendered UI or a hook: + +- leafygreen and compass components UI wrappers (skipped for hooks due to testing-library limitations) + - this allows for showConfirmation and openToast methods to actually render in tests and be asserted +- globalAppRegistry +- localAppRegistry +- preferences +- logger +- telemetry +- connections and connection storage + +When using the render methods, on top of all of the existing render options that testing-library provides, you can also provide some initial configuration for the contexts and use them in your tests afterwards: + +```jsx +import { render, screen, userEvent } from '@mongodb-js/testing-library-compass'; + +it('should render component', async function () { + const findStub = sinon.stub.resolves({ _id: '123' }); + + const result = render(, { + preferences: { + // If component behavior depends on some preferences value, the initial value + // can be provided in the configuration object + enableNewFeature: true, + }, + // Initial connections that application will be aware of can also be + // provided in the configuration + connections: [conn1, conn2, conn3], + // In cases where you want to mock a certain behavior of DataService for a + // connected connection or spy on some methods, you can use `connectFn` to + // provide your own implementation for some DataService methods. By default + // testing-library-compass will provide a bare minimum amount of mocks for + // data service implementation so that you can `connect` your mocked render + // without providing any custom `connectFn` + connectFn() { + return { + find: findStub, + }; + }, + }); + + expect(screen.getBy(/* ... */)); + + // You can access various contexts after initial render if you need to test + // how your component behaves when these contexts are changing + + // For example, you can "connect" to one of the connections that application + // runtime is aware of if some of the component state depends on this + await result.connectionsStore.actions.connect(conn1); + + // You can also change preferences and check changes in the UI based on that + await result.preferences.savePreferences({ networkTraffic: false }); + + // If the component state reacts to some appRegistry events (through stores + // subscribing to those changes for example), you can emit those events + result.globalAppRegistry.emit('open-modal'); + result.localAppRegistry.emit('refresh-state'); + + // Logging and tracking functions are provided as sinon stubs, so you can + // assert any of the calls to those too if needed + userEvent.click(screen.getByRole('button', { name: 'Button with tracking' })); + + expect(result.track).to.have.been.calledWith('Button Clicked'); +}); +``` + +## renderWithActiveConnection + +The `renderWithActiveConnection` (and its hook rendering counterpart) are extending the functionality of the render methods described above, additionally setting up a connected connection context around whatever is being rendered by them. This allows for more straightforward testing of any component in the connected application context: + +```jsx +it('should render for connection', async function () { + // As the connection process is async, you need to await the render method + const result = await renderWithActiveConnection( + , + // An optional connection info can be provided when connecting if certain + // component behavior depends on a special connection type being provided in + // context. Otherwise a default test connection info will be used + conn1 + ); + + expect(screen.getBy(/* ... */)); + + // All the properties mentioned above will be also available on the render + // result +}); +``` + +## createPluginTestHelpers + +The `createPluginTestHelpers` method creates a version of test helpers mentioned above bound to the plugin context, meaning that everything that you render with the methods returned from the create helper will be rendered in a properly configured plugin context with the store provider set up: + +```jsx +const helpers = createPluginTestHelpers( + // As this method expects any plugin, you can also pass a result of + // `Plugin.withMockServices` here allowing you to mock any extra services that + // plugin expects to be dependency injected + Plugin, + { + // If plugin expects some default initial properties to be passed to the activate method, you can provide them here when creating bound helpers + namespace: 'a.b', + } +); + +it('should render', function () { + // You can now render components that are connected to the plugin store inside + // your test + const result = helpers.renderWithConnections( + + ); + + // As the plugin is "activated", any subscriptions set up in the activate + // method will be correctly listening to events now + result.globalAppRegistry.emit('trigger-something-in-plugin'); +}); +``` diff --git a/configs/testing-library-compass/package.json b/configs/testing-library-compass/package.json index 35a2dbe3a36..a8c17b3022f 100644 --- a/configs/testing-library-compass/package.json +++ b/configs/testing-library-compass/package.json @@ -62,6 +62,7 @@ }, "dependencies": { "@testing-library/react": "^12.1.5", + "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", "mongodb-connection-string-url": "^3.0.1", "react": "^17.0.2", diff --git a/configs/testing-library-compass/src/index.tsx b/configs/testing-library-compass/src/index.tsx index 030ff13a46a..5f30ebca6f1 100644 --- a/configs/testing-library-compass/src/index.tsx +++ b/configs/testing-library-compass/src/index.tsx @@ -9,10 +9,18 @@ import { ConnectionStorageProvider, InMemoryConnectionStorage, } from '@mongodb-js/connection-storage/provider'; -import type { RenderResult } from '@testing-library/react'; +import type { + RenderHookOptions, + RenderHookResult, +} from '@testing-library/react-hooks'; +import { + renderHook, + cleanup as rtlCleanupHook, +} from '@testing-library/react-hooks'; +import type { RenderOptions, RenderResult } from '@testing-library/react'; import { render, - cleanup, + cleanup as rtlCleanup, screen, waitFor, waitForElementToBeRemoved, @@ -67,7 +75,7 @@ function wait(ms: number) { }); } -type ConnectionsOptions = { +type TestConnectionsOptions = { /** * Initial preferences */ @@ -215,7 +223,24 @@ class InMemoryPreferencesAccess } } -function createWrapper(options: ConnectionsOptions, container?: HTMLElement) { +type ComponentWithChildren = React.ComponentType<{ + children: React.ReactElement; +}>; + +const EmptyWrapper = ({ children }: { children: React.ReactElement }) => { + return <>{children}; +}; + +function createWrapper( + options: TestConnectionsOptions, + // When using renderHook, anything that will try to call createPortal will + // fail due to the testing-library using ReactTestRenderer for hooks. To work + // around that, only when creating wrappers for renderHook, we'll skip any + // wrapper that's UI related + skipUIWrappers: boolean, + TestingLibraryWrapper: ComponentWithChildren = EmptyWrapper, + container?: HTMLElement +) { const wrapperState = { globalAppRegistry: new AppRegistry(), localAppRegistry: new AppRegistry(), @@ -274,14 +299,17 @@ function createWrapper(options: ConnectionsOptions, container?: HTMLElement) { const telemetryOptions = { sendTrack: wrapperState.track, }; - const wrapper: React.FunctionComponent = ({ children }) => { + const _CompassComponentsProvider = skipUIWrappers + ? EmptyWrapper + : CompassComponentsProvider; + const wrapper: ComponentWithChildren = ({ children, ...props }) => { return ( - + <_CompassComponentsProvider popoverPortalContainer={container}> @@ -302,14 +330,18 @@ function createWrapper(options: ConnectionsOptions, container?: HTMLElement) { } preloadStorageConnectionInfos={options.connections} > - {children} + + + {children} + + - + ); @@ -317,44 +349,36 @@ function createWrapper(options: ConnectionsOptions, container?: HTMLElement) { return { wrapperState, wrapper }; } -export type RenderConnectionsOptions< - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C -> = { - container?: C; - baseElement?: BE; - wrapper?: React.JSXElementConstructor<{ children?: React.ReactElement }>; -} & ConnectionsOptions; +export type RenderConnectionsOptions = RenderOptions & TestConnectionsOptions; -function renderWithConnections< - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( +export type RenderWithConnectionsResult = ReturnType< + typeof createWrapper +>['wrapperState'] & + RenderResult; + +function renderWithConnections( ui: React.ReactElement, { - wrapper: RenderWrapper, + wrapper, container, baseElement, + queries, + hydrate, ...connectionsOptions - }: RenderConnectionsOptions = {} -) { + }: RenderConnectionsOptions = {} +): RenderWithConnectionsResult { const { wrapper: Wrapper, wrapperState } = createWrapper( connectionsOptions, - container as HTMLElement + false, + wrapper, + container ); - const wrappedWrapper = RenderWrapper - ? function WrappedWrapper({ children }: { children?: React.ReactElement }) { - return ( - - {children} - - ); - } - : Wrapper; const result = render(ui, { - wrapper: wrappedWrapper, + wrapper: Wrapper, container, baseElement, + queries, + hydrate, }); expect( (connectionsOptions.connections ?? []).every((info) => { @@ -366,156 +390,46 @@ function renderWithConnections< true, 'Expected initial connections to load before rendering rest of the tested UI, but it did not happen' ); - return { ...wrapperState, result }; + return { ...wrapperState, ...result }; } -function renderHookWithConnections< - HookProps, - HookResult, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - cb: (props: HookProps) => HookResult, - { - initialProps, - ...options - }: RenderConnectionsOptions & { - initialProps?: HookProps; - } = {} -) { - const result = { current: null } as { current: HookResult }; - function HookResultGetter(props: HookProps) { - result.current = cb(props); - return null; - } - const { result: renderResult, ...rest } = renderWithConnections( - , - options - ); - return { - ...rest, - rerender: (props?: HookProps) => { - return renderResult.rerender( - - ); - }, - result, - }; -} +export type RenderHookConnectionsOptions = Omit< + RenderHookOptions, + 'wrapper' +> & { wrapper?: ComponentWithChildren } & TestConnectionsOptions; -function renderPluginComponentWithConnections< - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - ui: React.ReactElement, - Plugin: HadronPluginComponent, - initialProps: T, - options: RenderConnectionsOptions = {} -) { - let plugin; - function ComponentWithProvider() { - plugin = Plugin.useActivate(initialProps); - return ( - - {ui} - - ); - } - const result = renderWithConnections( - , - options - ); - return { - plugin: plugin as unknown as A, - ...result, - }; -} +export type RenderWithConnectionsHookResult< + HookProps = unknown, + HookResult = unknown +> = ReturnType['wrapperState'] & + RenderHookResult; -function renderPluginHookWithConnections< - HookResult, - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - cb: () => HookResult, - Plugin: HadronPluginComponent, - initialProps: T, - options: RenderConnectionsOptions = {} -) { - const result = { current: null } as { current: HookResult }; - function HookResultGetter() { - result.current = cb(); - return null; - } - const { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result: _renderResult, - ...rest - } = renderPluginComponentWithConnections( - , - Plugin, +function renderHookWithConnections( + cb: (props: HookProps) => HookResult, + { initialProps, - options + wrapper, + ...connectionsOptions + }: RenderHookConnectionsOptions = {} +): RenderWithConnectionsHookResult { + const { wrapper: Wrapper, wrapperState } = createWrapper( + connectionsOptions, + true, + wrapper ); - return { ...rest, result }; -} - -/** - * @deprecated instead of testing the store directly, test it through the UI as - * the redux documentation recommends - * @see {@link https://redux.js.org/usage/writing-tests#guiding-principles} - */ -function activatePluginWithConnections< - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - Plugin: HadronPluginComponent, - initialProps: T, - options: RenderConnectionsOptions = {} -) { - const { result, ...rest } = renderHookWithConnections(() => { - return Plugin.useActivate(initialProps); - }, options); - return { plugin: result.current, ...rest }; + const result = renderHook(cb, { wrapper: Wrapper as any, initialProps }); + return { ...wrapperState, ...result }; } -async function renderWithActiveConnection< - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - ui: React.ReactElement, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, - options: RenderConnectionsOptions = {} +async function waitForConnect( + connectionsStore: RenderWithConnectionsResult['connectionsStore'], + connectionInfo: ConnectionInfo ) { - function UiWithConnectionInfo() { - return ( - - {ui} - - ); - } - const renderResult = renderWithConnections( - , - { - ...options, - connections: [connectionInfo, ...(options.connections ?? [])], - } - ); - await renderResult.connectionsStore.actions.connect(connectionInfo); - // For ConnectionInfoProvider to render your input, we need to be connected + await connectionsStore.actions.connect(connectionInfo); + // For ConnectionInfoProvider to render your ui, we need to be connected // successfully const connectionState = - renderResult.connectionsStore.getState().connections.byId[ - connectionInfo.id - ]; + connectionsStore.getState().connections.byId[connectionInfo.id]; if (connectionState.status !== 'connected') { if (connectionState.error) { connectionState.error.message = @@ -528,148 +442,254 @@ async function renderWithActiveConnection< ); } } +} + +function createConnectionInfoWrapper( + connectionId: string, + ReactTestingLibraryWrapper: React.ComponentType +) { + return function ConnectionInfoWrapper({ children, ...props }: any) { + return ( + + + {children} + + + ); + }; +} + +async function renderWithActiveConnection( + ui: React.ReactElement, + connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, + { + connections, + wrapper: Wrapper = EmptyWrapper, + ...options + }: RenderConnectionsOptions = {} +) { + const ConnectionInfoWrapper = createConnectionInfoWrapper( + connectionInfo.id, + Wrapper as React.ComponentType + ); + const renderResult = renderWithConnections(ui, { + ...options, + wrapper: ConnectionInfoWrapper, + connections: [connectionInfo, ...(connections ?? [])], + }); + await waitForConnect(renderResult.connectionsStore, connectionInfo); return renderResult; } -async function renderHookWithActiveConnection< - HookProps, - HookResult, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( +async function renderHookWithActiveConnection( cb: (props: HookProps) => HookResult, connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, { - initialProps, + connections, + wrapper: Wrapper = EmptyWrapper, ...options - }: RenderConnectionsOptions & { - initialProps?: HookProps; - } = {} + }: RenderHookConnectionsOptions = {} ) { - const result = { current: null } as { current: HookResult }; - function HookResultGetter(props: HookProps) { - result.current = cb(props); - return null; - } - const { result: renderResult, ...rest } = await renderWithActiveConnection( - , - connectionInfo, - options + const ConnectionInfoWrapper = createConnectionInfoWrapper( + connectionInfo.id, + Wrapper as React.ComponentType ); - return { - ...rest, - rerender: (props?: HookResult) => { - return renderResult.rerender( - - ); - }, - result, - }; + const renderHookResult = renderHookWithConnections(cb, { + ...options, + wrapper: ConnectionInfoWrapper, + connections: [connectionInfo, ...(connections ?? [])], + }); + await waitForConnect(renderHookResult.connectionsStore, connectionInfo); + return renderHookResult; } -async function renderPluginComponentWithActiveConnection< - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C +function createPluginWrapper< + Props, + ServiceLocators extends Record unknown>, + PluginContext extends HadronPlugin >( - ui: React.ReactElement, - Plugin: HadronPluginComponent, - initialProps: T, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, - options: RenderConnectionsOptions = {} + Plugin: HadronPluginComponent, + initialPluginProps?: Props, + ReactTestingLibraryWrapper: ComponentWithChildren = EmptyWrapper ) { - let plugin; - function ComponentWithProvider() { - plugin = Plugin.useActivate(initialProps); + const ref: { current: PluginContext } = { current: {} as any }; + function ComponentWithProvider({ children, ...props }: any) { + const plugin = (ref.current = Plugin.useActivate( + initialPluginProps ?? ({} as any) + )); return ( - {ui} + + {children} + ); } - const result = await renderWithActiveConnection( - , - connectionInfo, - options - ); - return { - plugin: plugin as unknown as A, - ...result, - }; + return { ref, Wrapper: ComponentWithProvider }; } -export type RenderWithConnectionsResult = ReturnType< - typeof createWrapper ->['wrapperState'] & { result: RenderResult }; - -export type RenderWithConnectionsHookResult< - HookProps = unknown, - HookResult = unknown -> = ReturnType['wrapperState'] & { - result: HookResult; - rerender: (props: HookProps) => void; -}; - -async function renderPluginHookWithActiveConnection< - HookResult, - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C +function createPluginTestHelpers< + Props, + ServiceLocators extends Record unknown>, + PluginContext extends HadronPlugin >( - cb: () => HookResult, - Plugin: HadronPluginComponent, - initialProps: T extends Record ? T | undefined : T, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, - options: RenderConnectionsOptions = {} + Plugin: HadronPluginComponent, + defaultInitialPluginProps?: Props ) { - const result = { current: null } as { current: HookResult }; - function HookResultGetter() { - result.current = cb(); - return null; - } - const { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - result: _renderResult, - ...rest - } = await renderPluginComponentWithActiveConnection( - , - Plugin, - initialProps as T, - connectionInfo, - options - ); - return { ...rest, result }; -} - -/** - * @deprecated instead of testing the store directly, test it through the UI as - * the redux documentation recommends - * @see {@link https://redux.js.org/usage/writing-tests#guiding-principles} - */ -async function activatePluginWithActiveConnection< - T, - S extends Record unknown>, - A extends HadronPlugin, - C extends Element | DocumentFragment = HTMLElement, - BE extends Element | DocumentFragment = C ->( - Plugin: HadronPluginComponent, - initialProps: T, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, - options: RenderConnectionsOptions = {} -) { - const { result, ...rest } = await renderHookWithActiveConnection( - () => { - return Plugin.useActivate(initialProps); + return { + renderWithConnections( + this: void, + ...[ + ui, + { wrapper: ReactTestingLibraryWrapper = EmptyWrapper, ...options } = {}, + ]: Parameters + ): RenderWithConnectionsResult & { plugin: PluginContext } { + const { ref, Wrapper } = createPluginWrapper( + Plugin, + defaultInitialPluginProps, + ReactTestingLibraryWrapper + ); + const result = renderWithConnections(ui, { + ...options, + wrapper: Wrapper, + }); + return { + get plugin() { + return ref.current; + }, + ...result, + }; }, - connectionInfo, - options - ); - return { plugin: result.current, ...rest }; + async renderWithActiveConnection( + this: void, + ...[ + ui, + connectionInfo, + { wrapper: ReactTestingLibraryWrapper = EmptyWrapper, ...options } = {}, + ]: Parameters + ): Promise { + const { ref, Wrapper } = createPluginWrapper( + Plugin, + defaultInitialPluginProps, + ReactTestingLibraryWrapper + ); + const result = await renderWithActiveConnection(ui, connectionInfo, { + ...options, + wrapper: Wrapper, + }); + return { + get plugin() { + return ref.current; + }, + ...result, + }; + }, + renderHookWithConnections( + this: void, + cb: (props: HookProps) => HookResult, + { + wrapper: ReactTestingLibraryWrapper, + ...options + }: RenderHookConnectionsOptions = {} + ) { + const { ref, Wrapper } = createPluginWrapper( + Plugin, + defaultInitialPluginProps, + ReactTestingLibraryWrapper + ); + const result = renderHookWithConnections(cb, { + ...options, + wrapper: Wrapper, + }); + return { + get plugin() { + return ref.current; + }, + ...result, + }; + }, + async renderHookWithActiveConnection( + this: void, + cb: (props: HookProps) => HookResult, + connectionInfo?: ConnectionInfo, + { + wrapper: ReactTestingLibraryWrapper, + ...options + }: RenderHookConnectionsOptions = {} + ) { + const { ref, Wrapper } = createPluginWrapper( + Plugin, + defaultInitialPluginProps, + ReactTestingLibraryWrapper + ); + const result = await renderHookWithActiveConnection(cb, connectionInfo, { + ...options, + wrapper: Wrapper, + }); + return { + get plugin() { + return ref.current; + }, + ...result, + }; + }, + /** + * @deprecated instead of testing the store directly, test it through the UI as + * the redux documentation recommends + * @see {@link https://redux.js.org/usage/writing-tests#guiding-principles} + */ + activatePluginWithConnections( + this: void, + initialProps?: Props, + options: TestConnectionsOptions = {} + ) { + const { result, ...rest } = renderHookWithConnections( + Plugin.useActivate.bind(Plugin), + { + ...options, + initialProps: { + ...defaultInitialPluginProps, + ...initialProps, + } as any, + } + ); + return { + get plugin() { + return result.current; + }, + ...rest, + }; + }, + /** + * @deprecated instead of testing the store directly, test it through the UI as + * the redux documentation recommends + * @see {@link https://redux.js.org/usage/writing-tests#guiding-principles} + */ + async activatePluginWithActiveConnection( + this: void, + connectionInfo: ConnectionInfo, + initialProps?: Props, + options: TestConnectionsOptions = {} + ) { + const { result, ...rest } = await renderHookWithActiveConnection( + Plugin.useActivate.bind(Plugin), + connectionInfo, + { + ...options, + initialProps: { + ...defaultInitialPluginProps, + ...initialProps, + } as any, + } + ); + return { + get plugin() { + return result.current; + }, + ...rest, + }; + }, + }; } /** @@ -677,6 +697,26 @@ async function activatePluginWithActiveConnection< */ const fireEvent = testingLibraryFireEvent; +/** + * @deprecated @testing-library/react installs these hooks automatically + */ +const cleanup = rtlCleanup; + +/** + * @deprecated @testing-library/react-hooks installs these hooks automatically + */ +const cleanupHook = rtlCleanupHook; + +/** + * In some cases we still want to just render something without all the + * wrappers, for these cases we provide access to the original methods, but this + * is not the default behavior + */ +const testingLibrary = { + render, + renderHook, +}; + export { // There is never a good reason not to have these wrapper providers when // rendering something in compass for testing. Using these render methods @@ -685,6 +725,7 @@ export { renderWithConnections as render, renderHookWithConnections as renderHook, cleanup, + cleanupHook, screen, wait, waitFor, @@ -693,15 +734,11 @@ export { renderWithActiveConnection, renderHookWithConnections, renderHookWithActiveConnection, - renderPluginComponentWithConnections, - renderPluginComponentWithActiveConnection, - renderPluginHookWithConnections, - renderPluginHookWithActiveConnection, - activatePluginWithConnections, - activatePluginWithActiveConnection, + createPluginTestHelpers, act, createDefaultConnectionInfo, userEvent, within, fireEvent, + testingLibrary, }; diff --git a/configs/tsconfig-compass/tsconfig.common.json b/configs/tsconfig-compass/tsconfig.common.json index 4e6d1b8bcb1..0f5864bee1f 100644 --- a/configs/tsconfig-compass/tsconfig.common.json +++ b/configs/tsconfig-compass/tsconfig.common.json @@ -1,3 +1,6 @@ { - "extends": "@mongodb-js/tsconfig-devtools/tsconfig.common.json" + "extends": "@mongodb-js/tsconfig-devtools/tsconfig.common.json", + "compilerOptions": { + "removeComments": false + } } diff --git a/configs/tsconfig-compass/tsconfig.react.json b/configs/tsconfig-compass/tsconfig.react.json index 6bc53a5995d..039c9b462d1 100644 --- a/configs/tsconfig-compass/tsconfig.react.json +++ b/configs/tsconfig-compass/tsconfig.react.json @@ -1,3 +1,6 @@ { - "extends": "@mongodb-js/tsconfig-devtools/tsconfig.react.json" + "extends": "@mongodb-js/tsconfig-devtools/tsconfig.react.json", + "compilerOptions": { + "removeComments": false + } } diff --git a/package-lock.json b/package-lock.json index d0bd5a90b63..6336572534a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -434,6 +434,7 @@ "license": "SSPL", "dependencies": { "@testing-library/react": "^12.1.5", + "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", "mongodb-connection-string-url": "^3.0.1", "react": "^17.0.2", @@ -13846,7 +13847,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", "@types/react": ">=16.9.0", @@ -14435,7 +14435,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, "dependencies": { "@types/react": "*" } @@ -38182,7 +38181,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", - "dev": true, "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -61046,6 +61044,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/tsconfig-compass": "^1.0.4", "@testing-library/react": "^12.1.5", + "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", @@ -65188,7 +65187,6 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-7.0.2.tgz", "integrity": "sha512-dYxpz8u9m4q1TuzfcUApqi8iFfR6R0FaMbr2hjZJy1uC8z+bO/K4v8Gs9eogGKYQop7QsrBTFkv/BCF7MzD2Cg==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5", "@types/react": ">=16.9.0", @@ -65741,7 +65739,6 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.1.tgz", "integrity": "sha512-3Fi2O6Zzq/f3QR9dRnlnHso9bMl7weKCviFmfF6B4LS1Uat6Hkm15k0ZAQuDz+UBq6B3+g+NM6IT2nr5QgPzCw==", - "dev": true, "requires": { "@types/react": "*" } @@ -85903,7 +85900,6 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", - "dev": true, "requires": { "@babel/runtime": "^7.12.5" } diff --git a/packages/compass-aggregations/src/stores/create-view.spec.ts b/packages/compass-aggregations/src/stores/create-view.spec.ts index 729d32b7d40..9b39f7a7d8d 100644 --- a/packages/compass-aggregations/src/stores/create-view.spec.ts +++ b/packages/compass-aggregations/src/stores/create-view.spec.ts @@ -3,7 +3,7 @@ import { expect } from 'chai'; import { changeViewName, createView } from '../modules/create-view'; import Sinon from 'sinon'; import { - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; import { CreateViewPlugin } from '../index'; @@ -37,17 +37,17 @@ describe('CreateViewStore [Store]', function () { }; beforeEach(async function () { + const { activatePluginWithConnections } = createPluginTestHelpers( + CreateViewPlugin.withMockServices({ workspaces }) + ); + const { plugin, globalAppRegistry, connectionsStore } = - activatePluginWithConnections( - CreateViewPlugin.withMockServices({ workspaces }) as any, - {}, - { - connections: [TEST_CONNECTION], - connectFn() { - return dataService; - }, - } - ); + activatePluginWithConnections(undefined, { + connections: [TEST_CONNECTION], + connectFn() { + return dataService; + }, + }); await connectionsStore.actions.connect(TEST_CONNECTION); diff --git a/packages/compass-aggregations/test/configure-store.ts b/packages/compass-aggregations/test/configure-store.ts index a610979a6b5..369c889abb9 100644 --- a/packages/compass-aggregations/test/configure-store.ts +++ b/packages/compass-aggregations/test/configure-store.ts @@ -4,10 +4,7 @@ import type { } from '../src/stores/store'; import { mockDataService } from './mocks/data-service'; import { AtlasAuthService } from '@mongodb-js/atlas-service/provider'; -import { - activatePluginWithActiveConnection, - renderPluginComponentWithActiveConnection, -} from '@mongodb-js/testing-library-compass'; +import { createPluginTestHelpers } from '@mongodb-js/testing-library-compass'; import { CompassAggregationsHadronPlugin } from '../src/index'; import type { DataService } from '@mongodb-js/compass-connections/provider'; import React from 'react'; @@ -84,7 +81,7 @@ function getMockedPluginArgs( ? services.preferences.getPreferences() : undefined, }, - ] as unknown as Parameters; + ] as const; } /** @@ -93,7 +90,15 @@ function getMockedPluginArgs( export default function configureStore( ...args: Parameters ) { - return activatePluginWithActiveConnection(...getMockedPluginArgs(...args)); + const [Plugin, initialProps, connectionInfo, renderOptions] = + getMockedPluginArgs(...args); + const { activatePluginWithActiveConnection } = + createPluginTestHelpers(Plugin); + return activatePluginWithActiveConnection( + connectionInfo, + initialProps, + renderOptions + ); } export function renderWithStore( @@ -107,8 +112,11 @@ export function renderWithStore( }) : ui; - return renderPluginComponentWithActiveConnection( - ui, - ...getMockedPluginArgs(...args) + const [Plugin, initialProps, connectionInfo, renderOptions] = + getMockedPluginArgs(...args); + const { renderWithActiveConnection } = createPluginTestHelpers( + Plugin, + initialProps ); + return renderWithActiveConnection(ui, connectionInfo, renderOptions); } diff --git a/packages/compass-app-stores/src/stores/instance-store.spec.ts b/packages/compass-app-stores/src/stores/instance-store.spec.ts index 051239f3d17..a0446572229 100644 --- a/packages/compass-app-stores/src/stores/instance-store.spec.ts +++ b/packages/compass-app-stores/src/stores/instance-store.spec.ts @@ -6,7 +6,7 @@ import type { MongoDBInstance } from 'mongodb-instance-model'; import { type MongoDBInstancesManager } from '../instances-manager'; import { createDefaultConnectionInfo, - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; @@ -53,16 +53,16 @@ describe('InstanceStore [Store]', function () { }); } + const { activatePluginWithConnections } = createPluginTestHelpers( + CompassInstanceStorePlugin + ); + beforeEach(function () { - const result = activatePluginWithConnections( - CompassInstanceStorePlugin, - {}, - { - connectFn() { - return createDataService(); - }, - } - ); + const result = activatePluginWithConnections(undefined, { + connectFn() { + return createDataService(); + }, + }); connectionsStore = result.connectionsStore; getDataService = result.getDataServiceForConnection; globalAppRegistry = result.globalAppRegistry; diff --git a/packages/compass-connection-import-export/src/hooks/use-export-connections.spec.tsx b/packages/compass-connection-import-export/src/hooks/use-export-connections.spec.tsx index 7669af6f027..c8577162649 100644 --- a/packages/compass-connection-import-export/src/hooks/use-export-connections.spec.tsx +++ b/packages/compass-connection-import-export/src/hooks/use-export-connections.spec.tsx @@ -88,26 +88,26 @@ describe('useExportConnections', function () { const { result, connectionsStore, connectionStorage } = renderUseExportConnectionsHook({}, { connections: [connectionInfo1] }); - await act(async () => { - await connectionsStore.actions.saveEditedConnection({ - ...connectionInfo1, - favorite: { - name: 'name1', - }, - savedConnectionType: 'favorite', - }); + await connectionsStore.actions.saveEditedConnection({ + ...connectionInfo1, + favorite: { + name: 'name1', + }, + savedConnectionType: 'favorite', }); - expect(result.current.state.connectionList).to.deep.equal( - [ - { - id: connectionInfo1.id, - name: 'name1', - selected: true, - }, - ], - 'expected name of connection 1 to get updated after save' - ); + await waitFor(() => { + expect(result.current.state.connectionList).to.deep.equal( + [ + { + id: connectionInfo1.id, + name: 'name1', + selected: true, + }, + ], + 'expected name of connection 1 to get updated after save' + ); + }); act(() => { result.current.onChangeConnectionList([ diff --git a/packages/compass-connections/src/stores/connections-store.spec.tsx b/packages/compass-connections/src/stores/connections-store.spec.tsx index adf34f4acab..f0f23139ea0 100644 --- a/packages/compass-connections/src/stores/connections-store.spec.tsx +++ b/packages/compass-connections/src/stores/connections-store.spec.tsx @@ -3,12 +3,13 @@ import sinon from 'sinon'; import { useConnections } from './connections-store'; import { cleanup, - renderHookWithConnections, + renderWithConnections, waitFor, screen, createDefaultConnectionInfo, wait, } from '@mongodb-js/testing-library-compass'; +import React from 'react'; const mockConnections = [ { @@ -38,6 +39,21 @@ const defaultPreferences = { maximumNumberOfActiveConnections: undefined, }; +// A bit of a special case, testing-library doesn't allow to test hooks that +// have UI side-effects, but we're doing it in these connection hooks +function renderHookWithConnections( + cb: () => T, + options: Parameters[1] +) { + const hookResult = { current: null } as { current: T }; + const HookGetter = () => { + hookResult.current = cb(); + return null; + }; + const result = renderWithConnections(, options); + return { ...result, result: hookResult }; +} + describe('useConnections', function () { afterEach(() => { cleanup(); diff --git a/packages/compass-field-store/src/index.spec.ts b/packages/compass-field-store/src/index.spec.ts index 0eb8ebaa813..941a03398da 100644 --- a/packages/compass-field-store/src/index.spec.ts +++ b/packages/compass-field-store/src/index.spec.ts @@ -3,7 +3,7 @@ import { useAutocompleteFields } from './'; import { expect } from 'chai'; import { useFieldStoreService } from './stores/field-store-service'; import { - renderPluginHookWithActiveConnection, + createPluginTestHelpers, cleanup, waitFor, } from '@mongodb-js/testing-library-compass'; @@ -11,33 +11,30 @@ import { describe('useAutocompleteFields', function () { afterEach(cleanup); + const { renderHookWithActiveConnection } = + createPluginTestHelpers(FieldStorePlugin); + it('returns empty list when namespace schema is not available', async function () { - const { result } = await renderPluginHookWithActiveConnection( - () => useAutocompleteFields('foo.bar'), - FieldStorePlugin, - {} + const { result } = await renderHookWithActiveConnection(() => + useAutocompleteFields('foo.bar') ); expect(result.current).to.deep.eq([]); }); it('updates when fields are added', async function () { - const { result } = await renderPluginHookWithActiveConnection( - () => { - const autoCompleteFields = useAutocompleteFields('foo.bar'); - const fieldStoreService = useFieldStoreService(); - return { - getAutoCompleteFields() { - return autoCompleteFields; - }, - getFieldStoreService() { - return fieldStoreService; - }, - }; - }, - FieldStorePlugin, - {} - ); + const { result } = await renderHookWithActiveConnection(() => { + const autoCompleteFields = useAutocompleteFields('foo.bar'); + const fieldStoreService = useFieldStoreService(); + return { + getAutoCompleteFields() { + return autoCompleteFields; + }, + getFieldStoreService() { + return fieldStoreService; + }, + }; + }); await result.current .getFieldStoreService() diff --git a/packages/compass-field-store/src/stores/store.spec.ts b/packages/compass-field-store/src/stores/store.spec.ts index c5b0159234d..cc9746b7d79 100644 --- a/packages/compass-field-store/src/stores/store.spec.ts +++ b/packages/compass-field-store/src/stores/store.spec.ts @@ -4,7 +4,7 @@ import { expect } from 'chai'; import { schemaFieldsToAutocompleteItems } from '../modules/fields'; import type { Schema } from 'mongodb-schema'; import { - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; import FieldStorePlugin from '..'; @@ -29,8 +29,11 @@ describe('FieldStore', function () { return store.dispatch(schemaUpdated(connectionId, ns, schema)); }; + const { activatePluginWithConnections } = + createPluginTestHelpers(FieldStorePlugin); + beforeEach(function () { - const result = activatePluginWithConnections(FieldStorePlugin, {}); + const result = activatePluginWithConnections(FieldStorePlugin); store = result.plugin.store; connectionsStore = result.connectionsStore; }); diff --git a/packages/compass-import-export/src/modules/export.spec.ts b/packages/compass-import-export/src/modules/export.spec.ts index e2e48f3824b..5061b5c4383 100644 --- a/packages/compass-import-export/src/modules/export.spec.ts +++ b/packages/compass-import-export/src/modules/export.spec.ts @@ -18,28 +18,26 @@ import { } from './export'; import { mochaTestServer } from '@mongodb-js/compass-test-server'; import { - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; import { ExportPlugin } from '../index'; import type { ExportStore } from '../stores/export-store'; import type { ConnectionInfo } from '@mongodb-js/compass-connections/provider'; +const { activatePluginWithConnections } = createPluginTestHelpers(ExportPlugin); + function activatePlugin( dataService = { findCursor() {}, aggregateCursor() {}, } as any ) { - return activatePluginWithConnections( - ExportPlugin, - {}, - { - connectFn() { - return dataService; - }, - } - ); + return activatePluginWithConnections(undefined, { + connectFn() { + return dataService; + }, + }); } describe('export [module]', function () { diff --git a/packages/compass-import-export/src/modules/import.spec.ts b/packages/compass-import-export/src/modules/import.spec.ts index 1bd9b39cf89..aca2d9d7a6f 100644 --- a/packages/compass-import-export/src/modules/import.spec.ts +++ b/packages/compass-import-export/src/modules/import.spec.ts @@ -3,7 +3,9 @@ import path from 'path'; import { onStarted, openImport, selectImportFileName } from './import'; import type { ImportStore } from '../stores/import-store'; import { ImportPlugin } from '../index'; -import { activatePluginWithConnections } from '@mongodb-js/testing-library-compass'; +import { createPluginTestHelpers } from '@mongodb-js/testing-library-compass'; + +const { activatePluginWithConnections } = createPluginTestHelpers(ImportPlugin); function activatePlugin( dataService = { @@ -11,15 +13,11 @@ function activatePlugin( aggregateCursor() {}, } as any ) { - return activatePluginWithConnections( - ImportPlugin, - {}, - { - connectFn() { - return dataService; - }, - } - ); + return activatePluginWithConnections(undefined, { + connectFn() { + return dataService; + }, + }); } describe('import [module]', function () { diff --git a/packages/compass-import-export/src/stores/export-store.spec.tsx b/packages/compass-import-export/src/stores/export-store.spec.tsx index bf73d8a8d44..67a14fe459d 100644 --- a/packages/compass-import-export/src/stores/export-store.spec.tsx +++ b/packages/compass-import-export/src/stores/export-store.spec.tsx @@ -1,18 +1,20 @@ import type AppRegistry from 'hadron-app-registry'; import { expect } from 'chai'; import { - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; import { ExportPlugin } from '..'; import type { ExportStore } from './export-store'; +const { activatePluginWithConnections } = createPluginTestHelpers(ExportPlugin); + describe('ExportStore [Store]', function () { let store: ExportStore; let globalAppRegistry: AppRegistry; beforeEach(function () { - const result = activatePluginWithConnections(ExportPlugin, {}); + const result = activatePluginWithConnections(); store = result.plugin.store; globalAppRegistry = result.globalAppRegistry; }); diff --git a/packages/compass-import-export/src/stores/import-store.spec.tsx b/packages/compass-import-export/src/stores/import-store.spec.tsx index 7a8850d8cf4..4aff691c95e 100644 --- a/packages/compass-import-export/src/stores/import-store.spec.tsx +++ b/packages/compass-import-export/src/stores/import-store.spec.tsx @@ -1,18 +1,20 @@ import type AppRegistry from 'hadron-app-registry'; import { expect } from 'chai'; import { - activatePluginWithConnections, + createPluginTestHelpers, cleanup, } from '@mongodb-js/testing-library-compass'; import type { ImportStore } from './import-store'; import { ImportPlugin } from '..'; +const { activatePluginWithConnections } = createPluginTestHelpers(ImportPlugin); + describe('ImportStore [Store]', function () { let store: ImportStore; let globalAppRegistry: AppRegistry; beforeEach(function () { - const result = activatePluginWithConnections(ImportPlugin, {}); + const result = activatePluginWithConnections(); globalAppRegistry = result.globalAppRegistry; store = result.plugin.store; }); diff --git a/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx b/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx index a794e2c6846..109d9398dfc 100644 --- a/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx +++ b/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import sinon from 'sinon'; import type { RenderWithConnectionsHookResult } from '@mongodb-js/testing-library-compass'; import { - renderPluginComponentWithConnections, + createPluginTestHelpers, screen, cleanup, waitFor, @@ -15,7 +15,6 @@ import type { WorkspaceTab } from '@mongodb-js/compass-workspaces'; import { WorkspacesProvider } from '@mongodb-js/compass-workspaces'; import type { WorkspacesService } from '@mongodb-js/compass-workspaces/provider'; import { WorkspacesServiceProvider } from '@mongodb-js/compass-workspaces/provider'; -import type { MongoDBInstancesManager } from '@mongodb-js/compass-app-stores/provider'; import { TestMongoDBInstanceManager } from '@mongodb-js/compass-app-stores/provider'; import { ConnectionImportExportProvider } from '@mongodb-js/compass-connection-import-export'; import { CompassSidebarPlugin } from '../../index'; @@ -48,7 +47,47 @@ describe('Multiple Connections Sidebar Component', function () { RenderWithConnectionsHookResult['connectionsStore']['actions'] >; let workspace: sinon.SinonSpiedInstance; - let instancesManager: MongoDBInstancesManager; + + const instancesManager = new TestMongoDBInstanceManager({ + _id: '1', + status: 'ready', + genuineMongoDB: { + dbType: 'local', + isGenuine: true, + }, + build: { + isEnterprise: true, + version: '7.0.1', + }, + dataLake: { + isDataLake: false, + version: '', + }, + topologyDescription: { + servers: [], + setName: '', + type: 'LoadBalanced', + }, + databasesStatus: 'ready', + databases: [ + { + _id: 'db_ready', + name: 'db_ready', + collectionsStatus: 'ready', + collections: [ + { + _id: 'coll_ready', + name: 'coll_ready', + type: 'collection', + }, + ], + }, + ] as any, + }); + + const { renderWithConnections } = createPluginTestHelpers( + CompassSidebarPlugin.withMockServices({ instancesManager }) + ); function doRender( activeWorkspace: WorkspaceTab | null = null, @@ -59,43 +98,7 @@ describe('Multiple Connections Sidebar Component', function () { openShellWorkspace: () => undefined, openPerformanceWorkspace: () => undefined, }) as any; - instancesManager = new TestMongoDBInstanceManager({ - _id: '1', - status: 'ready', - genuineMongoDB: { - dbType: 'local', - isGenuine: true, - }, - build: { - isEnterprise: true, - version: '7.0.1', - }, - dataLake: { - isDataLake: false, - version: '', - }, - topologyDescription: { - servers: [], - setName: '', - type: 'LoadBalanced', - }, - databasesStatus: 'ready', - databases: [ - { - _id: 'db_ready', - name: 'db_ready', - collectionsStatus: 'ready', - collections: [ - { - _id: 'coll_ready', - name: 'coll_ready', - type: 'collection', - }, - ], - }, - ] as any, - }); - const result = renderPluginComponentWithConnections( + const result = renderWithConnections( , - CompassSidebarPlugin.withMockServices({ instancesManager }), - {}, { preferences: { enableMultipleConnectionSystem: true }, connections, @@ -229,7 +230,7 @@ describe('Multiple Connections Sidebar Component', function () { instancesManager.emit( 'instance-started', connectionInfo.id, - instancesManager.getMongoDBInstanceForConnection(connectionInfo.id) + instancesManager.getMongoDBInstanceForConnection() ); }; diff --git a/packages/compass-workspaces/src/stores/workspaces.spec.ts b/packages/compass-workspaces/src/stores/workspaces.spec.ts index 6a7dabb42d6..d32144dc62d 100644 --- a/packages/compass-workspaces/src/stores/workspaces.spec.ts +++ b/packages/compass-workspaces/src/stores/workspaces.spec.ts @@ -8,18 +8,20 @@ import { TestMongoDBInstanceManager } from '@mongodb-js/compass-app-stores/provi import type { ConnectionInfo } from '../../../connection-info/dist'; import type { WorkspaceTab } from '../../dist'; import { setTabDestroyHandler } from '../components/workspace-close-handler'; -import { activatePluginWithConnections } from '@mongodb-js/testing-library-compass'; +import { createPluginTestHelpers } from '@mongodb-js/testing-library-compass'; type WorkspacesStore = ReturnType['store']; describe('tabs behavior', function () { + const { activatePluginWithConnections } = createPluginTestHelpers( + WorkspacesPlugin.withMockServices({ + instancesManager: new TestMongoDBInstanceManager(), + }), + { onActiveWorkspaceTabChange: () => undefined } + ); + function configureStore() { - const result = activatePluginWithConnections( - WorkspacesPlugin.withMockServices({ - instancesManager: new TestMongoDBInstanceManager(), - }), - { onActiveWorkspaceTabChange: () => undefined } - ); + const result = activatePluginWithConnections(); return result.plugin.store as WorkspacesStore; } diff --git a/packages/hadron-app-registry/src/react-context.tsx b/packages/hadron-app-registry/src/react-context.tsx index d18cda6e14a..d4ad160dc55 100644 --- a/packages/hadron-app-registry/src/react-context.tsx +++ b/packages/hadron-app-registry/src/react-context.tsx @@ -18,7 +18,7 @@ type AppRegistryProviderProps = | { localAppRegistry?: never; deactivateOnUnmount?: never; - children: React.ReactNode; + children?: React.ReactNode; scopeName?: string; } | { From aa7066c4b1cfce7cf72cf115e4b4316bb8a59738 Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Mon, 9 Sep 2024 18:33:32 +0200 Subject: [PATCH 07/57] feat(connection-form): support for multiple kms options from same provider COMPASS-8082 (#6166) * ux changes * fix tests * fix after merge * tests * ts issues * remove todo * store connection data * use icon button * fix types * fix test * another ts * fix connection storage test * show delete button on hover * show configured providers when creating collection * multiple local keys in tests * multiple local keys in tests * allow rename of kms * tests * don't clear state when modal is closed * check * pr feedback * cleaner path names * e2e-test * remove tls * fix id * use regex to get next name * reformat doesn't take care of ts-comments * cr fix * revert unnecessary changes --- .../src/stores/connections-store-redux.ts | 7 +- .../helpers/commands/connect-form.ts | 32 ++- .../helpers/connect-form-state.ts | 8 +- .../compass-e2e-tests/helpers/selectors.ts | 10 +- .../tests/connection.test.ts | 8 +- .../tests/in-use-encryption.test.ts | 187 ++++++++++++- .../csfle-tab/csfle-tab.spec.tsx | 200 ++++++++++++++ .../csfle-tab/csfle-tab.tsx | 141 ++++++---- .../csfle-tab/kms-local-key-generator.tsx | 24 +- .../csfle-tab/kms-provider-card.tsx | 244 +++++++++++++++++ .../csfle-tab/kms-provider-content.tsx | 98 +++++++ .../csfle-tab/kms-provider-fields.tsx | 31 ++- .../kms-provider-status-indicator.tsx | 31 ++- .../csfle-tab/kms-tls-options.tsx | 16 +- .../src/components/connection-form.spec.tsx | 1 - .../src/hooks/use-connect-form.ts | 29 ++ .../src/utils/csfle-handler.spec.ts | 257 +++++++++++++++++- .../src/utils/csfle-handler.ts | 243 +++++++++++++++-- .../src/utils/csfle-kms-fields.ts | 91 ++++--- .../connection-form/src/utils/validation.ts | 2 + .../src/connection-secrets.spec.ts | 105 ++++++- .../connection-info/src/connection-secrets.ts | 86 ++++-- .../compass-main-connection-storage.spec.ts | 31 ++- .../collection-fields/fle2-fields.jsx | 25 +- .../src/modules/create-namespace.ts | 13 +- 25 files changed, 1718 insertions(+), 202 deletions(-) create mode 100644 packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-card.tsx create mode 100644 packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-content.tsx diff --git a/packages/compass-connections/src/stores/connections-store-redux.ts b/packages/compass-connections/src/stores/connections-store-redux.ts index b20108b4faa..9e8e6850371 100644 --- a/packages/compass-connections/src/stores/connections-store-redux.ts +++ b/packages/compass-connections/src/stores/connections-store-redux.ts @@ -1549,12 +1549,15 @@ export const connect = ( dispatch(disconnect(connectionInfo.id)); }); + const { connectionOptions, ...restOfTheConnectionInfo } = + connectionInfo; + const adjustedConnectionInfoForConnection: ConnectionInfo = merge( - cloneDeep(connectionInfo), + cloneDeep(restOfTheConnectionInfo), { connectionOptions: adjustConnectionOptionsBeforeConnect({ connectionOptions: merge( - cloneDeep(connectionInfo.connectionOptions), + cloneDeep(connectionOptions), SecretsForConnection.get(connectionInfo.id) ?? {} ), defaultAppName: appName, diff --git a/packages/compass-e2e-tests/helpers/commands/connect-form.ts b/packages/compass-e2e-tests/helpers/commands/connect-form.ts index c2d8f38491c..97575d39fce 100644 --- a/packages/compass-e2e-tests/helpers/commands/connect-form.ts +++ b/packages/compass-e2e-tests/helpers/commands/connect-form.ts @@ -455,6 +455,18 @@ function colorValueToName(color: string): string { return color; } +async function setKMSProviderName( + browser: CompassBrowser, + index: number, + name: string +) { + await browser.clickVisible(Selectors.connectionFormEditFLEName(index)); + return await browser.setValueVisible( + Selectors.connectionFormInputFLELocalName(index), + name + ); +} + export async function setConnectFormState( browser: CompassBrowser, state: ConnectFormState @@ -654,7 +666,7 @@ export async function setConnectFormState( // FLE2 if ( state.fleKeyVaultNamespace || - state.fleKey || + state.kmsProviders || state.fleEncryptedFieldsMap ) { await browser.navigateToConnectTab('In-Use Encryption'); @@ -665,12 +677,20 @@ export async function setConnectFormState( state.fleKeyVaultNamespace ); } - if (state.fleKey) { + if ((state.kmsProviders?.local?.length ?? 0) > 0) { await browser.expandAccordion(Selectors.ConnectionFormInputFLELocalKMS); - await browser.setValueVisible( - Selectors.ConnectionFormInputFLELocalKey, - state.fleKey - ); + for (const [index, item] of (state.kmsProviders?.local ?? []).entries()) { + if (item.name) { + await setKMSProviderName(browser, index, item.name); + } + await browser.setValueVisible( + Selectors.connectionFormInputFLELocalKey(index), + item.key + ); + await browser.clickVisible( + Selectors.ConnectionFormAddNewKMSProviderButton + ); + } } if (state.fleEncryptedFieldsMap) { // set the text in the editor diff --git a/packages/compass-e2e-tests/helpers/connect-form-state.ts b/packages/compass-e2e-tests/helpers/connect-form-state.ts index 9f1c087da39..d68cfddcdf2 100644 --- a/packages/compass-e2e-tests/helpers/connect-form-state.ts +++ b/packages/compass-e2e-tests/helpers/connect-form-state.ts @@ -63,8 +63,14 @@ export interface ConnectFormState { // FLE2 fleKeyVaultNamespace?: string; fleStoreCredentials?: boolean; - fleKey?: string; fleEncryptedFieldsMap?: string; + kmsProviders?: { + // For now adding support for local only + local?: { + name?: string; + key: string; + }[]; + }; // - SSH with Password sshPasswordHost?: string; diff --git a/packages/compass-e2e-tests/helpers/selectors.ts b/packages/compass-e2e-tests/helpers/selectors.ts index ae171e63922..3c1893019d9 100644 --- a/packages/compass-e2e-tests/helpers/selectors.ts +++ b/packages/compass-e2e-tests/helpers/selectors.ts @@ -120,8 +120,14 @@ export const ConnectionFormInputFLEStoreCredentialsCheckbox = '[data-testid="csfle-store-credentials-input"]'; export const ConnectionFormInputFLELocalKMS = '[data-testid="csfle-kms-provider-local"]'; -export const ConnectionFormInputFLELocalKey = - '[data-testid="csfle-kms-local-key"]'; +export const connectionFormEditFLEName = (index = 0) => + `[data-card-index="${index}"] [data-testid="csfle-edit-kms-name"]`; +export const connectionFormInputFLELocalName = (index = 0) => + `[data-card-index="${index}"] [data-testid="csfle-kms-card-name"]`; +export const connectionFormInputFLELocalKey = (index = 0) => + `[data-card-index="${index}"] [data-testid="csfle-kms-local-key"]`; +export const ConnectionFormAddNewKMSProviderButton = + '[data-testid="csfle-add-new-kms-provider-button"]'; export const ConnectionFormInputFLEEncryptedFieldsMap = '[data-testid="connection-csfle-encrypted-fields-map"]'; export const ConnectionFormInputFLEEncryptedFieldsMapEditor = diff --git a/packages/compass-e2e-tests/tests/connection.test.ts b/packages/compass-e2e-tests/tests/connection.test.ts index 9b772deaaae..b5477f5151e 100644 --- a/packages/compass-e2e-tests/tests/connection.test.ts +++ b/packages/compass-e2e-tests/tests/connection.test.ts @@ -1202,7 +1202,13 @@ describe('FLE2', function () { await browser.connectWithConnectionForm({ hosts: ['127.0.0.1:27091'], fleKeyVaultNamespace: 'alena.keyvault', - fleKey: 'A'.repeat(128), + kmsProviders: { + local: [ + { + key: 'A'.repeat(128), + }, + ], + }, fleEncryptedFieldsMap: `{ 'alena.coll': { fields: [ diff --git a/packages/compass-e2e-tests/tests/in-use-encryption.test.ts b/packages/compass-e2e-tests/tests/in-use-encryption.test.ts index 5d5a096b8b1..bf5a07bc33a 100644 --- a/packages/compass-e2e-tests/tests/in-use-encryption.test.ts +++ b/packages/compass-e2e-tests/tests/in-use-encryption.test.ts @@ -97,7 +97,13 @@ describe('CSFLE / QE', function () { const options: ConnectFormState = { hosts: [CONNECTION_HOSTS], fleKeyVaultNamespace: `${databaseName}.keyvault`, - fleKey: 'A'.repeat(128), + kmsProviders: { + local: [ + { + key: 'A'.repeat(128), + }, + ], + }, fleEncryptedFieldsMap: `{ '${databaseName}.${collectionName}': { fields: [ @@ -226,7 +232,14 @@ describe('CSFLE / QE', function () { await browser.connectWithConnectionForm({ hosts: [CONNECTION_HOSTS], fleKeyVaultNamespace: `${databaseName}.keyvault`, - fleKey: 'A'.repeat(128), + kmsProviders: { + local: [ + { + name: 'local', + key: 'A'.repeat(128), + }, + ], + }, connectionName, }); @@ -324,7 +337,14 @@ describe('CSFLE / QE', function () { await browser.connectWithConnectionForm({ hosts: [CONNECTION_HOSTS], fleKeyVaultNamespace: `${databaseName}.keyvault`, - fleKey: 'A'.repeat(128), + kmsProviders: { + local: [ + { + name: 'local', + key: 'A'.repeat(128), + }, + ], + }, fleEncryptedFieldsMap: `{ '${databaseName}.${collectionName}': { fields: [ @@ -372,7 +392,7 @@ describe('CSFLE / QE', function () { '"creationDate": ISODate("2022-05-27T18:28:33.925Z"),' + '"updateDate": ISODate("2022-05-27T18:28:33.925Z"),' + '"status": 0,' + - '"masterKey": { "provider" : "local" }' + + '"masterKey": { "provider" : "local:local" }' + '})', // make sure there is a collection so we can navigate to the database `db.getMongo().getDB('${databaseName}').createCollection('default')`, @@ -947,6 +967,157 @@ describe('CSFLE / QE', function () { }); }); }); + + describe('multiple kms providers of the same type', function () { + const databaseName = 'fle-test'; + const collection1 = 'collection-1'; + const collection2 = 'collection-2'; + const phoneNumber1 = '1234567890'; + const phoneNumber2 = '0987654321'; + let compass: Compass; + let browser: CompassBrowser; + let plainMongo: MongoClient; + + before(async function () { + compass = await init(this.test?.fullTitle()); + browser = compass.browser; + }); + + beforeEach(async function () { + await browser.disconnectAll(); + await browser.connectWithConnectionForm({ + hosts: [CONNECTION_HOSTS], + fleKeyVaultNamespace: `${databaseName}.keyvault`, + fleEncryptedFieldsMap: `{ + '${databaseName}.${collection1}': { + fields: [ + { + path: 'phoneNumber', + keyId: UUID("28bbc608-524e-4717-9246-33633361788e"), + bsonType: 'string', + queries: { queryType: 'equality' } + } + ] + }, + '${databaseName}.${collection2}': { + fields: [ + { + path: 'phoneNumber', + keyId: UUID("9c932ef9-f43c-489a-98f3-31012a83bc46"), + bsonType: 'string', + queries: { queryType: 'equality' } + } + ] + }, + }`, + kmsProviders: { + local: [ + { + name: 'localA', + key: 'A'.repeat(128), + }, + { + name: 'localB', + key: 'B'.repeat(128), + }, + ], + }, + connectionName, + }); + await browser.shellEval(connectionName, [ + `use ${databaseName}`, + 'db.keyvault.insertOne({' + + '"_id": UUID("28bbc608-524e-4717-9246-33633361788e"),' + + '"keyMaterial": Binary.createFromBase64("fqZuVyi6ThsSNbgUWtn9MCFDxOQtL3dibMa2P456l+1xJUvAkqzZB2SZBr5Zd2xLDua45IgYAagWFeLhX+hpi0KkdVgdIZu2zlZ+mJSbtwZrFxcuyQ3oPCPnp7l0YH1fSfxeoEIQNVMFpnHzfbu2CgZ/nC8jp6IaB9t+tcszTDdJRLeHnzPuHIKzblFGP8CfuQHJ81B5OA0PrBJr+HbjJg==", 0),' + + '"creationDate": ISODate("2022-05-27T18:28:33.925Z"),' + + '"updateDate": ISODate("2022-05-27T18:28:33.925Z"),' + + '"status": 0,' + + '"masterKey": { "provider" : "local:localA" }' + + '})', + 'db.keyvault.insertOne({' + + '"_id": UUID("9c932ef9-f43c-489a-98f3-31012a83bc46"),' + + '"keyMaterial": Binary.createFromBase64("TymoH++xeTsaiIl498fviLaklY4xTM/baQydmVUABphJzvBsitjWfkoiKlGod/J45Vwoou1VfDRsFaiVHNth7aiFBvEsqvto5ETDFC9hSzP17c1ZrQI1nqrOfI0VGJm+WBALB7IMVFuyd9LV2i6KDIslxBfchOGR4q05Gm1Vgb/cTTUPJpvYLxmduyNSjxqH6lBAJ2ut9TgmUxCC+dMQRQ==", 0),' + + '"creationDate": ISODate("2022-05-27T18:28:34.925Z"),' + + '"updateDate": ISODate("2022-05-27T18:28:34.925Z"),' + + '"status": 0,' + + '"masterKey": { "provider" : "local:localB" }' + + '})', + // make sure there is a collection so we can navigate to the database + `db.getMongo().getDB('${databaseName}').createCollection('default')`, + ]); + await refresh(browser, connectionName); + + plainMongo = await MongoClient.connect(CONNECTION_STRING); + }); + + after(async function () { + if (compass) { + await cleanup(compass); + } + }); + + afterEach(async function () { + if (compass) { + await screenshotIfFailed(compass, this.currentTest); + } + await plainMongo.db(databaseName).dropDatabase(); + await plainMongo.close(); + }); + + it('allows setting multiple kms providers of the same type', async function () { + async function verifyCollectionHasValue( + collection: string, + value: string + ) { + await browser.navigateToCollectionTab( + connectionName, + databaseName, + collection, + 'Documents' + ); + const result = await getFirstListDocument(browser); + expect(result.phoneNumber).to.be.equal(JSON.stringify(value)); + } + + await browser.shellEval(connectionName, [ + `use ${databaseName}`, + `db.createCollection("${collection1}")`, + `db.createCollection("${collection2}")`, + `db["${collection1}"].insertOne({ "phoneNumber": "${phoneNumber1}", "name": "LocalA" })`, + `db["${collection2}"].insertOne({ "phoneNumber": "${phoneNumber2}", "name": "LocalB" })`, + ]); + await refresh(browser, connectionName); + + await verifyCollectionHasValue(collection1, phoneNumber1); + await verifyCollectionHasValue(collection2, phoneNumber2); + + // create a new encrypted collection using keyId for local:localB + await browser.navigateToDatabaseCollectionsTab( + connectionName, + databaseName + ); + const collection3 = 'collection-3'; + const phoneNumber3 = '1111111111'; + await browser.clickVisible(Selectors.DatabaseCreateCollectionButton); + await browser.addCollection(collection3, { + encryptedFields: `{ + fields: [{ + path: 'phoneNumber', + keyId: UUID("9c932ef9-f43c-489a-98f3-31012a83bc46"), + bsonType: 'string', + queries: { queryType: 'equality' } + }] + }`, + }); + + await browser.shellEval(connectionName, [ + `use ${databaseName}`, + `db["${collection3}"].insertOne({ "phoneNumber": "${phoneNumber3}", "name": "LocalB" })`, + ]); + + await verifyCollectionHasValue(collection3, phoneNumber3); + }); + }); }); describe('server version gte 6.0 and lt 7.0', function () { @@ -1070,7 +1241,13 @@ describe('CSFLE / QE', function () { await browser.connectWithConnectionForm({ hosts: [CONNECTION_HOSTS], fleKeyVaultNamespace: `${databaseName}.keyvault`, - fleKey: 'A'.repeat(128), + kmsProviders: { + local: [ + { + key: 'A'.repeat(128), + }, + ], + }, connectionName, }); diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx index d9dba077a74..f2b24aa6a56 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx @@ -8,6 +8,7 @@ import { screen, waitFor, fireEvent, + within, } from '@testing-library/react'; import type { ConnectionOptions } from 'mongodb-data-service'; @@ -15,6 +16,8 @@ import { setCodemirrorEditorValue } from '@mongodb-js/compass-editor'; import { Binary } from 'bson'; import ConnectionForm from '../../../'; +import userEvent from '@testing-library/user-event'; +import { getNextKmsProviderName } from './kms-provider-content'; const openAdvancedTab = async ( tabId: 'general' | 'authentication' | 'tls' | 'proxy' | 'advanced' | 'csfle' @@ -359,4 +362,201 @@ describe('In-Use Encryption', function () { }, }); }); + + context('supports multiple kms providers from same type', function () { + function renameKMSProvider(name: string, value: string) { + const card = screen.getByTestId(`${name}-kms-card-item`); + + const editButton = within(card).queryByRole('button', { + name: /edit kms provider name/i, + }); + + if (editButton) { + userEvent.click( + within(card).getByRole('button', { + name: /edit kms provider name/i, + }) + ); + } + + const selector = within(card).getByTestId('csfle-kms-card-name'); + userEvent.clear(selector); + userEvent.type(selector, value); + userEvent.keyboard('{enter}'); + } + + it('allows to have multiple KMS providers from same type', async function () { + fireEvent.click(screen.getByText('Local KMS')); + fireEvent.click(screen.getByText('Add item')); + + const kmsProviders: Record = {}; + + for (const kmsProviderName of ['local', 'local:1'] as const) { + const kmsCard = screen.getByTestId(`${kmsProviderName}-kms-card-item`); + + expect( + within(kmsCard).getByTestId('csfle-kms-local-key').closest('input') + ?.value + ).to.equal(''); + + fireEvent.click( + within(kmsCard).getByTestId('generate-local-key-button') + ); + + const generatedLocalKey = within(kmsCard) + .getByTestId('csfle-kms-local-key') + .closest('input')?.value; + + if (!generatedLocalKey) { + throw new Error('expected generatedLocalKey'); + } + + expect(generatedLocalKey).to.match(/^[a-zA-Z0-9+/-_=]{128}$/); + + kmsProviders[kmsProviderName] = { + key: generatedLocalKey, + }; + } + + await expectToConnectWith({ + connectionString: 'mongodb://localhost:27017', + fleOptions: { + storeCredentials: false, + autoEncryption: { + keyVaultNamespace: 'db.coll', + kmsProviders, + }, + }, + }); + }); + + it('allows rename of KMS provider', async function () { + fireEvent.click(screen.getByText('Local KMS')); + fireEvent.click(screen.getByText('Add item')); + + renameKMSProvider('local', 'new_name_1'); + renameKMSProvider('local:1', 'new_name_2'); + + const kmsProviders: Record = {}; + + for (const kmsProviderName of [ + 'local:new_name_1', + 'local:new_name_2', + ] as const) { + const kmsCard = screen.getByTestId(`${kmsProviderName}-kms-card-item`); + + expect( + within(kmsCard).getByTestId('csfle-kms-local-key').closest('input') + ?.value + ).to.equal(''); + + fireEvent.click( + within(kmsCard).getByTestId('generate-local-key-button') + ); + + const generatedLocalKey = within(kmsCard) + .getByTestId('csfle-kms-local-key') + .closest('input')?.value; + + if (!generatedLocalKey) { + throw new Error('expected generatedLocalKey'); + } + + expect(generatedLocalKey).to.match(/^[a-zA-Z0-9+/-_=]{128}$/); + + kmsProviders[kmsProviderName] = { + key: generatedLocalKey, + }; + } + + await expectToConnectWith({ + connectionString: 'mongodb://localhost:27017', + fleOptions: { + storeCredentials: false, + autoEncryption: { + keyVaultNamespace: 'db.coll', + kmsProviders, + }, + }, + }); + }); + + it('shows name validation errors', function () { + fireEvent.click(screen.getByText('Local KMS')); + fireEvent.click(screen.getByText('Add item')); + + // By default the first name is local + + // Check validation errors for the second name + renameKMSProvider('local:1', ''); + expect(screen.getByText('Name cannot be empty')).to.exist; + + renameKMSProvider('local:1', 'local 1'); + expect( + screen.getByText( + 'Name must be alphanumeric and may contain underscores' + ) + ).to.exist; + + renameKMSProvider('local', 'name1'); + renameKMSProvider('local:1', 'name1'); + expect(screen.getByText('Name already exists')).to.exist; + }); + + it('allows user to remove a kms provider', function () { + fireEvent.click(screen.getByText('Local KMS')); + + const card1 = screen.getByTestId('local-kms-card-item'); + userEvent.hover(card1); + // When its only one card, we do not show the delete button + expect(() => + within(card1).getByRole('button', { + name: /Remove KMS provider/i, + }) + ).to.throw; + + fireEvent.click(screen.getByText('Add item')); + + expect(within(card1).findByTestId('kms-card-header')).to.exist; + expect( + within(screen.getByTestId('local:1-kms-card-item')).findByTestId( + 'kms-card-header' + ) + ).to.exist; + + // we show remove button on hover + userEvent.hover(card1); + fireEvent.click( + within(card1).getByRole('button', { + name: /Remove KMS provider/i, + }) + ); + + expect(() => card1).to.throw; + }); + }); + + it('getNextKmsProviderName', function () { + const usecases = [ + { + providerNames: [], + expected: 'local', + }, + { + providerNames: ['local'], + expected: 'local:1', + }, + { + providerNames: ['local:9'], + expected: 'local:10', + }, + { + providerNames: ['local:what', 'local:this'], + expected: 'local:1', + }, + ]; + for (const { providerNames, expected } of usecases) { + expect(getNextKmsProviderName('local', providerNames)).to.equal(expected); + } + }); }); diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.tsx index 71736127ad0..81372d65138 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.tsx @@ -1,5 +1,5 @@ import type { ChangeEvent } from 'react'; -import React, { useCallback } from 'react'; +import React, { useCallback, useMemo } from 'react'; import type { ConnectionOptions } from 'mongodb-data-service'; import { Accordion, @@ -19,7 +19,9 @@ import type { Document, AutoEncryptionOptions } from 'mongodb'; import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; import KMSProviderStatusIndicator from './kms-provider-status-indicator'; -import KMSProviderFieldsForm from './kms-provider-fields'; +import KMSProviderContent, { + getNextKmsProviderName, +} from './kms-provider-content'; import EncryptedFieldConfigInput from './encrypted-field-config-input'; import type { ConnectionFormError } from '../../../utils/validation'; import { @@ -28,8 +30,9 @@ import { fieldNameHasError, } from '../../../utils/validation'; import type { - KMSProviderName, + KMSProviderType, KMSField, + KMSProviderName, } from '../../../utils/csfle-kms-fields'; import { KMSProviderFields } from '../../../utils/csfle-kms-fields'; import { useConnectionFormPreference } from '../../../hooks/use-connect-form-preferences'; @@ -40,7 +43,7 @@ const kmsProviderComponentWrapperStyles = css({ }); interface KMSProviderMetadata { - kmsProvider: KMSProviderName; + kmsProviderType: KMSProviderType; title: string; noTLS?: boolean; clientCertIsOptional?: boolean; @@ -49,24 +52,24 @@ interface KMSProviderMetadata { const options: KMSProviderMetadata[] = [ { title: 'Local KMS', - kmsProvider: 'local', + kmsProviderType: 'local', noTLS: true, }, { title: 'AWS', - kmsProvider: 'aws', + kmsProviderType: 'aws', }, { title: 'GCP', - kmsProvider: 'gcp', + kmsProviderType: 'gcp', }, { title: 'Azure', - kmsProvider: 'azure', + kmsProviderType: 'azure', }, { title: 'KMIP', - kmsProvider: 'kmip', + kmsProviderType: 'kmip', clientCertIsOptional: false, }, ]; @@ -78,6 +81,7 @@ const accordionContainerStyles = css({ const titleStyles = css({ display: 'flex', alignItems: 'center', + gap: spacing[50], }); function CSFLETab({ @@ -105,7 +109,7 @@ function CSFLETab({ ) => { return updateConnectionFormField({ type: 'update-csfle-param', - key: key, + key, value, }); }, @@ -122,6 +126,39 @@ function CSFLETab({ [updateConnectionFormField] ); + const onOpenAccordion = useCallback( + (kmsProviderType: KMSProviderType, isOpen: boolean) => { + const hasExistingKmsType = Object.keys( + connectionOptions.fleOptions?.autoEncryption?.kmsProviders ?? {} + ).some((kmsProvider) => kmsProvider.startsWith(kmsProviderType)); + // When we are expanding an accordion the first time, we should add a new empty KMS provider + // in the connection form state if there is none. + if (isOpen && !hasExistingKmsType) { + return updateConnectionFormField({ + type: 'add-new-csfle-kms-provider', + name: getNextKmsProviderName(kmsProviderType), + }); + } + }, + [ + updateConnectionFormField, + connectionOptions.fleOptions?.autoEncryption?.kmsProviders, + ] + ); + + const kmsProviders = useMemo(() => { + return Object.keys( + connectionOptions.fleOptions?.autoEncryption?.kmsProviders ?? {} + ).reduce((acc, kmsProvider) => { + const type = kmsProvider.split(':')[0] as KMSProviderType; + if (!acc[type]) { + acc[type] = []; + } + acc[type]!.push(kmsProvider as KMSProviderName); + return acc; + }, {} as Partial[]>>); + }, [connectionOptions.fleOptions?.autoEncryption?.kmsProviders]); + return ( <> @@ -182,43 +219,53 @@ function CSFLETab({ /> - {options.map(({ title, kmsProvider, ...kmsFieldComponentOptions }) => { - const accordionTitle = ( - - {title} - [] - } - /> - - ); - return ( -
- -
- [] - } - {...kmsFieldComponentOptions} - /> -
-
-
- ); - })} + {options.map( + ({ title, kmsProviderType, ...kmsFieldComponentOptions }) => { + const accordionTitle = ( + + {title} + {(kmsProviders[kmsProviderType]?.length ?? 0) > 1 && ( + ({kmsProviders[kmsProviderType]?.length}) + )} + [] + } + /> + + ); + return ( +
+ onOpenAccordion(kmsProviderType, open)} + data-testid={`csfle-kms-provider-${kmsProviderType}`} + text={accordionTitle} + > +
+ [] + } + kmsProviderNames={kmsProviders[kmsProviderType] ?? []} + {...kmsFieldComponentOptions} + /> +
+
+
+ ); + } + )}
; handleFieldChanged: (key: 'key', value?: string) => void; connectionOptions: ConnectionOptions; }): React.ReactElement { - const autoEncryptionOptions = - connectionOptions.fleOptions?.autoEncryption ?? {}; + const kmsConfig = useMemo(() => { + const autoEncryptionOptions = + connectionOptions.fleOptions?.autoEncryption ?? {}; + return autoEncryptionOptions.kmsProviders?.[ + kmsProviderName as keyof typeof autoEncryptionOptions.kmsProviders + ] as LocalKMSProviderConfiguration | undefined; + }, [connectionOptions.fleOptions?.autoEncryption, kmsProviderName]); const [generatedKeyMaterial, setGeneratedKeyMaterial] = useState(''); @@ -39,15 +50,12 @@ function KMSLocalKeyGenerator({ - {generatedKeyMaterial === - autoEncryptionOptions.kmsProviders?.local?.key && ( + {generatedKeyMaterial === kmsConfig?.key && ( <>
diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-card.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-card.tsx new file mode 100644 index 00000000000..9df300c58cc --- /dev/null +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-card.tsx @@ -0,0 +1,244 @@ +import React, { useCallback, useState, type ChangeEvent } from 'react'; +import { + Card, + css, + Icon, + IconButton, + spacing, + TextInput, + useHoverState, + Body, + Label, + cx, +} from '@mongodb-js/compass-components'; + +import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; +import type { + KMSField, + KMSProviderType, + KMSProviderName, +} from '../../../utils/csfle-kms-fields'; +import type { ConnectionFormError } from '../../../utils/validation'; +import type { ConnectionOptions } from 'mongodb-data-service'; +import KMSProviderFieldsForm from './kms-provider-fields'; + +const cardStyles = css({ + marginTop: spacing[200], + marginBottom: spacing[200], +}); + +const flexContainerStyles = css({ + display: 'flex', + alignItems: 'center', + gap: spacing[100], +}); + +// With these margins, when clicking edit button, there is no flickering. +const editKmsContainerStyles = css({ + marginTop: spacing[100], + marginBottom: spacing[100], +}); + +const pushRightStyles = css({ + marginLeft: 'auto', +}); + +function KMSNameComponent({ + kmsProviderName, + kmsProviderType, + validateName, + onRename, +}: { + kmsProviderName: KMSProviderName; + kmsProviderType: T; + validateName: (name: string) => string | undefined; + onRename: (newName: KMSProviderName) => void; +}) { + const [isEditing, setIsEditing] = useState(false); + const [validationError, setValidationError] = useState(); + const [name, setName] = useState(() => { + return kmsProviderName.replace(new RegExp(`^${kmsProviderType}:?`), ''); + }); + + const onEdit = useCallback(() => { + setIsEditing(true); + }, []); + + const onChangeName = useCallback( + (newName: string) => { + setName(newName); + setValidationError(validateName(newName)); + }, + [setValidationError, validateName] + ); + + const onSave = useCallback(() => { + if (validationError) { + return; + } + setIsEditing(false); + onRename(name === '' ? kmsProviderType : `${kmsProviderType}:${name}`); + }, [kmsProviderType, name, onRename, validationError]); + + if (!isEditing) { + return ( +
+ +
+ {kmsProviderName} + + + +
+
+ ); + } + + return ( +
+ +
+ {kmsProviderType}: + ) => { + onChangeName(value); + }} + id={kmsProviderName} + onBlur={onSave} + data-testid="csfle-kms-card-name" + aria-label={'KMS Name'} + type={'text'} + state={validationError ? 'error' : 'none'} + errorMessage={validationError} + value={name} + onKeyPress={(e) => { + if (e.key === 'Enter') { + e.preventDefault(); + onSave(); + } + }} + /> +
+
+ ); +} + +type KMSProviderCardProps = { + updateConnectionFormField: UpdateConnectionFormField; + connectionOptions: ConnectionOptions; + errors: ConnectionFormError[]; + kmsProviderType: T; + kmsProviderNames: KMSProviderName[]; + fields: KMSField[]; + clientCertIsOptional?: boolean; + noTLS?: boolean; + kmsProviderName: KMSProviderName; + index: number; +}; + +function KMSProviderCard({ + kmsProviderName, + kmsProviderNames, + updateConnectionFormField, + connectionOptions, + errors, + kmsProviderType, + fields, + clientCertIsOptional, + noTLS, + index, +}: KMSProviderCardProps) { + const [hoverProps, isHovered] = useHoverState(); + const onRenameKmsProvider = useCallback( + (newName: KMSProviderName) => { + return updateConnectionFormField({ + type: 'rename-csfle-kms-provider', + name: kmsProviderName, + newName, + }); + }, + [kmsProviderName, updateConnectionFormField] + ); + const onRemoveKmsProvider = useCallback(() => { + return updateConnectionFormField({ + type: 'remove-csfle-kms-provider', + name: kmsProviderName, + }); + }, [updateConnectionFormField, kmsProviderName]); + + const onValidateName = useCallback( + (name: string) => { + // Exclude the current KMS provider name from the list. + const withoutCurrentKMSProviderNames = kmsProviderNames.filter( + (n) => n !== kmsProviderName + ); + const maybeProviderName = + name === '' ? kmsProviderType : `${kmsProviderType}:${name}`; + // `kmsProviderType` can only exist once, so empty name is allowed only for that case. + if ( + name === '' && + withoutCurrentKMSProviderNames.some((n) => n === maybeProviderName) + ) { + return 'Name cannot be empty'; + } + if ( + withoutCurrentKMSProviderNames.includes( + maybeProviderName as KMSProviderName + ) + ) { + return 'Name already exists'; + } + const regex = new RegExp(`^${kmsProviderType}(:[a-zA-Z0-9_]+)?$`); + if (!maybeProviderName.match(regex)) { + return 'Name must be alphanumeric and may contain underscores'; + } + return undefined; + }, + [kmsProviderNames, kmsProviderName, kmsProviderType] + ); + + return ( + +
+ + {kmsProviderNames.length > 1 && isHovered && ( + + + + )} +
+ +
+ ); +} + +export default KMSProviderCard; diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-content.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-content.tsx new file mode 100644 index 00000000000..16c90369e05 --- /dev/null +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-content.tsx @@ -0,0 +1,98 @@ +import React, { useCallback } from 'react'; +import { Button, css, Icon } from '@mongodb-js/compass-components'; +import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; +import type { + KMSField, + KMSProviderType, + KMSProviderName, +} from '../../../utils/csfle-kms-fields'; +import type { ConnectionFormError } from '../../../utils/validation'; +import type { ConnectionOptions } from 'mongodb-data-service'; +import KMSProviderCard from './kms-provider-card'; + +const flexContainerStyles = css({ + display: 'flex', + alignItems: 'center', +}); + +const pushRightStyles = css({ + marginLeft: 'auto', +}); + +export function getNextKmsProviderName( + kmsProviderType: T, + currentProviders: string[] = [] +): KMSProviderName { + if (currentProviders.length === 0) { + return kmsProviderType; + } + const currentNums = currentProviders // local:1 + .map((name) => name.replace(new RegExp(`^${kmsProviderType}:?`), '')) // '1' + .map((x) => parseInt(x, 10)) // 1 + .filter((x) => !isNaN(x)); + const nextNum = Math.max(0, ...currentNums) + 1; + return `${kmsProviderType}:${nextNum}`; // local:2 +} + +type KMSProviderContentProps = { + updateConnectionFormField: UpdateConnectionFormField; + connectionOptions: ConnectionOptions; + errors: ConnectionFormError[]; + kmsProviderType: T; + kmsProviderNames: KMSProviderName[]; + fields: KMSField[]; + clientCertIsOptional?: boolean; + noTLS?: boolean; +}; + +function KMSProviderContent({ + updateConnectionFormField, + connectionOptions, + kmsProviderType, + kmsProviderNames, + ...restOfTheProps +}: KMSProviderContentProps): React.ReactElement { + const onAddKmsProvider = useCallback( + (name: KMSProviderName) => { + return updateConnectionFormField({ + type: 'add-new-csfle-kms-provider', + name, + }); + }, + [updateConnectionFormField] + ); + + return ( + <> + {kmsProviderNames.map((kmsProviderName, index) => ( + + ))} +
+ +
+ + ); +} + +export default KMSProviderContent; diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-fields.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-fields.tsx index 542ce1de2fd..ff706e1ce21 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-fields.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-fields.tsx @@ -10,18 +10,21 @@ import KMSTLSOptions from './kms-tls-options'; import KMSLocalKeyGenerator from './kms-local-key-generator'; import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; import type { - KMSProviders, + KMSProviderType, + KMSProviderName, KMSOption, KMSField, + KMSTLSProviderName, } from '../../../utils/csfle-kms-fields'; import type { ConnectionFormError } from '../../../utils/validation'; import type { ConnectionOptions } from 'mongodb-data-service'; -function KMSProviderFieldsForm({ +function KMSProviderFieldsForm({ updateConnectionFormField, connectionOptions, errors, - kmsProvider, + kmsProviderType, + kmsProviderName, fields, clientCertIsOptional, noTLS, @@ -29,8 +32,9 @@ function KMSProviderFieldsForm({ updateConnectionFormField: UpdateConnectionFormField; connectionOptions: ConnectionOptions; errors: ConnectionFormError[]; - kmsProvider: KMSProvider; - fields: KMSField[]; + kmsProviderType: T; + kmsProviderName: KMSProviderName; + fields: KMSField[]; clientCertIsOptional?: boolean; noTLS?: boolean; }): React.ReactElement { @@ -38,15 +42,15 @@ function KMSProviderFieldsForm({ connectionOptions.fleOptions?.autoEncryption ?? {}; const handleFieldChanged = useCallback( - (key: KMSOption, value?: string) => { + (key: KMSOption, value?: string) => { return updateConnectionFormField({ type: 'update-csfle-kms-param', - kmsProvider, + kmsProviderName, key, value, }); }, - [updateConnectionFormField, kmsProvider] + [updateConnectionFormField, kmsProviderName] ); return ( @@ -74,12 +78,12 @@ function KMSProviderFieldsForm({ handleFieldChanged(name, value); }} name={name} - data-testid={`csfle-kms-${kmsProvider}-${name}`} + data-testid={`csfle-kms-${kmsProviderType}-${name}`} label={label} type={type === 'textarea' ? undefined : type} optional={type === 'textarea' ? undefined : optional} - value={value(autoEncryptionOptions)} - errorMessage={errorMessage?.(errors)} + value={value(autoEncryptionOptions, kmsProviderName)} + errorMessage={errorMessage?.(errors, kmsProviderName)} state={typeof state === 'string' ? state : state(errors)} spellCheck={false} description={description} @@ -90,14 +94,15 @@ function KMSProviderFieldsForm({ )} {!noTLS && ( } autoEncryptionOptions={autoEncryptionOptions} updateConnectionFormField={updateConnectionFormField} clientCertIsOptional={clientCertIsOptional} /> )} - {kmsProvider === 'local' && ( + {kmsProviderType === 'local' && ( } connectionOptions={connectionOptions} handleFieldChanged={ handleFieldChanged as ( diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-status-indicator.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-status-indicator.tsx index 43376f0d31e..8508be777dd 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-status-indicator.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-provider-status-indicator.tsx @@ -1,7 +1,11 @@ import React from 'react'; import type { AutoEncryptionOptions } from 'mongodb'; -import type { KMSProviders, KMSField } from '../../../utils/csfle-kms-fields'; +import type { + KMSField, + KMSProviderName, + KMSProviderType, +} from '../../../utils/csfle-kms-fields'; import type { ConnectionFormError } from '../../../utils/validation'; import { css, Icon, spacing, palette } from '@mongodb-js/compass-components'; @@ -10,24 +14,31 @@ const iconStyles = css({ display: 'block', }); -function KMSProviderStatusIndicator({ +function KMSProviderStatusIndicator({ autoEncryptionOptions, errors, + kmsProviders, fields, }: { autoEncryptionOptions: AutoEncryptionOptions; errors: ConnectionFormError[]; - fields: KMSField[]; + fields: KMSField[]; + kmsProviders: KMSProviderName[]; }): React.ReactElement { - const hasAnyFieldSet = fields.some(({ value }) => - value(autoEncryptionOptions) + const hasAnyFieldSet = kmsProviders.some((kmsProviderName) => + fields.some(({ value }) => value(autoEncryptionOptions, kmsProviderName)) ); - const isMissingRequiredField = fields.some( - ({ value, optional }) => !optional && !value(autoEncryptionOptions) + const isMissingRequiredField = kmsProviders.some((kmsProviderName) => + fields.some( + ({ value, optional }) => + !optional && !value(autoEncryptionOptions, kmsProviderName) + ) ); - const hasFieldWithError = fields.some( - ({ state }) => - (typeof state === 'string' ? state : state(errors)) === 'error' + const hasFieldWithError = kmsProviders.some(() => + fields.some( + ({ state }) => + (typeof state === 'string' ? state : state(errors)) === 'error' + ) ); if (hasFieldWithError) { diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-tls-options.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-tls-options.tsx index 858993ee284..5a289814cc4 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-tls-options.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/kms-tls-options.tsx @@ -6,32 +6,36 @@ import type { import TLSCertificateAuthority from '../tls-ssl-tab/tls-certificate-authority'; import TLSClientCertificate from '../tls-ssl-tab/tls-client-certificate'; +import type { + KMSTLSProviderName, + KMSTLSProviderType, +} from '../../../utils/csfle-kms-fields'; import type { UpdateConnectionFormField } from '../../../hooks/use-connect-form'; -function KMSTLSOptions({ +function KMSTLSOptions({ updateConnectionFormField, autoEncryptionOptions, - kmsProvider, + kmsProviderName, clientCertIsOptional, }: { updateConnectionFormField: UpdateConnectionFormField; autoEncryptionOptions: AutoEncryptionOptions; - kmsProvider: keyof NonNullable; + kmsProviderName: KMSTLSProviderName; clientCertIsOptional?: boolean; }): React.ReactElement { const currentOptions: ClientEncryptionTlsOptions = - autoEncryptionOptions.tlsOptions?.[kmsProvider] ?? {}; + autoEncryptionOptions.tlsOptions?.[kmsProviderName] ?? {}; const handleFieldChanged = useCallback( (key: keyof ClientEncryptionTlsOptions, value?: string) => { return updateConnectionFormField({ type: 'update-csfle-kms-tls-param', - kmsProvider, + kmsProviderName, key, value, }); }, - [updateConnectionFormField, kmsProvider] + [updateConnectionFormField, kmsProviderName] ); return ( diff --git a/packages/connection-form/src/components/connection-form.spec.tsx b/packages/connection-form/src/components/connection-form.spec.tsx index 24d0feb9bd4..02235e9ded1 100644 --- a/packages/connection-form/src/components/connection-form.spec.tsx +++ b/packages/connection-form/src/components/connection-form.spec.tsx @@ -406,7 +406,6 @@ describe('ConnectionForm Component', function () { }); it('should show a Cancel button', function () { - screen.debug(screen.getByTestId('cancel-button')); const button = screen.queryByRole('button', { name: 'Cancel' }); expect(button).to.be.visible; diff --git a/packages/connection-form/src/hooks/use-connect-form.ts b/packages/connection-form/src/hooks/use-connect-form.ts index 678b36b6f20..6df2cad09d5 100644 --- a/packages/connection-form/src/hooks/use-connect-form.ts +++ b/packages/connection-form/src/hooks/use-connect-form.ts @@ -46,12 +46,19 @@ import { handleUpdateCsfleKmsParam, handleUpdateCsfleKmsTlsParam, adjustCSFLEParams, + handleAddKmsProvider, + handleRemoveKmsProvider, + unsetFleOptionsIfEmptyAutoEncryption, + handleRenameKmsProvider, } from '../utils/csfle-handler'; import type { UpdateCsfleStoreCredentialsAction, UpdateCsfleAction, UpdateCsfleKmsAction, UpdateCsfleKmsTlsAction, + AddCsfleProviderAction, + RemoveCsfleProviderAction, + RenameCsfleProviderAction, } from '../utils/csfle-handler'; import { handleUpdateOIDCParam, @@ -190,6 +197,9 @@ type ConnectionFormFieldActions = | { type: 'remove-app-proxy'; } + | AddCsfleProviderAction + | RenameCsfleProviderAction + | RemoveCsfleProviderAction | UpdateCsfleStoreCredentialsAction | UpdateCsfleAction | UpdateCsfleKmsAction @@ -677,6 +687,24 @@ export function handleConnectionFormFieldUpdate( connectionOptions: currentConnectionOptions, }); } + case 'add-new-csfle-kms-provider': { + return handleAddKmsProvider({ + action, + connectionOptions: currentConnectionOptions, + }); + } + case 'rename-csfle-kms-provider': { + return handleRenameKmsProvider({ + action, + connectionOptions: currentConnectionOptions, + }); + } + case 'remove-csfle-kms-provider': { + return handleRemoveKmsProvider({ + action, + connectionOptions: currentConnectionOptions, + }); + } } } @@ -835,6 +863,7 @@ export function adjustConnectionOptionsBeforeConnect({ connectionOptions: Readonly ) => ConnectionOptions)[] = [ adjustCSFLEParams, + unsetFleOptionsIfEmptyAutoEncryption, setAppNameParamIfMissing(defaultAppName), adjustOIDCConnectionOptionsBeforeConnect({ browserCommandForOIDCAuth: preferences.browserCommandForOIDCAuth, diff --git a/packages/connection-form/src/utils/csfle-handler.spec.ts b/packages/connection-form/src/utils/csfle-handler.spec.ts index 79772cbdcb7..2085fdeb1ef 100644 --- a/packages/connection-form/src/utils/csfle-handler.spec.ts +++ b/packages/connection-form/src/utils/csfle-handler.spec.ts @@ -12,6 +12,10 @@ import { encryptedFieldConfigToText, adjustCSFLEParams, randomLocalKey, + unsetFleOptionsIfEmptyAutoEncryption, + handleAddKmsProvider, + handleRenameKmsProvider, + handleRemoveKmsProvider, } from './csfle-handler'; describe('csfle-handler', function () { @@ -85,7 +89,7 @@ describe('csfle-handler', function () { }).connectionOptions.fleOptions ).to.deep.equal({ storeCredentials: false, - autoEncryption: undefined, + autoEncryption: {}, }); }); }); @@ -95,7 +99,7 @@ describe('csfle-handler', function () { const withParameterSet = handleUpdateCsfleKmsParam({ action: { type: 'update-csfle-kms-param', - kmsProvider: 'aws', + kmsProviderName: 'aws', key: 'accessKeyId', value: '123456', }, @@ -117,14 +121,16 @@ describe('csfle-handler', function () { handleUpdateCsfleKmsParam({ action: { type: 'update-csfle-kms-param', - kmsProvider: 'aws', + kmsProviderName: 'aws', key: 'accessKeyId', }, connectionOptions: withParameterSet, }).connectionOptions.fleOptions ).to.deep.equal({ storeCredentials: false, - autoEncryption: undefined, + autoEncryption: { + kmsProviders: {}, + }, }); }); }); @@ -134,7 +140,7 @@ describe('csfle-handler', function () { const withParameterSet = handleUpdateCsfleKmsTlsParam({ action: { type: 'update-csfle-kms-tls-param', - kmsProvider: 'aws', + kmsProviderName: 'aws', key: 'tlsCertificateKeyFilePassword', value: '123456', }, @@ -156,14 +162,16 @@ describe('csfle-handler', function () { handleUpdateCsfleKmsTlsParam({ action: { type: 'update-csfle-kms-tls-param', - kmsProvider: 'aws', + kmsProviderName: 'aws', key: 'tlsCertificateKeyFilePassword', }, connectionOptions: withParameterSet, }).connectionOptions.fleOptions ).to.deep.equal({ storeCredentials: false, - autoEncryption: undefined, + autoEncryption: { + tlsOptions: {}, + }, }); }); }); @@ -206,6 +214,193 @@ describe('csfle-handler', function () { }); }); + describe('#handleAddKmsProvider', function () { + it('can add a kms provider', function () { + let withParameterSet = handleAddKmsProvider({ + action: { + type: 'add-new-csfle-kms-provider', + name: 'local', + }, + connectionOptions, + }).connectionOptions; + + expect(withParameterSet.fleOptions).to.deep.equal({ + storeCredentials: false, + autoEncryption: { + kmsProviders: { + local: {}, + }, + }, + }); + + withParameterSet = handleAddKmsProvider({ + action: { + type: 'add-new-csfle-kms-provider', + name: 'aws', + }, + connectionOptions: withParameterSet, + }).connectionOptions; + + expect(withParameterSet.fleOptions).to.deep.equal({ + storeCredentials: false, + autoEncryption: { + kmsProviders: { + local: {}, + aws: {}, + }, + }, + }); + }); + }); + + describe('#handleRenameCsfleParam', function () { + it('can rename a kms provider name', function () { + connectionOptions.fleOptions = { + storeCredentials: false, + autoEncryption: { + kmsProviders: { + local: { + key: 'asdf', + }, + }, + tlsOptions: { + local: { + tlsCertificateKeyFilePassword: 'asdf', + }, + }, + }, + }; + const withParameterSet = handleRenameKmsProvider({ + action: { + type: 'rename-csfle-kms-provider', + name: 'local', + newName: 'local:1', + }, + connectionOptions, + }).connectionOptions; + + expect(withParameterSet.fleOptions).to.deep.equal({ + storeCredentials: false, + autoEncryption: { + kmsProviders: { + 'local:1': { + key: 'asdf', + }, + }, + tlsOptions: { + 'local:1': { + tlsCertificateKeyFilePassword: 'asdf', + }, + }, + }, + }); + }); + + it('renames kms name and does not change the position of the key', function () { + connectionOptions.fleOptions = { + storeCredentials: false, + autoEncryption: { + kmsProviders: { + // @ts-expect-error multiple kms providers are supported in next driver release + 'local:2': { + key: 'asdf', + }, + local: { + key: 'asdf', + }, + 'aws:1': { + secretAccessKey: 'asdf', + accessKeyId: 'asdf', + }, + }, + tlsOptions: { + 'local:2': { + tlsCertificateKeyFilePassword: 'asdf', + }, + local: { + tlsCertificateKeyFilePassword: 'asdf', + }, + 'aws:1': { + tlsCertificateKeyFilePassword: 'asdf', + }, + }, + }, + }; + const withParameterSet = handleRenameKmsProvider({ + action: { + type: 'rename-csfle-kms-provider', + name: 'local', + newName: 'local:3', + }, + connectionOptions, + }).connectionOptions; + + expect(withParameterSet.fleOptions).to.deep.equal({ + storeCredentials: false, + autoEncryption: { + kmsProviders: { + 'local:2': { + key: 'asdf', + }, + 'local:3': { + key: 'asdf', + }, + 'aws:1': { + secretAccessKey: 'asdf', + accessKeyId: 'asdf', + }, + }, + tlsOptions: { + 'local:2': { + tlsCertificateKeyFilePassword: 'asdf', + }, + 'local:3': { + tlsCertificateKeyFilePassword: 'asdf', + }, + 'aws:1': { + tlsCertificateKeyFilePassword: 'asdf', + }, + }, + }, + }); + }); + }); + + describe('#handleRemoveKmsProvider', function () { + it('can remove a kms provider', function () { + connectionOptions.fleOptions = { + storeCredentials: false, + autoEncryption: { + kmsProviders: { + local: { + key: 'asdf', + }, + }, + tlsOptions: { + local: { + tlsCertificateKeyFilePassword: 'asdf', + }, + }, + }, + }; + const withParameterSet = handleRemoveKmsProvider({ + action: { + type: 'remove-csfle-kms-provider', + name: 'local', + }, + connectionOptions, + }).connectionOptions; + + expect(withParameterSet.fleOptions).to.deep.equal({ + storeCredentials: false, + autoEncryption: { + kmsProviders: {}, + tlsOptions: {}, + }, + }); + }); + }); + describe('#randomLocalKey', function () { it('returns random 96-byte base64-encoded strings', function () { expect(randomLocalKey()).to.match(/^[A-Za-z0-9+/]{128}$/); @@ -354,4 +549,52 @@ describe('csfle-handler', function () { }); }); }); + + describe('unsetFleOptionsIfEmptyAutoEncryption', function () { + it('unsets fleOptions if options are empty', function () { + (connectionOptions.fleOptions as any).autoEncryption = { + kmsProviders: { + aws: {}, + 'aws:1': {}, + }, + tlsOptions: { + local: {}, + }, + }; + expect( + unsetFleOptionsIfEmptyAutoEncryption(connectionOptions) + ).to.deep.equal({ + connectionString: 'mongodb://localhost/', + fleOptions: undefined, + }); + }); + it('does not unset fleOptions if options are not empty', function () { + (connectionOptions.fleOptions as any).autoEncryption = { + kmsProviders: { + aws: { + accessKeyId: 'asdf', + }, + 'aws:1': {}, + }, + tlsOptions: { + local: {}, + }, + }; + expect( + unsetFleOptionsIfEmptyAutoEncryption(connectionOptions) + ).to.deep.equal({ + connectionString: 'mongodb://localhost/', + fleOptions: { + autoEncryption: { + kmsProviders: { + aws: { + accessKeyId: 'asdf', + }, + }, + }, + storeCredentials: false, + }, + }); + }); + }); }); diff --git a/packages/connection-form/src/utils/csfle-handler.ts b/packages/connection-form/src/utils/csfle-handler.ts index 2bc33c769fa..ae4f5e37298 100644 --- a/packages/connection-form/src/utils/csfle-handler.ts +++ b/packages/connection-form/src/utils/csfle-handler.ts @@ -6,7 +6,12 @@ import type { ClientEncryptionTlsOptions, Document, } from 'mongodb'; -import type { KMSProviderName, KMSTLSProviderName } from './csfle-kms-fields'; +import type { + KMSProviderName, + KMSProviderType, + KMSTLSProviderName, + KMSTLSProviderType, +} from './csfle-kms-fields'; import { toJSString } from 'mongodb-query-parser'; import parseShellStringToEJSON, { ParseMode, @@ -29,18 +34,41 @@ export interface UpdateCsfleAction { key: keyof AutoEncryptionOptions; value?: AutoEncryptionOptions[keyof AutoEncryptionOptions]; } +export interface AddCsfleProviderAction< + T extends KMSProviderType = KMSProviderType +> { + type: 'add-new-csfle-kms-provider'; + name: KMSProviderName; +} +export interface RenameCsfleProviderAction< + T extends KMSProviderType = KMSProviderType +> { + type: 'rename-csfle-kms-provider'; + name: KMSProviderName; + newName: KMSProviderName; +} +export interface RemoveCsfleProviderAction< + T extends KMSProviderType = KMSProviderType +> { + type: 'remove-csfle-kms-provider'; + name: KMSProviderName; +} type KMSProviders = NonNullable; -export interface UpdateCsfleKmsAction { +export interface UpdateCsfleKmsAction< + T extends KMSProviderType = KMSProviderType +> { type: 'update-csfle-kms-param'; - kmsProvider: KMSProviderName; + kmsProviderName: KMSProviderName; key: KeysOfUnion; value?: string; } -export interface UpdateCsfleKmsTlsAction { +export interface UpdateCsfleKmsTlsAction< + T extends KMSTLSProviderType = KMSTLSProviderType +> { type: 'update-csfle-kms-tls-param'; - kmsProvider: KMSTLSProviderName; + kmsProviderName: KMSTLSProviderName; key: keyof ClientEncryptionTlsOptions; value?: string; } @@ -92,17 +120,17 @@ export function handleUpdateCsfleParam({ fleOptions: { ...DEFAULT_FLE_OPTIONS, ...connectionOptions.fleOptions, - autoEncryption: unsetAutoEncryptionIfEmpty(autoEncryption), + autoEncryption, }, }, }; } -export function handleUpdateCsfleKmsParam({ +export function handleUpdateCsfleKmsParam({ action, connectionOptions, }: { - action: UpdateCsfleKmsAction; + action: UpdateCsfleKmsAction; connectionOptions: ConnectionOptions; }): { connectionOptions: ConnectionOptions; @@ -111,7 +139,9 @@ export function handleUpdateCsfleKmsParam({ const autoEncryption = connectionOptions.fleOptions?.autoEncryption ?? {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any const kms: any = { - ...(autoEncryption.kmsProviders?.[action.kmsProvider] ?? {}), + ...(autoEncryption.kmsProviders?.[ + action.kmsProviderName as keyof KMSProviders + ] ?? {}), }; if (!action.value) { delete kms[action.key]; @@ -120,9 +150,9 @@ export function handleUpdateCsfleKmsParam({ } const kmsProviders = autoEncryption.kmsProviders ?? {}; if (Object.keys(kms).length === 0) { - delete kmsProviders[action.kmsProvider]; + delete kmsProviders[action.kmsProviderName as keyof KMSProviders]; } else { - kmsProviders[action.kmsProvider] = kms; + kmsProviders[action.kmsProviderName as keyof KMSProviders] = kms; } return { connectionOptions: { @@ -130,20 +160,20 @@ export function handleUpdateCsfleKmsParam({ fleOptions: { ...DEFAULT_FLE_OPTIONS, ...connectionOptions.fleOptions, - autoEncryption: unsetAutoEncryptionIfEmpty({ + autoEncryption: { ...autoEncryption, kmsProviders, - }), + }, }, }, }; } -export function handleUpdateCsfleKmsTlsParam({ +export function handleUpdateCsfleKmsTlsParam({ action, connectionOptions, }: { - action: UpdateCsfleKmsTlsAction; + action: UpdateCsfleKmsTlsAction; connectionOptions: ConnectionOptions; }): { connectionOptions: ConnectionOptions; @@ -152,7 +182,7 @@ export function handleUpdateCsfleKmsTlsParam({ const autoEncryption = connectionOptions.fleOptions?.autoEncryption ?? {}; // eslint-disable-next-line @typescript-eslint/no-explicit-any const tls: any = { - ...(autoEncryption.tlsOptions?.[action.kmsProvider] ?? {}), + ...(autoEncryption.tlsOptions?.[action.kmsProviderName] ?? {}), }; if (!action.value) { delete tls[action.key]; @@ -161,9 +191,9 @@ export function handleUpdateCsfleKmsTlsParam({ } const tlsOptions = autoEncryption.tlsOptions ?? {}; if (Object.keys(tls).length === 0) { - delete tlsOptions[action.kmsProvider]; + delete tlsOptions[action.kmsProviderName]; } else { - tlsOptions[action.kmsProvider] = tls; + tlsOptions[action.kmsProviderName] = tls; } return { connectionOptions: { @@ -171,10 +201,10 @@ export function handleUpdateCsfleKmsTlsParam({ fleOptions: { ...DEFAULT_FLE_OPTIONS, ...connectionOptions.fleOptions, - autoEncryption: unsetAutoEncryptionIfEmpty({ + autoEncryption: { ...autoEncryption, tlsOptions, - }), + }, }, }, }; @@ -184,10 +214,57 @@ export function handleUpdateCsfleKmsTlsParam({ // as an option, regardless of whether it is filled. Consequently, we need // to set it to undefined explicitly if the user wants to disable automatic // CSFLE entirely (indicated by removing all CSFLE options). -export function unsetAutoEncryptionIfEmpty( - o?: AutoEncryptionOptions -): AutoEncryptionOptions | undefined { - return o && hasAnyCsfleOption(o) ? o : undefined; +export function unsetFleOptionsIfEmptyAutoEncryption( + connectionOptions: Readonly +): ConnectionOptions { + connectionOptions = cloneDeep(connectionOptions); + const autoEncryption = + connectionOptions.fleOptions?.autoEncryption && + hasAnyCsfleOption(connectionOptions.fleOptions?.autoEncryption) + ? connectionOptions.fleOptions?.autoEncryption + : undefined; + + if (!autoEncryption) { + return { + ...connectionOptions, + fleOptions: undefined, + }; + } + + function filterEmptyValues( + obj: T | undefined + ): Partial { + const values = Object.fromEntries( + Object.entries(obj ?? {}).filter( + ([, v]) => Object.keys(v ?? {}).length > 0 + ) + ); + return Object.keys(values).length > 0 ? (values as Partial) : undefined; + } + // Filter out the empty kmsProviders or the tlsOptions + const kmsProviders = filterEmptyValues(autoEncryption.kmsProviders); + const tlsOptions = filterEmptyValues(autoEncryption.tlsOptions); + + const { + /* eslint-disable @typescript-eslint/no-unused-vars */ + kmsProviders: _1, + tlsOptions: _2, + /* eslint-enable @typescript-eslint/no-unused-vars */ + ...restOfTheAutoEncryption + } = autoEncryption; + + return { + ...connectionOptions, + fleOptions: { + ...DEFAULT_FLE_OPTIONS, + ...connectionOptions.fleOptions, + autoEncryption: { + ...restOfTheAutoEncryption, + ...(kmsProviders ? { kmsProviders } : {}), + ...(tlsOptions ? { tlsOptions } : {}), + }, + }, + }; } export function hasAnyCsfleOption(o: Readonly): boolean { @@ -279,3 +356,121 @@ export function adjustCSFLEParams( export function randomLocalKey(): string { return randomBytes(96).toString('base64'); } + +export function handleAddKmsProvider({ + action, + connectionOptions, +}: { + action: AddCsfleProviderAction; + connectionOptions: ConnectionOptions; +}): { + connectionOptions: ConnectionOptions; +} { + connectionOptions = cloneDeep(connectionOptions); + + const autoEncryption = connectionOptions.fleOptions?.autoEncryption ?? {}; + const kmsProviders = autoEncryption.kmsProviders ?? {}; + kmsProviders[action.name as keyof KMSProviders] = {} as any; + + return { + connectionOptions: { + ...connectionOptions, + fleOptions: { + ...DEFAULT_FLE_OPTIONS, + ...connectionOptions.fleOptions, + autoEncryption: { + ...autoEncryption, + kmsProviders, + }, + }, + }, + }; +} + +// In order to ensure that the order of the keys is preserved, we need to +// delete the old key and insert the new key at the same position. +function renameDataKey( + data: T | undefined, + oldKey: keyof T, + newKey: string +): Document | undefined { + if (!data) { + return undefined; + } + return Object.fromEntries( + Object.entries(data).map(([key, value]) => [ + key === oldKey ? newKey : key, + value, + ]) + ); +} + +export function handleRenameKmsProvider({ + action, + connectionOptions, +}: { + action: RenameCsfleProviderAction; + connectionOptions: ConnectionOptions; +}): { + connectionOptions: ConnectionOptions; +} { + connectionOptions = cloneDeep(connectionOptions); + const autoEncryption = connectionOptions.fleOptions?.autoEncryption ?? {}; + + const kmsProviders = renameDataKey( + autoEncryption.kmsProviders, + // @ts-expect-error multiple kms providers are supported in next driver release + action.name, + action.newName + ); + const tlsOptions = renameDataKey( + autoEncryption.tlsOptions, + action.name, + action.newName + ); + return { + connectionOptions: { + ...connectionOptions, + fleOptions: { + ...DEFAULT_FLE_OPTIONS, + ...connectionOptions.fleOptions, + autoEncryption: { + ...autoEncryption, + ...(kmsProviders && { kmsProviders }), + ...(tlsOptions && { tlsOptions }), + }, + }, + }, + }; +} + +export function handleRemoveKmsProvider({ + action, + connectionOptions, +}: { + action: RemoveCsfleProviderAction; + connectionOptions: ConnectionOptions; +}): { + connectionOptions: ConnectionOptions; +} { + connectionOptions = cloneDeep(connectionOptions); + const autoEncryption = connectionOptions.fleOptions?.autoEncryption ?? {}; + const kmsProviders = autoEncryption.kmsProviders ?? {}; + delete kmsProviders[action.name as keyof KMSProviders]; + const tlsOptions = autoEncryption.tlsOptions ?? {}; + delete tlsOptions[action.name as keyof KMSProviders]; + return { + connectionOptions: { + ...connectionOptions, + fleOptions: { + ...DEFAULT_FLE_OPTIONS, + ...connectionOptions.fleOptions, + autoEncryption: { + ...autoEncryption, + kmsProviders, + tlsOptions, + }, + }, + }, + }; +} diff --git a/packages/connection-form/src/utils/csfle-kms-fields.ts b/packages/connection-form/src/utils/csfle-kms-fields.ts index 6b5a9665c3a..5a72b802427 100644 --- a/packages/connection-form/src/utils/csfle-kms-fields.ts +++ b/packages/connection-form/src/utils/csfle-kms-fields.ts @@ -1,22 +1,36 @@ -import type { AutoEncryptionOptions, CSFLEKMSTlsOptions } from 'mongodb'; +import type { KMSProviders } from 'mongodb'; import type { ConnectionFormError } from './validation'; import { errorMessageByFieldName, fieldNameHasError } from './validation'; - +export type { + ClientEncryptionTlsOptions, + KMSProviders, + LocalKMSProviderConfiguration, +} from 'mongodb'; type KeysOfUnion = T extends T ? keyof T : never; -export type KMSProviders = NonNullable; -export type KMSProviderName = keyof KMSProviders; -export type KMSTLSProviderName = keyof CSFLEKMSTlsOptions; -export type KMSOption = KeysOfUnion< +export type KMSOption = KeysOfUnion< NonNullable >; +export type KMSProviderType = Extract< + keyof KMSProviders, + 'aws' | 'gcp' | 'azure' | 'kmip' | 'local' +>; +export type KMSProviderName = T | `${T}:${string}`; +export type KMSTLSProviderType = KMSProviderType; +export type KMSTLSProviderName = KMSProviderName; -export interface KMSField { - name: KMSOption; +export interface KMSField { + name: KMSOption; label: string; type: 'password' | 'text' | 'textarea'; optional: boolean; - value: (autoEncryption: AutoEncryptionOptions) => string; - errorMessage?: (errors: ConnectionFormError[]) => string | undefined; + value: ( + autoEncryption: { kmsProviders?: KMSProviders }, + kmsProviderName: KMSProviderName + ) => string; + errorMessage?: ( + errors: ConnectionFormError[], + kmsProviderName: KMSProviderName + ) => string | undefined; state: | 'error' | 'none' @@ -42,8 +56,9 @@ const GCPFields: KMSField<'gcp'>[] = [ label: 'Service Account E-Mail', type: 'text', optional: false, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.gcp ?? empty)?.email ?? '', + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty)?.email ?? + '', state: 'none', description: 'The service account email to authenticate.', }, @@ -52,9 +67,9 @@ const GCPFields: KMSField<'gcp'>[] = [ label: 'Private Key', type: 'textarea', optional: false, - value: (autoEncryption) => + value: (autoEncryption, provider) => decayUnion( - autoEncryption?.kmsProviders?.gcp ?? empty + autoEncryption?.kmsProviders?.[provider] ?? empty )?.privateKey?.toString('base64') ?? '', state: 'none', description: 'A base64-encoded PKCS#8 private key.', @@ -64,8 +79,9 @@ const GCPFields: KMSField<'gcp'>[] = [ label: 'Endpoint', type: 'text', optional: true, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.gcp ?? empty)?.endpoint ?? '', + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty)?.endpoint ?? + '', state: 'none', description: 'A host with an optional port.', }, @@ -77,8 +93,8 @@ const AWSFields: KMSField<'aws'>[] = [ label: 'Access Key ID', type: 'text', optional: false, - value: (autoEncryption) => - autoEncryption?.kmsProviders?.aws?.accessKeyId ?? '', + value: (autoEncryption, provider) => + autoEncryption?.kmsProviders?.[provider]?.accessKeyId ?? '', state: 'none', description: 'The access key used for the AWS KMS provider.', }, @@ -87,8 +103,8 @@ const AWSFields: KMSField<'aws'>[] = [ label: 'Secret Access Key', type: 'password', optional: false, - value: (autoEncryption) => - autoEncryption?.kmsProviders?.aws?.secretAccessKey ?? '', + value: (autoEncryption, provider) => + autoEncryption?.kmsProviders?.[provider]?.secretAccessKey ?? '', state: 'none', description: 'The secret access key used for the AWS KMS provider.', }, @@ -97,8 +113,8 @@ const AWSFields: KMSField<'aws'>[] = [ label: 'Session Token', type: 'password', optional: true, - value: (autoEncryption) => - autoEncryption?.kmsProviders?.aws?.sessionToken ?? '', + value: (autoEncryption, provider) => + autoEncryption?.kmsProviders?.[provider]?.sessionToken ?? '', state: 'none', description: 'An optional AWS session token that will be used as the X-Amz-Security-Token header for AWS requests.', @@ -111,8 +127,9 @@ const AzureFields: KMSField<'azure'>[] = [ label: 'Tenant ID', type: 'text', optional: false, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.azure ?? empty)?.tenantId ?? '', + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty)?.tenantId ?? + '', state: 'none', description: 'The tenant ID identifies the organization for the account.', }, @@ -121,8 +138,9 @@ const AzureFields: KMSField<'azure'>[] = [ label: 'Client ID', type: 'text', optional: false, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.azure ?? empty)?.clientId ?? '', + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty)?.clientId ?? + '', state: 'none', description: 'The client ID to authenticate a registered application.', }, @@ -131,9 +149,9 @@ const AzureFields: KMSField<'azure'>[] = [ label: 'Client Secret', type: 'password', optional: false, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.azure ?? empty)?.clientSecret ?? - '', + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty) + ?.clientSecret ?? '', state: 'none', description: 'The client secret to authenticate a registered application.', }, @@ -142,8 +160,8 @@ const AzureFields: KMSField<'azure'>[] = [ label: 'Identity Platform Endpoint', type: 'text', optional: true, - value: (autoEncryption) => - decayUnion(autoEncryption?.kmsProviders?.azure ?? empty) + value: (autoEncryption, provider) => + decayUnion(autoEncryption?.kmsProviders?.[provider] ?? empty) ?.identityPlatformEndpoint ?? '', state: 'none', description: 'A host with an optional port.', @@ -156,8 +174,8 @@ const KMIPFields: KMSField<'kmip'>[] = [ label: 'Endpoint', type: 'text', optional: false, - value: (autoEncryption) => - autoEncryption?.kmsProviders?.kmip?.endpoint ?? '', + value: (autoEncryption, provider) => + autoEncryption?.kmsProviders?.[provider]?.endpoint ?? '', errorMessage: (errors) => errorMessageByFieldName(errors, 'kmip.endpoint'), state: (errors) => fieldNameHasError(errors, 'kmip.endpoint') ? 'error' : 'none', @@ -172,9 +190,10 @@ const LocalFields: KMSField<'local'>[] = [ label: 'Key', type: 'text', optional: false, - value: (autoEncryption) => - autoEncryption?.kmsProviders?.local?.key?.toString('base64') ?? '', - errorMessage: (errors) => errorMessageByFieldName(errors, 'local.key'), + value: (autoEncryption, provider) => + autoEncryption?.kmsProviders?.[provider]?.key?.toString('base64') ?? '', + errorMessage: (errors, provider) => + errorMessageByFieldName(errors, `${provider}.key`), state: (errors) => fieldNameHasError(errors, 'local.key') ? 'error' : 'none', description: diff --git a/packages/connection-form/src/utils/validation.ts b/packages/connection-form/src/utils/validation.ts index 7e1eed23026..42d8beb09d1 100644 --- a/packages/connection-form/src/utils/validation.ts +++ b/packages/connection-form/src/utils/validation.ts @@ -13,7 +13,9 @@ export type FieldName = | 'kerberosPrincipal' | 'keyVaultNamespace' | 'kmip.endpoint' + | `kmip:${string}.endpoint` | 'local.key' + | `local:${string}.key` | 'password' | 'schema' | 'proxyHostname' diff --git a/packages/connection-info/src/connection-secrets.spec.ts b/packages/connection-info/src/connection-secrets.spec.ts index 706408f7c44..3f635eebf06 100644 --- a/packages/connection-info/src/connection-secrets.spec.ts +++ b/packages/connection-info/src/connection-secrets.spec.ts @@ -197,45 +197,88 @@ describe('connection secrets', function () { secretAccessKey: 'secretAccessKey', sessionToken: 'sessionToken', }, + // @ts-expect-error multiple kms providers are supported in next driver release + 'aws:1': { + accessKeyId: 'accessKeyId', + secretAccessKey: 'secretAccessKey', + sessionToken: 'sessionToken', + }, local: { key: 'key', }, + 'local:1': { + key: 'key', + }, azure: { tenantId: 'tenantId', clientId: 'clientId', clientSecret: 'clientSecret', identityPlatformEndpoint: 'identityPlatformEndpoint', }, + 'azure:1': { + tenantId: 'tenantId', + clientId: 'clientId', + clientSecret: 'clientSecret', + identityPlatformEndpoint: 'identityPlatformEndpoint', + }, gcp: { email: 'email', privateKey: 'privateKey', endpoint: 'endpoint', }, + 'gcp:1': { + email: 'email', + privateKey: 'privateKey', + endpoint: 'endpoint', + }, kmip: { endpoint: 'endpoint', }, + 'kmip:1': { + endpoint: 'endpoint', + }, }, tlsOptions: { aws: { tlsCertificateKeyFile: 'file', tlsCertificateKeyFilePassword: 'pwd', }, + 'aws:1': { + tlsCertificateKeyFile: 'file', + tlsCertificateKeyFilePassword: 'pwd', + }, local: { tlsCertificateKeyFile: 'file', tlsCertificateKeyFilePassword: 'pwd', }, + 'local:1': { + tlsCertificateKeyFile: 'file', + tlsCertificateKeyFilePassword: 'pwd', + }, azure: { tlsCertificateKeyFile: 'file', tlsCertificateKeyFilePassword: 'pwd', }, + 'azure:1': { + tlsCertificateKeyFile: 'file', + tlsCertificateKeyFilePassword: 'pwd', + }, gcp: { tlsCertificateKeyFile: 'file', tlsCertificateKeyFilePassword: 'pwd', }, + 'gcp:1': { + tlsCertificateKeyFile: 'file', + tlsCertificateKeyFilePassword: 'pwd', + }, kmip: { tlsCertificateKeyFile: 'file', tlsCertificateKeyFilePassword: 'pwd', }, + 'kmip:1': { + tlsCertificateKeyFile: 'file', + tlsCertificateKeyFilePassword: 'pwd', + }, }, }, }, @@ -268,40 +311,70 @@ describe('connection secrets', function () { aws: { accessKeyId: 'accessKeyId', }, + 'aws:1': { + accessKeyId: 'accessKeyId', + }, azure: { tenantId: 'tenantId', clientId: 'clientId', identityPlatformEndpoint: 'identityPlatformEndpoint', }, + 'azure:1': { + tenantId: 'tenantId', + clientId: 'clientId', + identityPlatformEndpoint: 'identityPlatformEndpoint', + }, gcp: { email: 'email', endpoint: 'endpoint', }, + 'gcp:1': { + email: 'email', + endpoint: 'endpoint', + }, kmip: { endpoint: 'endpoint', }, + 'kmip:1': { + endpoint: 'endpoint', + }, }, tlsOptions: { aws: { tlsCertificateKeyFile: 'file', }, + 'aws:1': { + tlsCertificateKeyFile: 'file', + }, local: { tlsCertificateKeyFile: 'file', }, + 'local:1': { + tlsCertificateKeyFile: 'file', + }, azure: { tlsCertificateKeyFile: 'file', }, + 'azure:1': { + tlsCertificateKeyFile: 'file', + }, gcp: { tlsCertificateKeyFile: 'file', }, + 'gcp:1': { + tlsCertificateKeyFile: 'file', + }, kmip: { tlsCertificateKeyFile: 'file', }, + 'kmip:1': { + tlsCertificateKeyFile: 'file', + }, }, }, }, }, - } as ConnectionInfo); + }); expect(secrets).to.be.deep.equal({ awsSessionToken: 'sessionToken', @@ -317,35 +390,63 @@ describe('connection secrets', function () { secretAccessKey: 'secretAccessKey', sessionToken: 'sessionToken', }, + 'aws:1': { + secretAccessKey: 'secretAccessKey', + sessionToken: 'sessionToken', + }, local: { key: 'key', }, + 'local:1': { + key: 'key', + }, azure: { clientSecret: 'clientSecret', }, + 'azure:1': { + clientSecret: 'clientSecret', + }, gcp: { privateKey: 'privateKey', }, + 'gcp:1': { + privateKey: 'privateKey', + }, }, tlsOptions: { aws: { tlsCertificateKeyFilePassword: 'pwd', }, + 'aws:1': { + tlsCertificateKeyFilePassword: 'pwd', + }, local: { tlsCertificateKeyFilePassword: 'pwd', }, + 'local:1': { + tlsCertificateKeyFilePassword: 'pwd', + }, azure: { tlsCertificateKeyFilePassword: 'pwd', }, + 'azure:1': { + tlsCertificateKeyFilePassword: 'pwd', + }, gcp: { tlsCertificateKeyFilePassword: 'pwd', }, + 'gcp:1': { + tlsCertificateKeyFilePassword: 'pwd', + }, kmip: { tlsCertificateKeyFilePassword: 'pwd', }, + 'kmip:1': { + tlsCertificateKeyFilePassword: 'pwd', + }, }, }, - } as ConnectionSecrets); + }); const { connectionInfo: newConnectionInfoNoFle, secrets: secretsNoFle } = extractSecrets( diff --git a/packages/connection-info/src/connection-secrets.ts b/packages/connection-info/src/connection-secrets.ts index 41e491fe18e..e953106d40e 100644 --- a/packages/connection-info/src/connection-secrets.ts +++ b/packages/connection-info/src/connection-secrets.ts @@ -4,6 +4,7 @@ import ConnectionString, { } from 'mongodb-connection-string-url'; import type { ConnectionInfo } from './connection-info'; import type { + Document, MongoClientOptions, AuthMechanismProperties, AutoEncryptionOptions, @@ -153,21 +154,11 @@ export function extractSecrets(connectionInfo: Readonly): { if (connectionOptions.fleOptions?.autoEncryption) { const { autoEncryption } = connectionOptions.fleOptions; - const kmsProviders = ['aws', 'local', 'azure', 'gcp', 'kmip'] as const; - const secretPaths = [ - 'kmsProviders.aws.secretAccessKey', - 'kmsProviders.aws.sessionToken', - 'kmsProviders.local.key', - 'kmsProviders.azure.clientSecret', - 'kmsProviders.gcp.privateKey', - ...kmsProviders.map( - (p) => `tlsOptions.${p}.tlsCertificateKeyFilePassword` - ), - ]; - connectionOptions.fleOptions.autoEncryption = _.omit( - autoEncryption, - secretPaths - ); + const { + data: autoEncryptionWithoutSecrets, + secrets: autoEncryptionSecrets, + } = extractAutoEncryptionSecrets(autoEncryption); + connectionOptions.fleOptions.autoEncryption = autoEncryptionWithoutSecrets; // Remove potentially empty KMS provider options objects, // since libmongocrypt assumes that, if a KMS provider options // object is present but empty, the caller will be able @@ -178,7 +169,7 @@ export function extractSecrets(connectionInfo: Readonly): { connectionOptions.fleOptions.autoEncryption.kmsProviders ); if (connectionOptions.fleOptions.storeCredentials) { - secrets.autoEncryption = _.pick(autoEncryption, secretPaths); + secrets.autoEncryption = autoEncryptionSecrets; } } @@ -190,10 +181,67 @@ export function extractSecrets(connectionInfo: Readonly): { return { connectionInfo: connectionInfoWithoutSecrets, secrets }; } -function omitPropertiesWhoseValuesAreEmptyObjects< - T extends Record> ->(obj: T): Partial { +function omitPropertiesWhoseValuesAreEmptyObjects(obj: T) { return Object.fromEntries( Object.entries(obj).filter(([, value]) => Object.keys(value).length > 0) ) as Partial; } + +const KMS_PROVIDER_SECRET_PATHS = { + local: ['key'], + aws: ['secretAccessKey', 'sessionToken'], + azure: ['clientSecret'], + gcp: ['privateKey'], + // kmip does not have any kms secrets, but tlsOptions + kmip: undefined, +}; + +type AutoEncryptionKMSAndTLSOptions = Partial< + Pick +>; + +function extractAutoEncryptionSecrets(data: AutoEncryptionOptions): { + data: AutoEncryptionOptions & AutoEncryptionKMSAndTLSOptions; + secrets: AutoEncryptionKMSAndTLSOptions; +} { + const secrets: AutoEncryptionKMSAndTLSOptions = {}; + // Secrets are stored in a kmsProviders and tlsOptions + const { kmsProviders, tlsOptions, ...result } = data; + + for (const kmsProviderName of Object.keys(kmsProviders ?? {})) { + const key = kmsProviderName.split(':')[0] as + | keyof typeof KMS_PROVIDER_SECRET_PATHS + | undefined; + if (!key) { + continue; + } + + const data = (kmsProviders ?? {})[ + kmsProviderName as keyof typeof kmsProviders + ]; + const secretPaths = KMS_PROVIDER_SECRET_PATHS[key]; + if (!secretPaths) { + continue; + } + _.set( + secrets, + `kmsProviders.${kmsProviderName}`, + _.pick(data, secretPaths) + ); + for (const secretKey of secretPaths) { + _.unset(data, secretKey); + } + } + + for (const key of Object.keys(tlsOptions ?? {})) { + const data = (tlsOptions ?? {})[key]; + if (data?.tlsCertificateKeyFilePassword) { + _.set(secrets, `tlsOptions.${key}`, { + tlsCertificateKeyFilePassword: data.tlsCertificateKeyFilePassword, + }); + delete data.tlsCertificateKeyFilePassword; + } + } + + return { data: _.merge(result, { kmsProviders, tlsOptions }), secrets }; +} diff --git a/packages/connection-storage/src/compass-main-connection-storage.spec.ts b/packages/connection-storage/src/compass-main-connection-storage.spec.ts index 53bb7aa7365..00948063deb 100644 --- a/packages/connection-storage/src/compass-main-connection-storage.spec.ts +++ b/packages/connection-storage/src/compass-main-connection-storage.spec.ts @@ -901,14 +901,20 @@ describe('ConnectionStorage', function () { local: { key: 'my-key', }, + 'local:2': { + key: 'my-key-2', + }, + kmip: { + endpoint: 'kmip://localhost:5696', + }, }, }, }, }, }; - // // Stub encryptSecrets so that we do not call electron.safeStorage.encrypt - // // and make assertions on that. + // Stub encryptSecrets so that we do not call electron.safeStorage.encrypt + // and make assertions on that. const encryptSecretsStub = Sinon.stub( connectionStorage, 'encryptSecrets' as any @@ -918,7 +924,11 @@ describe('ConnectionStorage', function () { const expectedConnection = await readConnection(tmpDir, id); connectionInfo.connectionOptions.fleOptions.autoEncryption.kmsProviders = - {} as any; + { + kmip: { + endpoint: 'kmip://localhost:5696', + }, + } as any; expect(expectedConnection).to.deep.equal({ _id: connectionInfo.id, connectionInfo, @@ -946,6 +956,12 @@ describe('ConnectionStorage', function () { local: { key: 'my-key', }, + 'local:2': { + key: 'my-key-2', + }, + kmip: { + endpoint: 'kmip://localhost:5696', + }, }, }, }, @@ -963,7 +979,11 @@ describe('ConnectionStorage', function () { const expectedConnection = await readConnection(tmpDir, id); connectionInfo.connectionOptions.fleOptions.autoEncryption.kmsProviders = - {} as any; + { + kmip: { + endpoint: 'kmip://localhost:5696', + }, + } as any; expect(expectedConnection).to.deep.equal({ _id: connectionInfo.id, connectionInfo, @@ -981,6 +1001,9 @@ describe('ConnectionStorage', function () { local: { key: 'my-key', }, + 'local:2': { + key: 'my-key-2', + }, }, }, }); diff --git a/packages/databases-collections/src/components/collection-fields/fle2-fields.jsx b/packages/databases-collections/src/components/collection-fields/fle2-fields.jsx index b739a21f673..b3639bb0180 100644 --- a/packages/databases-collections/src/components/collection-fields/fle2-fields.jsx +++ b/packages/databases-collections/src/components/collection-fields/fle2-fields.jsx @@ -12,7 +12,7 @@ import { CodemirrorMultilineEditor } from '@mongodb-js/compass-editor'; const HELP_URL_FLE2 = 'https://dochub.mongodb.org/core/rqe-encrypted-fields'; -const kmsProviderNames = { +const kmsProviderTypes = { local: 'Local', gcp: 'GCP', azure: 'Azure', @@ -20,6 +20,19 @@ const kmsProviderNames = { kmip: 'KMIP', }; +/** + * Get the friendly provider name. + * @param {string} provider + * @returns string + */ +function getKmsProviderName(provider) { + const parts = provider.split(':'); + if (parts.length === 1) { + return kmsProviderTypes[parts[0]]; + } + return `${kmsProviderTypes[parts[0]]} ${parts[1]}`; +} + export const ENCRYPTED_FIELDS_PLACEHOLDER = `{ fields: [ { @@ -50,6 +63,10 @@ const keyEncryptionKeyTemplate = { kmip: '/* No KeyEncryptionKey required */\n{}', }; +function getKMSProviderKeyTemplate(provider) { + return keyEncryptionKeyTemplate[provider.split(':')[0]]; +} + const queryableEncryptedFieldsEditorId = 'queryable-encrypted-fields-editor-id'; const keyEncryptionKeyEditorId = 'key-encryption-key-editor-id'; @@ -107,13 +124,13 @@ function FLE2Fields({ ev.preventDefault(); onChangeField( ['fle2.kmsProvider', 'fle2.keyEncryptionKey'], - [ev.target.value, keyEncryptionKeyTemplate[ev.target.value]] + [ev.target.value, getKMSProviderKeyTemplate(ev.target.value)] ); }} id="createcollection-radioboxgroup" value={fle2.kmsProvider} > - {(configuredKMSProviders || Object.keys(kmsProviderNames)).map( + {(configuredKMSProviders || Object.keys(kmsProviderTypes)).map( (provider) => { return ( - {kmsProviderNames[provider]} + {getKmsProviderName(provider)} ); } diff --git a/packages/databases-collections/src/modules/create-namespace.ts b/packages/databases-collections/src/modules/create-namespace.ts index d7fefce7185..d36b2c7a382 100644 --- a/packages/databases-collections/src/modules/create-namespace.ts +++ b/packages/databases-collections/src/modules/create-namespace.ts @@ -168,13 +168,18 @@ const reducer: Reducer = ( state = INITIAL_STATE, action ) => { - if ( - isAction(action, CreateNamespaceActionTypes.Reset) || - isAction(action, CreateNamespaceActionTypes.Close) - ) { + if (isAction(action, CreateNamespaceActionTypes.Reset)) { return { ...INITIAL_STATE }; } + if (isAction(action, CreateNamespaceActionTypes.Close)) { + // When a modal is closed, we should not clear the connectionMetaData + return { + ...INITIAL_STATE, + connectionMetaData: state.connectionMetaData, + }; + } + if (isAction(action, CreateNamespaceActionTypes.Open)) { return { ...state, From 86f6d0556ea26d6148ee76f65f82d58f1deb4ead Mon Sep 17 00:00:00 2001 From: Rhys Date: Mon, 9 Sep 2024 12:50:06 -0400 Subject: [PATCH 08/57] chore: update readme with packages overview (#6212) --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 8c041e00191..b05d0667a2c 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,7 @@ Is there anything else you’d like to see in Compass? Let us know by submitting - [**@mongodb-js/compass-logging**](packages/compass-logging): Shared helpers for logging in Compass packages - [**@mongodb-js/compass-maybe-protect-connection-string**](packages/compass-maybe-protect-connection-string): Utility for protecting connection strings if requested - [**@mongodb-js/compass-settings**](packages/compass-settings): Settings for compass +- [**@mongodb-js/compass-telemetry**](packages/compass-telemetry): Compass telemetry - [**@mongodb-js/compass-test-server**](packages/compass-test-server): Wrapper around mongodb-runner to manage test servers for Compass - [**@mongodb-js/compass-user-data**](packages/compass-user-data): undefined - [**@mongodb-js/compass-utils**](packages/compass-utils): Utilities for MongoDB Compass Development @@ -62,6 +63,7 @@ Is there anything else you’d like to see in Compass? Let us know by submitting - [**@mongodb-js/databases-collections-list**](packages/databases-collections-list): List view for the databases and collections - [**@mongodb-js/explain-plan-helper**](packages/explain-plan-helper): Explain plan utility methods for MongoDB Compass - [**@mongodb-js/my-queries-storage**](packages/my-queries-storage): Saved aggregations and queries storage +- [**@mongodb-js/reflux-state-mixin**](packages/reflux-state-mixin): Reflux stores mixin adding 'state' syntax similar to React components - [**bson-transpilers**](packages/bson-transpilers): Source to source compilers using ANTLR - [**compass-e2e-tests**](packages/compass-e2e-tests): E2E test suite for Compass app that follows smoke tests / feature testing matrix - [**compass-preferences-model**](packages/compass-preferences-model): Compass preferences model @@ -83,6 +85,7 @@ Is there anything else you’d like to see in Compass? Let us know by submitting - [**@mongodb-js/eslint-plugin-compass**](configs/eslint-plugin-compass): Custom eslint rules for Compass monorepo - [**@mongodb-js/mocha-config-compass**](configs/mocha-config-compass): Shared mocha mocha configuration for Compass packages - [**@mongodb-js/prettier-config-compass**](configs/prettier-config-compass): Shared Compass prettier configuration +- [**@mongodb-js/testing-library-compass**](configs/testing-library-compass): Compass unit testing utils - [**@mongodb-js/tsconfig-compass**](configs/tsconfig-compass): Shared Compass Typescript configuration - [**@mongodb-js/webpack-config-compass**](configs/webpack-config-compass): Shared webpack configuration for Compass application and plugins From 7be3eae26fb97b72561c73d043d0505e1992739c Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Tue, 10 Sep 2024 09:14:26 +0200 Subject: [PATCH 09/57] chore(connection-info): rename clusterId and clusterType to more appropriate metricsId and metricsType COMPASS-8248 (#6211) chore(connection-info): rename clusterId and clusterType to more appropriate metricsId and metricsType --- .../src/hooks/use-connection-supports.spec.ts | 20 ++++++++-------- .../src/hooks/use-connection-supports.ts | 4 ++-- packages/compass-schema/src/utils.spec.ts | 24 +++++++++---------- packages/compass-schema/src/utils.ts | 12 +++++----- .../src/connection-storage.spec.ts | 4 ++-- .../compass-web/src/connection-storage.tsx | 15 ++++++------ .../connection-info/src/connection-info.ts | 18 ++++++++++++-- 7 files changed, 55 insertions(+), 42 deletions(-) diff --git a/packages/compass-connections/src/hooks/use-connection-supports.spec.ts b/packages/compass-connections/src/hooks/use-connection-supports.spec.ts index ad11e0270ee..846b386f5b4 100644 --- a/packages/compass-connections/src/hooks/use-connection-supports.spec.ts +++ b/packages/compass-connections/src/hooks/use-connection-supports.spec.ts @@ -20,8 +20,8 @@ const mockConnections: ConnectionInfo[] = [ projectId: 'projectId', clusterName: 'clusterName', regionalBaseUrl: 'https://example.com', - clusterId: 'clusterId', - clusterType: 'host', + metricsId: 'metricsId', + metricsType: 'host', instanceSize: 'M10', }, }, @@ -35,8 +35,8 @@ const mockConnections: ConnectionInfo[] = [ projectId: 'projectId', clusterName: 'clusterName', regionalBaseUrl: 'https://example.com', - clusterId: 'clusterId', - clusterType: 'replicaSet', + metricsId: 'metricsId', + metricsType: 'replicaSet', instanceSize: 'M0', }, }, @@ -50,8 +50,8 @@ const mockConnections: ConnectionInfo[] = [ projectId: 'projectId', clusterName: 'clusterName', regionalBaseUrl: 'https://example.com', - clusterId: 'clusterId', - clusterType: 'serverless', + metricsId: 'metricsId', + metricsType: 'serverless', instanceSize: 'SERVERLESS_V2', }, }, @@ -65,8 +65,8 @@ const mockConnections: ConnectionInfo[] = [ projectId: 'projectId', clusterName: 'clusterName', regionalBaseUrl: 'https://example.com', - clusterId: 'clusterId', - clusterType: 'replicaSet', + metricsId: 'metricsId', + metricsType: 'replicaSet', instanceSize: 'M10', }, }, @@ -80,8 +80,8 @@ const mockConnections: ConnectionInfo[] = [ projectId: 'projectId', clusterName: 'clusterName', regionalBaseUrl: 'https://example.com', - clusterId: 'clusterId', - clusterType: 'cluster', + metricsId: 'metricsId', + metricsType: 'cluster', instanceSize: 'M10', }, }, diff --git a/packages/compass-connections/src/hooks/use-connection-supports.ts b/packages/compass-connections/src/hooks/use-connection-supports.ts index 83fa92a2f5a..2a1db5a294c 100644 --- a/packages/compass-connections/src/hooks/use-connection-supports.ts +++ b/packages/compass-connections/src/hooks/use-connection-supports.ts @@ -19,10 +19,10 @@ function supportsRollingIndexCreation(connection: ConnectionState) { return false; } - const { clusterType, instanceSize } = atlasMetadata; + const { metricsType, instanceSize } = atlasMetadata; return ( !isFreeOrSharedTierCluster(instanceSize) && - (clusterType === 'cluster' || clusterType === 'replicaSet') + (metricsType === 'cluster' || metricsType === 'replicaSet') ); } export function useConnectionSupports( diff --git a/packages/compass-schema/src/utils.spec.ts b/packages/compass-schema/src/utils.spec.ts index 6c069213d83..c5b1ec1fa82 100644 --- a/packages/compass-schema/src/utils.spec.ts +++ b/packages/compass-schema/src/utils.spec.ts @@ -6,8 +6,8 @@ describe('compass-schema utils', function () { it('returns the correct link for a serverless cluster', function () { expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123456', - clusterType: 'serverless', + metricsId: '123456', + metricsType: 'serverless', clusterName: 'Cluster0', }) ).to.equal('#/serverless/advisor/Cluster0/createIndexes'); @@ -15,24 +15,24 @@ describe('compass-schema utils', function () { it('returns the correct link for other clusters', function () { expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123456', - clusterType: 'replicaSet', + metricsId: '123456', + metricsType: 'replicaSet', clusterName: 'Cluster0', }) ).to.equal('#/metrics/replicaSet/123456/advisor'); expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123456', - clusterType: 'cluster', + metricsId: '123456', + metricsType: 'cluster', clusterName: 'Cluster0', }) ).to.equal('#/metrics/cluster/123456/advisor'); expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123456', - clusterType: 'host', + metricsId: '123456', + metricsType: 'host', clusterName: 'Cluster0', }) ).to.equal('#/metrics/host/123456/advisor'); @@ -40,8 +40,8 @@ describe('compass-schema utils', function () { it('encodes the parameters', function () { expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123456', - clusterType: 'serverless', + metricsId: '123456', + metricsType: 'serverless', clusterName: 'Cluster Something', }), 'encodes cluster name' @@ -49,8 +49,8 @@ describe('compass-schema utils', function () { expect( getAtlasPerformanceAdvisorLink({ - clusterId: '123 456', - clusterType: 'replica#Set' as any, + metricsId: '123 456', + metricsType: 'replica#Set' as any, clusterName: 'Cluster Something', }), 'encodes cluster id and cluster type' diff --git a/packages/compass-schema/src/utils.ts b/packages/compass-schema/src/utils.ts index 35b32b04e03..a1bfe2e6c67 100644 --- a/packages/compass-schema/src/utils.ts +++ b/packages/compass-schema/src/utils.ts @@ -1,16 +1,16 @@ import type { AtlasClusterMetadata } from '@mongodb-js/connection-storage/renderer'; export function getAtlasPerformanceAdvisorLink({ - clusterId, - clusterType, + metricsId, + metricsType, clusterName, -}: Pick) { - if (clusterType === 'serverless') { +}: Pick) { + if (metricsType === 'serverless') { return `#/serverless/advisor/${encodeURIComponent( clusterName )}/createIndexes`; } - return `#/metrics/${encodeURIComponent(clusterType)}/${encodeURIComponent( - clusterId + return `#/metrics/${encodeURIComponent(metricsType)}/${encodeURIComponent( + metricsId )}/advisor`; } diff --git a/packages/compass-web/src/connection-storage.spec.ts b/packages/compass-web/src/connection-storage.spec.ts index 79ec7ce0557..b735caa7b40 100644 --- a/packages/compass-web/src/connection-storage.spec.ts +++ b/packages/compass-web/src/connection-storage.spec.ts @@ -155,9 +155,9 @@ describe('buildConnectionInfoFromClusterDescription', function () { .deep.eq({ orgId: '123', projectId: 'abc', - clusterId: type === 'serverless' ? `Cluster0-serverless` : '123abc', + metricsId: type === 'serverless' ? `Cluster0-serverless` : '123abc', clusterName: `Cluster0-${type}`, - clusterType: type === 'sharded' ? 'cluster' : type, + metricsType: type === 'sharded' ? 'cluster' : type, instanceSize: expectedInstanceSize, regionalBaseUrl: 'https://example.com', }); diff --git a/packages/compass-web/src/connection-storage.tsx b/packages/compass-web/src/connection-storage.tsx index e1929103b2b..486f0f55412 100644 --- a/packages/compass-web/src/connection-storage.tsx +++ b/packages/compass-web/src/connection-storage.tsx @@ -86,16 +86,15 @@ function isSharded(clusterDescription: ClusterDescription) { ); } -// eslint-disable-next-line @typescript-eslint/no-unused-vars function getMetricsIdAndType( clusterDescription: ClusterDescription, deploymentItem?: ReplicaSetDeploymentItem | ShardingDeploymentItem ): { - clusterId: string; - clusterType: 'serverless' | 'replicaSet' | 'cluster'; + metricsId: string; + metricsType: 'serverless' | 'replicaSet' | 'cluster'; } { if (isServerless(clusterDescription)) { - return { clusterId: clusterDescription.name, clusterType: 'serverless' }; + return { metricsId: clusterDescription.name, metricsType: 'serverless' }; } if (!deploymentItem) { @@ -105,8 +104,8 @@ function getMetricsIdAndType( } return { - clusterId: deploymentItem.state.clusterId, - clusterType: isSharded(clusterDescription) ? 'cluster' : 'replicaSet', + metricsId: deploymentItem.state.clusterId, + metricsType: isSharded(clusterDescription) ? 'cluster' : 'replicaSet', }; } @@ -246,12 +245,12 @@ class AtlasCloudConnectionStorage .map(async (description) => { // Even though nds/clusters will list serverless clusters, to get // the regional description we need to change the url - const clusterType = isServerless(description) + const clusterDescriptionType = isServerless(description) ? 'serverless' : 'clusters'; const res = await this.atlasService.authenticatedFetch( this.atlasService.cloudEndpoint( - `nds/${clusterType}/${this.projectId}/${description.name}/regional/clusterDescription` + `nds/${clusterDescriptionType}/${this.projectId}/${description.name}/regional/clusterDescription` ) ); return await (res.json() as Promise); diff --git a/packages/connection-info/src/connection-info.ts b/packages/connection-info/src/connection-info.ts index 9a0e4d81fb7..32b1626572a 100644 --- a/packages/connection-info/src/connection-info.ts +++ b/packages/connection-info/src/connection-info.ts @@ -8,9 +8,23 @@ export interface AtlasClusterMetadata { * https://www.mongodb.com/docs/atlas/api/atlas-admin-api-ref/#project-id */ projectId: string; - clusterId: string; + /** + * Cluster name, unique inside same project + */ clusterName: string; - clusterType: 'host' | 'replicaSet' | 'cluster' | 'serverless'; + /** + * A special id and type that are only relevant in context of mms metrics + * features. These are deployment items props (with a special exception for + * serverless, where id is just name, and type is `serverless` that doesn't + * make sense in context of deployments), not cluster description props. + + * https://github.com/10gen/mms/blob/43b0049a85196b44e465feb9b96ef942d6f2c8f4/client/js/legacy/core/models/deployment + */ + metricsId: string; + metricsType: 'host' | 'replicaSet' | 'cluster' | 'serverless'; + /** + * Atlas API base url to be used when connecing to a regionalized cluster + */ regionalBaseUrl: string; /* * At the time of writing these are the possible instance sizes. If we include From 1e040df166471be8b31f040b84896dec596dbcb6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 07:21:22 +0000 Subject: [PATCH 10/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6216) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index a01fc3005aa..4b5a1a9d7c1 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Mon Sep 09 2024. +This document was automatically generated on Tue Sep 10 2024. ## List of dependencies From bea9599645b6452a1bb4b28e3210dc63b698fe90 Mon Sep 17 00:00:00 2001 From: Maurizio Casimirri Date: Tue, 10 Sep 2024 10:01:20 +0200 Subject: [PATCH 11/57] chore: improve types and documentation for telemetry (#6176) * chore: improve types and documentation for telemetry * fix test and mixed up branches * add is_favorite and document identify traits * improve modeForTelemetry type * remove unnecessary as const --- .../stage-editor/stage-editor.spec.tsx | 2 +- .../components/stage-editor/stage-editor.tsx | 2 +- .../src/stores/connections-store-redux.ts | 3 - .../compass-crud/src/stores/crud-store.ts | 2 +- .../compass-e2e-tests/tests/logging.test.ts | 1 - .../src/components/modal.tsx | 88 +- .../src/modules/import.ts | 4 +- packages/compass-telemetry/src/index.ts | 2 +- .../compass-telemetry/src/telemetry-events.ts | 1367 ++++++++++++++--- packages/compass-telemetry/src/types.ts | 12 +- packages/compass/src/main/application.ts | 4 +- packages/compass/src/main/telemetry.ts | 16 +- .../src/items-grid.tsx | 2 +- 13 files changed, 1219 insertions(+), 286 deletions(-) diff --git a/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx b/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx index 809a399f7e9..69f08653c39 100644 --- a/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx @@ -23,7 +23,7 @@ describe('StageEditor [Component]', function () { syntaxError={null} serverError={null} num_stages={0} - editor_view_type="" + editor_view_type="text" /> ); }); diff --git a/packages/compass-aggregations/src/components/stage-editor/stage-editor.tsx b/packages/compass-aggregations/src/components/stage-editor/stage-editor.tsx index 6ec3bb581ea..1c4745e5493 100644 --- a/packages/compass-aggregations/src/components/stage-editor/stage-editor.tsx +++ b/packages/compass-aggregations/src/components/stage-editor/stage-editor.tsx @@ -77,7 +77,7 @@ type StageEditorProps = { syntaxError: PipelineParserError | null; serverError: MongoServerError | null; num_stages: number; - editor_view_type: string; + editor_view_type: 'text' | 'stage' | 'focus'; className?: string; onChange: (index: number, value: string) => void; editorRef?: React.Ref; diff --git a/packages/compass-connections/src/stores/connections-store-redux.ts b/packages/compass-connections/src/stores/connections-store-redux.ts index 9e8e6850371..308e59768b6 100644 --- a/packages/compass-connections/src/stores/connections-store-redux.ts +++ b/packages/compass-connections/src/stores/connections-store-redux.ts @@ -1521,9 +1521,6 @@ export const connect = ( 'Connection Attempt', { is_favorite: connectionInfo.savedConnectionType === 'favorite', - is_recent: - !!connectionInfo.lastUsed && - connectionInfo.savedConnectionType !== 'favorite', is_new: isNewConnection(getState(), connectionInfo.id), }, connectionInfo diff --git a/packages/compass-crud/src/stores/crud-store.ts b/packages/compass-crud/src/stores/crud-store.ts index 1c2ab528d3e..995959004ab 100644 --- a/packages/compass-crud/src/stores/crud-store.ts +++ b/packages/compass-crud/src/stores/crud-store.ts @@ -489,7 +489,7 @@ class CrudStoreImpl * to update if the labels change at some point. */ modeForTelemetry() { - return this.state.view.toLowerCase(); + return this.state.view.toLowerCase() as Lowercase; } /** diff --git a/packages/compass-e2e-tests/tests/logging.test.ts b/packages/compass-e2e-tests/tests/logging.test.ts index d86cfaeaaf1..6cb353bc653 100644 --- a/packages/compass-e2e-tests/tests/logging.test.ts +++ b/packages/compass-e2e-tests/tests/logging.test.ts @@ -89,7 +89,6 @@ describe('Logging and Telemetry integration', function () { .events() .find((entry) => entry.event === 'Connection Attempt'); expect(connectionAttempt.properties.is_favorite).to.equal(false); - expect(connectionAttempt.properties.is_recent).to.equal(false); expect(connectionAttempt.properties.is_new).to.equal(true); }); diff --git a/packages/compass-export-to-language/src/components/modal.tsx b/packages/compass-export-to-language/src/components/modal.tsx index 04ca4fb9e3c..64bd87bad4e 100644 --- a/packages/compass-export-to-language/src/components/modal.tsx +++ b/packages/compass-export-to-language/src/components/modal.tsx @@ -146,24 +146,25 @@ const ExportToLanguageModal: React.FunctionComponent< const [wasOpen, setWasOpen] = useState(false); useEffect(() => { - const trackingEvent = - mode === 'Update Query' - ? 'Update Export Opened' - : mode === 'Delete Query' - ? 'Delete Export Opened' - : mode === 'Query' - ? 'Query Export Opened' - : 'Aggregation Export Opened'; - if (modalOpen && !wasOpen) { const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); - track( - trackingEvent, - { - ...stageCountForTelemetry(inputExpression), - }, - connectionInfo - ); + + if (mode === 'Query') { + track('Query Export Opened', {}, connectionInfo); + } else if (mode === 'Delete Query') { + track('Delete Export Opened', {}, connectionInfo); + } else if (mode === 'Update Query') { + track('Update Export Opened', {}, connectionInfo); + } else if (mode === 'Pipeline') { + track( + 'Aggregation Export Opened', + { + ...stageCountForTelemetry(inputExpression), + }, + connectionInfo + ); + } + track('Screen', { name: 'export_to_language_modal' }, connectionInfo); } @@ -171,26 +172,41 @@ const ExportToLanguageModal: React.FunctionComponent< }, [modalOpen, wasOpen, mode, inputExpression, track, connectionInfoAccess]); const trackCopiedOutput = useCallback(() => { - const trackingEvent = - mode === 'Update Query' - ? 'Update Exported' - : mode === 'Delete Query' - ? 'Delete Exported' - : mode === 'Query' - ? 'Query Exported' - : 'Aggregation Exported'; - - track( - trackingEvent, - { - language: outputLanguage, - with_import_statements: includeImports, - with_drivers_syntax: includeDrivers, - with_builders: useBuilders, - ...stageCountForTelemetry(inputExpression), - }, - connectionInfoAccess.getCurrentConnectionInfo() - ); + const commonProps = { + language: outputLanguage, + with_import_statements: includeImports, + with_drivers_syntax: includeDrivers, + with_builders: useBuilders, + }; + + if (mode === 'Update Query') { + track( + 'Update Exported', + commonProps, + connectionInfoAccess.getCurrentConnectionInfo() + ); + } else if (mode === 'Delete Query') { + track( + 'Delete Exported', + commonProps, + connectionInfoAccess.getCurrentConnectionInfo() + ); + } else if (mode === 'Query') { + track( + 'Query Exported', + commonProps, + connectionInfoAccess.getCurrentConnectionInfo() + ); + } else if (mode === 'Pipeline') { + track( + 'Aggregation Exported', + { + ...commonProps, + ...stageCountForTelemetry(inputExpression), + }, + connectionInfoAccess.getCurrentConnectionInfo() + ); + } }, [ track, connectionInfoAccess, diff --git a/packages/compass-import-export/src/modules/import.ts b/packages/compass-import-export/src/modules/import.ts index e5b3983e804..4ea352386c3 100644 --- a/packages/compass-import-export/src/modules/import.ts +++ b/packages/compass-import-export/src/modules/import.ts @@ -358,7 +358,7 @@ export const startImport = (): ImportThunkAction> => { file_type: fileType, all_fields: exclude.length === 0, stop_on_error_selected: stopOnErrors, - number_of_docs: err.result.docsWritten, + number_of_docs: err.result?.docsWritten, success: !err, aborted: abortSignal.aborted, ignore_empty_strings: fileType === 'csv' ? ignoreBlanks : undefined, @@ -369,7 +369,7 @@ export const startImport = (): ImportThunkAction> => { log.error(mongoLogId(1001000081), 'Import', 'Import failed', { ns, errorLogFilePath, - docsWritten: err.result.docsWritten, + docsWritten: err.result?.docsWritten, error: err.message, }); debug('Error while importing:', err.stack); diff --git a/packages/compass-telemetry/src/index.ts b/packages/compass-telemetry/src/index.ts index 9d5667bdfca..dc2bd7f9bcc 100644 --- a/packages/compass-telemetry/src/index.ts +++ b/packages/compass-telemetry/src/index.ts @@ -1,3 +1,3 @@ export { createIpcTrack, createIpcSendTrack } from './ipc-track'; export type { TelemetryServiceOptions } from './generic-track'; -export type { TrackFunction } from './types'; +export type { TrackFunction, IdentifyTraits } from './types'; diff --git a/packages/compass-telemetry/src/telemetry-events.ts b/packages/compass-telemetry/src/telemetry-events.ts index 12797c446e0..8cd42a0733a 100644 --- a/packages/compass-telemetry/src/telemetry-events.ts +++ b/packages/compass-telemetry/src/telemetry-events.ts @@ -1,3 +1,80 @@ +export type IdentifyTraits = { + /** + * Shortened version number (e.g., '1.29'). + */ + compass_version: string; + + /** + * The full version of the Compass application, including additional identifiers + * such as build metadata or pre-release tags (e.g., '1.29.0-beta.1'). + */ + compass_full_version: string; + + /** + * The distribution of Compass being used. + */ + compass_distribution: 'compass' | 'compass-readonly' | 'compass-isolated'; + + /** + * The release channel of Compass. + * - 'stable' for the general release. + * - 'beta' for pre-release versions intended for testing. + * - 'dev' for development versions only distributed internally. + */ + compass_channel: 'stable' | 'beta' | 'dev'; + + /** + * The platform on which Compass is running, derived from Node.js `os.platform()`. + * Corresponds to the operating system (e.g., 'darwin' for macOS, 'win32' for Windows, 'linux' for Linux). + */ + platform: string; + + /** + * The architecture of the system's processor, derived from Node.js `os.arch()`. + * 'x64' for 64-bit processors and 'arm' for ARM processors. + */ + arch: string; + + /** + * The type of operating system, including specific operating system + * names or types (e.g., 'Linux', 'Windows_NT', 'Darwin'). + */ + os_type?: string; + + /** + * Detailed kernel or system version information. + * Example: 'Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64'. + */ + os_version?: string; + + /** + * The architecture of the operating system, if available, which might be more specific + * than the system's processor architecture (e.g., 'x86_64' for 64-bit architecture). + */ + os_arch?: string; + + /** + * The release identifier of the operating system. + * This can provide additional details about the operating system release or + * version (e.g. the kernel version for a specific macOS release). + */ + os_release?: string; + + /** + * The Linux distribution name, if running on a Linux-based operating system, + * derived by reading from `/etc/os-release`. + * Examples include 'ubuntu', 'debian', or 'rhel'. + */ + os_linux_dist?: string; + + /** + * The version of the Linux distribution, if running on a Linux-based operating system, + * derived by reading from `/etc/os-release`. + * Examples include '20.04' for Ubuntu or '10' for Debian. + */ + os_linux_release?: string; +}; + /** * Events that are connection scoped are associated with one connection. */ @@ -26,27 +103,37 @@ type AtlasSignInSuccessEvent = { }; /** - * This event is fired when user failed to sign in to their Atlas account + * This event is fired when user failed to sign in to their Atlas account. * * @category Atlas */ type AtlasSignInErrorEvent = { name: 'Atlas Sign In Error'; - payload: { error: string }; + payload: { + /** + * The error message reported on sign in. + */ + error: string; + }; }; /** - * This event is fired when user signed out from their Atlas account + * This event is fired when user signed out from their Atlas account. * * @category Atlas */ type AtlasSignOutEvent = { name: 'Atlas Sign Out'; - payload: { auid: string }; + payload: { + /** + * The id of the atlas user who signed out. + */ + auid: string; + }; }; /** - * This event is fired when user selects a use case from the aggregation panel + * This event is fired when user selects a use case from the aggregation panel. * * @category Aggregation Builder */ @@ -54,49 +141,88 @@ type AggregationUseCaseAddedEvent = ConnectionScoped<{ name: 'Aggregation Use Case Added'; payload: { /** - * Specifies if the use case was added via drag and drop + * Specifies if the use case was added via drag and drop. */ drag_and_drop?: boolean; + /** + * The name of the stage added. + */ stage_name?: string; }; }>; /** - * This event is fired when user adds/remove a stage or changes the stage name in the stage editor view + * This event is fired when user adds/remove a stage or changes the stage name + * in the stage editor view. * * @category Aggregation Builder */ type AggregationEditedEvent = ConnectionScoped<{ name: 'Aggregation Edited'; payload: { - num_stages?: any | number; - editor_view_type?: string | 'stage' | 'text' | 'focus'; + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages?: number; + + /** + * The type of view used to edit the aggregation. + */ + editor_view_type?: 'stage' | 'text' | 'focus'; + + /** + * The index of the stage being edited. + */ stage_index?: number; - stage_action?: string; + + /** + * The edit action being performed for stage and focus mode. + */ + stage_action?: + | 'stage_content_changed' + | 'stage_renamed' + | 'stage_added' + | 'stage_deleted' + | 'stage_reordered' + | 'stage_added'; + + /** + * The name of the stage edited. + */ stage_name?: string | null; }; }>; /** - * This event is fired when user runs the aggregation + * This event is fired when user runs the aggregation. * * @category Aggregation Builder */ type AggregationExecutedEvent = ConnectionScoped<{ name: 'Aggregation Executed'; - payload: { num_stages: number; editor_view_type: 'stage' | 'text' | 'focus' }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + + /** + * The type of editor view from which the aggregation has been executed. + */ + editor_view_type: 'stage' | 'text' | 'focus'; + }; }>; /** - * This event is fired when a user cancel a running aggregation + * This event is fired when a user cancel a running aggregation. * * @category Aggregation Builder */ type AggregationCanceledEvent = ConnectionScoped<{ name: 'Aggregation Canceled'; - payload: { - // - }; + payload: Record; }>; /** @@ -107,6 +233,9 @@ type AggregationCanceledEvent = ConnectionScoped<{ type AggregationTimedOutEvent = ConnectionScoped<{ name: 'Aggregation Timed Out'; payload: { + /** + * The max_time_ms setting of the aggregation timed out. + */ max_time_ms: number | null; }; }>; @@ -120,143 +249,256 @@ type AggregationSavedAsViewEvent = ConnectionScoped<{ name: 'Aggregation Saved As View'; payload: { /** - * The number of stages in the aggregation. + * The number of stages present in the aggregation at the moment when + * the even has been fired. */ num_stages: number; }; }>; /** - * This event is fired when user clicks to expand focus mode + * This event is fired when user clicks to expand focus mode. * * @category Aggregation Builder */ type FocusModeOpenedEvent = ConnectionScoped<{ name: 'Focus Mode Opened'; - payload: { num_stages: number }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + }; }>; /** - * This event is fired when user clicks to minimize focus mode + * This event is fired when user clicks to minimize focus mode. * * @category Aggregation Builder */ type FocusModeClosedEvent = ConnectionScoped<{ name: 'Focus Mode Closed'; - payload: { num_stages: number; duration: number }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + + /** + * Time elapsed between the focus mode has been opened and then closed + * (in milliseconds). + */ + duration: number; + }; }>; /** - * This event is fired when user changes editor type + * This event is fired when user changes editor type. * * @category Aggregation Builder */ type EditorTypeChangedEvent = ConnectionScoped<{ name: 'Editor Type Changed'; - payload: { num_stages: number; editor_view_type: 'stage' | 'text' | 'focus' }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + + /** + * The new type of view that editor was changed to. + */ + editor_view_type: 'stage' | 'text' | 'focus'; + }; }>; /** - * This event is fired when users saves a completed use case form, adding the stage to their pipeline + * This event is fired when users saves a completed use case form, adding + * the stage to their pipeline. * * @category Aggregation Builder */ type AggregationUseCaseSavedEvent = ConnectionScoped<{ name: 'Aggregation Use Case Saved'; - payload: { stage_name: string | null }; + payload: { + /** + * The name of the stage the use case refers to. + */ + stage_name: string | null; + }; }>; /** - * This event is fired when user saves aggregation pipeline + * This event is fired when user saves aggregation pipeline. * * @category Aggregation Builder */ type AggregationSavedEvent = ConnectionScoped<{ name: 'Aggregation Saved'; payload: { + /** + * A unique id for the aggregation object being saved. + */ id: string; + + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ num_stages?: number; + + /** + * The type of editor view from which the aggregation is being saved. + */ editor_view_type: 'stage' | 'text' | 'focus'; }; }>; /** - * This event is fired when user opens a previously saved aggregation pipeline + * This event is fired when user opens a previously saved aggregation pipeline. * * @category Aggregation Builder */ type AggregationOpenedEvent = ConnectionScoped<{ name: 'Aggregation Opened'; payload: { + /** + * A unique id for the aggregation object being opened. + */ id?: string; + + /** + * The type of editor view from which the aggregation is being opened. + */ editor_view_type?: 'stage' | 'text' | 'focus'; - screen?: string; + + /** + * The screen from which the aggregation is being opened. + */ + screen?: 'my_queries' | 'aggregations'; }; }>; /** - * This event is fired when user deletes a previously saved aggregation pipeline + * This event is fired when user deletes a previously saved aggregation pipeline. * * @category Aggregation Builder */ type AggregationDeletedEvent = ConnectionScoped<{ name: 'Aggregation Deleted'; payload: { + /** + * A unique id for the aggregation object being deleted. + */ id?: string; + + /** + * The type of editor view from which the aggregation has been deleted. + */ editor_view_type?: 'stage' | 'text' | 'focus'; - screen?: string; + + /** + * The screen from which the aggregation has been deleted. + */ + screen?: 'my_queries' | 'aggregations'; }; }>; /** - * This event is fired when user clicks the panel button + * This event is fired when user clicks the aggregation side panel button. * * @category Aggregation Builder */ type AggregationSidePanelOpenedEvent = ConnectionScoped<{ name: 'Aggregation Side Panel Opened'; - payload: { num_stages: number }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + }; }>; /** - * This event is fired when user updates a view they had opened in the agg builder + * This event is fired when user updates a collection view they had opened in the agg + * builder. * * @category Aggregation Builder */ type ViewUpdatedEvent = ConnectionScoped<{ name: 'View Updated'; - payload: { num_stages: number; editor_view_type: 'stage' | 'text' | 'focus' }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + + /** + * The type of editor view from which the view has been updated. + */ + editor_view_type: 'stage' | 'text' | 'focus'; + }; }>; /** - * This event is fired when user runs the explain plan for an aggregation + * This event is fired when user runs the explain plan for an aggregation. * * @category Aggregation Builder */ type AggregationExplainedEvent = ConnectionScoped<{ name: 'Aggregation Explained'; - payload: { num_stages: number; index_used: boolean }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: number; + + /** + * Wether the explain reports that an index was used by the query. + */ + index_used: boolean; + }; }>; /** - * This event is fired when user opens the export to language dialog + * This event is fired when user opens the export to language dialog. * * @category Aggregation Builder */ type AggregationExportOpenedEvent = ConnectionScoped<{ name: 'Aggregation Export Opened'; - payload: { num_stages: undefined | number }; + payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ + num_stages: undefined | number; + }; }>; /** - * This event is fired when user copies to clipboard the aggregation to export + * This event is fired when user copies to clipboard the aggregation to export. * * @category Aggregation Builder */ type AggregationExportedEvent = ConnectionScoped<{ name: 'Aggregation Exported'; payload: { + /** + * The number of stages present in the aggregation at the moment when + * the even has been fired. + */ num_stages: undefined | number; + + /** + * The language to which the query has been exported. + */ language?: | 'java' | 'javascript' @@ -266,20 +508,42 @@ type AggregationExportedEvent = ConnectionScoped<{ | 'go' | 'rust' | 'php'; + + /** + * Indicates that the query was exported including import statements. + */ with_import_statements?: boolean; + + /** + * Indicates that the query was exported including driver syntax. + */ with_drivers_syntax?: boolean; + + /** + * Indicates that the query was exported using builder syntax. + */ with_builders?: boolean; }; }>; /** - * This event is fired when user copied the pipeline to clipboard + * This event is fired when user copied the pipeline to clipboard. * * @category Aggregation Builder */ type AggregationCopiedEvent = { name: 'Aggregation Copied'; - payload: { id: string; screen: string }; + payload: { + /** + * A unique id for the aggregation object being deleted. + */ + id: string; + + /** + * The screen from which the aggregation has been copied. + */ + screen: 'my-queries'; + }; }; /** @@ -297,48 +561,60 @@ type OpenShellEvent = ConnectionScoped<{ * Every event from the shell is forwarded adding the "Shell " prefix to the original * event name. * + * Note: each forwarded event is exposing a different set of properties in + * addition to the `mongosh_version` and `session_id`. Refer to the mongosh + * tracking plan for details about single events. + * * @category Shell */ -type ShellEventEvent = ConnectionScoped<{ +type ShellEvent = ConnectionScoped<{ name: `Shell ${string}`; payload: { + /** + * The version of the embedded mongosh package. + */ mongosh_version: string; + + /** + * The shell session_id. + */ session_id: string; }; }>; /** - * This event is fired when an active connection is disconnected + * This event is fired when an active connection is disconnected. * * @category Connection */ type ConnectionDisconnectedEvent = ConnectionScoped<{ name: 'Connection Disconnected'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a new connection is saved + * This event is fired when a new connection is saved. * * @category Connection */ type ConnectionCreatedEvent = ConnectionScoped<{ name: 'Connection Created'; - payload: { color?: string }; + payload: { + /** + * The favorite color for the connection created. + */ + color?: string; + }; }>; /** - * This event is fired when a connection is removed + * This event is fired when a connection is removed. * * @category Connection */ type ConnectionRemovedEvent = ConnectionScoped<{ name: 'Connection Removed'; - payload: { - // - }; + payload: Record; }>; /** @@ -348,7 +624,16 @@ type ConnectionRemovedEvent = ConnectionScoped<{ */ type ConnectionAttemptEvent = ConnectionScoped<{ name: 'Connection Attempt'; - payload: { is_favorite: boolean; is_recent: boolean; is_new: boolean }; + payload: { + /** + * Specifies if the connection is a favorite. + */ + is_favorite: boolean; + /** + * Specifies if the connection is a newly created connection. + */ + is_new: boolean; + }; }>; /** @@ -359,16 +644,59 @@ type ConnectionAttemptEvent = ConnectionScoped<{ type NewConnectionEvent = ConnectionScoped<{ name: 'New Connection'; payload: { + /** + * Specifies if the connection is targeting an atlas cluster. + */ is_atlas: boolean; + + /** + * The first resolved srv hostname in case the connection is targeting an atlas cluster. + */ atlas_hostname: string | null; + + /** + * Specifies that the connection is targeting an atlas local deployment. + */ is_local_atlas: boolean; + + /** + * Specifies that the connection is targeting an Atlas Data Federation deployment. + */ is_dataLake: boolean; + + /** + * Specifies that the connection is targeting an atlas local deployment. + */ is_enterprise: boolean; + + /** + * Specifies if the connection is targeting a genuine MongoDB deployment. + */ is_genuine: boolean; + + /** + * The advertised server name, in case of non-genuine deployment. + */ non_genuine_server_name: string; + + /** + * The version of the connected server. + */ server_version: string; + + /** + * The host architecture of the connected server. + */ server_arch: string | undefined; + + /** + * The os family of the connected server. + */ server_os_family: string | undefined; + + /** + * The type of connected topology. + */ topology_type: string; }; }>; @@ -380,23 +708,35 @@ type NewConnectionEvent = ConnectionScoped<{ type ConnectionFailedEvent = ConnectionScoped<{ name: 'Connection Failed'; payload: { + /** + * The error code (if available). + */ error_code: string | number | undefined; + + /** + * The error name. + */ error_name: string; }; }>; /** - * This event is fired when connections export initiated from either UI or CLI + * This event is fired when connections export initiated from either UI or CLI. * * @category Connection */ type ConnectionExportedEvent = { name: 'Connection Exported'; - payload: { count: number }; + payload: { + /** + * Number of connections exported. + */ + count: number; + }; }; /** - * This event is fired when connections import initiated from either UI or CLI + * This event is fired when connections import initiated from either UI or CLI. * * @category Connection */ @@ -404,30 +744,40 @@ type ConnectionImportedEvent = { name: 'Connection Imported'; payload: { /** - * The count of imported connections. + * Number of connections imported. */ - count: any; + count: number; }; }; /** - * This event is fired when user copies a document to the clipboard + * This event is fired when user copies a document to the clipboard. * * @category Documents */ type DocumentCopiedEvent = ConnectionScoped<{ name: 'Document Copied'; - payload: { mode: string }; + payload: { + /** + * The view used to copy the document. + */ + mode: 'list' | 'json' | 'table'; + }; }>; /** - * This event is fired when user deletes a document + * This event is fired when user deletes a document. * * @category Documents */ type DocumentDeletedEvent = ConnectionScoped<{ name: 'Document Deleted'; - payload: { mode: string }; + payload: { + /** + * The view used to delete the document. + */ + mode: 'list' | 'json' | 'table'; + }; }>; /** @@ -437,87 +787,122 @@ type DocumentDeletedEvent = ConnectionScoped<{ */ type DocumentUpdatedEvent = ConnectionScoped<{ name: 'Document Updated'; - payload: { mode?: string }; + payload: { + /** + * The view used to delete the document. + */ + mode: 'list' | 'json' | 'table'; + }; }>; /** - * This event is fired when user clones a document + * This event is fired when user clones a document. * * @category Documents */ type DocumentClonedEvent = ConnectionScoped<{ name: 'Document Cloned'; - payload: { mode: string }; + payload: { + /** + * The view used to clone the document. + */ + mode: 'list' | 'json' | 'table'; + }; }>; /** - * This event is fired when user inserts a document + * This event is fired when user inserts documents. * * @category Documents */ type DocumentInsertedEvent = ConnectionScoped<{ name: 'Document Inserted'; - payload: { mode?: string; multiple?: boolean }; + payload: { + /** + * The view used to insert documents. + */ + mode?: string; + + /** + * Specifies if the user inserted multiple documents. + */ + multiple?: boolean; + }; }>; /** - * This event is fired when user explains a query + * This event is fired when user explains a query. * * @category Explain */ type ExplainPlanExecutedEvent = ConnectionScoped<{ name: 'Explain Plan Executed'; - payload: { with_filter: boolean; index_used: boolean }; + payload: { + /** + * Specifies if a filter was set. + */ + with_filter: boolean; + + /** + * Specifies if the explain reports that an index was used by the query. + */ + index_used: boolean; + }; }>; /** - * This event is fired when a user opens the bulk update modal + * This event is fired when a user opens the bulk update modal. * * @category Bulk Operations */ type BulkUpdateOpenedEvent = ConnectionScoped<{ name: 'Bulk Update Opened'; - payload: { isUpdatePreviewSupported: boolean }; + payload: { + /** + * Specifies if update preview was supported (the update preview runs inside a transaction.) + */ + isUpdatePreviewSupported: boolean; + }; }>; /** - * This event is fired when a user runs a bulk update operation + * This event is fired when a user runs a bulk update operation. * * @category Bulk Operations */ type BulkUpdateExecutedEvent = ConnectionScoped<{ name: 'Bulk Update Executed'; - payload: { isUpdatePreviewSupported: boolean }; + payload: { + /** + * Specifies if update preview was supported (the update preview runs inside a transaction.) + */ + isUpdatePreviewSupported: boolean; + }; }>; /** - * This event is fired when a user opens the bulk delete modal + * This event is fired when a user opens the bulk delete modal. * * @category Bulk Operations */ type BulkDeleteOpenedEvent = ConnectionScoped<{ name: 'Bulk Delete Opened'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a user runs a bulk delete operation + * This event is fired when a user runs a bulk delete operation. * * @category Bulk Operations */ type BulkDeleteExecutedEvent = ConnectionScoped<{ name: 'Bulk Delete Executed'; - payload: { - // - }; + payload: Record; }>; /** * This event is fired when a user runs a bulk update operation is added to - * favorites - * + * favorites. * * @category Bulk Operations */ @@ -535,7 +920,7 @@ type BulkUpdateFavoritedEvent = ConnectionScoped<{ */ type UpdateExportOpenedEvent = ConnectionScoped<{ name: 'Update Export Opened'; - payload: { num_stages: undefined | number }; + payload: Record; }>; /** @@ -547,7 +932,7 @@ type UpdateExportOpenedEvent = ConnectionScoped<{ */ type DeleteExportOpenedEvent = ConnectionScoped<{ name: 'Delete Export Opened'; - payload: { num_stages: undefined | number }; + payload: Record; }>; /** @@ -560,7 +945,6 @@ type DeleteExportOpenedEvent = ConnectionScoped<{ type UpdateExportedEvent = ConnectionScoped<{ name: 'Update Exported'; payload: { - num_stages: undefined | number; language?: | 'java' | 'javascript' @@ -586,7 +970,6 @@ type UpdateExportedEvent = ConnectionScoped<{ type DeleteExportedEvent = ConnectionScoped<{ name: 'Delete Exported'; payload: { - num_stages: undefined | number; language?: | 'java' | 'javascript' @@ -603,59 +986,165 @@ type DeleteExportedEvent = ConnectionScoped<{ }>; /** - * This event is fired when user opens the export dialog + * This event is fired when user opens the export dialog. * * @category Import/Export */ type ExportOpenedEvent = ConnectionScoped<{ name: 'Export Opened'; payload: { - type: string; + /** + * The type of query for which the export has been open. (query = find query). + */ + type: 'aggregation' | 'query'; + + /** + * The trigger location for the export. + */ origin: 'menu' | 'crud-toolbar' | 'empty-state' | 'aggregations-toolbar'; }; }>; /** - * This event is fired when a data export completes + * This event is fired when a data export completes. * * @category Import/Export */ type ExportCompletedEvent = ConnectionScoped<{ name: 'Export Completed'; payload: { - type: string; + /** + * The type of query for the completed export. (query = find query). + */ + type: 'aggregation' | 'query'; + + /** + * Indicates whether the export was for all documents in the collection. + */ all_docs?: boolean; + + /** + * Indicates whether the export query included a projection (a subset of fields). + */ has_projection?: boolean; + + /** + * Specifies whether all fields were exported or only selected fields. + */ field_option?: 'all-fields' | 'select-fields'; + + /** + * The file type of the exported data, either CSV or JSON. + */ file_type: 'csv' | 'json'; + + /** + * Specifies the format of the JSON file if the file_type is 'json'. + */ json_format?: 'default' | 'relaxed' | 'canonical'; + + /** + * For exports with field selection, this is the number of fields that were present + * in the list of available fields and that were selected for export. + */ field_count?: number; + + /** + * For exports with field selection, this is the number of fields that has been added + * manually by the user. + */ fields_added_count?: number; + + /** + * For exports with field selection, this is the number of fields that were present + * in the list of available fields, but that were not selected for export. + */ fields_not_selected_count?: number; + + /** + * The total number of documents exported. + */ number_of_docs?: number; + + /** + * Indicates whether the export operation was successful. + */ success: boolean; + + /** + * Indicates whether the export operation was stopped before completion. + */ stopped: boolean; + + /** + * The duration of the export operation in milliseconds. + */ duration: number; }; }>; /** - * This event is fired when a data import completes + * This event is fired when a data import completes. * * @category Import/Export */ type ImportCompletedEvent = ConnectionScoped<{ name: 'Import Completed'; payload: { + /** + * The duration of the import operation in milliseconds. + */ duration?: number; + + /** + * The delimiter used in the imported file. It could be a comma, tab, + * semicolon, or space. + * This field is optional and only applicable if the file_type is 'csv'. + */ delimiter?: ',' | '\t' | ';' | ' '; + + /** + * The newline character(s) used in the imported file. + */ newline?: '\r\n' | '\n'; + + /** + * The type of the imported file, such as CSV or JSON. + */ file_type?: '' | 'csv' | 'json'; + + /** + * Indicates whether all fields in the documents were included in the import. + * If true, all fields in each document were imported; if false, only + * selected fields were imported. + */ all_fields?: boolean; + + /** + * Indicates whether the "Stop on Error" option was selected during the import. + * If true, the import process stops upon encountering an error. + */ stop_on_error_selected?: boolean; - number_of_docs: any | number; + + /** + * The total number of documents imported. + */ + number_of_docs?: number; + + /** + * Indicates whether the import operation was successful. + */ success?: boolean; + + /** + * Indicates whether the import operation was aborted before completion. + */ aborted?: boolean; + + /** + * Indicates whether empty strings in the imported file were ignored. + * If true, fields with empty strings were not included in the imported documents. + */ ignore_empty_strings?: boolean; }; }>; @@ -668,71 +1157,132 @@ type ImportCompletedEvent = ConnectionScoped<{ */ type ImportErrorLogOpenedEvent = ConnectionScoped<{ name: 'Import Error Log Opened'; - payload: { errorCount: number }; + payload: { + /** + * Number of import errors present in the log. + */ + errorCount: number; + }; }>; /** - * This event is fired when user opens the import dialog + * This event is fired when user opens the import dialog. * * @category Import/Export */ type ImportOpenedEvent = ConnectionScoped<{ name: 'Import Opened'; - payload: { origin: 'menu' | 'crud-toolbar' | 'empty-state' }; + payload: { + /** + * The trigger location for the import. + */ + origin: 'menu' | 'crud-toolbar' | 'empty-state'; + }; }>; /** - * This event is fired when user opens create index dialog + * This event is fired when user opens create index dialog. * * @category Indexes */ type IndexCreateOpenedEvent = ConnectionScoped<{ name: 'Index Create Opened'; - payload: { atlas_search?: boolean }; + payload: { + /** + * Specifies if the index creation dialog open is for an Atlas Search index. + */ + atlas_search?: boolean; + }; }>; /** - * This event is fired when user creates an index + * This event is fired when user creates an index. * * @category Indexes */ type IndexCreatedEvent = ConnectionScoped<{ name: 'Index Created'; + payload: { + /** + * Indicates whether the index is unique. + */ unique?: boolean; + + /** + * Specifies the time-to-live (TTL) setting for the index. + */ ttl?: any; + + /** + * Indicates whether the index is a columnstore index. + */ columnstore_index?: boolean; + + /** + * Indicates if the index has a columnstore projection. + */ has_columnstore_projection?: any; + + /** + * Indicates if the index includes a wildcard projection. + */ has_wildcard_projection?: any; + + /** + * Specifies if the index uses a custom collation. + */ custom_collation?: any; + + /** + * Indicates whether the index is a geospatial index. + */ geo?: boolean; + + /** + * Indicates whether the index is an Atlas Search index. + */ atlas_search?: boolean; + + /** + * Specifies the type of the index. + */ type?: string; }; }>; /** - * This event is fired when user updates an index + * This event is fired when user updates an index. * * @category Indexes */ type IndexEditedEvent = ConnectionScoped<{ name: 'Index Edited'; - payload: { atlas_search: boolean }; + payload: { + /** + * Indicates whether the index is an Atlas Search index. + */ + atlas_search: boolean; + }; }>; /** - * This event is fired when user drops an index + * This event is fired when user drops an index. * * @category Indexes */ type IndexDroppedEvent = ConnectionScoped<{ name: 'Index Dropped'; - payload: { atlas_search?: boolean }; + payload: { + /** + * Indicates whether the index is an Atlas Search index. + */ + atlas_search?: boolean; + }; }>; /** - * This event is fired when a user submits feedback for a query generation + * This event is fired when a user submits feedback for a query generation. * * @category Gen AI */ @@ -746,13 +1296,16 @@ type AiQueryFeedbackEvent = ConnectionScoped<{ }>; /** - * This event is fired when a query generation request fails with an error + * This event is fired when a query generation request fails with an error. * * @category Gen AI */ type AiResponseFailedEvent = ConnectionScoped<{ name: 'AI Response Failed'; payload: { + /** + * The type of view used to generate the query. + */ editor_view_type: 'text' | 'stages' | 'find'; error_code?: string; status_code?: number; @@ -762,13 +1315,17 @@ type AiResponseFailedEvent = ConnectionScoped<{ }>; /** - * This event is fired when user enters a prompt in the generative AI textbox and hits "enter + * This event is fired when user enters a prompt in the generative AI textbox + * and hits "enter". * * @category Gen AI */ type AiPromptSubmittedEvent = ConnectionScoped<{ name: 'AI Prompt Submitted'; payload: { + /** + * The type of view used to generate the query. + */ editor_view_type: 'text' | 'stages' | 'find'; user_input_length?: number; request_id?: string; @@ -777,13 +1334,17 @@ type AiPromptSubmittedEvent = ConnectionScoped<{ }>; /** - * This event is fired when AI query or aggregation generated and successfully rendered in the UI + * This event is fired when AI query or aggregation generated and successfully + * rendered in the UI. * * @category Gen AI */ type AiResponseGeneratedEvent = ConnectionScoped<{ name: 'AI Response Generated'; payload: { + /** + * The type of view used to generate the query. + */ editor_view_type: 'text' | 'stages' | 'find'; syntax_errors?: boolean; query_shape?: (string | null)[]; @@ -792,37 +1353,58 @@ type AiResponseGeneratedEvent = ConnectionScoped<{ }>; /** - * This event is fired when a user submits feedback for a pipeline generation + * This event is fired when a user submits feedback for a pipeline generation. * * @category Gen AI */ type PipelineAiFeedbackEvent = ConnectionScoped<{ name: 'PipelineAI Feedback'; payload: { + /** + * Wether the feedback was positive or negative. + */ feedback: 'positive' | 'negative'; + + /** + * The id of the request related to this feedback. Useful to correlate + * feedback to potential error lines in the logs. + */ request_id: string; + + /** + * The feedback comment left by the user. + */ text: string; }; }>; /** - * This event is fired when user filters queries using db / coll filter + * This event is fired when user filters queries using db / coll filter. * * @category My Queries */ type MyQueriesFilterEvent = { name: 'My Queries Filter'; - payload: { type?: string }; + payload: { + /** + * The filter that was changed. + */ + type?: 'database' | 'collection'; + }; }; /** - * This event is fired when user sorts items in the list using one of the sort options + * This event is fired when user sorts items in the list using one of the + * sort options. * * @category My Queries */ type MyQueriesSortEvent = { name: 'My Queries Sort'; payload: { + /** + * The criterion by which the queries are sorted. + */ sort_by: | 'name' | 'id' @@ -831,31 +1413,36 @@ type MyQueriesSortEvent = { | 'collection' | 'lastModified' | null; - order: string; + + /** + * The order of the sorting. + */ + order: 'ascending' | 'descending'; }; }; /** - * This event is fired when user filters queries using search input (fires only on input blur) + * This event is fired when user filters queries using search + * input (fires only on input blur). * * @category My Queries */ type MyQueriesSearchEvent = { name: 'My Queries Search'; - payload: { - // - }; + payload: Record; }; /** - * This event is fired when user copies to clipboard the query to export + * This event is fired when user copies to clipboard the query to export. * * @category Find Queries */ type QueryExportedEvent = ConnectionScoped<{ name: 'Query Exported'; payload: { - num_stages: undefined | number; + /** + * The language to which the query has been exported. + */ language?: | 'java' | 'javascript' @@ -865,20 +1452,32 @@ type QueryExportedEvent = ConnectionScoped<{ | 'go' | 'rust' | 'php'; + + /** + * Indicates that the query was exported including import statements. + */ with_import_statements?: boolean; + + /** + * Indicates that the query was exported including driver syntax. + */ with_drivers_syntax?: boolean; + + /** + * Indicates that the query was exported using builder syntax. + */ with_builders?: boolean; }; }>; /** - * This event is fired when user opens the export to language dialog + * This event is fired when user opens the export to language dialog. * * @category Find Queries */ type QueryExportOpenedEvent = ConnectionScoped<{ name: 'Query Export Opened'; - payload: { num_stages: undefined | number }; + payload: Record; }>; /** @@ -889,39 +1488,67 @@ type QueryExportOpenedEvent = ConnectionScoped<{ type QueryExecutedEvent = ConnectionScoped<{ name: 'Query Executed'; payload: { + /** + * Indicates whether the query includes a projection. + */ has_projection: boolean; + + /** + * Indicates whether the query includes a skip operation. + */ has_skip: boolean; + + /** + * Indicates whether the query includes a sort operation. + */ has_sort: boolean; + + /** + * Indicates whether the query includes a limit operation. + */ has_limit: boolean; + + /** + * Indicates whether the query includes a collation. + */ has_collation: boolean; + + /** + * Indicates whether the maxTimeMS option was modified for the query. + */ changed_maxtimems: boolean; + + /** + * The type of the collection on which the query was executed. + */ collection_type: string; + + /** + * Indicates whether the query used a regular expression. + */ used_regex: boolean; }; }>; /** - * This event is fired when user clicks the refresh button in the UI to refresh the query results + * This event is fired when user clicks the refresh button in the UI to refresh + * the query results. * * @category Find Queries */ type QueryResultsRefreshedEvent = ConnectionScoped<{ name: 'Query Results Refreshed'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when user opens query history panel + * This event is fired when user opens query history panel. * * @category Find Queries */ type QueryHistoryOpenedEvent = ConnectionScoped<{ name: 'Query History Opened'; - payload: { - // - }; + payload: Record; }>; /** @@ -931,57 +1558,81 @@ type QueryHistoryOpenedEvent = ConnectionScoped<{ */ type QueryHistoryClosedEvent = ConnectionScoped<{ name: 'Query History Closed'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when user selects a favorite query to put it in the query bar + * This event is fired when user selects a favorite query to put it in the query bar. * * @category Find Queries */ type QueryHistoryFavoriteUsedEvent = ConnectionScoped<{ name: 'Query History Favorite Used'; - payload: { id?: string; screen?: string; isUpdateQuery?: boolean }; + payload: { + /** + * The unique identifier of the query history favorite that was used. + */ + id?: string; + + /** + * The screen from which the query history favorite was loaded. + */ + screen?: 'documents' | 'my-queries'; + + /** + * Indicates whether the loaded query was an update query. + */ + isUpdateQuery?: boolean; + }; }>; /** - * This event is fired when user removes query from favorites + * This event is fired when user removes query from favorites. * * @category Find Queries */ type QueryHistoryFavoriteRemovedEvent = ConnectionScoped<{ name: 'Query History Favorite Removed'; - payload: { id?: string; screen?: string; isUpdateQuery?: boolean }; + payload: { + /** + * The unique identifier of the query history favorite that was removed. + */ + id?: string; + + /** + * The screen from which the query history favorite was removed. + */ + screen?: 'documents' | 'my-queries'; + + /** + * Indicates whether the removed query was an update query. + */ + isUpdateQuery?: boolean; + }; }>; /** - * This event is fired when user selects "favorites" in query history panel + * This event is fired when user selects "favorites" in query history panel. * * @category Find Queries */ type QueryHistoryFavoritesEvent = ConnectionScoped<{ name: 'Query History Favorites'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when user selects "recent" in query history panel + * This event is fired when user selects "recent" in query history panel. * * @category Find Queries */ type QueryHistoryRecentEvent = ConnectionScoped<{ name: 'Query History Recent'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when user selects a recent query to put it in the query bar + * This event is fired when user selects a recent query to put it in the query bar. * * @category Find Queries */ @@ -991,144 +1642,191 @@ type QueryHistoryRecentUsedEvent = ConnectionScoped<{ }>; /** - * This event is fired when user favorites a recent query + * This event is fired when user favorites a recent query. * * @category Find Queries */ type QueryHistoryFavoriteAddedEvent = ConnectionScoped<{ name: 'Query History Favorite Added'; - payload: { isUpdateQuery: boolean }; + payload: { + /** + * Indicates whether the query was an update query. + */ + isUpdateQuery: boolean; + }; }>; /** - * This event is fired when a user edits a query + * This event is fired when a user edits a query. * * @category Find Queries */ type QueryEditedEvent = ConnectionScoped<{ name: 'Query Edited'; - payload: { option_name: any }; + payload: { + /** + * The name of the edited field. + */ + option_name: + | 'maxTimeMS' + | 'filter' + | 'project' + | 'collation' + | 'sort' + | 'skip' + | 'limit' + | 'hint'; + }; }>; /** - * This event is fired when user copied query to clipboard + * This event is fired when user copied query to clipboard. * * @category Find Queries */ type QueryHistoryFavoriteCopiedEvent = { name: 'Query History Favorite Copied'; - payload: { id: string; screen: string }; + payload: { + /** + * The unique identifier of the query history favorite that was copied. + */ + id: string; + + /** + * The screen from which the query history favorite was copied. + */ + screen: 'my_queries'; + }; }; /** - * This event is fired when user edits validation rules + * This event is fired when user edits validation rules (without saving them). * * @category Schema Validation */ type SchemaValidationEditedEvent = ConnectionScoped<{ name: 'Schema Validation Edited'; - payload: { json_schema: boolean }; + payload: { + /** + * Indicates wether the validation rule uses $jsonSchema. + */ + json_schema: boolean; + }; }>; /** - * This event is fired when user saves validation rules + * This event is fired when user saves validation rules. * * @category Schema Validation */ type SchemaValidationUpdatedEvent = ConnectionScoped<{ name: 'Schema Validation Updated'; payload: { + /** + * The validation action passed to the driver. + */ validation_action: 'error' | 'warn'; + + /** + * The level of schema validation passed to the driver. + */ validation_level: 'off' | 'moderate' | 'strict'; }; }>; /** - * This event is fired when user adds validation rules + * This event is fired when user adds validation rules. * * @category Schema Validation */ type SchemaValidationAddedEvent = ConnectionScoped<{ name: 'Schema Validation Added'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when user analyzes the schema + * This event is fired when user analyzes the schema. * * @category Schema */ type SchemaAnalyzedEvent = ConnectionScoped<{ name: 'Schema Analyzed'; payload: { + /** + * Indicates whether a filter was applied during the schema analysis. + */ with_filter: boolean; - schema_width: any; + + /** + * The number of fields at the top level. + */ + schema_width: number; + + /** + * The number of nested levels. + */ schema_depth: number; + + /** + * Indicates whether the schema contains geospatial data. + */ geo_data: boolean; + + /** + * The time taken to analyze the schema, in milliseconds. + */ analysis_time_ms: number; }; }>; /** - * This event is fired when a user clicks to show the details of an operation + * This event is fired when a user clicks to show the details of an operation. * * @category Performance Tab */ type CurrentOpShowOperationDetailsEvent = ConnectionScoped<{ name: 'CurrentOp showOperationDetails'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a user clicks to hide the details of an operation + * This event is fired when a user clicks to hide the details of an operation. * * @category Performance Tab */ type DetailViewHideOperationDetailsEvent = ConnectionScoped<{ name: 'DetailView hideOperationDetails'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a user clicks to kill an operation + * This event is fired when a user clicks to kill an operation. * * @category Performance Tab */ type DetailViewKillOpEvent = ConnectionScoped<{ name: 'DetailView killOp'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a user resumes a paused performance screen + * This event is fired when a user resumes a paused performance screen. * * @category Performance Tab */ type PerformanceResumedEvent = ConnectionScoped<{ name: 'Performance Resumed'; - payload: { - // - }; + payload: Record; }>; /** - * This event is fired when a user pauses the performance screen + * This event is fired when a user pauses the performance screen. * * @category Performance Tab */ type PerformancePausedEvent = ConnectionScoped<{ name: 'Performance Paused'; - payload: { - // - }; + payload: Record; }>; /** @@ -1138,7 +1836,23 @@ type PerformancePausedEvent = ConnectionScoped<{ */ type GuideCueDismissedEvent = { name: 'Guide Cue Dismissed'; - payload: { groupId: any; cueId: any; step: any }; + payload: { + /** + * The unique identifier of the group of guide cues to which this cue belongs. + * This field is only set for guide cues belonging to a group. + */ + groupId?: string; + + /** + * The unique identifier of the specific guide cue that was dismissed. + */ + cueId: string; + + /** + * The step number within the guide cue sequence where the user clicked "next". + */ + step: number; + }; }; /** @@ -1149,7 +1863,22 @@ type GuideCueDismissedEvent = { */ type GuideCueGroupDismissedEvent = { name: 'Guide Cue Group Dismissed'; - payload: { groupId: any; cueId: any; step: any }; + payload: { + /** + * The unique identifier of the group of guide cues that was dismissed. + */ + groupId: string; + + /** + * The unique identifier of the specific guide cue that was the last one in the group. + */ + cueId: string; + + /** + * The step number within the guide cue sequence where the user clicked "next". + */ + step: number; + }; }; /** @@ -1159,7 +1888,12 @@ type GuideCueGroupDismissedEvent = { */ type SignalShownEvent = { name: 'Signal Shown'; - payload: { id: any }; + payload: { + /** + * A unique identifier for the type of the signal. + */ + id: string; + }; }; /** @@ -1169,7 +1903,12 @@ type SignalShownEvent = { */ type SignalOpenedEvent = { name: 'Signal Opened'; - payload: { id: any }; + payload: { + /** + * A unique identifier for the type of the signal. + */ + id: string; + }; }; /** @@ -1179,7 +1918,12 @@ type SignalOpenedEvent = { */ type SignalActionButtonClickedEvent = { name: 'Signal Action Button Clicked'; - payload: { id: any }; + payload: { + /** + * A unique identifier for the type of the signal. + */ + id: string; + }; }; /** @@ -1189,7 +1933,12 @@ type SignalActionButtonClickedEvent = { */ type SignalLinkClickedEvent = { name: 'Signal Link Clicked'; - payload: { id: any }; + payload: { + /** + * A unique identifier for the type of the signal. + */ + id: string; + }; }; /** @@ -1199,45 +1948,62 @@ type SignalLinkClickedEvent = { */ type SignalClosedEvent = { name: 'Signal Closed'; - payload: { id: any }; + payload: { + /** + * A unique identifier for the type of the signal. + */ + id: string; + }; }; - /** - * This event is fired when "Update available" popup is shown and user accepts the update. + * This event is fired when the "Update available" popup is shown and the user accepts the update. * - * @category Autoupdates + * @category Auto-updates */ type AutoupdateAcceptedEvent = { name: 'Autoupdate Accepted'; payload: { + /** + * The version of the update that was accepted. + */ update_version?: string; + + /** + * Indicates whether the update was initiated manually by the user. + */ manual_update?: boolean; + + /** + * Indicates whether the update was downloaded manually by the user. + */ manual_download?: boolean; }; }; -/** This event is fired when the user accepts to restart the application from - * the update popup. +/** + * This event is fired when the user accepts to restart the application from the update popup. * - * @category Autoupdates + * @category Auto-updates */ type ApplicationRestartAcceptedEvent = { name: 'Application Restart Accepted'; payload: Record; }; -/** This event is fired when the auto-update feature is enabled. +/** + * This event is fired when the auto-update feature is enabled. * - * @category Autoupdates + * @category Auto-updates */ type AutoupdateEnabledEvent = { name: 'Autoupdate Enabled'; payload: Record; }; -/** This event is fired when the auto-update feature is disabled. +/** + * This event is fired when the auto-update feature is disabled. * - * @category Autoupdates + * @category Auto-updates */ type AutoupdateDisabledEvent = { name: 'Autoupdate Disabled'; @@ -1245,24 +2011,38 @@ type AutoupdateDisabledEvent = { }; /** - * This event is fired when "Update available" popup is shown and user rejects - * the update. + * This event is fired when the "Update available" popup is shown and the user rejects the update. * - * @category Autoupdates + * @category Auto-updates */ type AutoupdateDismissedEvent = { name: 'Autoupdate Dismissed'; - payload: { update_version: string }; + payload: { + /** + * The version of the update that was dismissed. + */ + update_version: string; + }; }; /** - * This event is fired when user changes items view type between list and grid. + * This event is fired when the user changes the items view type between list and grid. * * @category Database / Collection List */ type SwitchViewTypeEvent = ConnectionScoped<{ name: 'Switch View Type'; - payload: { view_type: any; item_type: 'collection' | 'database' }; + payload: { + /** + * The type of view that the user switched to. + */ + view_type: 'grid' | 'list'; + + /** + * The type of item being viewed, either 'collection' or 'database'. + */ + item_type: 'collection' | 'database'; + }; }>; /** @@ -1273,11 +2053,34 @@ type SwitchViewTypeEvent = ConnectionScoped<{ type CollectionCreatedEvent = ConnectionScoped<{ name: 'Collection Created'; payload: { + /** + * Indicates whether the collection is capped. + */ is_capped: boolean; + + /** + * Indicates whether the collection has a custom collation. + */ has_collation: boolean; + + /** + * Indicates whether the collection is a time series collection. + */ is_timeseries: boolean; + + /** + * Indicates whether the collection is clustered. + */ is_clustered: boolean; + + /** + * Indicates whether the collection is encrypted using FLE2 (Field-Level Encryption 2). + */ is_fle2: boolean; + + /** + * Indicates whether the collection has an expiration (TTL index). + */ expires: boolean; }; }>; @@ -1290,23 +2093,51 @@ type CollectionCreatedEvent = ConnectionScoped<{ type DatabaseCreatedEvent = ConnectionScoped<{ name: 'Database Created'; payload: { + /** + * Indicates whether the first collection in the database is capped. + */ is_capped: boolean; + + /** + * Indicates whether the first collection in the database has a custom collation. + */ has_collation: boolean; + + /** + * Indicates whether the first collection in the database is a time series collection. + */ is_timeseries: boolean; + + /** + * Indicates whether the first collection in the database is clustered. + */ is_clustered: boolean; + + /** + * Indicates whether the first collection in the database is encrypted using FLE2 (Field-Level Encryption 2). + */ is_fle2: boolean; + + /** + * Indicates whether the first collection in the database has an expiration (TTL index). + */ expires: boolean; }; }>; /** - * This event is fired when a user changes theme. + * This event is fired when a user changes the theme. * * @category Settings */ type ThemeChangedEvent = { name: 'Theme Changed'; - payload: { theme: 'DARK' | 'LIGHT' | 'OS_THEME' }; + payload: { + /** + * The theme selected by the user. It can be 'DARK', 'LIGHT', or 'OS_THEME'. + */ + theme: 'DARK' | 'LIGHT' | 'OS_THEME'; + }; }; /** @@ -1317,7 +2148,12 @@ type ThemeChangedEvent = { */ type FirstContentfulPaintEvent = { name: 'First Contentful Paint'; - payload: { value: number }; + payload: { + /** + * The reported metric value. + */ + value: number; + }; }; /** @@ -1328,7 +2164,12 @@ type FirstContentfulPaintEvent = { */ type LargestContentfulPaintEvent = { name: 'Largest Contentful Paint'; - payload: { value: number }; + payload: { + /** + * The reported metric value. + */ + value: number; + }; }; /** @@ -1339,7 +2180,12 @@ type LargestContentfulPaintEvent = { */ type FirstInputDelayEvent = { name: 'First Input Delay'; - payload: { value: number }; + payload: { + /** + * The reported metric value. + */ + value: number; + }; }; /** @@ -1350,7 +2196,12 @@ type FirstInputDelayEvent = { */ type CumulativeLayoutShiftEvent = { name: 'Cumulative Layout Shift'; - payload: { value: number }; + payload: { + /** + * The reported metric value. + */ + value: number; + }; }; /** @@ -1361,34 +2212,80 @@ type CumulativeLayoutShiftEvent = { */ type TimeToFirstByteEvent = { name: 'Time to First Byte'; - payload: { value: number }; + payload: { + /** + * The reported metric value. + */ + value: number; + }; }; - /** - * This event is fired when user clicks on Atlas CTA + * This event is fired when a user clicks on the Atlas CTA. * * @category Other */ type AtlasLinkClickedEvent = { name: 'Atlas Link Clicked'; - payload: { screen?: string }; + payload: { + /** + * The screen from which the Atlas CTA was clicked. + */ + screen?: 'agg_builder' | 'connect'; + }; }; /** - * This event is fired when application launch initiated. + * This event is fired when the application launch is initiated. * * @category Other */ type ApplicationLaunchedEvent = { name: 'Application Launched'; payload: { - context: string; - launch_connection: string; - protected: boolean | undefined; + /** + * The context from which the application was launched. + * (NOT whether it is used as a CLI-only tool or not) + */ + context: 'terminal' | 'desktop_app'; + + /** + * Whether Compass was instructed to automatically connect + * to a specific cluster using a connection string on the command line, + * a JSON file containing an exported connection on the command line, + * or not at all. + */ + launch_connection: 'string' | 'JSON_file' | 'none'; + + /** + * Whether the `protectConnectionStrings` preference was set at launch. + */ + protected?: boolean; + + /** + * Whether the `readOnly` preference was set at launch (including the + * compass-readonly distribution). + */ readOnly: boolean; - maxTimeMS: number | undefined; + + /** + * The value of the `maxTimeMS` preference at launch. + */ + maxTimeMS?: number; + + /** + * Whether any preferences were specified in the global configuration file. + */ global_config: boolean; + + /** + * Whether any preferences were specified using CLI arguments. + */ cli_args: boolean; + + /** + * Whether Compass discovered any connections in the legacy connection format + * (prior to COMPASS-5490 'Remove storage-mixin' from summer 2023). + */ legacy_connections: boolean; }; }; @@ -1397,38 +2294,58 @@ type ApplicationLaunchedEvent = { * This event is fired when the keytar migration fails for a user. * See: https://jira.mongodb.org/browse/COMPASS-6856. * - * NOTE: should be removed as part of https://jira.mongodb.org/browse/COMPASS-7948. + * NOTE: Should be removed as part of https://jira.mongodb.org/browse/COMPASS-7948. * * @category Other */ type KeytarSecretsMigrationFailedEvent = { name: 'Keytar Secrets Migration Failed'; - payload: { num_saved_connections: number; num_failed_connections: number }; + payload: { + /** + * The number of connections that were successfully saved. + */ + num_saved_connections: number; + + /** + * The number of connections that failed to save during the migration. + */ + num_failed_connections: number; + }; }; /** * This event is fired when we fail to track another event due to an exception - * while building the attributes + * while building the attributes. * * @category Other */ type ErrorFetchingAttributesEvent = { name: 'Error Fetching Attributes'; - payload: { event_name: string }; + payload: { + /** + * The name of the event for which attributes could not be fetched. + */ + event_name: string; + }; }; /** - * This event is fired when user activates (i.e. goes to) a screen + * This event is fired when a user activates (i.e., navigates to) a screen. * * @category Other */ type ScreenEvent = ConnectionScoped<{ name: 'Screen'; - payload: { name?: string }; + payload: { + /** + * The name of the screen that was activated. + */ + name?: string; + }; }>; /** - * This event is fired when a user clicks on the Performance Advisor CTA + * This event is fired when a user clicks on the Performance Advisor CTA. * * @category Other */ @@ -1547,7 +2464,7 @@ export type TelemetryEvent = | SchemaValidationEditedEvent | SchemaValidationUpdatedEvent | ScreenEvent - | ShellEventEvent + | ShellEvent | SignalActionButtonClickedEvent | SignalClosedEvent | SignalLinkClickedEvent diff --git a/packages/compass-telemetry/src/types.ts b/packages/compass-telemetry/src/types.ts index bcb6102dbcb..6a47bcf1dad 100644 --- a/packages/compass-telemetry/src/types.ts +++ b/packages/compass-telemetry/src/types.ts @@ -1,14 +1,14 @@ import type { TelemetryEvent } from './telemetry-events'; -export type { TelemetryEvent } from './telemetry-events'; +export type { TelemetryEvent, IdentifyTraits } from './telemetry-events'; type TelemetryConnectionInfo = { id: string; }; -export type TrackFunctionPayload> = - | TPayload - | (() => TPayload) - | (() => Promise); +export type TrackFunctionPayload = + | Omit + | (() => Omit) + | (() => Promise>); export interface TrackFunction { < @@ -16,7 +16,7 @@ export interface TrackFunction { TPayload extends Extract['payload'] >( eventName: TName, - payload: TrackFunctionPayload>, + payload: TrackFunctionPayload, connectionInfo?: TelemetryConnectionInfo | undefined ): void; } diff --git a/packages/compass/src/main/application.ts b/packages/compass/src/main/application.ts index 3a9b67d7439..bc1297caf85 100644 --- a/packages/compass/src/main/application.ts +++ b/packages/compass/src/main/application.ts @@ -46,7 +46,7 @@ const track = createIpcTrack(); type ExitHandler = () => Promise; type CompassApplicationMode = 'CLI' | 'GUI'; -const getContext = () => { +const getContext = (): 'terminal' | 'desktop_app' => { return process.stdin.isTTY || process.stdout.isTTY || process.stderr.isTTY ? 'terminal' : 'desktop_app'; @@ -55,7 +55,7 @@ const getContext = () => { const getLaunchConnectionSource = ( file?: string, positionalArguments?: string[] -) => { +): 'JSON_file' | 'string' | 'none' => { if (file) return 'JSON_file'; if (positionalArguments?.length) return 'string'; return 'none'; diff --git a/packages/compass/src/main/telemetry.ts b/packages/compass/src/main/telemetry.ts index e6ee3e33145..42733f7f2ee 100644 --- a/packages/compass/src/main/telemetry.ts +++ b/packages/compass/src/main/telemetry.ts @@ -5,6 +5,7 @@ import { createLogger } from '@mongodb-js/compass-logging'; import type { CompassApplication } from './application'; import type { EventEmitter } from 'events'; import { getOsInfo } from '@mongodb-js/get-os-info'; +import type { IdentifyTraits } from '@mongodb-js/compass-telemetry'; const { log, mongoLogId } = createLogger('COMPASS-TELEMETRY'); @@ -101,20 +102,23 @@ class CompassTelemetry { queuedEvents: this.queuedEvents.length, } ); + if ( this.state === 'enabled' && this.analytics && this.telemetryAnonymousId ) { + const traits: IdentifyTraits = { + ...this._getCommonProperties(), + platform: process.platform, + arch: process.arch, + ...this.osInfo, + }; + this.analytics.identify({ userId: this.telemetryAtlasUserId, anonymousId: this.telemetryAnonymousId, - traits: { - ...this._getCommonProperties(), - platform: process.platform, - arch: process.arch, - ...this.osInfo, - }, + traits: traits, }); } diff --git a/packages/databases-collections-list/src/items-grid.tsx b/packages/databases-collections-list/src/items-grid.tsx index 12cb9d1cee6..663acccc489 100644 --- a/packages/databases-collections-list/src/items-grid.tsx +++ b/packages/databases-collections-list/src/items-grid.tsx @@ -310,7 +310,7 @@ export const ItemsGrid = ({ const track = useTelemetry(); const connectionInfoAccess = useConnectionInfoAccess(); const onViewTypeChange = useCallback( - (newType) => { + (newType: ViewType) => { track( 'Switch View Type', { view_type: newType, item_type: itemType }, From aa6704dadb3c65022237d6dc5b64f0a7880aa534 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Tue, 10 Sep 2024 11:00:06 +0200 Subject: [PATCH 12/57] chore(testing-library): replace testing library with testing library compass (#6214) * chore(testing-library): replace all imports; adjust tests when needed; add eslint rule * chore(testing-library): update package.json with new dep --- configs/eslint-config-compass/index.js | 22 +- package-lock.json | 207 +++--------------- packages/atlas-service/package.json | 2 +- .../src/store/atlas-signin-store.spec.ts | 2 +- packages/compass-aggregations/package.json | 2 - .../components/add-stage/add-stage.spec.tsx | 7 +- .../aggregation-side-panel/index.spec.tsx | 7 +- .../field-combobox.spec.tsx | 2 +- .../group/basic-group.spec.tsx | 2 +- .../group/group-with-statistics.spec.tsx | 2 +- .../group/group-with-subset.spec.tsx | 2 +- .../lookup/lookup.spec.tsx | 2 +- .../match/match-condition-form.spec.tsx | 2 +- .../match/match-group-form.spec.tsx | 9 +- .../match/match.spec.tsx | 2 +- .../project/project.spec.tsx | 7 +- .../search/text-search.spec.tsx | 2 +- .../stage-wizard-use-cases/sort/sort.spec.tsx | 4 +- .../use-case-card.spec.tsx | 8 +- .../aggregations/aggregations.spec.tsx | 2 +- .../focus-mode-modal-header.spec.tsx | 7 +- .../focus-mode-stage-editor.spec.tsx | 2 +- .../focus-mode-stage-preview.spec.tsx | 2 +- .../components/focus-mode/focus-mode.spec.tsx | 2 +- .../pipeline-builder-workspace/index.spec.tsx | 2 +- .../pipeline-as-text-workspace/index.spec.tsx | 2 +- .../pipeline-editor.spec.tsx | 2 +- .../pipeline-preview.spec.tsx | 3 +- .../pipeline-stages-preview.spec.tsx | 3 +- .../index.spec.tsx | 2 +- .../pipeline-results-workspace/index.spec.tsx | 3 +- .../pipeline-pagination-count.spec.tsx | 8 +- .../pipeline-pagination.spec.tsx | 3 +- .../pipeline-results-list.spec.tsx | 2 +- .../pipeline-results-view-controls.spec.tsx | 8 +- .../pipeline-toolbar/index.spec.tsx | 8 +- .../pipeline-toolbar/pipeline-ai.spec.tsx | 8 +- .../pipeline-header/index.spec.tsx | 3 +- .../pipeline-header/pipeline-actions.spec.tsx | 4 +- .../pipeline-header/pipeline-stages.spec.tsx | 8 +- .../pipeline-options/index.spec.tsx | 2 +- .../pipeline-collation.spec.tsx | 3 +- .../pipeline-settings/index.spec.tsx | 8 +- .../pipeline-extra-settings.spec.tsx | 9 +- .../pipeline-settings/pipeline-menus.spec.tsx | 3 +- .../pipeline-settings/pipeline-name.spec.tsx | 2 +- .../saved-pipelines/saved-pipelines.spec.tsx | 8 +- .../components/stage-preview/index.spec.tsx | 2 +- .../output-stage-preview.spec.tsx | 2 +- .../components/stage-toolbar/index.spec.tsx | 2 +- .../stage-toolbar/option-menu.spec.tsx | 2 +- .../components/stage-wizard/index.spec.tsx | 2 +- .../use-case-droppable-area/index.spec.tsx | 2 +- .../compass-aggregations/src/plugin.spec.tsx | 2 +- .../compass-aggregations/test/form-helper.ts | 3 +- packages/compass-collection/package.json | 3 +- .../collection-header-actions.spec.tsx | 2 +- .../collection-header.spec.tsx | 9 +- .../src/stores/collection-tab.spec.ts | 2 +- packages/compass-components/package.json | 5 +- .../src/components/accordion.spec.tsx | 7 +- .../src/components/breadcrumb.spec.tsx | 7 +- .../src/components/bson-value.spec.tsx | 2 +- .../components/collapsible-field-set.spec.tsx | 2 +- .../combobox-with-custom-options.spec.tsx | 2 +- .../components/content-with-fallback.spec.tsx | 7 +- .../document-actions-group.spec.tsx | 8 +- .../document-list/document.spec.tsx | 4 +- .../visible-fields-toggle.spec.tsx | 8 +- .../src/components/empty-content.spec.tsx | 2 +- .../src/components/error-boundary.spec.tsx | 2 +- .../components/error-warning-summary.spec.tsx | 2 +- .../src/components/feedback-popover.spec.tsx | 8 +- .../src/components/file-input.spec.tsx | 2 +- .../components/guide-cue/guide-cue.spec.tsx | 4 +- .../src/components/index-icon.spec.tsx | 2 +- .../src/components/index-keys-badge.spec.tsx | 7 +- .../src/components/inline-info-link.spec.tsx | 2 +- .../components/interactive-popover.spec.tsx | 2 +- .../components/item-action-controls.spec.tsx | 9 +- .../src/components/list-editor.spec.tsx | 2 +- .../src/components/loader.spec.tsx | 7 +- .../modals/confirmation-modal.spec.tsx | 2 +- .../src/components/options-toggle.spec.tsx | 7 +- .../src/components/resize-handle.spec.tsx | 7 +- .../src/components/signal-popover.spec.tsx | 8 +- .../src/components/tab-nav-bar.spec.tsx | 7 +- .../src/components/virtual-list.spec.tsx | 7 +- .../components/workspace-tabs/tab.spec.tsx | 8 +- .../workspace-tabs/workspace-tabs.spec.tsx | 8 +- .../src/hooks/use-confirmation.spec.tsx | 4 +- .../src/hooks/use-hotkeys.spec.tsx | 3 +- .../src/hooks/use-sort.spec.ts | 9 +- .../src/hooks/use-stacked-component.spec.tsx | 2 +- .../src/hooks/use-toast.spec.tsx | 4 +- .../src/hooks/use-virtual-grid.test.tsx | 8 +- .../package.json | 4 - .../src/components/select-table.spec.tsx | 7 +- .../src/hooks/common.spec.ts | 22 +- .../package.json | 3 +- .../src/connections-navigation-tree.spec.tsx | 4 +- .../sc-connections-navigation-tree.spec.tsx | 4 +- .../src/virtual-list/virtual-list.spec.tsx | 9 +- packages/compass-connections/package.json | 3 - .../connecting/connecting-animation.spec.tsx | 2 +- .../components/connecting/connecting.spec.tsx | 2 +- .../connection-list/connection-list.spec.tsx | 4 +- .../connection-list/connection.spec.tsx | 2 +- .../hooks/use-connection-repository.spec.ts | 2 +- packages/compass-crud/package.json | 3 +- .../components/bulk-actions-toasts.spec.tsx | 9 +- .../src/components/bulk-delete-modal.spec.tsx | 8 +- .../src/components/bulk-update-modal.spec.tsx | 9 +- .../change-view/change-view.spec.tsx | 2 +- .../src/components/crud-toolbar.spec.tsx | 4 +- .../table-view/add-field-button.spec.tsx | 7 +- .../table-view/types-dropdown.spec.tsx | 7 +- .../virtualized-document-json-view.spec.tsx | 14 +- .../virtualized-document-list-view.spec.tsx | 14 +- packages/compass-explain-plan/package.json | 2 +- .../components/explain-plan-modal.spec.tsx | 6 +- .../src/components/explain-plan-view.spec.tsx | 6 +- .../explain-tree/explain-tree-stage.spec.tsx | 2 +- .../explain-tree/explain-tree.spec.tsx | 2 +- .../compass-export-to-language/package.json | 5 +- .../src/index.spec.tsx | 30 +-- packages/compass-find-in-page/package.json | 3 +- .../components/find-in-page-input.spec.tsx | 9 +- packages/compass-generative-ai/package.json | 5 +- .../components/generative-ai-input.spec.tsx | 9 +- packages/compass-import-export/package.json | 2 - .../src/components/export-code-view.spec.tsx | 2 +- .../src/components/export-modal.spec.tsx | 8 +- .../components/export-select-fields.spec.tsx | 3 +- .../src/components/import-preview.spec.tsx | 2 +- packages/compass-indexes/package.json | 3 +- .../create-index-actions.spec.jsx | 2 +- .../components/create-index-fields.spec.tsx | 7 +- .../badge-with-icon-link.spec.tsx | 7 +- .../indexes-toolbar/indexes-toolbar.spec.tsx | 9 +- .../src/components/indexes/indexes.spec.tsx | 2 +- .../index-actions.spec.tsx | 8 +- .../property-field.spec.tsx | 7 +- .../regular-indexes-table.spec.tsx | 9 +- .../regular-indexes-table/size-field.spec.tsx | 2 +- .../regular-indexes-table/type-field.spec.tsx | 7 +- .../usage-field.spec.tsx | 2 +- .../index.spec.tsx | 9 +- .../base-search-index-modal.spec.tsx | 9 +- .../update-search-index-modal.spec.tsx | 8 +- .../search-index-actions.spec.tsx | 8 +- .../search-indexes-table.spec.tsx | 4 +- .../src/stores/drop-index.spec.tsx | 21 +- .../compass-preferences-model/package.json | 2 +- .../src/react.spec.tsx | 2 +- packages/compass-query-bar/package.json | 4 +- .../src/components/hooks.spec.tsx | 2 +- .../src/components/option-editor.spec.tsx | 9 +- .../src/components/query-ai.spec.tsx | 9 +- .../src/components/query-bar.spec.tsx | 9 +- .../query-history/favorite-list.spec.tsx | 8 +- .../components/query-history/index.spec.tsx | 4 +- .../query-history/recent-list.spec.tsx | 8 +- .../query-history/toolbar/toolbar.spec.tsx | 9 +- .../src/stores/query-bar-reducer.spec.ts | 2 +- .../src/stores/query-bar-store.spec.ts | 2 +- .../package.json | 3 - .../src/components/saved-item-card.test.tsx | 8 +- .../src/hooks/use-grid-filters.spec.tsx | 10 +- .../src/index.spec.tsx | 2 +- packages/compass-schema/package.json | 3 +- .../src/components/field.spec.tsx | 8 +- .../schema-toolbar/schema-toolbar.spec.tsx | 2 +- packages/compass-settings/package.json | 3 +- .../src/components/modal.spec.tsx | 4 +- .../components/settings/atlas-login.spec.tsx | 9 +- .../settings/gen-ai-settings.spec.tsx | 2 +- .../src/components/settings/general.spec.tsx | 9 +- .../settings/oidc-settings.spec.tsx | 9 +- .../src/components/settings/privacy.spec.tsx | 9 +- .../settings/proxy-settings-custom.spec.tsx | 9 +- .../settings/proxy-settings.spec.tsx | 9 +- .../src/components/settings/theme.spec.tsx | 9 +- .../src/components/sidebar.spec.tsx | 9 +- packages/compass-sidebar/package.json | 2 - .../legacy/navigation-items.spec.tsx | 2 +- packages/compass-web/package.json | 3 - packages/compass-web/src/entrypoint.spec.tsx | 9 +- .../src/logger-and-telemetry.spec.tsx | 2 +- packages/compass-welcome/package.json | 5 +- .../src/components/modal.spec.tsx | 3 +- packages/compass/package.json | 1 - .../compass/src/app/components/home.spec.tsx | 2 +- packages/connection-form/package.json | 6 +- .../advanced-options-tabs.spec.tsx | 2 +- .../advanced-tab/advanced-tab.spec.tsx | 2 +- .../url-options-list-editor.spec.tsx | 2 +- .../authentication-aws.spec.tsx | 2 +- .../authentication-default.spec.tsx | 2 +- .../authentication-gssapi.spec.tsx | 7 +- .../authentication-oidc.spec.tsx | 2 +- .../authentication-plain.spec.tsx | 2 +- .../authentication-tab.spec.tsx | 2 +- .../csfle-tab/csfle-tab.spec.tsx | 4 +- .../direct-connection-input.spec.tsx | 7 +- .../general-tab/general-tab.spec.tsx | 2 +- .../general-tab/host-input.spec.tsx | 9 +- .../general-tab/scheme-input.spec.tsx | 7 +- .../proxy-and-ssh-tunnel-tab.spec.tsx | 7 +- .../ssh-tunnel-tab/socks.spec.tsx | 2 +- .../ssh-tunnel-identity.spec.tsx | 2 +- .../ssh-tunnel-password.spec.tsx | 2 +- .../tls-ssl-tab/tls-ssl-tab.spec.tsx | 7 +- .../connection-form-actions.spec.tsx | 2 +- .../src/components/connection-form.spec.tsx | 10 +- .../connection-string-input.spec.tsx | 4 +- .../components/save-connection-modal.spec.tsx | 7 +- .../src/hooks/use-connect-form.spec.ts | 2 +- .../src/hooks/use-connection-color.spec.tsx | 2 +- .../databases-collections-list/package.json | 5 +- .../src/index.spec.tsx | 8 +- packages/databases-collections/package.json | 2 - .../src/collections-plugin.spec.tsx | 20 +- .../rename-collection-modal.spec.tsx | 15 +- .../src/databases-plugin.spec.tsx | 24 +- .../src/stores/rename-collection.spec.tsx | 16 +- packages/hadron-app-registry/README.md | 7 +- packages/hadron-app-registry/package.json | 2 +- .../src/register-plugin.spec.tsx | 2 +- scripts/create-workspace.js | 4 +- 230 files changed, 825 insertions(+), 598 deletions(-) diff --git a/configs/eslint-config-compass/index.js b/configs/eslint-config-compass/index.js index 2e6adc138ed..a89c509af30 100644 --- a/configs/eslint-config-compass/index.js +++ b/configs/eslint-config-compass/index.js @@ -43,13 +43,28 @@ const tsxOverrides = { rules: { ...tsxRules }, }; +const commonTestOverrides = { + '@mongodb-js/compass/unique-mongodb-log-id': 'off', + '@typescript-eslint/no-restricted-imports': [ + 'error', + { + patterns: [ + { + group: '@testing-library/*', + message: 'Use @mongodb-js/testing-library-compass instead', + allowTypeImports: false, + }, + ], + }, + ], +}; + const testJsOverrides = { ...common.testOverrides, files: ['**/*.spec.js', '**/*.spec.jsx', '**/*.test.js', '**/test/**/*.js'], rules: { ...common.testRules, - '@mongodb-js/compass/unique-mongodb-log-id': 'off', - '@typescript-eslint/no-restricted-imports': 'off', + ...commonTestOverrides, }, }; @@ -64,8 +79,7 @@ const testTsOverrides = { rules: { ...common.testRules, ...extraTsRules, - '@mongodb-js/compass/unique-mongodb-log-id': 'off', - '@typescript-eslint/no-restricted-imports': 'off', + ...commonTestOverrides, }, }; diff --git a/package-lock.json b/package-lock.json index 6336572534a..cedc62f8f19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44281,8 +44281,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -44541,7 +44541,6 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", "@segment/analytics-node": "^1.1.4", - "@testing-library/user-event": "^13.5.0", "ampersand-view": "^9.0.0", "chai": "^4.3.4", "chalk": "^4.1.2", @@ -44641,8 +44640,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", @@ -44789,9 +44786,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44916,11 +44912,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44980,13 +44973,10 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -44996,7 +44986,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -45059,9 +45048,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -45100,9 +45086,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -45217,9 +45202,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", @@ -45669,8 +45653,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", @@ -45745,9 +45729,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "chai": "^4.3.6", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -45865,9 +45848,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -45935,14 +45917,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -45952,7 +45932,6 @@ "nyc": "^15.1.0", "p-queue": "^7.4.1", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" @@ -46130,8 +46109,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", @@ -46220,9 +46197,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.4.0", @@ -46551,7 +46527,7 @@ "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", + "@mongodb-js/testing-library-compass": "^1.0.0", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", @@ -46700,10 +46676,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.4.0", @@ -46774,9 +46748,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -46862,9 +46833,8 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/my-queries-storage": "^0.15.3", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", @@ -47028,9 +46998,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -47179,8 +47148,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -47556,9 +47523,6 @@ "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -47644,36 +47608,6 @@ "type-detect": "4.0.8" } }, - "packages/compass-web/node_modules/@testing-library/react-hooks": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz", - "integrity": "sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.12.5", - "react-error-boundary": "^3.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0", - "react": "^16.9.0 || ^17.0.0", - "react-dom": "^16.9.0 || ^17.0.0", - "react-test-renderer": "^16.9.0 || ^17.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-test-renderer": { - "optional": true - } - } - }, "packages/compass-web/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -47814,14 +47748,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -47830,7 +47762,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" @@ -48100,15 +48031,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", @@ -48118,7 +48046,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "xvfb-maybe": "^0.2.1" } @@ -48706,8 +48633,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "bson": "^6.7.0", "chai": "^4.2.0", "depcheck": "^1.4.1", @@ -48738,14 +48663,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", @@ -48753,7 +48676,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -48934,8 +48856,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", @@ -56617,8 +56539,8 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -56761,8 +56683,6 @@ "@mongodb-js/shell-bson-parser": "^1.1.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", @@ -56897,9 +56817,8 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/mongodb-constants": "^0.10.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57005,14 +56924,11 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", "@react-aria/interactions": "^3.9.1", "@react-aria/utils": "^3.13.1", "@react-aria/visually-hidden": "^3.3.1", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57075,13 +56991,10 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", @@ -57094,7 +57007,6 @@ "nyc": "^15.1.0", "prettier": "^2.7.1", "react": "^17.0.2", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -57139,9 +57051,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57206,9 +57115,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57278,9 +57186,8 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/reflux-state-mixin": "^1.0.6", "@mongodb-js/shell-bson-parser": "^1.1.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/reflux": "^6.4.3", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", @@ -57330,8 +57237,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", @@ -57452,8 +57357,8 @@ "@mongodb-js/explain-plan-helper": "^1.2.2", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", @@ -57523,9 +57428,8 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "bson-transpilers": "^3.0.8", "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", @@ -57628,9 +57532,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57691,14 +57594,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.6", @@ -57714,7 +57615,6 @@ "p-queue": "^7.4.1", "prettier": "^2.7.1", "react": "^17.0.2", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" @@ -57781,8 +57681,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", @@ -57869,9 +57767,8 @@ "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", @@ -58146,10 +58043,8 @@ "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/my-queries-storage": "^0.15.3", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", @@ -58216,9 +58111,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -58287,9 +58179,8 @@ "@mongodb-js/my-queries-storage": "^0.15.3", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/reflux-state-mixin": "^1.0.6", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", @@ -58831,9 +58722,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -58963,8 +58853,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -59307,9 +59195,6 @@ "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -59393,15 +59278,6 @@ } } }, - "@testing-library/react-hooks": { - "version": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz", - "integrity": "sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.12.5", - "react-error-boundary": "^3.1.0" - } - }, "buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -59515,14 +59391,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", @@ -59534,7 +59408,6 @@ "nyc": "^15.1.0", "prettier": "^2.7.1", "react": "^17.0.2", - "react-dom": "^17.0.2", "redux": "^4.2.1", "redux-thunk": "^2.4.2", "sinon": "^9.2.3", @@ -59718,15 +59591,12 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", @@ -59744,7 +59614,6 @@ "nyc": "^15.1.0", "prettier": "^2.7.1", "react": "^17.0.2", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "xvfb-maybe": "^0.2.1" }, @@ -59966,14 +59835,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "compass-preferences-model": "^2.28.2", @@ -59984,7 +59851,6 @@ "nyc": "^15.1.0", "prettier": "^2.7.1", "react": "^17.0.2", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -69583,7 +69449,7 @@ "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", + "@mongodb-js/testing-library-compass": "^1.0.0", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "bson": "^6.7.0", @@ -75506,8 +75372,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", @@ -81300,7 +81166,6 @@ "@mongodb-js/webpack-config-compass": "^1.4.1", "@mongosh/node-runtime-worker-thread": "^2.3.0", "@segment/analytics-node": "^1.1.4", - "@testing-library/user-event": "^13.5.0", "ampersand-view": "^9.0.0", "chai": "^4.3.4", "chalk": "^4.1.2", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 9d7c21acc00..10c2d3c9667 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -58,8 +58,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/atlas-service/src/store/atlas-signin-store.spec.ts b/packages/atlas-service/src/store/atlas-signin-store.spec.ts index dc941102028..da0e727c095 100644 --- a/packages/atlas-service/src/store/atlas-signin-store.spec.ts +++ b/packages/atlas-service/src/store/atlas-signin-store.spec.ts @@ -2,7 +2,7 @@ import { expect } from 'chai'; import type { AtlasAuthPluginServices } from './atlas-signin-store'; import { activatePlugin } from './atlas-signin-store'; import type { ActivateHelpers } from 'hadron-app-registry'; -import { waitFor } from '@testing-library/react'; +import { waitFor } from '@mongodb-js/testing-library-compass'; const activateHelpers = { on: () => {}, diff --git a/packages/compass-aggregations/package.json b/packages/compass-aggregations/package.json index 110813cc89f..3cb147bd4c9 100644 --- a/packages/compass-aggregations/package.json +++ b/packages/compass-aggregations/package.json @@ -37,8 +37,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", diff --git a/packages/compass-aggregations/src/components/add-stage/add-stage.spec.tsx b/packages/compass-aggregations/src/components/add-stage/add-stage.spec.tsx index a1fd48de2ea..297af38e3c1 100644 --- a/packages/compass-aggregations/src/components/add-stage/add-stage.spec.tsx +++ b/packages/compass-aggregations/src/components/add-stage/add-stage.spec.tsx @@ -2,7 +2,12 @@ import React, { type ComponentProps } from 'react'; import sinon from 'sinon'; import { expect } from 'chai'; import { AddStage } from './add-stage'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, +} from '@mongodb-js/testing-library-compass'; const renderAddStage = ( props: Partial> = {} diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/index.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/index.spec.tsx index 4370ddc1018..6bc96e366e8 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/index.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/index.spec.tsx @@ -1,9 +1,12 @@ import React from 'react'; import type { ComponentProps } from 'react'; import { AggregationSidePanel } from './index'; -import { cleanup, screen } from '@testing-library/react'; +import { + cleanup, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { DndContext } from '@dnd-kit/core'; -import userEvent from '@testing-library/user-event'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/field-combobox.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/field-combobox.spec.tsx index e86659a13ec..2bfe31c8f57 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/field-combobox.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/field-combobox.spec.tsx @@ -6,7 +6,7 @@ import { getParentPaths, isOptionDisabled, } from './field-combobox'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { setInputElementValue } from '../../../../test/form-helper'; import type { StageWizardFields } from '.'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/basic-group.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/basic-group.spec.tsx index 1f369668231..cb071c0ff2c 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/basic-group.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/basic-group.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { BasicGroup } from './basic-group'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-statistics.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-statistics.spec.tsx index 1a06d8e9b82..d677ccfa8d9 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-statistics.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-statistics.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { GroupWithStatistics } from './group-with-statistics'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-subset.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-subset.spec.tsx index f330c407e58..5120b7bf9ea 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-subset.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/group/group-with-subset.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { GroupWithSubset, diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/lookup/lookup.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/lookup/lookup.spec.tsx index 9e7fa93343f..6e7fe487743 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/lookup/lookup.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/lookup/lookup.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { LookupForm } from './lookup'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-condition-form.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-condition-form.spec.tsx index 1510037028e..2c45fbf6b13 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-condition-form.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-condition-form.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import Sinon from 'sinon'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import Condition, { LABELS, diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-group-form.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-group-form.spec.tsx index 63faaaf625e..303369a9acf 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-group-form.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match-group-form.spec.tsx @@ -1,8 +1,13 @@ import React from 'react'; import Sinon from 'sinon'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import Group, { makeCreateGroup, TEST_IDS } from './match-group-form'; import { setComboboxValue } from '../../../../../test/form-helper'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match.spec.tsx index 29b98363e86..0c8c2631bde 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/match/match.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { expect } from 'chai'; -import { render, cleanup } from '@testing-library/react'; +import { render, cleanup } from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import { Double } from 'bson'; import type { TypeCastTypes } from 'hadron-type-checker'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/project/project.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/project/project.spec.tsx index 483a6dbd27a..4d509491418 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/project/project.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/project/project.spec.tsx @@ -2,7 +2,12 @@ import React from 'react'; import type { ComponentProps } from 'react'; import ProjectForm, { mapProjectFormStateToStageValue } from './project'; import type { ProjectionType } from './project'; -import { render, screen, within, cleanup } from '@testing-library/react'; +import { + render, + screen, + within, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/search/text-search.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/search/text-search.spec.tsx index e7a28a1d083..45bef3fbb0b 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/search/text-search.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/search/text-search.spec.tsx @@ -1,6 +1,6 @@ import React, { type ComponentProps } from 'react'; import { TextSearch } from './text-search'; -import { screen, render } from '@testing-library/react'; +import { screen, render } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/sort/sort.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/sort/sort.spec.tsx index c156f886c2e..b486bd15060 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/sort/sort.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/sort/sort.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { render, screen, within } from '@mongodb-js/testing-library-compass'; +import { userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { SortForm } from './sort'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/use-case-card.spec.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/use-case-card.spec.tsx index 3a0f5029f73..35591c1aeb7 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/use-case-card.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/stage-wizard-use-cases/use-case-card.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import { expect } from 'chai'; import UseCaseCard from './use-case-card'; diff --git a/packages/compass-aggregations/src/components/aggregations/aggregations.spec.tsx b/packages/compass-aggregations/src/components/aggregations/aggregations.spec.tsx index 11bb59f633c..e6975a8f9e6 100644 --- a/packages/compass-aggregations/src/components/aggregations/aggregations.spec.tsx +++ b/packages/compass-aggregations/src/components/aggregations/aggregations.spec.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import Aggregations from '.'; import { renderWithStore } from '../../../test/configure-store'; -import { cleanup, screen } from '@testing-library/react'; +import { cleanup, screen } from '@mongodb-js/testing-library-compass'; describe('Aggregations [Component]', function () { beforeEach(async function () { diff --git a/packages/compass-aggregations/src/components/focus-mode/focus-mode-modal-header.spec.tsx b/packages/compass-aggregations/src/components/focus-mode/focus-mode-modal-header.spec.tsx index a20e8588cc3..ed3990e956f 100644 --- a/packages/compass-aggregations/src/components/focus-mode/focus-mode-modal-header.spec.tsx +++ b/packages/compass-aggregations/src/components/focus-mode/focus-mode-modal-header.spec.tsx @@ -1,7 +1,10 @@ import type { ComponentProps } from 'react'; import React from 'react'; -import { cleanup, render } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { FocusModeModalHeader } from './focus-mode-modal-header'; import Sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-editor.spec.tsx b/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-editor.spec.tsx index 3616031c52c..8486e4aab54 100644 --- a/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-editor.spec.tsx +++ b/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-editor.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { screen } from '@testing-library/react'; +import { screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-preview.spec.tsx b/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-preview.spec.tsx index 7fe2e8f8d8a..4b8de9984b0 100644 --- a/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-preview.spec.tsx +++ b/packages/compass-aggregations/src/components/focus-mode/focus-mode-stage-preview.spec.tsx @@ -1,7 +1,7 @@ import React, { type ComponentProps } from 'react'; import HadronDocument from 'hadron-document'; import type { Document } from 'mongodb'; -import { screen, within } from '@testing-library/react'; +import { screen, within } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { FocusModePreview, diff --git a/packages/compass-aggregations/src/components/focus-mode/focus-mode.spec.tsx b/packages/compass-aggregations/src/components/focus-mode/focus-mode.spec.tsx index bf372910a76..1482c873c41 100644 --- a/packages/compass-aggregations/src/components/focus-mode/focus-mode.spec.tsx +++ b/packages/compass-aggregations/src/components/focus-mode/focus-mode.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, screen, waitFor } from '@testing-library/react'; +import { cleanup, screen, waitFor } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/index.spec.tsx index a6afa2675f0..c86b4319ca6 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/index.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, screen, within } from '@testing-library/react'; +import { cleanup, screen, within } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; import { PipelineBuilderWorkspace } from '.'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/index.spec.tsx index 5a3b53ccf8c..5ab537052ac 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/index.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { screen } from '@testing-library/react'; +import { screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.spec.tsx index c15eb987e13..3bbdafa41c1 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { screen, within } from '@testing-library/react'; +import { screen, within } from '@mongodb-js/testing-library-compass'; import { MongoServerError } from 'mongodb'; import { expect } from 'chai'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-preview.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-preview.spec.tsx index 8b649503a09..23cfa7706d6 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-preview.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-preview.spec.tsx @@ -1,8 +1,7 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { screen, within } from '@testing-library/react'; +import { screen, within, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; import { renderWithStore } from '../../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-stages-preview.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-stages-preview.spec.tsx index c3e91763928..af9844c9192 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-stages-preview.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-stages-preview.spec.tsx @@ -1,9 +1,8 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { screen } from '@testing-library/react'; +import { screen, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; -import userEvent from '@testing-library/user-event'; import { renderWithStore } from '../../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/index.spec.tsx index 3f427f262af..f4b4db79025 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/index.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, screen } from '@testing-library/react'; +import { cleanup, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../../test/configure-store'; import PipelineBuilderUIWorkspace from '.'; diff --git a/packages/compass-aggregations/src/components/pipeline-results-workspace/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-results-workspace/index.spec.tsx index b8593d23c8c..938ced09c4c 100644 --- a/packages/compass-aggregations/src/components/pipeline-results-workspace/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-results-workspace/index.spec.tsx @@ -1,10 +1,9 @@ import HadronDocument from 'hadron-document'; import type { ComponentProps } from 'react'; import React from 'react'; -import { screen, within } from '@testing-library/react'; +import { screen, within, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import { renderWithStore } from '../../../test/configure-store'; import { PipelineResultsWorkspace } from './index'; diff --git a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination-count.spec.tsx b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination-count.spec.tsx index 8e41d858104..b3ae02d3d56 100644 --- a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination-count.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination-count.spec.tsx @@ -1,9 +1,13 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { render, screen, within } from '@testing-library/react'; +import { + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import { PipelinePaginationCount } from './pipeline-pagination-count'; diff --git a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination.spec.tsx b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination.spec.tsx index a7b6f87a8d1..cf0f63cb480 100644 --- a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-pagination.spec.tsx @@ -1,8 +1,7 @@ import React from 'react'; -import { screen, within } from '@testing-library/react'; +import { screen, within, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import { renderWithStore } from '../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-list.spec.tsx b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-list.spec.tsx index ed8e52f9181..a89a054aac9 100644 --- a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-list.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-list.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import HadronDocument from 'hadron-document'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import PipelineResultsList from './pipeline-results-list'; diff --git a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-view-controls.spec.tsx b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-view-controls.spec.tsx index 74acda18eec..dfd5b487fdf 100644 --- a/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-view-controls.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-results-workspace/pipeline-results-view-controls.spec.tsx @@ -1,8 +1,12 @@ import React from 'react'; -import { render, screen, within } from '@testing-library/react'; +import { + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import PipelineResultsViewControls from './pipeline-results-view-controls'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/index.spec.tsx index 579f9448318..aebf3b4664d 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/index.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { cleanup, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; import { PipelineToolbar } from './index'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.spec.tsx index df7f889394f..aa706f9dbb8 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.spec.tsx @@ -1,9 +1,13 @@ import React from 'react'; -import { cleanup, screen, waitFor } from '@testing-library/react'; +import { + cleanup, + screen, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; -import userEvent from '@testing-library/user-event'; import PipelineAI from './pipeline-ai'; import { MockAtlasAiService, diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/index.spec.tsx index 21fd95a339c..71a190aa0cf 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/index.spec.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import { screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { screen, within, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-actions.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-actions.spec.tsx index 400101b3a8c..74b4977e0f2 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-actions.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-actions.spec.tsx @@ -5,8 +5,8 @@ import { screen, waitFor, within, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-stages.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-stages.spec.tsx index 00e92306164..65abdd374f9 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-stages.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-header/pipeline-stages.spec.tsx @@ -1,7 +1,11 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/index.spec.tsx index 823411c0254..e8311d5b08b 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/index.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { screen, within } from '@testing-library/react'; +import { screen, within } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/pipeline-collation.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/pipeline-collation.spec.tsx index b1f1ade7bdf..24d74f62808 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/pipeline-collation.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-options/pipeline-collation.spec.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import { screen } from '@testing-library/react'; +import { screen, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; import { renderWithStore } from '../../../../test/configure-store'; import PipelineCollation from './pipeline-collation'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/index.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/index.spec.tsx index a00405948ae..f7d053e7758 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/index.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/index.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { cleanup, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-extra-settings.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-extra-settings.spec.tsx index da05ae4a94c..1351cdc86b7 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-extra-settings.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-extra-settings.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-menus.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-menus.spec.tsx index b437a8db7da..80ddf46063e 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-menus.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-menus.spec.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { render, screen, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-name.spec.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-name.spec.tsx index 910740350bb..d3833fab1fd 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-name.spec.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-settings/pipeline-name.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { PipelineName } from './pipeline-name'; diff --git a/packages/compass-aggregations/src/components/saved-pipelines/saved-pipelines.spec.tsx b/packages/compass-aggregations/src/components/saved-pipelines/saved-pipelines.spec.tsx index 6c809d15a57..b929789e70e 100644 --- a/packages/compass-aggregations/src/components/saved-pipelines/saved-pipelines.spec.tsx +++ b/packages/compass-aggregations/src/components/saved-pipelines/saved-pipelines.spec.tsx @@ -1,7 +1,11 @@ import React, { type ComponentProps } from 'react'; import { expect } from 'chai'; -import { render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import { SavedPipelines } from './saved-pipelines'; import type { SavedPipeline } from '@mongodb-js/my-queries-storage'; diff --git a/packages/compass-aggregations/src/components/stage-preview/index.spec.tsx b/packages/compass-aggregations/src/components/stage-preview/index.spec.tsx index e05305a3a1f..80a6e3f9c66 100644 --- a/packages/compass-aggregations/src/components/stage-preview/index.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-preview/index.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type { ComponentProps } from 'react'; import type { Document } from 'mongodb'; -import { screen, cleanup } from '@testing-library/react'; +import { screen, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/stage-preview/output-stage-preview.spec.tsx b/packages/compass-aggregations/src/components/stage-preview/output-stage-preview.spec.tsx index 4db48cf37f0..428e13b9836 100644 --- a/packages/compass-aggregations/src/components/stage-preview/output-stage-preview.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-preview/output-stage-preview.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; diff --git a/packages/compass-aggregations/src/components/stage-toolbar/index.spec.tsx b/packages/compass-aggregations/src/components/stage-toolbar/index.spec.tsx index a374637faa9..fc3d18e97a2 100644 --- a/packages/compass-aggregations/src/components/stage-toolbar/index.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-toolbar/index.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { screen } from '@testing-library/react'; +import { screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../../../test/configure-store'; diff --git a/packages/compass-aggregations/src/components/stage-toolbar/option-menu.spec.tsx b/packages/compass-aggregations/src/components/stage-toolbar/option-menu.spec.tsx index 9355cd9e2a6..5bc6bc05098 100644 --- a/packages/compass-aggregations/src/components/stage-toolbar/option-menu.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-toolbar/option-menu.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { OptionMenu } from './option-menu'; import sinon from 'sinon'; diff --git a/packages/compass-aggregations/src/components/stage-wizard/index.spec.tsx b/packages/compass-aggregations/src/components/stage-wizard/index.spec.tsx index d698a7f6eb4..88841c187eb 100644 --- a/packages/compass-aggregations/src/components/stage-wizard/index.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-wizard/index.spec.tsx @@ -1,7 +1,7 @@ import React from 'react'; import type { ComponentProps } from 'react'; import { StageWizard } from './index'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import * as StageWizardUseCases from '../aggregation-side-panel/stage-wizard-use-cases'; diff --git a/packages/compass-aggregations/src/components/use-case-droppable-area/index.spec.tsx b/packages/compass-aggregations/src/components/use-case-droppable-area/index.spec.tsx index 7505a1fb468..6f88f06234c 100644 --- a/packages/compass-aggregations/src/components/use-case-droppable-area/index.spec.tsx +++ b/packages/compass-aggregations/src/components/use-case-droppable-area/index.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import Sinon from 'sinon'; -import { render, cleanup, screen } from '@testing-library/react'; +import { render, cleanup, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import * as DndKit from '@dnd-kit/core'; import UseCaseDroppableArea from '.'; diff --git a/packages/compass-aggregations/src/plugin.spec.tsx b/packages/compass-aggregations/src/plugin.spec.tsx index 89970482e78..23cfe762682 100644 --- a/packages/compass-aggregations/src/plugin.spec.tsx +++ b/packages/compass-aggregations/src/plugin.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { screen } from '@testing-library/react'; +import { screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { renderWithStore } from '../test/configure-store'; import { AggregationsPlugin } from './plugin'; diff --git a/packages/compass-aggregations/test/form-helper.ts b/packages/compass-aggregations/test/form-helper.ts index 5dcc34c5c9a..a349f2a23a5 100644 --- a/packages/compass-aggregations/test/form-helper.ts +++ b/packages/compass-aggregations/test/form-helper.ts @@ -1,5 +1,4 @@ -import userEvent from '@testing-library/user-event'; -import { screen, within } from '@testing-library/react'; +import { screen, within, userEvent } from '@mongodb-js/testing-library-compass'; const _getContainer = (parentElement?: HTMLElement) => { if (!parentElement) { diff --git a/packages/compass-collection/package.json b/packages/compass-collection/package.json index 6d26525ccb6..3888462efe4 100644 --- a/packages/compass-collection/package.json +++ b/packages/compass-collection/package.json @@ -70,9 +70,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx b/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx index c0c0f68f632..27edfa32e3d 100644 --- a/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx +++ b/packages/compass-collection/src/components/collection-header-actions/collection-header-actions.spec.tsx @@ -1,6 +1,6 @@ import { expect } from 'chai'; import React, { type ComponentProps } from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import sinon from 'sinon'; import { WorkspacesServiceProvider, diff --git a/packages/compass-collection/src/components/collection-header/collection-header.spec.tsx b/packages/compass-collection/src/components/collection-header/collection-header.spec.tsx index e95c6cece94..ba64513eb99 100644 --- a/packages/compass-collection/src/components/collection-header/collection-header.spec.tsx +++ b/packages/compass-collection/src/components/collection-header/collection-header.spec.tsx @@ -1,8 +1,13 @@ import { expect } from 'chai'; import type { ComponentProps } from 'react'; import React from 'react'; -import { render, screen, cleanup, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { CollectionHeader } from './collection-header'; import { WorkspacesServiceProvider, diff --git a/packages/compass-collection/src/stores/collection-tab.spec.ts b/packages/compass-collection/src/stores/collection-tab.spec.ts index 1c4af935309..8f6445a7633 100644 --- a/packages/compass-collection/src/stores/collection-tab.spec.ts +++ b/packages/compass-collection/src/stores/collection-tab.spec.ts @@ -1,7 +1,7 @@ import type { CollectionTabOptions } from './collection-tab'; import { activatePlugin } from './collection-tab'; import { selectTab } from '../modules/collection-tab'; -import { waitFor } from '@testing-library/react'; +import { waitFor } from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import AppRegistry from 'hadron-app-registry'; import { expect } from 'chai'; diff --git a/packages/compass-components/package.json b/packages/compass-components/package.json index 384fcc183e4..6d9348e83a1 100644 --- a/packages/compass-components/package.json +++ b/packages/compass-components/package.json @@ -95,11 +95,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-components/src/components/accordion.spec.tsx b/packages/compass-components/src/components/accordion.spec.tsx index 10e35c79b39..815f66564c1 100644 --- a/packages/compass-components/src/components/accordion.spec.tsx +++ b/packages/compass-components/src/components/accordion.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { expect } from 'chai'; -import { fireEvent, render, screen, cleanup } from '@testing-library/react'; +import { + fireEvent, + render, + screen, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { Accordion } from './accordion'; diff --git a/packages/compass-components/src/components/breadcrumb.spec.tsx b/packages/compass-components/src/components/breadcrumb.spec.tsx index 88ff2a1650e..16ae6ee470b 100644 --- a/packages/compass-components/src/components/breadcrumb.spec.tsx +++ b/packages/compass-components/src/components/breadcrumb.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; import { expect } from 'chai'; -import { fireEvent, render, screen, cleanup } from '@testing-library/react'; +import { + fireEvent, + render, + screen, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { Breadcrumbs } from './breadcrumb'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/bson-value.spec.tsx b/packages/compass-components/src/components/bson-value.spec.tsx index 5f643cd682d..37a83b056b3 100644 --- a/packages/compass-components/src/components/bson-value.spec.tsx +++ b/packages/compass-components/src/components/bson-value.spec.tsx @@ -17,7 +17,7 @@ import { } from 'bson'; import BSONValue from './bson-value'; import { expect } from 'chai'; -import { render, cleanup, screen } from '@testing-library/react'; +import { render, cleanup, screen } from '@mongodb-js/testing-library-compass'; describe('BSONValue', function () { afterEach(cleanup); diff --git a/packages/compass-components/src/components/collapsible-field-set.spec.tsx b/packages/compass-components/src/components/collapsible-field-set.spec.tsx index 14cd86218b4..7b92a6e93d5 100644 --- a/packages/compass-components/src/components/collapsible-field-set.spec.tsx +++ b/packages/compass-components/src/components/collapsible-field-set.spec.tsx @@ -3,7 +3,7 @@ import { expect } from 'chai'; import sinon from 'sinon'; import { TextInput } from './leafygreen'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { CollapsibleFieldSet } from './collapsible-field-set'; diff --git a/packages/compass-components/src/components/combobox-with-custom-options.spec.tsx b/packages/compass-components/src/components/combobox-with-custom-options.spec.tsx index 101a764def6..58487318576 100644 --- a/packages/compass-components/src/components/combobox-with-custom-options.spec.tsx +++ b/packages/compass-components/src/components/combobox-with-custom-options.spec.tsx @@ -6,7 +6,7 @@ import { screen, cleanup, within, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import { ComboboxWithCustomOption } from './combobox-with-custom-option'; import { ComboboxOption } from './combobox/ComboboxOption'; diff --git a/packages/compass-components/src/components/content-with-fallback.spec.tsx b/packages/compass-components/src/components/content-with-fallback.spec.tsx index 3b130e58cbd..bd4daa3861c 100644 --- a/packages/compass-components/src/components/content-with-fallback.spec.tsx +++ b/packages/compass-components/src/components/content-with-fallback.spec.tsx @@ -1,6 +1,11 @@ /* eslint-disable react/prop-types */ import React from 'react'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; +import { + render, + screen, + cleanup, + waitFor, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { ContentWithFallback } from './content-with-fallback'; diff --git a/packages/compass-components/src/components/document-list/document-actions-group.spec.tsx b/packages/compass-components/src/components/document-list/document-actions-group.spec.tsx index d30a1048925..f4c6f38b470 100644 --- a/packages/compass-components/src/components/document-list/document-actions-group.spec.tsx +++ b/packages/compass-components/src/components/document-list/document-actions-group.spec.tsx @@ -1,7 +1,11 @@ import React from 'react'; import { expect } from 'chai'; -import { cleanup, render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import DocumentActionsGroup from './document-actions-group'; diff --git a/packages/compass-components/src/components/document-list/document.spec.tsx b/packages/compass-components/src/components/document-list/document.spec.tsx index 90dcf9f1edf..974c7813b6f 100644 --- a/packages/compass-components/src/components/document-list/document.spec.tsx +++ b/packages/compass-components/src/components/document-list/document.spec.tsx @@ -6,8 +6,8 @@ import { screen, within, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import HadronDocument from 'hadron-document'; import Document from './document'; diff --git a/packages/compass-components/src/components/document-list/visible-fields-toggle.spec.tsx b/packages/compass-components/src/components/document-list/visible-fields-toggle.spec.tsx index c66451ac6ab..adce1470375 100644 --- a/packages/compass-components/src/components/document-list/visible-fields-toggle.spec.tsx +++ b/packages/compass-components/src/components/document-list/visible-fields-toggle.spec.tsx @@ -1,7 +1,11 @@ import React, { useState } from 'react'; import { expect } from 'chai'; -import { cleanup, render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import VisibleFieldsToggle from './visible-field-toggle'; function TestComponent({ diff --git a/packages/compass-components/src/components/empty-content.spec.tsx b/packages/compass-components/src/components/empty-content.spec.tsx index ede44a765b8..fe56615de04 100644 --- a/packages/compass-components/src/components/empty-content.spec.tsx +++ b/packages/compass-components/src/components/empty-content.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { EmptyContent } from './empty-content'; diff --git a/packages/compass-components/src/components/error-boundary.spec.tsx b/packages/compass-components/src/components/error-boundary.spec.tsx index 7110dd94ad4..ff817884504 100644 --- a/packages/compass-components/src/components/error-boundary.spec.tsx +++ b/packages/compass-components/src/components/error-boundary.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/error-warning-summary.spec.tsx b/packages/compass-components/src/components/error-warning-summary.spec.tsx index bda1df4d722..fc8b5825b0b 100644 --- a/packages/compass-components/src/components/error-warning-summary.spec.tsx +++ b/packages/compass-components/src/components/error-warning-summary.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { ErrorSummary, WarningSummary } from './error-warning-summary'; diff --git a/packages/compass-components/src/components/feedback-popover.spec.tsx b/packages/compass-components/src/components/feedback-popover.spec.tsx index a876b833442..da19689f692 100644 --- a/packages/compass-components/src/components/feedback-popover.spec.tsx +++ b/packages/compass-components/src/components/feedback-popover.spec.tsx @@ -1,7 +1,11 @@ import React, { useState } from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { FeedbackPopover } from './feedback-popover'; diff --git a/packages/compass-components/src/components/file-input.spec.tsx b/packages/compass-components/src/components/file-input.spec.tsx index ffe72262901..565ade405c6 100644 --- a/packages/compass-components/src/components/file-input.spec.tsx +++ b/packages/compass-components/src/components/file-input.spec.tsx @@ -9,7 +9,7 @@ import { cleanup, fireEvent, waitFor, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import FileInput, { FileInputBackendProvider, diff --git a/packages/compass-components/src/components/guide-cue/guide-cue.spec.tsx b/packages/compass-components/src/components/guide-cue/guide-cue.spec.tsx index aa0bf0c3703..59b2a799c49 100644 --- a/packages/compass-components/src/components/guide-cue/guide-cue.spec.tsx +++ b/packages/compass-components/src/components/guide-cue/guide-cue.spec.tsx @@ -7,8 +7,8 @@ import { within, waitFor, waitForElementToBeRemoved, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { Icon, IconButton, Button } from '../..'; import * as GuideCueGroups from './guide-cue-groups'; import { GuideCue } from './guide-cue'; diff --git a/packages/compass-components/src/components/index-icon.spec.tsx b/packages/compass-components/src/components/index-icon.spec.tsx index 43a9d453a73..d4aafb26a7e 100644 --- a/packages/compass-components/src/components/index-icon.spec.tsx +++ b/packages/compass-components/src/components/index-icon.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, cleanup, screen } from '@testing-library/react'; +import { render, cleanup, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import IndexIcon from './index-icon'; diff --git a/packages/compass-components/src/components/index-keys-badge.spec.tsx b/packages/compass-components/src/components/index-keys-badge.spec.tsx index 23ad6fdad34..8babc4ccf4a 100644 --- a/packages/compass-components/src/components/index-keys-badge.spec.tsx +++ b/packages/compass-components/src/components/index-keys-badge.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { IndexKeysBadge } from './index-keys-badge'; diff --git a/packages/compass-components/src/components/inline-info-link.spec.tsx b/packages/compass-components/src/components/inline-info-link.spec.tsx index 6a4ad59edad..0c46d5d9076 100644 --- a/packages/compass-components/src/components/inline-info-link.spec.tsx +++ b/packages/compass-components/src/components/inline-info-link.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, cleanup, screen } from '@testing-library/react'; +import { render, cleanup, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { InlineInfoLink } from './inline-info-link'; diff --git a/packages/compass-components/src/components/interactive-popover.spec.tsx b/packages/compass-components/src/components/interactive-popover.spec.tsx index 5613fb4b2b2..defecead7da 100644 --- a/packages/compass-components/src/components/interactive-popover.spec.tsx +++ b/packages/compass-components/src/components/interactive-popover.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/item-action-controls.spec.tsx b/packages/compass-components/src/components/item-action-controls.spec.tsx index 96952d768e0..f2000c18753 100644 --- a/packages/compass-components/src/components/item-action-controls.spec.tsx +++ b/packages/compass-components/src/components/item-action-controls.spec.tsx @@ -1,10 +1,15 @@ import React from 'react'; -import { render, screen, cleanup, within } from '@testing-library/react'; +import { + render, + screen, + cleanup, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { ItemActionControls } from './item-action-controls'; -import userEvent from '@testing-library/user-event'; describe('item action controls components', function () { afterEach(cleanup); diff --git a/packages/compass-components/src/components/list-editor.spec.tsx b/packages/compass-components/src/components/list-editor.spec.tsx index 50c682bcfad..7a37c80afc8 100644 --- a/packages/compass-components/src/components/list-editor.spec.tsx +++ b/packages/compass-components/src/components/list-editor.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/loader.spec.tsx b/packages/compass-components/src/components/loader.spec.tsx index 39064b68d23..4c381b6a3b4 100644 --- a/packages/compass-components/src/components/loader.spec.tsx +++ b/packages/compass-components/src/components/loader.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; import sinon from 'sinon'; -import { render, cleanup, screen, fireEvent } from '@testing-library/react'; +import { + render, + cleanup, + screen, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { SpinLoader, CancelLoader } from './loader'; import { expect } from 'chai'; diff --git a/packages/compass-components/src/components/modals/confirmation-modal.spec.tsx b/packages/compass-components/src/components/modals/confirmation-modal.spec.tsx index e83178e1973..fc1a1ed0640 100644 --- a/packages/compass-components/src/components/modals/confirmation-modal.spec.tsx +++ b/packages/compass-components/src/components/modals/confirmation-modal.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import ConfirmationModal from './confirmation-modal'; diff --git a/packages/compass-components/src/components/options-toggle.spec.tsx b/packages/compass-components/src/components/options-toggle.spec.tsx index 0f709064da8..162bfe0e200 100644 --- a/packages/compass-components/src/components/options-toggle.spec.tsx +++ b/packages/compass-components/src/components/options-toggle.spec.tsx @@ -2,7 +2,12 @@ import React from 'react'; import { expect } from 'chai'; import sinon from 'sinon'; -import { fireEvent, render, screen, cleanup } from '@testing-library/react'; +import { + fireEvent, + render, + screen, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { OptionsToggle } from './options-toggle'; diff --git a/packages/compass-components/src/components/resize-handle.spec.tsx b/packages/compass-components/src/components/resize-handle.spec.tsx index 83bfc2f5540..0fd49435cd8 100644 --- a/packages/compass-components/src/components/resize-handle.spec.tsx +++ b/packages/compass-components/src/components/resize-handle.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { fireEvent, render, screen, cleanup } from '@testing-library/react'; +import { + fireEvent, + render, + screen, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/signal-popover.spec.tsx b/packages/compass-components/src/components/signal-popover.spec.tsx index 53c092da330..e7e72f65c39 100644 --- a/packages/compass-components/src/components/signal-popover.spec.tsx +++ b/packages/compass-components/src/components/signal-popover.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, cleanup, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + cleanup, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { SignalPopover, SignalHooksProvider } from './signal-popover'; import { expect } from 'chai'; import Sinon from 'sinon'; diff --git a/packages/compass-components/src/components/tab-nav-bar.spec.tsx b/packages/compass-components/src/components/tab-nav-bar.spec.tsx index 584ef20fbde..a1a0fe0b89a 100644 --- a/packages/compass-components/src/components/tab-nav-bar.spec.tsx +++ b/packages/compass-components/src/components/tab-nav-bar.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { fireEvent, render, cleanup, screen } from '@testing-library/react'; +import { + fireEvent, + render, + cleanup, + screen, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/virtual-list.spec.tsx b/packages/compass-components/src/components/virtual-list.spec.tsx index e93c91fd47f..c07150d9407 100644 --- a/packages/compass-components/src/components/virtual-list.spec.tsx +++ b/packages/compass-components/src/components/virtual-list.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; import { expect } from 'chai'; -import { cleanup, render, screen, waitFor } from '@testing-library/react'; +import { + cleanup, + render, + screen, + waitFor, +} from '@mongodb-js/testing-library-compass'; import { VirtualList, type VirtualListProps } from './virtual-list'; type Doc = { diff --git a/packages/compass-components/src/components/workspace-tabs/tab.spec.tsx b/packages/compass-components/src/components/workspace-tabs/tab.spec.tsx index 7acaf6044bf..e0cd38491bd 100644 --- a/packages/compass-components/src/components/workspace-tabs/tab.spec.tsx +++ b/packages/compass-components/src/components/workspace-tabs/tab.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/components/workspace-tabs/workspace-tabs.spec.tsx b/packages/compass-components/src/components/workspace-tabs/workspace-tabs.spec.tsx index ba9408b4f6b..ec0868042c2 100644 --- a/packages/compass-components/src/components/workspace-tabs/workspace-tabs.spec.tsx +++ b/packages/compass-components/src/components/workspace-tabs/workspace-tabs.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/hooks/use-confirmation.spec.tsx b/packages/compass-components/src/hooks/use-confirmation.spec.tsx index 3144e310255..84f57b6852a 100644 --- a/packages/compass-components/src/hooks/use-confirmation.spec.tsx +++ b/packages/compass-components/src/hooks/use-confirmation.spec.tsx @@ -5,8 +5,8 @@ import { waitFor, waitForElementToBeRemoved, within, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; diff --git a/packages/compass-components/src/hooks/use-hotkeys.spec.tsx b/packages/compass-components/src/hooks/use-hotkeys.spec.tsx index 24cacebcbd3..8ffed9e0000 100644 --- a/packages/compass-components/src/hooks/use-hotkeys.spec.tsx +++ b/packages/compass-components/src/hooks/use-hotkeys.spec.tsx @@ -1,6 +1,5 @@ -import { fireEvent } from '@testing-library/react'; +import { fireEvent, renderHook } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; -import { renderHook } from '@testing-library/react-hooks'; import { useHotkeys, formatHotkey } from './use-hotkeys'; import sinon from 'sinon'; diff --git a/packages/compass-components/src/hooks/use-sort.spec.ts b/packages/compass-components/src/hooks/use-sort.spec.ts index de965025fe8..af0e3cff926 100644 --- a/packages/compass-components/src/hooks/use-sort.spec.ts +++ b/packages/compass-components/src/hooks/use-sort.spec.ts @@ -1,7 +1,10 @@ import { expect } from 'chai'; -import { render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import { renderHook } from '@testing-library/react-hooks'; +import { + render, + screen, + userEvent, + renderHook, +} from '@mongodb-js/testing-library-compass'; import { useSortControls, useSortedItems } from './use-sort'; const sortBy = [ diff --git a/packages/compass-components/src/hooks/use-stacked-component.spec.tsx b/packages/compass-components/src/hooks/use-stacked-component.spec.tsx index 34517cab923..c4ea1772fd4 100644 --- a/packages/compass-components/src/hooks/use-stacked-component.spec.tsx +++ b/packages/compass-components/src/hooks/use-stacked-component.spec.tsx @@ -1,4 +1,4 @@ -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; diff --git a/packages/compass-components/src/hooks/use-toast.spec.tsx b/packages/compass-components/src/hooks/use-toast.spec.tsx index 9c1a77e27c9..e8e91979254 100644 --- a/packages/compass-components/src/hooks/use-toast.spec.tsx +++ b/packages/compass-components/src/hooks/use-toast.spec.tsx @@ -3,8 +3,8 @@ import { render, screen, waitForElementToBeRemoved, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; diff --git a/packages/compass-components/src/hooks/use-virtual-grid.test.tsx b/packages/compass-components/src/hooks/use-virtual-grid.test.tsx index 10409e8f7bc..9159d38c717 100644 --- a/packages/compass-components/src/hooks/use-virtual-grid.test.tsx +++ b/packages/compass-components/src/hooks/use-virtual-grid.test.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { useVirtualGridArrowNavigation } from './use-virtual-grid'; diff --git a/packages/compass-connection-import-export/package.json b/packages/compass-connection-import-export/package.json index 776a9f35136..2bed3977899 100644 --- a/packages/compass-connection-import-export/package.json +++ b/packages/compass-connection-import-export/package.json @@ -64,13 +64,10 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -80,7 +77,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/compass-connection-import-export/src/components/select-table.spec.tsx b/packages/compass-connection-import-export/src/components/select-table.spec.tsx index cb1edc15dbc..fbf10e60d49 100644 --- a/packages/compass-connection-import-export/src/components/select-table.spec.tsx +++ b/packages/compass-connection-import-export/src/components/select-table.spec.tsx @@ -1,4 +1,9 @@ -import { render, screen, fireEvent, cleanup } from '@testing-library/react'; +import { + render, + screen, + fireEvent, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; import sinon from 'sinon'; diff --git a/packages/compass-connection-import-export/src/hooks/common.spec.ts b/packages/compass-connection-import-export/src/hooks/common.spec.ts index e3262023d72..09974ba6c1e 100644 --- a/packages/compass-connection-import-export/src/hooks/common.spec.ts +++ b/packages/compass-connection-import-export/src/hooks/common.spec.ts @@ -5,7 +5,7 @@ import { COMMON_INITIAL_STATE, useOpenModalThroughIpc, } from './common'; -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act, waitFor } from '@mongodb-js/testing-library-compass'; import { useState } from 'react'; import EventEmitter from 'events'; @@ -56,7 +56,7 @@ describe('common utilities', function () { }); describe('useOpenModalThroughIpc', function () { - it("allows modifying a modal's state through ipc events", function () { + it("allows modifying a modal's state through ipc events", async function () { const fakeIpc = new EventEmitter(); const event = 'test:open-modal'; @@ -74,17 +74,19 @@ describe('common utilities', function () { expect(result.current.open).to.equal(false); expect(fakeIpc.listenerCount(event)).to.equal(1); - act(() => { - fakeIpc.emit(event); + fakeIpc.emit(event); + + await waitFor(() => { + expect(result.current.open).to.equal(true); + expect(fakeIpc.listenerCount(event)).to.equal(0); }); - expect(result.current.open).to.equal(true); - expect(fakeIpc.listenerCount(event)).to.equal(0); - act(() => { - result.current.setOpen(false); + result.current.setOpen(false); + + await waitFor(() => { + expect(result.current.open).to.equal(false); + expect(fakeIpc.listenerCount(event)).to.equal(1); }); - expect(result.current.open).to.equal(false); - expect(fakeIpc.listenerCount(event)).to.equal(1); }); }); }); diff --git a/packages/compass-connections-navigation/package.json b/packages/compass-connections-navigation/package.json index 72ac8d10d5b..6d33afc6345 100644 --- a/packages/compass-connections-navigation/package.json +++ b/packages/compass-connections-navigation/package.json @@ -64,9 +64,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx b/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx index 66562d1c663..7ca3baf3e9d 100644 --- a/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx +++ b/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx @@ -6,8 +6,8 @@ import { cleanup, within, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import Sinon from 'sinon'; import { ConnectionsNavigationTree } from './connections-navigation-tree'; diff --git a/packages/compass-connections-navigation/src/sc-connections-navigation-tree.spec.tsx b/packages/compass-connections-navigation/src/sc-connections-navigation-tree.spec.tsx index f592c3c52b5..4685d5f50d5 100644 --- a/packages/compass-connections-navigation/src/sc-connections-navigation-tree.spec.tsx +++ b/packages/compass-connections-navigation/src/sc-connections-navigation-tree.spec.tsx @@ -6,8 +6,8 @@ import { cleanup, within, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import Sinon from 'sinon'; import { ConnectionsNavigationTree } from './connections-navigation-tree'; diff --git a/packages/compass-connections-navigation/src/virtual-list/virtual-list.spec.tsx b/packages/compass-connections-navigation/src/virtual-list/virtual-list.spec.tsx index 905a384e7e8..3258b469cf8 100644 --- a/packages/compass-connections-navigation/src/virtual-list/virtual-list.spec.tsx +++ b/packages/compass-connections-navigation/src/virtual-list/virtual-list.spec.tsx @@ -1,6 +1,11 @@ import React, { useCallback, useMemo, useState } from 'react'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import type { VirtualItem } from './use-virtual-navigation-tree'; import { VirtualTree } from './virtual-list'; diff --git a/packages/compass-connections/package.json b/packages/compass-connections/package.json index ea8b49e6e8f..22e73398eb8 100644 --- a/packages/compass-connections/package.json +++ b/packages/compass-connections/package.json @@ -77,9 +77,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/dom": "^8.20.1", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-connections/src/components/connecting/connecting-animation.spec.tsx b/packages/compass-connections/src/components/connecting/connecting-animation.spec.tsx index 43f243f3061..bbd3d75a470 100644 --- a/packages/compass-connections/src/components/connecting/connecting-animation.spec.tsx +++ b/packages/compass-connections/src/components/connecting/connecting-animation.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render } from '@testing-library/react'; +import { render } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-connections/src/components/connecting/connecting.spec.tsx b/packages/compass-connections/src/components/connecting/connecting.spec.tsx index 64491f4b976..be9644c22a1 100644 --- a/packages/compass-connections/src/components/connecting/connecting.spec.tsx +++ b/packages/compass-connections/src/components/connecting/connecting.spec.tsx @@ -5,7 +5,7 @@ import { screen, fireEvent, waitFor, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-connections/src/components/connection-list/connection-list.spec.tsx b/packages/compass-connections/src/components/connection-list/connection-list.spec.tsx index fd4a8e65c26..e2d01bac0b0 100644 --- a/packages/compass-connections/src/components/connection-list/connection-list.spec.tsx +++ b/packages/compass-connections/src/components/connection-list/connection-list.spec.tsx @@ -5,8 +5,8 @@ import { fireEvent, waitFor, cleanup, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { ConnectionInfo } from '@mongodb-js/connection-storage/renderer'; diff --git a/packages/compass-connections/src/components/connection-list/connection.spec.tsx b/packages/compass-connections/src/components/connection-list/connection.spec.tsx index bce3372c16f..f9da0135919 100644 --- a/packages/compass-connections/src/components/connection-list/connection.spec.tsx +++ b/packages/compass-connections/src/components/connection-list/connection.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-connections/src/hooks/use-connection-repository.spec.ts b/packages/compass-connections/src/hooks/use-connection-repository.spec.ts index 70315585a63..2f44ab10a95 100644 --- a/packages/compass-connections/src/hooks/use-connection-repository.spec.ts +++ b/packages/compass-connections/src/hooks/use-connection-repository.spec.ts @@ -1,7 +1,7 @@ import { useConnectionRepository } from './use-connection-repository'; import { expect } from 'chai'; import Sinon from 'sinon'; -import { cleanup } from '@testing-library/react'; +import { cleanup } from '@mongodb-js/testing-library-compass'; import { createDefaultConnectionInfo, renderHookWithConnections, diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 528faeda72a..5cf35908561 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -52,9 +52,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", diff --git a/packages/compass-crud/src/components/bulk-actions-toasts.spec.tsx b/packages/compass-crud/src/components/bulk-actions-toasts.spec.tsx index 6f6095f0e89..6d9f53d989c 100644 --- a/packages/compass-crud/src/components/bulk-actions-toasts.spec.tsx +++ b/packages/compass-crud/src/components/bulk-actions-toasts.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { ToastArea } from '@mongodb-js/compass-components'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { openBulkDeleteSuccessToast, openBulkDeleteProgressToast, diff --git a/packages/compass-crud/src/components/bulk-delete-modal.spec.tsx b/packages/compass-crud/src/components/bulk-delete-modal.spec.tsx index 42e0355ddeb..c6fdedfec0b 100644 --- a/packages/compass-crud/src/components/bulk-delete-modal.spec.tsx +++ b/packages/compass-crud/src/components/bulk-delete-modal.spec.tsx @@ -1,8 +1,12 @@ import React from 'react'; import { expect } from 'chai'; import sinon from 'sinon'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import BulkDeleteModal from './bulk-delete-modal'; function renderBulkDeleteModal( diff --git a/packages/compass-crud/src/components/bulk-update-modal.spec.tsx b/packages/compass-crud/src/components/bulk-update-modal.spec.tsx index 6b9f12d33fc..c8db1e1af91 100644 --- a/packages/compass-crud/src/components/bulk-update-modal.spec.tsx +++ b/packages/compass-crud/src/components/bulk-update-modal.spec.tsx @@ -1,8 +1,13 @@ import React from 'react'; import { expect } from 'chai'; import sinon from 'sinon'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import BulkUpdateModal from './bulk-update-modal'; import { FavoriteQueryStorageProvider } from '@mongodb-js/my-queries-storage/provider'; diff --git a/packages/compass-crud/src/components/change-view/change-view.spec.tsx b/packages/compass-crud/src/components/change-view/change-view.spec.tsx index bfb5dc8e0f0..2eddb248ebd 100644 --- a/packages/compass-crud/src/components/change-view/change-view.spec.tsx +++ b/packages/compass-crud/src/components/change-view/change-view.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { ChangeView } from './change-view'; import { fixtureGroups } from '../../../test/before-after-fixtures'; diff --git a/packages/compass-crud/src/components/crud-toolbar.spec.tsx b/packages/compass-crud/src/components/crud-toolbar.spec.tsx index 295ef0999b2..77b4643f491 100644 --- a/packages/compass-crud/src/components/crud-toolbar.spec.tsx +++ b/packages/compass-crud/src/components/crud-toolbar.spec.tsx @@ -7,8 +7,8 @@ import { screen, cleanup, within, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { CrudToolbar } from './crud-toolbar'; diff --git a/packages/compass-crud/src/components/table-view/add-field-button.spec.tsx b/packages/compass-crud/src/components/table-view/add-field-button.spec.tsx index 710bf1c6288..431583d157e 100644 --- a/packages/compass-crud/src/components/table-view/add-field-button.spec.tsx +++ b/packages/compass-crud/src/components/table-view/add-field-button.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { expect } from 'chai'; -import { render, cleanup, screen, fireEvent } from '@testing-library/react'; +import { + render, + cleanup, + screen, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { getNode, diff --git a/packages/compass-crud/src/components/table-view/types-dropdown.spec.tsx b/packages/compass-crud/src/components/table-view/types-dropdown.spec.tsx index 7467c8b93b8..c8ef63a3b9e 100644 --- a/packages/compass-crud/src/components/table-view/types-dropdown.spec.tsx +++ b/packages/compass-crud/src/components/table-view/types-dropdown.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { cleanup, fireEvent, render, screen } from '@testing-library/react'; +import { + cleanup, + fireEvent, + render, + screen, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Element } from 'hadron-document'; import TypesDropdown from './types-dropdown'; diff --git a/packages/compass-crud/src/components/virtualized-document-json-view.spec.tsx b/packages/compass-crud/src/components/virtualized-document-json-view.spec.tsx index 2a098981b58..0c8060d267a 100644 --- a/packages/compass-crud/src/components/virtualized-document-json-view.spec.tsx +++ b/packages/compass-crud/src/components/virtualized-document-json-view.spec.tsx @@ -1,8 +1,14 @@ import React from 'react'; import { expect } from 'chai'; import HadronDocument from 'hadron-document'; -import userEvents from '@testing-library/user-event'; -import { render, screen, cleanup, within, act } from '@testing-library/react'; +import { + render, + screen, + cleanup, + within, + act, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { type VirtualListRef } from '@mongodb-js/compass-components'; import VirtualizedDocumentJsonView from './virtualized-document-json-view'; @@ -93,7 +99,7 @@ describe('VirtualizedDocumentJsonView', function () { expect(within(firstDocumentElement).getByText('"Name0"')).to.be.visible; // Start editing the document - userEvents.click(within(firstDocumentElement).getByLabelText('Edit')); + userEvent.click(within(firstDocumentElement).getByLabelText('Edit')); // Verify that we have an editing state expect(within(firstDocumentElement).getByText('Cancel')).to.be.visible; @@ -139,7 +145,7 @@ describe('VirtualizedDocumentJsonView', function () { let [documentElement] = screen.getAllByTestId('editable-json'); // Start editing the document - userEvents.click(within(documentElement).getByLabelText('Edit')); + userEvent.click(within(documentElement).getByLabelText('Edit')); // Verify that we have an editing state expect(within(documentElement).getByText('Cancel')).to.be.visible; diff --git a/packages/compass-crud/src/components/virtualized-document-list-view.spec.tsx b/packages/compass-crud/src/components/virtualized-document-list-view.spec.tsx index 0a8b082a588..cdbb368efc1 100644 --- a/packages/compass-crud/src/components/virtualized-document-list-view.spec.tsx +++ b/packages/compass-crud/src/components/virtualized-document-list-view.spec.tsx @@ -1,8 +1,14 @@ import React from 'react'; import { expect } from 'chai'; import HadronDocument from 'hadron-document'; -import userEvents from '@testing-library/user-event'; -import { render, screen, cleanup, within, act } from '@testing-library/react'; +import { + render, + screen, + cleanup, + within, + act, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { type VirtualListRef } from '@mongodb-js/compass-components'; import VirtualizedDocumentListView from './virtualized-document-list-view'; @@ -104,7 +110,7 @@ describe('VirtualizedDocumentListView', function () { ).to.have.attribute('data-id', firstDocument.uuid); // Start editing the document - userEvents.click( + userEvent.click( within(firstDocumentElement).getByLabelText('Edit document') ); @@ -157,7 +163,7 @@ describe('VirtualizedDocumentListView', function () { let [documentElement] = screen.getAllByTestId('editable-document'); // Start editing the document - userEvents.click(within(documentElement).getByLabelText('Edit document')); + userEvent.click(within(documentElement).getByLabelText('Edit document')); // Verify that we have an editing state expect(within(documentElement).getByText('Cancel')).to.be.visible; diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index 32c6caf6897..90b43737d54 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -51,8 +51,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", diff --git a/packages/compass-explain-plan/src/components/explain-plan-modal.spec.tsx b/packages/compass-explain-plan/src/components/explain-plan-modal.spec.tsx index aaa7246c82b..fa0e0cb6ace 100644 --- a/packages/compass-explain-plan/src/components/explain-plan-modal.spec.tsx +++ b/packages/compass-explain-plan/src/components/explain-plan-modal.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; import { expect } from 'chai'; -import { cleanup, screen, render as _render } from '@testing-library/react'; +import { + cleanup, + screen, + render as _render, +} from '@mongodb-js/testing-library-compass'; import type { ExplainPlanModalProps } from './explain-plan-modal'; import { ExplainPlanModal } from './explain-plan-modal'; import { Provider } from 'react-redux'; diff --git a/packages/compass-explain-plan/src/components/explain-plan-view.spec.tsx b/packages/compass-explain-plan/src/components/explain-plan-view.spec.tsx index 170b21f4eda..6abbcc1121d 100644 --- a/packages/compass-explain-plan/src/components/explain-plan-view.spec.tsx +++ b/packages/compass-explain-plan/src/components/explain-plan-view.spec.tsx @@ -1,5 +1,9 @@ import React from 'react'; -import { cleanup, render as _render, screen } from '@testing-library/react'; +import { + cleanup, + render as _render, + screen, +} from '@mongodb-js/testing-library-compass'; import { ExplainPlanView } from './explain-plan-view'; import type { Stage } from '@mongodb-js/explain-plan-helper'; import { ExplainPlan } from '@mongodb-js/explain-plan-helper'; diff --git a/packages/compass-explain-plan/src/components/explain-tree/explain-tree-stage.spec.tsx b/packages/compass-explain-plan/src/components/explain-tree/explain-tree-stage.spec.tsx index f38d50373be..640161a8af4 100644 --- a/packages/compass-explain-plan/src/components/explain-tree/explain-tree-stage.spec.tsx +++ b/packages/compass-explain-plan/src/components/explain-tree/explain-tree-stage.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, cleanup } from '@testing-library/react'; +import { render, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { diff --git a/packages/compass-explain-plan/src/components/explain-tree/explain-tree.spec.tsx b/packages/compass-explain-plan/src/components/explain-tree/explain-tree.spec.tsx index 43a7a1f521f..604409dbfd3 100644 --- a/packages/compass-explain-plan/src/components/explain-tree/explain-tree.spec.tsx +++ b/packages/compass-explain-plan/src/components/explain-tree/explain-tree.spec.tsx @@ -1,4 +1,4 @@ -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; diff --git a/packages/compass-export-to-language/package.json b/packages/compass-export-to-language/package.json index 08701897265..0411f47c8b5 100644 --- a/packages/compass-export-to-language/package.json +++ b/packages/compass-export-to-language/package.json @@ -64,13 +64,12 @@ "redux": "^4.2.1" }, "devDependencies": { + "@mongodb-js/compass-logging": "^1.4.6", "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/compass-logging": "^1.4.6", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "chai": "^4.3.6", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/compass-export-to-language/src/index.spec.tsx b/packages/compass-export-to-language/src/index.spec.tsx index 9819476fb8d..38d026202a1 100644 --- a/packages/compass-export-to-language/src/index.spec.tsx +++ b/packages/compass-export-to-language/src/index.spec.tsx @@ -1,13 +1,12 @@ import React from 'react'; -import AppRegistry from 'hadron-app-registry'; import { screen, render, cleanup, within, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import ExportToLanguagePlugin from './'; import { expect } from 'chai'; import { prettify } from '@mongodb-js/compass-editor'; @@ -35,7 +34,6 @@ const allTypesPrettyStr = prettify( ).replace(/\n/g, ''); describe('ExportToLanguagePlugin', function () { - const appRegistry = new AppRegistry(); const dataService = { getConnectionString() { return Object.assign(new URL('mongodb://localhost:27020'), { @@ -46,7 +44,6 @@ describe('ExportToLanguagePlugin', function () { }, }; const Plugin = ExportToLanguagePlugin.withMockServices({ - localAppRegistry: appRegistry, dataService: dataService as any, }); @@ -56,9 +53,11 @@ describe('ExportToLanguagePlugin', function () { describe('on `open-query-export-to-language` event', function () { it('should show query export to language modal', function () { - render(); + const { localAppRegistry } = render( + + ); - appRegistry.emit('open-query-export-to-language', { + localAppRegistry.emit('open-query-export-to-language', { filter: allTypesStr, }); @@ -68,9 +67,11 @@ describe('ExportToLanguagePlugin', function () { }); it('should show other query options in the export', function () { - render(); + const { localAppRegistry } = render( + + ); - appRegistry.emit('open-query-export-to-language', { + localAppRegistry.emit('open-query-export-to-language', { filter: '{ foo: {$exists: true } }', project: '{ foo: 1 }', sort: '{ _id: -1 }', @@ -116,9 +117,11 @@ result = client['db']['coll'].find( describe('on `open-aggregation-export-to-language` event', function () { it('should show aggregation export to language modal', function () { - render(); + const { localAppRegistry } = render( + + ); - appRegistry.emit('open-aggregation-export-to-language', allTypesStr); + localAppRegistry.emit('open-aggregation-export-to-language', allTypesStr); expect(screen.getByTestId('export-to-language-input').textContent).to.eq( allTypesPrettyStr @@ -129,7 +132,7 @@ result = client['db']['coll'].find( describe('on "Copy" button clicked', function () { it('should emit telemetry event', async function () { const track = Sinon.stub(); - render( + const { localAppRegistry } = render( ); - appRegistry.emit('open-aggregation-export-to-language', '[]'); + + localAppRegistry.emit('open-aggregation-export-to-language', '[]'); track.resetHistory(); diff --git a/packages/compass-find-in-page/package.json b/packages/compass-find-in-page/package.json index 157827e9e38..ea84338120b 100644 --- a/packages/compass-find-in-page/package.json +++ b/packages/compass-find-in-page/package.json @@ -51,9 +51,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-find-in-page/src/components/find-in-page-input.spec.tsx b/packages/compass-find-in-page/src/components/find-in-page-input.spec.tsx index 6fe90a2e15a..ce982841b37 100644 --- a/packages/compass-find-in-page/src/components/find-in-page-input.spec.tsx +++ b/packages/compass-find-in-page/src/components/find-in-page-input.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + fireEvent, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-generative-ai/package.json b/packages/compass-generative-ai/package.json index db3636fb8c2..1a099ff4dd7 100644 --- a/packages/compass-generative-ai/package.json +++ b/packages/compass-generative-ai/package.json @@ -67,14 +67,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -84,7 +82,6 @@ "nyc": "^15.1.0", "p-queue": "^7.4.1", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" diff --git a/packages/compass-generative-ai/src/components/generative-ai-input.spec.tsx b/packages/compass-generative-ai/src/components/generative-ai-input.spec.tsx index 94737d8b49e..26c24067eb9 100644 --- a/packages/compass-generative-ai/src/components/generative-ai-input.spec.tsx +++ b/packages/compass-generative-ai/src/components/generative-ai-input.spec.tsx @@ -1,10 +1,15 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, render, screen, waitFor } from '@testing-library/react'; +import { + cleanup, + render, + screen, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { SinonSpy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import { GenerativeAIInput } from './generative-ai-input'; diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index ba7212952d9..2ba8929dc6e 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -84,8 +84,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", diff --git a/packages/compass-import-export/src/components/export-code-view.spec.tsx b/packages/compass-import-export/src/components/export-code-view.spec.tsx index 71b67d1f40b..fcb1d0878b4 100644 --- a/packages/compass-import-export/src/components/export-code-view.spec.tsx +++ b/packages/compass-import-export/src/components/export-code-view.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { ObjectId } from 'bson'; diff --git a/packages/compass-import-export/src/components/export-modal.spec.tsx b/packages/compass-import-export/src/components/export-modal.spec.tsx index e68b052fa2a..c0b9f89eba3 100644 --- a/packages/compass-import-export/src/components/export-modal.spec.tsx +++ b/packages/compass-import-export/src/components/export-modal.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { configureStore } from '../stores/export-store'; import { ExportModal } from './export-modal'; diff --git a/packages/compass-import-export/src/components/export-select-fields.spec.tsx b/packages/compass-import-export/src/components/export-select-fields.spec.tsx index ff6b5b3392a..fa5e4bbf482 100644 --- a/packages/compass-import-export/src/components/export-select-fields.spec.tsx +++ b/packages/compass-import-export/src/components/export-select-fields.spec.tsx @@ -1,7 +1,6 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, userEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; import { UnconnectedExportSelectFields as ExportSelectFields } from './export-select-fields'; import { getIdForSchemaPath } from '../modules/export'; diff --git a/packages/compass-import-export/src/components/import-preview.spec.tsx b/packages/compass-import-export/src/components/import-preview.spec.tsx index 3ea3ab4d5a9..8108b0795cc 100644 --- a/packages/compass-import-export/src/components/import-preview.spec.tsx +++ b/packages/compass-import-export/src/components/import-preview.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import sinon from 'sinon'; import { expect } from 'chai'; diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index 4d9c58f2417..011bbf0a703 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -51,9 +51,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.4.0", diff --git a/packages/compass-indexes/src/components/create-index-actions/create-index-actions.spec.jsx b/packages/compass-indexes/src/components/create-index-actions/create-index-actions.spec.jsx index 1764f6ade53..7e6efea9fa1 100644 --- a/packages/compass-indexes/src/components/create-index-actions/create-index-actions.spec.jsx +++ b/packages/compass-indexes/src/components/create-index-actions/create-index-actions.spec.jsx @@ -8,7 +8,7 @@ import { cleanup, fireEvent, within, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import CreateIndexActions from '../create-index-actions'; diff --git a/packages/compass-indexes/src/components/create-index-fields.spec.tsx b/packages/compass-indexes/src/components/create-index-fields.spec.tsx index fd6cbf373f3..008aa5de90e 100644 --- a/packages/compass-indexes/src/components/create-index-fields.spec.tsx +++ b/packages/compass-indexes/src/components/create-index-fields.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; +import { + render, + screen, + cleanup, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { CreateIndexFields } from './create-index-fields'; diff --git a/packages/compass-indexes/src/components/indexes-table/badge-with-icon-link.spec.tsx b/packages/compass-indexes/src/components/indexes-table/badge-with-icon-link.spec.tsx index 2f5587767c7..46f66bec134 100644 --- a/packages/compass-indexes/src/components/indexes-table/badge-with-icon-link.spec.tsx +++ b/packages/compass-indexes/src/components/indexes-table/badge-with-icon-link.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import BadgeWithIconLink from './badge-with-icon-link'; diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx index 03e1f070a66..d22726dad06 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/compass-indexes/src/components/indexes/indexes.spec.tsx b/packages/compass-indexes/src/components/indexes/indexes.spec.tsx index 3fea526c22d..f75819ab2fd 100644 --- a/packages/compass-indexes/src/components/indexes/indexes.spec.tsx +++ b/packages/compass-indexes/src/components/indexes/indexes.spec.tsx @@ -7,7 +7,7 @@ import { within, fireEvent, waitFor, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { RegularIndex } from '../../modules/regular-indexes'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/index-actions.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/index-actions.spec.tsx index f45898c1214..93bcdf62512 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/index-actions.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/index-actions.spec.tsx @@ -1,9 +1,13 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { + cleanup, + render, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import IndexActions from './index-actions'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/property-field.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/property-field.spec.tsx index 953986486ef..4bd91314221 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/property-field.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/property-field.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import PropertyField, { getPropertyTooltip } from './property-field'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/regular-indexes-table.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/regular-indexes-table.spec.tsx index 0f7e4135440..a07c89e45ab 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/regular-indexes-table.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/regular-indexes-table.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { RegularIndexesTable } from './regular-indexes-table'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/size-field.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/size-field.spec.tsx index 61b993c127c..6ed53c69927 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/size-field.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/size-field.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import SizeField, { formatSize, getSizeTooltip } from './size-field'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/type-field.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/type-field.spec.tsx index 53d4267bf77..5f0990c36ce 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/type-field.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/type-field.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; +import { + cleanup, + render, + screen, + within, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import TypeField, { IndexTypeTooltip, canRenderTooltip } from './type-field'; diff --git a/packages/compass-indexes/src/components/regular-indexes-table/usage-field.spec.tsx b/packages/compass-indexes/src/components/regular-indexes-table/usage-field.spec.tsx index 2a6fd0ffa8d..4b80dc5a32b 100644 --- a/packages/compass-indexes/src/components/regular-indexes-table/usage-field.spec.tsx +++ b/packages/compass-indexes/src/components/regular-indexes-table/usage-field.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import UsageField, { getUsageTooltip } from './usage-field'; diff --git a/packages/compass-indexes/src/components/search-index-template-dropdown/index.spec.tsx b/packages/compass-indexes/src/components/search-index-template-dropdown/index.spec.tsx index 13d2894bf0a..f398cae55ec 100644 --- a/packages/compass-indexes/src/components/search-index-template-dropdown/index.spec.tsx +++ b/packages/compass-indexes/src/components/search-index-template-dropdown/index.spec.tsx @@ -3,9 +3,12 @@ import { expect } from 'chai'; import { SearchIndexTemplateDropdown } from './'; import sinon from 'sinon'; import type { SinonSpy } from 'sinon'; - -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import React from 'react'; diff --git a/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.spec.tsx b/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.spec.tsx index dec5f39f765..33b2e7cbad8 100644 --- a/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.spec.tsx +++ b/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.spec.tsx @@ -6,8 +6,13 @@ import { expect } from 'chai'; import { BaseSearchIndexModal } from './base-search-index-modal'; import sinon from 'sinon'; import type { SinonSpy } from 'sinon'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import React from 'react'; import { diff --git a/packages/compass-indexes/src/components/search-indexes-modals/update-search-index-modal.spec.tsx b/packages/compass-indexes/src/components/search-indexes-modals/update-search-index-modal.spec.tsx index 5734cddb132..6534483102d 100644 --- a/packages/compass-indexes/src/components/search-indexes-modals/update-search-index-modal.spec.tsx +++ b/packages/compass-indexes/src/components/search-indexes-modals/update-search-index-modal.spec.tsx @@ -1,7 +1,11 @@ import React from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { UpdateSearchIndexModal } from './update-search-index-modal'; diff --git a/packages/compass-indexes/src/components/search-indexes-table/search-index-actions.spec.tsx b/packages/compass-indexes/src/components/search-indexes-table/search-index-actions.spec.tsx index d766030dd4f..eeaa9ccad8b 100644 --- a/packages/compass-indexes/src/components/search-indexes-table/search-index-actions.spec.tsx +++ b/packages/compass-indexes/src/components/search-indexes-table/search-index-actions.spec.tsx @@ -1,9 +1,13 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { + cleanup, + render, + screen, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; -import userEvent from '@testing-library/user-event'; import type { SearchIndex } from 'mongodb-data-service'; import SearchIndexActions from './search-index-actions'; diff --git a/packages/compass-indexes/src/components/search-indexes-table/search-indexes-table.spec.tsx b/packages/compass-indexes/src/components/search-indexes-table/search-indexes-table.spec.tsx index 9c235665d45..a17eb411f19 100644 --- a/packages/compass-indexes/src/components/search-indexes-table/search-indexes-table.spec.tsx +++ b/packages/compass-indexes/src/components/search-indexes-table/search-indexes-table.spec.tsx @@ -6,8 +6,8 @@ import { fireEvent, within, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { Document } from 'mongodb'; diff --git a/packages/compass-indexes/src/stores/drop-index.spec.tsx b/packages/compass-indexes/src/stores/drop-index.spec.tsx index 983be8afc83..1c9b7883f01 100644 --- a/packages/compass-indexes/src/stores/drop-index.spec.tsx +++ b/packages/compass-indexes/src/stores/drop-index.spec.tsx @@ -1,31 +1,32 @@ import React from 'react'; -import { cleanup, render, screen, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { DropIndexPlugin } from '../index'; import Sinon from 'sinon'; -import AppRegistry from 'hadron-app-registry'; import { expect } from 'chai'; describe('DropIndexPlugin', function () { - const appRegistry = new AppRegistry(); const sandbox = Sinon.createSandbox(); const dataService = { dropIndex: sandbox.stub().resolves(), }; const Plugin = DropIndexPlugin.withMockServices({ - localAppRegistry: appRegistry, dataService, }); afterEach(function () { - appRegistry.deactivate(); sandbox.resetHistory(); cleanup(); }); it('should show success toast when index is successfully dropped', async function () { - render(); - appRegistry.emit('open-drop-index-modal', 'index_1'); + const { localAppRegistry } = render(); + localAppRegistry.emit('open-drop-index-modal', 'index_1'); await waitFor(() => { screen.getByText('Drop Index'); }); @@ -42,8 +43,8 @@ describe('DropIndexPlugin', function () { it('should show error toast when dropping index failed', async function () { dataService.dropIndex.rejects(new Error('Index was not dropped, whoops!')); - render(); - appRegistry.emit('open-drop-index-modal', 'index_1'); + const { localAppRegistry } = render(); + localAppRegistry.emit('open-drop-index-modal', 'index_1'); await waitFor(() => { screen.getByText('Drop Index'); }); diff --git a/packages/compass-preferences-model/package.json b/packages/compass-preferences-model/package.json index 9ffa054264f..b0265f1a6ba 100644 --- a/packages/compass-preferences-model/package.json +++ b/packages/compass-preferences-model/package.json @@ -64,7 +64,7 @@ "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", + "@mongodb-js/testing-library-compass": "^1.0.0", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", diff --git a/packages/compass-preferences-model/src/react.spec.tsx b/packages/compass-preferences-model/src/react.spec.tsx index b65e9a5e3a3..970d353c7ab 100644 --- a/packages/compass-preferences-model/src/react.spec.tsx +++ b/packages/compass-preferences-model/src/react.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import type { AllPreferences } from './'; import { createSandboxFromDefaultPreferences } from './index'; diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index 5bed04b9354..efb85b7912b 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -51,10 +51,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.4.0", diff --git a/packages/compass-query-bar/src/components/hooks.spec.tsx b/packages/compass-query-bar/src/components/hooks.spec.tsx index e33da3a2309..e0c66061ecb 100644 --- a/packages/compass-query-bar/src/components/hooks.spec.tsx +++ b/packages/compass-query-bar/src/components/hooks.spec.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { Provider } from '../stores/context'; import { configureStore } from '../stores/query-bar-store'; import { useIsLastAppliedQueryOutdated } from './hooks'; -import { renderHook, cleanup } from '@testing-library/react-hooks'; +import { renderHook, cleanup } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { applyQuery, changeField } from '../stores/query-bar-reducer'; diff --git a/packages/compass-query-bar/src/components/option-editor.spec.tsx b/packages/compass-query-bar/src/components/option-editor.spec.tsx index 6b9698e6ddc..d8e15fa5961 100644 --- a/packages/compass-query-bar/src/components/option-editor.spec.tsx +++ b/packages/compass-query-bar/src/components/option-editor.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { expect } from 'chai'; -import { cleanup, render, screen, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { OptionEditor } from './option-editor'; import type { SinonSpy } from 'sinon'; import { applyFromHistory } from '../stores/query-bar-reducer'; diff --git a/packages/compass-query-bar/src/components/query-ai.spec.tsx b/packages/compass-query-bar/src/components/query-ai.spec.tsx index ef2b9137851..6c1b11db23b 100644 --- a/packages/compass-query-bar/src/components/query-ai.spec.tsx +++ b/packages/compass-query-bar/src/components/query-ai.spec.tsx @@ -1,11 +1,16 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, render, screen, waitFor } from '@testing-library/react'; +import { + cleanup, + render, + screen, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { SinonSpy } from 'sinon'; import { Provider } from '../stores/context'; -import userEvent from '@testing-library/user-event'; import { QueryAI } from './query-ai'; import type { QueryBarExtraArgs } from '../stores/query-bar-store'; diff --git a/packages/compass-query-bar/src/components/query-bar.spec.tsx b/packages/compass-query-bar/src/components/query-bar.spec.tsx index 92d9de99599..47ae5cb1c17 100644 --- a/packages/compass-query-bar/src/components/query-bar.spec.tsx +++ b/packages/compass-query-bar/src/components/query-bar.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { SinonSpy } from 'sinon'; diff --git a/packages/compass-query-bar/src/components/query-history/favorite-list.spec.tsx b/packages/compass-query-bar/src/components/query-history/favorite-list.spec.tsx index 2d74447581f..8c391e68f0b 100644 --- a/packages/compass-query-bar/src/components/query-history/favorite-list.spec.tsx +++ b/packages/compass-query-bar/src/components/query-history/favorite-list.spec.tsx @@ -1,8 +1,12 @@ import React from 'react'; import { expect } from 'chai'; import Sinon from 'sinon'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { FavoriteList } from './favorite-list'; diff --git a/packages/compass-query-bar/src/components/query-history/index.spec.tsx b/packages/compass-query-bar/src/components/query-history/index.spec.tsx index 908cfc7af54..bdc223dc465 100644 --- a/packages/compass-query-bar/src/components/query-history/index.spec.tsx +++ b/packages/compass-query-bar/src/components/query-history/index.spec.tsx @@ -5,8 +5,8 @@ import { screen, waitForElementToBeRemoved, within, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { Provider } from '../../stores/context'; import Sinon from 'sinon'; import { promises as fs } from 'fs'; diff --git a/packages/compass-query-bar/src/components/query-history/recent-list.spec.tsx b/packages/compass-query-bar/src/components/query-history/recent-list.spec.tsx index 733ee5d8d29..1e49d227afc 100644 --- a/packages/compass-query-bar/src/components/query-history/recent-list.spec.tsx +++ b/packages/compass-query-bar/src/components/query-history/recent-list.spec.tsx @@ -1,8 +1,12 @@ import React from 'react'; import { expect } from 'chai'; import Sinon from 'sinon'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { RecentList } from './recent-list'; diff --git a/packages/compass-query-bar/src/components/query-history/toolbar/toolbar.spec.tsx b/packages/compass-query-bar/src/components/query-history/toolbar/toolbar.spec.tsx index 3489c82f713..2e9a1c943c6 100644 --- a/packages/compass-query-bar/src/components/query-history/toolbar/toolbar.spec.tsx +++ b/packages/compass-query-bar/src/components/query-history/toolbar/toolbar.spec.tsx @@ -1,8 +1,13 @@ import React from 'react'; import { expect } from 'chai'; import Sinon from 'sinon'; -import { render, screen, cleanup, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { Toolbar } from './toolbar'; diff --git a/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts b/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts index c84cdf6af9a..6904ab0bf0d 100644 --- a/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts +++ b/packages/compass-query-bar/src/stores/query-bar-reducer.spec.ts @@ -23,7 +23,7 @@ import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; -import { waitFor } from '@testing-library/react'; +import { waitFor } from '@mongodb-js/testing-library-compass'; function createStore( opts: Partial = {}, diff --git a/packages/compass-query-bar/src/stores/query-bar-store.spec.ts b/packages/compass-query-bar/src/stores/query-bar-store.spec.ts index 370507d03ec..38e23249db7 100644 --- a/packages/compass-query-bar/src/stores/query-bar-store.spec.ts +++ b/packages/compass-query-bar/src/stores/query-bar-store.spec.ts @@ -6,7 +6,7 @@ import { AppRegistry } from 'hadron-app-registry'; import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { expect } from 'chai'; -import { waitFor } from '@testing-library/react'; +import { waitFor } from '@mongodb-js/testing-library-compass'; describe('createQueryWithHistoryAutocompleter', function () { let preferences: PreferencesAccess; let loadAllStub: sinon.SinonStub; diff --git a/packages/compass-saved-aggregations-queries/package.json b/packages/compass-saved-aggregations-queries/package.json index b844badf217..aa36f48b101 100644 --- a/packages/compass-saved-aggregations-queries/package.json +++ b/packages/compass-saved-aggregations-queries/package.json @@ -73,9 +73,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-saved-aggregations-queries/src/components/saved-item-card.test.tsx b/packages/compass-saved-aggregations-queries/src/components/saved-item-card.test.tsx index 71c6b6e8786..48345609305 100644 --- a/packages/compass-saved-aggregations-queries/src/components/saved-item-card.test.tsx +++ b/packages/compass-saved-aggregations-queries/src/components/saved-item-card.test.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import Sinon from 'sinon'; diff --git a/packages/compass-saved-aggregations-queries/src/hooks/use-grid-filters.spec.tsx b/packages/compass-saved-aggregations-queries/src/hooks/use-grid-filters.spec.tsx index 1fa1437d11b..b5cbf3dcfcf 100644 --- a/packages/compass-saved-aggregations-queries/src/hooks/use-grid-filters.spec.tsx +++ b/packages/compass-saved-aggregations-queries/src/hooks/use-grid-filters.spec.tsx @@ -1,7 +1,11 @@ import { expect } from 'chai'; -import { render, screen, fireEvent } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; -import { renderHook } from '@testing-library/react-hooks'; +import { + render, + screen, + fireEvent, + userEvent, + renderHook, +} from '@mongodb-js/testing-library-compass'; import { useGridFilters, useFilteredItems } from './use-grid-filters'; import { queries, pipelines } from '../../test/fixtures'; diff --git a/packages/compass-saved-aggregations-queries/src/index.spec.tsx b/packages/compass-saved-aggregations-queries/src/index.spec.tsx index 55fedf2d210..c26822cbe0d 100644 --- a/packages/compass-saved-aggregations-queries/src/index.spec.tsx +++ b/packages/compass-saved-aggregations-queries/src/index.spec.tsx @@ -1,6 +1,5 @@ import React from 'react'; import Sinon from 'sinon'; -import userEvent from '@testing-library/user-event'; import { expect } from 'chai'; import { queries, pipelines } from '../test/fixtures'; import { MyQueriesPlugin } from '.'; @@ -22,6 +21,7 @@ import { cleanup, within, waitFor, + userEvent, } from '@mongodb-js/testing-library-compass'; let id = 0; diff --git a/packages/compass-schema/package.json b/packages/compass-schema/package.json index aa774018e54..cbc53ddb822 100644 --- a/packages/compass-schema/package.json +++ b/packages/compass-schema/package.json @@ -52,9 +52,8 @@ "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/my-queries-storage": "^0.15.3", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", diff --git a/packages/compass-schema/src/components/field.spec.tsx b/packages/compass-schema/src/components/field.spec.tsx index eaf81897403..95e15a91b35 100644 --- a/packages/compass-schema/src/components/field.spec.tsx +++ b/packages/compass-schema/src/components/field.spec.tsx @@ -1,8 +1,12 @@ import type { ComponentProps } from 'react'; import React from 'react'; -import { render, screen, within } from '@testing-library/react'; +import { + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; import { parseSchema, type PrimitiveSchemaType, diff --git a/packages/compass-schema/src/components/schema-toolbar/schema-toolbar.spec.tsx b/packages/compass-schema/src/components/schema-toolbar/schema-toolbar.spec.tsx index 3aacbfc47ce..4a197970e15 100644 --- a/packages/compass-schema/src/components/schema-toolbar/schema-toolbar.spec.tsx +++ b/packages/compass-schema/src/components/schema-toolbar/schema-toolbar.spec.tsx @@ -1,6 +1,6 @@ import type { ComponentProps } from 'react'; import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { SchemaToolbar } from './schema-toolbar'; diff --git a/packages/compass-settings/package.json b/packages/compass-settings/package.json index ea9fe183f1e..82659a3cbb3 100644 --- a/packages/compass-settings/package.json +++ b/packages/compass-settings/package.json @@ -65,9 +65,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-settings/src/components/modal.spec.tsx b/packages/compass-settings/src/components/modal.spec.tsx index 01d1792c350..19b05aa7c37 100644 --- a/packages/compass-settings/src/components/modal.spec.tsx +++ b/packages/compass-settings/src/components/modal.spec.tsx @@ -6,12 +6,12 @@ import { within, waitFor, cleanup, -} from '@testing-library/react'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { spy, stub } from 'sinon'; import type { SinonSpy } from 'sinon'; import { expect } from 'chai'; import { Provider } from 'react-redux'; -import userEvent from '@testing-library/user-event'; import configureStore from '../../test/configure-store'; import { SettingsModal } from './modal'; diff --git a/packages/compass-settings/src/components/settings/atlas-login.spec.tsx b/packages/compass-settings/src/components/settings/atlas-login.spec.tsx index 08e5cc3832f..153a431e063 100644 --- a/packages/compass-settings/src/components/settings/atlas-login.spec.tsx +++ b/packages/compass-settings/src/components/settings/atlas-login.spec.tsx @@ -1,7 +1,12 @@ import React from 'react'; import { EventEmitter } from 'events'; -import { screen, cleanup, render, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + screen, + cleanup, + render, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { Provider } from 'react-redux'; import type { AtlasAuthService } from '@mongodb-js/atlas-service/provider'; import Sinon from 'sinon'; diff --git a/packages/compass-settings/src/components/settings/gen-ai-settings.spec.tsx b/packages/compass-settings/src/components/settings/gen-ai-settings.spec.tsx index 7124d70be8e..80410b1662c 100644 --- a/packages/compass-settings/src/components/settings/gen-ai-settings.spec.tsx +++ b/packages/compass-settings/src/components/settings/gen-ai-settings.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Provider } from 'react-redux'; diff --git a/packages/compass-settings/src/components/settings/general.spec.tsx b/packages/compass-settings/src/components/settings/general.spec.tsx index fe418fea561..3c666420721 100644 --- a/packages/compass-settings/src/components/settings/general.spec.tsx +++ b/packages/compass-settings/src/components/settings/general.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Provider } from 'react-redux'; import { GeneralSettings } from './general'; diff --git a/packages/compass-settings/src/components/settings/oidc-settings.spec.tsx b/packages/compass-settings/src/components/settings/oidc-settings.spec.tsx index d0ecdb32943..cebb93eecb8 100644 --- a/packages/compass-settings/src/components/settings/oidc-settings.spec.tsx +++ b/packages/compass-settings/src/components/settings/oidc-settings.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Provider } from 'react-redux'; import { OIDCSettings } from './oidc-settings'; diff --git a/packages/compass-settings/src/components/settings/privacy.spec.tsx b/packages/compass-settings/src/components/settings/privacy.spec.tsx index 2fcdf05077c..06be7414401 100644 --- a/packages/compass-settings/src/components/settings/privacy.spec.tsx +++ b/packages/compass-settings/src/components/settings/privacy.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Provider } from 'react-redux'; import { PrivacySettings } from './privacy'; diff --git a/packages/compass-settings/src/components/settings/proxy-settings-custom.spec.tsx b/packages/compass-settings/src/components/settings/proxy-settings-custom.spec.tsx index 6598972334b..3aa11a6654a 100644 --- a/packages/compass-settings/src/components/settings/proxy-settings-custom.spec.tsx +++ b/packages/compass-settings/src/components/settings/proxy-settings-custom.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { ProxySettingsCustom } from './proxy-settings-custom'; import type { DevtoolsProxyOptions } from 'compass-preferences-model'; diff --git a/packages/compass-settings/src/components/settings/proxy-settings.spec.tsx b/packages/compass-settings/src/components/settings/proxy-settings.spec.tsx index 9f0cc782c2b..73728e47b02 100644 --- a/packages/compass-settings/src/components/settings/proxy-settings.spec.tsx +++ b/packages/compass-settings/src/components/settings/proxy-settings.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { Provider } from 'react-redux'; import { ProxySettings } from './proxy-settings'; diff --git a/packages/compass-settings/src/components/settings/theme.spec.tsx b/packages/compass-settings/src/components/settings/theme.spec.tsx index 94773d52f0e..aaf7a51146a 100644 --- a/packages/compass-settings/src/components/settings/theme.spec.tsx +++ b/packages/compass-settings/src/components/settings/theme.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { spy } from 'sinon'; import { expect } from 'chai'; diff --git a/packages/compass-settings/src/components/sidebar.spec.tsx b/packages/compass-settings/src/components/sidebar.spec.tsx index 85f48852b58..3968e555d25 100644 --- a/packages/compass-settings/src/components/sidebar.spec.tsx +++ b/packages/compass-settings/src/components/sidebar.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { cleanup, render, screen, within } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + cleanup, + render, + screen, + within, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { spy } from 'sinon'; import { expect } from 'chai'; diff --git a/packages/compass-sidebar/package.json b/packages/compass-sidebar/package.json index 7842c647a11..bfd7c9368fc 100644 --- a/packages/compass-sidebar/package.json +++ b/packages/compass-sidebar/package.json @@ -76,8 +76,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-sidebar/src/components/legacy/navigation-items.spec.tsx b/packages/compass-sidebar/src/components/legacy/navigation-items.spec.tsx index 182a91d6d45..c4691923791 100644 --- a/packages/compass-sidebar/src/components/legacy/navigation-items.spec.tsx +++ b/packages/compass-sidebar/src/components/legacy/navigation-items.spec.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { expect } from 'chai'; -import { render, screen, cleanup } from '@testing-library/react'; +import { render, screen, cleanup } from '@mongodb-js/testing-library-compass'; import { Provider } from 'react-redux'; import { createStore, applyMiddleware } from 'redux'; import thunk from 'redux-thunk'; diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index cbdc5149ec9..6039b2fab16 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -90,9 +90,6 @@ "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", diff --git a/packages/compass-web/src/entrypoint.spec.tsx b/packages/compass-web/src/entrypoint.spec.tsx index 80a65e4380c..896498eeaec 100644 --- a/packages/compass-web/src/entrypoint.spec.tsx +++ b/packages/compass-web/src/entrypoint.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { screen, render, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + screen, + render, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import type { ConnectionOptions } from 'mongodb-data-service'; import { expect } from 'chai'; import { CompassWeb } from './entrypoint'; diff --git a/packages/compass-web/src/logger-and-telemetry.spec.tsx b/packages/compass-web/src/logger-and-telemetry.spec.tsx index 16c149207df..d74b4e21bfc 100644 --- a/packages/compass-web/src/logger-and-telemetry.spec.tsx +++ b/packages/compass-web/src/logger-and-telemetry.spec.tsx @@ -10,7 +10,7 @@ import type { TrackFunction, } from './logger-and-telemetry'; import { useCompassWebLoggerAndTelemetry } from './logger-and-telemetry'; -import { renderHook, cleanup } from '@testing-library/react-hooks'; +import { renderHook, cleanup } from '@mongodb-js/testing-library-compass'; import Sinon from 'sinon'; import { expect } from 'chai'; diff --git a/packages/compass-welcome/package.json b/packages/compass-welcome/package.json index e02d2421cf8..e89cf93b014 100644 --- a/packages/compass-welcome/package.json +++ b/packages/compass-welcome/package.json @@ -64,14 +64,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", @@ -80,7 +78,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" diff --git a/packages/compass-welcome/src/components/modal.spec.tsx b/packages/compass-welcome/src/components/modal.spec.tsx index 1492ac6910f..a4581efeb15 100644 --- a/packages/compass-welcome/src/components/modal.spec.tsx +++ b/packages/compass-welcome/src/components/modal.spec.tsx @@ -1,10 +1,9 @@ import React from 'react'; import type { ComponentProps } from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen, userEvent } from '@mongodb-js/testing-library-compass'; import { spy } from 'sinon'; import type { SinonSpy } from 'sinon'; import { expect } from 'chai'; -import userEvent from '@testing-library/user-event'; import { WelcomeModal } from './modal'; diff --git a/packages/compass/package.json b/packages/compass/package.json index 1deef76e9ef..afc619107a9 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -235,7 +235,6 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", "@segment/analytics-node": "^1.1.4", - "@testing-library/user-event": "^13.5.0", "ampersand-view": "^9.0.0", "chai": "^4.3.4", "chalk": "^4.1.2", diff --git a/packages/compass/src/app/components/home.spec.tsx b/packages/compass/src/app/components/home.spec.tsx index f9c4edeaa05..daee2d8611c 100644 --- a/packages/compass/src/app/components/home.spec.tsx +++ b/packages/compass/src/app/components/home.spec.tsx @@ -1,5 +1,4 @@ import React, { type ComponentProps } from 'react'; -import userEvent from '@testing-library/user-event'; import { expect } from 'chai'; import * as hadronIpc from 'hadron-ipc'; import sinon from 'sinon'; @@ -12,6 +11,7 @@ import { screen, waitFor, within, + userEvent, } from '@mongodb-js/testing-library-compass'; import type { AllPreferences } from 'compass-preferences-model/provider'; import type { ConnectionInfo } from '@mongodb-js/compass-connections/provider'; diff --git a/packages/connection-form/package.json b/packages/connection-form/package.json index 738ac063038..437d1966b81 100644 --- a/packages/connection-form/package.json +++ b/packages/connection-form/package.json @@ -65,15 +65,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^7.0.2", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", @@ -83,7 +80,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "xvfb-maybe": "^0.2.1" } diff --git a/packages/connection-form/src/components/advanced-options-tabs/advanced-options-tabs.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/advanced-options-tabs.spec.tsx index 7bc260b48f8..38f415c878d 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/advanced-options-tabs.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/advanced-options-tabs.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { cleanup, render, screen } from '@testing-library/react'; +import { cleanup, render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/advanced-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/advanced-tab.spec.tsx index b7901ee2e75..2c9088dcd37 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/advanced-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/advanced-tab.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/url-options-list-editor.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/url-options-list-editor.spec.tsx index b74747323bf..2566e66a933 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/url-options-list-editor.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/advanced-tab/url-options-list-editor.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-aws.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-aws.spec.tsx index 109ddca7aa3..91dece16a8c 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-aws.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-aws.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-default.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-default.spec.tsx index f88616d19b9..24d5f24bf8a 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-default.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-default.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-gssapi.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-gssapi.spec.tsx index 411cd2ff9c6..a3e7cf69533 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-gssapi.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-gssapi.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, fireEvent, cleanup } from '@testing-library/react'; +import { + render, + screen, + fireEvent, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx index 4564f4d640d..85a16e897cf 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-oidc.spec.tsx @@ -5,7 +5,7 @@ import { screen, fireEvent, waitFor, -} from '@testing-library/react'; +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { ConnectionOptions } from 'mongodb-data-service'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-plain.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-plain.spec.tsx index d0a0b10f99c..ab6744a6f16 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-plain.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-plain.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-tab.spec.tsx index 2ee7e56ae0a..6d317bf4733 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/authentication-tab/authentication-tab.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx index f2b24aa6a56..e2ad37fdce4 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/csfle-tab/csfle-tab.spec.tsx @@ -9,14 +9,14 @@ import { waitFor, fireEvent, within, -} from '@testing-library/react'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import type { ConnectionOptions } from 'mongodb-data-service'; import { setCodemirrorEditorValue } from '@mongodb-js/compass-editor'; import { Binary } from 'bson'; import ConnectionForm from '../../../'; -import userEvent from '@testing-library/user-event'; import { getNextKmsProviderName } from './kms-provider-content'; const openAdvancedTab = async ( diff --git a/packages/connection-form/src/components/advanced-options-tabs/general-tab/direct-connection-input.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/general-tab/direct-connection-input.spec.tsx index 0ad2b20e4d6..db37f2b5304 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/general-tab/direct-connection-input.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/general-tab/direct-connection-input.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; +import { + render, + screen, + cleanup, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/general-tab/general-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/general-tab/general-tab.spec.tsx index 2a3c6e20491..9989e0b1af5 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/general-tab/general-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/general-tab/general-tab.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/general-tab/host-input.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/general-tab/host-input.spec.tsx index ed0184a732d..639c340162a 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/general-tab/host-input.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/general-tab/host-input.spec.tsx @@ -1,6 +1,11 @@ import React from 'react'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + fireEvent, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/general-tab/scheme-input.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/general-tab/scheme-input.spec.tsx index b426e6f17c5..8a700d7f1e3 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/general-tab/scheme-input.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/general-tab/scheme-input.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; +import { + render, + screen, + cleanup, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/proxy-and-ssh-tunnel-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/proxy-and-ssh-tunnel-tab.spec.tsx index 961aa0a863d..4849c89c4a4 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/proxy-and-ssh-tunnel-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/proxy-and-ssh-tunnel-tab.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, fireEvent, cleanup } from '@testing-library/react'; +import { + render, + screen, + fireEvent, + cleanup, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/socks.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/socks.spec.tsx index aafe97c9254..4643f13d11d 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/socks.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/socks.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-identity.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-identity.spec.tsx index 2035e02abed..a6fda3cb310 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-identity.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-identity.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { SSHConnectionOptions } from '../../../utils/connection-ssh-handler'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-password.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-password.spec.tsx index 6a03e01c89d..8d4acd42415 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-password.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/ssh-tunnel-tab/ssh-tunnel-password.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import type { SSHConnectionOptions } from '../../../utils/connection-ssh-handler'; diff --git a/packages/connection-form/src/components/advanced-options-tabs/tls-ssl-tab/tls-ssl-tab.spec.tsx b/packages/connection-form/src/components/advanced-options-tabs/tls-ssl-tab/tls-ssl-tab.spec.tsx index a0c01f4c568..8bfe1c6ec7a 100644 --- a/packages/connection-form/src/components/advanced-options-tabs/tls-ssl-tab/tls-ssl-tab.spec.tsx +++ b/packages/connection-form/src/components/advanced-options-tabs/tls-ssl-tab/tls-ssl-tab.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, fireEvent, waitFor } from '@testing-library/react'; +import { + render, + screen, + fireEvent, + waitFor, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import ConnectionStringUrl from 'mongodb-connection-string-url'; diff --git a/packages/connection-form/src/components/connection-form-actions.spec.tsx b/packages/connection-form/src/components/connection-form-actions.spec.tsx index 0c29f14d215..3fb75a3ab22 100644 --- a/packages/connection-form/src/components/connection-form-actions.spec.tsx +++ b/packages/connection-form/src/components/connection-form-actions.spec.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { render, screen, fireEvent } from '@testing-library/react'; +import { render, screen, fireEvent } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/connection-form/src/components/connection-form.spec.tsx b/packages/connection-form/src/components/connection-form.spec.tsx index 02235e9ded1..e915862dc51 100644 --- a/packages/connection-form/src/components/connection-form.spec.tsx +++ b/packages/connection-form/src/components/connection-form.spec.tsx @@ -4,10 +4,10 @@ import { screen, cleanup, fireEvent, - getByText, waitFor, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, + within, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import type { PreferencesAccess } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; @@ -351,8 +351,8 @@ describe('ConnectionForm Component', function () { const dialog = screen.getByRole('dialog'); expect(dialog).to.be.visible; - expect(getByText(dialog, saveAndConnectText)).to.be.visible; - expect(() => getByText(dialog, 'Save')).to.throw; + expect(within(dialog).getByText(saveAndConnectText)).to.be.visible; + expect(() => within(dialog).getByText('Save')).to.throw(); }); it('should not show a Save & Connect button when there is an existing connection', function () { diff --git a/packages/connection-form/src/components/connection-string-input.spec.tsx b/packages/connection-form/src/components/connection-string-input.spec.tsx index 8d7a7e51de3..2b04dc5102c 100644 --- a/packages/connection-form/src/components/connection-string-input.spec.tsx +++ b/packages/connection-form/src/components/connection-string-input.spec.tsx @@ -5,8 +5,8 @@ import { fireEvent, waitFor, cleanup, -} from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { ConfirmationModalArea } from '@mongodb-js/compass-components'; diff --git a/packages/connection-form/src/components/save-connection-modal.spec.tsx b/packages/connection-form/src/components/save-connection-modal.spec.tsx index 7c66ee95950..4399932522b 100644 --- a/packages/connection-form/src/components/save-connection-modal.spec.tsx +++ b/packages/connection-form/src/components/save-connection-modal.spec.tsx @@ -1,5 +1,10 @@ import React from 'react'; -import { render, screen, cleanup, fireEvent } from '@testing-library/react'; +import { + render, + screen, + cleanup, + fireEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; diff --git a/packages/connection-form/src/hooks/use-connect-form.spec.ts b/packages/connection-form/src/hooks/use-connect-form.spec.ts index c8d7c63afc0..be7fd403119 100644 --- a/packages/connection-form/src/hooks/use-connect-form.spec.ts +++ b/packages/connection-form/src/hooks/use-connect-form.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai'; import ConnectionStringUrl from 'mongodb-connection-string-url'; import { handleConnectionFormFieldUpdate } from './use-connect-form'; -import { renderHook, act } from '@testing-library/react-hooks'; +import { renderHook, act } from '@mongodb-js/testing-library-compass'; import { useConnectForm } from './use-connect-form'; describe('use-connect-form hook', function () { diff --git a/packages/connection-form/src/hooks/use-connection-color.spec.tsx b/packages/connection-form/src/hooks/use-connection-color.spec.tsx index ebf137b18c6..fcbdf223944 100644 --- a/packages/connection-form/src/hooks/use-connection-color.spec.tsx +++ b/packages/connection-form/src/hooks/use-connection-color.spec.tsx @@ -1,4 +1,4 @@ -import { cleanup, render } from '@testing-library/react'; +import { cleanup, render } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import React from 'react'; import { diff --git a/packages/databases-collections-list/package.json b/packages/databases-collections-list/package.json index d1a99db720b..81cc968d594 100644 --- a/packages/databases-collections-list/package.json +++ b/packages/databases-collections-list/package.json @@ -61,14 +61,12 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", - "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", @@ -76,7 +74,6 @@ "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", - "react-dom": "^17.0.2", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/databases-collections-list/src/index.spec.tsx b/packages/databases-collections-list/src/index.spec.tsx index 7d6cccfb37e..591028c30e6 100644 --- a/packages/databases-collections-list/src/index.spec.tsx +++ b/packages/databases-collections-list/src/index.spec.tsx @@ -1,6 +1,10 @@ import React from 'react'; -import { render, screen, cleanup } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import { + render, + screen, + cleanup, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { DatabasesList, CollectionsList } from './index'; import Sinon from 'sinon'; diff --git a/packages/databases-collections/package.json b/packages/databases-collections/package.json index d77a6748505..32ab40dbbec 100644 --- a/packages/databases-collections/package.json +++ b/packages/databases-collections/package.json @@ -47,8 +47,6 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", - "@testing-library/user-event": "^13.5.0", "bson": "^6.7.0", "chai": "^4.2.0", "depcheck": "^1.4.1", diff --git a/packages/databases-collections/src/collections-plugin.spec.tsx b/packages/databases-collections/src/collections-plugin.spec.tsx index b6c14c0f648..4e35039402f 100644 --- a/packages/databases-collections/src/collections-plugin.spec.tsx +++ b/packages/databases-collections/src/collections-plugin.spec.tsx @@ -1,19 +1,25 @@ import React from 'react'; import { MongoDBInstance } from 'mongodb-instance-model'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import type { RenderWithConnectionsResult } from '@mongodb-js/testing-library-compass'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { CollectionsPlugin } from './collections-plugin'; -import AppRegistry from 'hadron-app-registry'; import Sinon from 'sinon'; describe('Collections [Plugin]', function () { let dataService: any; let mongodbInstance: Sinon.SinonSpiedInstance; - let appRegistry: Sinon.SinonSpiedInstance; + let appRegistry: Sinon.SinonSpiedInstance< + RenderWithConnectionsResult['globalAppRegistry'] + >; beforeEach(function () { - appRegistry = Sinon.spy(new AppRegistry()); mongodbInstance = Sinon.spy( new MongoDBInstance({ databases: [ @@ -51,11 +57,11 @@ describe('Collections [Plugin]', function () { const Plugin = CollectionsPlugin.withMockServices({ instance: mongodbInstance, database: mongodbInstance.databases.get('foo'), - globalAppRegistry: appRegistry, dataService, }); - render(); + const { globalAppRegistry } = render(); + appRegistry = Sinon.spy(globalAppRegistry); await waitFor(() => { expect(screen.getByRole('gridcell', { name: /bar/ })).to.exist; diff --git a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx index c2460a29bb2..92eafb356ae 100644 --- a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx +++ b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx @@ -7,14 +7,11 @@ import { cleanup, fireEvent, waitFor, -} from '@testing-library/react'; - +} from '@mongodb-js/testing-library-compass'; import { RenameCollectionPlugin } from '../..'; -import AppRegistry from 'hadron-app-registry'; describe('RenameCollectionModal [Component]', function () { const sandbox = Sinon.createSandbox(); - const appRegistry = sandbox.spy(new AppRegistry()); const dataService = { renameCollection: sandbox.stub().resolves({}), }; @@ -44,14 +41,13 @@ describe('RenameCollectionModal [Component]', function () { context('when the modal is visible', function () { beforeEach(async function () { const Plugin = RenameCollectionPlugin.withMockServices({ - globalAppRegistry: appRegistry, connectionsManager: connectionsManager as any, instancesManager: instancesManager as any, queryStorage: favoriteQueries as any, pipelineStorage: pipelineStorage as any, }); - render( ); - appRegistry.emit( + const { globalAppRegistry } = render( ); + globalAppRegistry.emit( 'open-rename-collection', { database: 'foo', @@ -168,14 +164,13 @@ describe('RenameCollectionModal [Component]', function () { ); const Plugin = RenameCollectionPlugin.withMockServices({ - globalAppRegistry: appRegistry, connectionsManager: connectionsManager as any, instancesManager: instancesManager as any, queryStorage: favoriteQueries as any, pipelineStorage: pipelineStorage as any, }); - render( ); - appRegistry.emit( + const { globalAppRegistry } = render( ); + globalAppRegistry.emit( 'open-rename-collection', { database: 'foo', diff --git a/packages/databases-collections/src/databases-plugin.spec.tsx b/packages/databases-collections/src/databases-plugin.spec.tsx index e35447b8148..09a1cc5755a 100644 --- a/packages/databases-collections/src/databases-plugin.spec.tsx +++ b/packages/databases-collections/src/databases-plugin.spec.tsx @@ -1,20 +1,23 @@ import React from 'react'; import { MongoDBInstance } from 'mongodb-instance-model'; -import { render, screen, cleanup, waitFor } from '@testing-library/react'; -import userEvent from '@testing-library/user-event'; +import type { RenderWithConnectionsResult } from '@mongodb-js/testing-library-compass'; +import { + render, + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import { DatabasesPlugin } from './databases-plugin'; -import AppRegistry from 'hadron-app-registry'; import Sinon from 'sinon'; describe('Databasees [Plugin]', function () { let dataService: any; let mongodbInstance: Sinon.SinonSpiedInstance; - let appRegistry: Sinon.SinonSpiedInstance; - - beforeEach(function () { - appRegistry = Sinon.spy(new AppRegistry()); - }); + let appRegistry: Sinon.SinonSpiedInstance< + RenderWithConnectionsResult['globalAppRegistry'] + >; afterEach(function () { mongodbInstance.removeAllListeners(); @@ -41,11 +44,12 @@ describe('Databasees [Plugin]', function () { const Plugin = DatabasesPlugin.withMockServices({ instance: mongodbInstance, - globalAppRegistry: appRegistry, dataService, }); - render(); + const { globalAppRegistry } = render(); + + appRegistry = Sinon.spy(globalAppRegistry); await waitFor(() => { expect(screen.getByRole('gridcell', { name: /foo/ })).to.exist; diff --git a/packages/databases-collections/src/stores/rename-collection.spec.tsx b/packages/databases-collections/src/stores/rename-collection.spec.tsx index 5f3e2ce50c5..54cede318ea 100644 --- a/packages/databases-collections/src/stores/rename-collection.spec.tsx +++ b/packages/databases-collections/src/stores/rename-collection.spec.tsx @@ -1,14 +1,18 @@ import React from 'react'; import Sinon from 'sinon'; - import { expect } from 'chai'; -import AppRegistry from 'hadron-app-registry'; import { RenameCollectionPlugin } from '..'; -import { render, cleanup, screen, waitFor } from '@testing-library/react'; +import type { RenderWithConnectionsResult } from '@mongodb-js/testing-library-compass'; +import { + render, + cleanup, + screen, + waitFor, +} from '@mongodb-js/testing-library-compass'; describe('RenameCollectionPlugin', function () { const sandbox = Sinon.createSandbox(); - const appRegistry = sandbox.spy(new AppRegistry()); + let appRegistry: RenderWithConnectionsResult['globalAppRegistry']; const connectionsManager = {}; const instanceModel = { databases: { @@ -32,14 +36,14 @@ describe('RenameCollectionPlugin', function () { }; beforeEach(function () { const Plugin = RenameCollectionPlugin.withMockServices({ - globalAppRegistry: appRegistry, connectionsManager: connectionsManager as any, instancesManager: instancesManager as any, queryStorage: favoriteQueries as any, pipelineStorage: pipelineStorage as any, }); - render( ); + const { globalAppRegistry } = render( ); + appRegistry = globalAppRegistry; }); afterEach(function () { diff --git a/packages/hadron-app-registry/README.md b/packages/hadron-app-registry/README.md index c5b0a0fdd6e..c28398aa4dd 100644 --- a/packages/hadron-app-registry/README.md +++ b/packages/hadron-app-registry/README.md @@ -163,7 +163,12 @@ child plugins can be disabled, which can be used to speed up tests or avoid having to specify service dependencies for those child plugins. ```tsx -import { render, cleanup, screen, waitFor } from '@testing-library/react'; +import { + render, + cleanup, + screen, + waitFor, +} from '@mongodb-js/testing-library-compass'; const PluginWithMockServices = WorkspacesPlugin.withMockServices( { diff --git a/packages/hadron-app-registry/package.json b/packages/hadron-app-registry/package.json index c4e1131b16a..fcef1a889a4 100644 --- a/packages/hadron-app-registry/package.json +++ b/packages/hadron-app-registry/package.json @@ -53,8 +53,8 @@ "@mongodb-js/eslint-config-compass": "^1.1.6", "@mongodb-js/mocha-config-compass": "^1.4.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@testing-library/react": "^12.1.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", diff --git a/packages/hadron-app-registry/src/register-plugin.spec.tsx b/packages/hadron-app-registry/src/register-plugin.spec.tsx index dc33b144a40..94a2a34a978 100644 --- a/packages/hadron-app-registry/src/register-plugin.spec.tsx +++ b/packages/hadron-app-registry/src/register-plugin.spec.tsx @@ -1,5 +1,5 @@ import React, { createContext, useContext } from 'react'; -import { cleanup, render } from '@testing-library/react'; +import { cleanup, render } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; import { diff --git a/scripts/create-workspace.js b/scripts/create-workspace.js index 76ab249782a..c03edab7e5f 100644 --- a/scripts/create-workspace.js +++ b/scripts/create-workspace.js @@ -289,8 +289,8 @@ async function createWorkspace({ nyc: '*', prettier: '*', sinon: '*', + '@mongodb-js/testing-library-compass': '*', ...(isReact && { - '@mongodb-js/testing-library-compass': '*', '@types/chai-dom': '*', '@types/react': '*', '@types/react-dom': '*', @@ -417,7 +417,7 @@ export default Plugin; ? ` import React from 'react'; import { expect } from 'chai'; -import { cleanup, render } from '@testing-library/react'; +import { cleanup, render } from '@mongodb-js/testing-library-compass'; import CompassPlugin from './index'; describe('Compass Plugin', function() { From c1e7b7f6cb05a90127f174e754852b6313b38b60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Tue, 10 Sep 2024 12:24:11 +0200 Subject: [PATCH 13/57] chore: Add `CONTRIBUTING.md` note on enabling DevTools (#6213) Add CONTRIBUTING.md note on enabling DevTools --- CONTRIBUTING.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f2fba00eb3d..c76a149aeb3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -35,7 +35,11 @@ This repository includes a few recommended plugins for your convenience: - ESLint extension highlights possible issues in your code following our common eslint configuration. - ANTLR4 grammar support extension helps to work with the `bson-transpilers` package that is implemented with the help of antlr (.g and .g4 files). -### Working on Plugins +## Enabling DevTools + +To enable the Chrome DevTools for the Electron renderer processes, click "Settings" under "MongoDB Compass Dev Local" in the top menu (or press ⌘ + ,) and click "Enable DevTools" followed by "Save", which will enable a "Toggle DevTools" item in the "View" top menu. Click this to toggle the DevTools panel (or press ⌥ + ⌘ + I). + +## Working on Plugins > [!NOTE] > For documentation regarding how to write plugin packages, check out the @@ -51,7 +55,7 @@ In addition to running lerna commands directly, there are a few convenient npm s - `npm run test-changed` will run tests in all packages and their dependants changed since `origin/HEAD`. - `npm run check-changed` will run `eslint` and `depcheck` validation in all packages (ignoring dependants) changed since `origin/HEAD` -### Building Compass Locally +## Building Compass Locally To build compass you can run `package-compass` script: @@ -83,7 +87,7 @@ To speed up the process you might want to disable creating installer for the app HADRON_SKIP_INSTALLER=true npm run package-compass ``` -### Publishing Packages +## Publishing Packages Compass is built out of a number of different NPM packages. Since all the relevant code is bundled in the packaged version of Compass with webpack, it is not necessary to publish any package to build and run the Compass application. @@ -95,13 +99,13 @@ Merging that PR will trigger another CI job that will publish to NPM any package The version of packages is calculated following conventional bumps: See https://github.com/mongodb-js/devtools-shared/tree/main/packages/bump-monorepo-packages for details. -### Add / Update / Remove Dependencies in Packages +## Add / Update / Remove Dependencies in Packages To add, remove, or update a dependency in any workspace you can use the usual `npm install` with a `--workspace` argument added, e.g. to add `react-aria` dependency to compass-aggregations and compass-query-bar plugins you can run `npm install --save react-aria --workspace @mongodb-js/compass-aggregations --workspace @mongodb-js/compass-query-bar`. Additionally if you want to update a version of an existing dependency, but don't want to figure out the scope manually, you can use `npm run where` helper script. To update `webpack` in every package that has it as a dev dependency you can run `npm run where "devDependencies['webpack']" -- install --save-dev webpack@latest` -### Creating a New Workspace / Package +## Creating a New Workspace / Package To create a new package please use the `create-workspace` npm script: @@ -111,9 +115,9 @@ npm run create-workspace [workspace name] This will do all the initial workspace bootstrapping for you, ensuring that your package has all the standard configs set up and ready, and all the npm scripts aligned with other packages in the monorepo, which is important to get the most out of all the provided helpers in this repository (like `npm run check-changed` commands or to make sure that your tests will not immediately fail in CI because of the test timeout being too small) -### Caveats +## Caveats -#### `hdiutil: couldn't unmount "diskn" - Resource busy` or Similar `hdiutil` Errors +### `hdiutil: couldn't unmount "diskn" - Resource busy` or Similar `hdiutil` Errors @@ -123,7 +127,7 @@ Sometimes when trying to package compass on macOS you can run into the said erro HADRON_SKIP_INSTALLER=true npm run test-package-compass ``` -#### `Module did not self-register` or `Module '' was compiled against a different Node.js version` Errors +### `Module did not self-register` or `Module '' was compiled against a different Node.js version` Errors From 980e5a27dda173940df4e8abf557fabb9d1b782a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 10:30:55 +0000 Subject: [PATCH 14/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6219) Update report Co-authored-by: kraenhansen <1243959+kraenhansen@users.noreply.github.com> --- AUTHORS | 1 + 1 file changed, 1 insertion(+) diff --git a/AUTHORS b/AUTHORS index ea09a63ae5b..469ce9a8c9b 100644 --- a/AUTHORS +++ b/AUTHORS @@ -89,3 +89,4 @@ Ben Radcliffe <928675+bsradcliffe@users.noreply.github.com> Betsy Button <36177962+betsybutton@users.noreply.github.com> Vivian Xiao <57568527+VivianTNT@users.noreply.github.com> admin-token-bot <36773031+admin-token-bot@users.noreply.github.com> +Kræn Hansen From ac60972460eb91edc5251ae8af85069dfdfb865e Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 11 Sep 2024 11:19:41 +0200 Subject: [PATCH 15/57] chore(deps): bump mongosh to 2.3.1 COMPASS-8261 (#6203) * chore(deps): bump mongosh to 2.3.1 * worker integration in electron * csp * fix local dev * use proper flag * flip env names --------- Co-authored-by: Basit Chonka Co-authored-by: Basit <1305718+mabaasit@users.noreply.github.com> --- .../mocha-config-compass/window-config.json | 3 +- package-lock.json | 1374 +++++++++-------- packages/compass-shell/package.json | 6 +- .../src/modules/worker-runtime.ts | 3 +- packages/compass/package.json | 2 +- packages/compass/src/app/utils/csp.ts | 1 + packages/compass/src/main/window-manager.ts | 5 + packages/compass/webpack.config.js | 8 + 8 files changed, 737 insertions(+), 665 deletions(-) diff --git a/configs/mocha-config-compass/window-config.json b/configs/mocha-config-compass/window-config.json index 88090feac66..934121f5fac 100644 --- a/configs/mocha-config-compass/window-config.json +++ b/configs/mocha-config-compass/window-config.json @@ -4,6 +4,7 @@ "direct-write": true, "nodeIntegration": true, "contextIsolation": false, - "enableRemoteModule": true + "enableRemoteModule": true, + "nodeIntegrationInWorker": true } } diff --git a/package-lock.json b/package-lock.json index cedc62f8f19..a4256f0e6c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8530,30 +8530,6 @@ "resolved": "packages/databases-collections-list", "link": true }, - "node_modules/@mongodb-js/devtools-connect": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.5.tgz", - "integrity": "sha512-hAYy39Dhss7ObSt21YJ30HKCod7lsO/mOQCHIaVHv9uNNAr02dFQHVA/Zd75wikcbpYybYxOM2Ou0zznvr8Jzg==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/devtools-proxy-support": "^0.3.5", - "@mongodb-js/oidc-http-server-pages": "1.1.2", - "lodash.merge": "^4.6.2", - "mongodb-connection-string-url": "^3.0.0", - "socks": "^2.7.3" - }, - "optionalDependencies": { - "kerberos": "^2.1.0", - "mongodb-client-encryption": "^6.0.0 || ^6.1.0-alpha.0", - "os-dns-native": "^1.2.0", - "resolve-mongodb-srv": "^1.1.1" - }, - "peerDependencies": { - "@mongodb-js/oidc-plugin": "^1.1.0", - "mongodb": "^6.8.0", - "mongodb-log-writer": "^1.4.2" - } - }, "node_modules/@mongodb-js/devtools-github-repo": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-github-repo/-/devtools-github-repo-1.4.1.tgz", @@ -8562,78 +8538,6 @@ "node": ">= 16" } }, - "node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.5.tgz", - "integrity": "sha512-QiIj6kYANGsUeCa9j48GgnrG/MZc5eOh24QoesaHp+gr572uFuq4fRHn31WeZ+ndCknSjP9UG5iSzbmFhkpTOQ==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, - "node_modules/@mongodb-js/devtools-proxy-support/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==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/@mongodb-js/devtools-proxy-support/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@mongodb-js/devtools-proxy-support/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@mongodb-js/devtools-proxy-support/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/@mongodb-js/dl-center": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", @@ -8994,12 +8898,6 @@ "resolved": "packages/my-queries-storage", "link": true }, - "node_modules/@mongodb-js/oidc-http-server-pages": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.2.tgz", - "integrity": "sha512-YcRlJ/HkKMahWvaPFTN/al5MGGX6CKQTsBHFTpNduxmeHd40jO8Cj5W7dfrqJAoit5E/G+GOwMaEfWdNrdlihg==", - "license": "Apache-2.0" - }, "node_modules/@mongodb-js/oidc-mock-provider": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.9.3.tgz", @@ -9434,289 +9332,6 @@ "resolved": "configs/webpack-config-compass", "link": true }, - "node_modules/@mongosh/arg-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.0.tgz", - "integrity": "sha512-4vWpODQfL/4WS+7DTaeXfGWtkHT7N5CZaTbaasi3pjPu49WC3sLko9civwRJWN3ygoyxADDZrfhRCDELvXg2eg==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/errors": "2.3.0", - "@mongosh/i18n": "2.3.0", - "mongodb-connection-string-url": "^3.0.1" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/async-rewriter2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.0.tgz", - "integrity": "sha512-eYCxW76EeYDWZOsMHKIZAVXq0ePmiPOiy4SQ8sryDYluAzZR1e/2ZWMwwMG5tss1lkpG3q+nKTWsphFGCMUsLQ==", - "license": "Apache-2.0", - "dependencies": { - "@babel/core": "^7.22.8", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "bin": { - "async-rewrite": "bin/async-rewrite.js" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/async-rewriter2/node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@mongosh/async-rewriter2/node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.2" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@mongosh/async-rewriter2/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "node_modules/@mongosh/async-rewriter2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@mongosh/autocomplete": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.0.tgz", - "integrity": "sha512-64BZB+ruZ5leJrkA0QTKJpzYpezbpwdXD/e26D0H+zlKsL3/cX2+ZZVsZbBYTPbqickXPd52sYvz5H2bsiqVnA==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/mongodb-constants": "^0.10.1", - "@mongosh/shell-api": "2.3.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/browser-repl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.0.tgz", - "integrity": "sha512-F74voFV9dGA8jsQrCs4f6td64f59V2ul+ploKN2nm4svmIgfvoxLSGrkfOM8aVZSAwV5Sf7Mo3b7oQ98svT96g==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/browser-runtime-core": "2.3.0", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/i18n": "2.3.0", - "@mongosh/node-runtime-worker-thread": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "numeral": "^2.0.6", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14.15.1" - }, - "peerDependencies": { - "@mongodb-js/compass-components": "*", - "@mongodb-js/compass-editor": "*", - "prop-types": "^15.7.2", - "react": "^17.0.2", - "react-dom": "^17.0.2" - } - }, - "node_modules/@mongosh/browser-repl/node_modules/numeral": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", - "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=", - "engines": { - "node": "*" - } - }, - "node_modules/@mongosh/browser-runtime-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.0.tgz", - "integrity": "sha512-8BMqJTBZbCcMeBzGSf2DpP0PUU4+Gh9JHgieYVj6IUvqx0XL9zRNbSHBbfpjnIt+Baym8L2Ye2+GwILhARZmYg==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/autocomplete": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "@mongosh/shell-api": "2.3.0", - "@mongosh/shell-evaluator": "2.3.0" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.0.tgz", - "integrity": "sha512-ul6OGLrCxWZ0C+g+WUwDZDXpZTATkri9yt3W/HP050h35jW37qWBeOi4FG9kwTwakgoaYiei87SwPfvN/M8oqg==", - "license": "Apache-2.0", - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/history": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.0.tgz", - "integrity": "sha512-4ZBQxvaX1iazXImLzQsDR1hg7HY8FNtHsLFJYsMaTzN+995wAvqGUFYIFiETzArQ7/Vi+FVGx40kzIjYa5nzmA==", - "license": "Apache-2.0", - "dependencies": { - "mongodb-connection-string-url": "^3.0.1", - "mongodb-redact": "^1.1.2" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/i18n": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.0.tgz", - "integrity": "sha512-JnIY7dxPOr3WFZ0YFfB/i53flYr0tIUiM3i9xo2DXWyeaQiuHxQxYwmCIDlVkGhvLVVlSXY2U0ptA0AW0YNztg==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/errors": "2.3.0" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/logging": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.0.tgz", - "integrity": "sha512-fpyYdpNtZ9GeNuDgl2EYSds3z1zr54KrCXdLnBM4n/ynB6KPXZxEY5/qbkbCND3DRHyQNHFBsbZN7+hs+81pgw==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/devtools-connect": "^3.2.5", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/types": "2.3.0", - "mongodb-log-writer": "^1.4.2", - "mongodb-redact": "^1.1.2" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/node-runtime-worker-thread": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.0.tgz", - "integrity": "sha512-AhX0U8RcCJUu3/yPABPza6EAI2IAHpx3Nloxj788E79O2gH0ynm0hC+9LjDmACl/FQw730+3DH2XvTomlsodJA==", - "license": "Apache-2.0", - "dependencies": { - "interruptor": "^1.0.1", - "system-ca": "^2.0.1" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/service-provider-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.0.tgz", - "integrity": "sha512-0DQUKVhfpwJRiFvTc4gjG6dxNDZUWTAGnl9ihfIL5ShxNKXluo+9VcYEL1wxLTbF1xZaMeCDzH6rIM02G5PM3w==", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-providers": "^3.525.0", - "@mongosh/errors": "2.3.0", - "bson": "^6.7.0", - "mongodb": "^6.8.0", - "mongodb-build-info": "^1.7.2", - "mongodb-connection-string-url": "^3.0.1" - }, - "engines": { - "node": ">=14.15.1" - }, - "optionalDependencies": { - "mongodb-client-encryption": "^6.1.0" - } - }, - "node_modules/@mongosh/shell-api": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.0.tgz", - "integrity": "sha512-Xzyg1T20YVywE1lXwhxR2muDUA4F2ClYaeAPc4bjQabNT9fWbuJXqbGBSwy36sv0rpqTiZqWJoFQcAgMfAt0PQ==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/arg-parser": "2.3.0", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/i18n": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "mongodb-redact": "^1.1.2" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/shell-evaluator": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.0.tgz", - "integrity": "sha512-TvWFrFkZ+LORZbAWu6tZHeJs+OQwKPli1sEHAVKjhhjiNo4v/kV/3990Dcqre2IZNBpybaZweTChf3b7Y5Lijw==", - "license": "Apache-2.0", - "dependencies": { - "@mongosh/async-rewriter2": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/shell-api": "2.3.0" - }, - "engines": { - "node": ">=14.15.1" - } - }, - "node_modules/@mongosh/types": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.0.tgz", - "integrity": "sha512-55V8S7Awj9fGi3cAf0/9svGagErnChrK4hOY2Z4C4y06vN5t/EUO15lyZYHJFUldnydfZzHODkPjjyWV53a1XQ==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/devtools-connect": "^3.2.5" - }, - "engines": { - "node": ">=14.15.1" - } - }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -42902,6 +42517,12 @@ "integrity": "sha512-nZnEH8dj+vJFqCRYdvYv0a59iLXsb8jJkt+xvXfwgnkyPdsSLtKNlYmtTDiHmTNGXeSXtpjTTUcNvFtrAk6VMQ==", "dev": true }, + "node_modules/web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==", + "license": "Apache-2.0" + }, "node_modules/webdriver": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.40.0.tgz", @@ -44486,7 +44107,7 @@ "hasInstallScript": true, "license": "SSPL", "dependencies": { - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "clipboard": "^2.0.6", "kerberos": "^2.1.1", "keytar": "^7.9.0", @@ -47058,9 +46679,9 @@ "@mongodb-js/compass-user-data": "^0.3.6", "@mongodb-js/compass-utils": "^0.6.11", "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongosh/browser-repl": "^2.3.0", - "@mongosh/logging": "^2.3.0", - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/browser-repl": "^2.3.1", + "@mongosh/logging": "^2.3.1", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "hadron-app-registry": "^9.2.5", @@ -47088,6 +46709,371 @@ "typescript": "^5.0.4" } }, + "packages/compass-shell/node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "packages/compass-shell/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "packages/compass-shell/node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "packages/compass-shell/node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "packages/compass-shell/node_modules/@mongodb-js/devtools-connect": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.10.tgz", + "integrity": "sha512-x+MhIwJzCKjc5NhGHbns5IGa6yBwj/Nm6uVh0TwmhdKGxBbIP4o0xa4YVRwRajxHHGrxhiKQRNRJsHD6IzVVOw==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/devtools-proxy-support": "^0.3.9", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "lodash.merge": "^4.6.2", + "mongodb-connection-string-url": "^3.0.0", + "socks": "^2.7.3" + }, + "optionalDependencies": { + "kerberos": "^2.1.0", + "mongodb-client-encryption": "^6.1.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1" + }, + "peerDependencies": { + "@mongodb-js/oidc-plugin": "^1.1.0", + "mongodb": "^6.8.0", + "mongodb-log-writer": "^1.4.2" + } + }, + "packages/compass-shell/node_modules/@mongodb-js/devtools-proxy-support": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", + "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.0" + } + }, + "packages/compass-shell/node_modules/@mongodb-js/oidc-http-server-pages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", + "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==", + "license": "Apache-2.0" + }, + "packages/compass-shell/node_modules/@mongosh/arg-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.1.tgz", + "integrity": "sha512-s0tzK+vPhJRsZZnb1r4V8lv97gpUFOXudHgJ+O3orCkkAUN0JR3IDWPSRY3eECNTlW96ZErGMqRhyPsCFW733g==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/errors": "2.3.1", + "@mongosh/i18n": "2.3.1", + "mongodb-connection-string-url": "^3.0.1" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/async-rewriter2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.1.tgz", + "integrity": "sha512-4tCMYMmhlet4/TYowsGPaoXhXQd5C6jykPnSOMZZrluZeDqRqWJfozW7161m+8Xe7IMZf4KyFzk8CAVewJfzLw==", + "license": "Apache-2.0", + "dependencies": { + "@babel/core": "^7.22.8", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "bin": { + "async-rewrite": "bin/async-rewrite.js" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/autocomplete": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.1.tgz", + "integrity": "sha512-rTZ1pKOKahs62NLTiSnWKp4/34VWnVsSG+rvpup2Xf/XC8/uFuFZo5Moj6eIgEF49PSyfICA+agmg47ldeQelw==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/mongodb-constants": "^0.10.1", + "@mongosh/shell-api": "2.3.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/browser-repl": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.1.tgz", + "integrity": "sha512-GYBJbfvLf2uxpLkiZdxYO7sQKwK9n+toRtl7WNahHK/e3VQQRcxwJqUp392y5MxyX3E/J4J+7Uy4YoTTiRKDtg==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/browser-runtime-core": "2.3.1", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/i18n": "2.3.1", + "@mongosh/node-runtime-worker-thread": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "numeral": "^2.0.6", + "text-table": "^0.2.0" + }, + "engines": { + "node": ">=14.15.1" + }, + "peerDependencies": { + "@mongodb-js/compass-components": "*", + "@mongodb-js/compass-editor": "*", + "prop-types": "^15.7.2", + "react": "^17.0.2", + "react-dom": "^17.0.2" + } + }, + "packages/compass-shell/node_modules/@mongosh/browser-runtime-core": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.1.tgz", + "integrity": "sha512-pFV3g7qIY8YRLqH0GPc5YJSXx2U36Jf475nuVGsqmGdHVwmXRRCbTBa+0Bel/divc9YDD9/GNLMGGIVjRUfl9A==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/autocomplete": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "@mongosh/shell-api": "2.3.1", + "@mongosh/shell-evaluator": "2.3.1" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.1.tgz", + "integrity": "sha512-opMEluGMEABO4v72nOwJTPeaP2adNduzh7oFGLBtfencOw0em38g93XnzL5iwH/Bjp2BVAEiMtcHYZeMRus7FQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/history": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.1.tgz", + "integrity": "sha512-hjKcqQy0PtYHSl5ZxkiCKi4OltHm0ZQdpJ05a5R26fEvNue+0tcv1TfnXbVxAk9K9Q2vB06SIRI0rnJrTtG+yQ==", + "license": "Apache-2.0", + "dependencies": { + "mongodb-connection-string-url": "^3.0.1", + "mongodb-redact": "^1.1.2" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/i18n": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.1.tgz", + "integrity": "sha512-qwYjGJKV8mQl/dqL21aIo3z1wdoE80JBiGGhJgyc2ofhLTvdktoav0FXKWOPrpvSR3K29L98D0H8V7uhisfdRQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/errors": "2.3.1" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/logging": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.1.tgz", + "integrity": "sha512-DDe4YNZJfKI9guyzCTdcvEpn0E20v94wnRpfiDfp9y05WUvJsDPBWWmhyGLYj4c1qrDctj8BiGt9mbb/7tY6Yw==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/devtools-connect": "^3.2.10", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/types": "2.3.1", + "mongodb-log-writer": "^1.4.2", + "mongodb-redact": "^1.1.2" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/node-runtime-worker-thread": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", + "integrity": "sha512-RmWQwQHdPEClthSBlLx3pLuQcrba9mGUnXpRIlT56Ddv7KyDEORM80yR/1SfUuxyPJ0BwtOcXIqAYf/m/KF85Q==", + "license": "Apache-2.0", + "dependencies": { + "interruptor": "^1.0.1", + "system-ca": "^2.0.1", + "web-worker": "^1.3.0" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/service-provider-core": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.1.tgz", + "integrity": "sha512-+UusnZjXqM2JWdva+11IX4fRW0+sqJS5FhpQ7UHreQyGzdDcgIIqFe1fB4CMfzaMdjQ7RvUqIMM5bV81xDZ9vA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-providers": "^3.525.0", + "@mongosh/errors": "2.3.1", + "bson": "^6.7.0", + "mongodb": "^6.8.0", + "mongodb-build-info": "^1.7.2", + "mongodb-connection-string-url": "^3.0.1" + }, + "engines": { + "node": ">=14.15.1" + }, + "optionalDependencies": { + "mongodb-client-encryption": "^6.1.0" + } + }, + "packages/compass-shell/node_modules/@mongosh/shell-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.1.tgz", + "integrity": "sha512-ou6LIbpqlzsKVFiBQJ9Aqt5OxS5NuLb5y2cKuTPvv0wEKrPjg/XAHVyo+Bw09fa4ZYPDk705RehgtfdTpKnLfQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/arg-parser": "2.3.1", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/i18n": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "mongodb-redact": "^1.1.2" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/shell-evaluator": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.1.tgz", + "integrity": "sha512-MWGL8600o4d1/ngBOQXrorEmYBZebDJeF3g7CM0QmZAuHzJ9HY/67bm/xDKUn/9H0K3tVJSFAWYOXk99tQqTHQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongosh/async-rewriter2": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/shell-api": "2.3.1" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/@mongosh/types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.1.tgz", + "integrity": "sha512-fpMJ4yHhilTIWe3jgWoE+Eq0q9ij40HMGRfCJoZE+aOCslBkggqsia5Fh13G8JCFKangkWnZ5UMMAxSg6VBJgQ==", + "license": "Apache-2.0", + "dependencies": { + "@mongodb-js/devtools-connect": "^3.2.10" + }, + "engines": { + "node": ">=14.15.1" + } + }, + "packages/compass-shell/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "packages/compass-shell/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==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "packages/compass-shell/node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "packages/compass-shell/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -47097,6 +47083,42 @@ "node": ">=0.3.1" } }, + "packages/compass-shell/node_modules/lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "packages/compass-shell/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "packages/compass-shell/node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "packages/compass-shell/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -47956,6 +47978,20 @@ "system-ca": "^2.0.0" } }, + "packages/compass/node_modules/@mongosh/node-runtime-worker-thread": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", + "integrity": "sha512-RmWQwQHdPEClthSBlLx3pLuQcrba9mGUnXpRIlT56Ddv7KyDEORM80yR/1SfUuxyPJ0BwtOcXIqAYf/m/KF85Q==", + "license": "Apache-2.0", + "dependencies": { + "interruptor": "^1.0.1", + "system-ca": "^2.0.1", + "web-worker": "^1.3.0" + }, + "engines": { + "node": ">=14.15.1" + } + }, "packages/compass/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", @@ -58789,9 +58825,9 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongosh/browser-repl": "^2.3.0", - "@mongosh/logging": "^2.3.0", - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/browser-repl": "^2.3.1", + "@mongosh/logging": "^2.3.1", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", @@ -58812,12 +58848,284 @@ "typescript": "^5.0.4" }, "dependencies": { + "@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, + "@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "requires": { + "@babel/types": "^7.25.6" + } + }, + "@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "requires": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + } + }, + "@mongodb-js/devtools-connect": { + "version": "3.2.10", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.10.tgz", + "integrity": "sha512-x+MhIwJzCKjc5NhGHbns5IGa6yBwj/Nm6uVh0TwmhdKGxBbIP4o0xa4YVRwRajxHHGrxhiKQRNRJsHD6IzVVOw==", + "requires": { + "@mongodb-js/devtools-proxy-support": "^0.3.9", + "@mongodb-js/oidc-http-server-pages": "1.1.3", + "kerberos": "^2.1.0", + "lodash.merge": "^4.6.2", + "mongodb-client-encryption": "^6.1.0", + "mongodb-connection-string-url": "^3.0.0", + "os-dns-native": "^1.2.0", + "resolve-mongodb-srv": "^1.1.1", + "socks": "^2.7.3" + } + }, + "@mongodb-js/devtools-proxy-support": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", + "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", + "requires": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.0" + } + }, + "@mongodb-js/oidc-http-server-pages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", + "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" + }, + "@mongosh/arg-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.1.tgz", + "integrity": "sha512-s0tzK+vPhJRsZZnb1r4V8lv97gpUFOXudHgJ+O3orCkkAUN0JR3IDWPSRY3eECNTlW96ZErGMqRhyPsCFW733g==", + "requires": { + "@mongosh/errors": "2.3.1", + "@mongosh/i18n": "2.3.1", + "mongodb-connection-string-url": "^3.0.1" + } + }, + "@mongosh/async-rewriter2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.1.tgz", + "integrity": "sha512-4tCMYMmhlet4/TYowsGPaoXhXQd5C6jykPnSOMZZrluZeDqRqWJfozW7161m+8Xe7IMZf4KyFzk8CAVewJfzLw==", + "requires": { + "@babel/core": "^7.22.8", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/types": "^7.22.5" + } + }, + "@mongosh/autocomplete": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.1.tgz", + "integrity": "sha512-rTZ1pKOKahs62NLTiSnWKp4/34VWnVsSG+rvpup2Xf/XC8/uFuFZo5Moj6eIgEF49PSyfICA+agmg47ldeQelw==", + "requires": { + "@mongodb-js/mongodb-constants": "^0.10.1", + "@mongosh/shell-api": "2.3.1", + "semver": "^7.5.4" + } + }, + "@mongosh/browser-repl": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.1.tgz", + "integrity": "sha512-GYBJbfvLf2uxpLkiZdxYO7sQKwK9n+toRtl7WNahHK/e3VQQRcxwJqUp392y5MxyX3E/J4J+7Uy4YoTTiRKDtg==", + "requires": { + "@mongosh/browser-runtime-core": "2.3.1", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/i18n": "2.3.1", + "@mongosh/node-runtime-worker-thread": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "numeral": "^2.0.6", + "text-table": "^0.2.0" + } + }, + "@mongosh/browser-runtime-core": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.1.tgz", + "integrity": "sha512-pFV3g7qIY8YRLqH0GPc5YJSXx2U36Jf475nuVGsqmGdHVwmXRRCbTBa+0Bel/divc9YDD9/GNLMGGIVjRUfl9A==", + "requires": { + "@mongosh/autocomplete": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "@mongosh/shell-api": "2.3.1", + "@mongosh/shell-evaluator": "2.3.1" + } + }, + "@mongosh/errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.1.tgz", + "integrity": "sha512-opMEluGMEABO4v72nOwJTPeaP2adNduzh7oFGLBtfencOw0em38g93XnzL5iwH/Bjp2BVAEiMtcHYZeMRus7FQ==" + }, + "@mongosh/history": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.1.tgz", + "integrity": "sha512-hjKcqQy0PtYHSl5ZxkiCKi4OltHm0ZQdpJ05a5R26fEvNue+0tcv1TfnXbVxAk9K9Q2vB06SIRI0rnJrTtG+yQ==", + "requires": { + "mongodb-connection-string-url": "^3.0.1", + "mongodb-redact": "^1.1.2" + } + }, + "@mongosh/i18n": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.1.tgz", + "integrity": "sha512-qwYjGJKV8mQl/dqL21aIo3z1wdoE80JBiGGhJgyc2ofhLTvdktoav0FXKWOPrpvSR3K29L98D0H8V7uhisfdRQ==", + "requires": { + "@mongosh/errors": "2.3.1" + } + }, + "@mongosh/logging": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.1.tgz", + "integrity": "sha512-DDe4YNZJfKI9guyzCTdcvEpn0E20v94wnRpfiDfp9y05WUvJsDPBWWmhyGLYj4c1qrDctj8BiGt9mbb/7tY6Yw==", + "requires": { + "@mongodb-js/devtools-connect": "^3.2.10", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/types": "2.3.1", + "mongodb-log-writer": "^1.4.2", + "mongodb-redact": "^1.1.2" + } + }, + "@mongosh/node-runtime-worker-thread": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", + "integrity": "sha512-RmWQwQHdPEClthSBlLx3pLuQcrba9mGUnXpRIlT56Ddv7KyDEORM80yR/1SfUuxyPJ0BwtOcXIqAYf/m/KF85Q==", + "requires": { + "interruptor": "^1.0.1", + "system-ca": "^2.0.1", + "web-worker": "^1.3.0" + } + }, + "@mongosh/service-provider-core": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.1.tgz", + "integrity": "sha512-+UusnZjXqM2JWdva+11IX4fRW0+sqJS5FhpQ7UHreQyGzdDcgIIqFe1fB4CMfzaMdjQ7RvUqIMM5bV81xDZ9vA==", + "requires": { + "@aws-sdk/credential-providers": "^3.525.0", + "@mongosh/errors": "2.3.1", + "bson": "^6.7.0", + "mongodb": "^6.8.0", + "mongodb-build-info": "^1.7.2", + "mongodb-client-encryption": "^6.1.0", + "mongodb-connection-string-url": "^3.0.1" + } + }, + "@mongosh/shell-api": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.1.tgz", + "integrity": "sha512-ou6LIbpqlzsKVFiBQJ9Aqt5OxS5NuLb5y2cKuTPvv0wEKrPjg/XAHVyo+Bw09fa4ZYPDk705RehgtfdTpKnLfQ==", + "requires": { + "@mongosh/arg-parser": "2.3.1", + "@mongosh/errors": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/i18n": "2.3.1", + "@mongosh/service-provider-core": "2.3.1", + "mongodb-redact": "^1.1.2" + } + }, + "@mongosh/shell-evaluator": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.1.tgz", + "integrity": "sha512-MWGL8600o4d1/ngBOQXrorEmYBZebDJeF3g7CM0QmZAuHzJ9HY/67bm/xDKUn/9H0K3tVJSFAWYOXk99tQqTHQ==", + "requires": { + "@mongosh/async-rewriter2": "2.3.1", + "@mongosh/history": "2.3.1", + "@mongosh/shell-api": "2.3.1" + } + }, + "@mongosh/types": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.1.tgz", + "integrity": "sha512-fpMJ4yHhilTIWe3jgWoE+Eq0q9ij40HMGRfCJoZE+aOCslBkggqsia5Fh13G8JCFKangkWnZ5UMMAxSg6VBJgQ==", + "requires": { + "@mongodb-js/devtools-connect": "^3.2.10" + } + }, + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "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==" + }, + "debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "requires": { + "ms": "2.1.2" + } + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, + "lru-cache": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", + "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==" + }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -59879,75 +60187,11 @@ } } }, - "@mongodb-js/devtools-connect": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.5.tgz", - "integrity": "sha512-hAYy39Dhss7ObSt21YJ30HKCod7lsO/mOQCHIaVHv9uNNAr02dFQHVA/Zd75wikcbpYybYxOM2Ou0zznvr8Jzg==", - "requires": { - "@mongodb-js/devtools-proxy-support": "^0.3.5", - "@mongodb-js/oidc-http-server-pages": "1.1.2", - "kerberos": "^2.1.0", - "lodash.merge": "^4.6.2", - "mongodb-client-encryption": "^6.1.0", - "mongodb-connection-string-url": "^3.0.0", - "os-dns-native": "^1.2.0", - "resolve-mongodb-srv": "^1.1.1", - "socks": "^2.7.3" - } - }, "@mongodb-js/devtools-github-repo": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-github-repo/-/devtools-github-repo-1.4.1.tgz", "integrity": "sha512-wpVbM7MTft2mFc66ZOulAW4TnyK9fzYL/dqhcUk7DMcdwO8TcR1VZPkh55fRugSXgkfCUcxfZmqmuSSAudLGjA==" }, - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.5.tgz", - "integrity": "sha512-QiIj6kYANGsUeCa9j48GgnrG/MZc5eOh24QoesaHp+gr572uFuq4fRHn31WeZ+ndCknSjP9UG5iSzbmFhkpTOQ==", - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - }, - "dependencies": { - "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==" - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - } - } - }, "@mongodb-js/dl-center": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", @@ -60567,11 +60811,6 @@ } } }, - "@mongodb-js/oidc-http-server-pages": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.2.tgz", - "integrity": "sha512-YcRlJ/HkKMahWvaPFTN/al5MGGX6CKQTsBHFTpNduxmeHd40jO8Cj5W7dfrqJAoit5E/G+GOwMaEfWdNrdlihg==" - }, "@mongodb-js/oidc-mock-provider": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-mock-provider/-/oidc-mock-provider-0.9.3.tgz", @@ -61661,202 +61900,6 @@ } } }, - "@mongosh/arg-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-2.3.0.tgz", - "integrity": "sha512-4vWpODQfL/4WS+7DTaeXfGWtkHT7N5CZaTbaasi3pjPu49WC3sLko9civwRJWN3ygoyxADDZrfhRCDELvXg2eg==", - "requires": { - "@mongosh/errors": "2.3.0", - "@mongosh/i18n": "2.3.0", - "mongodb-connection-string-url": "^3.0.1" - } - }, - "@mongosh/async-rewriter2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/async-rewriter2/-/async-rewriter2-2.3.0.tgz", - "integrity": "sha512-eYCxW76EeYDWZOsMHKIZAVXq0ePmiPOiy4SQ8sryDYluAzZR1e/2ZWMwwMG5tss1lkpG3q+nKTWsphFGCMUsLQ==", - "requires": { - "@babel/core": "^7.22.8", - "@babel/plugin-transform-destructuring": "^7.22.5", - "@babel/plugin-transform-parameters": "^7.22.5", - "@babel/plugin-transform-shorthand-properties": "^7.22.5", - "@babel/types": "^7.22.5" - }, - "dependencies": { - "@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - } - }, - "@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", - "requires": { - "@babel/types": "^7.25.2" - } - }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@mongosh/autocomplete": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/autocomplete/-/autocomplete-2.3.0.tgz", - "integrity": "sha512-64BZB+ruZ5leJrkA0QTKJpzYpezbpwdXD/e26D0H+zlKsL3/cX2+ZZVsZbBYTPbqickXPd52sYvz5H2bsiqVnA==", - "requires": { - "@mongodb-js/mongodb-constants": "^0.10.1", - "@mongosh/shell-api": "2.3.0", - "semver": "^7.5.4" - } - }, - "@mongosh/browser-repl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/browser-repl/-/browser-repl-2.3.0.tgz", - "integrity": "sha512-F74voFV9dGA8jsQrCs4f6td64f59V2ul+ploKN2nm4svmIgfvoxLSGrkfOM8aVZSAwV5Sf7Mo3b7oQ98svT96g==", - "requires": { - "@mongosh/browser-runtime-core": "2.3.0", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/i18n": "2.3.0", - "@mongosh/node-runtime-worker-thread": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "numeral": "^2.0.6", - "text-table": "^0.2.0" - }, - "dependencies": { - "numeral": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", - "integrity": "sha1-StCAk21EPCVhrtnyGX7//iX05QY=" - } - } - }, - "@mongosh/browser-runtime-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/browser-runtime-core/-/browser-runtime-core-2.3.0.tgz", - "integrity": "sha512-8BMqJTBZbCcMeBzGSf2DpP0PUU4+Gh9JHgieYVj6IUvqx0XL9zRNbSHBbfpjnIt+Baym8L2Ye2+GwILhARZmYg==", - "requires": { - "@mongosh/autocomplete": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "@mongosh/shell-api": "2.3.0", - "@mongosh/shell-evaluator": "2.3.0" - } - }, - "@mongosh/errors": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/errors/-/errors-2.3.0.tgz", - "integrity": "sha512-ul6OGLrCxWZ0C+g+WUwDZDXpZTATkri9yt3W/HP050h35jW37qWBeOi4FG9kwTwakgoaYiei87SwPfvN/M8oqg==" - }, - "@mongosh/history": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/history/-/history-2.3.0.tgz", - "integrity": "sha512-4ZBQxvaX1iazXImLzQsDR1hg7HY8FNtHsLFJYsMaTzN+995wAvqGUFYIFiETzArQ7/Vi+FVGx40kzIjYa5nzmA==", - "requires": { - "mongodb-connection-string-url": "^3.0.1", - "mongodb-redact": "^1.1.2" - } - }, - "@mongosh/i18n": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/i18n/-/i18n-2.3.0.tgz", - "integrity": "sha512-JnIY7dxPOr3WFZ0YFfB/i53flYr0tIUiM3i9xo2DXWyeaQiuHxQxYwmCIDlVkGhvLVVlSXY2U0ptA0AW0YNztg==", - "requires": { - "@mongosh/errors": "2.3.0" - } - }, - "@mongosh/logging": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/logging/-/logging-2.3.0.tgz", - "integrity": "sha512-fpyYdpNtZ9GeNuDgl2EYSds3z1zr54KrCXdLnBM4n/ynB6KPXZxEY5/qbkbCND3DRHyQNHFBsbZN7+hs+81pgw==", - "requires": { - "@mongodb-js/devtools-connect": "^3.2.5", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/types": "2.3.0", - "mongodb-log-writer": "^1.4.2", - "mongodb-redact": "^1.1.2" - } - }, - "@mongosh/node-runtime-worker-thread": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.0.tgz", - "integrity": "sha512-AhX0U8RcCJUu3/yPABPza6EAI2IAHpx3Nloxj788E79O2gH0ynm0hC+9LjDmACl/FQw730+3DH2XvTomlsodJA==", - "requires": { - "interruptor": "^1.0.1", - "system-ca": "^2.0.1" - } - }, - "@mongosh/service-provider-core": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/service-provider-core/-/service-provider-core-2.3.0.tgz", - "integrity": "sha512-0DQUKVhfpwJRiFvTc4gjG6dxNDZUWTAGnl9ihfIL5ShxNKXluo+9VcYEL1wxLTbF1xZaMeCDzH6rIM02G5PM3w==", - "requires": { - "@aws-sdk/credential-providers": "^3.525.0", - "@mongosh/errors": "2.3.0", - "bson": "^6.7.0", - "mongodb": "^6.8.0", - "mongodb-build-info": "^1.7.2", - "mongodb-client-encryption": "^6.1.0", - "mongodb-connection-string-url": "^3.0.1" - } - }, - "@mongosh/shell-api": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/shell-api/-/shell-api-2.3.0.tgz", - "integrity": "sha512-Xzyg1T20YVywE1lXwhxR2muDUA4F2ClYaeAPc4bjQabNT9fWbuJXqbGBSwy36sv0rpqTiZqWJoFQcAgMfAt0PQ==", - "requires": { - "@mongosh/arg-parser": "2.3.0", - "@mongosh/errors": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/i18n": "2.3.0", - "@mongosh/service-provider-core": "2.3.0", - "mongodb-redact": "^1.1.2" - } - }, - "@mongosh/shell-evaluator": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/shell-evaluator/-/shell-evaluator-2.3.0.tgz", - "integrity": "sha512-TvWFrFkZ+LORZbAWu6tZHeJs+OQwKPli1sEHAVKjhhjiNo4v/kV/3990Dcqre2IZNBpybaZweTChf3b7Y5Lijw==", - "requires": { - "@mongosh/async-rewriter2": "2.3.0", - "@mongosh/history": "2.3.0", - "@mongosh/shell-api": "2.3.0" - } - }, - "@mongosh/types": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@mongosh/types/-/types-2.3.0.tgz", - "integrity": "sha512-55V8S7Awj9fGi3cAf0/9svGagErnChrK4hOY2Z4C4y06vN5t/EUO15lyZYHJFUldnydfZzHODkPjjyWV53a1XQ==", - "requires": { - "@mongodb-js/devtools-connect": "^3.2.5" - } - }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -81164,7 +81207,7 @@ "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.4", "@mongodb-js/webpack-config-compass": "^1.4.1", - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "@segment/analytics-node": "^1.1.4", "ampersand-view": "^9.0.0", "chai": "^4.3.4", @@ -81232,6 +81275,16 @@ "system-ca": "^2.0.0" } }, + "@mongosh/node-runtime-worker-thread": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", + "integrity": "sha512-RmWQwQHdPEClthSBlLx3pLuQcrba9mGUnXpRIlT56Ddv7KyDEORM80yR/1SfUuxyPJ0BwtOcXIqAYf/m/KF85Q==", + "requires": { + "interruptor": "^1.0.1", + "system-ca": "^2.0.1", + "web-worker": "^1.3.0" + } + }, "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", @@ -89429,6 +89482,11 @@ "integrity": "sha512-nZnEH8dj+vJFqCRYdvYv0a59iLXsb8jJkt+xvXfwgnkyPdsSLtKNlYmtTDiHmTNGXeSXtpjTTUcNvFtrAk6VMQ==", "dev": true }, + "web-worker": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz", + "integrity": "sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==" + }, "webdriver": { "version": "8.40.0", "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.40.0.tgz", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 4f931ca3ff5..081804449b7 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -56,9 +56,9 @@ "@mongodb-js/compass-user-data": "^0.3.6", "@mongodb-js/compass-utils": "^0.6.11", "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongosh/browser-repl": "^2.3.0", - "@mongosh/logging": "^2.3.0", - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/browser-repl": "^2.3.1", + "@mongosh/logging": "^2.3.1", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "hadron-app-registry": "^9.2.5", diff --git a/packages/compass-shell/src/modules/worker-runtime.ts b/packages/compass-shell/src/modules/worker-runtime.ts index ec875d90358..b22d10c8ea9 100644 --- a/packages/compass-shell/src/modules/worker-runtime.ts +++ b/packages/compass-shell/src/modules/worker-runtime.ts @@ -101,8 +101,7 @@ export function createWorkerRuntime( driverOptions, cliOptions ?? {}, { - env: { ...process.env, ELECTRON_RUN_AS_NODE: '1' }, - serialization: 'advanced', + name: 'Compass Shell Worker', }, emitter ); diff --git a/packages/compass/package.json b/packages/compass/package.json index afc619107a9..46ea90052b0 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -180,7 +180,7 @@ "email": "compass@mongodb.com" }, "dependencies": { - "@mongosh/node-runtime-worker-thread": "^2.3.0", + "@mongosh/node-runtime-worker-thread": "^2.3.1", "clipboard": "^2.0.6", "kerberos": "^2.1.1", "keytar": "^7.9.0", diff --git a/packages/compass/src/app/utils/csp.ts b/packages/compass/src/app/utils/csp.ts index 8f3738cd2a2..5fcfcadb417 100644 --- a/packages/compass/src/app/utils/csp.ts +++ b/packages/compass/src/app/utils/csp.ts @@ -69,6 +69,7 @@ const defaultCSP = { ], 'object-src': ["'none'"], 'font-src': ['*', 'https://js.intercomcdn.com'], + 'worker-src': ["'self'", 'file:'], }; function injectCSP() { diff --git a/packages/compass/src/main/window-manager.ts b/packages/compass/src/main/window-manager.ts index 216878306ab..9f48839cf55 100644 --- a/packages/compass/src/main/window-manager.ts +++ b/packages/compass/src/main/window-manager.ts @@ -127,6 +127,11 @@ function showConnectWindow( nodeIntegration: true, contextIsolation: false, enableRemoteModule: true, + nodeIntegrationInWorker: true, + // For local dev, electron can not load @mongosh/node-runtime-worker-thread + // worker (file:///) from the filesystem due to same-origin policy. For this + // reason we disable the webSecurity. + webSecurity: process.env.DISABLE_ELECTRON_WEB_SECURITY !== '1', ...(opts && opts.webPreferences), }, }; diff --git a/packages/compass/webpack.config.js b/packages/compass/webpack.config.js index bc876922537..a4e8ca3a7e8 100644 --- a/packages/compass/webpack.config.js +++ b/packages/compass/webpack.config.js @@ -124,6 +124,14 @@ module.exports = (_env, args) => { externals, plugins: [ new webpack.EnvironmentPlugin(hadronEnvConfig), + // In local dev mode, this flag is used to disable web security when + // creating windows. It allows @mongosh/node-runtime-worker-thread + // worker to load itself from the file path on the localhost + new webpack.DefinePlugin({ + 'process.env.DISABLE_ELECTRON_WEB_SECURITY': JSON.stringify( + isServe(opts) ? '1' : '0' + ), + }), ...compileOnlyPlugins, ], }), From c4f2373abfa04efa6ac502dedccefc0b5424e55c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 09:26:51 +0000 Subject: [PATCH 16/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6221) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 255 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 251 insertions(+), 4 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 4b5a1a9d7c1..e7d7cd0e61e 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Tue Sep 10 2024. +This document was automatically generated on Wed Sep 11 2024. ## List of dependencies @@ -54,7 +54,7 @@ This document was automatically generated on Tue Sep 10 2024. | **[@babel/parser](#14bef066dc710f43f74ea7b6c8a9033e23accdd25f2e32a403481a61be702d82)** | 7.16.0 | MIT | | **[@babel/parser](#27fe55f0faea5a61c0cdbab26c30ea4f100865e6ae484124c0f65be8ecedc04e)** | 7.19.4 | MIT | | **[@babel/parser](#2d366b9f8c9ebfcd08f60ebbc93b47a2465d6637168d605287527e0fd79e1539)** | 7.25.0 | MIT | -| **[@babel/parser](#0d4e72d94303d12977829cea002dc75acb94c109b464f2c8e0614aa261176b5d)** | 7.25.3 | MIT | +| **[@babel/parser](#4dfa90cfe90188b3d219eee843ef7f70003af7c190bbb15dd2fe74a57ab9ae16)** | 7.25.6 | MIT | | **[@babel/plugin-syntax-jsx](#92b0c9e2acd6beca918c90ecdc4cc5973ac7c517f7dee4ef88df317effdfa44b)** | 7.22.5 | MIT | | **[@babel/plugin-syntax-typescript](#61156a21baf5a28e3fe10ec0f30808684165b1dbb5f5122c2e2eaf69f6f4f237)** | 7.21.4 | MIT | | **[@babel/plugin-transform-destructuring](#c97fc3729e02faa151dc6eb84560e5aba3f15e1b409cf5ed2a58431f96660368)** | 7.22.5 | MIT | @@ -67,6 +67,7 @@ This document was automatically generated on Tue Sep 10 2024. | **[@babel/template](#ce7b7770e36438d8eb9e8713520aca18c79d1fd0cad068eeb5c88cede557f6a3)** | 7.25.0 | MIT | | **[@babel/traverse](#bc1b8d30e8e37f5eade430e098b05094a0dd90264ff2c291510973e5315014af)** | 7.25.2 | MIT | | **[@babel/types](#9aa7b92f70d8ba232144b9cc1fcb0bcd4232c685ec191eb7b7dc2d79cd4056a7)** | 7.25.2 | MIT | +| **[@babel/types](#c6630d254fc6e684be9d283c7020e7e911bb98d9c99a3e405e4467b1e57ec9f4)** | 7.25.6 | MIT | | **[@codemirror/autocomplete](#62d2362c07f0c11664969b60d0d7c3e081905838b8994675aaf0e6c67baf358d)** | 6.17.0 | MIT | | **[@codemirror/commands](#e12a76404dd2d66430f2dff53a430449896e9b5c2558779497b855ba2ab9326a)** | 6.1.2 | MIT | | **[@codemirror/lang-javascript](#d5fb6a843784efdc3ec06ae43bdf3ca13ec93a6bce802995a47cf7bddafc9628)** | 6.1.2 | MIT | @@ -627,6 +628,7 @@ This document was automatically generated on Tue Sep 10 2024. | **[warning](#02c159f6bf591ba6e8523609cb610cbd897ea68c214f64dac6f21d7b4e4d3a2d)** | 4.0.3 | MIT | | **[web-streams-polyfill](#2349028b62115a87d9af122218c79a38cd90411e2b53a91c1cff7249e16f45f0)** | 3.3.3 | MIT | | **[web-vitals](#66d3585417e14f352ce331e44fe42a97c4d03073d014efd601538735085f84fe)** | 2.1.2 | Apache-2.0 | +| **[web-worker](#8aa3d357e4e58928a87a1cfde9f21452b05f10e194f93e5d5908bdff9b94e20a)** | 1.3.0 | Apache-2.0 | | **[webidl-conversions](#3604b2bfa479706fe7bd8068257240d32158704a3bffae30b414963343027aa1)** | 3.0.1 | BSD-2-Clause | | **[webidl-conversions](#cb7c681998e7ee3c598e6e37432bcf448946924eefe816636c3cb122bae46e1c)** | 7.0.0 | BSD-2-Clause | | **[webpack](#bd55cdb69f5b1b336d12c3f00d849ccb1f2c39987c257c89027d6a790f947496)** | 5.94.0 | MIT | @@ -5782,9 +5784,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.25.3) +### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.25.6) License tags: MIT @@ -6183,6 +6185,39 @@ License tags: MIT License files: +- LICENSE: + + MIT License + + Copyright (c) 2014-present Sebastian McKenzie and other contributors + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +### [@babel/types](https://www.npmjs.com/package/@babel/types) (version 7.25.6) + +License tags: MIT + +License files: + - LICENSE: MIT License @@ -40639,6 +40674,218 @@ License files: See the License for the specific language governing permissions and limitations under the License. + + +### [web-worker](https://www.npmjs.com/package/web-worker) (version 1.3.0) + +License tags: Apache-2.0 + +License files: + +- LICENSE: + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + ### [webidl-conversions](https://www.npmjs.com/package/webidl-conversions) (version 3.0.1) From 946f534264e34e99059b4dc539ae953082b6e0d5 Mon Sep 17 00:00:00 2001 From: svc-devtoolsbot <79531021+svc-devtoolsbot@users.noreply.github.com> Date: Wed, 11 Sep 2024 07:03:32 -0400 Subject: [PATCH 17/57] chore: update electron (#6206) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- configs/webpack-config-compass/package.json | 2 +- package-lock.json | 94 +++++++++---------- packages/atlas-service/package.json | 2 +- packages/compass-crud/package.json | 2 +- packages/compass-e2e-tests/package.json | 2 +- packages/compass-explain-plan/package.json | 2 +- packages/compass-find-in-page/package.json | 2 +- packages/compass-import-export/package.json | 2 +- packages/compass-indexes/package.json | 2 +- packages/compass-query-bar/package.json | 2 +- .../compass-schema-validation/package.json | 2 +- packages/compass-shell/package.json | 2 +- packages/compass-utils/package.json | 2 +- packages/compass-web/package.json | 2 +- packages/compass/package.json | 2 +- packages/connection-storage/package.json | 2 +- packages/hadron-build/package.json | 2 +- packages/hadron-ipc/package.json | 2 +- scripts/package.json | 2 +- 19 files changed, 60 insertions(+), 70 deletions(-) diff --git a/configs/webpack-config-compass/package.json b/configs/webpack-config-compass/package.json index e18b66b4a1c..ff0fbb278ef 100644 --- a/configs/webpack-config-compass/package.json +++ b/configs/webpack-config-compass/package.json @@ -73,7 +73,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", "less-loader": "^10.0.1", diff --git a/package-lock.json b/package-lock.json index a4256f0e6c7..f3443e3fb5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -567,7 +567,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", "less-loader": "^10.0.1", @@ -21205,9 +21205,9 @@ } }, "node_modules/electron": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.4.0.tgz", - "integrity": "sha512-ric3KLPQ9anXYjtTDkj5NbEcXZqRUwqxrxTviIjLdMdHqd5O+hkSHEzXgbSJUOt+7uw+zZuybn9+IM9y7iEpqg==", + "version": "30.5.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.0.tgz", + "integrity": "sha512-20c774PEsCFRzIgpZIaY6t/wTYxam0MfxQt5t+wG8aStHsl81FchUyLbDo4a59goqE7mHjLOdBDlxmZk88IgRw==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", @@ -21647,7 +21647,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "license": "MIT", "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", @@ -21668,7 +21667,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -21680,7 +21678,6 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "license": "MIT", "engines": { "node": ">=10.6.0" } @@ -21689,7 +21686,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -21704,7 +21700,6 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", @@ -21718,7 +21713,6 @@ "version": "11.8.6", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -21743,7 +21737,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", "optionalDependencies": { "graceful-fs": "^4.1.6" } @@ -21752,7 +21745,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", "engines": { "node": ">=10" }, @@ -21764,7 +21756,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -21773,7 +21764,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -43889,7 +43879,7 @@ "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/oidc-plugin": "^1.1.1", "compass-preferences-model": "^2.28.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "lodash": "^4.17.21", @@ -44169,7 +44159,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", @@ -44829,7 +44819,7 @@ "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -44899,7 +44889,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -45281,7 +45271,7 @@ "@types/d3-hierarchy": "^3.1.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -45479,7 +45469,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -45705,7 +45695,7 @@ "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-app-registry": "^9.2.5", "hadron-document": "^8.6.2", "hadron-ipc": "^3.2.22", @@ -45822,7 +45812,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -46301,7 +46291,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -46509,7 +46499,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -46698,7 +46688,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -47464,7 +47454,7 @@ "license": "SSPL", "dependencies": { "@electron/remote": "^2.1.2", - "electron": "^30.4.0" + "electron": "^30.5.0" }, "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.6", @@ -47561,7 +47551,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.19.2", @@ -48251,7 +48241,7 @@ "@mongodb-js/connection-info": "^0.7.0", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "keytar": "^7.9.0", @@ -48952,7 +48942,7 @@ "debug": "^4.3.4", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", "flatnest": "^1.0.0", @@ -49794,7 +49784,7 @@ "license": "SSPL", "dependencies": { "debug": "^4.3.4", - "electron": "^30.4.0", + "electron": "^30.5.0", "is-electron-renderer": "^2.0.1" }, "devDependencies": { @@ -50765,7 +50755,7 @@ "@babel/core": "^7.24.3", "@mongodb-js/monorepo-tools": "^1.1.1", "commander": "^11.0.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", "pacote": "^11.3.5", @@ -56583,7 +56573,7 @@ "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", @@ -57232,7 +57222,7 @@ "chai-as-promised": "^7.1.1", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -57404,7 +57394,7 @@ "d3-flextree": "^2.1.2", "d3-hierarchy": "^3.1.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57578,7 +57568,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57733,7 +57723,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57809,7 +57799,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -58085,7 +58075,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -58296,7 +58286,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -58329,7 +58319,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "commander": "^11.0.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", @@ -58832,7 +58822,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -59438,7 +59428,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", "mocha": "^10.2.0", @@ -59519,7 +59509,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.19.2", @@ -60095,7 +60085,7 @@ "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", @@ -61279,7 +61269,7 @@ "core-js": "^3.17.3", "css-loader": "^4.3.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", @@ -69269,7 +69259,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -71655,9 +71645,9 @@ } }, "electron": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.4.0.tgz", - "integrity": "sha512-ric3KLPQ9anXYjtTDkj5NbEcXZqRUwqxrxTviIjLdMdHqd5O+hkSHEzXgbSJUOt+7uw+zZuybn9+IM9y7iEpqg==", + "version": "30.5.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.0.tgz", + "integrity": "sha512-20c774PEsCFRzIgpZIaY6t/wTYxam0MfxQt5t+wG8aStHsl81FchUyLbDo4a59goqE7mHjLOdBDlxmZk88IgRw==", "requires": { "@electron/get": "^2.0.0", "@types/node": "^20.9.0", @@ -75476,7 +75466,7 @@ "del": "^2.0.2", "depcheck": "^1.4.1", "download": "^8.0.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-installer-debian": "^3.2.0", "electron-installer-dmg": "^4.0.0", "electron-installer-redhat": "^2.0.0", @@ -76190,7 +76180,7 @@ "chai": "^4.3.6", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "is-electron-renderer": "^2.0.1", "mocha": "^10.2.0", @@ -81217,7 +81207,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 10c2d3c9667..21dd8d24c55 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -83,7 +83,7 @@ "@mongodb-js/oidc-plugin": "^1.1.1", "hadron-app-registry": "^9.2.5", "compass-preferences-model": "^2.28.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-ipc": "^3.2.22", "lodash": "^4.17.21", "react": "^17.0.2", diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 5cf35908561..75eb5b02ba3 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -58,7 +58,7 @@ "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index e158bb7ee5f..09b2bbb72c2 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -52,7 +52,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index 90b43737d54..83e2207fefd 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -58,7 +58,7 @@ "@types/d3-hierarchy": "^3.1.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-find-in-page/package.json b/packages/compass-find-in-page/package.json index ea84338120b..2fc48f4e392 100644 --- a/packages/compass-find-in-page/package.json +++ b/packages/compass-find-in-page/package.json @@ -61,7 +61,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index 2ba8929dc6e..9fe9f019b21 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -59,7 +59,7 @@ "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-app-registry": "^9.2.5", "hadron-document": "^8.6.2", "hadron-ipc": "^3.2.22", diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index 011bbf0a703..56aaddff401 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -55,7 +55,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index efb85b7912b..a36a2870bed 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -55,7 +55,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index b6fe6c65782..3e42684b957 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -54,7 +54,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 081804449b7..e61b730ca8a 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -75,7 +75,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-utils/package.json b/packages/compass-utils/package.json index 14b4e54062f..d9aa89c938b 100644 --- a/packages/compass-utils/package.json +++ b/packages/compass-utils/package.json @@ -69,6 +69,6 @@ }, "dependencies": { "@electron/remote": "^2.1.2", - "electron": "^30.4.0" + "electron": "^30.5.0" } } diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index 6039b2fab16..f8cbe7942fc 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -106,7 +106,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.19.2", diff --git a/packages/compass/package.json b/packages/compass/package.json index 46ea90052b0..73539fb516f 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -242,7 +242,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", diff --git a/packages/connection-storage/package.json b/packages/connection-storage/package.json index 642eb245ed1..944ceb91666 100644 --- a/packages/connection-storage/package.json +++ b/packages/connection-storage/package.json @@ -63,7 +63,7 @@ "@mongodb-js/connection-info": "^0.7.0", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", - "electron": "^30.4.0", + "electron": "^30.5.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "keytar": "^7.9.0", diff --git a/packages/hadron-build/package.json b/packages/hadron-build/package.json index 898f9ea22f6..bfb03930194 100644 --- a/packages/hadron-build/package.json +++ b/packages/hadron-build/package.json @@ -32,7 +32,7 @@ "debug": "^4.3.4", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", "flatnest": "^1.0.0", diff --git a/packages/hadron-ipc/package.json b/packages/hadron-ipc/package.json index 0c2ad4bbff3..df0eafabf86 100644 --- a/packages/hadron-ipc/package.json +++ b/packages/hadron-ipc/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "debug": "^4.3.4", - "electron": "^30.4.0", + "electron": "^30.5.0", "is-electron-renderer": "^2.0.1" } } diff --git a/scripts/package.json b/scripts/package.json index 0b0bc759ad6..48636955af1 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -40,7 +40,7 @@ "@babel/core": "^7.24.3", "@mongodb-js/monorepo-tools": "^1.1.1", "commander": "^11.0.0", - "electron": "^30.4.0", + "electron": "^30.5.0", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", "pacote": "^11.3.5", From a0f6f23b8a59b1afcae4d67f24b2ce11ffd3f833 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 11:10:31 +0000 Subject: [PATCH 18/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6223) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index e7d7cd0e61e..0505c59d53d 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -253,7 +253,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[ee-first](#e2746902c758ae8a6f91ffb9618cd53717f936cb33c6323e65b6b7b24f7ebefe)** | 1.1.1 | MIT | | **[electron-dl](#e97e034c7b93c63e7a433d75f6f1de3e0668764225ebbd61dbde8d1b55d6f3b7)** | 3.5.0 | MIT | | **[electron-squirrel-startup](#09fb8168e8fda2e174f8d1a1c392ffd8f762c5637c788edd00d1e2486d060349)** | 1.0.1 | Apache-2.0 | -| **[electron](#a6c4259fce8f4193f5fead998cb489be8bcf7a128cc2af3e2291846a083855ce)** | 30.4.0 | MIT | +| **[electron](#d41e0bdf063d64691a8d2058e15c90783bbdce7e9cb88eec8d1a02cabc43dd4a)** | 30.5.0 | MIT | | **[encodeurl](#b89152db475e86531e570f87b45d8a51aa5e5d87d4cc3b960cee7b8febf1d26a)** | 1.0.2 | MIT | | **[end-of-stream](#fadc10994f5fa767d06fb25cfff35fb17a895daf3bc3477c782907668ed16563)** | 1.4.4 | MIT | | **[ensure-error](#3b1eba5276d89414cef21a1007e85c4f1d6749bf57b300e082ab23975a41dbc9)** | 3.0.1 | MIT | @@ -19719,9 +19719,9 @@ License files: See the License for the specific language governing permissions and limitations under the License. - + -### [electron](https://www.npmjs.com/package/electron) (version 30.4.0) +### [electron](https://www.npmjs.com/package/electron) (version 30.5.0) License tags: MIT From 9eeef2398f0fc9751a261b31ee375e79669402a9 Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Wed, 11 Sep 2024 13:21:43 +0200 Subject: [PATCH 19/57] fix(deps): update dset to latest (#6222) * override dset * undo override * use npm update dset --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3443e3fb5c..78540c81919 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21019,9 +21019,9 @@ } }, "node_modules/dset": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", - "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "dev": true, "engines": { "node": ">=4" @@ -71499,9 +71499,9 @@ } }, "dset": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", - "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "dev": true }, "duplexer": { From 4609f91a44b2c6a97fbbd41801d2e1cd295725e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 11:28:53 +0000 Subject: [PATCH 20/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6224) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 0505c59d53d..8dec3fbfd97 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -249,7 +249,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[dom-accessibility-api](#a91e4ceabaaddea1b80532694b37621980591fa28c7144a3a848e66363bfee06)** | 0.5.9 | MIT | | **[dom-helpers](#8d51cc2c2eba67a9ee7b80bdbca48b1102ceeb0618178fae05b1a82522a80e6e)** | 5.2.1 | MIT | | **[domify](#4360a769ee10e827f9ae503aa7ea9aeb9039932fa02ac938316df303704a7fb1)** | 1.4.1 | MIT | -| **[dset](#0ad3cccee140cec056ad5553443d2c3609cb002e279e2820cada2d6cb85c883d)** | 3.1.3 | MIT | +| **[dset](#f51cb933ffb40a4dfeed4e6c3f7e6299cf7d05c42528b3fccc5bc7cab310914c)** | 3.1.4 | MIT | | **[ee-first](#e2746902c758ae8a6f91ffb9618cd53717f936cb33c6323e65b6b7b24f7ebefe)** | 1.1.1 | MIT | | **[electron-dl](#e97e034c7b93c63e7a433d75f6f1de3e0668764225ebbd61dbde8d1b55d6f3b7)** | 3.5.0 | MIT | | **[electron-squirrel-startup](#09fb8168e8fda2e174f8d1a1c392ffd8f762c5637c788edd00d1e2486d060349)** | 1.0.1 | Apache-2.0 | @@ -19423,9 +19423,9 @@ License files: License tags: MIT - + -### [dset](https://www.npmjs.com/package/dset) (version 3.1.3) +### [dset](https://www.npmjs.com/package/dset) (version 3.1.4) License tags: MIT From f87ff575c0b31a12682cba27508a4dfb8af8d1a5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 12:05:20 +0000 Subject: [PATCH 21/57] v1.44.4-beta.1 --- package-lock.json | 2 +- packages/compass/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cf5957c070..c3bef1ca008 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44093,7 +44093,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.0", + "version": "1.44.4-beta.1", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index a6bcc8d7eca..cc32769db12 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.0", + "version": "1.44.4-beta.1", "apiVersion": "3.0.0", "main": "build/main.js", "author": { @@ -277,5 +277,5 @@ "macos-export-certificate-and-key": "^1.1.2", "win-export-certificate-and-key": "^2.0.1" }, - "releasePublisher": "Maurizio Casimirri " + "releasePublisher": "Basit Chonka " } From 0c56c4d2deb67ddc935fedcbd47603d86883856d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=A6n=20Hansen?= Date: Wed, 11 Sep 2024 16:38:27 +0200 Subject: [PATCH 22/57] chore(ci): build and test packaged app on the newer macos version COMPASS-8090 (#6220) Upgrade variants to use MacOS 14 --- .evergreen/buildvariants-and-tasks.in.yml | 27 ++++++++++++----- .evergreen/buildvariants-and-tasks.yml | 36 ++++++++++++++++++----- 2 files changed, 49 insertions(+), 14 deletions(-) diff --git a/.evergreen/buildvariants-and-tasks.in.yml b/.evergreen/buildvariants-and-tasks.in.yml index 33f66627cf3..c260c5e1512 100644 --- a/.evergreen/buildvariants-and-tasks.in.yml +++ b/.evergreen/buildvariants-and-tasks.in.yml @@ -49,48 +49,61 @@ const PACKAGE_BUILD_VARIANTS = [ { name: 'package-macos-x64', display_name: 'Package MacOS Intel', - run_on: 'macos-1100', + run_on: 'macos-14', silk_asset_group: 'compass-macos', }, { name: 'package-macos-arm', display_name: 'Package MacOS Arm64', - run_on: 'macos-1100-arm64', + run_on: 'macos-14-arm64', silk_asset_group: 'compass-macos-arm', } ]; const TEST_PACKAGED_APP_BUILD_VARIANTS = [ { - name: 'test-server-ubuntu', + name: 'test-packaged-app-ubuntu', display_name: 'Ubuntu 20.04', run_on: 'ubuntu2004-large', depends_on: 'package-ubuntu', }, { - name: 'test-server-windows', + name: 'test-packaged-app-windows', display_name: 'Windows 10', run_on: 'windows-vsCurrent-large', depends_on: 'package-windows', }, { - name: 'test-server-rhel', + name: 'test-packaged-app-rhel', display_name: 'RHEL 8.0', run_on: 'rhel80-large', depends_on: 'package-rhel', }, { - name: 'test-server-macos-11-arm', + name: 'test-packaged-app-macos-11-arm', display_name: 'MacOS arm64 11', run_on: 'macos-1100-arm64-gui', depends_on: 'package-macos-arm' }, { - name: 'test-server-macos-11-x64', + name: 'test-packaged-app-macos-11-x64', display_name: 'MacOS x64 11', run_on: 'macos-1100-gui', patchable: false, depends_on: 'package-macos-x64' + }, + { + name: 'test-packaged-app-macos-14-arm', + display_name: 'MacOS arm64 14', + run_on: 'macos-14-arm64-gui', + depends_on: 'package-macos-arm' + }, + { + name: 'test-packaged-app-macos-14-x64', + display_name: 'MacOS x64 14', + run_on: 'macos-14-gui', + patchable: false, + depends_on: 'package-macos-x64' } ]; diff --git a/.evergreen/buildvariants-and-tasks.yml b/.evergreen/buildvariants-and-tasks.yml index 9db333b07a0..3d92a762ab5 100644 --- a/.evergreen/buildvariants-and-tasks.yml +++ b/.evergreen/buildvariants-and-tasks.yml @@ -62,7 +62,7 @@ buildvariants: expansions: silk_asset_group: compass-macos display_name: Package MacOS Intel - run_on: macos-1100 + run_on: macos-14 tasks: - name: package-compass - name: package-compass-isolated @@ -71,7 +71,7 @@ buildvariants: expansions: silk_asset_group: compass-macos-arm display_name: Package MacOS Arm64 - run_on: macos-1100-arm64 + run_on: macos-14-arm64 tasks: - name: package-compass - name: package-compass-isolated @@ -145,7 +145,7 @@ buildvariants: - name: test-server-latest-alpha-1 - name: test-server-latest-alpha-2 - name: test-server-latest-alpha-3 - - name: test-server-ubuntu + - name: test-packaged-app-ubuntu display_name: Test Packaged App Ubuntu 20.04 run_on: ubuntu2004-large patchable: true @@ -156,7 +156,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-server-windows + - name: test-packaged-app-windows display_name: Test Packaged App Windows 10 run_on: windows-vsCurrent-large patchable: true @@ -167,7 +167,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-server-rhel + - name: test-packaged-app-rhel display_name: Test Packaged App RHEL 8.0 run_on: rhel80-large patchable: true @@ -178,7 +178,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-server-macos-11-arm + - name: test-packaged-app-macos-11-arm display_name: Test Packaged App MacOS arm64 11 run_on: macos-1100-arm64-gui patchable: true @@ -189,7 +189,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-server-macos-11-x64 + - name: test-packaged-app-macos-11-x64 display_name: Test Packaged App MacOS x64 11 run_on: macos-1100-gui patchable: false @@ -200,6 +200,28 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 + - name: test-packaged-app-macos-14-arm + display_name: Test Packaged App MacOS arm64 14 + run_on: macos-14-arm64-gui + patchable: true + depends_on: + - name: package-compass + variant: package-macos-arm + tasks: + - name: test-packaged-app-1 + - name: test-packaged-app-2 + - name: test-packaged-app-3 + - name: test-packaged-app-macos-14-x64 + display_name: Test Packaged App MacOS x64 14 + run_on: macos-14-gui + patchable: false + depends_on: + - name: package-compass + variant: package-macos-x64 + tasks: + - name: test-packaged-app-1 + - name: test-packaged-app-2 + - name: test-packaged-app-3 - name: publish display_name: Publish Artifacts run_on: ubuntu2004-large From b75d06aa95ac9a51d21ce765529ece078bdbafda Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Wed, 11 Sep 2024 18:28:34 +0200 Subject: [PATCH 23/57] fix(deps): override body-parser and bump express COMPASS-8288) (#6226) * override body-parser and bump express * don't override --- package-lock.json | 427 +++++++++++++++++++++--------- packages/compass-web/package.json | 2 +- 2 files changed, 302 insertions(+), 127 deletions(-) diff --git a/package-lock.json b/package-lock.json index 78540c81919..6dbad65a2c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17318,9 +17318,9 @@ "dev": true }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -17330,7 +17330,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -17361,6 +17361,20 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour-service": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", @@ -23911,36 +23925,36 @@ "dev": true }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -23990,19 +24004,10 @@ "node": ">= 0.8" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -24013,9 +24018,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", @@ -24344,6 +24349,44 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/finalhandler/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/find-root": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", @@ -30147,18 +30190,6 @@ "node": ">=6" } }, - "node_modules/less/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "optional": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/less/node_modules/pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -31624,9 +31655,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-source-map": { "version": "1.1.0", @@ -31689,6 +31723,17 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -39099,9 +39144,9 @@ "devOptional": true }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -39132,7 +39177,7 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/depd": { "version": "2.0.0", @@ -39142,17 +39187,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -39256,9 +39290,9 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -39269,6 +39303,63 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/serve-static/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -39366,13 +39457,17 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -47554,7 +47649,7 @@ "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", - "express": "^4.19.2", + "express": "^4.20.0", "express-http-proxy": "^2.0.0", "hadron-app-registry": "^9.2.5", "is-ip": "^5.0.1", @@ -59512,7 +59607,7 @@ "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", - "express": "^4.19.2", + "express": "^4.20.0", "express-http-proxy": "^2.0.0", "hadron-app-registry": "^9.2.5", "is-ip": "^5.0.1", @@ -68266,9 +68361,9 @@ "dev": true }, "body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "requires": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -68278,7 +68373,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -68301,6 +68396,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "requires": { + "side-channel": "^1.0.6" + } } } }, @@ -73755,36 +73858,36 @@ "dev": true }, "express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -73805,19 +73908,10 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, - "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - } + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" }, "ms": { "version": "2.0.0", @@ -73825,9 +73919,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "statuses": { "version": "2.0.1", @@ -74100,6 +74194,40 @@ "to-regex-range": "^5.0.1" } }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } + } + }, "find-root": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/find-root/-/find-root-0.1.2.tgz", @@ -79348,12 +79476,6 @@ "semver": "^5.6.0" } }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "optional": true - }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -80647,9 +80769,9 @@ } }, "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, "merge-source-map": { "version": "1.1.0", @@ -80702,6 +80824,11 @@ } } }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -86789,9 +86916,9 @@ "devOptional": true }, "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "requires": { "debug": "2.6.9", "depd": "2.0.0", @@ -86819,7 +86946,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" } } }, @@ -86828,11 +86955,6 @@ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -86921,14 +87043,66 @@ } }, "serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "0.18.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + } + } + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + } } }, "set-blocking": { @@ -87007,13 +87181,14 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "siginfo": { diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index f8cbe7942fc..4878519641e 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -109,7 +109,7 @@ "electron": "^30.5.0", "eslint": "^7.25.0", "events": "^3.3.0", - "express": "^4.19.2", + "express": "^4.20.0", "express-http-proxy": "^2.0.0", "hadron-app-registry": "^9.2.5", "is-ip": "^5.0.1", From a9c0b1b9a008c798a79e9093bef372959caf56a4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:35:40 +0000 Subject: [PATCH 24/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6227) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 146 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 128 insertions(+), 18 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 8dec3fbfd97..e6f4cf0f8bb 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -187,7 +187,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[big-integer](#eb3eaa39f6d9126fdf0b39f43641e13908ba5ab8b70af073669d23cc768335b5)** | 1.6.52 | Unlicense | | **[bindings](#acdb65ce90d2786593049f690752613250632fd5aeaa2960152abc4f0e8f3a44)** | 1.5.0 | MIT | | **[bl](#0e8c95ceb67a28a94b8caec6fa59d55974c80aab5dcf21bf1b17b0867f694c3c)** | 4.1.0 | MIT | -| **[body-parser](#6b44aee8dd5ecc9ca689f12bdce5cd72765171cc2d1b935f50040be51871621a)** | 1.20.2 | MIT | +| **[body-parser](#ac02c7f4de34d468bfc87444d6d5f4691f322aa0b5dbfe2c2d0c3c42fd078dec)** | 1.20.3 | MIT | | **[bplist-parser](#a012056f1b32796d923573a3b1ef72cf36943d95e5e2f6af0f7eeab57a21be24)** | 0.2.0 | MIT | | **[bson](#b355c474f7d8440212aca8ad979743ee65c159f2d853f15ebad55e080bb21ae5)** | 6.7.0 | Apache-2.0 | | **[buffer-alloc-unsafe](#1022220a813dd092d3ced592ac36121a00bd08a9c2020e08ad370dc29ed217f0)** | 1.1.0 | MIT | @@ -255,6 +255,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[electron-squirrel-startup](#09fb8168e8fda2e174f8d1a1c392ffd8f762c5637c788edd00d1e2486d060349)** | 1.0.1 | Apache-2.0 | | **[electron](#d41e0bdf063d64691a8d2058e15c90783bbdce7e9cb88eec8d1a02cabc43dd4a)** | 30.5.0 | MIT | | **[encodeurl](#b89152db475e86531e570f87b45d8a51aa5e5d87d4cc3b960cee7b8febf1d26a)** | 1.0.2 | MIT | +| **[encodeurl](#177948a319ae0aeebbd65742c53c62b37c75ec1d021afa5a188d10a7ceae6623)** | 2.0.0 | MIT | | **[end-of-stream](#fadc10994f5fa767d06fb25cfff35fb17a895daf3bc3477c782907668ed16563)** | 1.4.4 | MIT | | **[ensure-error](#3b1eba5276d89414cef21a1007e85c4f1d6749bf57b300e082ab23975a41dbc9)** | 3.0.1 | MIT | | **[es-define-property](#f19a2c06a58db5974cd4d8abbd3fa0453122ea6d3bac0de0603ca69f72dcce38)** | 1.0.0 | MIT | @@ -274,7 +275,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[execa](#4172423d3420d919e31613f23914ef325af8a3bf9ed3c6110a4053369b1cfddd)** | 5.1.1 | MIT | | **[execa](#099ba5f976333854bfd5aa2237fd12d883c4477af76007a7963109833edef012)** | 7.2.0 | MIT | | **[expand-template](#46d3e73ca0d4a8c14e99252386f0a5c1a4fd8b2747331373d7b4da97105c15bb)** | 2.0.3 | (MIT OR WTFPL) | -| **[express](#2f6758d3407b167482b6e5939a39adfae4627f3ca3939e7ebd8f944423a1e069)** | 4.19.2 | MIT | +| **[express](#2f5e99f892082d7ae7608facedaa03184cf49f212373b334f68154c367871bce)** | 4.20.0 | MIT | | **[ext-list](#84470edae99e3ac5a9fdf9da513cd9a1ea7e479ca5fca13b6abecbb4c522f97c)** | 2.2.2 | MIT | | **[ext-name](#ad9b31fcbd25bf889177f1e55d92e083fbc5ae2460904d8a81abf075c4762abd)** | 5.0.0 | MIT | | **[facepaint](#7f6881dbbff5f35b8670063d56384fa880a5558aeaf952f1dc00997cfc7cddd4)** | 1.2.1 | MIT | @@ -451,7 +452,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[media-typer](#fa74be298a38f8f9351484e9124aba4a4086182a4cba24449f195219a2843784)** | 0.3.0 | MIT | | **[memoize-one](#4d802a078eb32373fe5d8119384598a703537750aeeb5990aa28659939260789)** | 5.2.1 | MIT | | **[memory-pager](#7fbdeab18f48c3527cae276a51cd879e42d15337aba1acb44fedcf748137608b)** | 1.5.0 | MIT | -| **[merge-descriptors](#8629510f1c3aef4893205a8e59216dee1806f69eaeedcdb2eb376b4632ced8d1)** | 1.0.1 | MIT | +| **[merge-descriptors](#0dc27d83f406152460ccee54a872599fa57bf48baa989aaa2165fc98eafd08da)** | 1.0.3 | MIT | | **[merge-stream](#df06bda70cbfe392ea02ab42ab188d21ab5c15e3c1a172e6f2ce4cd9d304c01f)** | 2.0.0 | MIT | | **[methods](#d2f0af2174fefc260353011b7a5dd7845576b8eb5f16c423378467dfd5b10f5f)** | 1.1.2 | MIT | | **[mime-db](#7cfa78c6359b5b06cbb7cde9659b052fb92a58e290411458d496ea39857bc15b)** | 1.52.0 | MIT | @@ -511,7 +512,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[path-exists](#3ae48f237e1a4424a3b1b60cfc95f35ca29141cd956f8bda85e763d7969e12c7)** | 4.0.0 | MIT | | **[path-key](#e1a2a032096ace66b422351e00b11b0229e42e4b49c2146f439f8fe442218451)** | 3.1.1 | MIT | | **[path-key](#8e0734b8abb76579df2174822606e692914e985fc58363a78e6ad4b2a4a5831f)** | 4.0.0 | MIT | -| **[path-to-regexp](#4db5679c99a0dc8ff8ccdf6366c06b318a3e81ee0a4c2f4958ac2327f96d0d44)** | 0.1.7 | MIT | +| **[path-to-regexp](#96d230365f414cce8d80ceb9d99d855685dfa922f931b49ea01952a1efe64266)** | 0.1.10 | MIT | | **[picocolors](#87994c8f4d800603a2cf449baca40fcaf984088237be5cebbfbc79de0d95da98)** | 1.0.1 | ISC | | **[polished](#a7a5d1244e48a082dbc54de31b5309caf950b12aa6bd9fefbba39e362e705f06)** | 4.2.2 | MIT | | **[possible-typed-array-names](#5ba4283f5512abd5d57e79c0a75acb3818d98d169df979afb01ad6867cefd312)** | 1.0.0 | MIT | @@ -524,6 +525,7 @@ This document was automatically generated on Wed Sep 11 2024. | **[punycode](#3fe331f5536b72438f24d644ea9804b5e462f791a4c72a6d94f37193af1086aa)** | 2.3.1 | MIT | | **[pupa](#b05b7cc4c1bc01acd063dc811b9b1b0a1a4b3e0f17be77deaeaabade7dfeb095)** | 2.1.1 | MIT | | **[qs](#f0014afee41bfb4a111252068b917fc6a9a61ea307f982526a7082ea503f9040)** | 6.11.0 | BSD-3-Clause | +| **[qs](#2240c454f0418501921d6b094c1f6477603b0c893c4d7a8ed2bdfcab9e75c069)** | 6.13.0 | BSD-3-Clause | | **[range-parser](#e973789240fef3c00f359e6acc8570dd769b70ee8b29fdcb679897fa2d696bff)** | 1.2.1 | MIT | | **[raw-body](#fc0f8cf1771db07ef15ce7dafcac6db8e351607bb82caf0e5838f1769a796266)** | 2.5.2 | MIT | | **[rc](#0dd705bd5862b4c60ed88e6b4a6f5ece23c627c97f6928233d32aefdd463c3f7)** | 1.2.8 | (BSD-2-Clause OR MIT OR Apache-2.0) | @@ -560,13 +562,14 @@ This document was automatically generated on Wed Sep 11 2024. | **[semver](#8b8f657069cf84b7ca932ab17eb24a0a55a8053ccd2a36c03185dadab64db3f8)** | 6.3.1 | ISC | | **[semver](#2c8b8c47dd7d24873eda4559b25851062c21d7584a396735b363f9bab626dd7b)** | 7.6.3 | ISC | | **[send](#a5aa96052b8bf57c58c38d6fae3a3b7d94ec212b6100f58a8260eb2f6a8cff6d)** | 0.18.0 | MIT | -| **[serve-static](#03156d123ff3a9482fa09d97af4668d5e2ae058c4e3d2c67fe4a1c0c072403f0)** | 1.15.0 | MIT | +| **[send](#412cd4c4a8e6aaa433d5e67852c05a1e307fd4eb9dc362bdc30fa099313c24cb)** | 0.19.0 | MIT | +| **[serve-static](#d81d7a0483c3a6c271dfd6d2283f9439b5edce9940d39d8b9057f9225291374b)** | 1.16.0 | MIT | | **[set-function-length](#88ee3e1c8e8c22ac3653a290c1cdc68787d064f17a743020a070b31290bb4eb9)** | 1.2.2 | MIT | | **[set-function-name](#f9d4c9272c71403774a64f46fc69cefd1039845f2ee1d252fb62cbd97f9e7fb4)** | 2.0.2 | MIT | | **[setprototypeof](#7787a1d3bc2f39b65d75407d5d8d02d8ddb70f1cdb74897f15115e995fb64a56)** | 1.2.0 | ISC | | **[shebang-command](#a9cba97b71b818fb0a4978f8b14875ae118f292a19ffa97c8b2d848f9a897d89)** | 2.0.0 | MIT | | **[shebang-regex](#849fb37298f1c4dcdeb6065edc4242918c7533bcfda5c67747e6ce4620c587bb)** | 3.0.0 | MIT | -| **[side-channel](#90d899d6f4d9080f6f0557879cc46c095d553b16e105525a7ed156113a6e1ead)** | 1.0.4 | MIT | +| **[side-channel](#b87368b55d9ba1ff553ed48946c9eb64686bc10b48bc0f5859c669427508a6b5)** | 1.0.6 | MIT | | **[signal-exit](#5ad551060d44370794e770309e198719e94f939e46a3ea537b776c9c4fdad9e4)** | 3.0.7 | ISC | | **[signal-exit](#09ce5ebc7ff1552bf0ed979e2479321c6a9a4b7a06d90ece7a70fa360007eff4)** | 4.1.0 | ISC | | **[simple-concat](#7e08f893385d0a6d7059029da3885e8346ad01eb58d6e4561612d2fb653c15ec)** | 1.0.1 | MIT | @@ -17323,9 +17326,9 @@ License files: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [body-parser](https://www.npmjs.com/package/body-parser) (version 1.20.2) +### [body-parser](https://www.npmjs.com/package/body-parser) (version 1.20.3) License tags: MIT @@ -19759,6 +19762,39 @@ License tags: MIT License files: +- LICENSE: + + (The MIT License) + + Copyright (c) 2016 Douglas Christopher Wilson + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +### [encodeurl](https://www.npmjs.com/package/encodeurl) (version 2.0.0) + +License tags: MIT + +License files: + - LICENSE: (The MIT License) @@ -20318,9 +20354,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [express](https://www.npmjs.com/package/express) (version 4.19.2) +### [express](https://www.npmjs.com/package/express) (version 4.20.0) License tags: MIT @@ -26885,9 +26921,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [merge-descriptors](https://www.npmjs.com/package/merge-descriptors) (version 1.0.1) +### [merge-descriptors](https://www.npmjs.com/package/merge-descriptors) (version 1.0.3) License tags: MIT @@ -30245,9 +30281,9 @@ License files: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [path-to-regexp](https://www.npmjs.com/package/path-to-regexp) (version 0.1.7) +### [path-to-regexp](https://www.npmjs.com/package/path-to-regexp) (version 0.1.10) License tags: MIT @@ -36691,6 +36727,46 @@ License tags: BSD-3-Clause License files: +- LICENSE.md: + + BSD 3-Clause License + + Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +### [qs](https://www.npmjs.com/package/qs) (version 6.13.0) + +License tags: BSD-3-Clause + +License files: + - LICENSE.md: BSD 3-Clause License @@ -38054,9 +38130,43 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + + +### [send](https://www.npmjs.com/package/send) (version 0.19.0) + +License tags: MIT + +License files: + +- LICENSE: + + (The MIT License) + + Copyright (c) 2012 TJ Holowaychuk + Copyright (c) 2014-2022 Douglas Christopher Wilson + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + -### [serve-static](https://www.npmjs.com/package/serve-static) (version 1.15.0) +### [serve-static](https://www.npmjs.com/package/serve-static) (version 1.16.0) License tags: MIT @@ -38218,9 +38328,9 @@ License files: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [side-channel](https://www.npmjs.com/package/side-channel) (version 1.0.4) +### [side-channel](https://www.npmjs.com/package/side-channel) (version 1.0.6) License tags: MIT From cb2cea118dcc4185309cbebf7f51409c5da28491 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 11 Sep 2024 16:44:43 +0000 Subject: [PATCH 25/57] v1.44.4-beta.2 --- package-lock.json | 2 +- packages/compass/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c63c4e307b3..77a379ede74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44188,7 +44188,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.1", + "version": "1.44.4-beta.2", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index cc32769db12..55a30370fe5 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.1", + "version": "1.44.4-beta.2", "apiVersion": "3.0.0", "main": "build/main.js", "author": { From 6090a9177e74a3cebda27ca47aaa5ea8b9d9417b Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Thu, 12 Sep 2024 12:33:32 +0200 Subject: [PATCH 26/57] Revert "chore(ci): build and test packaged app on the newer macos version COMPASS-8090" (#6230) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "chore(ci): build and test packaged app on the newer macos version COM…" This reverts commit 0c56c4d2deb67ddc935fedcbd47603d86883856d. --- .evergreen/buildvariants-and-tasks.in.yml | 27 +++++------------ .evergreen/buildvariants-and-tasks.yml | 36 +++++------------------ 2 files changed, 14 insertions(+), 49 deletions(-) diff --git a/.evergreen/buildvariants-and-tasks.in.yml b/.evergreen/buildvariants-and-tasks.in.yml index c260c5e1512..33f66627cf3 100644 --- a/.evergreen/buildvariants-and-tasks.in.yml +++ b/.evergreen/buildvariants-and-tasks.in.yml @@ -49,61 +49,48 @@ const PACKAGE_BUILD_VARIANTS = [ { name: 'package-macos-x64', display_name: 'Package MacOS Intel', - run_on: 'macos-14', + run_on: 'macos-1100', silk_asset_group: 'compass-macos', }, { name: 'package-macos-arm', display_name: 'Package MacOS Arm64', - run_on: 'macos-14-arm64', + run_on: 'macos-1100-arm64', silk_asset_group: 'compass-macos-arm', } ]; const TEST_PACKAGED_APP_BUILD_VARIANTS = [ { - name: 'test-packaged-app-ubuntu', + name: 'test-server-ubuntu', display_name: 'Ubuntu 20.04', run_on: 'ubuntu2004-large', depends_on: 'package-ubuntu', }, { - name: 'test-packaged-app-windows', + name: 'test-server-windows', display_name: 'Windows 10', run_on: 'windows-vsCurrent-large', depends_on: 'package-windows', }, { - name: 'test-packaged-app-rhel', + name: 'test-server-rhel', display_name: 'RHEL 8.0', run_on: 'rhel80-large', depends_on: 'package-rhel', }, { - name: 'test-packaged-app-macos-11-arm', + name: 'test-server-macos-11-arm', display_name: 'MacOS arm64 11', run_on: 'macos-1100-arm64-gui', depends_on: 'package-macos-arm' }, { - name: 'test-packaged-app-macos-11-x64', + name: 'test-server-macos-11-x64', display_name: 'MacOS x64 11', run_on: 'macos-1100-gui', patchable: false, depends_on: 'package-macos-x64' - }, - { - name: 'test-packaged-app-macos-14-arm', - display_name: 'MacOS arm64 14', - run_on: 'macos-14-arm64-gui', - depends_on: 'package-macos-arm' - }, - { - name: 'test-packaged-app-macos-14-x64', - display_name: 'MacOS x64 14', - run_on: 'macos-14-gui', - patchable: false, - depends_on: 'package-macos-x64' } ]; diff --git a/.evergreen/buildvariants-and-tasks.yml b/.evergreen/buildvariants-and-tasks.yml index 3d92a762ab5..9db333b07a0 100644 --- a/.evergreen/buildvariants-and-tasks.yml +++ b/.evergreen/buildvariants-and-tasks.yml @@ -62,7 +62,7 @@ buildvariants: expansions: silk_asset_group: compass-macos display_name: Package MacOS Intel - run_on: macos-14 + run_on: macos-1100 tasks: - name: package-compass - name: package-compass-isolated @@ -71,7 +71,7 @@ buildvariants: expansions: silk_asset_group: compass-macos-arm display_name: Package MacOS Arm64 - run_on: macos-14-arm64 + run_on: macos-1100-arm64 tasks: - name: package-compass - name: package-compass-isolated @@ -145,7 +145,7 @@ buildvariants: - name: test-server-latest-alpha-1 - name: test-server-latest-alpha-2 - name: test-server-latest-alpha-3 - - name: test-packaged-app-ubuntu + - name: test-server-ubuntu display_name: Test Packaged App Ubuntu 20.04 run_on: ubuntu2004-large patchable: true @@ -156,7 +156,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-packaged-app-windows + - name: test-server-windows display_name: Test Packaged App Windows 10 run_on: windows-vsCurrent-large patchable: true @@ -167,7 +167,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-packaged-app-rhel + - name: test-server-rhel display_name: Test Packaged App RHEL 8.0 run_on: rhel80-large patchable: true @@ -178,7 +178,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-packaged-app-macos-11-arm + - name: test-server-macos-11-arm display_name: Test Packaged App MacOS arm64 11 run_on: macos-1100-arm64-gui patchable: true @@ -189,7 +189,7 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-packaged-app-macos-11-x64 + - name: test-server-macos-11-x64 display_name: Test Packaged App MacOS x64 11 run_on: macos-1100-gui patchable: false @@ -200,28 +200,6 @@ buildvariants: - name: test-packaged-app-1 - name: test-packaged-app-2 - name: test-packaged-app-3 - - name: test-packaged-app-macos-14-arm - display_name: Test Packaged App MacOS arm64 14 - run_on: macos-14-arm64-gui - patchable: true - depends_on: - - name: package-compass - variant: package-macos-arm - tasks: - - name: test-packaged-app-1 - - name: test-packaged-app-2 - - name: test-packaged-app-3 - - name: test-packaged-app-macos-14-x64 - display_name: Test Packaged App MacOS x64 14 - run_on: macos-14-gui - patchable: false - depends_on: - - name: package-compass - variant: package-macos-x64 - tasks: - - name: test-packaged-app-1 - - name: test-packaged-app-2 - - name: test-packaged-app-3 - name: publish display_name: Publish Artifacts run_on: ubuntu2004-large From c5479e367ff62de563787f71eedaff0f9409673c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 10:36:43 +0000 Subject: [PATCH 27/57] v1.44.4-beta.3 --- package-lock.json | 2 +- packages/compass/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 77a379ede74..a7ad65aebdb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44188,7 +44188,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.2", + "version": "1.44.4-beta.3", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index 55a30370fe5..8338780ef34 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.2", + "version": "1.44.4-beta.3", "apiVersion": "3.0.0", "main": "build/main.js", "author": { From fa161e8970e91ed34a56f731c876ee1553836b41 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Sep 2024 10:40:03 +0000 Subject: [PATCH 28/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6231) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index e6f4cf0f8bb..9707ac75602 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Wed Sep 11 2024. +This document was automatically generated on Thu Sep 12 2024. ## List of dependencies From 5d0bb08d5f7db066b7f0f4a27a17cb6053395fd5 Mon Sep 17 00:00:00 2001 From: Maurizio Casimirri Date: Thu, 12 Sep 2024 14:18:19 +0200 Subject: [PATCH 29/57] chore: improve telemetry types for connection events (#6217) * chore: improve telemetry types for connection events * chore: require passing connection data to connection scoped events * use correct hook * fetch connection info on demand --- .../dnd-wrapper.tsx | 17 ++- .../saving-pipeline-modal.tsx | 2 +- .../src/modules/is-new-pipeline-confirm.ts | 2 +- packages/compass-connections/src/index.tsx | 3 +- .../src/stores/connections-store-redux.ts | 3 +- .../src/components/insert-document-dialog.tsx | 6 +- .../src/components/export-modal.tsx | 2 +- .../src/components/import-modal.tsx | 2 +- .../components/aggregations-queries-list.tsx | 2 +- .../src/stores/delete-item.ts | 3 +- .../src/stores/open-item.ts | 7 +- .../shell-info-modal/shell-info-modal.tsx | 2 +- .../src/components/csfle-connection-modal.tsx | 2 +- .../compass-telemetry/src/generic-track.ts | 17 +-- packages/compass-telemetry/src/index.ts | 6 +- packages/compass-telemetry/src/ipc-track.ts | 2 +- packages/compass-telemetry/src/provider.tsx | 4 +- .../compass-telemetry/src/telemetry-events.ts | 118 +++++++++++++++--- packages/compass-telemetry/src/types.ts | 15 ++- packages/compass/src/app/utils/telemetry.ts | 52 +++++--- .../rename-collection-modal.tsx | 2 +- .../src/modules/create-namespace.ts | 10 +- .../src/stores/drop-namespace.tsx | 10 +- 23 files changed, 215 insertions(+), 74 deletions(-) diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx index e57660d3d15..1b788bff88b 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx @@ -17,6 +17,7 @@ import { UseCaseCardLayout } from '../../aggregation-side-panel/stage-wizard-use import type { PipelineBuilderUIWorkspaceProps } from '.'; import type { DraggedUseCase } from '../../aggregation-side-panel/stage-wizard-use-cases/use-case-card'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; +import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; // Types type PipelineBuilderDndWrapperProps = { @@ -71,15 +72,21 @@ const PipelineBuilderDndWrapper = ({ }) ); + const connectionInfoAccess = useConnectionInfoAccess(); + const handleUseCaseDropped = useCallback( (event: DragEndEvent) => { const { over } = event; const overId = indexFromDroppableId(String(over?.id)); if (draggedUseCase && overId !== null) { - track('Aggregation Use Case Added', { - drag_and_drop: true, - stage_name: draggedUseCase.stageOperator, - }); + track( + 'Aggregation Use Case Added', + { + drag_and_drop: true, + stage_name: draggedUseCase.stageOperator, + }, + connectionInfoAccess.getCurrentConnectionInfo() + ); onUseCaseDropped( draggedUseCase.id, draggedUseCase.stageOperator, @@ -88,7 +95,7 @@ const PipelineBuilderDndWrapper = ({ } setDraggedUseCase(null); }, - [draggedUseCase, onUseCaseDropped, track] + [draggedUseCase, onUseCaseDropped, track, connectionInfoAccess] ); const handleSortEnd = useCallback( diff --git a/packages/compass-aggregations/src/components/saving-pipeline-modal/saving-pipeline-modal.tsx b/packages/compass-aggregations/src/components/saving-pipeline-modal/saving-pipeline-modal.tsx index 561b5a1beb2..0caeb365f65 100644 --- a/packages/compass-aggregations/src/components/saving-pipeline-modal/saving-pipeline-modal.tsx +++ b/packages/compass-aggregations/src/components/saving-pipeline-modal/saving-pipeline-modal.tsx @@ -36,7 +36,7 @@ class SavingPipelineModal extends PureComponent { componentDidUpdate(prevProps: SavingPipelineModalProps) { if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen) { - this.props.track('Screen', { name: 'save_pipeline_modal' }); + this.props.track('Screen', { name: 'save_pipeline_modal' }, undefined); } } diff --git a/packages/compass-aggregations/src/modules/is-new-pipeline-confirm.ts b/packages/compass-aggregations/src/modules/is-new-pipeline-confirm.ts index 32be1de2ac1..0c22b97a440 100644 --- a/packages/compass-aggregations/src/modules/is-new-pipeline-confirm.ts +++ b/packages/compass-aggregations/src/modules/is-new-pipeline-confirm.ts @@ -25,7 +25,7 @@ export const confirmNewPipeline = async (dispatch, getState, { pipelineBuilder, track }) => { const isModified = getState().isModified; if (isModified) { - track('Screen', { name: 'confirm_new_pipeline_modal' }); + track('Screen', { name: 'confirm_new_pipeline_modal' }, undefined); const confirmed = await showConfirmation({ title: 'Are you sure you want to create a new pipeline?', description: diff --git a/packages/compass-connections/src/index.tsx b/packages/compass-connections/src/index.tsx index 1ced9f7a46c..f24a5758529 100644 --- a/packages/compass-connections/src/index.tsx +++ b/packages/compass-connections/src/index.tsx @@ -21,12 +21,13 @@ export { default as SingleConnectionForm } from './components/legacy-connections export { LegacyConnectionsModal } from './components/legacy-connections-modal'; export { useConnectionFormPreferences } from './hooks/use-connection-form-preferences'; import type { connect as devtoolsConnect } from 'mongodb-data-service'; +import type { ExtraConnectionData as ExtraConnectionDataForTelemetry } from '@mongodb-js/compass-telemetry'; const ConnectionsComponent: React.FunctionComponent<{ appName: string; onExtraConnectionDataRequest: ( connectionInfo: ConnectionInfo - ) => Promise<[Record, string | null]>; + ) => Promise<[ExtraConnectionDataForTelemetry, string | null]>; onAutoconnectInfoRequest?: ( connectionStorage: ConnectionStorage ) => Promise; diff --git a/packages/compass-connections/src/stores/connections-store-redux.ts b/packages/compass-connections/src/stores/connections-store-redux.ts index 308e59768b6..886675028fc 100644 --- a/packages/compass-connections/src/stores/connections-store-redux.ts +++ b/packages/compass-connections/src/stores/connections-store-redux.ts @@ -29,6 +29,7 @@ import mongodbBuildInfo, { getGenuineMongoDB } from 'mongodb-build-info'; import EventEmitter from 'events'; import { showNonGenuineMongoDBWarningModal as _showNonGenuineMongoDBWarningModal } from '../components/non-genuine-connection-modal'; import ConnectionString from 'mongodb-connection-string-url'; +import type { ExtraConnectionData as ExtraConnectionDataForTelemetry } from '@mongodb-js/compass-telemetry'; export type ConnectionsEventMap = { connected: ( @@ -182,7 +183,7 @@ type ThunkExtraArg = { logger: Logger; getExtraConnectionData: ( connectionInfo: ConnectionInfo - ) => Promise<[Record, string | null]>; + ) => Promise<[ExtraConnectionDataForTelemetry, string | null]>; connectFn?: typeof devtoolsConnect; }; diff --git a/packages/compass-crud/src/components/insert-document-dialog.tsx b/packages/compass-crud/src/components/insert-document-dialog.tsx index 2c39f1c652f..31da24d4117 100644 --- a/packages/compass-crud/src/components/insert-document-dialog.tsx +++ b/packages/compass-crud/src/components/insert-document-dialog.tsx @@ -98,7 +98,11 @@ class InsertDocumentDialog extends React.PureComponent< ) { if (prevProps.isOpen !== this.props.isOpen && this.props.isOpen) { this.props.track && - this.props.track('Screen', { name: 'insert_document_modal' }); + this.props.track( + 'Screen', + { name: 'insert_document_modal' }, + undefined + ); } if (this.props.isOpen && !this.hasManyDocuments()) { diff --git a/packages/compass-import-export/src/components/export-modal.tsx b/packages/compass-import-export/src/components/export-modal.tsx index e6a8f63c9f6..acf471c1254 100644 --- a/packages/compass-import-export/src/components/export-modal.tsx +++ b/packages/compass-import-export/src/components/export-modal.tsx @@ -151,7 +151,7 @@ function ExportModal({ useTrackOnChange( (track: TrackFunction) => { if (isOpen) { - track('Screen', { name: 'export_modal' }); + track('Screen', { name: 'export_modal' }, undefined); } }, [isOpen], diff --git a/packages/compass-import-export/src/components/import-modal.tsx b/packages/compass-import-export/src/components/import-modal.tsx index b16ebf65867..d5240c9459d 100644 --- a/packages/compass-import-export/src/components/import-modal.tsx +++ b/packages/compass-import-export/src/components/import-modal.tsx @@ -160,7 +160,7 @@ function ImportModal({ useTrackOnChange( (track: TrackFunction) => { if (isOpen) { - track('Screen', { name: 'import_modal' }); + track('Screen', { name: 'import_modal' }, undefined); } }, [isOpen], diff --git a/packages/compass-saved-aggregations-queries/src/components/aggregations-queries-list.tsx b/packages/compass-saved-aggregations-queries/src/components/aggregations-queries-list.tsx index 3a3114b6b32..e9ad94327ec 100644 --- a/packages/compass-saved-aggregations-queries/src/components/aggregations-queries-list.tsx +++ b/packages/compass-saved-aggregations-queries/src/components/aggregations-queries-list.tsx @@ -138,7 +138,7 @@ export const AggregationsQueriesList = ({ .map((x) => x.item); useTrackOnChange((track: TrackFunction) => { - track('Screen', { name: 'my_queries' }); + track('Screen', { name: 'my_queries' }, undefined); }, []); useTrackOnChange( diff --git a/packages/compass-saved-aggregations-queries/src/stores/delete-item.ts b/packages/compass-saved-aggregations-queries/src/stores/delete-item.ts index 8b5f6219cac..fcd507693c5 100644 --- a/packages/compass-saved-aggregations-queries/src/stores/delete-item.ts +++ b/packages/compass-saved-aggregations-queries/src/stores/delete-item.ts @@ -51,7 +51,8 @@ export const confirmDeleteItem = ( { id: item.id, screen: 'my_queries', - } + }, + undefined // this event is connection scoped when triggered from the aggregation or query screen ); if (item.type === 'query') { diff --git a/packages/compass-saved-aggregations-queries/src/stores/open-item.ts b/packages/compass-saved-aggregations-queries/src/stores/open-item.ts index 6820b7b09e4..391b5b70c04 100644 --- a/packages/compass-saved-aggregations-queries/src/stores/open-item.ts +++ b/packages/compass-saved-aggregations-queries/src/stores/open-item.ts @@ -426,7 +426,9 @@ const openItem = database: string, collection: string ): SavedQueryAggregationThunkAction => - (_dispatch, _getState, { track, workspaces }) => { + (_dispatch, _getState, { track, workspaces, connectionsManager }) => { + const connectionInfo = + connectionsManager.getConnectionById(connection)?.info; track( item.type === 'aggregation' ? 'Aggregation Opened' @@ -434,7 +436,8 @@ const openItem = { id: item.id, screen: 'my_queries', - } + }, + connectionInfo ); workspaces.openCollectionWorkspace( diff --git a/packages/compass-shell/src/components/shell-info-modal/shell-info-modal.tsx b/packages/compass-shell/src/components/shell-info-modal/shell-info-modal.tsx index e0d00802cc6..92b3905fc33 100644 --- a/packages/compass-shell/src/components/shell-info-modal/shell-info-modal.tsx +++ b/packages/compass-shell/src/components/shell-info-modal/shell-info-modal.tsx @@ -39,7 +39,7 @@ function ShellInfoModal({ useTrackOnChange( (track: TrackFunction) => { if (show) { - track('Screen', { name: 'shell_info_modal' }); + track('Screen', { name: 'shell_info_modal' }, undefined); } }, [show], diff --git a/packages/compass-sidebar/src/components/csfle-connection-modal.tsx b/packages/compass-sidebar/src/components/csfle-connection-modal.tsx index 628e9aabb1d..63c0abb0485 100644 --- a/packages/compass-sidebar/src/components/csfle-connection-modal.tsx +++ b/packages/compass-sidebar/src/components/csfle-connection-modal.tsx @@ -53,7 +53,7 @@ export default function CSFLEConnectionModal({ useTrackOnChange( (track: TrackFunction) => { if (open) { - track('Screen', { name: 'csfle_connection_modal' }); + track('Screen', { name: 'csfle_connection_modal' }, undefined); } }, [open], diff --git a/packages/compass-telemetry/src/generic-track.ts b/packages/compass-telemetry/src/generic-track.ts index b3b3577d982..6b21d39bc33 100644 --- a/packages/compass-telemetry/src/generic-track.ts +++ b/packages/compass-telemetry/src/generic-track.ts @@ -1,5 +1,5 @@ import { type Logger, mongoLogId } from '@mongodb-js/compass-logging/provider'; -import type { TrackFunction, TrackFunctionPayload } from './types'; +import type { TelemetryEvent, TrackFunction } from './types'; export interface TelemetryPreferences { getPreferences(): { trackUsageStatistics: boolean }; @@ -8,7 +8,7 @@ export interface TelemetryPreferences { export type TelemetryConnectionInfoHook = () => { id: string }; export interface TelemetryServiceOptions { - sendTrack: TrackFunction; + sendTrack: (event: string, props: Record) => void; logger?: Logger; preferences?: TelemetryPreferences; useConnectionInfo?: TelemetryConnectionInfoHook; @@ -24,9 +24,9 @@ export const createTrack = ({ preferences, }: TelemetryServiceOptions & { logger: Logger }) => { const trackAsync: AsyncFn = async ( - event, - parametersOrFn, - connectionInfo + event: TelemetryEvent['name'], + parametersOrFn: Parameters[1], + connectionInfo?: { id?: string } ) => { // Note that this preferences check is mainly a performance optimization, // since the main process telemetry code also checks this preference value, @@ -37,9 +37,10 @@ export const createTrack = ({ return; } - let parameters: TrackFunctionPayload> = - parametersOrFn; + let parameters: Record = + typeof parametersOrFn === 'object' ? parametersOrFn : {}; + // if parametersOrFn is a function use the return value of the function. if (typeof parametersOrFn === 'function') { try { parameters = await parametersOrFn(); @@ -65,7 +66,7 @@ export const createTrack = ({ } } - if (typeof parameters === 'object' && connectionInfo) { + if (connectionInfo) { parameters.connection_id = connectionInfo.id; } diff --git a/packages/compass-telemetry/src/index.ts b/packages/compass-telemetry/src/index.ts index dc2bd7f9bcc..a2e155c8073 100644 --- a/packages/compass-telemetry/src/index.ts +++ b/packages/compass-telemetry/src/index.ts @@ -1,3 +1,7 @@ export { createIpcTrack, createIpcSendTrack } from './ipc-track'; export type { TelemetryServiceOptions } from './generic-track'; -export type { TrackFunction, IdentifyTraits } from './types'; +export type { + TrackFunction, + IdentifyTraits, + ExtraConnectionData, +} from './types'; diff --git a/packages/compass-telemetry/src/ipc-track.ts b/packages/compass-telemetry/src/ipc-track.ts index 1165c7baa5d..d52f2cb5630 100644 --- a/packages/compass-telemetry/src/ipc-track.ts +++ b/packages/compass-telemetry/src/ipc-track.ts @@ -33,7 +33,7 @@ export function createIpcSendTrack() { // eslint-disable-next-line @typescript-eslint/no-var-requires require('hadron-ipc').ipcRenderer; - const sendTrack: TrackFunction = (event, properties) => + const sendTrack = (event: string, properties: Record) => emit(ipc, 'compass:track', { event, properties }); return sendTrack; diff --git a/packages/compass-telemetry/src/provider.tsx b/packages/compass-telemetry/src/provider.tsx index d1b068567bc..f701639ad8a 100644 --- a/packages/compass-telemetry/src/provider.tsx +++ b/packages/compass-telemetry/src/provider.tsx @@ -38,9 +38,7 @@ export const telemetryLocator = createServiceLocator( 'telemetryLocator' ); -export function useTelemetry(): ( - ...args: Parameters -) => ReturnType { +export function useTelemetry(): TrackFunction { const track = React.useContext(TelemetryContext); if (!track) { throw new Error('Telemetry service is missing from React context'); diff --git a/packages/compass-telemetry/src/telemetry-events.ts b/packages/compass-telemetry/src/telemetry-events.ts index 8cd42a0733a..b416f9b9c28 100644 --- a/packages/compass-telemetry/src/telemetry-events.ts +++ b/packages/compass-telemetry/src/telemetry-events.ts @@ -75,16 +75,18 @@ export type IdentifyTraits = { os_linux_release?: string; }; +export type ConnectionScopedProperties = { + /** + * The id of the connection associated to this event. + */ + connection_id: string; +}; + /** * Events that are connection scoped are associated with one connection. */ type ConnectionScoped = E & { - payload: E['payload'] & { - /** - * The id of the connection associated to this event. - */ - connection_id: string; - }; + payload: E['payload'] & ConnectionScopedProperties; }; /** @@ -478,7 +480,7 @@ type AggregationExportOpenedEvent = ConnectionScoped<{ * The number of stages present in the aggregation at the moment when * the even has been fired. */ - num_stages: undefined | number; + num_stages?: undefined | number; }; }>; @@ -494,7 +496,7 @@ type AggregationExportedEvent = ConnectionScoped<{ * The number of stages present in the aggregation at the moment when * the even has been fired. */ - num_stages: undefined | number; + num_stages?: undefined | number; /** * The language to which the query has been exported. @@ -636,6 +638,83 @@ type ConnectionAttemptEvent = ConnectionScoped<{ }; }>; +export type ExtraConnectionData = { + /** + * Desktop only. The authentication type used in the connection. + */ + auth_type?: string; + + /** + * Desktop only. The type of tunneling used in the connection. + */ + tunnel?: string; + + /** + * Desktop only. Specifies if SRV is used in the connection. + */ + is_srv?: boolean; + + /** + * Desktop only. Specifies if the connection is targeting localhost. + */ + is_localhost?: boolean; + + /** + * Desktop only. Specifies if the connection URL is an Atlas URL. + */ + is_atlas_url?: boolean; + + /** + * Desktop only. Specifies if the connection URL is a DigitalOcean URL. + */ + is_do_url?: boolean; + + /** + * Desktop only. Specifies if the connection is in a public cloud. + */ + is_public_cloud?: boolean; + + /** + * The name of the public cloud provider, if applicable. + */ + public_cloud_name?: string; + + /** + * Specifies if Client-Side Field Level Encryption (CSFLE) is used. + */ + is_csfle?: boolean; + + /** + * Specifies if CSFLE schema is present. + */ + has_csfle_schema?: boolean; + + /** + * Specifies if KMS AWS is used. + */ + has_kms_aws?: boolean; + + /** + * Specifies if KMS GCP is used. + */ + has_kms_gcp?: boolean; + + /** + * Specifies if KMS KMIP is used. + */ + has_kms_kmip?: boolean; + + /** + * Specifies if KMS Local is used. + */ + has_kms_local?: boolean; + + /** + * Specifies if KMS Azure is used. + */ + has_kms_azure?: boolean; +}; + /** * This event is fired when user successfully connects to a new server/cluster. * @@ -645,17 +724,17 @@ type NewConnectionEvent = ConnectionScoped<{ name: 'New Connection'; payload: { /** - * Specifies if the connection is targeting an atlas cluster. + * Specifies if the connection is targeting an Atlas cluster. */ is_atlas: boolean; /** - * The first resolved srv hostname in case the connection is targeting an atlas cluster. + * The first resolved SRV hostname in case the connection is targeting an Atlas cluster. */ atlas_hostname: string | null; /** - * Specifies that the connection is targeting an atlas local deployment. + * Specifies that the connection is targeting an Atlas local deployment. */ is_local_atlas: boolean; @@ -665,7 +744,7 @@ type NewConnectionEvent = ConnectionScoped<{ is_dataLake: boolean; /** - * Specifies that the connection is targeting an atlas local deployment. + * Specifies that the connection is targeting an Atlas Enterprise deployment. */ is_enterprise: boolean; @@ -687,19 +766,20 @@ type NewConnectionEvent = ConnectionScoped<{ /** * The host architecture of the connected server. */ - server_arch: string | undefined; + server_arch?: string; /** - * The os family of the connected server. + * The OS family of the connected server. */ - server_os_family: string | undefined; + server_os_family?: string; /** * The type of connected topology. */ topology_type: string; - }; + } & ExtraConnectionData; }>; + /** * This event is fired when a connection attempt fails. * @@ -717,7 +797,7 @@ type ConnectionFailedEvent = ConnectionScoped<{ * The error name. */ error_name: string; - }; + } & ExtraConnectionData; }>; /** @@ -1291,7 +1371,7 @@ type AiQueryFeedbackEvent = ConnectionScoped<{ payload: { feedback: 'positive' | 'negative'; text: string; - request_id: string; + request_id: string | null; }; }>; @@ -1369,7 +1449,7 @@ type PipelineAiFeedbackEvent = ConnectionScoped<{ * The id of the request related to this feedback. Useful to correlate * feedback to potential error lines in the logs. */ - request_id: string; + request_id: string | null; /** * The feedback comment left by the user. diff --git a/packages/compass-telemetry/src/types.ts b/packages/compass-telemetry/src/types.ts index 6a47bcf1dad..c9646b98029 100644 --- a/packages/compass-telemetry/src/types.ts +++ b/packages/compass-telemetry/src/types.ts @@ -1,5 +1,12 @@ -import type { TelemetryEvent } from './telemetry-events'; -export type { TelemetryEvent, IdentifyTraits } from './telemetry-events'; +import type { + ConnectionScopedProperties, + TelemetryEvent, +} from './telemetry-events'; +export type { + TelemetryEvent, + IdentifyTraits, + ExtraConnectionData, +} from './telemetry-events'; type TelemetryConnectionInfo = { id: string; @@ -17,6 +24,8 @@ export interface TrackFunction { >( eventName: TName, payload: TrackFunctionPayload, - connectionInfo?: TelemetryConnectionInfo | undefined + ...connectionInfo: TPayload extends ConnectionScopedProperties + ? [TelemetryConnectionInfo | undefined] + : [] ): void; } diff --git a/packages/compass/src/app/utils/telemetry.ts b/packages/compass/src/app/utils/telemetry.ts index fbbb01766f9..731622f6142 100644 --- a/packages/compass/src/app/utils/telemetry.ts +++ b/packages/compass/src/app/utils/telemetry.ts @@ -81,20 +81,41 @@ async function getHostInformation( }; } +type ExtraConnectionData = { + auth_type: string; + tunnel: string; + is_srv: boolean; + is_localhost: boolean; + is_atlas_url: boolean; + is_do_url: boolean; + is_public_cloud?: boolean; + public_cloud_name?: string; +} & CsfleInfo; + +type CsfleInfo = { + has_kms_aws: boolean; + has_kms_gcp: boolean; + has_kms_kmip: boolean; + has_kms_local: boolean; + has_kms_azure: boolean; + is_csfle: boolean; + has_csfle_schema: boolean; +}; + function getCsfleInformation( fleOptions: ConnectionInfo['connectionOptions']['fleOptions'] -): Record { +): CsfleInfo { const kmsProviders = configuredKMSProviders(fleOptions?.autoEncryption ?? {}); - const csfleInfo: Record = { + const csfleInfo: CsfleInfo = { is_csfle: kmsProviders.length > 0, has_csfle_schema: !!fleOptions?.autoEncryption?.encryptedFieldsMap, + has_kms_aws: !!fleOptions?.autoEncryption?.kmsProviders?.aws, + has_kms_gcp: !!fleOptions?.autoEncryption?.kmsProviders?.gcp, + has_kms_kmip: !!fleOptions?.autoEncryption?.kmsProviders?.kmip, + has_kms_local: !!fleOptions?.autoEncryption?.kmsProviders?.local, + has_kms_azure: !!fleOptions?.autoEncryption?.kmsProviders?.azure, }; - for (const kmsProvider of ['aws', 'gcp', 'kmip', 'local', 'azure'] as const) { - csfleInfo[`has_kms_${kmsProvider}`] = - !!fleOptions?.autoEncryption?.kmsProviders?.[kmsProvider]; - } - return csfleInfo; } @@ -134,7 +155,7 @@ async function getConnectionData( connectionOptions: { connectionString, sshTunnel, fleOptions }, }: Pick, resolvedHostname: string | null -): Promise> { +): Promise { const connectionStringData = new ConnectionString(connectionString, { looseValidation: true, }); @@ -149,13 +170,19 @@ async function getConnectionData( : 'NONE'; const proxyHost = searchParams.get('proxyHost'); - return { + const connectionData = { ...(await getHostInformation(resolvedHostname)), auth_type: authType.toUpperCase(), - tunnel: proxyHost ? 'socks5' : sshTunnel ? 'ssh' : 'none', + tunnel: proxyHost + ? ('socks5' as const) + : sshTunnel + ? ('ssh' as const) + : ('none' as const), is_srv: connectionStringData.isSRV, ...getCsfleInformation(fleOptions), }; + + return connectionData; } export async function getExtraConnectionData(connectionInfo: ConnectionInfo) { @@ -164,8 +191,5 @@ export async function getExtraConnectionData(connectionInfo: ConnectionInfo) { connectionInfo, resolvedHostname ); - return [connectionData, resolvedHostname] as [ - Record, - string - ]; + return [connectionData, resolvedHostname] as [ExtraConnectionData, string]; } diff --git a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx index 8a66ea0336d..7733cea2c74 100644 --- a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx +++ b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx @@ -109,7 +109,7 @@ function RenameCollectionModal({ useTrackOnChange( (track: TrackFunction) => { if (isVisible) { - track('Screen', { name: 'rename_collection_modal' }); + track('Screen', { name: 'rename_collection_modal' }, undefined); } }, [isVisible], diff --git a/packages/databases-collections/src/modules/create-namespace.ts b/packages/databases-collections/src/modules/create-namespace.ts index d36b2c7a382..1cff9808308 100644 --- a/packages/databases-collections/src/modules/create-namespace.ts +++ b/packages/databases-collections/src/modules/create-namespace.ts @@ -100,9 +100,13 @@ export const open = ( dbName: string | null = null ): CreateNamespaceThunkAction => { return (dispatch, _getState, { track }) => { - track('Screen', { - name: dbName ? 'create_collection_modal' : 'create_database_modal', - }); + track( + 'Screen', + { + name: dbName ? 'create_collection_modal' : 'create_database_modal', + }, + undefined + ); dispatch({ type: CreateNamespaceActionTypes.Open, diff --git a/packages/databases-collections/src/stores/drop-namespace.tsx b/packages/databases-collections/src/stores/drop-namespace.tsx index 891f8ae47f8..2b01400c578 100644 --- a/packages/databases-collections/src/stores/drop-namespace.tsx +++ b/packages/databases-collections/src/stores/drop-namespace.tsx @@ -50,9 +50,13 @@ export function activatePlugin( collection, } = namespace; const namespaceLabel = isCollection ? 'Collection' : 'Database'; - track('Screen', { - name: isCollection ? 'drop_collection_modal' : 'drop_database_modal', - }); + track( + 'Screen', + { + name: isCollection ? 'drop_collection_modal' : 'drop_database_modal', + }, + undefined + ); const confirmed = await showConfirmation({ variant: 'danger', title: `Drop ${namespaceLabel}`, From ce9cb7219a52646aa840cc664208802afbbf95e4 Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Thu, 12 Sep 2024 16:08:28 +0200 Subject: [PATCH 30/57] fix(deps): update path-to-regex COMPASS-8282 (#6233) update path-to-regex --- package-lock.json | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6dbad65a2c9..fdd511a5f34 100644 --- a/package-lock.json +++ b/package-lock.json @@ -510,9 +510,9 @@ } }, "configs/testing-library-compass/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" }, "configs/testing-library-compass/node_modules/sinon": { "version": "17.0.1", @@ -35455,9 +35455,9 @@ } }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" @@ -46079,9 +46079,9 @@ } }, "packages/compass-intercom/node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "packages/compass-intercom/node_modules/sinon": { @@ -47389,9 +47389,9 @@ } }, "packages/compass-telemetry/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "packages/compass-telemetry/node_modules/sinon": { @@ -58027,9 +58027,9 @@ } }, "path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "sinon": { @@ -59385,9 +59385,9 @@ } }, "path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true }, "sinon": { @@ -61306,9 +61306,9 @@ } }, "path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" }, "sinon": { "version": "17.0.1", @@ -84122,9 +84122,9 @@ } }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" From 91cd4da0c5bd20161ca5cdaf842504ac1d3451e0 Mon Sep 17 00:00:00 2001 From: Paula Stachova Date: Fri, 13 Sep 2024 12:18:04 +0200 Subject: [PATCH 31/57] fix: trimming whitespaces when creating/editing a namespace COMPASS-8123 (#6205) --- .../create-namespace-modal.spec.tsx | 314 ++++++++++++++++++ .../rename-collection-modal.spec.tsx | 234 +++++++++---- .../rename-collection-modal.tsx | 31 +- .../src/modules/create-namespace.ts | 5 +- .../rename-collection/rename-collection.ts | 46 ++- 5 files changed, 530 insertions(+), 100 deletions(-) create mode 100644 packages/databases-collections/src/components/create-namespace-modal.spec.tsx diff --git a/packages/databases-collections/src/components/create-namespace-modal.spec.tsx b/packages/databases-collections/src/components/create-namespace-modal.spec.tsx new file mode 100644 index 00000000000..b8c94a44972 --- /dev/null +++ b/packages/databases-collections/src/components/create-namespace-modal.spec.tsx @@ -0,0 +1,314 @@ +import React from 'react'; +import Sinon from 'sinon'; +import { expect } from 'chai'; +import { + screen, + cleanup, + waitFor, + userEvent, +} from '@mongodb-js/testing-library-compass'; +import type AppRegistry from 'hadron-app-registry'; + +import { CreateNamespacePlugin } from '../..'; +import { + createDefaultConnectionInfo, + renderWithConnections, +} from '@mongodb-js/testing-library-compass'; + +describe('CreateNamespaceModal [Component]', function () { + const connectionId = '12345'; + const sandbox = Sinon.createSandbox(); + const mockConnection = { + ...createDefaultConnectionInfo(), + id: connectionId, + }; + let createCollectionSpy: Sinon.SinonSpy; + let appRegistry: AppRegistry; + + beforeEach(async function () { + const { globalAppRegistry, getDataServiceForConnection, connectionsStore } = + renderWithConnections(, { + connections: [mockConnection], + connectFn() { + return { + createCollection() { + return Promise.resolve({} as any); + }, + createDataKey() { + return Promise.resolve({}); + }, + configuredKMSProviders() { + return []; + }, + }; + }, + }); + + appRegistry = globalAppRegistry; + + await connectionsStore.actions.connect(mockConnection); + + createCollectionSpy = sandbox.spy( + getDataServiceForConnection(connectionId), + 'createCollection' + ); + }); + + afterEach(function () { + sandbox.resetHistory(); + cleanup(); + }); + + context('Create collection', function () { + beforeEach(async () => { + appRegistry.emit( + 'open-create-collection', + { + database: 'foo', + }, + { connectionId: '12345' } + ); + + await waitFor(() => + screen.getByRole('heading', { name: 'Create Collection' }) + ); + }); + + it('renders the correct text on the submit button', () => { + const submitButton = screen.getByTestId('submit-button'); + expect(submitButton.textContent).to.equal('Create Collection'); + }); + + it('button is disabled when the input is empty', () => { + const submitButton = screen.getByTestId('submit-button'); + const input = screen.getByTestId('collection-name'); + expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); + + userEvent.clear(input); + userEvent.type(input, 'baz'); + expect(submitButton.getAttribute('aria-disabled')).to.equal('false'); + userEvent.clear(input); + expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); + }); + + context('when the user has submitted the form (with options)', () => { + beforeEach(() => { + const submitButton = screen.getByRole('button', { + name: 'Create Collection', + }); + const input = screen.getByRole('textbox', { name: 'Collection Name' }); + const additionalPreferences = screen.getByRole('button', { + name: /Additional preferences/, + }); + userEvent.clear(input); + userEvent.type(input, 'bar'); + userEvent.click(additionalPreferences); + const clusteredCollection = screen.getByRole('checkbox', { + name: 'Clustered Collection', + }); + userEvent.click(clusteredCollection, undefined, { + // leafygreen adds pointer-events: none on actually clickable elements + skipPointerEventsCheck: true, + }); + userEvent.click(submitButton); + }); + + it('calls the dataservice create collection method', async () => { + await waitFor(() => { + expect(createCollectionSpy).to.have.been.calledOnceWith( + 'foo.bar', + Sinon.match({ + clusteredIndex: { + unique: true, + }, + }) + ); + }); + }); + }); + + context( + 'when the user submitted the collection creation form with extra whitespaces', + () => { + beforeEach(() => { + const submitButton = screen.getByRole('button', { + name: 'Create Collection', + }); + const input = screen.getByRole('textbox', { + name: 'Collection Name', + }); + userEvent.clear(input); + userEvent.type(input, ' baz '); + userEvent.click(submitButton); + }); + + it('trims the white spaces on submit', async () => { + await waitFor(() => { + expect(createCollectionSpy).to.have.been.calledOnceWithExactly( + 'foo.baz', + {} + ); + }); + }); + } + ); + }); + + context( + 'Create collection - the database has extra whitespaces', + function () { + beforeEach(async function () { + appRegistry.emit( + 'open-create-collection', + { + database: ' foo', + }, + { connectionId: '12345' } + ); + + await waitFor(() => + screen.getByRole('heading', { name: 'Create Collection' }) + ); + }); + + afterEach(function () { + sandbox.resetHistory(); + cleanup(); + }); + + context( + 'when the user submitted the collection creation form with extra whitespaces', + () => { + beforeEach(() => { + const submitButton = screen.getByRole('button', { + name: 'Create Collection', + }); + const input = screen.getByRole('textbox', { + name: 'Collection Name', + }); + userEvent.clear(input); + userEvent.type(input, ' baz '); + userEvent.click(submitButton); + }); + + it('trims the white spaces on submit - but only for the collection', async () => { + await waitFor(() => { + expect(createCollectionSpy).to.have.been.calledOnceWithExactly( + ' foo.baz', + {} + ); + }); + }); + } + ); + } + ); + + context('Create database + collection', function () { + beforeEach(async function () { + appRegistry.emit('open-create-database', { connectionId: '12345' }); + + await waitFor(() => + screen.getByRole('heading', { name: 'Create Database' }) + ); + }); + + afterEach(function () { + sandbox.resetHistory(); + cleanup(); + }); + + it('renders the correct text on the submit button', () => { + const submitButton = screen.getByTestId('submit-button'); + expect(submitButton.textContent).to.equal('Create Database'); + }); + + it('button is disabled when the input is empty', () => { + const submitButton = screen.getByTestId('submit-button'); + const dbInput = screen.getByTestId('database-name'); + const collInput = screen.getByTestId('collection-name'); + expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); + + userEvent.clear(dbInput); + userEvent.type(dbInput, 'db1'); + userEvent.clear(collInput); + userEvent.type(collInput, 'baz'); + expect(submitButton.getAttribute('aria-disabled')).to.equal('false'); + userEvent.clear(dbInput); + expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); + }); + + context('when the user has submitted the form (with options)', () => { + beforeEach(async () => { + const submitButton = await screen.findByRole('button', { + name: 'Create Database', + }); + const dbInput = screen.getByRole('textbox', { name: 'Database Name' }); + const collInput = screen.getByRole('textbox', { + name: 'Collection Name', + }); + const additionalPreferences = screen.getByRole('button', { + name: /Additional preferences/, + }); + userEvent.clear(dbInput); + userEvent.type(dbInput, 'db1'); + userEvent.clear(collInput); + userEvent.type(collInput, 'bar'); + userEvent.click(additionalPreferences); + const clusteredCollection = await screen.findByRole('checkbox', { + name: 'Clustered Collection', + }); + userEvent.click(clusteredCollection, undefined, { + // leafygreen adds pointer-events: none on actually clickable elements + skipPointerEventsCheck: true, + }); + userEvent.click(submitButton); + }); + + it('calls the dataservice create collection method', async () => { + await waitFor(() => { + expect(createCollectionSpy).to.have.been.calledOnceWith( + 'db1.bar', + Sinon.match({ + clusteredIndex: { + unique: true, + }, + }) + ); + }); + }); + }); + + context( + 'when the user submitted the database creation form with extra whitespaces', + () => { + beforeEach(() => { + const submitButton = screen.getByRole('button', { + name: 'Create Database', + }); + const dbInput = screen.getByRole('textbox', { + name: 'Database Name', + }); + const collInput = screen.getByRole('textbox', { + name: 'Collection Name', + }); + + userEvent.clear(dbInput); + userEvent.type(dbInput, ' db1 '); + userEvent.clear(collInput); + userEvent.type(collInput, ' baz '); + userEvent.click(submitButton); + }); + + it('trims the white spaces on submit', async () => { + await waitFor(() => { + expect(createCollectionSpy).to.have.been.calledOnceWithExactly( + 'db1.baz', + {} + ); + }); + }); + } + ); + }); +}); diff --git a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx index 92eafb356ae..0fb0d6eb40d 100644 --- a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx +++ b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.spec.tsx @@ -2,52 +2,72 @@ import React from 'react'; import Sinon from 'sinon'; import { expect } from 'chai'; import { - render, screen, cleanup, - fireEvent, + userEvent, waitFor, + renderWithConnections, + createDefaultConnectionInfo, } from '@mongodb-js/testing-library-compass'; import { RenameCollectionPlugin } from '../..'; +import type AppRegistry from 'hadron-app-registry'; describe('RenameCollectionModal [Component]', function () { + const connectionId = '12345'; const sandbox = Sinon.createSandbox(); - const dataService = { - renameCollection: sandbox.stub().resolves({}), - }; - const instanceModel = { - databases: { - get: function () { - return { - collections: [{ name: 'my-collection' }], - }; - }, - }, - }; - const connectionsManager = { - getDataServiceForConnection: sandbox.stub().returns(dataService), + let appRegistry: AppRegistry; + const mockConnection = { + ...createDefaultConnectionInfo(), + id: connectionId, }; const instancesManager = { - getMongoDBInstanceForConnection: sandbox.stub().returns(instanceModel), - }; - const favoriteQueries = { - getStorage: () => ({ - loadAll: sandbox.stub().resolves([]), + getMongoDBInstanceForConnection: sandbox.stub().returns({ + databases: { + get: function () { + return { + collections: [{ name: 'my-collection' }], + }; + }, + }, }), }; - const pipelineStorage = { - loadAll: sandbox.stub().resolves([]), - }; + let renameCollectionSpy: Sinon.SinonSpy; + context('when the modal is visible', function () { beforeEach(async function () { const Plugin = RenameCollectionPlugin.withMockServices({ - connectionsManager: connectionsManager as any, instancesManager: instancesManager as any, - queryStorage: favoriteQueries as any, - pipelineStorage: pipelineStorage as any, }); - const { globalAppRegistry } = render( ); - globalAppRegistry.emit( + const { + globalAppRegistry, + getDataServiceForConnection, + connectionsStore, + } = renderWithConnections(, { + connections: [mockConnection], + connectFn() { + return { + renameCollection() { + return Promise.resolve({} as any); + }, + createDataKey() { + return Promise.resolve({}); + }, + configuredKMSProviders() { + return []; + }, + }; + }, + }); + + await connectionsStore.actions.connect(mockConnection); + + appRegistry = globalAppRegistry; + + renameCollectionSpy = sandbox.spy( + getDataServiceForConnection(connectionId), + 'renameCollection' + ); + appRegistry.emit( 'open-rename-collection', { database: 'foo', @@ -83,11 +103,14 @@ describe('RenameCollectionModal [Component]', function () { it('disables the submit button when the value is equal to the initial collection name', () => { const submitButton = screen.getByTestId('submit-button'); const input = screen.getByTestId('rename-collection-name-input'); + expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); - fireEvent.change(input, { target: { value: 'baz' } }); + userEvent.clear(input); + userEvent.type(input, 'baz'); expect(submitButton.getAttribute('aria-disabled')).to.equal('false'); - fireEvent.change(input, { target: { value: 'bar' } }); + userEvent.clear(input); + userEvent.type(input, 'bar'); expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); }); @@ -96,16 +119,17 @@ describe('RenameCollectionModal [Component]', function () { const input = screen.getByTestId('rename-collection-name-input'); expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); - fireEvent.change(input, { target: { value: '' } }); + userEvent.clear(input); expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); }); - it('disables the submit button when the value is exists as a collection in the current database', () => { + it('disables the submit button when the value exists as a collection in the current database', () => { const submitButton = screen.getByTestId('submit-button'); const input = screen.getByTestId('rename-collection-name-input'); expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); - fireEvent.change(input, { target: { value: 'my-collection' } }); + userEvent.clear(input); + userEvent.type(input, 'my-collection'); expect(submitButton.getAttribute('aria-disabled')).to.equal('true'); }); @@ -113,8 +137,9 @@ describe('RenameCollectionModal [Component]', function () { beforeEach(() => { const submitButton = screen.getByTestId('submit-button'); const input = screen.getByTestId('rename-collection-name-input'); - fireEvent.change(input, { target: { value: 'baz' } }); - fireEvent.click(submitButton); + userEvent.clear(input); + userEvent.type(input, 'baz'); + userEvent.click(submitButton); expect(screen.getByTestId('rename-collection-modal')).to.exist; }); @@ -153,50 +178,113 @@ describe('RenameCollectionModal [Component]', function () { ); }); }); + }); - describe('when the user has saved aggregations or queries for the old namespace', function () { - beforeEach(async function () { - cleanup(); - pipelineStorage.loadAll.resolves([{ namespace: 'foo.bar' }]); - connectionsManager.getDataServiceForConnection.returns(dataService); - instancesManager.getMongoDBInstanceForConnection.returns( - instanceModel - ); - - const Plugin = RenameCollectionPlugin.withMockServices({ - connectionsManager: connectionsManager as any, - instancesManager: instancesManager as any, - queryStorage: favoriteQueries as any, - pipelineStorage: pipelineStorage as any, - }); - const { globalAppRegistry } = render( ); - globalAppRegistry.emit( - 'open-rename-collection', - { - database: 'foo', - collection: 'bar', - }, - { connectionId: '12345' } - ); - - await waitFor(() => screen.getByText('Rename collection')); - + context( + 'when the user has submitted the form with extra whitespaces', + () => { + beforeEach(() => { const submitButton = screen.getByTestId('submit-button'); const input = screen.getByTestId('rename-collection-name-input'); - fireEvent.change(input, { target: { value: 'baz' } }); - fireEvent.click(submitButton); + userEvent.clear(input); + userEvent.type(input, ' baz '); + userEvent.click(submitButton); expect(screen.getByTestId('rename-collection-modal')).to.exist; - }); - it('does not display the saved queries and aggregations warning', () => { - const renameCollectionWarningBanner = screen.getByTestId( - 'rename-collection-modal-warning' + + const confirmationButton = screen.getByTestId('submit-button'); + expect(confirmationButton.textContent).to.equal( + 'Yes, rename collection' ); - expect(renameCollectionWarningBanner.textContent).to.include( - 'Additionally, any saved queries or aggregations targeting this collection will need to be remapped to the new namespace.' + + userEvent.click(confirmationButton); + }); + + it('trims the white spaces on submit', () => { + expect(renameCollectionSpy).to.have.been.calledWithExactly( + 'foo.bar', + 'baz' ); }); - }); - }); + } + ); }); + + context( + 'when the user has saved aggregations or queries for the old namespace', + function () { + beforeEach(async function () { + const queryStorage = { + getStorage: () => ({ + loadAll: sandbox.stub().resolves([]), + }), + }; + const pipelineStorage = { + loadAll: sandbox.stub().resolves([{ namespace: 'foo.bar' }]), + }; + const Plugin = RenameCollectionPlugin.withMockServices({ + instancesManager: instancesManager as any, + queryStorage: queryStorage as any, + pipelineStorage: pipelineStorage as any, + }); + const { + globalAppRegistry, + getDataServiceForConnection, + connectionsStore, + } = renderWithConnections(, { + connections: [mockConnection], + connectFn() { + return { + renameCollection() { + return Promise.resolve({} as any); + }, + createDataKey() { + return Promise.resolve({}); + }, + configuredKMSProviders() { + return []; + }, + }; + }, + }); + + await connectionsStore.actions.connect(mockConnection); + + appRegistry = globalAppRegistry; + + renameCollectionSpy = sandbox.spy( + getDataServiceForConnection(connectionId), + 'renameCollection' + ); + appRegistry.emit( + 'open-rename-collection', + { + database: 'foo', + collection: 'bar', + }, + { connectionId: '12345' } + ); + + await waitFor(() => + screen.getByRole('heading', { name: 'Rename collection' }) + ); + + const submitButton = screen.getByTestId('submit-button'); + const input = screen.getByTestId('rename-collection-name-input'); + userEvent.clear(input); + userEvent.type(input, 'baz'); + userEvent.click(submitButton); + + expect(screen.getByTestId('rename-collection-modal')).to.exist; + }); + it('does not display the saved queries and aggregations warning', () => { + const renameCollectionWarningBanner = screen.getByTestId( + 'rename-collection-modal-warning' + ); + expect(renameCollectionWarningBanner.textContent).to.include( + 'Additionally, any saved queries or aggregations targeting this collection will need to be remapped to the new namespace.' + ); + }); + } + ); }); diff --git a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx index 7733cea2c74..28f2f3db479 100644 --- a/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx +++ b/packages/databases-collections/src/components/rename-collection-modal/rename-collection-modal.tsx @@ -8,11 +8,11 @@ import { css, spacing, } from '@mongodb-js/compass-components'; -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { connect } from 'react-redux'; import type { RenameCollectionRootState } from '../../modules/rename-collection/rename-collection'; import { - renameCollection, + submitModal, hideModal, clearError, } from '../../modules/rename-collection/rename-collection'; @@ -22,14 +22,14 @@ import { } from '@mongodb-js/compass-telemetry/provider'; export interface RenameCollectionModalProps { - isVisible: boolean; + modalState: 'input-form' | 'confirmation-screen' | 'hidden'; error: Error | null; initialCollectionName: string; collections: { name: string }[]; isRunning: boolean; areSavedQueriesAndAggregationsImpacted: boolean; hideModal: () => void; - renameCollection: (newCollectionName: string) => void; + submitModal: (newCollectionName: string) => void; clearError: () => void; } @@ -39,8 +39,6 @@ const progressContainerStyles = css({ alignItems: 'center', }); -type ModalState = 'input-form' | 'confirmation-screen'; - const bannerTextStyles = css({ marginTop: 0, marginBottom: 0, @@ -72,22 +70,22 @@ function ConfirmationModalContent({ } function RenameCollectionModal({ - isVisible, + modalState, error, initialCollectionName, collections, areSavedQueriesAndAggregationsImpacted, isRunning, hideModal, - renameCollection, + submitModal, clearError, }: RenameCollectionModalProps) { const [newName, setNewName] = useState(initialCollectionName); - const [modalState, setModalState] = useState(); + const isVisible = useMemo(() => modalState !== 'hidden', [modalState]); + useEffect(() => { if (isVisible) { setNewName(initialCollectionName); - setModalState('input-form'); } }, [isVisible, initialCollectionName]); const onNameConfirmationChange = useCallback( @@ -98,12 +96,7 @@ function RenameCollectionModal({ [setNewName, clearError] ); const onFormSubmit = () => { - if (modalState === 'confirmation-screen') { - setModalState('input-form'); - renameCollection(newName); - } else { - setModalState('confirmation-screen'); - } + submitModal(newName); }; useTrackOnChange( @@ -141,7 +134,7 @@ function RenameCollectionModal({ ? 'Confirm rename collection' : 'Rename collection' } - open={isVisible} + open={modalState !== 'hidden'} onSubmit={onFormSubmit} onCancel={onHide} submitButtonText={ @@ -202,11 +195,11 @@ const MappedRenameCollectionModal = connect( state: RenameCollectionRootState ): Omit< RenameCollectionModalProps, - 'renameCollection' | 'hideModal' | 'clearError' + 'submitModal' | 'hideModal' | 'clearError' > => state, { hideModal, - renameCollection, + submitModal, clearError, } )(RenameCollectionModal); diff --git a/packages/databases-collections/src/modules/create-namespace.ts b/packages/databases-collections/src/modules/create-namespace.ts index 1cff9808308..e3aa5aa2a0e 100644 --- a/packages/databases-collections/src/modules/create-namespace.ts +++ b/packages/databases-collections/src/modules/create-namespace.ts @@ -374,8 +374,9 @@ export const createNamespace = ( ) => { const { databaseName, connectionId } = getState(); const kind = databaseName !== null ? 'Collection' : 'Database'; - const dbName = databaseName ?? data.database; - const collName = data.collection; + + const dbName = databaseName ?? data.database?.trim(); + const collName = data.collection.trim(); const namespace = `${dbName}.${collName}`; dispatch(clearError()); diff --git a/packages/databases-collections/src/modules/rename-collection/rename-collection.ts b/packages/databases-collections/src/modules/rename-collection/rename-collection.ts index 6074d932e6a..fb48efc13f6 100644 --- a/packages/databases-collections/src/modules/rename-collection/rename-collection.ts +++ b/packages/databases-collections/src/modules/rename-collection/rename-collection.ts @@ -9,6 +9,8 @@ import { openToast } from '@mongodb-js/compass-components'; * Open action name. */ const OPEN = 'databases-collections/rename-collection/OPEN'; +const CONFIRMATION_REQUIRED = + 'databases-collections/rename-collection/CONFIRMATION_REQUIRED'; const CLOSE = 'database-collections/rename-collection/CLOSE'; const RENAME_REQUEST_IN_PROGRESS = 'database-collections/rename-collection/TOGGLE_IS_RUNNING'; @@ -46,6 +48,10 @@ export const renameRequestInProgress = () => ({ type: RENAME_REQUEST_IN_PROGRESS, }); +export const confirmationRequired = () => ({ + type: CONFIRMATION_REQUIRED, +}); + const handleError = (error: Error | null) => ({ type: HANDLE_ERROR, error, @@ -55,7 +61,7 @@ export type RenameCollectionRootState = { error: Error | null; initialCollectionName: string; isRunning: boolean; - isVisible: boolean; + modalState: 'input-form' | 'confirmation-screen' | 'hidden'; connectionId: string; databaseName: string; collections: { name: string }[]; @@ -64,7 +70,7 @@ export type RenameCollectionRootState = { const defaultState: RenameCollectionRootState = { isRunning: false, - isVisible: false, + modalState: 'hidden', error: null, connectionId: '', databaseName: '', @@ -87,7 +93,7 @@ const reducer: Reducer = ( collections: action.collections, areSavedQueriesAndAggregationsImpacted: action.areSavedQueriesAndAggregationsImpacted, - isVisible: true, + modalState: 'input-form', isRunning: false, error: null, }; @@ -101,14 +107,38 @@ const reducer: Reducer = ( return { ...state, error: action.error, + modalState: 'input-form', isRunning: false, }; + } else if (action.type === CONFIRMATION_REQUIRED) { + return { + ...state, + modalState: 'confirmation-screen', + }; } return state; }; export default reducer; +export const submitModal = ( + newCollectionName: string +): ThunkAction< + Promise, + RenameCollectionRootState, + RenameCollectionPluginServices, + AnyAction +> => { + return async (dispatch, getState) => { + const { modalState } = getState(); + if (modalState !== 'confirmation-screen') { + dispatch(confirmationRequired()); + } else { + await dispatch(renameCollection(newCollectionName)); + } + }; +}; + export const hideModal = (): ThunkAction< void, RenameCollectionRootState, @@ -147,6 +177,7 @@ export const renameCollection = ( getState, { connectionsManager, globalAppRegistry } ) => { + const sanitizedNewCollectionName = newCollectionName.trim(); const state = getState(); const { connectionId, databaseName, initialCollectionName } = state; const dataService = @@ -154,10 +185,13 @@ export const renameCollection = ( dispatch(renameRequestInProgress()); const oldNamespace = `${databaseName}.${initialCollectionName}`; - const newNamespace = `${databaseName}.${newCollectionName}`; + const newNamespace = `${databaseName}.${sanitizedNewCollectionName}`; try { - await dataService.renameCollection(oldNamespace, newCollectionName); + await dataService.renameCollection( + oldNamespace, + sanitizedNewCollectionName + ); globalAppRegistry.emit( 'collection-renamed', { @@ -171,7 +205,7 @@ export const renameCollection = ( dispatch(close()); openToast('collection-rename-success', { variant: 'success', - title: `Collection renamed to ${newCollectionName}`, + title: `Collection renamed to ${sanitizedNewCollectionName}`, timeout: 5_000, }); } catch (e) { From 94ce3f2dbb448ab86a2e47f4f29cf9f6718c4af7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 10:24:44 +0000 Subject: [PATCH 32/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6237) Update report Co-authored-by: paula-stacho <5196720+paula-stacho@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 9707ac75602..438c13b2b97 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Thu Sep 12 2024. +This document was automatically generated on Fri Sep 13 2024. ## List of dependencies From 85f0cff7810b86c496aea0b7e547a5ffaa77f149 Mon Sep 17 00:00:00 2001 From: Maurizio Casimirri Date: Fri, 13 Sep 2024 13:57:26 +0200 Subject: [PATCH 33/57] chore(telemetry): generate tracking plan from types COMPASS-8058 (#6234) * chore(telemetry): generate tracking plan from types COMPASS-8058 * clarify os_release * use undefined instead of optional param * fix missing undefined * remove lodash and sort everything alphabetically * commit packages * screen names * do not truncate types --- .../authors-and-third-party-notices.yaml | 6 +- docs/tracking-plan.md | 1923 +++++++++++++++++ package.json | 1 + .../src/components/collection-tab.tsx | 13 +- .../compass-telemetry/src/telemetry-events.ts | 42 +- scripts/generate-tracking-plan.ts | 342 +++ 6 files changed, 2323 insertions(+), 4 deletions(-) create mode 100644 docs/tracking-plan.md create mode 100644 scripts/generate-tracking-plan.ts diff --git a/.github/workflows/authors-and-third-party-notices.yaml b/.github/workflows/authors-and-third-party-notices.yaml index 35aa196d320..60ae7541234 100644 --- a/.github/workflows/authors-and-third-party-notices.yaml +++ b/.github/workflows/authors-and-third-party-notices.yaml @@ -49,6 +49,9 @@ jobs: run: | npm run update-security-test-summary + - name: Update tracking-plan.md + run: npm run update-tracking-plan + - name: Create Pull Request id: cpr uses: peter-evans/create-pull-request@v6 @@ -60,8 +63,9 @@ jobs: THIRD-PARTY-NOTICES.md AUTHORS docs/security-test-summary.md + docs/tracking-plan.md body: | - - Update `AUTHORS`, `THIRD-PARTY-NOTICES` and `docs/security-test-summary.md` + - Update `AUTHORS`, `THIRD-PARTY-NOTICES`, docs/tracking-plan.md and `docs/security-test-summary.md` - name: Merge PR env: diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md new file mode 100644 index 00000000000..9054e54b981 --- /dev/null +++ b/docs/tracking-plan.md @@ -0,0 +1,1923 @@ + +# Compass Tracking Plan + +Generated on Fri, Sep 13, 2024 at 10:56 AM + +## Table of Contents + +### Identify +- [Identify Traits](#event--IdentifyTraits) + +### Aggregation Builder +- [Aggregation Canceled](#event--AggregationCanceledEvent) +- [Aggregation Copied](#event--AggregationCopiedEvent) +- [Aggregation Deleted](#event--AggregationDeletedEvent) +- [Aggregation Edited](#event--AggregationEditedEvent) +- [Aggregation Executed](#event--AggregationExecutedEvent) +- [Aggregation Explained](#event--AggregationExplainedEvent) +- [Aggregation Exported](#event--AggregationExportedEvent) +- [Aggregation Export Opened](#event--AggregationExportOpenedEvent) +- [Aggregation Opened](#event--AggregationOpenedEvent) +- [Aggregation Saved As View](#event--AggregationSavedAsViewEvent) +- [Aggregation Saved](#event--AggregationSavedEvent) +- [Aggregation Side Panel Opened](#event--AggregationSidePanelOpenedEvent) +- [Aggregation Timed Out](#event--AggregationTimedOutEvent) +- [Aggregation Use Case Added](#event--AggregationUseCaseAddedEvent) +- [Aggregation Use Case Saved](#event--AggregationUseCaseSavedEvent) +- [Editor Type Changed](#event--EditorTypeChangedEvent) +- [Focus Mode Closed](#event--FocusModeClosedEvent) +- [Focus Mode Opened](#event--FocusModeOpenedEvent) +- [View Updated](#event--ViewUpdatedEvent) + +### Atlas +- [Atlas Sign In Error](#event--AtlasSignInErrorEvent) +- [Atlas Sign In Success](#event--AtlasSignInSuccessEvent) +- [Atlas Sign Out](#event--AtlasSignOutEvent) + +### Auto-updates +- [Autoupdate Accepted](#event--AutoupdateAcceptedEvent) +- [Autoupdate Dismissed](#event--AutoupdateDismissedEvent) +- [Application Restart Accepted](#event--ApplicationRestartAcceptedEvent) +- [Autoupdate Enabled](#event--AutoupdateEnabledEvent) +- [Autoupdate Disabled](#event--AutoupdateDisabledEvent) + +### Bulk Operations +- [Bulk Delete Executed](#event--BulkDeleteExecutedEvent) +- [Bulk Delete Opened](#event--BulkDeleteOpenedEvent) +- [Bulk Update Executed](#event--BulkUpdateExecutedEvent) +- [Bulk Update Favorited](#event--BulkUpdateFavoritedEvent) +- [Bulk Update Opened](#event--BulkUpdateOpenedEvent) +- [Delete Exported](#event--DeleteExportedEvent) +- [Delete Export Opened](#event--DeleteExportOpenedEvent) +- [Update Exported](#event--UpdateExportedEvent) +- [Update Export Opened](#event--UpdateExportOpenedEvent) + +### Connection +- [Connection Attempt](#event--ConnectionAttemptEvent) +- [Connection Created](#event--ConnectionCreatedEvent) +- [Connection Disconnected](#event--ConnectionDisconnectedEvent) +- [Connection Exported](#event--ConnectionExportedEvent) +- [Connection Failed](#event--ConnectionFailedEvent) +- [Connection Imported](#event--ConnectionImportedEvent) +- [Connection Removed](#event--ConnectionRemovedEvent) +- [New Connection](#event--NewConnectionEvent) + +### Database / Collection List +- [Collection Created](#event--CollectionCreatedEvent) +- [Database Created](#event--DatabaseCreatedEvent) +- [Switch View Type](#event--SwitchViewTypeEvent) + +### Documents +- [Document Cloned](#event--DocumentClonedEvent) +- [Document Copied](#event--DocumentCopiedEvent) +- [Document Deleted](#event--DocumentDeletedEvent) +- [Document Inserted](#event--DocumentInsertedEvent) +- [Document Updated](#event--DocumentUpdatedEvent) + +### Explain +- [Explain Plan Executed](#event--ExplainPlanExecutedEvent) + +### Find Queries +- [Query Edited](#event--QueryEditedEvent) +- [Query Executed](#event--QueryExecutedEvent) +- [Query Exported](#event--QueryExportedEvent) +- [Query Export Opened](#event--QueryExportOpenedEvent) +- [Query History Closed](#event--QueryHistoryClosedEvent) +- [Query History Favorite Added](#event--QueryHistoryFavoriteAddedEvent) +- [Query History Favorite Copied](#event--QueryHistoryFavoriteCopiedEvent) +- [Query History Favorite Removed](#event--QueryHistoryFavoriteRemovedEvent) +- [Query History Favorites](#event--QueryHistoryFavoritesEvent) +- [Query History Favorite Used](#event--QueryHistoryFavoriteUsedEvent) +- [Query History Opened](#event--QueryHistoryOpenedEvent) +- [Query History Recent](#event--QueryHistoryRecentEvent) +- [Query History Recent Used](#event--QueryHistoryRecentUsedEvent) +- [Query Results Refreshed](#event--QueryResultsRefreshedEvent) + +### Gen AI +- [AI Prompt Submitted](#event--AiPromptSubmittedEvent) +- [AI Query Feedback](#event--AiQueryFeedbackEvent) +- [AI Response Failed](#event--AiResponseFailedEvent) +- [AI Response Generated](#event--AiResponseGeneratedEvent) +- [PipelineAI Feedback](#event--PipelineAiFeedbackEvent) + +### Guide Cues +- [Guide Cue Dismissed](#event--GuideCueDismissedEvent) +- [Guide Cue Group Dismissed](#event--GuideCueGroupDismissedEvent) + +### Import/Export +- [Export Completed](#event--ExportCompletedEvent) +- [Export Opened](#event--ExportOpenedEvent) +- [Import Completed](#event--ImportCompletedEvent) +- [Import Error Log Opened](#event--ImportErrorLogOpenedEvent) +- [Import Opened](#event--ImportOpenedEvent) + +### Indexes +- [Index Created](#event--IndexCreatedEvent) +- [Index Create Opened](#event--IndexCreateOpenedEvent) +- [Index Dropped](#event--IndexDroppedEvent) +- [Index Edited](#event--IndexEditedEvent) + +### My Queries +- [My Queries Filter](#event--MyQueriesFilterEvent) +- [My Queries Search](#event--MyQueriesSearchEvent) +- [My Queries Sort](#event--MyQueriesSortEvent) + +### Other +- [Application Launched](#event--ApplicationLaunchedEvent) +- [Atlas Link Clicked](#event--AtlasLinkClickedEvent) +- [Error Fetching Attributes](#event--ErrorFetchingAttributesEvent) +- [Keytar Secrets Migration Failed](#event--KeytarSecretsMigrationFailedEvent) +- [Performance Advisor Clicked](#event--PerformanceAdvisorClickedEvent) +- [Screen](#event--ScreenEvent) +- [Secret Storage Not Available](#event--SecretStorageNotAvailable) + +### Performance Tab +- [CurrentOp showOperationDetails](#event--CurrentOpShowOperationDetailsEvent) +- [DetailView hideOperationDetails](#event--DetailViewHideOperationDetailsEvent) +- [DetailView killOp](#event--DetailViewKillOpEvent) +- [Performance Paused](#event--PerformancePausedEvent) +- [Performance Resumed](#event--PerformanceResumedEvent) + +### Proactive Performance Insights +- [Signal Action Button Clicked](#event--SignalActionButtonClickedEvent) +- [Signal Closed](#event--SignalClosedEvent) +- [Signal Link Clicked](#event--SignalLinkClickedEvent) +- [Signal Opened](#event--SignalOpenedEvent) +- [Signal Shown](#event--SignalShownEvent) + +### Schema +- [Schema Analyzed](#event--SchemaAnalyzedEvent) + +### Schema Validation +- [Schema Validation Added](#event--SchemaValidationAddedEvent) +- [Schema Validation Edited](#event--SchemaValidationEditedEvent) +- [Schema Validation Updated](#event--SchemaValidationUpdatedEvent) + +### Settings +- [Theme Changed](#event--ThemeChangedEvent) + +### Shell +- [Open Shell](#event--OpenShellEvent) +- [`Shell ${string}`](#event--ShellEvent) + +### Web Vitals +- [First Contentful Paint](#event--FirstContentfulPaintEvent) +- [Largest Contentful Paint](#event--LargestContentfulPaintEvent) +- [First Input Delay](#event--FirstInputDelayEvent) +- [Cumulative Layout Shift](#event--CumulativeLayoutShiftEvent) +- [Time to First Byte](#event--TimeToFirstByteEvent) + + + +## Identify + + + +### Identify Traits + +Traits sent along with the Segment identify call + +**Properties**: + +- **compass_version** (required): `string` + - Shortened version number (e.g., '1.29'). +- **compass_full_version** (required): `string` + - The full version of the Compass application, including additional identifiers +such as build metadata or pre-release tags (e.g., '1.29.0-beta.1'). +- **compass_distribution** (required): `"compass" | "compass-readonly" | "compass-isolated"` + - The distribution of Compass being used. +- **compass_channel** (required): `"stable" | "beta" | "dev"` + - The release channel of Compass. +- 'stable' for the general release. +- 'beta' for pre-release versions intended for testing. +- 'dev' for development versions only distributed internally. +- **platform** (required): `string` + - The platform on which Compass is running, derived from Node.js `os.platform()`. +Corresponds to the operating system (e.g., 'darwin' for macOS, 'win32' for Windows, 'linux' for Linux). +- **arch** (required): `string` + - The architecture of the system's processor, derived from Node.js `os.arch()`. +'x64' for 64-bit processors and 'arm' for ARM processors. +- **os_type** (optional): `string | undefined` + - The type of operating system, including specific operating system +names or types (e.g., 'Linux', 'Windows_NT', 'Darwin'). +- **os_version** (optional): `string | undefined` + - Detailed kernel or system version information. +Example: 'Darwin Kernel Version 21.4.0: Fri Mar 18 00:45:05 PDT 2022; root:xnu-8020.101.4~15/RELEASE_X86_64'. +- **os_arch** (optional): `string | undefined` + - The architecture of the operating system, if available, which might be more specific +than the system's processor architecture (e.g., 'x86_64' for 64-bit architecture). +- **os_release** (optional): `string | undefined` + - The release identifier of the operating system. +This can provide additional details about the operating system release or +version (e.g. the kernel version for a specific macOS release). + +NOTE: This property helps determine the macOS version in use. The reported +version corresponds to the Darwin kernel version, which can be mapped +to the respective macOS release using the conversion table available at: +https://en.wikipedia.org/wiki/MacOS_version_history. +- **os_linux_dist** (optional): `string | undefined` + - The Linux distribution name, if running on a Linux-based operating system, +derived by reading from `/etc/os-release`. +Examples include 'ubuntu', 'debian', or 'rhel'. +- **os_linux_release** (optional): `string | undefined` + - The version of the Linux distribution, if running on a Linux-based operating system, +derived by reading from `/etc/os-release`. +Examples include '20.04' for Ubuntu or '10' for Debian. + + +## Aggregation Builder + + + +### Aggregation Canceled + +This event is fired when a user cancel a running aggregation. + + + +### Aggregation Copied + +This event is fired when user copied the pipeline to clipboard. + +**Properties**: + +- **id** (required): `string` + - A unique id for the aggregation object being deleted. +- **screen** (required): `"my-queries"` + - The screen from which the aggregation has been copied. + + + +### Aggregation Deleted + +This event is fired when user deletes a previously saved aggregation pipeline. + +**Properties**: + +- **id** (optional): `string | undefined` + - A unique id for the aggregation object being deleted. +- **editor_view_type** (optional): `"stage" | "text" | "focus" | undefined` + - The type of editor view from which the aggregation has been deleted. +- **screen** (optional): `"my_queries" | "aggregations" | undefined` + - The screen from which the aggregation has been deleted. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Edited + +This event is fired when user adds/remove a stage or changes the stage name +in the stage editor view. + +**Properties**: + +- **num_stages** (optional): `number | undefined` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **editor_view_type** (optional): `"stage" | "text" | "focus" | undefined` + - The type of view used to edit the aggregation. +- **stage_index** (optional): `number | undefined` + - The index of the stage being edited. +- **stage_action** (optional): `"stage_content_changed" | "stage_renamed" | "stage_added" | "stage_deleted" | "stage_reordered" | undefined` + - The edit action being performed for stage and focus mode. +- **stage_name** (optional): `string | null | undefined` + - The name of the stage edited. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Executed + +This event is fired when user runs the aggregation. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **editor_view_type** (required): `"stage" | "text" | "focus"` + - The type of editor view from which the aggregation has been executed. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Explained + +This event is fired when user runs the explain plan for an aggregation. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **index_used** (required): `boolean` + - Wether the explain reports that an index was used by the query. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Exported + +This event is fired when user copies to clipboard the aggregation to export. + +**Properties**: + +- **num_stages** (optional): `number | undefined` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **language** (optional): `"java" | "javascript" | "csharp" | "python" | "ruby" | "go" | "rust" | "php" | undefined` + - The language to which the query has been exported. +- **with_import_statements** (optional): `boolean | undefined` + - Indicates that the query was exported including import statements. +- **with_drivers_syntax** (optional): `boolean | undefined` + - Indicates that the query was exported including driver syntax. +- **with_builders** (optional): `boolean | undefined` + - Indicates that the query was exported using builder syntax. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Export Opened + +This event is fired when user opens the export to language dialog. + +**Properties**: + +- **num_stages** (optional): `number | undefined` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Opened + +This event is fired when user opens a previously saved aggregation pipeline. + +**Properties**: + +- **id** (optional): `string | undefined` + - A unique id for the aggregation object being opened. +- **editor_view_type** (optional): `"stage" | "text" | "focus" | undefined` + - The type of editor view from which the aggregation is being opened. +- **screen** (optional): `"my_queries" | "aggregations" | undefined` + - The screen from which the aggregation is being opened. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Saved As View + +This event is fired when user saves aggregation pipeline as a view + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Saved + +This event is fired when user saves aggregation pipeline. + +**Properties**: + +- **id** (required): `string` + - A unique id for the aggregation object being saved. +- **num_stages** (optional): `number | undefined` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **editor_view_type** (required): `"stage" | "text" | "focus"` + - The type of editor view from which the aggregation is being saved. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Side Panel Opened + +This event is fired when user clicks the aggregation side panel button. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Timed Out + +This event is fired when an aggregation times out + +**Properties**: + +- **max_time_ms** (required): `number | null` + - The max_time_ms setting of the aggregation timed out. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Use Case Added + +This event is fired when user selects a use case from the aggregation panel. + +**Properties**: + +- **drag_and_drop** (optional): `boolean | undefined` + - Specifies if the use case was added via drag and drop. +- **stage_name** (optional): `string | undefined` + - The name of the stage added. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Aggregation Use Case Saved + +This event is fired when users saves a completed use case form, adding +the stage to their pipeline. + +**Properties**: + +- **stage_name** (required): `string | null` + - The name of the stage the use case refers to. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Editor Type Changed + +This event is fired when user changes editor type. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **editor_view_type** (required): `"stage" | "text" | "focus"` + - The new type of view that editor was changed to. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Focus Mode Closed + +This event is fired when user clicks to minimize focus mode. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **duration** (required): `number` + - Time elapsed between the focus mode has been opened and then closed +(in milliseconds). +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Focus Mode Opened + +This event is fired when user clicks to expand focus mode. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### View Updated + +This event is fired when user updates a collection view they had opened in the agg +builder. + +**Properties**: + +- **num_stages** (required): `number` + - The number of stages present in the aggregation at the moment when +the even has been fired. +- **editor_view_type** (required): `"stage" | "text" | "focus"` + - The type of editor view from which the view has been updated. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Atlas + + + +### Atlas Sign In Error + +This event is fired when user failed to sign in to their Atlas account. + +**Properties**: + +- **error** (required): `string` + - The error message reported on sign in. + + + +### Atlas Sign In Success + +This event is fired when user successfully signed in to their Atlas account + +**Properties**: + +- **auid** (required): `string` + - The id of the atlas user who signed in. + + + +### Atlas Sign Out + +This event is fired when user signed out from their Atlas account. + +**Properties**: + +- **auid** (required): `string` + - The id of the atlas user who signed out. + + +## Auto-updates + + + +### Autoupdate Accepted + +This event is fired when the "Update available" popup is shown and the user accepts the update. + +**Properties**: + +- **update_version** (optional): `string | undefined` + - The version of the update that was accepted. +- **manual_update** (optional): `boolean | undefined` + - Indicates whether the update was initiated manually by the user. +- **manual_download** (optional): `boolean | undefined` + - Indicates whether the update was downloaded manually by the user. + + + +### Autoupdate Dismissed + +This event is fired when the "Update available" popup is shown and the user rejects the update. + +**Properties**: + +- **update_version** (required): `string` + - The version of the update that was dismissed. + + + +### Application Restart Accepted + +This event is fired when the user accepts to restart the application from the update popup. + + + +### Autoupdate Enabled + +This event is fired when the auto-update feature is enabled. + + + +### Autoupdate Disabled + +This event is fired when the auto-update feature is disabled. + + +## Bulk Operations + + + +### Bulk Delete Executed + +This event is fired when a user runs a bulk delete operation. + + + +### Bulk Delete Opened + +This event is fired when a user opens the bulk delete modal. + + + +### Bulk Update Executed + +This event is fired when a user runs a bulk update operation. + +**Properties**: + +- **isUpdatePreviewSupported** (required): `boolean` + - Specifies if update preview was supported (the update preview runs inside a transaction.) +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Bulk Update Favorited + +This event is fired when a user runs a bulk update operation is added to +favorites. + +**Properties**: + +- **isUpdatePreviewSupported** (required): `boolean` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Bulk Update Opened + +This event is fired when a user opens the bulk update modal. + +**Properties**: + +- **isUpdatePreviewSupported** (required): `boolean` + - Specifies if update preview was supported (the update preview runs inside a transaction.) +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Delete Exported + +NOTE: NOT IMPLEMENTED YET. +This event is fired when user copies to clipboard the delete query to export +TODO: https://jira.mongodb.org/browse/COMPASS-7334 + +**Properties**: + +- **language** (optional): `"java" | "javascript" | "csharp" | "python" | "ruby" | "go" | "rust" | "php" | undefined` +- **with_import_statements** (optional): `boolean | undefined` +- **with_drivers_syntax** (optional): `boolean | undefined` +- **with_builders** (optional): `boolean | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Delete Export Opened + +NOTE: NOT IMPLEMENTED YET. +This event is fired when the export to language dialog is open for a delete operation. +TODO: https://jira.mongodb.org/browse/COMPASS-7334 + + + +### Update Exported + +NOTE: NOT IMPLEMENTED YET. +This event is fired when user copies to clipboard the update query to export +TODO: https://jira.mongodb.org/browse/COMPASS-7334 + +**Properties**: + +- **language** (optional): `"java" | "javascript" | "csharp" | "python" | "ruby" | "go" | "rust" | "php" | undefined` +- **with_import_statements** (optional): `boolean | undefined` +- **with_drivers_syntax** (optional): `boolean | undefined` +- **with_builders** (optional): `boolean | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Update Export Opened + +NOTE: NOT IMPLEMENTED YET. +This event is fired when the export to language dialog is open for an update operation. +TODO: https://jira.mongodb.org/browse/COMPASS-7334 + + +## Connection + + + +### Connection Attempt + +This event is fired when users attempts to connect to a server/cluster. + +**Properties**: + +- **is_favorite** (required): `boolean` + - Specifies if the connection is a favorite. +- **is_new** (required): `boolean` + - Specifies if the connection is a newly created connection. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Connection Created + +This event is fired when a new connection is saved. + +**Properties**: + +- **color** (optional): `string | undefined` + - The favorite color for the connection created. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Connection Disconnected + +This event is fired when an active connection is disconnected. + + + +### Connection Exported + +This event is fired when connections export initiated from either UI or CLI. + +**Properties**: + +- **count** (required): `number` + - Number of connections exported. + + + +### Connection Failed + +This event is fired when a connection attempt fails. + +**Properties**: + +- **error_code** (optional): `string | number | undefined` + - The error code (if available). +- **error_name** (required): `string` + - The error name. +- **auth_type** (optional): `string | undefined` + - Desktop only. The authentication type used in the connection. +- **tunnel** (optional): `string | undefined` + - Desktop only. The type of tunneling used in the connection. +- **is_srv** (optional): `boolean | undefined` + - Desktop only. Specifies if SRV is used in the connection. +- **is_localhost** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection is targeting localhost. +- **is_atlas_url** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection URL is an Atlas URL. +- **is_do_url** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection URL is a DigitalOcean URL. +- **is_public_cloud** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection is in a public cloud. +- **public_cloud_name** (optional): `string | undefined` + - The name of the public cloud provider, if applicable. +- **is_csfle** (optional): `boolean | undefined` + - Specifies if Client-Side Field Level Encryption (CSFLE) is used. +- **has_csfle_schema** (optional): `boolean | undefined` + - Specifies if CSFLE schema is present. +- **has_kms_aws** (optional): `boolean | undefined` + - Specifies if KMS AWS is used. +- **has_kms_gcp** (optional): `boolean | undefined` + - Specifies if KMS GCP is used. +- **has_kms_kmip** (optional): `boolean | undefined` + - Specifies if KMS KMIP is used. +- **has_kms_local** (optional): `boolean | undefined` + - Specifies if KMS Local is used. +- **has_kms_azure** (optional): `boolean | undefined` + - Specifies if KMS Azure is used. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Connection Imported + +This event is fired when connections import initiated from either UI or CLI. + +**Properties**: + +- **count** (required): `number` + - Number of connections imported. + + + +### Connection Removed + +This event is fired when a connection is removed. + + + +### New Connection + +This event is fired when user successfully connects to a new server/cluster. + +**Properties**: + +- **is_atlas** (required): `boolean` + - Specifies if the connection is targeting an Atlas cluster. +- **atlas_hostname** (required): `string | null` + - The first resolved SRV hostname in case the connection is targeting an Atlas cluster. +- **is_local_atlas** (required): `boolean` + - Specifies that the connection is targeting an Atlas local deployment. +- **is_dataLake** (required): `boolean` + - Specifies that the connection is targeting an Atlas Data Federation deployment. +- **is_enterprise** (required): `boolean` + - Specifies that the connection is targeting an Atlas Enterprise deployment. +- **is_genuine** (required): `boolean` + - Specifies if the connection is targeting a genuine MongoDB deployment. +- **non_genuine_server_name** (required): `string` + - The advertised server name, in case of non-genuine deployment. +- **server_version** (required): `string` + - The version of the connected server. +- **server_arch** (optional): `string | undefined` + - The host architecture of the connected server. +- **server_os_family** (optional): `string | undefined` + - The OS family of the connected server. +- **topology_type** (required): `string` + - The type of connected topology. +- **auth_type** (optional): `string | undefined` + - Desktop only. The authentication type used in the connection. +- **tunnel** (optional): `string | undefined` + - Desktop only. The type of tunneling used in the connection. +- **is_srv** (optional): `boolean | undefined` + - Desktop only. Specifies if SRV is used in the connection. +- **is_localhost** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection is targeting localhost. +- **is_atlas_url** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection URL is an Atlas URL. +- **is_do_url** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection URL is a DigitalOcean URL. +- **is_public_cloud** (optional): `boolean | undefined` + - Desktop only. Specifies if the connection is in a public cloud. +- **public_cloud_name** (optional): `string | undefined` + - The name of the public cloud provider, if applicable. +- **is_csfle** (optional): `boolean | undefined` + - Specifies if Client-Side Field Level Encryption (CSFLE) is used. +- **has_csfle_schema** (optional): `boolean | undefined` + - Specifies if CSFLE schema is present. +- **has_kms_aws** (optional): `boolean | undefined` + - Specifies if KMS AWS is used. +- **has_kms_gcp** (optional): `boolean | undefined` + - Specifies if KMS GCP is used. +- **has_kms_kmip** (optional): `boolean | undefined` + - Specifies if KMS KMIP is used. +- **has_kms_local** (optional): `boolean | undefined` + - Specifies if KMS Local is used. +- **has_kms_azure** (optional): `boolean | undefined` + - Specifies if KMS Azure is used. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Database / Collection List + + + +### Collection Created + +This event is fired when a collection is created. + +**Properties**: + +- **is_capped** (required): `boolean` + - Indicates whether the collection is capped. +- **has_collation** (required): `boolean` + - Indicates whether the collection has a custom collation. +- **is_timeseries** (required): `boolean` + - Indicates whether the collection is a time series collection. +- **is_clustered** (required): `boolean` + - Indicates whether the collection is clustered. +- **is_fle2** (required): `boolean` + - Indicates whether the collection is encrypted using FLE2 (Field-Level Encryption 2). +- **expires** (required): `boolean` + - Indicates whether the collection has an expiration (TTL index). +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Database Created + +This event is fired when a database is created. + +**Properties**: + +- **is_capped** (required): `boolean` + - Indicates whether the first collection in the database is capped. +- **has_collation** (required): `boolean` + - Indicates whether the first collection in the database has a custom collation. +- **is_timeseries** (required): `boolean` + - Indicates whether the first collection in the database is a time series collection. +- **is_clustered** (required): `boolean` + - Indicates whether the first collection in the database is clustered. +- **is_fle2** (required): `boolean` + - Indicates whether the first collection in the database is encrypted using FLE2 (Field-Level Encryption 2). +- **expires** (required): `boolean` + - Indicates whether the first collection in the database has an expiration (TTL index). +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Switch View Type + +This event is fired when the user changes the items view type between list and grid. + +**Properties**: + +- **view_type** (required): `"list" | "grid"` + - The type of view that the user switched to. +- **item_type** (required): `"database" | "collection"` + - The type of item being viewed, either 'collection' or 'database'. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Documents + + + +### Document Cloned + +This event is fired when user clones a document. + +**Properties**: + +- **mode** (required): `"list" | "json" | "table"` + - The view used to clone the document. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Document Copied + +This event is fired when user copies a document to the clipboard. + +**Properties**: + +- **mode** (required): `"list" | "json" | "table"` + - The view used to copy the document. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Document Deleted + +This event is fired when user deletes a document. + +**Properties**: + +- **mode** (required): `"list" | "json" | "table"` + - The view used to delete the document. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Document Inserted + +This event is fired when user inserts documents. + +**Properties**: + +- **mode** (optional): `string | undefined` + - The view used to insert documents. +- **multiple** (optional): `boolean | undefined` + - Specifies if the user inserted multiple documents. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Document Updated + +This event is fired when user updates a document + +**Properties**: + +- **mode** (required): `"list" | "json" | "table"` + - The view used to delete the document. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Explain + + + +### Explain Plan Executed + +This event is fired when user explains a query. + +**Properties**: + +- **with_filter** (required): `boolean` + - Specifies if a filter was set. +- **index_used** (required): `boolean` + - Specifies if the explain reports that an index was used by the query. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Find Queries + + + +### Query Edited + +This event is fired when a user edits a query. + +**Properties**: + +- **option_name** (required): `"maxTimeMS" | "filter" | "project" | "collation" | "sort" | "skip" | "limit" | "hint"` + - The name of the edited field. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query Executed + +This event is fired when user executes a query + +**Properties**: + +- **has_projection** (required): `boolean` + - Indicates whether the query includes a projection. +- **has_skip** (required): `boolean` + - Indicates whether the query includes a skip operation. +- **has_sort** (required): `boolean` + - Indicates whether the query includes a sort operation. +- **has_limit** (required): `boolean` + - Indicates whether the query includes a limit operation. +- **has_collation** (required): `boolean` + - Indicates whether the query includes a collation. +- **changed_maxtimems** (required): `boolean` + - Indicates whether the maxTimeMS option was modified for the query. +- **collection_type** (required): `string` + - The type of the collection on which the query was executed. +- **used_regex** (required): `boolean` + - Indicates whether the query used a regular expression. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query Exported + +This event is fired when user copies to clipboard the query to export. + +**Properties**: + +- **language** (optional): `"java" | "javascript" | "csharp" | "python" | "ruby" | "go" | "rust" | "php" | undefined` + - The language to which the query has been exported. +- **with_import_statements** (optional): `boolean | undefined` + - Indicates that the query was exported including import statements. +- **with_drivers_syntax** (optional): `boolean | undefined` + - Indicates that the query was exported including driver syntax. +- **with_builders** (optional): `boolean | undefined` + - Indicates that the query was exported using builder syntax. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query Export Opened + +This event is fired when user opens the export to language dialog. + + + +### Query History Closed + +This event is fired when user closes query history panel + + + +### Query History Favorite Added + +This event is fired when user favorites a recent query. + +**Properties**: + +- **isUpdateQuery** (required): `boolean` + - Indicates whether the query was an update query. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query History Favorite Copied + +This event is fired when user copied query to clipboard. + +**Properties**: + +- **id** (required): `string` + - The unique identifier of the query history favorite that was copied. +- **screen** (required): `"my_queries"` + - The screen from which the query history favorite was copied. + + + +### Query History Favorite Removed + +This event is fired when user removes query from favorites. + +**Properties**: + +- **id** (optional): `string | undefined` + - The unique identifier of the query history favorite that was removed. +- **screen** (optional): `"my-queries" | "documents" | undefined` + - The screen from which the query history favorite was removed. +- **isUpdateQuery** (optional): `boolean | undefined` + - Indicates whether the removed query was an update query. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query History Favorites + +This event is fired when user selects "favorites" in query history panel. + + + +### Query History Favorite Used + +This event is fired when user selects a favorite query to put it in the query bar. + +**Properties**: + +- **id** (optional): `string | undefined` + - The unique identifier of the query history favorite that was used. +- **screen** (optional): `"my-queries" | "documents" | undefined` + - The screen from which the query history favorite was loaded. +- **isUpdateQuery** (optional): `boolean | undefined` + - Indicates whether the loaded query was an update query. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query History Opened + +This event is fired when user opens query history panel. + + + +### Query History Recent + +This event is fired when user selects "recent" in query history panel. + + + +### Query History Recent Used + +This event is fired when user selects a recent query to put it in the query bar. + +**Properties**: + +- **isUpdateQuery** (required): `boolean` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Query Results Refreshed + +This event is fired when user clicks the refresh button in the UI to refresh +the query results. + + +## Gen AI + + + +### AI Prompt Submitted + +This event is fired when user enters a prompt in the generative AI textbox +and hits "enter". + +**Properties**: + +- **editor_view_type** (required): `"text" | "stages" | "find"` + - The type of view used to generate the query. +- **user_input_length** (optional): `number | undefined` +- **request_id** (optional): `string | undefined` +- **has_sample_documents** (optional): `boolean | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### AI Query Feedback + +This event is fired when a user submits feedback for a query generation. + +**Properties**: + +- **feedback** (required): `"positive" | "negative"` +- **text** (required): `string` +- **request_id** (required): `string | null` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### AI Response Failed + +This event is fired when a query generation request fails with an error. + +**Properties**: + +- **editor_view_type** (required): `"text" | "stages" | "find"` + - The type of view used to generate the query. +- **error_code** (optional): `string | undefined` +- **status_code** (optional): `number | undefined` +- **error_name** (optional): `string | undefined` +- **request_id** (optional): `string | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### AI Response Generated + +This event is fired when AI query or aggregation generated and successfully +rendered in the UI. + +**Properties**: + +- **editor_view_type** (required): `"text" | "stages" | "find"` + - The type of view used to generate the query. +- **syntax_errors** (optional): `boolean | undefined` +- **query_shape** (optional): `{} | undefined` +- **request_id** (optional): `string | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### PipelineAI Feedback + +This event is fired when a user submits feedback for a pipeline generation. + +**Properties**: + +- **feedback** (required): `"positive" | "negative"` + - Wether the feedback was positive or negative. +- **request_id** (required): `string | null` + - The id of the request related to this feedback. Useful to correlate +feedback to potential error lines in the logs. +- **text** (required): `string` + - The feedback comment left by the user. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Guide Cues + + + +### Guide Cue Dismissed + +This event is fired when a user clicks "next" on a guide cue. + +**Properties**: + +- **groupId** (optional): `string | undefined` + - The unique identifier of the group of guide cues to which this cue belongs. +This field is only set for guide cues belonging to a group. +- **cueId** (required): `string` + - The unique identifier of the specific guide cue that was dismissed. +- **step** (required): `number` + - The step number within the guide cue sequence where the user clicked "next". + + + +### Guide Cue Group Dismissed + +This event is fired when a user clicks "next" on the last guide cue of a +guide cue group. + +**Properties**: + +- **groupId** (required): `string` + - The unique identifier of the group of guide cues that was dismissed. +- **cueId** (required): `string` + - The unique identifier of the specific guide cue that was the last one in the group. +- **step** (required): `number` + - The step number within the guide cue sequence where the user clicked "next". + + +## Import/Export + + + +### Export Completed + +This event is fired when a data export completes. + +**Properties**: + +- **type** (required): `"aggregation" | "query"` + - The type of query for the completed export. (query = find query). +- **all_docs** (optional): `boolean | undefined` + - Indicates whether the export was for all documents in the collection. +- **has_projection** (optional): `boolean | undefined` + - Indicates whether the export query included a projection (a subset of fields). +- **field_option** (optional): `"all-fields" | "select-fields" | undefined` + - Specifies whether all fields were exported or only selected fields. +- **file_type** (required): `"json" | "csv"` + - The file type of the exported data, either CSV or JSON. +- **json_format** (optional): `"default" | "relaxed" | "canonical" | undefined` + - Specifies the format of the JSON file if the file_type is 'json'. +- **field_count** (optional): `number | undefined` + - For exports with field selection, this is the number of fields that were present +in the list of available fields and that were selected for export. +- **fields_added_count** (optional): `number | undefined` + - For exports with field selection, this is the number of fields that has been added +manually by the user. +- **fields_not_selected_count** (optional): `number | undefined` + - For exports with field selection, this is the number of fields that were present +in the list of available fields, but that were not selected for export. +- **number_of_docs** (optional): `number | undefined` + - The total number of documents exported. +- **success** (required): `boolean` + - Indicates whether the export operation was successful. +- **stopped** (required): `boolean` + - Indicates whether the export operation was stopped before completion. +- **duration** (required): `number` + - The duration of the export operation in milliseconds. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Export Opened + +This event is fired when user opens the export dialog. + +**Properties**: + +- **type** (required): `"aggregation" | "query"` + - The type of query for which the export has been open. (query = find query). +- **origin** (required): `"menu" | "crud-toolbar" | "empty-state" | "aggregations-toolbar"` + - The trigger location for the export. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Import Completed + +This event is fired when a data import completes. + +**Properties**: + +- **duration** (optional): `number | undefined` + - The duration of the import operation in milliseconds. +- **delimiter** (optional): `"," | "\t" | ";" | " " | undefined` + - The delimiter used in the imported file. It could be a comma, tab, +semicolon, or space. +This field is optional and only applicable if the file_type is 'csv'. +- **newline** (optional): `"\r\n" | "\n" | undefined` + - The newline character(s) used in the imported file. +- **file_type** (optional): `"" | "json" | "csv" | undefined` + - The type of the imported file, such as CSV or JSON. +- **all_fields** (optional): `boolean | undefined` + - Indicates whether all fields in the documents were included in the import. +If true, all fields in each document were imported; if false, only +selected fields were imported. +- **stop_on_error_selected** (optional): `boolean | undefined` + - Indicates whether the "Stop on Error" option was selected during the import. +If true, the import process stops upon encountering an error. +- **number_of_docs** (optional): `number | undefined` + - The total number of documents imported. +- **success** (optional): `boolean | undefined` + - Indicates whether the import operation was successful. +- **aborted** (optional): `boolean | undefined` + - Indicates whether the import operation was aborted before completion. +- **ignore_empty_strings** (optional): `boolean | undefined` + - Indicates whether empty strings in the imported file were ignored. +If true, fields with empty strings were not included in the imported documents. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Import Error Log Opened + +This event is fired when a user clicks the link to open the error log after +receiving import errors. + +**Properties**: + +- **errorCount** (required): `number` + - Number of import errors present in the log. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Import Opened + +This event is fired when user opens the import dialog. + +**Properties**: + +- **origin** (required): `"menu" | "crud-toolbar" | "empty-state"` + - The trigger location for the import. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Indexes + + + +### Index Created + +This event is fired when user creates an index. + +**Properties**: + +- **unique** (optional): `boolean | undefined` + - Indicates whether the index is unique. +- **ttl** (optional): `any` + - Specifies the time-to-live (TTL) setting for the index. +- **columnstore_index** (optional): `boolean | undefined` + - Indicates whether the index is a columnstore index. +- **has_columnstore_projection** (optional): `any` + - Indicates if the index has a columnstore projection. +- **has_wildcard_projection** (optional): `any` + - Indicates if the index includes a wildcard projection. +- **custom_collation** (optional): `any` + - Specifies if the index uses a custom collation. +- **geo** (optional): `boolean | undefined` + - Indicates whether the index is a geospatial index. +- **atlas_search** (optional): `boolean | undefined` + - Indicates whether the index is an Atlas Search index. +- **type** (optional): `string | undefined` + - Specifies the type of the index. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Index Create Opened + +This event is fired when user opens create index dialog. + +**Properties**: + +- **atlas_search** (optional): `boolean | undefined` + - Specifies if the index creation dialog open is for an Atlas Search index. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Index Dropped + +This event is fired when user drops an index. + +**Properties**: + +- **atlas_search** (optional): `boolean | undefined` + - Indicates whether the index is an Atlas Search index. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Index Edited + +This event is fired when user updates an index. + +**Properties**: + +- **atlas_search** (required): `boolean` + - Indicates whether the index is an Atlas Search index. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## My Queries + + + +### My Queries Filter + +This event is fired when user filters queries using db / coll filter. + +**Properties**: + +- **type** (optional): `"database" | "collection" | undefined` + - The filter that was changed. + + + +### My Queries Search + +This event is fired when user filters queries using search +input (fires only on input blur). + + + +### My Queries Sort + +This event is fired when user sorts items in the list using one of the +sort options. + +**Properties**: + +- **sort_by** (required): `"name" | "id" | "type" | "database" | "collection" | "lastModified" | null` + - The criterion by which the queries are sorted. +- **order** (required): `"ascending" | "descending"` + - The order of the sorting. + + +## Other + + + +### Application Launched + +This event is fired when the application launch is initiated. + +**Properties**: + +- **context** (required): `"terminal" | "desktop_app"` + - The context from which the application was launched. +(NOT whether it is used as a CLI-only tool or not) +- **launch_connection** (required): `"string" | "JSON_file" | "none"` + - Whether Compass was instructed to automatically connect +to a specific cluster using a connection string on the command line, +a JSON file containing an exported connection on the command line, +or not at all. +- **protected** (optional): `boolean | undefined` + - Whether the `protectConnectionStrings` preference was set at launch. +- **readOnly** (required): `boolean` + - Whether the `readOnly` preference was set at launch (including the +compass-readonly distribution). +- **maxTimeMS** (optional): `number | undefined` + - The value of the `maxTimeMS` preference at launch. +- **global_config** (required): `boolean` + - Whether any preferences were specified in the global configuration file. +- **cli_args** (required): `boolean` + - Whether any preferences were specified using CLI arguments. +- **legacy_connections** (required): `boolean` + - Whether Compass discovered any connections in the legacy connection format +(prior to COMPASS-5490 'Remove storage-mixin' from summer 2023). + + + +### Atlas Link Clicked + +This event is fired when a user clicks on the Atlas CTA. + +**Properties**: + +- **screen** (optional): `"agg_builder" | "connect" | undefined` + - The screen from which the Atlas CTA was clicked. + + + +### Error Fetching Attributes + +This event is fired when we fail to track another event due to an exception +while building the attributes. + +**Properties**: + +- **event_name** (required): `string` + - The name of the event for which attributes could not be fetched. + + + +### Keytar Secrets Migration Failed + +This event is fired when the keytar migration fails for a user. +See: https://jira.mongodb.org/browse/COMPASS-6856. + +NOTE: Should be removed as part of https://jira.mongodb.org/browse/COMPASS-7948. + +**Properties**: + +- **num_saved_connections** (required): `number` + - The number of connections that were successfully saved. +- **num_failed_connections** (required): `number` + - The number of connections that failed to save during the migration. + + + +### Performance Advisor Clicked + +This event is fired when a user clicks on the Performance Advisor CTA. + + + +### Screen + +This event is fired when a user activates (i.e., navigates to) a screen. + +**Properties**: + +- **name** (optional): `"my_queries" | "aggregations" | "documents" | "collections" | "databases" | "indexes" | "performance" | "schema" | "validation" | "confirm_new_pipeline_modal" | "create_collection_modal" | "create_database_modal" | "drop_collection_modal" | "drop_database_modal" | "create_index_modal" | "create_search_index_modal" | "create_view_modal" | "csfle_connection_modal" | "delete_pipeline_modal" | "drop_index_modal" | "export_modal" | "export_to_language_modal" | "import_modal" | "insert_document_modal" | "non_genuine_mongodb_modal" | "rename_collection_modal" | "restore_pipeline_modal" | "save_pipeline_modal" | "shell_info_modal" | "update_search_index_modal" | undefined` + - The name of the screen that was activated. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Secret Storage Not Available + +This event is fired at startup when we detect that the application is running on +a system that doesn't offer a suitable secret storage backend. + + +## Performance Tab + + + +### CurrentOp showOperationDetails + +This event is fired when a user clicks to show the details of an operation. + + + +### DetailView hideOperationDetails + +This event is fired when a user clicks to hide the details of an operation. + + + +### DetailView killOp + +This event is fired when a user clicks to kill an operation. + + + +### Performance Paused + +This event is fired when a user pauses the performance screen. + + + +### Performance Resumed + +This event is fired when a user resumes a paused performance screen. + + +## Proactive Performance Insights + + + +### Signal Action Button Clicked + +This event is fired when Action button for the signal is clicked inside the popup. + +**Properties**: + +- **id** (required): `string` + - A unique identifier for the type of the signal. + + + +### Signal Closed + +This event is fired when user clicked the close button or outside the signal and closed the popup. + +**Properties**: + +- **id** (required): `string` + - A unique identifier for the type of the signal. + + + +### Signal Link Clicked + +This event is fired when "Learn more" link is clicked inside the signal popup. + +**Properties**: + +- **id** (required): `string` + - A unique identifier for the type of the signal. + + + +### Signal Opened + +This event is fired when signal badge is clicked and popup is opened. + +**Properties**: + +- **id** (required): `string` + - A unique identifier for the type of the signal. + + + +### Signal Shown + +This event is fired when signal icon badge is rendered on the screen visible to the user. + +**Properties**: + +- **id** (required): `string` + - A unique identifier for the type of the signal. + + +## Schema + + + +### Schema Analyzed + +This event is fired when user analyzes the schema. + +**Properties**: + +- **with_filter** (required): `boolean` + - Indicates whether a filter was applied during the schema analysis. +- **schema_width** (required): `number` + - The number of fields at the top level. +- **schema_depth** (required): `number` + - The number of nested levels. +- **geo_data** (required): `boolean` + - Indicates whether the schema contains geospatial data. +- **analysis_time_ms** (required): `number` + - The time taken to analyze the schema, in milliseconds. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Schema Validation + + + +### Schema Validation Added + +This event is fired when user adds validation rules. + + + +### Schema Validation Edited + +This event is fired when user edits validation rules (without saving them). + +**Properties**: + +- **json_schema** (required): `boolean` + - Indicates wether the validation rule uses $jsonSchema. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### Schema Validation Updated + +This event is fired when user saves validation rules. + +**Properties**: + +- **validation_action** (required): `"error" | "warn"` + - The validation action passed to the driver. +- **validation_level** (required): `"off" | "moderate" | "strict"` + - The level of schema validation passed to the driver. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Settings + + + +### Theme Changed + +This event is fired when a user changes the theme. + +**Properties**: + +- **theme** (required): `"DARK" | "LIGHT" | "OS_THEME"` + - The theme selected by the user. It can be 'DARK', 'LIGHT', or 'OS_THEME'. + + +## Shell + + + +### Open Shell + +This event is fired when the shell is open + +**Properties**: + +- **entrypoint** (optional): `string | undefined` +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + + +### `Shell ${string}` + +This is a group of events forwarded from the embedded shell. +Every event from the shell is forwarded adding the "Shell " prefix to the original +event name. + +Note: each forwarded event is exposing a different set of properties in +addition to the `mongosh_version` and `session_id`. Refer to the mongosh +tracking plan for details about single events. + +**Properties**: + +- **mongosh_version** (required): `string` + - The version of the embedded mongosh package. +- **session_id** (required): `string` + - The shell session_id. +- **connection_id** (optional): `string | undefined` + - The id of the connection associated to this event. + + +## Web Vitals + + + +### First Contentful Paint + +This event is fired at startup to report the First Contentful Paint metric. +See: https://web.dev/articles/vitals. + +**Properties**: + +- **value** (required): `number` + - The reported metric value. + + + +### Largest Contentful Paint + +This event is fired at startup to report the Largest Contentful Paint metric. +See: https://web.dev/articles/vitals. + +**Properties**: + +- **value** (required): `number` + - The reported metric value. + + + +### First Input Delay + +This event is fired at startup to report the First Input Delay metric. +See: https://web.dev/articles/vitals. + +**Properties**: + +- **value** (required): `number` + - The reported metric value. + + + +### Cumulative Layout Shift + +This event is fired at startup to report the Cumulative Layout Shift metric. +See: https://web.dev/articles/vitals. + +**Properties**: + +- **value** (required): `number` + - The reported metric value. + + + +### Time to First Byte + +This event is fired at startup to report the Time to First Byte metric. +See: https://web.dev/articles/vitals. + +**Properties**: + +- **value** (required): `number` + - The reported metric value. + + + diff --git a/package.json b/package.json index febeb24d28e..75155817825 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "update-authors": "node scripts/generate-authors.js", "preupdate-third-party-notices": "npm run -w packages/compass compile", "update-third-party-notices": "cp packages/compass/THIRD-PARTY-NOTICES.md .", + "update-tracking-plan": "npx ts-node scripts/generate-tracking-plan.ts > docs/tracking-plan.md", "bump-packages": "bump-monorepo-packages", "publish-packages": "lerna publish from-package --no-verify-access --no-push --no-git-tag-version --yes", "version": "node ./scripts/align-monorepo-dependencies.js --no-commit", diff --git a/packages/compass-collection/src/components/collection-tab.tsx b/packages/compass-collection/src/components/collection-tab.tsx index 5bcb7dd318f..7728d657a40 100644 --- a/packages/compass-collection/src/components/collection-tab.tsx +++ b/packages/compass-collection/src/components/collection-tab.tsx @@ -24,8 +24,19 @@ import type { CollectionSubtab } from '@mongodb-js/compass-workspaces'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +type CollectionSubtabTrackingId = Lowercase extends infer U + ? U extends string + ? ReplaceSpacesWithUnderscores + : never + : never; + +type ReplaceSpacesWithUnderscores = + S extends `${infer Head} ${infer Tail}` + ? `${Head}_${ReplaceSpacesWithUnderscores}` + : S; + function trackingIdForTabName(name: string) { - return name.toLowerCase().replace(/ /g, '_'); + return name.toLowerCase().replace(/ /g, '_') as CollectionSubtabTrackingId; } const collectionStyles = css({ diff --git a/packages/compass-telemetry/src/telemetry-events.ts b/packages/compass-telemetry/src/telemetry-events.ts index b416f9b9c28..c496d7bfbac 100644 --- a/packages/compass-telemetry/src/telemetry-events.ts +++ b/packages/compass-telemetry/src/telemetry-events.ts @@ -1,3 +1,6 @@ +/** + * Traits sent along with the Segment identify call + */ export type IdentifyTraits = { /** * Shortened version number (e.g., '1.29'). @@ -57,6 +60,11 @@ export type IdentifyTraits = { * The release identifier of the operating system. * This can provide additional details about the operating system release or * version (e.g. the kernel version for a specific macOS release). + * + * NOTE: This property helps determine the macOS version in use. The reported + * version corresponds to the Darwin kernel version, which can be mapped + * to the respective macOS release using the conversion table available at: + * https://en.wikipedia.org/wiki/MacOS_version_history. */ os_release?: string; @@ -79,7 +87,7 @@ export type ConnectionScopedProperties = { /** * The id of the connection associated to this event. */ - connection_id: string; + connection_id: string | undefined; }; /** @@ -2420,7 +2428,37 @@ type ScreenEvent = ConnectionScoped<{ /** * The name of the screen that was activated. */ - name?: string; + name?: + | 'aggregations' + | 'collections' + | 'databases' + | 'documents' + | 'indexes' + | 'my_queries' + | 'performance' + | 'schema' + | 'validation' + | 'confirm_new_pipeline_modal' + | 'create_collection_modal' + | 'create_database_modal' + | 'drop_collection_modal' + | 'drop_database_modal' + | 'create_index_modal' + | 'create_search_index_modal' + | 'create_view_modal' + | 'csfle_connection_modal' + | 'delete_pipeline_modal' + | 'drop_index_modal' + | 'export_modal' + | 'export_to_language_modal' + | 'import_modal' + | 'insert_document_modal' + | 'non_genuine_mongodb_modal' + | 'rename_collection_modal' + | 'restore_pipeline_modal' + | 'save_pipeline_modal' + | 'shell_info_modal' + | 'update_search_index_modal'; }; }>; diff --git a/scripts/generate-tracking-plan.ts b/scripts/generate-tracking-plan.ts new file mode 100644 index 00000000000..8500f13adec --- /dev/null +++ b/scripts/generate-tracking-plan.ts @@ -0,0 +1,342 @@ +import path from 'path'; +import * as ts from 'typescript'; +import * as fs from 'fs'; + +type PropertyInfo = { + name: string; + comment: string; + type?: string; + required: boolean; +}; + +type TelemetryEventInfo = { + typeAlias: string; + category: string; + name: string; + comment: string; + props: PropertyInfo[]; +}; + +const TELEMETRY_EVENTS_SOURCE_FILE = path.resolve( + __dirname, + '..', + 'packages/compass-telemetry/src/telemetry-events.ts' +); + +function main() { + const originalSource = ts.createSourceFile( + TELEMETRY_EVENTS_SOURCE_FILE, + fs.readFileSync(TELEMETRY_EVENTS_SOURCE_FILE, 'utf8'), + ts.ScriptTarget.Latest, + true + ); + + // get all of the event types names from the original source + const eventTypeNames = getTelemetryEventNames(originalSource); + + // for each event and for the IdentifyTraits add a new type `Reduced${typeName}` + // with any intersection and reference types resolved. + const { sourceFile: sourceFileWithReducedTypes, checker } = + getSourceWithReducedTypes(originalSource, eventTypeNames); + + // get event info from the modified sources + const events = eventTypeNames.map((eventTypeName) => + parseTelemetryEventType(eventTypeName, sourceFileWithReducedTypes, checker) + ); + + const identify = parseTelemetryEventType( + 'IdentifyTraits', + sourceFileWithReducedTypes, + checker + ); + + // render the markdown plan + const markdown = generateMarkdownPlan(events, identify); + + console.info(markdown); +} + +main(); + +// -- + +function getTelemetryEventNames(sourceFile: ts.SourceFile): string[] { + const eventNames: string[] = []; + + // find TelemetryEvent and collect all of the event type names in the union. + ts.forEachChild(sourceFile, (node: ts.Node) => { + if ( + ts.isTypeAliasDeclaration(node) && + node.name.text === 'TelemetryEvent' + ) { + const type = node.type; + + if (!ts.isUnionTypeNode(type)) { + throw new Error('TelemetryEvent is not a union type'); + } + + for (const typeElement of type.types) { + if ( + ts.isTypeReferenceNode(typeElement) && + ts.isIdentifier(typeElement.typeName) + ) { + eventNames.push(typeElement.typeName.text); + } else { + throw new Error('Unexpected type in TelemetryEvent union'); + } + } + } + }); + + return eventNames; +} + +function extractNamePropValue( + node: ts.TypeAliasDeclaration, + checker: ts.TypeChecker +) { + const type = checker.getTypeAtLocation(node); + const properties = type.getProperties(); + + const nameProp = properties.find((prop) => prop.getName() === 'name'); + if (nameProp) { + const nameType = checker.getTypeOfSymbolAtLocation(nameProp, node); + + if (nameType.isStringLiteral()) { + return nameType.value; + } else { + return checker.typeToString(nameType); // for template literals + } + } + + throw new Error('Unable to extract type name'); +} + +function extractPayloadPropertiesAndComments( + node: ts.TypeAliasDeclaration, + checker: ts.TypeChecker +) { + const props: PropertyInfo[] = []; + + const type = checker.getTypeAtLocation(node); + const properties = type.getProperties(); + + const payloadProp = properties.find((prop) => prop.getName() === 'payload'); + if (payloadProp) { + const payloadType = checker.getTypeOfSymbolAtLocation(payloadProp, node); + payloadType.getProperties().forEach((prop) => { + const propType = checker.getTypeOfSymbolAtLocation(prop, node); + + const isOptionalFlag = (prop.getFlags() & ts.SymbolFlags.Optional) !== 0; + const allowsUndefinedInUnion = + propType.isUnion() && + propType.types.some((type) => type.flags & ts.TypeFlags.Undefined); + + props.push({ + name: prop.getName(), + type: checker.typeToString( + checker.getTypeOfSymbolAtLocation(prop, node), + undefined, + ts.TypeFormatFlags.NoTruncation + ), + comment: ts.displayPartsToString(prop.getDocumentationComment(checker)), + required: !isOptionalFlag && !allowsUndefinedInUnion, + }); + }); + } + + return props; +} + +function parseTelemetryEventType( + eventTypeName: string, + sourceFile: ts.SourceFile, + checker: ts.TypeChecker +): TelemetryEventInfo { + let originalType: ts.TypeAliasDeclaration | undefined = undefined; + let targetResolvedType: ts.TypeAliasDeclaration | undefined = undefined; + + sourceFile.forEachChild((node) => { + if (ts.isTypeAliasDeclaration(node) && node.name.text === eventTypeName) { + originalType = node; + return; + } + + if ( + ts.isTypeAliasDeclaration(node) && + node.name.text === `Resolved${eventTypeName}` + ) { + targetResolvedType = node; + } + }); + + if (!originalType) { + throw new Error('cannot find originalType'); + } + + if (!targetResolvedType) { + throw new Error('cannot find targetResolvedType'); + } + + const originalSymbol = checker.getSymbolAtLocation( + (originalType as ts.TypeAliasDeclaration).name + ); + + const comment = originalSymbol + ? ts.displayPartsToString(originalSymbol.getDocumentationComment(checker)) + : ''; + + const categoryTag = ts + .getJSDocTags(originalType) + .find((value: ts.JSDocTag) => { + return value.tagName.getText() === 'category'; + }); + + return { + typeAlias: (originalType as ts.TypeAliasDeclaration)?.name.text, + category: categoryTag?.comment?.toString() ?? 'Other', + name: extractNamePropValue(targetResolvedType, checker), + comment: comment, + props: extractPayloadPropertiesAndComments(targetResolvedType, checker), + }; +} + +function getSourceWithReducedTypes( + originalSource: ts.SourceFile, + eventTypeNames: string[] +) { + // Creates a new source file with new types for the events with a "squashed" payload, + // resolving any type reference to basic types. + // We then use the type checker to read the simplified types for each property. + // This allows us to write event types more freely, refactoring common interfaces, while + // being able to generate a readable tracking plan. + + const modifiedSourceText = ` +type ResolveType = T extends (...args: infer A) => infer R +? (...args: ResolveType) => ResolveType +: T extends object +? T extends infer O + ? { [K in keyof O]: ResolveType } + : never +: T; + +${originalSource.text} + +type ResolvedIdentifyTraits = { + name: 'Identify Traits', + payload: ResolveType +}; + + ${eventTypeNames + .map((nodeName: string) => { + return ` +type Resolved${nodeName} = { + name: ${nodeName}['name'], + payload: ResolveType<${nodeName}['payload']> +}; + `; + }) + .join('\n')} + `; + + const sourceFile = ts.createSourceFile( + 'inMemoryFile.ts', + modifiedSourceText, + ts.ScriptTarget.Latest, + true + ); + + const compilerOptions = { + // this is needed otherwise the type checker will remove undefined from any union + strictNullChecks: true, + }; + + const host = ts.createCompilerHost(compilerOptions); + host.getSourceFile = (fileName) => + fileName === 'inMemoryFile.ts' ? sourceFile : undefined; + + const program = ts.createProgram(['inMemoryFile.ts'], compilerOptions, host); + const checker = program.getTypeChecker(); + return { sourceFile, checker }; +} + +function generateMarkdownPlan( + events: TelemetryEventInfo[], + identifyTraits: TelemetryEventInfo +) { + const categoryNames = Array.from( + new Set(events.map((e) => e.category)) + ).sort(); + + const categoryEntries: [string, TelemetryEventInfo[]][] = categoryNames.map( + (category) => { + const categoryEvents = events + .filter((e) => e.category === category) + .sort(); + return [category, categoryEvents]; + } + ); + + const categories: [string, TelemetryEventInfo[]][] = [ + ['Identify', [identifyTraits]], + ...categoryEntries, + ]; + + let toc = ''; + let eventsMarkdown = ''; + + for (const [category, categoryEvents] of categories) { + toc += `\n### ${category}\n`; + + eventsMarkdown += `\n## ${category}\n\n`; + + for (const event of categoryEvents) { + const eventLink = `event--${event.typeAlias}`; + + toc += `- [${event.name}](#${eventLink})\n`; + + eventsMarkdown += `\n\n`; + eventsMarkdown += `### ${event.name}\n\n`; + eventsMarkdown += `${event.comment}\n\n`; + + if (event.props.length > 0) { + eventsMarkdown += `**Properties**:\n\n`; + for (const prop of event.props) { + eventsMarkdown += `- **${prop.name}** (${ + prop.required ? 'required' : 'optional' + }): \`${prop.type || 'unknown'}\`\n`; + if (prop.comment) { + eventsMarkdown += ` - ${prop.comment}\n`; + } + } + eventsMarkdown += '\n'; + } + } + } + + const now = new Date(); + const formattedDate = now.toLocaleDateString('en-US', { + weekday: 'short', + year: 'numeric', + month: 'short', + day: 'numeric', + }); + + const formattedTime = now.toLocaleTimeString('en-US', { + hour: '2-digit', + minute: '2-digit', + }); + + const markdown = ` +# Compass Tracking Plan + +Generated on ${formattedDate} at ${formattedTime} + +## Table of Contents +${toc} + +${eventsMarkdown} +`; + + return markdown; +} From e3f72643f074cb07e60ec050ab21edc69250497f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 12:04:17 +0000 Subject: [PATCH 34/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6238) Update report Co-authored-by: mcasimir <334881+mcasimir@users.noreply.github.com> --- docs/tracking-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index 9054e54b981..cfb6b07d256 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Fri, Sep 13, 2024 at 10:56 AM +Generated on Fri, Sep 13, 2024 at 12:04 PM ## Table of Contents From 5c9b192f447a487124052f61f84cfab15b7d0507 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Sep 2024 03:14:38 +0000 Subject: [PATCH 35/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6242) Update report Co-authored-by: mcasimir <334881+mcasimir@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- docs/tracking-plan.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 438c13b2b97..19ef2d58e7a 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Fri Sep 13 2024. +This document was automatically generated on Sun Sep 15 2024. ## List of dependencies diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index cfb6b07d256..2ea5605a358 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Fri, Sep 13, 2024 at 12:04 PM +Generated on Sun, Sep 15, 2024 at 03:14 AM ## Table of Contents From 934bdc04a83aaae9d3938d71c46fafeb61d17eb0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 05:05:58 +0000 Subject: [PATCH 36/57] v1.44.4-beta.4 --- package-lock.json | 2 +- packages/compass/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index f3aeb516fa6..2df48df0a3c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44188,7 +44188,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.3", + "version": "1.44.4-beta.4", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index 8338780ef34..e52469fee91 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.3", + "version": "1.44.4-beta.4", "apiVersion": "3.0.0", "main": "build/main.js", "author": { @@ -277,5 +277,5 @@ "macos-export-certificate-and-key": "^1.1.2", "win-export-certificate-and-key": "^2.0.1" }, - "releasePublisher": "Basit Chonka " + "releasePublisher": "Maurizio Casimirri " } From 53bb461694e4760d51acb6dac0bbb905c2b53031 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Mon, 16 Sep 2024 10:16:22 +0200 Subject: [PATCH 37/57] fix(connections): ensure that connectionInfoAccess hook value is stable (#6240) --- .../src/connection-info-provider.tsx | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/compass-connections/src/connection-info-provider.tsx b/packages/compass-connections/src/connection-info-provider.tsx index 9d296f3cc78..3e68be23fd5 100644 --- a/packages/compass-connections/src/connection-info-provider.tsx +++ b/packages/compass-connections/src/connection-info-provider.tsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext } from 'react'; +import React, { createContext, useContext, useState } from 'react'; import type { ConnectionInfo } from '@mongodb-js/connection-info'; import { createServiceLocator, @@ -88,19 +88,25 @@ export const useConnectionInfoAccess = (): ConnectionInfoAccess => { // This is stable in all environments // eslint-disable-next-line react-hooks/rules-of-hooks const connectionInfoRef = useConnectionInfoRefForId(connectionId); - return { - getCurrentConnectionInfo() { - if (!connectionInfoRef.current) { - if (process.env.NODE_ENV !== 'test') { - throw new Error( - 'Could not find the current ConnectionInfo. Did you forget to setup the ConnectionInfoContext?' - ); + // eslint-disable-next-line react-hooks/rules-of-hooks + const [access] = useState(() => { + // Return the function from useState to make sure the value doesn't change + // when component re-renders + return { + getCurrentConnectionInfo() { + if (!connectionInfoRef.current) { + if (process.env.NODE_ENV !== 'test') { + throw new Error( + 'Could not find the current ConnectionInfo. Did you forget to setup the ConnectionInfoContext?' + ); + } + return TEST_CONNECTION_INFO; } - return TEST_CONNECTION_INFO; - } - return connectionInfoRef.current; - }, - }; + return connectionInfoRef.current; + }, + }; + }); + return access; }; export const connectionInfoAccessLocator = createServiceLocator( useConnectionInfoAccess, From f15e88f06b06b967bf699a6e3c02922b4bfa238c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 08:23:00 +0000 Subject: [PATCH 38/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6243) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- docs/tracking-plan.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 19ef2d58e7a..d7e1abe641a 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Sun Sep 15 2024. +This document was automatically generated on Mon Sep 16 2024. ## List of dependencies diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index 2ea5605a358..e80a582a38e 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Sun, Sep 15, 2024 at 03:14 AM +Generated on Mon, Sep 16, 2024 at 08:22 AM ## Table of Contents From 43f795b9b280241b789b18ba7fdc6ac1f6e623fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 08:33:13 +0000 Subject: [PATCH 39/57] v1.44.4-beta.5 --- package-lock.json | 2 +- packages/compass/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2df48df0a3c..30aee33b197 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44188,7 +44188,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.4", + "version": "1.44.4-beta.5", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index e52469fee91..99edbed67d7 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.4", + "version": "1.44.4-beta.5", "apiVersion": "3.0.0", "main": "build/main.js", "author": { @@ -277,5 +277,5 @@ "macos-export-certificate-and-key": "^1.1.2", "win-export-certificate-and-key": "^2.0.1" }, - "releasePublisher": "Maurizio Casimirri " + "releasePublisher": "Sergey Petushkov " } From 41c4301908e994694905bc3402ad0811f34f9570 Mon Sep 17 00:00:00 2001 From: Basit <1305718+mabaasit@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:57:20 +0200 Subject: [PATCH 40/57] fix(telemetry): add support for multiple kms providers (#6235) * fix multiple kms telemetry * fix tests * update docs * make counts optional --- .../compass-e2e-tests/tests/logging.test.ts | 10 +- .../compass-telemetry/src/telemetry-events.ts | 20 ++-- .../compass/src/app/utils/telemetry.spec.ts | 93 ++++++++++--------- packages/compass/src/app/utils/telemetry.ts | 40 +++++--- 4 files changed, 92 insertions(+), 71 deletions(-) diff --git a/packages/compass-e2e-tests/tests/logging.test.ts b/packages/compass-e2e-tests/tests/logging.test.ts index 6cb353bc653..99a06feb216 100644 --- a/packages/compass-e2e-tests/tests/logging.test.ts +++ b/packages/compass-e2e-tests/tests/logging.test.ts @@ -116,11 +116,11 @@ describe('Logging and Telemetry integration', function () { expect(connectionAttempt.properties.is_csfle).to.equal(false); expect(connectionAttempt.properties.has_csfle_schema).to.equal(false); - expect(connectionAttempt.properties.has_kms_local).to.equal(false); - expect(connectionAttempt.properties.has_kms_azure).to.equal(false); - expect(connectionAttempt.properties.has_kms_kmip).to.equal(false); - expect(connectionAttempt.properties.has_kms_gcp).to.equal(false); - expect(connectionAttempt.properties.has_kms_aws).to.equal(false); + expect(connectionAttempt.properties.count_kms_local).to.equal(0); + expect(connectionAttempt.properties.count_kms_azure).to.equal(0); + expect(connectionAttempt.properties.count_kms_kmip).to.equal(0); + expect(connectionAttempt.properties.count_kms_gcp).to.equal(0); + expect(connectionAttempt.properties.count_kms_aws).to.equal(0); }); it('tracks an event for screens that were accessed', function () { diff --git a/packages/compass-telemetry/src/telemetry-events.ts b/packages/compass-telemetry/src/telemetry-events.ts index c496d7bfbac..88381525972 100644 --- a/packages/compass-telemetry/src/telemetry-events.ts +++ b/packages/compass-telemetry/src/telemetry-events.ts @@ -698,29 +698,29 @@ export type ExtraConnectionData = { has_csfle_schema?: boolean; /** - * Specifies if KMS AWS is used. + * Specifies the number of AWS KMS providers used. */ - has_kms_aws?: boolean; + count_kms_aws?: number; /** - * Specifies if KMS GCP is used. + * Specifies the number of GCP KMS providers used. */ - has_kms_gcp?: boolean; + count_kms_gcp?: number; /** - * Specifies if KMS KMIP is used. + * Specifies the number of KMIP KMS providers used. */ - has_kms_kmip?: boolean; + count_kms_kmip?: number; /** - * Specifies if KMS Local is used. + * Specifies the number of Local KMS providers used. */ - has_kms_local?: boolean; + count_kms_local?: number; /** - * Specifies if KMS Azure is used. + * Specifies the number of Azure KMS providers used. */ - has_kms_azure?: boolean; + count_kms_azure?: number; }; /** diff --git a/packages/compass/src/app/utils/telemetry.spec.ts b/packages/compass/src/app/utils/telemetry.spec.ts index 70d55c380f1..98c7715262d 100644 --- a/packages/compass/src/app/utils/telemetry.spec.ts +++ b/packages/compass/src/app/utils/telemetry.spec.ts @@ -28,11 +28,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -56,11 +56,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -96,11 +96,11 @@ describe('connection tracking', function () { is_srv: is_srv, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, is_public_cloud: true, public_cloud_name: 'AWS', }; @@ -122,11 +122,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -151,11 +151,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -179,11 +179,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -206,11 +206,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -233,11 +233,11 @@ describe('connection tracking', function () { is_srv: true, is_csfle: false, has_csfle_schema: false, - has_kms_aws: false, - has_kms_local: false, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 0, + count_kms_local: 0, + count_kms_gcp: 0, + count_kms_kmip: 0, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); @@ -346,7 +346,10 @@ describe('connection tracking', function () { autoEncryption: { kmsProviders: { local: { key: 'asdf' }, + // @ts-expect-error with next driver release, this will be fixed + 'local:12': { key: 'asdf' }, aws: { accessKeyId: 'asdf', secretAccessKey: 'asdf' }, + 'kmip:1': { endpoint: 'asdf' }, }, encryptedFieldsMap: { ['foo.bar']: {}, @@ -366,11 +369,11 @@ describe('connection tracking', function () { is_srv: false, is_csfle: true, has_csfle_schema: true, - has_kms_aws: true, - has_kms_local: true, - has_kms_gcp: false, - has_kms_kmip: false, - has_kms_azure: false, + count_kms_aws: 1, + count_kms_local: 2, + count_kms_gcp: 0, + count_kms_kmip: 1, + count_kms_azure: 0, }; expect(properties).to.deep.equal(expected); diff --git a/packages/compass/src/app/utils/telemetry.ts b/packages/compass/src/app/utils/telemetry.ts index 731622f6142..380ccb0f998 100644 --- a/packages/compass/src/app/utils/telemetry.ts +++ b/packages/compass/src/app/utils/telemetry.ts @@ -4,7 +4,7 @@ import { isLocalhost, isDigitalOcean, isAtlas } from 'mongodb-build-info'; import { getCloudInfo } from 'mongodb-cloud-info'; import ConnectionString from 'mongodb-connection-string-url'; import resolveMongodbSrv from 'resolve-mongodb-srv'; -import type { MongoClientOptions } from 'mongodb'; +import type { KMSProviders, MongoClientOptions } from 'mongodb'; type HostInformation = { is_localhost: boolean; @@ -93,15 +93,24 @@ type ExtraConnectionData = { } & CsfleInfo; type CsfleInfo = { - has_kms_aws: boolean; - has_kms_gcp: boolean; - has_kms_kmip: boolean; - has_kms_local: boolean; - has_kms_azure: boolean; + count_kms_aws?: number; + count_kms_gcp?: number; + count_kms_kmip?: number; + count_kms_local?: number; + count_kms_azure?: number; is_csfle: boolean; has_csfle_schema: boolean; }; +function getKmsCount( + kmsProviders: KMSProviders | undefined, + kmsProviderType: 'local' | 'aws' | 'gcp' | 'kmip' | 'azure' +): number { + return Object.keys(kmsProviders ?? {}).filter((x) => + x.startsWith(kmsProviderType) + ).length; +} + function getCsfleInformation( fleOptions: ConnectionInfo['connectionOptions']['fleOptions'] ): CsfleInfo { @@ -109,11 +118,20 @@ function getCsfleInformation( const csfleInfo: CsfleInfo = { is_csfle: kmsProviders.length > 0, has_csfle_schema: !!fleOptions?.autoEncryption?.encryptedFieldsMap, - has_kms_aws: !!fleOptions?.autoEncryption?.kmsProviders?.aws, - has_kms_gcp: !!fleOptions?.autoEncryption?.kmsProviders?.gcp, - has_kms_kmip: !!fleOptions?.autoEncryption?.kmsProviders?.kmip, - has_kms_local: !!fleOptions?.autoEncryption?.kmsProviders?.local, - has_kms_azure: !!fleOptions?.autoEncryption?.kmsProviders?.azure, + count_kms_aws: getKmsCount(fleOptions?.autoEncryption?.kmsProviders, 'aws'), + count_kms_gcp: getKmsCount(fleOptions?.autoEncryption?.kmsProviders, 'gcp'), + count_kms_kmip: getKmsCount( + fleOptions?.autoEncryption?.kmsProviders, + 'kmip' + ), + count_kms_local: getKmsCount( + fleOptions?.autoEncryption?.kmsProviders, + 'local' + ), + count_kms_azure: getKmsCount( + fleOptions?.autoEncryption?.kmsProviders, + 'azure' + ), }; return csfleInfo; From 8b3cfc497e400e5f1ef7f413d51bf4903c5aba31 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 10:03:58 +0000 Subject: [PATCH 41/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6244) Update report Co-authored-by: mabaasit <1305718+mabaasit@users.noreply.github.com> --- docs/tracking-plan.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index e80a582a38e..f3ab7a54e90 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Mon, Sep 16, 2024 at 08:22 AM +Generated on Mon, Sep 16, 2024 at 10:03 AM ## Table of Contents @@ -790,16 +790,16 @@ This event is fired when a connection attempt fails. - Specifies if Client-Side Field Level Encryption (CSFLE) is used. - **has_csfle_schema** (optional): `boolean | undefined` - Specifies if CSFLE schema is present. -- **has_kms_aws** (optional): `boolean | undefined` - - Specifies if KMS AWS is used. -- **has_kms_gcp** (optional): `boolean | undefined` - - Specifies if KMS GCP is used. -- **has_kms_kmip** (optional): `boolean | undefined` - - Specifies if KMS KMIP is used. -- **has_kms_local** (optional): `boolean | undefined` - - Specifies if KMS Local is used. -- **has_kms_azure** (optional): `boolean | undefined` - - Specifies if KMS Azure is used. +- **count_kms_aws** (optional): `number | undefined` + - Specifies the number of AWS KMS providers used. +- **count_kms_gcp** (optional): `number | undefined` + - Specifies the number of GCP KMS providers used. +- **count_kms_kmip** (optional): `number | undefined` + - Specifies the number of KMIP KMS providers used. +- **count_kms_local** (optional): `number | undefined` + - Specifies the number of Local KMS providers used. +- **count_kms_azure** (optional): `number | undefined` + - Specifies the number of Azure KMS providers used. - **connection_id** (optional): `string | undefined` - The id of the connection associated to this event. @@ -870,16 +870,16 @@ This event is fired when user successfully connects to a new server/cluster. - Specifies if Client-Side Field Level Encryption (CSFLE) is used. - **has_csfle_schema** (optional): `boolean | undefined` - Specifies if CSFLE schema is present. -- **has_kms_aws** (optional): `boolean | undefined` - - Specifies if KMS AWS is used. -- **has_kms_gcp** (optional): `boolean | undefined` - - Specifies if KMS GCP is used. -- **has_kms_kmip** (optional): `boolean | undefined` - - Specifies if KMS KMIP is used. -- **has_kms_local** (optional): `boolean | undefined` - - Specifies if KMS Local is used. -- **has_kms_azure** (optional): `boolean | undefined` - - Specifies if KMS Azure is used. +- **count_kms_aws** (optional): `number | undefined` + - Specifies the number of AWS KMS providers used. +- **count_kms_gcp** (optional): `number | undefined` + - Specifies the number of GCP KMS providers used. +- **count_kms_kmip** (optional): `number | undefined` + - Specifies the number of KMIP KMS providers used. +- **count_kms_local** (optional): `number | undefined` + - Specifies the number of Local KMS providers used. +- **count_kms_azure** (optional): `number | undefined` + - Specifies the number of Azure KMS providers used. - **connection_id** (optional): `string | undefined` - The id of the connection associated to this event. From 46a75534a60e8ccba9f4c28cfa0ec1030bb93037 Mon Sep 17 00:00:00 2001 From: svc-devtoolsbot <79531021+svc-devtoolsbot@users.noreply.github.com> Date: Mon, 16 Sep 2024 07:01:50 -0400 Subject: [PATCH 42/57] chore: update electron (#6241) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- configs/webpack-config-compass/package.json | 2 +- package-lock.json | 84 +++++++++---------- packages/atlas-service/package.json | 2 +- packages/compass-crud/package.json | 2 +- packages/compass-e2e-tests/package.json | 2 +- packages/compass-explain-plan/package.json | 2 +- packages/compass-find-in-page/package.json | 2 +- packages/compass-import-export/package.json | 2 +- packages/compass-indexes/package.json | 2 +- packages/compass-query-bar/package.json | 2 +- .../compass-schema-validation/package.json | 2 +- packages/compass-shell/package.json | 2 +- packages/compass-utils/package.json | 2 +- packages/compass-web/package.json | 2 +- packages/compass/package.json | 2 +- packages/connection-storage/package.json | 2 +- packages/hadron-build/package.json | 2 +- packages/hadron-ipc/package.json | 2 +- scripts/package.json | 2 +- 19 files changed, 60 insertions(+), 60 deletions(-) diff --git a/configs/webpack-config-compass/package.json b/configs/webpack-config-compass/package.json index ff0fbb278ef..ef153ecc62c 100644 --- a/configs/webpack-config-compass/package.json +++ b/configs/webpack-config-compass/package.json @@ -73,7 +73,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", "less-loader": "^10.0.1", diff --git a/package-lock.json b/package-lock.json index fdd511a5f34..4743d385400 100644 --- a/package-lock.json +++ b/package-lock.json @@ -567,7 +567,7 @@ "cli-progress": "^3.9.1", "core-js": "^3.17.3", "css-loader": "^4.3.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", "less-loader": "^10.0.1", @@ -21219,9 +21219,9 @@ } }, "node_modules/electron": { - "version": "30.5.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.0.tgz", - "integrity": "sha512-20c774PEsCFRzIgpZIaY6t/wTYxam0MfxQt5t+wG8aStHsl81FchUyLbDo4a59goqE7mHjLOdBDlxmZk88IgRw==", + "version": "30.5.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.1.tgz", + "integrity": "sha512-AhL7+mZ8Lg14iaNfoYTkXQ2qee8mmsQyllKdqxlpv/zrKgfxz6jNVtcRRbQtLxtF8yzcImWdfTQROpYiPumdbw==", "hasInstallScript": true, "dependencies": { "@electron/get": "^2.0.0", @@ -43974,7 +43974,7 @@ "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/oidc-plugin": "^1.1.1", "compass-preferences-model": "^2.28.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "lodash": "^4.17.21", @@ -44254,7 +44254,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", @@ -44914,7 +44914,7 @@ "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -44984,7 +44984,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -45366,7 +45366,7 @@ "@types/d3-hierarchy": "^3.1.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -45564,7 +45564,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -45790,7 +45790,7 @@ "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-app-registry": "^9.2.5", "hadron-document": "^8.6.2", "hadron-ipc": "^3.2.22", @@ -45907,7 +45907,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -46386,7 +46386,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -46594,7 +46594,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -46783,7 +46783,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -47549,7 +47549,7 @@ "license": "SSPL", "dependencies": { "@electron/remote": "^2.1.2", - "electron": "^30.5.0" + "electron": "^30.5.1" }, "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.6", @@ -47646,7 +47646,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.20.0", @@ -48336,7 +48336,7 @@ "@mongodb-js/connection-info": "^0.7.0", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "keytar": "^7.9.0", @@ -49037,7 +49037,7 @@ "debug": "^4.3.4", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", "flatnest": "^1.0.0", @@ -49879,7 +49879,7 @@ "license": "SSPL", "dependencies": { "debug": "^4.3.4", - "electron": "^30.5.0", + "electron": "^30.5.1", "is-electron-renderer": "^2.0.1" }, "devDependencies": { @@ -50850,7 +50850,7 @@ "@babel/core": "^7.24.3", "@mongodb-js/monorepo-tools": "^1.1.1", "commander": "^11.0.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", "pacote": "^11.3.5", @@ -56668,7 +56668,7 @@ "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", @@ -57317,7 +57317,7 @@ "chai-as-promised": "^7.1.1", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -57489,7 +57489,7 @@ "d3-flextree": "^2.1.2", "d3-hierarchy": "^3.1.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57663,7 +57663,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57818,7 +57818,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -57894,7 +57894,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -58170,7 +58170,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", @@ -58381,7 +58381,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -58414,7 +58414,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "commander": "^11.0.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", @@ -58917,7 +58917,7 @@ "chai": "^4.2.0", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", @@ -59523,7 +59523,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", "mocha": "^10.2.0", @@ -59604,7 +59604,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.20.0", @@ -60180,7 +60180,7 @@ "chai": "^4.3.6", "compass-preferences-model": "^2.28.2", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", @@ -61364,7 +61364,7 @@ "core-js": "^3.17.3", "css-loader": "^4.3.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "html-webpack-plugin": "^5.6.0", "less": "^3.13.1", @@ -69362,7 +69362,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", @@ -71748,9 +71748,9 @@ } }, "electron": { - "version": "30.5.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.0.tgz", - "integrity": "sha512-20c774PEsCFRzIgpZIaY6t/wTYxam0MfxQt5t+wG8aStHsl81FchUyLbDo4a59goqE7mHjLOdBDlxmZk88IgRw==", + "version": "30.5.1", + "resolved": "https://registry.npmjs.org/electron/-/electron-30.5.1.tgz", + "integrity": "sha512-AhL7+mZ8Lg14iaNfoYTkXQ2qee8mmsQyllKdqxlpv/zrKgfxz6jNVtcRRbQtLxtF8yzcImWdfTQROpYiPumdbw==", "requires": { "@electron/get": "^2.0.0", "@types/node": "^20.9.0", @@ -75594,7 +75594,7 @@ "del": "^2.0.2", "depcheck": "^1.4.1", "download": "^8.0.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-installer-debian": "^3.2.0", "electron-installer-dmg": "^4.0.0", "electron-installer-redhat": "^2.0.0", @@ -76308,7 +76308,7 @@ "chai": "^4.3.6", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "is-electron-renderer": "^2.0.1", "mocha": "^10.2.0", @@ -81334,7 +81334,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 21dd8d24c55..f81a8ba2a89 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -83,7 +83,7 @@ "@mongodb-js/oidc-plugin": "^1.1.1", "hadron-app-registry": "^9.2.5", "compass-preferences-model": "^2.28.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-ipc": "^3.2.22", "lodash": "^4.17.21", "react": "^17.0.2", diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 75eb5b02ba3..20a6de4210c 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -58,7 +58,7 @@ "chai": "^4.1.2", "chai-as-promised": "^7.1.1", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index 09b2bbb72c2..6486c047ff9 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -52,7 +52,7 @@ "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index 83e2207fefd..070fa681966 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -58,7 +58,7 @@ "@types/d3-hierarchy": "^3.1.2", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-find-in-page/package.json b/packages/compass-find-in-page/package.json index 2fc48f4e392..cf700ed36dd 100644 --- a/packages/compass-find-in-page/package.json +++ b/packages/compass-find-in-page/package.json @@ -61,7 +61,7 @@ "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index 9fe9f019b21..c789f1e7cd2 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -59,7 +59,7 @@ "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-app-registry": "^9.2.5", "hadron-document": "^8.6.2", "hadron-ipc": "^3.2.22", diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index 56aaddff401..65ce858d487 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -55,7 +55,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index a36a2870bed..7b68a9fa721 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -55,7 +55,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index 3e42684b957..b21ca8ec25f 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -54,7 +54,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index e61b730ca8a..a8b6218e3d3 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -75,7 +75,7 @@ "@mongodb-js/tsconfig-compass": "^1.0.4", "chai": "^4.2.0", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", diff --git a/packages/compass-utils/package.json b/packages/compass-utils/package.json index d9aa89c938b..83d9a9c0d27 100644 --- a/packages/compass-utils/package.json +++ b/packages/compass-utils/package.json @@ -69,6 +69,6 @@ }, "dependencies": { "@electron/remote": "^2.1.2", - "electron": "^30.5.0" + "electron": "^30.5.1" } } diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index 4878519641e..41502cf3ef6 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -106,7 +106,7 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "dns-query": "^0.11.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "eslint": "^7.25.0", "events": "^3.3.0", "express": "^4.20.0", diff --git a/packages/compass/package.json b/packages/compass/package.json index 73539fb516f..227436014b4 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -242,7 +242,7 @@ "compass-preferences-model": "^2.28.2", "debug": "^4.3.4", "depcheck": "^1.4.1", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-devtools-installer": "^3.2.0", "electron-dl": "^3.5.0", "electron-mocha": "^12.2.0", diff --git a/packages/connection-storage/package.json b/packages/connection-storage/package.json index 944ceb91666..9c2d11eac2c 100644 --- a/packages/connection-storage/package.json +++ b/packages/connection-storage/package.json @@ -63,7 +63,7 @@ "@mongodb-js/connection-info": "^0.7.0", "bson": "^6.7.0", "compass-preferences-model": "^2.28.2", - "electron": "^30.5.0", + "electron": "^30.5.1", "hadron-app-registry": "^9.2.5", "hadron-ipc": "^3.2.22", "keytar": "^7.9.0", diff --git a/packages/hadron-build/package.json b/packages/hadron-build/package.json index bfb03930194..74d3fdc4a32 100644 --- a/packages/hadron-build/package.json +++ b/packages/hadron-build/package.json @@ -32,7 +32,7 @@ "debug": "^4.3.4", "del": "^2.0.2", "download": "^8.0.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "electron-packager": "^15.5.1", "electron-packager-plugin-non-proprietary-codecs-ffmpeg": "^1.0.2", "flatnest": "^1.0.0", diff --git a/packages/hadron-ipc/package.json b/packages/hadron-ipc/package.json index df0eafabf86..6d058f5bfd5 100644 --- a/packages/hadron-ipc/package.json +++ b/packages/hadron-ipc/package.json @@ -69,7 +69,7 @@ }, "dependencies": { "debug": "^4.3.4", - "electron": "^30.5.0", + "electron": "^30.5.1", "is-electron-renderer": "^2.0.1" } } diff --git a/scripts/package.json b/scripts/package.json index 48636955af1..40386d2d6f2 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -40,7 +40,7 @@ "@babel/core": "^7.24.3", "@mongodb-js/monorepo-tools": "^1.1.1", "commander": "^11.0.0", - "electron": "^30.5.0", + "electron": "^30.5.1", "jsdom": "^24.1.3", "make-fetch-happen": "^8.0.14", "pacote": "^11.3.5", From dc1b9e694842efabd7a8e349e23c367682d099e8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 11:08:49 +0000 Subject: [PATCH 43/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6245) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 6 +++--- docs/tracking-plan.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index d7e1abe641a..f583c0c3bd4 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -253,7 +253,7 @@ This document was automatically generated on Mon Sep 16 2024. | **[ee-first](#e2746902c758ae8a6f91ffb9618cd53717f936cb33c6323e65b6b7b24f7ebefe)** | 1.1.1 | MIT | | **[electron-dl](#e97e034c7b93c63e7a433d75f6f1de3e0668764225ebbd61dbde8d1b55d6f3b7)** | 3.5.0 | MIT | | **[electron-squirrel-startup](#09fb8168e8fda2e174f8d1a1c392ffd8f762c5637c788edd00d1e2486d060349)** | 1.0.1 | Apache-2.0 | -| **[electron](#d41e0bdf063d64691a8d2058e15c90783bbdce7e9cb88eec8d1a02cabc43dd4a)** | 30.5.0 | MIT | +| **[electron](#b8949aa8130b5ef5da1efc84f1a58e30028db62c230eb1da216dcfd7b263f55f)** | 30.5.1 | MIT | | **[encodeurl](#b89152db475e86531e570f87b45d8a51aa5e5d87d4cc3b960cee7b8febf1d26a)** | 1.0.2 | MIT | | **[encodeurl](#177948a319ae0aeebbd65742c53c62b37c75ec1d021afa5a188d10a7ceae6623)** | 2.0.0 | MIT | | **[end-of-stream](#fadc10994f5fa767d06fb25cfff35fb17a895daf3bc3477c782907668ed16563)** | 1.4.4 | MIT | @@ -19722,9 +19722,9 @@ License files: See the License for the specific language governing permissions and limitations under the License. - + -### [electron](https://www.npmjs.com/package/electron) (version 30.5.0) +### [electron](https://www.npmjs.com/package/electron) (version 30.5.1) License tags: MIT diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index f3ab7a54e90..7d8dc6d028a 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Mon, Sep 16, 2024 at 10:03 AM +Generated on Mon, Sep 16, 2024 at 11:08 AM ## Table of Contents From d9484236eb43149af75da302c59c798ee2e1bd41 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Mon, 16 Sep 2024 15:14:03 +0200 Subject: [PATCH 44/57] chore(deps): update express COMPASS-8293 (#6246) chore(deps): update express --- package-lock.json | 1516 ++++++++++++++++++++++----------------------- package.json | 5 +- 2 files changed, 734 insertions(+), 787 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4743d385400..de11d7565f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -969,33 +969,6 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "configs/webpack-config-compass/node_modules/html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "configs/webpack-config-compass/node_modules/html-webpack-plugin": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", - "dependencies": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", - "lodash": "^4.17.21", - "pretty-error": "^3.0.4", - "tapable": "^2.0.0" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "webpack": "^5.20.0" - } - }, "configs/webpack-config-compass/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -1051,18 +1024,6 @@ "webpack": "^5.0.0" } }, - "configs/webpack-config-compass/node_modules/p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, "configs/webpack-config-compass/node_modules/postcss-loader": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", @@ -1084,34 +1045,6 @@ "webpack": "^5.0.0" } }, - "configs/webpack-config-compass/node_modules/pretty-error": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", - "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", - "dependencies": { - "lodash": "^4.17.20", - "renderkid": "^2.0.6" - } - }, - "configs/webpack-config-compass/node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "engines": { - "node": ">= 4" - } - }, - "configs/webpack-config-compass/node_modules/selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "dependencies": { - "node-forge": "^1" - }, - "engines": { - "node": ">=10" - } - }, "configs/webpack-config-compass/node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -1150,24 +1083,6 @@ "webpack": "^5.0.0" } }, - "configs/webpack-config-compass/node_modules/terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, "configs/webpack-config-compass/node_modules/terser-webpack-plugin": { "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", @@ -1326,192 +1241,6 @@ } } }, - "configs/webpack-config-compass/node_modules/webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", - "dependencies": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-middleware/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-middleware/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "configs/webpack-config-compass/node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz", - "integrity": "sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==", - "dependencies": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "bin": { - "webpack-dev-server": "bin/webpack-dev-server.js" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-cli": { - "optional": true - } - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server/node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server/node_modules/ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", - "engines": { - "node": ">= 10" - } - }, - "configs/webpack-config-compass/node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "configs/webpack-config-compass/node_modules/webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -13842,9 +13571,9 @@ } }, "node_modules/@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", @@ -13964,6 +13693,14 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -14104,9 +13841,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "node_modules/@types/scheduler": { "version": "0.16.1", @@ -17361,20 +17098,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/bonjour-service": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.12.tgz", @@ -17873,7 +17596,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -17882,8 +17604,7 @@ "node_modules/camel-case/node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/camelcase": { "version": "5.3.1", @@ -18188,14 +17909,14 @@ } }, "node_modules/clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dependencies": { "source-map": "~0.6.0" }, "engines": { - "node": ">= 4.0" + "node": ">= 10.0" } }, "node_modules/clean-stack": { @@ -20721,27 +20442,10 @@ "tslib": "^2.0.3" } }, - "node_modules/dot-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/dot-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/dot-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/dot-prop": { "version": "5.3.0", @@ -23925,9 +23629,9 @@ "dev": true }, "node_modules/express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -23941,7 +23645,7 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -23950,11 +23654,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -24350,12 +24054,12 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -24374,6 +24078,14 @@ "ms": "2.0.0" } }, + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -24710,9 +24422,9 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" }, "node_modules/fs-temp": { "version": "1.2.1", @@ -26465,37 +26177,52 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, "node_modules/html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" }, "node_modules/html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dependencies": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.10.0" }, "bin": { "html-minifier-terser": "cli.js" }, "engines": { - "node": ">=6" + "node": ">=12" } }, "node_modules/html-minifier-terser/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "engines": { - "node": ">= 6" + "node": ">= 12" } }, "node_modules/html-tokenize": { @@ -26564,6 +26291,37 @@ "node": ">=0.4" } }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -31197,6 +30955,19 @@ "get-func-name": "^2.0.0" } }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lower-case/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -31455,11 +31226,11 @@ } }, "node_modules/memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -33074,6 +32845,20 @@ "path-to-regexp": "^1.7.0" } }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/no-case/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, "node_modules/node-abi": { "version": "3.65.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", @@ -33158,7 +32943,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } @@ -34975,6 +34759,26 @@ "node": ">=8" } }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -35202,7 +35006,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -35211,8 +35014,7 @@ "node_modules/param-case/node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -35364,27 +35166,10 @@ "tslib": "^2.0.3" } }, - "node_modules/pascal-case/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/pascal-case/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/pascal-case/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/path-browserify": { "version": "1.0.1", @@ -37134,6 +36919,15 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, "node_modules/pretty-format": { "version": "29.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", @@ -37573,11 +37367,11 @@ } }, "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -38628,7 +38422,7 @@ "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "engines": { "node": ">= 0.10" } @@ -38646,15 +38440,34 @@ } }, "node_modules/renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "strip-ansi": "^6.0.1" + } + }, + "node_modules/renderkid/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, "node_modules/repeat-string": { @@ -39126,6 +38939,18 @@ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -39290,72 +39115,23 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "node_modules/serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/serve-static/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/serve-static/node_modules/debug/node_modules/ms": { + "node_modules/serve-static/node_modules/encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/serve-static/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serve-static/node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/serve-static/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { "node": ">= 0.8" } @@ -41157,19 +40933,20 @@ } }, "node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.32.0.tgz", + "integrity": "sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==", "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, "node_modules/test-exclude": { @@ -42428,7 +42205,7 @@ "node_modules/utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -43174,6 +42951,202 @@ "node": ">= 10.13.0" } }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/webpack-merge": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", @@ -61640,22 +61613,6 @@ "pkg-dir": "^4.1.0" } }, - "html-entities": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.2.tgz", - "integrity": "sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==" - }, - "html-webpack-plugin": { - "version": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.3.2.tgz", - "integrity": "sha512-HvB33boVNCz2lTyBsSiMffsJ+m0YLIQ+pskblXgN9fnjS1BgEcuAfdInfXfGrkdXV406k9FiDi86eVCDBgJOyQ==", - "requires": { - "@types/html-minifier-terser": "^5.0.0", - "html-minifier-terser": "^5.0.1", - "lodash": "^4.17.21", - "pretty-error": "^3.0.4", - "tapable": "^2.0.0" - } - }, "json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -61687,15 +61644,6 @@ "loader-utils": "^2.0.0" } }, - "p-retry": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", - "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", - "requires": { - "@types/retry": "^0.12.0", - "retry": "^0.13.1" - } - }, "postcss-loader": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.1.1.tgz", @@ -61706,28 +61654,6 @@ "semver": "^7.3.5" } }, - "pretty-error": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", - "integrity": "sha512-ytLFLfv1So4AO1UkoBF6GXQgJRaKbiSiGFICaOPNwQ3CMvBvXpLRubeQWyPGnsbV/t9ml9qto6IeCsho0aEvwQ==", - "requires": { - "lodash": "^4.17.20", - "renderkid": "^2.0.6" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, - "selfsigned": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", - "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", - "requires": { - "node-forge": "^1" - } - }, "sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -61748,17 +61674,6 @@ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==" }, - "terser": { - "version": "5.31.6", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", - "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", - "requires": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, "terser-webpack-plugin": { "version": "5.3.10", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", @@ -61846,133 +61761,6 @@ } } }, - "webpack-dev-middleware": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", - "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", - "requires": { - "colorette": "^2.0.10", - "memfs": "^3.4.1", - "mime-types": "^2.1.31", - "range-parser": "^1.2.1", - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-dev-server": { - "version": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.0.tgz", - "integrity": "sha512-HmNB5QeSl1KpulTBQ8UT4FPrByYyaLxpJoQ0+s7EvUrMc16m0ZS1sgb1XGqzmgCPk0c9y+aaXxn11tbLzuM7NQ==", - "requires": { - "@types/bonjour": "^3.5.9", - "@types/connect-history-api-fallback": "^1.3.5", - "@types/express": "^4.17.13", - "@types/serve-index": "^1.9.1", - "@types/serve-static": "^1.13.10", - "@types/sockjs": "^0.3.33", - "@types/ws": "^8.5.1", - "ansi-html-community": "^0.0.8", - "bonjour-service": "^1.0.11", - "chokidar": "^3.5.3", - "colorette": "^2.0.10", - "compression": "^1.7.4", - "connect-history-api-fallback": "^2.0.0", - "default-gateway": "^6.0.3", - "express": "^4.17.3", - "graceful-fs": "^4.2.6", - "html-entities": "^2.3.2", - "http-proxy-middleware": "^2.0.3", - "ipaddr.js": "^2.0.1", - "launch-editor": "^2.6.0", - "open": "^8.0.9", - "p-retry": "^4.5.0", - "rimraf": "^3.0.2", - "schema-utils": "^4.0.0", - "selfsigned": "^2.1.1", - "serve-index": "^1.9.1", - "sockjs": "^0.3.24", - "spdy": "^4.0.2", - "webpack-dev-middleware": "^5.3.1", - "ws": "^8.13.0" - }, - "dependencies": { - "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" - }, - "ipaddr.js": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", - "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==" - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, "webpack-merge": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", @@ -65525,9 +65313,9 @@ } }, "@types/html-minifier-terser": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.2.tgz", - "integrity": "sha512-h4lTMgMJctJybDp8CQrxTUiiYmedihHWkjnF/8Pxseu2S6Nlfcy8kwboQ8yejh456rP2yWoEVm1sS/FVsfM48w==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==" }, "@types/http-cache-semantics": { "version": "4.0.4", @@ -65647,6 +65435,14 @@ "undici-types": "~5.26.4" } }, + "@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "requires": { + "@types/node": "*" + } + }, "@types/normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", @@ -65787,9 +65583,9 @@ } }, "@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==" + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" }, "@types/scheduler": { "version": "0.16.1", @@ -68396,14 +68192,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "requires": { - "side-channel": "^1.0.6" - } } } }, @@ -69054,9 +68842,9 @@ } }, "clean-css": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", - "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "requires": { "source-map": "~0.6.0" } @@ -71348,27 +71136,10 @@ "tslib": "^2.0.3" }, "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" } } }, @@ -73858,9 +73629,9 @@ "dev": true }, "express": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", - "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", + "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", "requires": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -73874,7 +73645,7 @@ "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", "merge-descriptors": "1.0.3", @@ -73883,11 +73654,11 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.19.0", - "serve-static": "1.16.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -74195,12 +73966,12 @@ } }, "finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "requires": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -74216,6 +73987,11 @@ "ms": "2.0.0" } }, + "encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -74470,9 +74246,9 @@ } }, "fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==" }, "fs-temp": { "version": "1.2.1", @@ -76643,29 +76419,34 @@ "call-bind": "^1.0.2" } }, + "html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==" + }, "html-escaper": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" }, "html-minifier-terser": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", - "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "requires": { - "camel-case": "^4.1.1", - "clean-css": "^4.2.3", - "commander": "^4.1.1", + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", "he": "^1.2.0", - "param-case": "^3.0.3", + "param-case": "^3.0.4", "relateurl": "^0.2.7", - "terser": "^4.6.3" + "terser": "^5.10.0" }, "dependencies": { "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==" } } }, @@ -76731,6 +76512,18 @@ } } }, + "html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "requires": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + } + }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -80412,6 +80205,21 @@ "get-func-name": "^2.0.0" } }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "requires": { + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + } + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -80609,11 +80417,11 @@ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" }, "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "requires": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" } }, "memoize-one": { @@ -82305,6 +82113,22 @@ "path-to-regexp": "^1.7.0" } }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + }, + "dependencies": { + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + } + } + }, "node-abi": { "version": "3.65.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", @@ -83724,6 +83548,22 @@ "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", "dev": true }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + } + } + }, "p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -84045,27 +83885,10 @@ "tslib": "^2.0.3" }, "dependencies": { - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "requires": { - "tslib": "^2.0.3" - } - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" } } }, @@ -85374,6 +85197,15 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==" }, + "pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "requires": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, "pretty-format": { "version": "29.6.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.2.tgz", @@ -85725,11 +85557,11 @@ } }, "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "requires": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" } }, "query-ast": { @@ -86530,7 +86362,7 @@ "relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", - "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=" + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==" }, "release-zalgo": { "version": "1.0.0", @@ -86542,15 +86374,30 @@ } }, "renderkid": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.7.tgz", - "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "requires": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", "htmlparser2": "^6.1.0", "lodash": "^4.17.21", - "strip-ansi": "^3.0.1" + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + } } }, "repeat-string": { @@ -86904,6 +86751,15 @@ "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, + "selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "requires": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + } + }, "semver": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", @@ -87043,65 +86899,20 @@ } }, "serve-static": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", - "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "requires": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - } - } - }, - "depd": { + "encodeurl": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "requires": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==" } } }, @@ -88529,13 +88340,14 @@ "dev": true }, "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "version": "5.32.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.32.0.tgz", + "integrity": "sha512-v3Gtw3IzpBJ0ugkxEX8U0W6+TnPKRRCWGh1jC/iM/e3Ki5+qvO1L1EAZ56bZasc64aXHwRHNIQEzm6//i5cemQ==", "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" + "source-map-support": "~0.5.20" } }, "test-exclude": { @@ -89500,7 +89312,7 @@ "utila": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", - "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==" }, "utils-merge": { "version": "1.0.1", @@ -90030,6 +89842,144 @@ } } }, + "webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.15.2", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", + "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.4", + "ws": "^8.13.0" + }, + "dependencies": { + "ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "requires": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" + }, + "ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + } + } + } + }, "webpack-merge": { "version": "5.9.0", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", diff --git a/package.json b/package.json index 75155817825..d6cb7f6850d 100644 --- a/package.json +++ b/package.json @@ -94,8 +94,5 @@ "packages/*", "configs/*", "scripts" - ], - "overrides": { - "mongodb-client-encryption": "^6.1.0" - } + ] } From be05e5927e1a119206d84a3698de0355367900cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 13:21:08 +0000 Subject: [PATCH 45/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6248) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 94 ++++-------------------------------------- docs/tracking-plan.md | 2 +- 2 files changed, 10 insertions(+), 86 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index f583c0c3bd4..bd72ef52dc6 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -275,7 +275,7 @@ This document was automatically generated on Mon Sep 16 2024. | **[execa](#4172423d3420d919e31613f23914ef325af8a3bf9ed3c6110a4053369b1cfddd)** | 5.1.1 | MIT | | **[execa](#099ba5f976333854bfd5aa2237fd12d883c4477af76007a7963109833edef012)** | 7.2.0 | MIT | | **[expand-template](#46d3e73ca0d4a8c14e99252386f0a5c1a4fd8b2747331373d7b4da97105c15bb)** | 2.0.3 | (MIT OR WTFPL) | -| **[express](#2f5e99f892082d7ae7608facedaa03184cf49f212373b334f68154c367871bce)** | 4.20.0 | MIT | +| **[express](#8751e219c34fdecbdbc22ade072ef51354f9ff6434904f388f85002299a5a1ec)** | 4.21.0 | MIT | | **[ext-list](#84470edae99e3ac5a9fdf9da513cd9a1ea7e479ca5fca13b6abecbb4c522f97c)** | 2.2.2 | MIT | | **[ext-name](#ad9b31fcbd25bf889177f1e55d92e083fbc5ae2460904d8a81abf075c4762abd)** | 5.0.0 | MIT | | **[facepaint](#7f6881dbbff5f35b8670063d56384fa880a5558aeaf952f1dc00997cfc7cddd4)** | 1.2.1 | MIT | @@ -284,7 +284,7 @@ This document was automatically generated on Mon Sep 16 2024. | **[fast-xml-parser](#ebbe8cacbca0e6da2c884ade309dddffc2df1cf8f3532ffda03e31aa6d3a9a3b)** | 4.4.1 | MIT | | **[fetch-blob](#9a40c73e2482c1cc651991133722a6fedd12dc752d2858a21da24395e6fc8461)** | 3.2.0 | MIT | | **[file-uri-to-path](#9eb41790b1cce0829afe7926edf4be80e0dd6927cd8376c00a54a8fc86f8943e)** | 1.0.0 | MIT | -| **[finalhandler](#ea05ab0484759171733963b2131d01cfd1ca89ab89ecde290a3aac01ec5b0c47)** | 1.2.0 | MIT | +| **[finalhandler](#f3d0b351ed5ad496bcb1412f1508b4cd24709821f254c8f391f6e96999f97900)** | 1.3.1 | MIT | | **[first-chunk-stream](#c940079dd0a2457019ab184334f928cab84e316cd4016ba3581b312aa55c70f9)** | 3.0.0 | MIT | | **[focus-trap-react](#4db13d4bfad6e874b38f8054935a1c7872c265b0a9f279e24dbe2523f3d1ce53)** | 9.0.2 | MIT | | **[focus-trap](#c34eea0a3a357645a464ee2dd814f280c9670f39b9b85132394eb15acb70916a)** | 6.9.4 | MIT | @@ -524,7 +524,6 @@ This document was automatically generated on Mon Sep 16 2024. | **[pump](#147f1bd3a6380306e696f0574feda0b1490121a1d12e4500e91ffb6e888ffa3a)** | 3.0.0 | MIT | | **[punycode](#3fe331f5536b72438f24d644ea9804b5e462f791a4c72a6d94f37193af1086aa)** | 2.3.1 | MIT | | **[pupa](#b05b7cc4c1bc01acd063dc811b9b1b0a1a4b3e0f17be77deaeaabade7dfeb095)** | 2.1.1 | MIT | -| **[qs](#f0014afee41bfb4a111252068b917fc6a9a61ea307f982526a7082ea503f9040)** | 6.11.0 | BSD-3-Clause | | **[qs](#2240c454f0418501921d6b094c1f6477603b0c893c4d7a8ed2bdfcab9e75c069)** | 6.13.0 | BSD-3-Clause | | **[range-parser](#e973789240fef3c00f359e6acc8570dd769b70ee8b29fdcb679897fa2d696bff)** | 1.2.1 | MIT | | **[raw-body](#fc0f8cf1771db07ef15ce7dafcac6db8e351607bb82caf0e5838f1769a796266)** | 2.5.2 | MIT | @@ -561,9 +560,8 @@ This document was automatically generated on Mon Sep 16 2024. | **[select](#12d30053a00882385c42a50004536696d477e8e694b047d6d39513947e5a39e9)** | 1.1.2 | MIT | | **[semver](#8b8f657069cf84b7ca932ab17eb24a0a55a8053ccd2a36c03185dadab64db3f8)** | 6.3.1 | ISC | | **[semver](#2c8b8c47dd7d24873eda4559b25851062c21d7584a396735b363f9bab626dd7b)** | 7.6.3 | ISC | -| **[send](#a5aa96052b8bf57c58c38d6fae3a3b7d94ec212b6100f58a8260eb2f6a8cff6d)** | 0.18.0 | MIT | | **[send](#412cd4c4a8e6aaa433d5e67852c05a1e307fd4eb9dc362bdc30fa099313c24cb)** | 0.19.0 | MIT | -| **[serve-static](#d81d7a0483c3a6c271dfd6d2283f9439b5edce9940d39d8b9057f9225291374b)** | 1.16.0 | MIT | +| **[serve-static](#9a2d04a479ef9c6e990f1fb614478dea4368c040af707296400ff7f9bb68d30b)** | 1.16.2 | MIT | | **[set-function-length](#88ee3e1c8e8c22ac3653a290c1cdc68787d064f17a743020a070b31290bb4eb9)** | 1.2.2 | MIT | | **[set-function-name](#f9d4c9272c71403774a64f46fc69cefd1039845f2ee1d252fb62cbd97f9e7fb4)** | 2.0.2 | MIT | | **[setprototypeof](#7787a1d3bc2f39b65d75407d5d8d02d8ddb70f1cdb74897f15115e995fb64a56)** | 1.2.0 | ISC | @@ -20354,9 +20352,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [express](https://www.npmjs.com/package/express) (version 4.20.0) +### [express](https://www.npmjs.com/package/express) (version 4.21.0) License tags: MIT @@ -20618,9 +20616,9 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [finalhandler](https://www.npmjs.com/package/finalhandler) (version 1.2.0) +### [finalhandler](https://www.npmjs.com/package/finalhandler) (version 1.3.1) License tags: MIT @@ -36719,46 +36717,6 @@ License files: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -### [qs](https://www.npmjs.com/package/qs) (version 6.11.0) - -License tags: BSD-3-Clause - -License files: - -- LICENSE.md: - - BSD 3-Clause License - - Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors) - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - 1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - 3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ### [qs](https://www.npmjs.com/package/qs) (version 6.13.0) @@ -38096,40 +38054,6 @@ License files: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - -### [send](https://www.npmjs.com/package/send) (version 0.18.0) - -License tags: MIT - -License files: - -- LICENSE: - - (The MIT License) - - Copyright (c) 2012 TJ Holowaychuk - Copyright (c) 2014-2022 Douglas Christopher Wilson - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - 'Software'), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY - CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ### [send](https://www.npmjs.com/package/send) (version 0.19.0) @@ -38164,9 +38088,9 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [serve-static](https://www.npmjs.com/package/serve-static) (version 1.16.0) +### [serve-static](https://www.npmjs.com/package/serve-static) (version 1.16.2) License tags: MIT diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index 7d8dc6d028a..cf46df4ed46 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Mon, Sep 16, 2024 at 11:08 AM +Generated on Mon, Sep 16, 2024 at 01:21 PM ## Table of Contents From 4cfadd59ece3e5b2ad09e3d901b107e97756a258 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 17:58:30 +0000 Subject: [PATCH 46/57] v1.44.4-beta.6 --- package-lock.json | 2 +- packages/compass/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index a3306ede4ee..5ec47dd4677 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44161,7 +44161,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.5", + "version": "1.44.4-beta.6", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index 11cf92f46f2..05161e21973 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.5", + "version": "1.44.4-beta.6", "apiVersion": "3.0.0", "main": "build/main.js", "author": { From 566f4acc89db258eb5ae5b6fff6c80313753f0b1 Mon Sep 17 00:00:00 2001 From: jess-sig <50599508+jess-sig@users.noreply.github.com> Date: Mon, 16 Sep 2024 18:12:44 -0400 Subject: [PATCH 47/57] chore: Change "Report a Bug" link in repo COMPASS-8267 (#6250) * chore: Change "Report a Bug" link in repo COMPASS-8267 * Update config.yml --- .github/ISSUE_TEMPLATE/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index c45e67ac5bf..7a66f83a268 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,8 +1,8 @@ blank_issues_enabled: false contact_links: - name: Bug Reports - url: https://jira.mongodb.org/projects/COMPASS/issues/ - about: Report a bug via Jira. + url: https://jira.mongodb.org/ + about: Report a bug to the COMPASS project in Jira. - name: Feature Request url: https://feedback.mongodb.com/forums/924283-compass about: Request a new feature or enhancement via the MongoDB Feedback Engine. From b59beac766d3fc0732c66ad91458def1297bfcee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 22:19:18 +0000 Subject: [PATCH 48/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6252) Update report Co-authored-by: jess-sig <50599508+jess-sig@users.noreply.github.com> --- docs/tracking-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index cf46df4ed46..c144304a286 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Mon, Sep 16, 2024 at 01:21 PM +Generated on Mon, Sep 16, 2024 at 10:19 PM ## Table of Contents From 5cac7fb6c5b1cffe0050df61b8bafba23ccc81df Mon Sep 17 00:00:00 2001 From: svc-devtoolsbot <79531021+svc-devtoolsbot@users.noreply.github.com> Date: Tue, 17 Sep 2024 01:04:20 -0400 Subject: [PATCH 49/57] chore(release): bump package versions (#6191) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- configs/eslint-config-compass/package.json | 4 +- configs/eslint-plugin-compass/package.json | 4 +- configs/mocha-config-compass/package.json | 2 +- configs/testing-library-compass/package.json | 8 +- configs/tsconfig-compass/package.json | 2 +- configs/webpack-config-compass/package.json | 6 +- package-lock.json | 2436 ++++++++--------- packages/atlas-service/package.json | 26 +- packages/bson-transpilers/package.json | 4 +- packages/collection-model/package.json | 6 +- packages/compass-aggregations/package.json | 54 +- packages/compass-app-stores/package.json | 26 +- packages/compass-collection/package.json | 30 +- packages/compass-components/package.json | 12 +- .../package.json | 20 +- .../package.json | 22 +- packages/compass-connections/package.json | 32 +- packages/compass-crud/package.json | 48 +- packages/compass-e2e-tests/package.json | 14 +- packages/compass-editor/package.json | 10 +- packages/compass-explain-plan/package.json | 28 +- .../compass-export-to-language/package.json | 30 +- packages/compass-field-store/package.json | 16 +- packages/compass-find-in-page/package.json | 16 +- packages/compass-generative-ai/package.json | 22 +- packages/compass-import-export/package.json | 36 +- packages/compass-indexes/package.json | 36 +- packages/compass-intercom/package.json | 12 +- packages/compass-logging/package.json | 12 +- .../package.json | 10 +- .../compass-preferences-model/package.json | 16 +- packages/compass-query-bar/package.json | 40 +- .../package.json | 32 +- .../compass-schema-validation/package.json | 34 +- packages/compass-schema/package.json | 38 +- packages/compass-serverstats/package.json | 20 +- packages/compass-settings/package.json | 24 +- packages/compass-shell/package.json | 28 +- packages/compass-sidebar/package.json | 40 +- packages/compass-telemetry/package.json | 14 +- packages/compass-test-server/package.json | 8 +- packages/compass-user-data/package.json | 12 +- packages/compass-utils/package.json | 8 +- packages/compass-web/package.json | 62 +- packages/compass-welcome/package.json | 24 +- packages/compass-workspaces/package.json | 26 +- packages/compass/package.json | 88 +- packages/connection-form/package.json | 20 +- packages/connection-info/package.json | 10 +- packages/connection-storage/package.json | 24 +- packages/data-service/package.json | 14 +- packages/database-model/package.json | 8 +- .../databases-collections-list/package.json | 22 +- packages/databases-collections/package.json | 38 +- packages/explain-plan-helper/package.json | 8 +- packages/hadron-app-registry/package.json | 10 +- packages/hadron-build/package.json | 4 +- packages/hadron-document/package.json | 8 +- packages/hadron-ipc/package.json | 8 +- packages/instance-model/package.json | 10 +- packages/mongodb-query-util/package.json | 8 +- packages/my-queries-storage/package.json | 14 +- packages/reflux-state-mixin/package.json | 8 +- scripts/package.json | 4 +- 64 files changed, 1858 insertions(+), 1858 deletions(-) diff --git a/configs/eslint-config-compass/package.json b/configs/eslint-config-compass/package.json index 20e6723669c..0d94beeed73 100644 --- a/configs/eslint-config-compass/package.json +++ b/configs/eslint-config-compass/package.json @@ -1,6 +1,6 @@ { "name": "@mongodb-js/eslint-config-compass", - "version": "1.1.6", + "version": "1.1.7", "description": "Shared Compass eslint configuration", "license": "SSPL", "main": "index.js", @@ -16,7 +16,7 @@ "@babel/core": "^7.21.4", "@babel/eslint-parser": "^7.14.3", "@mongodb-js/eslint-config-devtools": "^0.9.9", - "@mongodb-js/eslint-plugin-compass": "^1.0.20", + "@mongodb-js/eslint-plugin-compass": "^1.0.21", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "eslint-config-prettier": "^8.3.0", diff --git a/configs/eslint-plugin-compass/package.json b/configs/eslint-plugin-compass/package.json index 68ad1b766d1..9d117757a4a 100644 --- a/configs/eslint-plugin-compass/package.json +++ b/configs/eslint-plugin-compass/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.0.20", + "version": "1.0.21", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -37,7 +37,7 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/configs/mocha-config-compass/package.json b/configs/mocha-config-compass/package.json index 94cb4b12ff6..1b7e8ec7449 100644 --- a/configs/mocha-config-compass/package.json +++ b/configs/mocha-config-compass/package.json @@ -1,6 +1,6 @@ { "name": "@mongodb-js/mocha-config-compass", - "version": "1.4.1", + "version": "1.4.2", "description": "Shared mocha mocha configuration for Compass packages", "license": "SSPL", "main": "index.js", diff --git a/configs/testing-library-compass/package.json b/configs/testing-library-compass/package.json index a8c17b3022f..23b1a75b57b 100644 --- a/configs/testing-library-compass/package.json +++ b/configs/testing-library-compass/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.0.0", + "version": "1.0.1", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -45,10 +45,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/configs/tsconfig-compass/package.json b/configs/tsconfig-compass/package.json index d3ab82d9fc8..49d74271850 100644 --- a/configs/tsconfig-compass/package.json +++ b/configs/tsconfig-compass/package.json @@ -1,6 +1,6 @@ { "name": "@mongodb-js/tsconfig-compass", - "version": "1.0.4", + "version": "1.0.5", "description": "Shared Compass Typescript configuration", "license": "SSPL", "files": [ diff --git a/configs/webpack-config-compass/package.json b/configs/webpack-config-compass/package.json index ef153ecc62c..697091a06fb 100644 --- a/configs/webpack-config-compass/package.json +++ b/configs/webpack-config-compass/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.4.1", + "version": "1.4.2", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -45,9 +45,9 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/cli-progress": "^3.9.2", "@types/html-webpack-plugin": "^3.2.9", "@types/webpack-bundle-analyzer": "^4.7.0", diff --git a/package-lock.json b/package-lock.json index de11d7565f5..d32abac9b3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,13 +31,13 @@ }, "configs/eslint-config-compass": { "name": "@mongodb-js/eslint-config-compass", - "version": "1.1.6", + "version": "1.1.7", "license": "SSPL", "dependencies": { "@babel/core": "^7.21.4", "@babel/eslint-parser": "^7.14.3", "@mongodb-js/eslint-config-devtools": "^0.9.9", - "@mongodb-js/eslint-plugin-compass": "^1.0.20", + "@mongodb-js/eslint-plugin-compass": "^1.0.21", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "eslint-config-prettier": "^8.3.0", @@ -104,10 +104,10 @@ }, "configs/eslint-plugin-compass": { "name": "@mongodb-js/eslint-plugin-compass", - "version": "1.0.20", + "version": "1.0.21", "license": "SSPL", "devDependencies": { - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -118,7 +118,7 @@ }, "configs/mocha-config-compass": { "name": "@mongodb-js/mocha-config-compass", - "version": "1.4.1", + "version": "1.4.2", "license": "SSPL", "dependencies": { "@electron/remote": "^2.1.2", @@ -430,7 +430,7 @@ }, "configs/testing-library-compass": { "name": "@mongodb-js/testing-library-compass", - "version": "1.0.0", + "version": "1.0.1", "license": "SSPL", "dependencies": { "@testing-library/react": "^12.1.5", @@ -442,10 +442,10 @@ "sinon": "^17.0.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -533,7 +533,7 @@ }, "configs/tsconfig-compass": { "name": "@mongodb-js/tsconfig-compass", - "version": "1.0.4", + "version": "1.0.5", "license": "SSPL", "dependencies": { "@mongodb-js/tsconfig-devtools": "^1.0.0" @@ -548,7 +548,7 @@ }, "configs/webpack-config-compass": { "name": "@mongodb-js/webpack-config-compass", - "version": "1.4.1", + "version": "1.4.2", "license": "SSPL", "dependencies": { "@babel/core": "^7.21.4", @@ -589,9 +589,9 @@ "webpack-compass": "bin/webpack.js" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/cli-progress": "^3.9.2", "@types/html-webpack-plugin": "^3.2.9", "@types/webpack-bundle-analyzer": "^4.7.0", @@ -43935,21 +43935,21 @@ }, "packages/atlas-service": { "name": "@mongodb-js/atlas-service", - "version": "0.28.2", + "version": "0.28.3", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/oidc-plugin": "^1.1.1", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "electron": "^30.5.1", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -43957,11 +43957,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -44104,7 +44104,7 @@ } }, "packages/bson-transpilers": { - "version": "3.0.8", + "version": "3.0.9", "license": "SSPL", "dependencies": { "antlr4": "4.7.2", @@ -44112,7 +44112,7 @@ "js-yaml": "^3.13.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "chai": "^4.3.4", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -44141,16 +44141,16 @@ }, "packages/collection-model": { "name": "mongodb-collection-model", - "version": "5.23.2", + "version": "5.23.3", "license": "SSPL", "dependencies": { "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", @@ -44176,55 +44176,55 @@ "devDependencies": { "@electron/rebuild": "^3.6.0", "@electron/remote": "^2.1.2", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-find-in-page": "^4.30.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-import-export": "^7.40.0", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-saved-aggregations-queries": "^1.41.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-serverstats": "^16.40.0", - "@mongodb-js/compass-settings": "^0.40.2", - "@mongodb-js/compass-shell": "^3.40.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-find-in-page": "^4.30.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-import-export": "^7.41.0", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-saved-aggregations-queries": "^1.42.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-serverstats": "^16.41.0", + "@mongodb-js/compass-settings": "^0.40.3", + "@mongodb-js/compass-shell": "^3.41.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/get-os-info": "^0.3.24", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-downloader": "^0.3.5", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/sbom-tools": "^0.7.0", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@segment/analytics-node": "^1.1.4", "ampersand-view": "^9.0.0", "chai": "^4.3.4", "chalk": "^4.1.2", "clean-stack": "^2.0.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -44234,9 +44234,9 @@ "electron-squirrel-startup": "^1.0.1", "ensure-error": "^3.0.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-build": "^25.5.9", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-build": "^25.5.10", + "hadron-ipc": "^3.2.23", "local-links": "^1.4.0", "make-fetch-happen": "^8.0.14", "marky": "^1.2.1", @@ -44244,8 +44244,8 @@ "mongodb-build-info": "^1.7.2", "mongodb-cloud-info": "^2.1.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-data-service": "^22.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-log-writer": "^1.4.2", "mongodb-ns": "^2.4.2", "react": "^17.0.2", @@ -44265,7 +44265,7 @@ }, "packages/compass-aggregations": { "name": "@mongodb-js/compass-aggregations", - "version": "9.43.0", + "version": "9.44.0", "license": "SSPL", "dependencies": { "@babel/generator": "^7.19.5", @@ -44274,34 +44274,34 @@ "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/explain-plan-helper": "^1.2.2", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/explain-plan-helper": "^1.2.3", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/shell-bson-parser": "^1.1.2", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", @@ -44314,11 +44314,11 @@ "semver": "^7.6.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", @@ -44376,26 +44376,26 @@ }, "packages/compass-app-stores": { "name": "@mongodb-js/compass-app-stores", - "version": "7.27.0", + "version": "7.28.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/connection-info": "^0.7.0", - "hadron-app-registry": "^9.2.5", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/connection-info": "^0.8.0", + "hadron-app-registry": "^9.2.6", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -44440,20 +44440,20 @@ }, "packages/compass-collection": { "name": "@mongodb-js/compass-collection", - "version": "4.40.0", + "version": "4.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", "@mongodb-js/mongodb-constants": "^0.10.2", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "mongodb-collection-model": "^5.23.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "mongodb-collection-model": "^5.23.3", "mongodb-ns": "^2.4.2", "numeral": "^2.0.6", "react": "^17.0.2", @@ -44462,11 +44462,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44524,7 +44524,7 @@ }, "packages/compass-components": { "name": "@mongodb-js/compass-components", - "version": "1.29.3", + "version": "1.29.4", "license": "SSPL", "dependencies": { "@dnd-kit/core": "^6.0.7", @@ -44574,7 +44574,7 @@ "@react-aria/visually-hidden": "^3.3.1", "bson": "^6.7.0", "focus-trap-react": "^9.0.2", - "hadron-document": "^8.6.2", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "is-electron-renderer": "^2.0.1", "lodash": "^4.17.21", @@ -44588,11 +44588,11 @@ }, "devDependencies": { "@emotion/css": "^11.11.2", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44636,22 +44636,22 @@ }, "packages/compass-connection-import-export": { "name": "@mongodb-js/compass-connection-import-export", - "version": "0.37.0", + "version": "0.38.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/connection-storage": "^0.20.0", - "compass-preferences-model": "^2.28.2", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/connection-storage": "^0.21.0", + "compass-preferences-model": "^2.28.3", + "hadron-ipc": "^3.2.23", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44698,35 +44698,35 @@ }, "packages/compass-connections": { "name": "@mongodb-js/compass-connections", - "version": "1.41.0", + "version": "1.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44747,26 +44747,26 @@ }, "packages/compass-connections-navigation": { "name": "@mongodb-js/compass-connections-navigation", - "version": "1.40.0", + "version": "1.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "compass-preferences-model": "^2.28.3", "mongodb-build-info": "^1.7.2", "react": "^17.0.2", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -44842,33 +44842,33 @@ }, "packages/compass-crud": { "name": "@mongodb-js/compass-crud", - "version": "13.41.0", + "version": "13.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "@mongodb-js/my-queries-storage": "^0.15.3", - "@mongodb-js/reflux-state-mixin": "^1.0.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "@mongodb-js/my-queries-storage": "^0.16.0", + "@mongodb-js/reflux-state-mixin": "^1.0.7", "@mongodb-js/shell-bson-parser": "^1.1.2", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "jsondiffpatch": "^0.5.0", "lodash": "^4.17.21", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "prop-types": "^15.7.2", @@ -44877,12 +44877,12 @@ "semver": "^7.6.2" }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", @@ -44892,7 +44892,7 @@ "enzyme": "^3.11.0", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "nyc": "^15.1.0", "react-dom": "^17.0.2", "sinon": "^8.1.1", @@ -44936,15 +44936,15 @@ } }, "packages/compass-e2e-tests": { - "version": "1.26.2", + "version": "1.27.0", "devDependencies": { "@electron/rebuild": "^3.6.0", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/oidc-mock-provider": "^0.9.3", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai-as-promised": "^7.1.4", "@types/cross-spawn": "^6.0.2", "@types/puppeteer": "^5.4.4", @@ -44953,7 +44953,7 @@ "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "clipboardy": "^2.3.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -44961,7 +44961,7 @@ "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", - "hadron-build": "^25.5.9", + "hadron-build": "^25.5.10", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", @@ -45240,7 +45240,7 @@ }, "packages/compass-editor": { "name": "@mongodb-js/compass-editor", - "version": "0.29.3", + "version": "0.30.0", "license": "SSPL", "dependencies": { "@codemirror/autocomplete": "^6.17.0", @@ -45252,7 +45252,7 @@ "@codemirror/state": "^6.1.4", "@codemirror/view": "^6.7.1", "@lezer/highlight": "^1.2.0", - "@mongodb-js/compass-components": "^1.29.3", + "@mongodb-js/compass-components": "^1.29.4", "@mongodb-js/mongodb-constants": "^0.10.0", "mongodb-query-parser": "^4.2.3", "polished": "^4.2.2", @@ -45260,10 +45260,10 @@ "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/prettier": "^2.7.1", @@ -45306,21 +45306,21 @@ }, "packages/compass-explain-plan": { "name": "@mongodb-js/compass-explain-plan", - "version": "6.41.0", + "version": "6.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", "d3-flextree": "^2.1.2", "d3-hierarchy": "^3.1.2", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", "react": "^17.0.2", @@ -45329,11 +45329,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", @@ -45385,31 +45385,31 @@ }, "packages/compass-export-to-language": { "name": "@mongodb-js/compass-export-to-language", - "version": "9.17.0", + "version": "9.18.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", "@mongodb-js/shell-bson-parser": "^1.1.2", - "bson-transpilers": "^3.0.8", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "bson-transpilers": "^3.0.9", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1" }, "devDependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.3.6", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -45449,12 +45449,12 @@ }, "packages/compass-field-store": { "name": "@mongodb-js/compass-field-store", - "version": "9.16.0", + "version": "9.17.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-schema": "^12.2.0", "react": "^17.0.2", @@ -45463,11 +45463,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -45512,23 +45512,23 @@ }, "packages/compass-find-in-page": { "name": "@mongodb-js/compass-find-in-page", - "version": "4.30.3", + "version": "4.30.4", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-components": "^1.29.4", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -45578,26 +45578,26 @@ }, "packages/compass-generative-ai": { "name": "@mongodb-js/compass-generative-ai", - "version": "0.22.2", + "version": "0.22.3", "license": "SSPL", "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "mongodb": "^6.8.0", "mongodb-schema": "^12.2.0", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -45749,27 +45749,27 @@ }, "packages/compass-import-export": { "name": "@mongodb-js/compass-import-export", - "version": "7.40.0", + "version": "7.41.0", "license": "SSPL", "dependencies": { "@electron/remote": "^2.1.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "electron": "^30.5.1", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", @@ -45782,12 +45782,12 @@ "strip-bom-stream": "^4.0.0" }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", @@ -45843,27 +45843,27 @@ }, "packages/compass-indexes": { "name": "@mongodb-js/compass-indexes", - "version": "5.40.0", + "version": "5.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/shell-bson-parser": "^1.1.2", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "numeral": "^2.0.6", "react": "^17.0.2", @@ -45873,11 +45873,11 @@ "semver": "^7.6.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -45970,17 +45970,17 @@ }, "packages/compass-intercom": { "name": "@mongodb-js/compass-intercom", - "version": "0.12.2", + "version": "0.12.3", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "compass-preferences-model": "^2.28.2" + "@mongodb-js/compass-logging": "^1.4.7", + "compass-preferences-model": "^2.28.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -46077,21 +46077,21 @@ }, "packages/compass-logging": { "name": "@mongodb-js/compass-logging", - "version": "1.4.6", + "version": "1.4.7", "license": "SSPL", "dependencies": { "debug": "^4.3.4", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "is-electron-renderer": "^2.0.1", "mongodb-log-writer": "^1.4.2", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/debug": "^4.1.9", "@types/mocha": "^9.0.0", @@ -46135,17 +46135,17 @@ }, "packages/compass-maybe-protect-connection-string": { "name": "@mongodb-js/compass-maybe-protect-connection-string", - "version": "0.26.2", + "version": "0.26.3", "license": "SSPL", "dependencies": { - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "mongodb-connection-string-url": "^3.0.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -46188,15 +46188,15 @@ } }, "packages/compass-preferences-model": { - "version": "2.28.2", + "version": "2.28.3", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-user-data": "^0.3.6", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-user-data": "^0.3.7", "@mongodb-js/devtools-proxy-support": "^0.3.9", "bson": "^6.7.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "react": "^17.0.2", @@ -46204,9 +46204,9 @@ "zod": "^3.22.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/testing-library-compass": "^1.0.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/testing-library-compass": "^1.0.1", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", @@ -46321,30 +46321,30 @@ }, "packages/compass-query-bar": { "name": "@mongodb-js/compass-query-bar", - "version": "8.42.0", + "version": "8.43.0", "license": "SSPL", "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -46352,11 +46352,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -46399,22 +46399,22 @@ }, "packages/compass-saved-aggregations-queries": { "name": "@mongodb-js/compass-saved-aggregations-queries", - "version": "1.41.0", + "version": "1.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/my-queries-storage": "^0.16.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "fuse.js": "^6.5.3", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -46422,11 +46422,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -46475,30 +46475,30 @@ }, "packages/compass-schema": { "name": "@mongodb-js/compass-schema", - "version": "6.42.0", + "version": "6.43.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/reflux-state-mixin": "^1.0.6", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/reflux-state-mixin": "^1.0.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "leaflet": "^1.5.1", "leaflet-defaulticon-compatibility": "^0.1.1", "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "moment": "^2.29.4", "mongodb": "^6.8.0", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "numeral": "^1.5.6", "prop-types": "^15.7.2", @@ -46508,12 +46508,12 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", @@ -46534,21 +46534,21 @@ }, "packages/compass-schema-validation": { "name": "@mongodb-js/compass-schema-validation", - "version": "6.41.0", + "version": "6.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "javascript-stringify": "^2.0.1", "lodash": "^4.17.21", "mongodb-ns": "^2.4.2", @@ -46561,19 +46561,19 @@ "semver": "^7.6.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-ipc": "^3.2.22", + "hadron-ipc": "^3.2.23", "mocha": "^10.2.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "nyc": "^15.1.0", "react-dom": "^17.0.2", "sinon": "^8.1.1", @@ -46609,18 +46609,18 @@ }, "packages/compass-serverstats": { "name": "@mongodb-js/compass-serverstats", - "version": "16.40.0", + "version": "16.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", "d3": "^3.5.17", "d3-timer": "^1.0.3", "debug": "^4.3.4", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-ns": "^2.4.2", "prop-types": "^15.7.2", @@ -46628,10 +46628,10 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/enzyme": "^3.10.14", "chai": "^4.1.2", @@ -46658,27 +46658,27 @@ }, "packages/compass-settings": { "name": "@mongodb-js/compass-settings", - "version": "0.40.2", + "version": "0.40.3", "license": "SSPL", "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -46727,33 +46727,33 @@ }, "packages/compass-shell": { "name": "@mongodb-js/compass-shell", - "version": "3.40.0", + "version": "3.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", "@mongosh/browser-repl": "^2.3.1", "@mongosh/logging": "^2.3.1", "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -47197,25 +47197,25 @@ }, "packages/compass-sidebar": { "name": "@mongodb-js/compass-sidebar", - "version": "5.41.0", + "version": "5.42.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-connections-navigation": "^1.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-connections-navigation": "^1.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -47223,11 +47223,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -47239,7 +47239,7 @@ "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "nyc": "^15.1.0", "prettier": "^2.7.1", "react-dom": "^17.0.2", @@ -47277,19 +47277,19 @@ }, "packages/compass-telemetry": { "name": "@mongodb-js/compass-telemetry", - "version": "1.1.6", + "version": "1.1.7", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-logging": "^1.4.7", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -47387,16 +47387,16 @@ }, "packages/compass-test-server": { "name": "@mongodb-js/compass-test-server", - "version": "0.1.21", + "version": "0.1.22", "license": "SSPL", "dependencies": { "mongodb-runner": "^5.6.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.1", @@ -47438,19 +47438,19 @@ }, "packages/compass-user-data": { "name": "@mongodb-js/compass-user-data", - "version": "0.3.6", + "version": "0.3.7", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-utils": "^0.6.12", "write-file-atomic": "^5.0.1", "zod": "^3.22.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -47518,17 +47518,17 @@ }, "packages/compass-utils": { "name": "@mongodb-js/compass-utils", - "version": "0.6.11", + "version": "0.6.12", "license": "SSPL", "dependencies": { "@electron/remote": "^2.1.2", "electron": "^30.5.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -47572,37 +47572,37 @@ }, "packages/compass-web": { "name": "@mongodb-js/compass-web", - "version": "0.7.0", + "version": "0.7.1", "license": "SSPL", "devDependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -47614,7 +47614,7 @@ "bson": "^6.2.0", "buffer": "^6.0.3", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "crypto-browserify": "^3.12.0", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -47624,13 +47624,13 @@ "events": "^3.3.0", "express": "^4.20.0", "express-http-proxy": "^2.0.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "is-ip": "^5.0.1", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "os-browserify": "^0.3.0", @@ -47810,26 +47810,26 @@ }, "packages/compass-welcome": { "name": "@mongodb-js/compass-welcome", - "version": "0.39.0", + "version": "0.40.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -47876,19 +47876,19 @@ }, "packages/compass-workspaces": { "name": "@mongodb-js/compass-workspaces", - "version": "0.22.0", + "version": "0.23.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -47896,11 +47896,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -48105,28 +48105,28 @@ }, "packages/connection-form": { "name": "@mongodb-js/connection-form", - "version": "1.39.0", + "version": "1.40.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/connection-info": "^0.8.0", "@mongodb-js/shell-bson-parser": "^1.1.2", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "lodash": "^4.17.21", "mongodb": "^6.8.0", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -48173,19 +48173,19 @@ }, "packages/connection-info": { "name": "@mongodb-js/connection-info", - "version": "0.7.0", + "version": "0.8.0", "license": "SSPL", "dependencies": { "lodash": "^4.17.21", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2" + "mongodb-data-service": "^22.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -48299,29 +48299,29 @@ }, "packages/connection-storage": { "name": "@mongodb-js/connection-storage", - "version": "0.20.0", + "version": "0.21.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-info": "^0.8.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "electron": "^30.5.1", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "keytar": "^7.9.0", "lodash": "^4.17.21", "mongodb-connection-string-url": "^3.0.1", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -48364,11 +48364,11 @@ }, "packages/data-service": { "name": "mongodb-data-service", - "version": "22.23.2", + "version": "22.23.3", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-proxy-support": "^0.3.9", "bson": "^6.7.0", @@ -48379,13 +48379,13 @@ "mongodb-ns": "^2.4.2" }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", + "@mongodb-js/compass-test-server": "^0.1.22", "@mongodb-js/devtools-docker-test-envs": "^1.3.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/lodash": "^4.14.188", "@types/whatwg-url": "^8.2.1", "chai": "^4.2.0", @@ -48627,16 +48627,16 @@ }, "packages/database-model": { "name": "mongodb-database-model", - "version": "2.23.2", + "version": "2.23.3", "license": "SSPL", "dependencies": { "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -48694,24 +48694,24 @@ }, "packages/databases-collections": { "name": "@mongodb-js/compass-databases-collections", - "version": "1.40.0", + "version": "1.41.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/databases-collections-list": "^1.38.0", - "@mongodb-js/my-queries-storage": "^0.15.3", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/databases-collections-list": "^1.39.0", + "@mongodb-js/my-queries-storage": "^0.16.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "prop-types": "^15.7.2", @@ -48722,11 +48722,11 @@ "semver": "^7.6.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", "depcheck": "^1.4.1", @@ -48741,24 +48741,24 @@ }, "packages/databases-collections-list": { "name": "@mongodb-js/databases-collections-list", - "version": "1.38.0", + "version": "1.39.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "compass-preferences-model": "^2.28.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -48858,17 +48858,17 @@ }, "packages/explain-plan-helper": { "name": "@mongodb-js/explain-plan-helper", - "version": "1.2.2", + "version": "1.2.3", "license": "SSPL", "dependencies": { "@mongodb-js/shell-bson-parser": "^1.1.2", "mongodb-explain-compat": "^3.1.0" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -48937,7 +48937,7 @@ } }, "packages/hadron-app-registry": { - "version": "9.2.5", + "version": "9.2.6", "license": "SSPL", "dependencies": { "eventemitter3": "^4.0.0", @@ -48947,11 +48947,11 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", @@ -48993,7 +48993,7 @@ } }, "packages/hadron-build": { - "version": "25.5.9", + "version": "25.5.10", "hasInstallScript": true, "license": "SSPL", "dependencies": { @@ -49038,7 +49038,7 @@ "hadron-build": "cli.js" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "chai": "^4.2.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -49728,7 +49728,7 @@ } }, "packages/hadron-document": { - "version": "8.6.2", + "version": "8.6.3", "license": "SSPL", "dependencies": { "bson": "^6.7.0", @@ -49737,10 +49737,10 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -49848,7 +49848,7 @@ } }, "packages/hadron-ipc": { - "version": "3.2.22", + "version": "3.2.23", "license": "SSPL", "dependencies": { "debug": "^4.3.4", @@ -49856,10 +49856,10 @@ "is-electron-renderer": "^2.0.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/is-electron-renderer": "^2.0.1", "@types/mocha": "^9.0.0", @@ -49919,16 +49919,16 @@ }, "packages/instance-model": { "name": "mongodb-instance-model", - "version": "12.24.2", + "version": "12.24.3", "license": "SSPL", "dependencies": { "ampersand-model": "^8.0.1", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "chai": "^4.3.4", "depcheck": "^1.4.1", @@ -49953,17 +49953,17 @@ } }, "packages/mongodb-query-util": { - "version": "2.2.7", + "version": "2.2.8", "license": "SSPL", "dependencies": { "bson": "^6.7.0", "lodash": "^4.17.21" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -50196,20 +50196,20 @@ }, "packages/my-queries-storage": { "name": "@mongodb-js/my-queries-storage", - "version": "0.15.3", + "version": "0.16.0", "license": "SSPL", "dependencies": { - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-user-data": "^0.3.6", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-user-data": "^0.3.7", "bson": "^6.7.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -50274,16 +50274,16 @@ }, "packages/reflux-state-mixin": { "name": "@mongodb-js/reflux-state-mixin", - "version": "1.0.6", + "version": "1.0.7", "license": "SSPL", "dependencies": { "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -50817,7 +50817,7 @@ }, "scripts": { "name": "@mongodb-js/compass-scripts", - "version": "0.16.20", + "version": "0.16.21", "license": "SSPL", "dependencies": { "@babel/core": "^7.24.3", @@ -50836,7 +50836,7 @@ "compass-scripts": "cli.js" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -56622,29 +56622,29 @@ "@mongodb-js/atlas-service": { "version": "file:packages/atlas-service", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "mocha": "^10.2.0", "nyc": "^15.1.0", @@ -56755,48 +56755,48 @@ "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", "bson": "^6.7.0", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", @@ -56845,15 +56845,15 @@ "@mongodb-js/compass-app-stores": { "version": "file:packages/compass-app-stores", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -56861,11 +56861,11 @@ "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -56900,19 +56900,19 @@ "@mongodb-js/compass-collection": { "version": "file:packages/compass-collection", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-constants": "^0.10.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -56921,13 +56921,13 @@ "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", + "mongodb-collection-model": "^5.23.3", "mongodb-ns": "^2.4.2", "numeral": "^2.0.6", "nyc": "^15.1.0", @@ -57015,11 +57015,11 @@ "@leafygreen-ui/tokens": "^2.5.1", "@leafygreen-ui/tooltip": "^11.1.0", "@leafygreen-ui/typography": "^18.2.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@react-aria/interactions": "^3.9.1", "@react-aria/utils": "^3.13.1", "@react-aria/visually-hidden": "^3.3.1", @@ -57031,7 +57031,7 @@ "chai": "^4.3.4", "eslint": "^7.25.0", "focus-trap-react": "^9.0.2", - "hadron-document": "^8.6.2", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "is-electron-renderer": "^2.0.1", "lodash": "^4.17.21", @@ -57077,25 +57077,25 @@ "@mongodb-js/compass-connection-import-export": { "version": "file:packages/compass-connection-import-export", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", - "hadron-ipc": "^3.2.22", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "mocha": "^10.2.0", "nyc": "^15.1.0", @@ -57132,19 +57132,19 @@ "@mongodb-js/compass-connections": { "version": "file:packages/compass-connections", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57153,16 +57153,16 @@ "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "nyc": "^15.1.0", "prettier": "^2.7.1", "react": "^17.0.2", @@ -57201,16 +57201,16 @@ "@mongodb-js/compass-connections-navigation": { "version": "file:packages/compass-connections-navigation", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57220,7 +57220,7 @@ "@types/react-window": "^1.8.5", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -57262,46 +57262,46 @@ "@mongodb-js/compass-crud": { "version": "file:packages/compass-crud", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/reflux-state-mixin": "^1.0.6", + "@mongodb-js/reflux-state-mixin": "^1.0.7", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/reflux": "^6.4.3", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", "bson": "^6.7.0", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "jsondiffpatch": "^0.5.0", "lodash": "^4.17.21", "mocha": "^10.2.0", - "mongodb-data-service": "^22.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-data-service": "^22.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "nyc": "^15.1.0", @@ -57317,32 +57317,32 @@ "@mongodb-js/compass-databases-collections": { "version": "file:packages/databases-collections", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/databases-collections-list": "^1.38.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/databases-collections-list": "^1.39.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "nyc": "^15.1.0", @@ -57391,12 +57391,12 @@ "@codemirror/state": "^6.1.4", "@codemirror/view": "^6.7.1", "@lezer/highlight": "^1.2.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/prettier": "^2.7.1", @@ -57441,23 +57441,23 @@ "@mongodb-js/compass-explain-plan": { "version": "file:packages/compass-explain-plan", "requires": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", "d3-flextree": "^2.1.2", "d3-hierarchy": "^3.1.2", @@ -57465,7 +57465,7 @@ "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", @@ -57511,25 +57511,25 @@ "@mongodb-js/compass-export-to-language": { "version": "file:packages/compass-export-to-language", "requires": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "bson-transpilers": "^3.0.8", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "bson-transpilers": "^3.0.9", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", @@ -57568,13 +57568,13 @@ "@mongodb-js/compass-field-store": { "version": "file:packages/compass-field-store", "requires": { - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -57582,7 +57582,7 @@ "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb-schema": "^12.2.0", @@ -57622,12 +57622,12 @@ "@mongodb-js/compass-find-in-page": { "version": "file:packages/compass-find-in-page", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57639,8 +57639,8 @@ "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -57681,15 +57681,15 @@ "@mongodb-js/compass-generative-ai": { "version": "file:packages/compass-generative-ai", "requires": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -57697,11 +57697,11 @@ "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "mongodb": "^6.8.0", "mongodb-schema": "^12.2.0", @@ -57762,19 +57762,19 @@ "version": "file:packages/compass-import-export", "requires": { "@electron/remote": "^2.1.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", @@ -57788,19 +57788,19 @@ "bson": "^6.7.0", "chai": "^4.3.6", "chai-as-promised": "^7.1.1", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", @@ -57846,35 +57846,35 @@ "@mongodb-js/compass-indexes": { "version": "file:packages/compass-indexes", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "numeral": "^2.0.6", "nyc": "^15.1.0", @@ -57921,16 +57921,16 @@ "@mongodb-js/compass-intercom": { "version": "file:packages/compass-intercom", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", @@ -58024,10 +58024,10 @@ "@mongodb-js/compass-logging": { "version": "file:packages/compass-logging", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/debug": "^4.1.9", "@types/mocha": "^9.0.0", @@ -58036,8 +58036,8 @@ "debug": "^4.3.4", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "is-electron-renderer": "^2.0.1", "mocha": "^10.2.0", "mongodb-log-writer": "^1.4.2", @@ -58075,15 +58075,15 @@ "@mongodb-js/compass-maybe-protect-connection-string": { "version": "file:packages/compass-maybe-protect-connection-string", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", @@ -58122,38 +58122,38 @@ "@mongodb-js/compass-query-bar": { "version": "file:packages/compass-query-bar", "requires": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "nyc": "^15.1.0", "react": "^17.0.2", @@ -58191,20 +58191,20 @@ "@mongodb-js/compass-saved-aggregations-queries": { "version": "file:packages/compass-saved-aggregations-queries", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -58213,12 +58213,12 @@ "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "fuse.js": "^6.5.3", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", @@ -58260,21 +58260,21 @@ "@mongodb-js/compass-schema": { "version": "file:packages/compass-schema", "requires": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/reflux-state-mixin": "^1.0.6", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/reflux-state-mixin": "^1.0.7", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", @@ -58283,13 +58283,13 @@ "@types/react-dom": "^17.0.10", "bson": "^6.7.0", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "leaflet": "^1.5.1", "leaflet-defaulticon-compatibility": "^0.1.1", "leaflet-draw": "^1.0.4", @@ -58297,7 +58297,7 @@ "mocha": "^10.2.0", "moment": "^2.29.4", "mongodb": "^6.8.0", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "numeral": "^1.5.6", "nyc": "^15.1.0", @@ -58337,33 +58337,33 @@ "@mongodb-js/compass-schema-validation": { "version": "file:packages/compass-schema-validation", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "javascript-stringify": "^2.0.1", "lodash": "^4.17.21", "mocha": "^10.2.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "nyc": "^15.1.0", @@ -58382,7 +58382,7 @@ "version": "file:scripts", "requires": { "@babel/core": "^7.24.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/monorepo-tools": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", "commander": "^11.0.0", @@ -58762,15 +58762,15 @@ "@mongodb-js/compass-serverstats": { "version": "file:packages/compass-serverstats", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/enzyme": "^3.10.14", "chai": "^4.1.2", @@ -58781,7 +58781,7 @@ "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb-ns": "^2.4.2", @@ -58809,15 +58809,15 @@ "@mongodb-js/compass-settings": { "version": "file:packages/compass-settings", "requires": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -58825,12 +58825,12 @@ "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -58871,30 +58871,30 @@ "@mongodb-js/compass-shell": { "version": "file:packages/compass-shell", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@mongosh/browser-repl": "^2.3.1", "@mongosh/logging": "^2.3.1", "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", "chai": "^4.2.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "nyc": "^15.1.0", "react": "^17.0.2", @@ -59203,22 +59203,22 @@ "@mongodb-js/compass-sidebar": { "version": "file:packages/compass-sidebar", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-connections-navigation": "^1.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-connections-navigation": "^1.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -59226,16 +59226,16 @@ "@types/react-dom": "^17.0.10", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-data-service": "^22.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -59276,11 +59276,11 @@ "@mongodb-js/compass-telemetry": { "version": "file:packages/compass-telemetry", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -59288,8 +59288,8 @@ "depcheck": "^1.4.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -59382,10 +59382,10 @@ "@mongodb-js/compass-test-server": { "version": "file:packages/compass-test-server", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.1", @@ -59424,12 +59424,12 @@ "@mongodb-js/compass-user-data": { "version": "file:packages/compass-user-data", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -59487,10 +59487,10 @@ "version": "file:packages/compass-utils", "requires": { "@electron/remote": "^2.1.2", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -59533,34 +59533,34 @@ "@mongodb-js/compass-web": { "version": "file:packages/compass-web", "requires": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -59572,7 +59572,7 @@ "bson": "^6.2.0", "buffer": "^6.0.3", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "crypto-browserify": "^3.12.0", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -59582,13 +59582,13 @@ "events": "^3.3.0", "express": "^4.20.0", "express-http-proxy": "^2.0.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "is-ip": "^5.0.1", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "os-browserify": "^0.3.0", @@ -59749,27 +59749,27 @@ "@mongodb-js/compass-welcome": { "version": "file:packages/compass-welcome", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -59808,15 +59808,15 @@ "@mongodb-js/compass-workspaces": { "version": "file:packages/compass-workspaces", "requires": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -59825,15 +59825,15 @@ "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -59950,15 +59950,15 @@ "@mongodb-js/connection-form": { "version": "file:packages/connection-form", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -59966,7 +59966,7 @@ "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", "eslint": "^7.25.0", @@ -59975,7 +59975,7 @@ "mongodb": "^6.8.0", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -60011,10 +60011,10 @@ "@mongodb-js/connection-info": { "version": "file:packages/connection-info", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -60027,7 +60027,7 @@ "mocha": "^10.2.0", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "nyc": "^15.1.0", "prettier": "^2.7.1", "sinon": "^17.0.1", @@ -60137,26 +60137,26 @@ "@mongodb-js/connection-storage": { "version": "file:packages/connection-storage", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "bson": "^6.7.0", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "electron": "^30.5.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "keytar": "^7.9.0", "lodash": "^4.17.21", "mocha": "^10.2.0", @@ -60193,23 +60193,23 @@ "@mongodb-js/databases-collections-list": { "version": "file:packages/databases-collections-list", "requires": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", "@types/react": "^17.0.5", "@types/sinon-chai": "^3.2.5", "chai": "^4.3.4", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "depcheck": "^1.4.1", "eslint": "^7.25.0", "mocha": "^10.2.0", @@ -60311,7 +60311,7 @@ "@babel/core": "^7.21.4", "@babel/eslint-parser": "^7.14.3", "@mongodb-js/eslint-config-devtools": "^0.9.9", - "@mongodb-js/eslint-plugin-compass": "^1.0.20", + "@mongodb-js/eslint-plugin-compass": "^1.0.21", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "eslint-config-prettier": "^8.3.0", @@ -60408,7 +60408,7 @@ "@mongodb-js/eslint-plugin-compass": { "version": "file:configs/eslint-plugin-compass", "requires": { - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -60420,11 +60420,11 @@ "@mongodb-js/explain-plan-helper": { "version": "file:packages/explain-plan-helper", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/shell-bson-parser": "^1.1.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -60824,12 +60824,12 @@ "@mongodb-js/my-queries-storage": { "version": "file:packages/my-queries-storage", "requires": { - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -60838,7 +60838,7 @@ "depcheck": "^1.4.1", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mocha": "^10.2.0", "nyc": "^15.1.0", "prettier": "^2.7.1", @@ -60971,10 +60971,10 @@ "@mongodb-js/reflux-state-mixin": { "version": "file:packages/reflux-state-mixin", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", @@ -61202,10 +61202,10 @@ "@mongodb-js/testing-library-compass": { "version": "file:configs/testing-library-compass", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^7.0.2", "@testing-library/user-event": "^13.5.0", @@ -61322,9 +61322,9 @@ "@babel/preset-typescript": "^7.21.4", "@babel/runtime": "^7.21.0", "@cerner/duplicate-package-checker-webpack-plugin": "^2.1.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@types/cli-progress": "^3.9.2", "@types/html-webpack-plugin": "^3.2.9", @@ -68416,7 +68416,7 @@ "bson-transpilers": { "version": "file:packages/bson-transpilers", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "antlr4": "4.7.2", "bson": "^6.2.0", "chai": "^4.3.4", @@ -69132,12 +69132,12 @@ "version": "file:packages/compass-e2e-tests", "requires": { "@electron/rebuild": "^3.6.0", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/oidc-mock-provider": "^0.9.3", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai-as-promised": "^7.1.4", "@types/cross-spawn": "^6.0.2", "@types/puppeteer": "^5.4.4", @@ -69146,7 +69146,7 @@ "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "clipboardy": "^2.3.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -69154,7 +69154,7 @@ "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", - "hadron-build": "^25.5.9", + "hadron-build": "^25.5.10", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", @@ -69368,20 +69368,20 @@ "compass-preferences-model": { "version": "file:packages/compass-preferences-model", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-user-data": "^0.3.6", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-user-data": "^0.3.7", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/testing-library-compass": "^1.0.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/testing-library-compass": "^1.0.1", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "bson": "^6.7.0", "chai": "^4.3.6", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "mocha": "^10.2.0", @@ -75306,11 +75306,11 @@ "hadron-app-registry": { "version": "file:packages/hadron-app-registry", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", @@ -75358,7 +75358,7 @@ "@mongodb-js/devtools-github-repo": "^1.4.1", "@mongodb-js/dl-center": "^1.0.1", "@mongodb-js/electron-wix-msi": "^3.0.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/signing-utils": "^0.3.1", "@npmcli/arborist": "^6.2.0", "@octokit/rest": "^18.6.2", @@ -75952,10 +75952,10 @@ "hadron-document": { "version": "file:packages/hadron-document", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", "depcheck": "^1.4.1", @@ -76073,10 +76073,10 @@ "hadron-ipc": { "version": "file:packages/hadron-ipc", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/is-electron-renderer": "^2.0.1", "@types/mocha": "^9.0.0", @@ -81071,7 +81071,7 @@ "mongodb-collection-model": { "version": "file:packages/collection-model", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", @@ -81079,7 +81079,7 @@ "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "xvfb-maybe": "^0.2.1" } @@ -81089,49 +81089,49 @@ "requires": { "@electron/rebuild": "^3.6.0", "@electron/remote": "^2.1.2", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-find-in-page": "^4.30.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-import-export": "^7.40.0", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-saved-aggregations-queries": "^1.41.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-serverstats": "^16.40.0", - "@mongodb-js/compass-settings": "^0.40.2", - "@mongodb-js/compass-shell": "^3.40.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-find-in-page": "^4.30.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-import-export": "^7.41.0", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-saved-aggregations-queries": "^1.42.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-serverstats": "^16.41.0", + "@mongodb-js/compass-settings": "^0.40.3", + "@mongodb-js/compass-shell": "^3.41.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/get-os-info": "^0.3.24", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-downloader": "^0.3.5", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/sbom-tools": "^0.7.0", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@mongosh/node-runtime-worker-thread": "^2.3.1", "@segment/analytics-node": "^1.1.4", "ampersand-view": "^9.0.0", @@ -81139,7 +81139,7 @@ "chalk": "^4.1.2", "clean-stack": "^2.0.0", "clipboard": "^2.0.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -81149,9 +81149,9 @@ "electron-squirrel-startup": "^1.0.1", "ensure-error": "^3.0.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-build": "^25.5.9", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-build": "^25.5.10", + "hadron-ipc": "^3.2.23", "kerberos": "^2.1.1", "keytar": "^7.9.0", "local-links": "^1.4.0", @@ -81163,8 +81163,8 @@ "mongodb-client-encryption": "^6.1.0", "mongodb-cloud-info": "^2.1.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-data-service": "^22.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-log-writer": "^1.4.2", "mongodb-ns": "^2.4.2", "os-dns-native": "^1.2.1", @@ -81266,17 +81266,17 @@ "mongodb-data-service": { "version": "file:packages/data-service", "requires": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-docker-test-envs": "^1.3.3", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/lodash": "^4.14.188", "@types/whatwg-url": "^8.2.1", "bson": "^6.7.0", @@ -81464,15 +81464,15 @@ "mongodb-database-model": { "version": "file:packages/database-model", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", "depcheck": "^1.4.1", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3" } }, "mongodb-download-url": { @@ -81504,16 +81504,16 @@ "mongodb-instance-model": { "version": "file:packages/instance-model", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "ampersand-model": "^8.0.1", "chai": "^4.3.4", "depcheck": "^1.4.1", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3" } }, "mongodb-js-cli": { @@ -81794,10 +81794,10 @@ "mongodb-query-util": { "version": "file:packages/mongodb-query-util", "requires": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index f81a8ba2a89..b210659fa2f 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.28.2", + "version": "0.28.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -55,11 +55,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -73,18 +73,18 @@ "typescript": "^5.0.4" }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/oidc-plugin": "^1.1.1", - "hadron-app-registry": "^9.2.5", - "compass-preferences-model": "^2.28.2", + "hadron-app-registry": "^9.2.6", + "compass-preferences-model": "^2.28.3", "electron": "^30.5.1", - "hadron-ipc": "^3.2.22", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "react": "^17.0.2", "react-redux": "^8.1.3", diff --git a/packages/bson-transpilers/package.json b/packages/bson-transpilers/package.json index 0fde56fed58..a75b7cfd2e0 100644 --- a/packages/bson-transpilers/package.json +++ b/packages/bson-transpilers/package.json @@ -1,6 +1,6 @@ { "name": "bson-transpilers", - "version": "3.0.8", + "version": "3.0.9", "apiVersion": "0.0.1", "description": "Source to source compilers using ANTLR", "contributors": [ @@ -32,7 +32,7 @@ }, "license": "SSPL", "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "chai": "^4.3.4", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/collection-model/package.json b/packages/collection-model/package.json index 4218c4d0b3c..32ab151930f 100644 --- a/packages/collection-model/package.json +++ b/packages/collection-model/package.json @@ -2,7 +2,7 @@ "name": "mongodb-collection-model", "description": "MongoDB collection model", "author": "Lucas Hrabovsky ", - "version": "5.23.2", + "version": "5.23.3", "bugs": { "url": "https://jira.mongodb.org/projects/COMPASS/issues", "email": "compass@mongodb.com" @@ -31,11 +31,11 @@ "dependencies": { "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", diff --git a/packages/compass-aggregations/package.json b/packages/compass-aggregations/package.json index 3cb147bd4c9..bf151659c59 100644 --- a/packages/compass-aggregations/package.json +++ b/packages/compass-aggregations/package.json @@ -2,7 +2,7 @@ "name": "@mongodb-js/compass-aggregations", "description": "Compass Aggregation Pipeline Builder", "private": true, - "version": "9.43.0", + "version": "9.44.0", "main": "dist/index.js", "compass:main": "src/index.ts", "types": "dist/index.d.ts", @@ -32,11 +32,11 @@ }, "license": "SSPL", "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", @@ -60,34 +60,34 @@ "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/explain-plan-helper": "^1.2.2", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/explain-plan-helper": "^1.2.3", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/shell-bson-parser": "^1.1.2", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", diff --git a/packages/compass-app-stores/package.json b/packages/compass-app-stores/package.json index d02b5324898..c34959021e5 100644 --- a/packages/compass-app-stores/package.json +++ b/packages/compass-app-stores/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "7.27.0", + "version": "7.28.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -53,11 +53,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -73,14 +73,14 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/connection-info": "^0.7.0", - "hadron-app-registry": "^9.2.5", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/connection-info": "^0.8.0", + "hadron-app-registry": "^9.2.6", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2" }, diff --git a/packages/compass-collection/package.json b/packages/compass-collection/package.json index 3888462efe4..a108e40be97 100644 --- a/packages/compass-collection/package.json +++ b/packages/compass-collection/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "4.40.0", + "version": "4.41.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,17 +48,17 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", "@mongodb-js/mongodb-constants": "^0.10.2", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "mongodb-collection-model": "^5.23.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "mongodb-collection-model": "^5.23.3", "mongodb-ns": "^2.4.2", "numeral": "^2.0.6", "react": "^17.0.2", @@ -67,11 +67,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-components/package.json b/packages/compass-components/package.json index 6d9348e83a1..6146771023e 100644 --- a/packages/compass-components/package.json +++ b/packages/compass-components/package.json @@ -1,6 +1,6 @@ { "name": "@mongodb-js/compass-components", - "version": "1.29.3", + "version": "1.29.4", "description": "React Components used in Compass", "license": "SSPL", "main": "lib/index.js", @@ -78,7 +78,7 @@ "@react-aria/visually-hidden": "^3.3.1", "bson": "^6.7.0", "focus-trap-react": "^9.0.2", - "hadron-document": "^8.6.2", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "is-electron-renderer": "^2.0.1", "lodash": "^4.17.21", @@ -92,11 +92,11 @@ }, "devDependencies": { "@emotion/css": "^11.11.2", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-connection-import-export/package.json b/packages/compass-connection-import-export/package.json index 2bed3977899..9ae74b9211c 100644 --- a/packages/compass-connection-import-export/package.json +++ b/packages/compass-connection-import-export/package.json @@ -14,7 +14,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.37.0", + "version": "0.38.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -51,19 +51,19 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/connection-storage": "^0.20.0", - "compass-preferences-model": "^2.28.2", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/connection-storage": "^0.21.0", + "compass-preferences-model": "^2.28.3", + "hadron-ipc": "^3.2.23", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-connections-navigation/package.json b/packages/compass-connections-navigation/package.json index 6d33afc6345..0df6dd96fdd 100644 --- a/packages/compass-connections-navigation/package.json +++ b/packages/compass-connections-navigation/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.40.0", + "version": "1.41.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,23 +49,23 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "compass-preferences-model": "^2.28.3", "mongodb-build-info": "^1.7.2", "react": "^17.0.2", "react-virtualized-auto-sizer": "^1.0.6", "react-window": "^1.8.6" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-connections/package.json b/packages/compass-connections/package.json index 22e73398eb8..025ae2c07d8 100644 --- a/packages/compass-connections/package.json +++ b/packages/compass-connections/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.41.0", + "version": "1.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -51,32 +51,32 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 20a6de4210c..91db3cfa5a6 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "13.41.0", + "version": "13.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,12 +48,12 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", @@ -63,37 +63,37 @@ "enzyme": "^3.11.0", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "nyc": "^15.1.0", "react-dom": "^17.0.2", "sinon": "^8.1.1", "typescript": "^5.0.4" }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "@mongodb-js/my-queries-storage": "^0.15.3", - "@mongodb-js/reflux-state-mixin": "^1.0.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "@mongodb-js/my-queries-storage": "^0.16.0", + "@mongodb-js/reflux-state-mixin": "^1.0.7", "@mongodb-js/shell-bson-parser": "^1.1.2", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "hadron-type-checker": "^7.2.2", "jsondiffpatch": "^0.5.0", "lodash": "^4.17.21", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "prop-types": "^15.7.2", diff --git a/packages/compass-e2e-tests/package.json b/packages/compass-e2e-tests/package.json index 6486c047ff9..1c675f5eb3e 100644 --- a/packages/compass-e2e-tests/package.json +++ b/packages/compass-e2e-tests/package.json @@ -1,6 +1,6 @@ { "name": "compass-e2e-tests", - "version": "1.26.2", + "version": "1.27.0", "private": true, "description": "E2E test suite for Compass app that follows smoke tests / feature testing matrix", "scripts": { @@ -34,12 +34,12 @@ }, "devDependencies": { "@electron/rebuild": "^3.6.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/oidc-mock-provider": "^0.9.3", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai-as-promised": "^7.1.4", "@types/cross-spawn": "^6.0.2", "@types/puppeteer": "^5.4.4", @@ -48,7 +48,7 @@ "chai": "^4.3.4", "chai-as-promised": "^7.1.1", "clipboardy": "^2.3.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "cross-spawn": "^7.0.3", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -56,7 +56,7 @@ "eslint": "^7.25.0", "fast-glob": "^3.2.7", "glob": "^10.2.5", - "hadron-build": "^25.5.9", + "hadron-build": "^25.5.10", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", diff --git a/packages/compass-editor/package.json b/packages/compass-editor/package.json index 3bdba87291d..40dbe0a8bf4 100644 --- a/packages/compass-editor/package.json +++ b/packages/compass-editor/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.29.3", + "version": "0.30.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -46,10 +46,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/prettier": "^2.7.1", @@ -72,7 +72,7 @@ "@codemirror/state": "^6.1.4", "@codemirror/view": "^6.7.1", "@lezer/highlight": "^1.2.0", - "@mongodb-js/compass-components": "^1.29.3", + "@mongodb-js/compass-components": "^1.29.4", "@mongodb-js/mongodb-constants": "^0.10.0", "mongodb-query-parser": "^4.2.3", "polished": "^4.2.2", diff --git a/packages/compass-explain-plan/package.json b/packages/compass-explain-plan/package.json index 070fa681966..66bef2eebcc 100644 --- a/packages/compass-explain-plan/package.json +++ b/packages/compass-explain-plan/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "6.41.0", + "version": "6.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,11 +48,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/d3-flextree": "^2.1.0", "@types/d3-hierarchy": "^3.1.2", @@ -69,18 +69,18 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/explain-plan-helper": "^1.2.2", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/explain-plan-helper": "^1.2.3", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", "d3-flextree": "^2.1.2", "d3-hierarchy": "^3.1.2", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", "react": "^17.0.2", diff --git a/packages/compass-export-to-language/package.json b/packages/compass-export-to-language/package.json index 0411f47c8b5..9a8aeeb7b85 100644 --- a/packages/compass-export-to-language/package.json +++ b/packages/compass-export-to-language/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "9.17.0", + "version": "9.18.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,28 +48,28 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", "@mongodb-js/shell-bson-parser": "^1.1.2", - "bson-transpilers": "^3.0.8", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "bson-transpilers": "^3.0.9", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1" }, "devDependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.3.6", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/compass-field-store/package.json b/packages/compass-field-store/package.json index 2783bf45a58..282422499b7 100644 --- a/packages/compass-field-store/package.json +++ b/packages/compass-field-store/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "9.16.0", + "version": "9.17.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,11 +49,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -69,9 +69,9 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-schema": "^12.2.0", "react": "^17.0.2", diff --git a/packages/compass-find-in-page/package.json b/packages/compass-find-in-page/package.json index cf700ed36dd..9fc848d89a8 100644 --- a/packages/compass-find-in-page/package.json +++ b/packages/compass-find-in-page/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "4.30.3", + "version": "4.30.4", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,11 +48,11 @@ }, "license": "SSPL", "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -73,9 +73,9 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-components": "^1.29.4", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", diff --git a/packages/compass-generative-ai/package.json b/packages/compass-generative-ai/package.json index 1a099ff4dd7..d78f596e021 100644 --- a/packages/compass-generative-ai/package.json +++ b/packages/compass-generative-ai/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.22.2", + "version": "0.22.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -52,23 +52,23 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "mongodb": "^6.8.0", "mongodb-schema": "^12.2.0", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-import-export/package.json b/packages/compass-import-export/package.json index c789f1e7cd2..7b3f869a1a2 100644 --- a/packages/compass-import-export/package.json +++ b/packages/compass-import-export/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "7.40.0", + "version": "7.41.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,23 +49,23 @@ }, "dependencies": { "@electron/remote": "^2.1.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "electron": "^30.5.1", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", + "hadron-ipc": "^3.2.23", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "mongodb-schema": "^12.2.0", @@ -78,12 +78,12 @@ "strip-bom-stream": "^4.0.0" }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/compass-test-server": "^0.1.22", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-as-promised": "^7.1.4", "@types/chai-dom": "^0.0.10", diff --git a/packages/compass-indexes/package.json b/packages/compass-indexes/package.json index 65ce858d487..e2295d05338 100644 --- a/packages/compass-indexes/package.json +++ b/packages/compass-indexes/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "5.40.0", + "version": "5.41.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,11 +48,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -66,24 +66,24 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", "@mongodb-js/mongodb-constants": "^0.10.0", "@mongodb-js/shell-bson-parser": "^1.1.2", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "numeral": "^2.0.6", "react": "^17.0.2", diff --git a/packages/compass-intercom/package.json b/packages/compass-intercom/package.json index 433e05b4aa6..524df6d2db3 100644 --- a/packages/compass-intercom/package.json +++ b/packages/compass-intercom/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.12.2", + "version": "0.12.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -50,10 +50,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -67,7 +67,7 @@ "typescript": "^5.0.4" }, "dependencies": { - "compass-preferences-model": "^2.28.2", - "@mongodb-js/compass-logging": "^1.4.6" + "compass-preferences-model": "^2.28.3", + "@mongodb-js/compass-logging": "^1.4.7" } } diff --git a/packages/compass-logging/package.json b/packages/compass-logging/package.json index d5e8a557972..e922efd6e19 100644 --- a/packages/compass-logging/package.json +++ b/packages/compass-logging/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.4.6", + "version": "1.4.7", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -52,17 +52,17 @@ }, "dependencies": { "debug": "^4.3.4", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "is-electron-renderer": "^2.0.1", "mongodb-log-writer": "^1.4.2", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/debug": "^4.1.9", "@types/mocha": "^9.0.0", diff --git a/packages/compass-maybe-protect-connection-string/package.json b/packages/compass-maybe-protect-connection-string/package.json index 62faec51657..7e79304f508 100644 --- a/packages/compass-maybe-protect-connection-string/package.json +++ b/packages/compass-maybe-protect-connection-string/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.26.2", + "version": "0.26.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -50,14 +50,14 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "mongodb-connection-string-url": "^3.0.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/compass-preferences-model/package.json b/packages/compass-preferences-model/package.json index b0265f1a6ba..3865724a107 100644 --- a/packages/compass-preferences-model/package.json +++ b/packages/compass-preferences-model/package.json @@ -2,7 +2,7 @@ "name": "compass-preferences-model", "description": "Compass preferences model", "author": "Lucas Hrabovsky ", - "version": "2.28.2", + "version": "2.28.3", "bugs": { "url": "https://jira.mongodb.org/projects/COMPASS/issues", "email": "compass@mongodb.com" @@ -49,12 +49,12 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-user-data": "^0.3.6", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-user-data": "^0.3.7", "@mongodb-js/devtools-proxy-support": "^0.3.9", "bson": "^6.7.0", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "js-yaml": "^4.1.0", "lodash": "^4.17.21", "react": "^17.0.2", @@ -62,9 +62,9 @@ "zod": "^3.22.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/testing-library-compass": "^1.0.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/testing-library-compass": "^1.0.1", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", diff --git a/packages/compass-query-bar/package.json b/packages/compass-query-bar/package.json index 7b68a9fa721..f8816d40a1b 100644 --- a/packages/compass-query-bar/package.json +++ b/packages/compass-query-bar/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "8.42.0", + "version": "8.43.0", "homepage": "https://github.com/mongodb-js/compass", "license": "SSPL", "bugs": { @@ -48,11 +48,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -66,27 +66,27 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", "@mongodb-js/mongodb-constants": "^0.10.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "react": "^17.0.2", "react-redux": "^8.1.3", diff --git a/packages/compass-saved-aggregations-queries/package.json b/packages/compass-saved-aggregations-queries/package.json index aa36f48b101..3a83612b5a9 100644 --- a/packages/compass-saved-aggregations-queries/package.json +++ b/packages/compass-saved-aggregations-queries/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.41.0", + "version": "1.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,19 +48,19 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/my-queries-storage": "^0.16.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "fuse.js": "^6.5.3", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -68,11 +68,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index b21ca8ec25f..1d50ede6c68 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "6.41.0", + "version": "6.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,37 +48,37 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", "electron-mocha": "^12.2.0", "enzyme": "^3.11.0", "eslint": "^7.25.0", - "hadron-ipc": "^3.2.22", + "hadron-ipc": "^3.2.23", "mocha": "^10.2.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "nyc": "^15.1.0", "react-dom": "^17.0.2", "sinon": "^8.1.1", "typescript": "^5.0.4" }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "javascript-stringify": "^2.0.1", "lodash": "^4.17.21", "mongodb-ns": "^2.4.2", diff --git a/packages/compass-schema/package.json b/packages/compass-schema/package.json index cbc53ddb822..095ecd8b4b9 100644 --- a/packages/compass-schema/package.json +++ b/packages/compass-schema/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "6.42.0", + "version": "6.43.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,12 +48,12 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/leaflet": "^1.9.8", "@types/leaflet-draw": "^1.0.11", @@ -72,26 +72,26 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/connection-storage": "^0.21.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "d3": "^3.5.17", - "hadron-app-registry": "^9.2.5", - "hadron-document": "^8.6.2", + "hadron-app-registry": "^9.2.6", + "hadron-document": "^8.6.3", "leaflet": "^1.5.1", "leaflet-defaulticon-compatibility": "^0.1.1", "leaflet-draw": "^1.0.4", "lodash": "^4.17.21", "moment": "^2.29.4", "mongodb": "^6.8.0", - "mongodb-query-util": "^2.2.7", + "mongodb-query-util": "^2.2.8", "mongodb-schema": "^12.2.0", "numeral": "^1.5.6", "prop-types": "^15.7.2", @@ -99,7 +99,7 @@ "react-leaflet": "^2.4.0", "react-leaflet-draw": "^0.19.0", "reflux": "^0.4.1", - "@mongodb-js/reflux-state-mixin": "^1.0.6" + "@mongodb-js/reflux-state-mixin": "^1.0.7" }, "is_compass_plugin": true } diff --git a/packages/compass-serverstats/package.json b/packages/compass-serverstats/package.json index 9478e2c9408..bf7595e4d96 100644 --- a/packages/compass-serverstats/package.json +++ b/packages/compass-serverstats/package.json @@ -2,7 +2,7 @@ "name": "@mongodb-js/compass-serverstats", "description": "Compass Real Time", "private": true, - "version": "16.40.0", + "version": "16.41.0", "main": "dist/index.js", "compass:main": "src/index.ts", "exports": { @@ -30,15 +30,15 @@ }, "license": "SSPL", "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", "d3": "^3.5.17", "d3-timer": "^1.0.3", "debug": "^4.3.4", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb-ns": "^2.4.2", "prop-types": "^15.7.2", @@ -46,10 +46,10 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", "@types/enzyme": "^3.10.14", "chai": "^4.1.2", diff --git a/packages/compass-settings/package.json b/packages/compass-settings/package.json index 82659a3cbb3..54b2a249760 100644 --- a/packages/compass-settings/package.json +++ b/packages/compass-settings/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.40.2", + "version": "0.40.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,24 +49,24 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-logging": "^1.4.6", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-logging": "^1.4.7", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index a8b6218e3d3..228e6a40be6 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -6,7 +6,7 @@ "email": "compass@mongodb.com" }, "private": true, - "version": "3.40.0", + "version": "3.41.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,30 +49,30 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-workspaces": "^0.22.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-workspaces": "^0.23.0", "@mongosh/browser-repl": "^2.3.1", "@mongosh/logging": "^2.3.1", "@mongosh/node-runtime-worker-thread": "^2.3.1", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2", "react-redux": "^8.1.3", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", diff --git a/packages/compass-sidebar/package.json b/packages/compass-sidebar/package.json index bfd7c9368fc..2322dccac95 100644 --- a/packages/compass-sidebar/package.json +++ b/packages/compass-sidebar/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "5.41.0", + "version": "5.42.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,22 +48,22 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-connections-navigation": "^1.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.2", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-form": "^1.39.0", - "@mongodb-js/connection-info": "^0.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-connections-navigation": "^1.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-form": "^1.40.0", + "@mongodb-js/connection-info": "^0.8.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", "mongodb": "^6.8.0", - "mongodb-instance-model": "^12.24.2", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -71,11 +71,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -87,7 +87,7 @@ "electron-mocha": "^12.2.0", "eslint": "^7.25.0", "mocha": "^10.2.0", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "nyc": "^15.1.0", "prettier": "^2.7.1", "react-dom": "^17.0.2", diff --git a/packages/compass-telemetry/package.json b/packages/compass-telemetry/package.json index ea608477df7..77e464ae26b 100644 --- a/packages/compass-telemetry/package.json +++ b/packages/compass-telemetry/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.1.6", + "version": "1.1.7", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -52,16 +52,16 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "@mongodb-js/compass-logging": "^1.4.7", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/compass-test-server/package.json b/packages/compass-test-server/package.json index d4422bea38d..fc93a75b2a7 100644 --- a/packages/compass-test-server/package.json +++ b/packages/compass-test-server/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.1.21", + "version": "0.1.22", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -53,10 +53,10 @@ "mongodb-runner": "^5.6.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.1", diff --git a/packages/compass-user-data/package.json b/packages/compass-user-data/package.json index dcce5efaaf8..835e8f4f0c2 100644 --- a/packages/compass-user-data/package.json +++ b/packages/compass-user-data/package.json @@ -12,7 +12,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.3.6", + "version": "0.3.7", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,16 +49,16 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-utils": "^0.6.12", "write-file-atomic": "^5.0.1", "zod": "^3.22.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/compass-utils/package.json b/packages/compass-utils/package.json index 83d9a9c0d27..cadde61f2b8 100644 --- a/packages/compass-utils/package.json +++ b/packages/compass-utils/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.6.11", + "version": "0.6.12", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -50,10 +50,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index 41502cf3ef6..ffd8909a0df 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -14,7 +14,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.7.0", + "version": "0.7.1", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -62,34 +62,34 @@ "react-dom": "^17.0.2" }, "devDependencies": { - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-storage": "^0.20.0", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -101,7 +101,7 @@ "bson": "^6.2.0", "buffer": "^6.0.3", "chai": "^4.3.6", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "crypto-browserify": "^3.12.0", "debug": "^4.3.4", "depcheck": "^1.4.1", @@ -111,13 +111,13 @@ "events": "^3.3.0", "express": "^4.20.0", "express-http-proxy": "^2.0.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "is-ip": "^5.0.1", "lodash": "^4.17.21", "mocha": "^10.2.0", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-ns": "^2.4.2", "nyc": "^15.1.0", "os-browserify": "^0.3.0", diff --git a/packages/compass-welcome/package.json b/packages/compass-welcome/package.json index e89cf93b014..1d1fa3643bb 100644 --- a/packages/compass-welcome/package.json +++ b/packages/compass-welcome/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.39.0", + "version": "0.40.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -49,23 +49,23 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2", "redux": "^4.2.1", "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass-workspaces/package.json b/packages/compass-workspaces/package.json index 4e6840a7cf6..ba026e845ea 100644 --- a/packages/compass-workspaces/package.json +++ b/packages/compass-workspaces/package.json @@ -11,7 +11,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.22.0", + "version": "0.23.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -51,16 +51,16 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-logging": "^1.4.6", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-logging": "^1.4.7", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -68,11 +68,11 @@ "redux-thunk": "^2.4.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/compass/package.json b/packages/compass/package.json index 227436014b4..327751e90d6 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -191,55 +191,55 @@ "devDependencies": { "@electron/rebuild": "^3.6.0", "@electron/remote": "^2.1.2", - "@mongodb-js/atlas-service": "^0.28.2", - "@mongodb-js/compass-aggregations": "^9.43.0", - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-collection": "^4.40.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connection-import-export": "^0.37.0", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-crud": "^13.41.0", - "@mongodb-js/compass-databases-collections": "^1.40.0", - "@mongodb-js/compass-explain-plan": "^6.41.0", - "@mongodb-js/compass-export-to-language": "^9.17.0", - "@mongodb-js/compass-field-store": "^9.16.0", - "@mongodb-js/compass-find-in-page": "^4.30.3", - "@mongodb-js/compass-generative-ai": "^0.22.2", - "@mongodb-js/compass-import-export": "^7.40.0", - "@mongodb-js/compass-indexes": "^5.40.0", - "@mongodb-js/compass-intercom": "^0.12.2", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-query-bar": "^8.42.0", - "@mongodb-js/compass-saved-aggregations-queries": "^1.41.0", - "@mongodb-js/compass-schema": "^6.42.0", - "@mongodb-js/compass-schema-validation": "^6.41.0", - "@mongodb-js/compass-serverstats": "^16.40.0", - "@mongodb-js/compass-settings": "^0.40.2", - "@mongodb-js/compass-shell": "^3.40.0", - "@mongodb-js/compass-sidebar": "^5.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/compass-welcome": "^0.39.0", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "@mongodb-js/connection-storage": "^0.20.0", + "@mongodb-js/atlas-service": "^0.28.3", + "@mongodb-js/compass-aggregations": "^9.44.0", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-collection": "^4.41.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connection-import-export": "^0.38.0", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-crud": "^13.42.0", + "@mongodb-js/compass-databases-collections": "^1.41.0", + "@mongodb-js/compass-explain-plan": "^6.42.0", + "@mongodb-js/compass-export-to-language": "^9.18.0", + "@mongodb-js/compass-field-store": "^9.17.0", + "@mongodb-js/compass-find-in-page": "^4.30.4", + "@mongodb-js/compass-generative-ai": "^0.22.3", + "@mongodb-js/compass-import-export": "^7.41.0", + "@mongodb-js/compass-indexes": "^5.41.0", + "@mongodb-js/compass-intercom": "^0.12.3", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-query-bar": "^8.43.0", + "@mongodb-js/compass-saved-aggregations-queries": "^1.42.0", + "@mongodb-js/compass-schema": "^6.43.0", + "@mongodb-js/compass-schema-validation": "^6.42.0", + "@mongodb-js/compass-serverstats": "^16.41.0", + "@mongodb-js/compass-settings": "^0.40.3", + "@mongodb-js/compass-shell": "^3.41.0", + "@mongodb-js/compass-sidebar": "^5.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/compass-welcome": "^0.40.0", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "@mongodb-js/connection-storage": "^0.21.0", "@mongodb-js/devtools-proxy-support": "^0.3.9", - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/get-os-info": "^0.3.24", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/mongodb-downloader": "^0.3.5", - "@mongodb-js/my-queries-storage": "^0.15.3", + "@mongodb-js/my-queries-storage": "^0.16.0", "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/sbom-tools": "^0.7.0", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", - "@mongodb-js/webpack-config-compass": "^1.4.1", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", + "@mongodb-js/webpack-config-compass": "^1.4.2", "@segment/analytics-node": "^1.1.4", "ampersand-view": "^9.0.0", "chai": "^4.3.4", "chalk": "^4.1.2", "clean-stack": "^2.0.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "debug": "^4.3.4", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -249,9 +249,9 @@ "electron-squirrel-startup": "^1.0.1", "ensure-error": "^3.0.1", "eslint": "^7.25.0", - "hadron-app-registry": "^9.2.5", - "hadron-build": "^25.5.9", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-build": "^25.5.10", + "hadron-ipc": "^3.2.23", "local-links": "^1.4.0", "make-fetch-happen": "^8.0.14", "marky": "^1.2.1", @@ -259,8 +259,8 @@ "mongodb-build-info": "^1.7.2", "mongodb-cloud-info": "^2.1.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-data-service": "^22.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-log-writer": "^1.4.2", "mongodb-ns": "^2.4.2", "react": "^17.0.2", diff --git a/packages/connection-form/package.json b/packages/connection-form/package.json index 437d1966b81..b430adf76d7 100644 --- a/packages/connection-form/package.json +++ b/packages/connection-form/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.39.0", + "version": "1.40.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,25 +48,25 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/connection-info": "^0.8.0", "@mongodb-js/shell-bson-parser": "^1.1.2", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "lodash": "^4.17.21", "mongodb": "^6.8.0", "mongodb-build-info": "^1.7.2", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2", + "mongodb-data-service": "^22.23.3", "mongodb-query-parser": "^4.2.3", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/connection-info/package.json b/packages/connection-info/package.json index 971eb15e51b..6b16e011a5b 100644 --- a/packages/connection-info/package.json +++ b/packages/connection-info/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.7.0", + "version": "0.8.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -54,13 +54,13 @@ "lodash": "^4.17.21", "mongodb": "^6.8.0", "mongodb-connection-string-url": "^3.0.1", - "mongodb-data-service": "^22.23.2" + "mongodb-data-service": "^22.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/connection-storage/package.json b/packages/connection-storage/package.json index 9c2d11eac2c..3f82113aba6 100644 --- a/packages/connection-storage/package.json +++ b/packages/connection-storage/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.20.0", + "version": "0.21.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -56,26 +56,26 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-user-data": "^0.3.6", - "@mongodb-js/compass-utils": "^0.6.11", - "@mongodb-js/connection-info": "^0.7.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-user-data": "^0.3.7", + "@mongodb-js/compass-utils": "^0.6.12", + "@mongodb-js/connection-info": "^0.8.0", "bson": "^6.7.0", - "compass-preferences-model": "^2.28.2", + "compass-preferences-model": "^2.28.3", "electron": "^30.5.1", - "hadron-app-registry": "^9.2.5", - "hadron-ipc": "^3.2.22", + "hadron-app-registry": "^9.2.6", + "hadron-ipc": "^3.2.23", "keytar": "^7.9.0", "lodash": "^4.17.21", "mongodb-connection-string-url": "^3.0.1", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/data-service/package.json b/packages/data-service/package.json index 1d40c5a3a54..ebc1f114967 100644 --- a/packages/data-service/package.json +++ b/packages/data-service/package.json @@ -7,7 +7,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "22.23.2", + "version": "22.23.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -51,8 +51,8 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-utils": "^0.6.11", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-utils": "^0.6.12", "@mongodb-js/devtools-connect": "^3.2.10", "@mongodb-js/devtools-proxy-support": "^0.3.9", "bson": "^6.7.0", @@ -63,13 +63,13 @@ "mongodb-ns": "^2.4.2" }, "devDependencies": { - "@mongodb-js/compass-test-server": "^0.1.21", + "@mongodb-js/compass-test-server": "^0.1.22", "@mongodb-js/devtools-docker-test-envs": "^1.3.3", - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/oidc-plugin": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/lodash": "^4.14.188", "@types/whatwg-url": "^8.2.1", "chai": "^4.2.0", diff --git a/packages/database-model/package.json b/packages/database-model/package.json index db0fa523d43..3c3dce5a8ec 100644 --- a/packages/database-model/package.json +++ b/packages/database-model/package.json @@ -2,7 +2,7 @@ "name": "mongodb-database-model", "description": "MongoDB database model", "author": "Lucas Hrabovsky ", - "version": "2.23.2", + "version": "2.23.3", "bugs": { "url": "https://jira.mongodb.org/projects/COMPASS/issues", "email": "compass@mongodb.com" @@ -30,11 +30,11 @@ "dependencies": { "ampersand-collection": "^2.0.2", "ampersand-model": "^8.0.1", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/databases-collections-list/package.json b/packages/databases-collections-list/package.json index 81cc968d594..f2bd2e265ce 100644 --- a/packages/databases-collections-list/package.json +++ b/packages/databases-collections-list/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.38.0", + "version": "1.39.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -48,21 +48,21 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "dependencies": { - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/connection-info": "^0.7.0", - "compass-preferences-model": "^2.28.2", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/connection-info": "^0.8.0", + "compass-preferences-model": "^2.28.3", "mongodb-ns": "^2.4.2", "react": "^17.0.2" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", diff --git a/packages/databases-collections/package.json b/packages/databases-collections/package.json index 32ab40dbbec..a34fa649b34 100644 --- a/packages/databases-collections/package.json +++ b/packages/databases-collections/package.json @@ -2,7 +2,7 @@ "name": "@mongodb-js/compass-databases-collections", "description": "Plugin for viewing the list of, creating, and dropping databases and collections", "private": true, - "version": "1.40.0", + "version": "1.41.0", "license": "SSPL", "homepage": "https://github.com/mongodb-js/compass", "bugs": { @@ -42,11 +42,11 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "bson": "^6.7.0", "chai": "^4.2.0", "depcheck": "^1.4.1", @@ -59,21 +59,21 @@ "typescript": "^5.0.4" }, "dependencies": { - "@mongodb-js/compass-app-stores": "^7.27.0", - "@mongodb-js/compass-components": "^1.29.3", - "@mongodb-js/compass-connections": "^1.41.0", - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-logging": "^1.4.6", - "@mongodb-js/compass-telemetry": "^1.1.6", - "@mongodb-js/compass-workspaces": "^0.22.0", - "@mongodb-js/databases-collections-list": "^1.38.0", - "@mongodb-js/my-queries-storage": "^0.15.3", - "compass-preferences-model": "^2.28.2", - "hadron-app-registry": "^9.2.5", + "@mongodb-js/compass-app-stores": "^7.28.0", + "@mongodb-js/compass-components": "^1.29.4", + "@mongodb-js/compass-connections": "^1.42.0", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-logging": "^1.4.7", + "@mongodb-js/compass-telemetry": "^1.1.7", + "@mongodb-js/compass-workspaces": "^0.23.0", + "@mongodb-js/databases-collections-list": "^1.39.0", + "@mongodb-js/my-queries-storage": "^0.16.0", + "compass-preferences-model": "^2.28.3", + "hadron-app-registry": "^9.2.6", "lodash": "^4.17.21", - "mongodb-collection-model": "^5.23.2", - "mongodb-database-model": "^2.23.2", - "mongodb-instance-model": "^12.24.2", + "mongodb-collection-model": "^5.23.3", + "mongodb-database-model": "^2.23.3", + "mongodb-instance-model": "^12.24.3", "mongodb-ns": "^2.4.2", "mongodb-query-parser": "^4.2.3", "prop-types": "^15.7.2", diff --git a/packages/explain-plan-helper/package.json b/packages/explain-plan-helper/package.json index 395381bf53e..faaa213f2f5 100644 --- a/packages/explain-plan-helper/package.json +++ b/packages/explain-plan-helper/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.2.2", + "version": "1.2.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -53,10 +53,10 @@ "mongodb-explain-compat": "^3.1.0" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/hadron-app-registry/package.json b/packages/hadron-app-registry/package.json index fcef1a889a4..75f0a9476ab 100644 --- a/packages/hadron-app-registry/package.json +++ b/packages/hadron-app-registry/package.json @@ -7,7 +7,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "9.2.5", + "version": "9.2.6", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -50,11 +50,11 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/testing-library-compass": "^1.0.0", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/reflux": "^6.4.3", diff --git a/packages/hadron-build/package.json b/packages/hadron-build/package.json index 74d3fdc4a32..ffe9bc8e343 100644 --- a/packages/hadron-build/package.json +++ b/packages/hadron-build/package.json @@ -1,7 +1,7 @@ { "name": "hadron-build", "description": "Tooling for Hadron apps like Compass", - "version": "25.5.9", + "version": "25.5.10", "scripts": { "check": "npm run lint && npm run depcheck", "test": "mocha -R spec", @@ -57,7 +57,7 @@ "zip-folder": "^1.0.0" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "chai": "^4.2.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/hadron-document/package.json b/packages/hadron-document/package.json index 97d72ae4b94..fb888230515 100644 --- a/packages/hadron-document/package.json +++ b/packages/hadron-document/package.json @@ -7,7 +7,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "8.6.2", + "version": "8.6.3", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -52,10 +52,10 @@ "lodash": "^4.17.21" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "chai": "^4.2.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/packages/hadron-ipc/package.json b/packages/hadron-ipc/package.json index 6d058f5bfd5..26c6a4ee419 100644 --- a/packages/hadron-ipc/package.json +++ b/packages/hadron-ipc/package.json @@ -1,7 +1,7 @@ { "name": "hadron-ipc", "description": "Simplified IPC for electron apps.", - "version": "3.2.22", + "version": "3.2.23", "author": { "name": "MongoDB Inc", "email": "compass@mongodb.com" @@ -50,10 +50,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/is-electron-renderer": "^2.0.1", "@types/mocha": "^9.0.0", diff --git a/packages/instance-model/package.json b/packages/instance-model/package.json index f3daa915052..bd144dd9e0a 100644 --- a/packages/instance-model/package.json +++ b/packages/instance-model/package.json @@ -2,7 +2,7 @@ "name": "mongodb-instance-model", "description": "MongoDB instance model", "author": "Lucas Hrabovsky ", - "version": "12.24.2", + "version": "12.24.3", "bugs": { "url": "https://jira.mongodb.org/projects/COMPASS/issues", "email": "compass@mongodb.com" @@ -29,12 +29,12 @@ }, "dependencies": { "ampersand-model": "^8.0.1", - "mongodb-collection-model": "^5.23.2", - "mongodb-data-service": "^22.23.2", - "mongodb-database-model": "^2.23.2" + "mongodb-collection-model": "^5.23.3", + "mongodb-data-service": "^22.23.3", + "mongodb-database-model": "^2.23.3" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "chai": "^4.3.4", "depcheck": "^1.4.1", diff --git a/packages/mongodb-query-util/package.json b/packages/mongodb-query-util/package.json index 85cedab278a..99f14c4bf3f 100644 --- a/packages/mongodb-query-util/package.json +++ b/packages/mongodb-query-util/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "2.2.7", + "version": "2.2.8", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -50,10 +50,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", diff --git a/packages/my-queries-storage/package.json b/packages/my-queries-storage/package.json index 90561247ea9..1913a9e3ded 100644 --- a/packages/my-queries-storage/package.json +++ b/packages/my-queries-storage/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.15.3", + "version": "0.16.0", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -55,10 +55,10 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/chai": "^4.2.21", "@types/mocha": "^9.0.0", "@types/sinon-chai": "^3.2.5", @@ -73,10 +73,10 @@ "typescript": "^5.0.4" }, "dependencies": { - "@mongodb-js/compass-editor": "^0.29.3", - "@mongodb-js/compass-user-data": "^0.3.6", + "@mongodb-js/compass-editor": "^0.30.0", + "@mongodb-js/compass-user-data": "^0.3.7", "bson": "^6.7.0", - "hadron-app-registry": "^9.2.5", + "hadron-app-registry": "^9.2.6", "react": "^17.0.2" } } diff --git a/packages/reflux-state-mixin/package.json b/packages/reflux-state-mixin/package.json index 49ba83e83a2..970c089fcfc 100644 --- a/packages/reflux-state-mixin/package.json +++ b/packages/reflux-state-mixin/package.json @@ -13,7 +13,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "1.0.6", + "version": "1.0.7", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -53,10 +53,10 @@ "reflux": "^0.4.1" }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", - "@mongodb-js/mocha-config-compass": "^1.4.1", + "@mongodb-js/eslint-config-compass": "^1.1.7", + "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", - "@mongodb-js/tsconfig-compass": "^1.0.4", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/mocha": "^9.0.0", "depcheck": "^1.4.1", "eslint": "^7.25.0", diff --git a/scripts/package.json b/scripts/package.json index 40386d2d6f2..bf70163cbff 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -14,7 +14,7 @@ "email": "compass@mongodb.com" }, "homepage": "https://github.com/mongodb-js/compass", - "version": "0.16.20", + "version": "0.16.21", "repository": { "type": "git", "url": "https://github.com/mongodb-js/compass.git" @@ -30,7 +30,7 @@ "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." }, "devDependencies": { - "@mongodb-js/eslint-config-compass": "^1.1.6", + "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", "depcheck": "^1.4.1", "eslint": "^7.25.0", From 0afc8f2bb717fa7de1272b7d1f0b193a36547d35 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 05:11:23 +0000 Subject: [PATCH 50/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6253) Update report Co-authored-by: svc-devtoolsbot <79531021+svc-devtoolsbot@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 2 +- docs/tracking-plan.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index bd72ef52dc6..890f7814095 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -1,5 +1,5 @@ The following third-party software is used by and included in **Mongodb Compass**. -This document was automatically generated on Mon Sep 16 2024. +This document was automatically generated on Tue Sep 17 2024. ## List of dependencies diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index c144304a286..fab570b77b0 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Mon, Sep 16, 2024 at 10:19 PM +Generated on Tue, Sep 17, 2024 at 05:11 AM ## Table of Contents From d8f7af7c97df24b678424c7e07ced59d3f6fa40e Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Tue, 17 Sep 2024 14:21:22 +0200 Subject: [PATCH 51/57] chore(deps) hoist webpack; remove depcheck workarounds; add missing dependency to compass-web COMPASS-8313 (#6254) * chore(deps): hoist webpack; remove depcheck workarounds * chore(web): add missing dependency on proxy package --- .depcheckrc | 14 +- package-lock.json | 3534 +++++------------ package.json | 3 - packages/compass-e2e-tests/.depcheckrc | 4 + packages/compass-explain-plan/.depcheckrc | 4 + .../compass-preferences-model/package.json | 1 + packages/compass-web/package.json | 1 + packages/hadron-app-registry/.depcheckrc | 4 + scripts/package.json | 1 + 9 files changed, 1097 insertions(+), 2469 deletions(-) diff --git a/.depcheckrc b/.depcheckrc index d1746d72fec..60df7c72822 100644 --- a/.depcheckrc +++ b/.depcheckrc @@ -1,17 +1,11 @@ ignores: - '@mongodb-js/bump-monorepo-packages' - '@mongodb-js/sbom-tools' - # TODO: We keep webpack-cli/serve and testing-library/dom at the root to work - # around weird npm workspace hoising issues caused by outdated transient - # dependencies. This can go away when we update webpack and leafygreen to the - # same version everywhere. + # TODO: We keep testing-library/dom at the root to work around weird npm + # workspace hoising issues caused by outdated transient dependencies. This can + # go away when we update all our usage of @testing-library packages to the + # version matching what @leafygreen is using - '@testing-library/dom' - # TODO: To work around https://github.com/depcheck/depcheck/issues/688 we keep - # some babel dependencies at the root to guarantee that their version is not - # bumped higher than the version that breaks depcheck package - - '@babel/core' - - '@babel/parser' - - 'babel-loader' # npm picks up the node-gyp installation in this repository rather than the # one it ships with, so we install one of our own to get the version right # (because we need one with vscode 2022 support for github actions CI) diff --git a/package-lock.json b/package-lock.json index d32abac9b3f..2de3305aec6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,12 +12,9 @@ "scripts" ], "devDependencies": { - "@babel/core": "7.16.0", - "@babel/parser": "7.16.0", "@mongodb-js/monorepo-tools": "^1.1.1", "@mongodb-js/sbom-tools": "^0.7.0", "@testing-library/dom": "^8.20.1", - "babel-loader": "^7.1.5", "husky": "^8.0.3", "js-yaml": "^4.1.0", "lerna": "^7.1.5", @@ -54,54 +51,6 @@ "eslint": "^7.25.0" } }, - "configs/eslint-config-compass/node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "configs/eslint-config-compass/node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "configs/eslint-config-compass/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, "configs/eslint-plugin-compass": { "name": "@mongodb-js/eslint-plugin-compass", "version": "1.0.21", @@ -601,54 +550,6 @@ "typescript": "^5.0.4" } }, - "configs/webpack-config-compass/node_modules/@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "configs/webpack-config-compass/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "configs/webpack-config-compass/node_modules/@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "configs/webpack-config-compass/node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", @@ -750,12 +651,6 @@ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "license": "MIT" }, - "configs/webpack-config-compass/node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "license": "MIT" - }, "configs/webpack-config-compass/node_modules/@types/html-webpack-plugin": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.9.tgz", @@ -780,99 +675,6 @@ "webpack": "^5" } }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "license": "MIT" - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "configs/webpack-config-compass/node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, "configs/webpack-config-compass/node_modules/babel-loader": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", @@ -919,19 +721,6 @@ "url": "https://opencollective.com/core-js" } }, - "configs/webpack-config-compass/node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, "configs/webpack-config-compass/node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -944,15 +733,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "configs/webpack-config-compass/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "configs/webpack-config-compass/node_modules/find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -1083,40 +863,6 @@ "webpack": "^5.0.0" } }, - "configs/webpack-config-compass/node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, "configs/webpack-config-compass/node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -1126,65 +872,6 @@ "node": ">=6" } }, - "configs/webpack-config-compass/node_modules/watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "license": "MIT", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "configs/webpack-config-compass/node_modules/webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, "configs/webpack-config-compass/node_modules/webpack-bundle-analyzer": { "version": "4.10.2", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", @@ -2163,26 +1850,25 @@ } }, "node_modules/@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -2192,24 +1878,19 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/eslint-parser": { "version": "7.22.7", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz", @@ -2661,9 +2342,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.0.tgz", - "integrity": "sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dependencies": { + "@babel/types": "^7.25.6" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -4071,18 +3755,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/traverse": { "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.2.tgz", @@ -4101,23 +3773,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==", - "license": "MIT", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", - "license": "MIT", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -5639,9 +5298,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -8267,6 +7926,78 @@ "node": ">= 16" } }, + "node_modules/@mongodb-js/devtools-proxy-support": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", + "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", + "dependencies": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.0" + } + }, + "node_modules/@mongodb-js/devtools-proxy-support/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==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/@mongodb-js/devtools-proxy-support/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@mongodb-js/devtools-proxy-support/node_modules/lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@mongodb-js/devtools-proxy-support/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/@mongodb-js/devtools-proxy-support/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/@mongodb-js/dl-center": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", @@ -8358,46 +8089,6 @@ "eslint": "^7.25.0" } }, - "node_modules/@mongodb-js/eslint-config-devtools/node_modules/@babel/core": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@mongodb-js/eslint-config-devtools/node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@mongodb-js/eslint-plugin-compass": { "resolved": "configs/eslint-plugin-compass", "link": true @@ -13476,10 +13167,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { "version": "4.17.13", @@ -14275,85 +13965,71 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.2.tgz", - "integrity": "sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.6.tgz", + "integrity": "sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==", "dev": true, "dependencies": { - "@babel/parser": "^7.12.0", - "@babel/types": "^7.12.0", - "@vue/shared": "3.1.2", - "estree-walker": "^2.0.1", - "source-map": "^0.6.1" + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.6", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-core/node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz", - "integrity": "sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.6.tgz", + "integrity": "sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.1.2", - "@vue/shared": "3.1.2" + "@vue/compiler-core": "3.5.6", + "@vue/shared": "3.5.6" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz", - "integrity": "sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.13.9", - "@babel/types": "^7.13.0", - "@types/estree": "^0.0.48", - "@vue/compiler-core": "3.1.2", - "@vue/compiler-dom": "3.1.2", - "@vue/compiler-ssr": "3.1.2", - "@vue/shared": "3.1.2", - "consolidate": "^0.16.0", - "estree-walker": "^2.0.1", - "hash-sum": "^2.0.0", - "lru-cache": "^5.1.1", - "magic-string": "^0.25.7", - "merge-source-map": "^1.1.0", - "postcss": "^8.1.10", - "postcss-modules": "^4.0.0", - "postcss-selector-parser": "^6.0.4", - "source-map": "^0.6.1" - }, - "peerDependencies": { - "vue": "3.1.2" - } - }, - "node_modules/@vue/compiler-sfc/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.6.tgz", + "integrity": "sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.6", + "@vue/compiler-dom": "3.5.6", + "@vue/compiler-ssr": "3.5.6", + "@vue/shared": "3.5.6", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" } }, - "node_modules/@vue/compiler-sfc/node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, "node_modules/@vue/compiler-ssr": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz", - "integrity": "sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.6.tgz", + "integrity": "sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.1.2", - "@vue/shared": "3.1.2" + "@vue/compiler-dom": "3.5.6", + "@vue/shared": "3.5.6" } }, "node_modules/@vue/shared": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.2.tgz", - "integrity": "sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.6.tgz", + "integrity": "sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==", "dev": true }, "node_modules/@wdio/config": { @@ -14623,6 +14299,15 @@ "node": ">= 10.x" } }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", @@ -14633,6 +14318,11 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", @@ -14648,6 +14338,17 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", @@ -14669,6 +14370,66 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", @@ -16538,150 +16299,6 @@ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, - "node_modules/babel-loader": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", - "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", - "dev": true, - "dependencies": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "babel-core": "6", - "webpack": "2 || 3 || 4" - } - }, - "node_modules/babel-loader/node_modules/find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/babel-loader/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/babel-loader/node_modules/pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", - "dev": true, - "dependencies": { - "find-up": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/babel-plugin-istanbul": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", @@ -17584,6 +17201,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -18454,18 +18080,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "node_modules/consolidate": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", - "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", - "dev": true, - "dependencies": { - "bluebird": "^3.7.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -18730,9 +18344,9 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -20067,33 +19681,34 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "node_modules/depcheck": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.1.tgz", - "integrity": "sha512-ecX8zIXE9TlVu14ebnZTwgIeP/t/Rq2WpowjWbMuqG6ayozVVf9zKW4EBEQ/HsS1dxhY+J9+UiRetu2UMxG9ww==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", "dev": true, "dependencies": { - "@babel/parser": "^7.12.5", - "@babel/traverse": "^7.12.5", - "@vue/compiler-sfc": "^3.0.5", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", - "deps-regex": "^0.1.4", - "ignore": "^5.1.8", - "js-yaml": "^3.14.0", - "json5": "^2.1.3", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@vue/compiler-sfc": "^3.3.4", + "callsite": "^1.0.0", + "camelcase": "^6.3.0", + "cosmiconfig": "^7.1.0", + "debug": "^4.3.4", + "deps-regex": "^0.2.0", + "findup-sync": "^5.0.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.0", + "js-yaml": "^3.14.1", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "minimatch": "^7.4.6", "multimatch": "^5.0.0", "please-upgrade-node": "^3.2.0", - "query-ast": "^1.0.3", - "readdirp": "^3.5.0", + "readdirp": "^3.6.0", "require-package-name": "^2.0.1", - "resolve": "^1.18.1", - "sass": "^1.29.0", - "scss-parser": "^1.0.4", - "semver": "^7.3.2", - "yargs": "^16.1.0" + "resolve": "^1.22.3", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "yargs": "^16.2.0" }, "bin": { "depcheck": "bin/depcheck.js" @@ -20111,10 +19726,19 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/depcheck/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/depcheck/node_modules/camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, "engines": { "node": ">=10" @@ -20123,6 +19747,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/depcheck/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/depcheck/node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -20136,6 +19769,21 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/depcheck/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/depcheck/node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -20162,9 +19810,9 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "node_modules/deps-regex": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", - "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", "dev": true }, "node_modules/dequal": { @@ -20195,6 +19843,15 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", @@ -21572,6 +21229,18 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -23622,6 +23291,18 @@ "node": ">=6" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -24120,6 +23801,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/first-chunk-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", @@ -25038,15 +24734,6 @@ "is-property": "^1.0.0" } }, - "node_modules/generic-names": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", - "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", - "dev": true, - "dependencies": { - "loader-utils": "^1.1.0" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -25589,6 +25276,48 @@ "node": ">=10.0" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -25971,12 +25700,6 @@ "node": ">=4" } }, - "node_modules/hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, "node_modules/hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -26081,6 +25804,18 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -26540,12 +26275,6 @@ "node": ">=0.10.0" } }, - "node_modules/icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "node_modules/icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -26961,15 +26690,6 @@ "node": ">=4" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -27115,11 +26835,14 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -27895,7 +27618,6 @@ "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "license": "MIT", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -27909,7 +27631,6 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -30206,32 +29927,6 @@ "node": ">=6.11.5" } }, - "node_modules/loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, "node_modules/local-links": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/local-links/-/local-links-1.4.1.tgz", @@ -30616,12 +30311,6 @@ "lodash.restparam": "^3.0.0" } }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -31032,12 +30721,12 @@ } }, "node_modules/magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "dependencies": { - "sourcemap-codec": "^1.4.4" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -31433,15 +31122,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "dependencies": { - "source-map": "^0.6.1" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -32757,6 +32437,23 @@ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -35118,6 +34815,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -35297,9 +35003,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -35510,9 +35216,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "funding": [ { "type": "opencollective", @@ -35528,9 +35234,9 @@ } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -36263,25 +35969,6 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-modules": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", - "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", - "dev": true, - "dependencies": { - "generic-names": "^2.0.1", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - }, - "peerDependencies": { - "postcss": "^8.0.0" - } - }, "node_modules/postcss-modules-extract-imports": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", @@ -36412,77 +36099,6 @@ "url": "https://opencollective.com/postcss/" } }, - "node_modules/postcss-modules/node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules/node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules/node_modules/postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules/node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/postcss-modules/node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "dependencies": { - "icss-utils": "^5.0.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, "node_modules/postcss-nesting": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", @@ -36853,23 +36469,6 @@ "node": ">=6.14.4" } }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/prebuild-install": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", @@ -37380,25 +36979,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/query-ast": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.3.tgz", - "integrity": "sha512-k7z4jilpZCujhiJ+QeKSwYXHc9HxqiVKlVE7/em0zBfPpcqnXKUP8F7ld7XaAkO6oXeAD7yonqcNJWqOF2pSGA==", - "dev": true, - "dependencies": { - "invariant": "2.2.2", - "lodash": "^4.17.15" - } - }, - "node_modules/query-ast/node_modules/invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/query-selector-shadow-dom": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", @@ -38556,12 +38136,16 @@ "integrity": "sha512-ysyw95gLBhMAzqIVrOHJ2yMrRQHAS+h97bS9r89Z7Ou10Jhl2k5KOsyjPqrxL+WfEanov0o5bAMVzQ7AKyENHA==" }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -38583,6 +38167,19 @@ "node": ">=8" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -38856,21 +38453,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sass": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.1.tgz", - "integrity": "sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=8.9.0" - } - }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -38904,19 +38486,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/scss-parser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.4.tgz", - "integrity": "sha512-oDZwDfY2JhnDrHNZPcdcPNVTpAXsJBY2/uhFfN0IzMy1xExAfJDcI1Yl/VXhfRsdQL3wLeg6/Oxt3cafBOuMzQ==", - "dev": true, - "dependencies": { - "invariant": "2.2.4", - "lodash": "^4.17.4" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -39053,9 +38622,9 @@ } }, "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "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" } @@ -39952,9 +39521,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "engines": { "node": ">=0.10.0" } @@ -39999,12 +39568,6 @@ "source-map": "^0.6.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/spacetrim": { "version": "0.11.37", "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.37.tgz", @@ -40334,12 +39897,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", - "dev": true - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -40664,6 +40221,17 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -40949,6 +40517,39 @@ "node": ">=10" } }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -42349,6 +41950,18 @@ "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==" }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -42858,6 +42471,51 @@ "node": ">=12" } }, + "node_modules/webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "dependencies": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, "node_modules/webpack-cli": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", @@ -43167,6 +42825,14 @@ "node": ">=10.13.0" } }, + "node_modules/webpack/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/websocket-driver": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", @@ -43999,56 +43665,11 @@ "mongodb-log-writer": "^1.4.2" } }, - "packages/atlas-service/node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "packages/atlas-service/node_modules/@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" }, - "packages/atlas-service/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==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "packages/atlas-service/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "packages/atlas-service/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -44058,33 +43679,6 @@ "node": ">=0.3.1" } }, - "packages/atlas-service/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "packages/atlas-service/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "packages/atlas-service/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -44336,17 +43930,6 @@ "xvfb-maybe": "^0.2.1" } }, - "packages/compass-aggregations/node_modules/@babel/parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "packages/compass-aggregations/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -46207,6 +45790,7 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", @@ -46216,74 +45800,6 @@ "sinon": "^9.2.3" } }, - "packages/compass-preferences-model/node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, - "packages/compass-preferences-model/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==", - "engines": { - "node": ">= 12" - } - }, - "packages/compass-preferences-model/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "packages/compass-preferences-model/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "engines": { - "node": "20 || >=22" - } - }, - "packages/compass-preferences-model/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "packages/compass-preferences-model/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -46767,74 +46283,6 @@ "typescript": "^5.0.4" } }, - "packages/compass-shell/node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "packages/compass-shell/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "packages/compass-shell/node_modules/@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.25.6" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "packages/compass-shell/node_modules/@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "packages/compass-shell/node_modules/@mongodb-js/devtools-connect": { "version": "3.2.10", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.10.tgz", @@ -46859,25 +46307,6 @@ "mongodb-log-writer": "^1.4.2" } }, - "packages/compass-shell/node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "packages/compass-shell/node_modules/@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", @@ -47100,38 +46529,6 @@ "node": ">=14.15.1" } }, - "packages/compass-shell/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, - "packages/compass-shell/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==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "packages/compass-shell/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "packages/compass-shell/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -47141,33 +46538,6 @@ "node": ">=0.3.1" } }, - "packages/compass-shell/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "packages/compass-shell/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "packages/compass-shell/node_modules/numeral": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", @@ -47597,6 +46967,7 @@ "@mongodb-js/compass-welcome": "^0.40.0", "@mongodb-js/compass-workspaces": "^0.23.0", "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", @@ -48016,26 +47387,6 @@ "url": "https://opencollective.com/sinon" } }, - "packages/compass/node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "packages/compass/node_modules/@mongosh/node-runtime-worker-thread": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", @@ -48050,15 +47401,6 @@ "node": ">=14.15.1" } }, - "packages/compass/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" - } - }, "packages/compass/node_modules/debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -48076,33 +47418,6 @@ } } }, - "packages/compass/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "dev": true, - "engines": { - "node": "20 || >=22" - } - }, - "packages/compass/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "packages/connection-form": { "name": "@mongodb-js/connection-form", "version": "1.40.0", @@ -48453,56 +47768,11 @@ "whatwg-url": "^11.0.0" } }, - "packages/data-service/node_modules/@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "license": "Apache-2.0", - "dependencies": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "packages/data-service/node_modules/@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" }, - "packages/data-service/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==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "packages/data-service/node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "packages/data-service/node_modules/eslint-plugin-mocha": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", @@ -48537,33 +47807,6 @@ "eslint": ">=5" } }, - "packages/data-service/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "packages/data-service/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "packages/data-service/node_modules/sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -50838,59 +50081,12 @@ "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/tsconfig-compass": "^1.0.5", "depcheck": "^1.4.1", "eslint": "^7.25.0", "prettier": "^2.7.1" } }, - "scripts/node_modules/@babel/core": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", - "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.1", - "@babel/parser": "^7.24.1", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "scripts/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "scripts/node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, "scripts/node_modules/@npmcli/move-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", @@ -50996,11 +50192,6 @@ "node": ">=16" } }, - "scripts/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "scripts/node_modules/cssstyle": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", @@ -52111,39 +51302,36 @@ "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==" }, "@babel/core": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.0.tgz", - "integrity": "sha512-mYZEvshBRHGsIAiyH5PzCFTCfbWfoYbO/jcSdXQSUQu1/pW0xDZAUP7KEc32heqWTAfAHhV9j1vH8Sav7l+JNQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.0", - "@babel/generator": "^7.16.0", - "@babel/helper-compilation-targets": "^7.16.0", - "@babel/helper-module-transforms": "^7.16.0", - "@babel/helpers": "^7.16.0", - "@babel/parser": "^7.16.0", - "@babel/template": "^7.16.0", - "@babel/traverse": "^7.16.0", - "@babel/types": "^7.16.0", - "convert-source-map": "^1.7.0", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "dependencies": { + "convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -52482,9 +51670,12 @@ } }, "@babel/parser": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.0.tgz", - "integrity": "sha512-TEHWXf0xxpi9wKVyBCmRcSSDjbJ/cl6LUdlbYUHEaNQUJGhreJbZrXT6sR4+fZLxVUJqNRB4KyOvjuy/D9009A==" + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "requires": { + "@babel/types": "^7.25.6" + } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.5", @@ -53398,13 +52589,6 @@ "@babel/code-frame": "^7.24.7", "@babel/parser": "^7.25.0", "@babel/types": "^7.25.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==" - } } }, "@babel/traverse": { @@ -53419,19 +52603,12 @@ "@babel/types": "^7.25.2", "debug": "^4.3.1", "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.0.tgz", - "integrity": "sha512-CzdIU9jdP0dg7HdyB+bHvDJGagUv+qtzZt5rYCWwW6tITNqV9odjp6Qu41gkG0ca5UfdDUWrKkiAnHHdGRnOrA==" - } } }, "@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", "requires": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -54620,9 +53797,9 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "@jridgewell/trace-mapping": { "version": "0.3.25", @@ -56673,63 +55850,17 @@ "socks": "^2.7.3" } }, - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" }, - "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==" - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "requires": { - "ms": "2.1.2" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -56815,11 +55946,6 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@babel/parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.19.4.tgz", - "integrity": "sha512-qpVT7gtuOLjWeDTKLkJ6sryqLliBaFpAtGeqw5cs5giLldvh+Ch0plqnUMKoVAUS6ZEueQQiZV+p5pxtPitEsA==" - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -58385,6 +57511,7 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/monorepo-tools": "^1.1.1", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/tsconfig-compass": "^1.0.5", "commander": "^11.0.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -58399,40 +57526,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@babel/core": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.3.tgz", - "integrity": "sha512-5FcvN1JHw2sHJChotgx8Ek0lyuh4kCKelgMTTqhYJJtloNvUfpAFMeNQUtdlIaktwrSV9LtCdqwk48wL2wBacQ==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.1", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.1", - "@babel/parser": "^7.24.1", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==" - }, "@npmcli/move-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", @@ -58515,11 +57608,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==" }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, "cssstyle": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", @@ -58906,53 +57994,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/parser": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", - "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", - "requires": { - "@babel/types": "^7.25.6" - } - }, - "@babel/types": { - "version": "7.25.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", - "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", - "requires": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - } - }, "@mongodb-js/devtools-connect": { "version": "3.2.10", "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-connect/-/devtools-connect-3.2.10.tgz", @@ -58969,24 +58010,6 @@ "socks": "^2.7.3" } }, - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", @@ -59140,45 +58163,12 @@ "@mongodb-js/devtools-connect": "^3.2.10" } }, - "convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" - }, - "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==" - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "requires": { - "ms": "2.1.2" - } - }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "numeral": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", @@ -59555,6 +58545,7 @@ "@mongodb-js/compass-welcome": "^0.40.0", "@mongodb-js/compass-workspaces": "^0.23.0", "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", @@ -60250,6 +59241,59 @@ "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-github-repo/-/devtools-github-repo-1.4.1.tgz", "integrity": "sha512-wpVbM7MTft2mFc66ZOulAW4TnyK9fzYL/dqhcUk7DMcdwO8TcR1VZPkh55fRugSXgkfCUcxfZmqmuSSAudLGjA==" }, + "@mongodb-js/devtools-proxy-support": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", + "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", + "requires": { + "@mongodb-js/socksv5": "^0.0.10", + "agent-base": "^7.1.1", + "debug": "^4.3.6", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "lru-cache": "^11.0.0", + "node-fetch": "^3.3.2", + "pac-proxy-agent": "^7.0.2", + "socks-proxy-agent": "^8.0.4", + "ssh2": "^1.15.0", + "system-ca": "^2.0.0" + }, + "dependencies": { + "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==" + }, + "debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "requires": { + "ms": "^2.1.3" + } + }, + "lru-cache": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.1.tgz", + "integrity": "sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, "@mongodb-js/dl-center": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@mongodb-js/dl-center/-/dl-center-1.0.1.tgz", @@ -60321,40 +59365,6 @@ "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", "prettier": "^2.7.1" - }, - "dependencies": { - "@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - } - }, - "@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } } }, "@mongodb-js/eslint-config-devtools": { @@ -60374,35 +59384,6 @@ "eslint-plugin-mocha": "^8.0.0", "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0" - }, - "dependencies": { - "@babel/core": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2" - } - }, - "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" - } } }, "@mongodb-js/eslint-plugin-compass": { @@ -61359,40 +60340,6 @@ "webpack-merge": "^5.10.0" }, "dependencies": { - "@babel/core": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.4.tgz", - "integrity": "sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==", - "requires": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.4", - "@babel/helper-compilation-targets": "^7.21.4", - "@babel/helper-module-transforms": "^7.21.2", - "@babel/helpers": "^7.21.0", - "@babel/parser": "^7.21.4", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.4", - "@babel/types": "^7.21.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - } - } - }, - "@babel/parser": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz", - "integrity": "sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==" - }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", @@ -61444,11 +60391,6 @@ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==" }, - "@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" - }, "@types/html-webpack-plugin": { "version": "3.2.9", "resolved": "https://registry.npmjs.org/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.9.tgz", @@ -61471,91 +60413,6 @@ "webpack": "^5" } }, - "@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "requires": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "requires": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, "babel-loader": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", @@ -61584,25 +60441,11 @@ "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==" }, - "enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, "find-cache-dir": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", @@ -61674,62 +60517,11 @@ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.2.1.tgz", "integrity": "sha512-1k9ZosJCRFaRbY6hH49JFlRB0fVSbmnyq1iTPjNxUmGVjBNEmwrrHPenhlp+Lgo51BojHSf6pl2FcqYaN3PfVg==" }, - "terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "requires": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - } - }, "totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==" }, - "watchpack": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", - "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.94.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", - "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", - "requires": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.1", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - } - }, "webpack-bundle-analyzer": { "version": "4.10.2", "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz", @@ -65219,10 +64011,9 @@ } }, "@types/estree": { - "version": "0.0.48", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.48.tgz", - "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==", - "dev": true + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "@types/express": { "version": "4.17.13", @@ -65924,84 +64715,67 @@ } }, "@vue/compiler-core": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.2.tgz", - "integrity": "sha512-nHmq7vLjq/XM2IMbZUcKWoH5sPXa2uR/nIKZtjbK5F3TcbnYE/zKsrSUR9WZJ03unlwotNBX1OyxVt9HbWD7/Q==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.6.tgz", + "integrity": "sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==", "dev": true, "requires": { - "@babel/parser": "^7.12.0", - "@babel/types": "^7.12.0", - "@vue/shared": "3.1.2", - "estree-walker": "^2.0.1", - "source-map": "^0.6.1" + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.6", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + }, + "dependencies": { + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true + } } }, "@vue/compiler-dom": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.2.tgz", - "integrity": "sha512-k2+SWcWH0jL6WQAX7Or2ONqu5MbtTgTO0dJrvebQYzgqaKMXNI90RNeWeCxS4BnNFMDONpHBeFgbwbnDWIkmRg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.6.tgz", + "integrity": "sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==", "dev": true, "requires": { - "@vue/compiler-core": "3.1.2", - "@vue/shared": "3.1.2" + "@vue/compiler-core": "3.5.6", + "@vue/shared": "3.5.6" } }, "@vue/compiler-sfc": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.1.2.tgz", - "integrity": "sha512-SeG/2+DvwejQ7oAiSx8BrDh5qOdqCYHGClPiTvVIHTfSIHiS2JjMbCANdDCjHkTOh/O7WZzo2JhdKm98bRBxTw==", - "dev": true, - "requires": { - "@babel/parser": "^7.13.9", - "@babel/types": "^7.13.0", - "@types/estree": "^0.0.48", - "@vue/compiler-core": "3.1.2", - "@vue/compiler-dom": "3.1.2", - "@vue/compiler-ssr": "3.1.2", - "@vue/shared": "3.1.2", - "consolidate": "^0.16.0", - "estree-walker": "^2.0.1", - "hash-sum": "^2.0.0", - "lru-cache": "^5.1.1", - "magic-string": "^0.25.7", - "merge-source-map": "^1.1.0", - "postcss": "^8.1.10", - "postcss-modules": "^4.0.0", - "postcss-selector-parser": "^6.0.4", - "source-map": "^0.6.1" - }, - "dependencies": { - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.6.tgz", + "integrity": "sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==", + "dev": true, + "requires": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.6", + "@vue/compiler-dom": "3.5.6", + "@vue/compiler-ssr": "3.5.6", + "@vue/shared": "3.5.6", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" } }, "@vue/compiler-ssr": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.1.2.tgz", - "integrity": "sha512-BwXo9LFk5OSWdMyZQ4bX1ELHX0Z/9F+ld/OaVnpUPzAZCHslBYLvyKUVDwv2C/lpLjRffpC2DOUEdl1+RP1aGg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.6.tgz", + "integrity": "sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==", "dev": true, "requires": { - "@vue/compiler-dom": "3.1.2", - "@vue/shared": "3.1.2" + "@vue/compiler-dom": "3.5.6", + "@vue/shared": "3.5.6" } }, "@vue/shared": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.2.tgz", - "integrity": "sha512-EmH/poaDWBPJaPILXNI/1fvUbArJQmmTyVCwvvyDYDFnkPoTclAbHRAtyIvqfez7jybTDn077HTNILpxlsoWhg==", + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.6.tgz", + "integrity": "sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==", "dev": true }, "@wdio/config": { @@ -66191,6 +64965,15 @@ } } }, + "@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", @@ -66201,6 +64984,11 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, + "@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + }, "@webassemblyjs/helper-numbers": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", @@ -66216,6 +65004,17 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, "@webassemblyjs/ieee754": { "version": "1.11.6", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", @@ -66237,6 +65036,66 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, + "@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "requires": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, "@webpack-cli/configtest": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", @@ -67757,112 +66616,6 @@ "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, - "babel-loader": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", - "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", - "dev": true, - "requires": { - "find-cache-dir": "^1.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1" - }, - "dependencies": { - "find-cache-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", - "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^1.0.0", - "pkg-dir": "^2.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, "babel-plugin-istanbul": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", @@ -68616,6 +67369,12 @@ "set-function-length": "^1.2.1" } }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -69374,6 +68133,7 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "bson": "^6.7.0", @@ -69391,52 +68151,6 @@ "zod": "^3.22.3" }, "dependencies": { - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, - "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==" - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "requires": { - "ms": "2.1.2" - } - }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -69632,15 +68346,6 @@ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, - "consolidate": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.16.0.tgz", - "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==", - "dev": true, - "requires": { - "bluebird": "^3.7.2" - } - }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -69840,9 +68545,9 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -70834,33 +69539,34 @@ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "depcheck": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.1.tgz", - "integrity": "sha512-ecX8zIXE9TlVu14ebnZTwgIeP/t/Rq2WpowjWbMuqG6ayozVVf9zKW4EBEQ/HsS1dxhY+J9+UiRetu2UMxG9ww==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", "dev": true, "requires": { - "@babel/parser": "^7.12.5", - "@babel/traverse": "^7.12.5", - "@vue/compiler-sfc": "^3.0.5", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", - "deps-regex": "^0.1.4", - "ignore": "^5.1.8", - "js-yaml": "^3.14.0", - "json5": "^2.1.3", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@vue/compiler-sfc": "^3.3.4", + "callsite": "^1.0.0", + "camelcase": "^6.3.0", + "cosmiconfig": "^7.1.0", + "debug": "^4.3.4", + "deps-regex": "^0.2.0", + "findup-sync": "^5.0.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.0", + "js-yaml": "^3.14.1", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "minimatch": "^7.4.6", "multimatch": "^5.0.0", "please-upgrade-node": "^3.2.0", - "query-ast": "^1.0.3", - "readdirp": "^3.5.0", + "readdirp": "^3.6.0", "require-package-name": "^2.0.1", - "resolve": "^1.18.1", - "sass": "^1.29.0", - "scss-parser": "^1.0.4", - "semver": "^7.3.2", - "yargs": "^16.1.0" + "resolve": "^1.22.3", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "yargs": "^16.2.0" }, "dependencies": { "argparse": { @@ -70872,10 +69578,25 @@ "sprintf-js": "~1.0.2" } }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true }, "js-yaml": { @@ -70888,6 +69609,15 @@ "esprima": "^4.0.0" } }, + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -70910,9 +69640,9 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "deps-regex": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", - "integrity": "sha1-UYZnt2kUYKXn4KNBvnbrfOgJAYQ=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", "dev": true }, "dequal": { @@ -70936,6 +69666,12 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, "detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", @@ -72028,6 +70764,15 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -73622,6 +72367,15 @@ "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -74019,6 +72773,18 @@ "path-exists": "^4.0.0" } }, + "findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + } + }, "first-chunk-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-3.0.0.tgz", @@ -74744,15 +73510,6 @@ "is-property": "^1.0.0" } }, - "generic-names": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", - "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - } - }, "gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -75174,6 +73931,41 @@ "serialize-error": "^7.0.1" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "global-tunnel-ng": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", @@ -76251,12 +75043,6 @@ "safe-buffer": "^5.0.1" } }, - "hash-sum": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", - "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", - "dev": true - }, "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", @@ -76344,6 +75130,15 @@ } } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -76674,12 +75469,6 @@ "safer-buffer": ">= 2.1.2 < 3" } }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", - "dev": true - }, "icss-utils": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", @@ -76987,15 +75776,6 @@ "p-is-promise": "^1.1.0" } }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -77098,11 +75878,11 @@ } }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.2" } }, "is-data-view": { @@ -79478,28 +78258,6 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "dependencies": { - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - } - } - }, "local-links": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/local-links/-/local-links-1.4.1.tgz", @@ -79876,12 +78634,6 @@ "lodash.restparam": "^3.0.0" } }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -80266,12 +79018,12 @@ } }, "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "requires": { - "sourcemap-codec": "^1.4.4" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "make-dir": { @@ -80581,15 +79333,6 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==" }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "source-map": "^0.6.1" - } - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -81181,25 +79924,6 @@ "winreg-ts": "^1.0.4" }, "dependencies": { - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "dev": true, - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "@mongosh/node-runtime-worker-thread": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@mongosh/node-runtime-worker-thread/-/node-runtime-worker-thread-2.3.1.tgz", @@ -81210,12 +79934,6 @@ "web-worker": "^1.3.0" } }, - "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 - }, "debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -81224,23 +79942,6 @@ "requires": { "ms": "2.1.2" } - }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", - "dev": true - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } } } }, @@ -81342,42 +80043,11 @@ } } }, - "@mongodb-js/devtools-proxy-support": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@mongodb-js/devtools-proxy-support/-/devtools-proxy-support-0.3.9.tgz", - "integrity": "sha512-y6EpBQuOYMSbnc3y7lWG3ThFWC7iv6HHZn8+7tRsr9diSMwHRoxM/GNrz2yeldT7xstFdGL4zmmSK/3JcSz+8g==", - "requires": { - "@mongodb-js/socksv5": "^0.0.10", - "agent-base": "^7.1.1", - "debug": "^4.3.6", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "lru-cache": "^11.0.0", - "node-fetch": "^3.3.2", - "pac-proxy-agent": "^7.0.2", - "socks-proxy-agent": "^8.0.4", - "ssh2": "^1.15.0", - "system-ca": "^2.0.0" - } - }, "@mongodb-js/oidc-http-server-pages": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@mongodb-js/oidc-http-server-pages/-/oidc-http-server-pages-1.1.3.tgz", "integrity": "sha512-I704bSQRu/SusTcCV8qqtdFVvAJf1aKZtgGM2VnYjPn2njZd5j7864k/CF9TeeR8+r0At5qqNa3N4MX9YxPnEg==" }, - "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==" - }, - "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "requires": { - "ms": "2.1.2" - } - }, "eslint-plugin-mocha": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-9.0.0.tgz", @@ -81397,21 +80067,6 @@ "eslint-visitor-keys": "^2.0.0" } }, - "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" - }, - "node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, "sinon": { "version": "9.2.4", "resolved": "https://registry.npmjs.org/sinon/-/sinon-9.2.4.tgz", @@ -82041,6 +80696,11 @@ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "optional": true }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, "napi-build-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", @@ -83840,6 +82500,12 @@ "lines-and-columns": "^1.1.6" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, "parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -83995,9 +82661,9 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, "picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" }, "picomatch": { "version": "2.3.0", @@ -84146,20 +82812,13 @@ "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==" }, "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "requires": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "dependencies": { - "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" - } + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" } }, "postcss-attribute-case-insensitive": { @@ -84712,65 +83371,6 @@ } } }, - "postcss-modules": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-4.1.3.tgz", - "integrity": "sha512-dBT39hrXe4OAVYJe/2ZuIZ9BzYhOe7t+IhedYeQ2OxKwDpAGlkEN/fR0fGnrbx4BvgbMReRX4hCubYK9cE/pJQ==", - "dev": true, - "requires": { - "generic-names": "^2.0.1", - "icss-replace-symbols": "^1.1.0", - "lodash.camelcase": "^4.3.0", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.0", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "string-hash": "^1.1.1" - }, - "dependencies": { - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true - }, - "postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", - "dev": true - }, - "postcss-modules-local-by-default": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", - "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", - "dev": true, - "requires": { - "postcss-selector-parser": "^6.0.4" - } - }, - "postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", - "dev": true, - "requires": { - "icss-utils": "^5.0.0" - } - } - } - }, "postcss-modules-extract-imports": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", @@ -85564,27 +84164,6 @@ "side-channel": "^1.0.6" } }, - "query-ast": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.3.tgz", - "integrity": "sha512-k7z4jilpZCujhiJ+QeKSwYXHc9HxqiVKlVE7/em0zBfPpcqnXKUP8F7ld7XaAkO6oXeAD7yonqcNJWqOF2pSGA==", - "dev": true, - "requires": { - "invariant": "2.2.2", - "lodash": "^4.17.15" - }, - "dependencies": { - "invariant": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", - "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - } - } - }, "query-selector-shadow-dom": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.0.tgz", @@ -86472,12 +85051,13 @@ "integrity": "sha512-ysyw95gLBhMAzqIVrOHJ2yMrRQHAS+h97bS9r89Z7Ou10Jhl2k5KOsyjPqrxL+WfEanov0o5bAMVzQ7AKyENHA==" }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-alpn": { @@ -86493,6 +85073,16 @@ "resolve-from": "^5.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -86691,15 +85281,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sass": { - "version": "1.35.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.35.1.tgz", - "integrity": "sha512-oCisuQJstxMcacOPmxLNiLlj4cUyN2+8xJnG7VanRoh2GOLr9RqkvI4AxA4a6LHVg/rsu+PmxXeGhrdSF9jCiQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0" - } - }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -86723,16 +85304,6 @@ "ajv-keywords": "^3.5.2" } }, - "scss-parser": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.4.tgz", - "integrity": "sha512-oDZwDfY2JhnDrHNZPcdcPNVTpAXsJBY2/uhFfN0IzMy1xExAfJDcI1Yl/VXhfRsdQL3wLeg6/Oxt3cafBOuMzQ==", - "dev": true, - "requires": { - "invariant": "2.2.4", - "lodash": "^4.17.4" - } - }, "seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -86841,9 +85412,9 @@ } }, "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "requires": { "randombytes": "^2.1.0" } @@ -87548,9 +86119,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" }, "source-map-loader": { "version": "4.0.1", @@ -87581,12 +86152,6 @@ "source-map": "^0.6.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "spacetrim": { "version": "0.11.37", "resolved": "https://registry.npmjs.org/spacetrim/-/spacetrim-0.11.37.tgz", @@ -87868,12 +86433,6 @@ "safe-buffer": "~5.2.0" } }, - "string-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", - "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=", - "dev": true - }, "string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -88111,6 +86670,11 @@ "has-flag": "^4.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -88350,6 +86914,18 @@ "source-map-support": "~0.5.20" } }, + "terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + } + }, "test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -89432,6 +88008,15 @@ "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", "integrity": "sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==" }, + "watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, "wbuf": { "version": "1.7.3", "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", @@ -89792,6 +88377,43 @@ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" }, + "webpack": { + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", + "requires": { + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + } + } + }, "webpack-cli": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", diff --git a/package.json b/package.json index d6cb7f6850d..985159160e9 100644 --- a/package.json +++ b/package.json @@ -70,12 +70,9 @@ }, "//": "See depcheck for why we have some of these dependencies at the root of the monorepo", "devDependencies": { - "@babel/core": "7.16.0", - "@babel/parser": "7.16.0", "@mongodb-js/monorepo-tools": "^1.1.1", "@mongodb-js/sbom-tools": "^0.7.0", "@testing-library/dom": "^8.20.1", - "babel-loader": "^7.1.5", "husky": "^8.0.3", "js-yaml": "^4.1.0", "lerna": "^7.1.5", diff --git a/packages/compass-e2e-tests/.depcheckrc b/packages/compass-e2e-tests/.depcheckrc index 6986d6670be..a14dc086cad 100644 --- a/packages/compass-e2e-tests/.depcheckrc +++ b/packages/compass-e2e-tests/.depcheckrc @@ -5,3 +5,7 @@ ignores: - 'mongodb-compass' - 'ps-list' - 'mongodb-runner' +# TODO(COMPASS-8312): depcheck doesn't count this dependency because it's a +# types only import and the depcheck parser is resolving the @types/ +# package as a dep instead + - 'puppeteer' diff --git a/packages/compass-explain-plan/.depcheckrc b/packages/compass-explain-plan/.depcheckrc index 86e94db5343..e2008147244 100644 --- a/packages/compass-explain-plan/.depcheckrc +++ b/packages/compass-explain-plan/.depcheckrc @@ -7,5 +7,9 @@ ignores: - '@types/chai-dom' - '@types/react' - '@types/react-dom' +# TODO(COMPASS-8312): depcheck doesn't count this dependency because it's a +# types only import and the depcheck parser is resolving the @types/ +# package as a dep instead + - 'd3-hierarchy' ignore-patterns: - 'dist' diff --git a/packages/compass-preferences-model/package.json b/packages/compass-preferences-model/package.json index 3865724a107..711078b9fc0 100644 --- a/packages/compass-preferences-model/package.json +++ b/packages/compass-preferences-model/package.json @@ -65,6 +65,7 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/testing-library-compass": "^1.0.1", + "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/js-yaml": "^4.0.5", "@types/yargs-parser": "21.0.0", "chai": "^4.3.6", diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index ffd8909a0df..1e3a95da45a 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -84,6 +84,7 @@ "@mongodb-js/compass-welcome": "^0.40.0", "@mongodb-js/compass-workspaces": "^0.23.0", "@mongodb-js/connection-storage": "^0.21.0", + "@mongodb-js/devtools-proxy-support": "^0.3.9", "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", diff --git a/packages/hadron-app-registry/.depcheckrc b/packages/hadron-app-registry/.depcheckrc index fe20b38ee8a..1d15831be9a 100644 --- a/packages/hadron-app-registry/.depcheckrc +++ b/packages/hadron-app-registry/.depcheckrc @@ -4,3 +4,7 @@ ignores: - "@types/chai" - "@types/sinon-chai" - "sinon" +# TODO(COMPASS-8312): depcheck doesn't count this dependency because it's a +# types only import and the depcheck parser is resolving the @types/ +# package as a dep instead + - "reflux" diff --git a/scripts/package.json b/scripts/package.json index bf70163cbff..9c20a3595e6 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -32,6 +32,7 @@ "devDependencies": { "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/tsconfig-compass": "^1.0.5", "depcheck": "^1.4.1", "eslint": "^7.25.0", "prettier": "^2.7.1" From 1b1baf66c1f02904a0bb58348923ddf4fcf0998c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 12:28:30 +0000 Subject: [PATCH 52/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6256) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- THIRD-PARTY-NOTICES.md | 385 +++++------------------------------------ docs/tracking-plan.md | 2 +- 2 files changed, 42 insertions(+), 345 deletions(-) diff --git a/THIRD-PARTY-NOTICES.md b/THIRD-PARTY-NOTICES.md index 890f7814095..8aeb729ff6e 100644 --- a/THIRD-PARTY-NOTICES.md +++ b/THIRD-PARTY-NOTICES.md @@ -29,7 +29,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[@aws-sdk/util-user-agent-node](#78337458e259597e1af9ae36c139707b9d47d298d6b660fda8ca49f7a6039933)** | 3.614.0 | Apache-2.0 | | **[@babel/code-frame](#414cb15586d104447ca15cc1904c5779eb415e9079a4a3ca6a81ad96ba9ee4e1)** | 7.24.7 | MIT | | **[@babel/compat-data](#b4fe3477d50389378e6666362dee06b0abe468140f77f427b952059f193a7a38)** | 7.25.2 | MIT | -| **[@babel/core](#c5f859753e1c47fb8300f9ee25830d5458b76162f472b6a052e4c2a6597a33ff)** | 7.16.0 | MIT | | **[@babel/core](#cb1e750729bb20848944291eb3bd3ec445a032e1929fef18d6ee0a6ef3f04bcb)** | 7.25.2 | MIT | | **[@babel/generator](#0b27790f5456040ac13e71653c95ea0152f86742fcab51983e67601681ba94e0)** | 7.25.0 | MIT | | **[@babel/helper-annotate-as-pure](#029a306089573d76f9def44953787148e1b886d6f554efd9b97b9e7c226a0bb7)** | 7.22.5 | MIT | @@ -51,9 +50,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[@babel/helper-validator-option](#cfe2d04997b6c7a764f96a7383b7518f4ad73844a12cc8dc3537045dcc297fad)** | 7.24.8 | MIT | | **[@babel/helpers](#43b0b2e5ad67e18b90f0a2f60c96c3818519ddba3de59ed0c52a594f33e7b32a)** | 7.25.0 | MIT | | **[@babel/highlight](#ac1d96bb7961d93c529e7b46f2fcf1ee07f0cb15851aab1ac5f212b46e0f0e7d)** | 7.24.7 | MIT | -| **[@babel/parser](#14bef066dc710f43f74ea7b6c8a9033e23accdd25f2e32a403481a61be702d82)** | 7.16.0 | MIT | -| **[@babel/parser](#27fe55f0faea5a61c0cdbab26c30ea4f100865e6ae484124c0f65be8ecedc04e)** | 7.19.4 | MIT | -| **[@babel/parser](#2d366b9f8c9ebfcd08f60ebbc93b47a2465d6637168d605287527e0fd79e1539)** | 7.25.0 | MIT | | **[@babel/parser](#4dfa90cfe90188b3d219eee843ef7f70003af7c190bbb15dd2fe74a57ab9ae16)** | 7.25.6 | MIT | | **[@babel/plugin-syntax-jsx](#92b0c9e2acd6beca918c90ecdc4cc5973ac7c517f7dee4ef88df317effdfa44b)** | 7.22.5 | MIT | | **[@babel/plugin-syntax-typescript](#61156a21baf5a28e3fe10ec0f30808684165b1dbb5f5122c2e2eaf69f6f4f237)** | 7.21.4 | MIT | @@ -66,7 +62,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[@babel/runtime](#3a0292b85c21e6020d26f99075ac094fa943f759b0df9b7c01cccf01f65efeb9)** | 7.21.0 | MIT | | **[@babel/template](#ce7b7770e36438d8eb9e8713520aca18c79d1fd0cad068eeb5c88cede557f6a3)** | 7.25.0 | MIT | | **[@babel/traverse](#bc1b8d30e8e37f5eade430e098b05094a0dd90264ff2c291510973e5315014af)** | 7.25.2 | MIT | -| **[@babel/types](#9aa7b92f70d8ba232144b9cc1fcb0bcd4232c685ec191eb7b7dc2d79cd4056a7)** | 7.25.2 | MIT | | **[@babel/types](#c6630d254fc6e684be9d283c7020e7e911bb98d9c99a3e405e4467b1e57ec9f4)** | 7.25.6 | MIT | | **[@codemirror/autocomplete](#62d2362c07f0c11664969b60d0d7c3e081905838b8994675aaf0e6c67baf358d)** | 6.17.0 | MIT | | **[@codemirror/commands](#e12a76404dd2d66430f2dff53a430449896e9b5c2558779497b855ba2ab9326a)** | 6.1.2 | MIT | @@ -94,7 +89,7 @@ This document was automatically generated on Tue Sep 17 2024. | **[@jridgewell/gen-mapping](#25a8188ec7d87cf1b9baf2470bad1f75a22f246ca0fca732933d26fd488ef5d2)** | 0.3.5 | MIT | | **[@jridgewell/resolve-uri](#f356bc3bb9c04f5fe4e387a4eea4e74125aae03bb50f846d956d7d986d200f50)** | 3.1.0 | MIT | | **[@jridgewell/set-array](#46727c727ad43ad8e382221964d27c475629a5635986edac6ea622c772311421)** | 1.2.1 | MIT | -| **[@jridgewell/sourcemap-codec](#48d1d40d908582402e2071de1ae38b57c21fc0e7615f8f82f3f5b1f0cad0dd93)** | 1.4.14 | MIT | +| **[@jridgewell/sourcemap-codec](#7b2141e6a44d38d8458ddcb163c26ab65d5782f6c25465b1954182593dd0c2c4)** | 1.5.0 | MIT | | **[@jridgewell/trace-mapping](#73923b51cccefe7db1ead00c09a18978443a238d51a858a7a0c86868a9a4ea3f)** | 0.3.25 | MIT | | **[@lezer/common](#4bf054ecf9e3b46b5959ff484326d62af9e9d7698317b1e8a5f11a5ebf66534a)** | 1.2.1 | MIT | | **[@lezer/highlight](#30f07ec49dde0ce2f5c814903361f4d9c8b9fc2d8bb143d2e682e05d94a69ee6)** | 1.2.0 | MIT | @@ -212,7 +207,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[component-event](#32d720e7a217746311d55af1f088a9ab8ae8a3966be80250634fbff4c2c45935)** | 0.1.4 | MIT | | **[content-disposition](#b0fd3fa1e97f5d899f52e84c86cd6d0a077cabef2388f531bf62f1f1dbdbc371)** | 0.5.4 | MIT | | **[content-type](#65e9de41d2cef0ed95875e387bc56dae50b05d41b1a7868ed68c32834843bbab)** | 1.0.5 | MIT | -| **[convert-source-map](#0acf0ab7734deb5e364e5150eb235062022893835b113aa11e0c7e9065fa5073)** | 1.8.0 | MIT | | **[convert-source-map](#46e32cfc12079a57eefebf967b5959d3657698c6a389222eb3228f49cb2fd8db)** | 2.0.0 | MIT | | **[cookie-signature](#28f6116b52488ac66a14424869fc346f611bea6c894e7d0f7f2ca701deb8e49c)** | 1.0.6 | MIT | | **[cookie](#c396652ff004385e7bdb8398e37493d5f4144e475282a413ec52f1d3fdaf25da)** | 0.6.0 | MIT | @@ -231,6 +225,7 @@ This document was automatically generated on Tue Sep 17 2024. | **[debug](#233219ced46fb5b84e28859835e97775eb9d0181f4cb85d6aa5cecb61e595947)** | 2.6.9 | MIT | | **[debug](#f9b654e80c05af90dc288869333e452db67fbba75969b385acd60df9895a7944)** | 4.3.4 | MIT | | **[debug](#8f6d58c520b4b6702b6fb9abb811ba1798560ac052612c0fa8dc243516825360)** | 4.3.6 | MIT | +| **[debug](#8bcd678354554043662ec7b1a1fc890da6dca2f1f245833d5400831daaeb3fc5)** | 4.3.7 | MIT | | **[decompress-response](#71cad5eab34cc643a6a7853a43d3090ac7e8b6014c9ec55fabb8112cdbfd9fbd)** | 5.0.0 | MIT | | **[deep-equal](#2f9e585913d3ba1d9ffaf3e79f616e66788fa687f6069a567aee25bb3045410a)** | 2.2.3 | MIT | | **[deep-extend](#654bd7d00073c2195bca924a07d93393b2aaf5cacbb6f52a383877f6f33dbfbf)** | 0.6.0 | MIT | @@ -442,7 +437,7 @@ This document was automatically generated on Tue Sep 17 2024. | **[lodash.union](#9ee2120113e7c91fbcbee571e2fae44f1e7f87afb331cca6eb46a3d318d6169e)** | 3.1.0 | MIT | | **[lodash.uniqueid](#f4693b5b22365d675cec07ce8ca01fc235054f442963585ee0097efdae26995b)** | 3.2.0 | MIT | | **[lodash](#adaac4144887ebc2c1b682380ff385210f681fc58b4bc1ef3986148cf8dcd28a)** | 4.17.21 | MIT | -| **[lru-cache](#1ea0bf8b28ace14de4e2fc9471ee313d67042cd77c198afd0729e3df12c79b0d)** | 11.0.0 | ISC | +| **[lru-cache](#8d10f71b6ab389fdca1b55e9aa96d77790f776843bd42ca91804a40a0d543f19)** | 11.0.1 | ISC | | **[lru-cache](#fe7f0a2f2cf4c92f13c3a2a63f14f80f20f6919979306dc054e4f947c1234651)** | 5.1.1 | ISC | | **[lru-cache](#938513411a6603ce29334db15563fb94b7d52f839d32b9bd78c18f5d3f98aa5a)** | 6.0.0 | ISC | | **[lz-string](#a04d0916e49897705fe7a9d865134920984a19a03f8de501d4e46c6698a6b421)** | 1.5.0 | MIT | @@ -513,7 +508,7 @@ This document was automatically generated on Tue Sep 17 2024. | **[path-key](#e1a2a032096ace66b422351e00b11b0229e42e4b49c2146f439f8fe442218451)** | 3.1.1 | MIT | | **[path-key](#8e0734b8abb76579df2174822606e692914e985fc58363a78e6ad4b2a4a5831f)** | 4.0.0 | MIT | | **[path-to-regexp](#96d230365f414cce8d80ceb9d99d855685dfa922f931b49ea01952a1efe64266)** | 0.1.10 | MIT | -| **[picocolors](#87994c8f4d800603a2cf449baca40fcaf984088237be5cebbfbc79de0d95da98)** | 1.0.1 | ISC | +| **[picocolors](#f964752f1f8cfd947506fd51ce1c148469ecf3b6f531d826511b720670e556f1)** | 1.1.0 | ISC | | **[polished](#a7a5d1244e48a082dbc54de31b5309caf950b12aa6bd9fefbba39e362e705f06)** | 4.2.2 | MIT | | **[possible-typed-array-names](#5ba4283f5512abd5d57e79c0a75acb3818d98d169df979afb01ad6867cefd312)** | 1.0.0 | MIT | | **[prebuild-install](#93d13a9b3a51a6a802fcd35aa031d3ae7369aa6fd47d3a89f28a6d31ea3c9dc5)** | 7.1.2 | MIT | @@ -553,7 +548,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[reservoir](#84f8998f94ad5bd85b50458378edf3815fff553cdcabf8ced3db418f05e85ff6)** | 0.1.2 | MIT | | **[resolve-mongodb-srv](#2ae8b0c9dbe8e8c900bfaf5567bcf2af917e62fb0a24121b4d667dffbeaffa99)** | 1.1.5 | Apache-2.0 | | **[run-applescript](#f4d3cc18b69c2dec9e4f1d19a1cb794c8fa2e548e530f4033dc6b0caf803bebc)** | 5.0.0 | MIT | -| **[safe-buffer](#115052870841b125f6e9deb1b800b99ed9c660f269050eafb32c84bdd9211f12)** | 5.1.2 | MIT | | **[safe-buffer](#952cf236ee56e7de5ea7e772caf3e256866f9dbdffc492539c48cd8c15ac9674)** | 5.2.1 | MIT | | **[safer-buffer](#2fb14d3728e4ebf313be4634b146bd90cd3ad3559157baec03b64eec0878a0ba)** | 2.1.2 | MIT | | **[scheduler](#950b09ca6f4766ded0bdde81e2697b5e184ed63925d74a8f512c978cab5bda6f)** | 0.20.2 | MIT | @@ -578,7 +572,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[sort-keys-length](#af13db706339ff49fba434ce0fbda036b99f3dc30e66a530b64374afd5a1eec1)** | 1.0.1 | MIT | | **[sort-keys](#714faeb378f5373d2aa5f80825d02c9f7ab2cacb699db02c84e675d193a6bfa8)** | 1.1.2 | MIT | | **[source-code-pro](#0496fbae8c99eac4b7354b7eb0a394806e547de30fd2acbdf14f2ac77079e643)** | 2.38.0 | OFL-1.1 | -| **[source-map](#40ab158a4f9c7e0cb2e7fc113cfd0df14cabf73f76ff90e255227d216f5ce28c)** | 0.5.7 | BSD-3-Clause | | **[source-map](#55fb2b4a8e114a26cce0c971365f26175ae0d834849c5edebbdb5adafaa08787)** | 0.6.1 | BSD-3-Clause | | **[sparse-bitfield](#0cbcf2cac3ff859d288ae5ffc2c793bbd2430b120f5930bd09b6dba7259086d7)** | 3.0.3 | MIT | | **[sprintf-js](#d8b6ff1ba6436283de681a756ad453428005e61986c5113a3a8088ced2b36eb7)** | 1.1.3 | BSD-3-Clause | @@ -609,7 +602,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[to-fast-properties](#79afe8c8f3cc0bb1187c6ffaf6105b49888137e917978e870d67727353aba954)** | 2.0.0 | MIT | | **[toidentifier](#2067d1f99d35f28c8384d3e9762282f3c2ded0041392af855caf28ba2209bd2a)** | 1.0.1 | MIT | | **[tr46](#a94418e116fb43931c49abb9cd596d6814a55956c3d0d11b7e225592b9977197)** | 0.0.3 | MIT | -| **[tr46](#68f1ee14543e0adeddce4bb4422886f20da6ce5cb83508383fa092c15689cf8a)** | 3.0.0 | MIT | | **[tr46](#73a239b431778fd3a06957f11cd6de530a4ba35ca946f8656f46e02228113c2b)** | 4.1.1 | MIT | | **[tslib](#c5fc5d0adaeec50d156fc1f9a16cbca801bfb431eb78f3647a1237a0e239ae35)** | 2.6.2 | 0BSD | | **[tslib](#bd15b467ea785206b74637cc23d2b9088ba8fa47aa3034d1217f3dea848c1d1e)** | 2.6.3 | 0BSD | @@ -633,7 +625,6 @@ This document was automatically generated on Tue Sep 17 2024. | **[webidl-conversions](#3604b2bfa479706fe7bd8068257240d32158704a3bffae30b414963343027aa1)** | 3.0.1 | BSD-2-Clause | | **[webidl-conversions](#cb7c681998e7ee3c598e6e37432bcf448946924eefe816636c3cb122bae46e1c)** | 7.0.0 | BSD-2-Clause | | **[webpack](#bd55cdb69f5b1b336d12c3f00d849ccb1f2c39987c257c89027d6a790f947496)** | 5.94.0 | MIT | -| **[whatwg-url](#5d2cdcc7276796013d4573d401d239ff04971bb5a44fbb0e1bc62cae6f5ca911)** | 11.0.0 | MIT | | **[whatwg-url](#3a968d9d3fed498fc1edf2f65459cc89b6a2fea277b5c9b5c3f3a0b41390835a)** | 13.0.0 | MIT | | **[whatwg-url](#cd3f81c4a0fd856ab1d9c9fc99c1d7eaf2c12c4867b218e9901e5020a1ffcd85)** | 5.0.0 | MIT | | **[which-boxed-primitive](#b3f94b6da310368951f52909c400e19c4c2c7a282ba67374f41ab2d070bf83f2)** | 1.0.2 | MIT | @@ -4944,39 +4935,6 @@ License tags: MIT License files: -- LICENSE: - - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -### [@babel/core](https://www.npmjs.com/package/@babel/core) (version 7.16.0) - -License tags: MIT - -License files: - - LICENSE: MIT License @@ -5695,96 +5653,6 @@ License files: OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.16.0) - -License tags: MIT - -License files: - -- LICENSE: - - Copyright (C) 2012-2014 by various contributors (see AUTHORS) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - - -### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.19.4) - -License tags: MIT - -License files: - -- LICENSE: - - Copyright (C) 2012-2014 by various contributors (see AUTHORS) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - - - -### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.25.0) - -License tags: MIT - -License files: - -- LICENSE: - - Copyright (C) 2012-2014 by various contributors (see AUTHORS) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ### [@babel/parser](https://www.npmjs.com/package/@babel/parser) (version 7.25.6) @@ -6153,39 +6021,6 @@ License tags: MIT License files: -- LICENSE: - - MIT License - - Copyright (c) 2014-present Sebastian McKenzie and other contributors - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - - -### [@babel/types](https://www.npmjs.com/package/@babel/types) (version 7.25.2) - -License tags: MIT - -License files: - - LICENSE: MIT License @@ -7067,9 +6902,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [@jridgewell/sourcemap-codec](https://www.npmjs.com/package/@jridgewell/sourcemap-codec) (version 1.4.14) +### [@jridgewell/sourcemap-codec](https://www.npmjs.com/package/@jridgewell/sourcemap-codec) (version 1.5.0) License tags: MIT @@ -18062,40 +17897,6 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -### [convert-source-map](https://www.npmjs.com/package/convert-source-map) (version 1.8.0) - -License tags: MIT - -License files: - -- LICENSE: - - Copyright 2013 Thorsten Lorenz. - All rights reserved. - - Permission is hereby granted, free of charge, to any person - obtaining a copy of this software and associated documentation - files (the "Software"), to deal in the Software without - restriction, including without limitation the rights to use, - copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following - conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - OTHER DEALINGS IN THE SOFTWARE. - ### [convert-source-map](https://www.npmjs.com/package/convert-source-map) (version 2.0.0) @@ -18617,6 +18418,36 @@ License tags: MIT License files: +- LICENSE: + + (The MIT License) + + Copyright (c) 2014-2017 TJ Holowaychuk + Copyright (c) 2018-2021 Josh Junon + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the 'Software'), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial + portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT + LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +### [debug](https://www.npmjs.com/package/debug) (version 4.3.7) + +License tags: MIT + +License files: + - LICENSE: (The MIT License) @@ -26457,9 +26288,9 @@ License files: licenses; we recommend you read them, as their terms may differ from the terms above. - + -### [lru-cache](https://www.npmjs.com/package/lru-cache) (version 11.0.0) +### [lru-cache](https://www.npmjs.com/package/lru-cache) (version 11.0.1) License tags: ISC @@ -30311,9 +30142,9 @@ License files: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + -### [picocolors](https://www.npmjs.com/package/picocolors) (version 1.0.1) +### [picocolors](https://www.npmjs.com/package/picocolors) (version 1.1.0) License tags: ISC @@ -30323,7 +30154,7 @@ License files: ISC License - Copyright (c) 2021 Alexey Raspopov, Kostiantyn Denysov, Anton Verinov + Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -37868,38 +37699,6 @@ License files: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -### [safe-buffer](https://www.npmjs.com/package/safe-buffer) (version 5.1.2) - -License tags: MIT - -License files: - -- LICENSE: - - The MIT License (MIT) - - Copyright (c) Feross Aboukhadijeh - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ### [safe-buffer](https://www.npmjs.com/package/safe-buffer) (version 5.2.1) @@ -38753,44 +38552,6 @@ License files: OTHER DEALINGS IN THE FONT SOFTWARE. - - -### [source-map](https://www.npmjs.com/package/source-map) (version 0.5.7) - -License tags: BSD-3-Clause - -License files: - -- LICENSE: - - Copyright (c) 2009-2011, Mozilla Foundation and contributors - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the names of the Mozilla Foundation nor the names of project - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - ### [source-map](https://www.npmjs.com/package/source-map) (version 0.6.1) @@ -39819,38 +39580,6 @@ License files: License tags: MIT - - -### [tr46](https://www.npmjs.com/package/tr46) (version 3.0.0) - -License tags: MIT - -License files: - -- LICENSE.md: - - The MIT License (MIT) - - Copyright (c) Sebastian Mayr - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ### [tr46](https://www.npmjs.com/package/tr46) (version 4.1.1) @@ -40997,38 +40726,6 @@ License files: TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -### [whatwg-url](https://www.npmjs.com/package/whatwg-url) (version 11.0.0) - -License tags: MIT - -License files: - -- LICENSE.txt: - - The MIT License (MIT) - - Copyright (c) Sebastian Mayr - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - ### [whatwg-url](https://www.npmjs.com/package/whatwg-url) (version 13.0.0) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index fab570b77b0..bad9fae87e2 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Tue, Sep 17, 2024 at 05:11 AM +Generated on Tue, Sep 17, 2024 at 12:28 PM ## Table of Contents From b242946dbf4245c32c22a6fce8c0e3870b031b68 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Tue, 17 Sep 2024 15:25:42 +0200 Subject: [PATCH 53/57] chore(deps): add latest ag-grid vuln to the ignore list (#6257) --- .snyk | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.snyk b/.snyk index 61ab32b5bb8..604a824df98 100644 --- a/.snyk +++ b/.snyk @@ -16,9 +16,18 @@ ignore: created: 2023-10-30T10:18:43.435Z SNYK-JS-ELECTRON-7443355: - '*': - reason: Not applicable as we do not open / allow opening random webpages in our Electron app. + reason: >- + Not applicable as we do not open / allow opening random webpages in + our Electron app. expires: 2024-07-25T12:41:36.996Z created: 2024-07-19T12:41:36.999Z + SNYK-JS-AGGRIDCOMMUNITY-7414157: + - '*': + reason: >- + Not applicable as we don't use ag-grid utils and the library never + passes user input directly to the merge function + expires: 2025-09-17T13:05:57.065Z + created: 2024-09-17T13:05:57.071Z # patches apply the minimum changes required to fix a vulnerability patch: 'npm:ms:20170412': From 1c2d2b2789f365e985be98026d2088f0bc245153 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 13:32:16 +0000 Subject: [PATCH 54/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6258) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- docs/tracking-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index bad9fae87e2..b60efa27b2d 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Tue, Sep 17, 2024 at 12:28 PM +Generated on Tue, Sep 17, 2024 at 01:32 PM ## Table of Contents From 9393cb0d5342c1522d7921ddb868725b33e230a3 Mon Sep 17 00:00:00 2001 From: Sergey Petushkov Date: Tue, 17 Sep 2024 17:27:51 +0200 Subject: [PATCH 55/57] chore(connections): remove connectionInfoAccess interface from everywhere in the app COMPASS-8306 (#6249) * chore(connections): remove connectionInfoAccess interface from everywhere in the app * chore: fix various check failures * chore(serverstats): esm export for refactored component * chore(serverstats): fix component import --- configs/testing-library-compass/src/index.tsx | 27 +- package-lock.json | 21 +- package.json | 7 +- packages/compass-aggregations/package.json | 1 + .../aggregation-side-panel/index.tsx | 8 +- .../pipeline-editor.tsx | 8 +- .../dnd-wrapper.tsx | 8 +- .../pipeline-toolbar/pipeline-ai.tsx | 8 +- .../stage-editor/stage-editor.spec.tsx | 11 +- .../components/stage-editor/stage-editor.tsx | 9 +- packages/compass-aggregations/src/index.ts | 4 +- .../src/modules/aggregation.spec.ts | 2 +- .../src/modules/aggregation.ts | 16 +- .../src/modules/focus-mode.ts | 8 +- .../compass-aggregations/src/modules/index.ts | 4 +- .../src/modules/out-results-fn.ts | 5 +- .../modules/pipeline-builder/pipeline-ai.ts | 4 +- .../modules/pipeline-builder/pipeline-mode.ts | 4 +- .../pipeline-builder/stage-editor.spec.ts | 18 +- .../modules/pipeline-builder/stage-editor.ts | 20 +- .../src/modules/saved-pipeline.ts | 16 +- .../src/modules/saving-pipeline.ts | 5 +- .../src/modules/side-panel.ts | 4 +- .../src/modules/update-view.spec.ts | 20 +- .../src/modules/update-view.ts | 4 +- .../compass-aggregations/src/stores/store.ts | 11 +- .../src/instances-manager.spec.ts | 4 +- .../src/components/collection-tab.tsx | 8 +- .../src/components/breadcrumb.tsx | 2 +- .../src/components/empty-content.tsx | 2 +- .../src/connection-info-provider.tsx | 159 +++------ .../connection-scoped-app-registry.spec.ts | 11 +- .../src/connection-scoped-app-registry.ts | 15 +- packages/compass-connections/src/provider.ts | 8 +- packages/compass-crud/package.json | 1 + .../src/components/crud-toolbar.tsx | 12 +- packages/compass-crud/src/index.ts | 4 +- .../src/stores/crud-store.spec.ts | 18 +- .../compass-crud/src/stores/crud-store.ts | 51 ++- packages/compass-editor/src/editor.tsx | 6 +- packages/compass-explain-plan/src/index.ts | 4 +- .../stores/explain-plan-modal-store.spec.ts | 13 +- .../src/stores/explain-plan-modal-store.ts | 4 +- .../compass-explain-plan/src/stores/index.ts | 4 +- .../compass-export-to-language/package.json | 1 - .../src/components/modal.tsx | 30 +- .../src/index.spec.tsx | 34 +- .../src/stores/field-store-service.ts | 24 +- .../create-index-modal/create-index-modal.tsx | 8 +- .../base-search-index-modal.tsx | 8 +- packages/compass-indexes/src/index.ts | 8 +- .../src/modules/create-index/index.spec.js | 2 +- .../src/modules/create-index/index.ts | 8 +- packages/compass-indexes/src/modules/index.ts | 4 +- .../src/modules/search-indexes.ts | 12 +- .../src/stores/create-index.ts | 8 +- .../compass-indexes/src/stores/drop-index.tsx | 8 +- .../compass-indexes/src/stores/store.spec.ts | 10 +- packages/compass-indexes/src/stores/store.ts | 8 +- packages/compass-indexes/test/setup-store.ts | 13 +- .../src/components/query-ai.tsx | 8 +- .../query-history-button-popover.tsx | 8 +- .../query-history/favorite-list.tsx | 12 +- .../src/components/query-history/index.tsx | 8 +- .../components/query-history/recent-list.tsx | 12 +- .../src/components/query-option.tsx | 12 +- packages/compass-query-bar/src/index.tsx | 4 +- .../src/stores/ai-query-reducer.spec.ts | 16 +- .../src/stores/ai-query-reducer.ts | 4 +- .../src/stores/query-bar-store.ts | 10 +- .../compass-schema-validation/package.json | 2 + .../validation-editor.spec.tsx | 32 +- .../validation-editor/validation-editor.tsx | 334 ++++++++---------- .../validation-states.spec.tsx | 141 +++----- .../compass-schema-validation/src/index.ts | 4 +- .../src/modules/index.ts | 4 +- .../src/modules/validation.ts | 8 +- .../src/modules/zero-state.ts | 8 +- .../src/stores/store.spec.ts | 10 +- .../src/stores/store.ts | 10 +- packages/compass-schema/src/index.ts | 4 +- .../compass-schema/src/stores/store.spec.ts | 10 +- packages/compass-schema/src/stores/store.ts | 12 +- packages/compass-serverstats/package.json | 2 +- .../src/components/current-op-component.jsx | 202 ----------- .../src/components/current-op-component.tsx | 139 ++++++++ .../src/components/detailview-component.tsx | 20 +- .../src/components/index.tsx | 12 +- .../server-stats-lists-component.jsx | 2 +- .../src/components/server-stats-toolbar.tsx | 8 +- .../enzyme/performance-component.test.jsx | 31 +- .../test/enzyme/server-stats-toolbar.test.tsx | 17 +- packages/compass-shell/package.json | 1 + packages/compass-shell/src/index.ts | 4 +- .../src/modules/worker-runtime.ts | 10 +- packages/compass-shell/src/plugin.tsx | 4 +- packages/connection-storage/src/provider.ts | 3 - .../src/items-grid.tsx | 8 +- 98 files changed, 796 insertions(+), 1105 deletions(-) delete mode 100644 packages/compass-serverstats/src/components/current-op-component.jsx create mode 100644 packages/compass-serverstats/src/components/current-op-component.tsx diff --git a/configs/testing-library-compass/src/index.tsx b/configs/testing-library-compass/src/index.tsx index 5f30ebca6f1..0e4a90e18ee 100644 --- a/configs/testing-library-compass/src/index.tsx +++ b/configs/testing-library-compass/src/index.tsx @@ -47,8 +47,8 @@ import { import { TelemetryProvider } from '@mongodb-js/compass-telemetry/provider'; import { CompassComponentsProvider } from '@mongodb-js/compass-components'; import { + TestEnvCurrentConnectionContext, ConnectionInfoProvider, - TEST_CONNECTION_INFO, } from '@mongodb-js/compass-connections/src/connection-info-provider'; import type { State } from '@mongodb-js/compass-connections/src/stores/connections-store-redux'; import { createDefaultConnectionInfo } from '@mongodb-js/compass-connections/src/stores/connections-store-redux'; @@ -231,6 +231,17 @@ const EmptyWrapper = ({ children }: { children: React.ReactElement }) => { return <>{children}; }; +const TEST_ENV_CURRENT_CONNECTION = { + info: { + id: 'TEST', + connectionOptions: { + connectionString: 'mongodb://localhost:27020', + }, + }, + status: 'connected' as const, + error: null, +}; + function createWrapper( options: TestConnectionsOptions, // When using renderHook, anything that will try to call createPortal will @@ -331,9 +342,13 @@ function createWrapper( preloadStorageConnectionInfos={options.connections} > - - {children} - + + + {children} + + @@ -461,7 +476,7 @@ function createConnectionInfoWrapper( async function renderWithActiveConnection( ui: React.ReactElement, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, + connectionInfo: ConnectionInfo = TEST_ENV_CURRENT_CONNECTION.info, { connections, wrapper: Wrapper = EmptyWrapper, @@ -483,7 +498,7 @@ async function renderWithActiveConnection( async function renderHookWithActiveConnection( cb: (props: HookProps) => HookResult, - connectionInfo: ConnectionInfo = TEST_CONNECTION_INFO, + connectionInfo: ConnectionInfo = TEST_ENV_CURRENT_CONNECTION.info, { connections, wrapper: Wrapper = EmptyWrapper, diff --git a/package-lock.json b/package-lock.json index 2de3305aec6..d5f97858eb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43914,6 +43914,7 @@ "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", + "@types/enzyme": "^3.10.14", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", "chai": "^4.3.6", @@ -44466,6 +44467,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", @@ -44987,7 +44989,6 @@ "redux": "^4.2.1" }, "devDependencies": { - "@mongodb-js/compass-logging": "^1.4.7", "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", @@ -46080,7 +46081,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -46147,9 +46150,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", - "@types/enzyme": "^3.10.14", "chai": "^4.1.2", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", @@ -46270,6 +46273,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", @@ -55909,6 +55913,7 @@ "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", + "@types/enzyme": "^3.10.14", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", "bson": "^6.7.0", @@ -56408,6 +56413,7 @@ "@mongodb-js/shell-bson-parser": "^1.1.2", "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "@types/reflux": "^6.4.3", "ag-grid-community": "^20.2.0", "ag-grid-react": "^20.2.0", @@ -56641,7 +56647,6 @@ "@mongodb-js/compass-components": "^1.29.4", "@mongodb-js/compass-connections": "^1.42.0", "@mongodb-js/compass-editor": "^0.30.0", - "@mongodb-js/compass-logging": "^1.4.7", "@mongodb-js/compass-maybe-protect-connection-string": "^0.26.3", "@mongodb-js/compass-telemetry": "^1.1.7", "@mongodb-js/eslint-config-compass": "^1.1.7", @@ -57475,7 +57480,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.3", @@ -57858,9 +57865,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", - "@types/enzyme": "^3.10.14", "chai": "^4.1.2", "d3": "^3.5.17", "d3-timer": "^1.0.3", @@ -57974,6 +57981,7 @@ "@mongosh/browser-repl": "^2.3.1", "@mongosh/logging": "^2.3.1", "@mongosh/node-runtime-worker-thread": "^2.3.1", + "@types/enzyme": "^3.10.14", "bson": "^6.7.0", "chai": "^4.2.0", "compass-preferences-model": "^2.28.3", @@ -63994,12 +64002,11 @@ "dev": true, "requires": { "@types/cheerio": "*", - "@types/react": "^16" + "@types/react": "^17.0.5" }, "dependencies": { "@types/react": { - "version": "16.14.47", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.47.tgz", + "version": "https://registry.npmjs.org/@types/react/-/react-16.14.47.tgz", "integrity": "sha512-m0EmmY73mbQegA+aqo0+O/hHU9iTi+hNYotJ3cM4sLFox8NqZv3XVXQhhqpd3YH6YC7h+YIyJFd36O5KlaJLCA==", "dev": true, "requires": { diff --git a/package.json b/package.json index 985159160e9..ec9f972f3d7 100644 --- a/package.json +++ b/package.json @@ -91,5 +91,10 @@ "packages/*", "configs/*", "scripts" - ] + ], + "overrides": { + "@types/enzyme": { + "@types/react": "^17.0.5" + } + } } diff --git a/packages/compass-aggregations/package.json b/packages/compass-aggregations/package.json index bf151659c59..197c3337a90 100644 --- a/packages/compass-aggregations/package.json +++ b/packages/compass-aggregations/package.json @@ -38,6 +38,7 @@ "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/babel__generator": "^7.6.8", + "@types/enzyme": "^3.10.14", "@types/lodash": "^4.14.188", "@types/semver": "^7.3.9", "chai": "^4.3.6", diff --git a/packages/compass-aggregations/src/components/aggregation-side-panel/index.tsx b/packages/compass-aggregations/src/components/aggregation-side-panel/index.tsx index ff3cb0d553c..38997ce8d28 100644 --- a/packages/compass-aggregations/src/components/aggregation-side-panel/index.tsx +++ b/packages/compass-aggregations/src/components/aggregation-side-panel/index.tsx @@ -18,7 +18,7 @@ import { FeedbackLink } from './feedback-link'; import { addWizard } from '../../modules/pipeline-builder/stage-editor'; import { UseCaseCard } from './stage-wizard-use-cases'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const containerStyles = css({ height: '100%', @@ -80,7 +80,7 @@ export const AggregationSidePanel = ({ onSelectUseCase, }: AggregationSidePanelProps) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const [searchText, setSearchText] = useState(''); const darkMode = useDarkMode(); @@ -112,10 +112,10 @@ export const AggregationSidePanel = ({ drag_and_drop: false, stage_name: useCase.stageOperator, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); }, - [onSelectUseCase, track, connectionInfoAccess] + [onSelectUseCase, track, connectionInfoRef] ); return ( diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.tsx index c5ee866344c..871e9f60fba 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-as-text-workspace/pipeline-editor.tsx @@ -21,7 +21,7 @@ import { changeEditorValue } from '../../../modules/pipeline-builder/text-editor import type { PipelineParserError } from '../../../modules/pipeline-builder/pipeline-parser/utils'; import { useAutocompleteFields } from '@mongodb-js/compass-field-store'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const containerStyles = css({ position: 'relative', @@ -81,7 +81,7 @@ export const PipelineEditor: React.FunctionComponent = ({ }) => { const fields = useAutocompleteFields(namespace); const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const editorInitialValueRef = useRef(pipelineText); const editorCurrentValueRef = useRef(pipelineText); editorCurrentValueRef.current = pipelineText; @@ -108,11 +108,11 @@ export const PipelineEditor: React.FunctionComponent = ({ num_stages, editor_view_type: 'text', }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); editorInitialValueRef.current = editorCurrentValueRef.current; } - }, [num_stages, track, connectionInfoAccess]); + }, [num_stages, track, connectionInfoRef]); const annotations: Annotation[] = useMemo(() => { return syntaxErrors diff --git a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx index 1b788bff88b..f7c67f4706c 100644 --- a/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx +++ b/packages/compass-aggregations/src/components/pipeline-builder-workspace/pipeline-builder-ui-workspace/dnd-wrapper.tsx @@ -17,7 +17,7 @@ import { UseCaseCardLayout } from '../../aggregation-side-panel/stage-wizard-use import type { PipelineBuilderUIWorkspaceProps } from '.'; import type { DraggedUseCase } from '../../aggregation-side-panel/stage-wizard-use-cases/use-case-card'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; // Types type PipelineBuilderDndWrapperProps = { @@ -72,7 +72,7 @@ const PipelineBuilderDndWrapper = ({ }) ); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const handleUseCaseDropped = useCallback( (event: DragEndEvent) => { @@ -85,7 +85,7 @@ const PipelineBuilderDndWrapper = ({ drag_and_drop: true, stage_name: draggedUseCase.stageOperator, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); onUseCaseDropped( draggedUseCase.id, @@ -95,7 +95,7 @@ const PipelineBuilderDndWrapper = ({ } setDraggedUseCase(null); }, - [draggedUseCase, onUseCaseDropped, track, connectionInfoAccess] + [draggedUseCase, onUseCaseDropped, track, connectionInfoRef] ); const handleSortEnd = useCallback( diff --git a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.tsx b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.tsx index b93451a7034..26ce182c7f6 100644 --- a/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.tsx +++ b/packages/compass-aggregations/src/components/pipeline-toolbar/pipeline-ai.tsx @@ -15,12 +15,12 @@ import type { RootState } from '../../modules'; import { useLogger } from '@mongodb-js/compass-logging/provider'; import { getPipelineStageOperatorsFromBuilderState } from '../../modules/pipeline-builder/builder-helpers'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const useOnSubmitFeedback = (lastAIPipelineRequestId: string | null) => { const logger = useLogger('AI-PIPELINE-UI'); const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); return useCallback( (feedback: 'positive' | 'negative', text: string) => { const { log, mongoLogId } = logger; @@ -42,7 +42,7 @@ const useOnSubmitFeedback = (lastAIPipelineRequestId: string | null) => { request_id: lastAIPipelineRequestId, text, }), - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); openToast('pipeline-ai-feedback-submitted', { @@ -51,7 +51,7 @@ const useOnSubmitFeedback = (lastAIPipelineRequestId: string | null) => { timeout: 10_000, }); }, - [logger, track, lastAIPipelineRequestId, connectionInfoAccess] + [logger, track, lastAIPipelineRequestId, connectionInfoRef] ); }; diff --git a/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx b/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx index 69f08653c39..8f3d22c16f8 100644 --- a/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx +++ b/packages/compass-aggregations/src/components/stage-editor/stage-editor.spec.tsx @@ -1,18 +1,17 @@ import React from 'react'; -import { mount } from 'enzyme'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import sinon from 'sinon'; import { expect } from 'chai'; import { StageEditor } from './stage-editor'; describe('StageEditor [Component]', function () { - let component: ReturnType | null; const spy = sinon.spy(); const stage = '{ name: "testing" }'; const stageOperator = '$match'; beforeEach(function () { - component = mount( + render( { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const darkMode = useDarkMode(); const editorInitialValueRef = useRef(stageValue); const editorCurrentValueRef = useRef(stageValue); @@ -147,7 +147,7 @@ export const StageEditor = ({ stage_name: stageOperator, editor_view_type: editor_view_type, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); editorInitialValueRef.current = editorCurrentValueRef.current; } @@ -157,11 +157,12 @@ export const StageEditor = ({ index, stageOperator, editor_view_type, - connectionInfoAccess, + connectionInfoRef, ]); return (
, diff --git a/packages/compass-aggregations/src/modules/aggregation.spec.ts b/packages/compass-aggregations/src/modules/aggregation.spec.ts index 5f1bdf29bf3..1a548461916 100644 --- a/packages/compass-aggregations/src/modules/aggregation.spec.ts +++ b/packages/compass-aggregations/src/modules/aggregation.spec.ts @@ -42,7 +42,7 @@ const getMockedStore = ( preferences: defaultPreferencesInstance, logger: createNoopLogger(), track: createNoopTrack(), - connectionInfoAccess: { getCurrentConnectionInfo: () => {} }, + connectionInfoRef: { current: {} }, }) ) ); diff --git a/packages/compass-aggregations/src/modules/aggregation.ts b/packages/compass-aggregations/src/modules/aggregation.ts index 172c1318679..3c4efbe7e5d 100644 --- a/packages/compass-aggregations/src/modules/aggregation.ts +++ b/packages/compass-aggregations/src/modules/aggregation.ts @@ -289,7 +289,7 @@ export const runAggregation = (): PipelineBuilderThunkAction> => { return async ( dispatch, getState, - { pipelineBuilder, instance, dataService, track, connectionInfoAccess } + { pipelineBuilder, instance, dataService, track, connectionInfoRef } ) => { const pipeline = getPipelineFromBuilderState(getState(), pipelineBuilder); @@ -315,7 +315,7 @@ export const runAggregation = (): PipelineBuilderThunkAction> => { num_stages: pipeline.length, editor_view_type: mapPipelineModeToEditorViewType(getState()), }), - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); return dispatch(fetchAggregationData()); }; @@ -367,12 +367,8 @@ export const cancelAggregation = (): PipelineBuilderThunkAction< void, Actions > => { - return (dispatch, getState, { track, connectionInfoAccess }) => { - track( - 'Aggregation Canceled', - {}, - connectionInfoAccess.getCurrentConnectionInfo() - ); + return (dispatch, getState, { track, connectionInfoRef }) => { + track('Aggregation Canceled', {}, connectionInfoRef.current); const { aggregation: { abortController }, } = getState(); @@ -399,7 +395,7 @@ const fetchAggregationData = ( preferences, logger: { log, mongoLogId }, track, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, } ) => { @@ -487,7 +483,7 @@ const fetchAggregationData = ( track( 'Aggregation Timed Out', { max_time_ms: maxTimeMS ?? null }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); } log.warn( diff --git a/packages/compass-aggregations/src/modules/focus-mode.ts b/packages/compass-aggregations/src/modules/focus-mode.ts index 8b5f575ddda..329a483d8b2 100644 --- a/packages/compass-aggregations/src/modules/focus-mode.ts +++ b/packages/compass-aggregations/src/modules/focus-mode.ts @@ -76,7 +76,7 @@ export default function reducer( export const enableFocusMode = ( stageIndex: number ): PipelineBuilderThunkAction => { - return (dispatch, getState, { track, connectionInfoAccess }) => { + return (dispatch, getState, { track, connectionInfoRef }) => { track( 'Focus Mode Opened', { @@ -84,7 +84,7 @@ export const enableFocusMode = ( getState().pipelineBuilder.stageEditor.stages ).length, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch({ type: ActionTypes.FocusModeEnabled, @@ -97,7 +97,7 @@ export const disableFocusMode = (): PipelineBuilderThunkAction< void, FocusModeDisabledAction > => { - return (dispatch, getState, { track, connectionInfoAccess }) => { + return (dispatch, getState, { track, connectionInfoRef }) => { const state = getState(); track( 'Focus Mode Closed', @@ -108,7 +108,7 @@ export const disableFocusMode = (): PipelineBuilderThunkAction< (Date.now() - (state.focusMode.openedAt ?? 0)).toFixed(1) ), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch({ type: ActionTypes.FocusModeDisabled }); }; diff --git a/packages/compass-aggregations/src/modules/index.ts b/packages/compass-aggregations/src/modules/index.ts index e6b9409b75f..2a58a0a6cf0 100644 --- a/packages/compass-aggregations/src/modules/index.ts +++ b/packages/compass-aggregations/src/modules/index.ts @@ -46,7 +46,7 @@ import type { AtlasAuthService } from '@mongodb-js/atlas-service/provider'; import type { MongoDBInstance } from 'mongodb-instance-model'; import type { DataService } from '../modules/data-service'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, ConnectionScopedAppRegistry, } from '@mongodb-js/compass-connections/provider'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; @@ -108,7 +108,7 @@ export type PipelineBuilderExtraArgs = { atlasAiService: AtlasAiService; instance: MongoDBInstance; dataService: DataService; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; connectionScopedAppRegistry: ConnectionScopedAppRegistry< 'open-export' | 'view-edited' | 'agg-pipeline-out-executed' >; diff --git a/packages/compass-aggregations/src/modules/out-results-fn.ts b/packages/compass-aggregations/src/modules/out-results-fn.ts index 0d45827da5f..103ae00c297 100644 --- a/packages/compass-aggregations/src/modules/out-results-fn.ts +++ b/packages/compass-aggregations/src/modules/out-results-fn.ts @@ -25,10 +25,9 @@ export default function reducer( export const gotoOutResults = ( namespace: string ): PipelineBuilderThunkAction => { - return (_dispatch, getState, { workspaces, connectionInfoAccess }) => { + return (_dispatch, getState, { workspaces, connectionInfoRef }) => { const { outResultsFn } = getState(); - const { id: connectionId } = - connectionInfoAccess.getCurrentConnectionInfo(); + const { id: connectionId } = connectionInfoRef.current; if (outResultsFn) { outResultsFn(namespace); } else { diff --git a/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-ai.ts b/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-ai.ts index 7f4a72e7cde..ff5882dde11 100644 --- a/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-ai.ts +++ b/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-ai.ts @@ -216,7 +216,7 @@ export const runAIPipelineGeneration = ( preferences, logger: { log, mongoLogId }, track, - connectionInfoAccess, + connectionInfoRef, } ) => { const { @@ -228,7 +228,7 @@ export const runAIPipelineGeneration = ( dataService: { dataService }, } = getState(); - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; const provideSampleDocuments = preferences.getPreferences().enableGenAISampleDocumentPassing; diff --git a/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-mode.ts b/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-mode.ts index e7c7a76835a..1cada99ca2d 100644 --- a/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-mode.ts +++ b/packages/compass-aggregations/src/modules/pipeline-builder/pipeline-mode.ts @@ -71,7 +71,7 @@ export const changePipelineMode = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { if (newMode === getState().pipelineBuilder.pipelineMode) { return; @@ -104,7 +104,7 @@ export const changePipelineMode = ( num_stages, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch(updatePipelinePreview()); diff --git a/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.spec.ts b/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.spec.ts index 5f255722a16..8de3a4be5ae 100644 --- a/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.spec.ts +++ b/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.spec.ts @@ -30,10 +30,10 @@ import { defaultPreferencesInstance } from 'compass-preferences-model'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; import AppRegistry from 'hadron-app-registry'; -import { - TEST_CONNECTION_INFO, - ConnectionScopedAppRegistryImpl, -} from '@mongodb-js/compass-connections/provider'; +import { ConnectionScopedAppRegistryImpl } from '@mongodb-js/compass-connections/provider'; +import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass'; + +const TEST_CONNECTION_INFO = createDefaultConnectionInfo(); const MATCH_STAGE: StoreStage = mapBuilderStageToStoreStage( { @@ -103,14 +103,12 @@ function createStore({ ) as unknown as PipelineBuilder; const globalAppRegistry = new AppRegistry(); - const connectionInfoAccess = { - getCurrentConnectionInfo() { - return TEST_CONNECTION_INFO; - }, + const connectionInfoRef = { + current: { ...TEST_CONNECTION_INFO, title: '' }, }; const connectionScopedAppRegistry = new ConnectionScopedAppRegistryImpl( globalAppRegistry.emit.bind(globalAppRegistry), - connectionInfoAccess + connectionInfoRef ); const store = createReduxStore( @@ -140,7 +138,7 @@ function createStore({ logger: createNoopLogger(), track: createNoopTrack(), dataService: {} as any, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, }) ) diff --git a/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.ts b/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.ts index 54e84593e16..6c4a02d63b0 100644 --- a/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.ts +++ b/packages/compass-aggregations/src/modules/pipeline-builder/stage-editor.ts @@ -537,7 +537,7 @@ export const changeStageOperator = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { const { env, @@ -582,7 +582,7 @@ export const changeStageOperator = ( stage_index: idxInPipeline + 1, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch({ type: StageEditorActionTypes.StageOperatorChange, id, stage }); @@ -654,7 +654,7 @@ export const addStage = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { const { pipelineBuilder: { @@ -677,7 +677,7 @@ export const addStage = ( stage_index: stage.id + 1, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch({ type: StageEditorActionTypes.StageAdded, @@ -693,7 +693,7 @@ export const removeStage = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { const { pipelineBuilder: { @@ -718,7 +718,7 @@ export const removeStage = ( stage_index: idxInPipeline + 1, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch({ type: StageEditorActionTypes.StageRemoved, at }); dispatch(loadPreviewForStagesFrom(at)); @@ -733,7 +733,7 @@ export const moveStage = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { if (from === to) { return; @@ -779,7 +779,7 @@ export const moveStage = ( stage_index: stageAtFromIdx.idxInPipeline + 1, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); pipelineBuilder.moveStage(stageAtFromIdx.idxInPipeline, toIdxInPipeline); @@ -907,7 +907,7 @@ export const convertWizardToStage = ( return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { const { pipelineBuilder: { @@ -939,7 +939,7 @@ export const convertWizardToStage = ( stage.changeValue(formatWizardValue(itemAtIdx.value as string)); - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; track( 'Aggregation Edited', { diff --git a/packages/compass-aggregations/src/modules/saved-pipeline.ts b/packages/compass-aggregations/src/modules/saved-pipeline.ts index 0fccaa96060..257b799f566 100644 --- a/packages/compass-aggregations/src/modules/saved-pipeline.ts +++ b/packages/compass-aggregations/src/modules/saved-pipeline.ts @@ -167,7 +167,7 @@ export const saveCurrentPipeline = async ( dispatch, getState, - { pipelineBuilder, pipelineStorage, track, connectionInfoAccess } + { pipelineBuilder, pipelineStorage, track, connectionInfoRef } ) => { if (getState().id === '') { dispatch(createId()); @@ -216,7 +216,7 @@ export const saveCurrentPipeline = num_stages: stagesLength, editor_view_type: mapPipelineModeToEditorViewType(getState()), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); dispatch(updatePipelineList()); @@ -224,9 +224,9 @@ export const saveCurrentPipeline = export const confirmOpenPipeline = (pipelineData: SavedPipeline): PipelineBuilderThunkAction => - async (dispatch, getState, { track, connectionInfoAccess }) => { + async (dispatch, getState, { track, connectionInfoRef }) => { const isModified = getState().isModified; - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (isModified) { track('Screen', { name: 'restore_pipeline_modal' }, connectionInfo); const confirmed = await showConfirmation({ @@ -253,12 +253,8 @@ export const confirmOpenPipeline = export const confirmDeletePipeline = (pipelineId: string): PipelineBuilderThunkAction => - async ( - dispatch, - getState, - { pipelineStorage, track, connectionInfoAccess } - ) => { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + async (dispatch, getState, { pipelineStorage, track, connectionInfoRef }) => { + const connectionInfo = connectionInfoRef.current; track('Screen', { name: 'delete_pipeline_modal' }, connectionInfo); const confirmed = await showConfirmation({ title: 'Are you sure you want to delete this pipeline?', diff --git a/packages/compass-aggregations/src/modules/saving-pipeline.ts b/packages/compass-aggregations/src/modules/saving-pipeline.ts index 4bc3c5a85b0..7c5db6e7ee6 100644 --- a/packages/compass-aggregations/src/modules/saving-pipeline.ts +++ b/packages/compass-aggregations/src/modules/saving-pipeline.ts @@ -166,7 +166,7 @@ export const openCreateView = (): PipelineBuilderThunkAction => { return ( _dispatch, getState, - { pipelineBuilder, globalAppRegistry, connectionInfoAccess } + { pipelineBuilder, globalAppRegistry, connectionInfoRef } ) => { const state = getState(); const sourceNs = state.namespace; @@ -180,8 +180,7 @@ export const openCreateView = (): PipelineBuilderThunkAction => { pipeline: sourcePipeline, }; - const { id: connectionId } = - connectionInfoAccess.getCurrentConnectionInfo(); + const { id: connectionId } = connectionInfoRef.current; globalAppRegistry.emit('open-create-view', meta, { connectionId }); }; diff --git a/packages/compass-aggregations/src/modules/side-panel.ts b/packages/compass-aggregations/src/modules/side-panel.ts index 4df84ed2ef4..71671407a89 100644 --- a/packages/compass-aggregations/src/modules/side-panel.ts +++ b/packages/compass-aggregations/src/modules/side-panel.ts @@ -40,7 +40,7 @@ export const toggleSidePanel = (): PipelineBuilderThunkAction< return ( dispatch, getState, - { pipelineBuilder, track, connectionInfoAccess } + { pipelineBuilder, track, connectionInfoRef } ) => { const { sidePanel: { isPanelOpen }, @@ -56,7 +56,7 @@ export const toggleSidePanel = (): PipelineBuilderThunkAction< num_stages: getPipelineFromBuilderState(getState(), pipelineBuilder) .length, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); } diff --git a/packages/compass-aggregations/src/modules/update-view.spec.ts b/packages/compass-aggregations/src/modules/update-view.spec.ts index d95310067c2..9c016fcf712 100644 --- a/packages/compass-aggregations/src/modules/update-view.spec.ts +++ b/packages/compass-aggregations/src/modules/update-view.spec.ts @@ -5,21 +5,21 @@ import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; import AppRegistry from 'hadron-app-registry'; import { - type ConnectionInfoAccess, + type ConnectionInfoRef, ConnectionScopedAppRegistryImpl, - TEST_CONNECTION_INFO, } from '@mongodb-js/compass-connections/provider'; +import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass'; + +const TEST_CONNECTION_INFO = { ...createDefaultConnectionInfo(), title: '' }; describe('update-view module', function () { const globalAppRegistry = new AppRegistry(); - const connectionInfoAccess: ConnectionInfoAccess = { - getCurrentConnectionInfo() { - return TEST_CONNECTION_INFO; - }, + const connectionInfoRef: ConnectionInfoRef = { + current: TEST_CONNECTION_INFO, }; const connectionScopedAppRegistry = new ConnectionScopedAppRegistryImpl( globalAppRegistry.emit.bind(globalAppRegistry), - connectionInfoAccess + connectionInfoRef ); const thunkArg = { globalAppRegistry, @@ -38,10 +38,8 @@ describe('update-view module', function () { }, logger: createNoopLogger(), track: createNoopTrack(), - connectionInfoAccess: { - getCurrentConnectionInfo() { - return TEST_CONNECTION_INFO; - }, + connectionInfoRef: { + current: TEST_CONNECTION_INFO, }, }; diff --git a/packages/compass-aggregations/src/modules/update-view.ts b/packages/compass-aggregations/src/modules/update-view.ts index 4d1ee29191c..87ce2838964 100644 --- a/packages/compass-aggregations/src/modules/update-view.ts +++ b/packages/compass-aggregations/src/modules/update-view.ts @@ -88,7 +88,7 @@ export const updateView = (): PipelineBuilderThunkAction> => { logger: { debug }, track, connectionScopedAppRegistry, - connectionInfoAccess, + connectionInfoRef, } ) => { dispatch(dismissViewError()); @@ -101,7 +101,7 @@ export const updateView = (): PipelineBuilderThunkAction> => { return; } - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; const viewPipeline = getPipelineFromBuilderState( getState(), diff --git a/packages/compass-aggregations/src/stores/store.ts b/packages/compass-aggregations/src/stores/store.ts index 993a6f50dd0..4f0d950be02 100644 --- a/packages/compass-aggregations/src/stores/store.ts +++ b/packages/compass-aggregations/src/stores/store.ts @@ -37,7 +37,7 @@ import type { AtlasAuthService } from '@mongodb-js/atlas-service/provider'; import type { PipelineStorage } from '@mongodb-js/my-queries-storage/provider'; import { maxTimeMSChanged } from '../modules/max-time-ms'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, ConnectionScopedAppRegistry, } from '@mongodb-js/compass-connections/provider'; import type { Collection } from '@mongodb-js/compass-app-stores/provider'; @@ -83,7 +83,7 @@ export type AggregationsPluginServices = { atlasAuthService: AtlasAuthService; atlasAiService: AtlasAiService; pipelineStorage?: PipelineStorage; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; connectionScopedAppRegistry: ConnectionScopedAppRegistry<'open-export'>; collection: Collection; }; @@ -102,7 +102,7 @@ export function activateAggregationsPlugin( atlasAiService, atlasAuthService, pipelineStorage, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, collection: collectionModel, }: AggregationsPluginServices, @@ -191,7 +191,7 @@ export function activateAggregationsPlugin( logger, track, atlasAiService, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, }) ) @@ -219,8 +219,7 @@ export function activateAggregationsPlugin( { ns }: { ns: string }, { connectionId }: { connectionId?: string } = {} ) => { - const { id: currentConnectionId } = - connectionInfoAccess.getCurrentConnectionInfo(); + const { id: currentConnectionId } = connectionInfoRef.current; const { namespace } = store.getState(); if (currentConnectionId === connectionId && ns === namespace) { refreshInput(); diff --git a/packages/compass-app-stores/src/instances-manager.spec.ts b/packages/compass-app-stores/src/instances-manager.spec.ts index 23f086b705d..90b4065af26 100644 --- a/packages/compass-app-stores/src/instances-manager.spec.ts +++ b/packages/compass-app-stores/src/instances-manager.spec.ts @@ -4,8 +4,10 @@ import { MongoDBInstancesManager, MongoDBInstancesManagerEvents, } from './instances-manager'; -import { TEST_CONNECTION_INFO } from '@mongodb-js/compass-connections/provider'; import { MongoDBInstance } from 'mongodb-instance-model'; +import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass'; + +const TEST_CONNECTION_INFO = createDefaultConnectionInfo(); describe('InstancesManager', function () { let instancesManager: MongoDBInstancesManager; diff --git a/packages/compass-collection/src/components/collection-tab.tsx b/packages/compass-collection/src/components/collection-tab.tsx index 7728d657a40..3d14a772922 100644 --- a/packages/compass-collection/src/components/collection-tab.tsx +++ b/packages/compass-collection/src/components/collection-tab.tsx @@ -22,7 +22,7 @@ import { } from './collection-tab-stats'; import type { CollectionSubtab } from '@mongodb-js/compass-workspaces'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type CollectionSubtabTrackingId = Lowercase extends infer U ? U extends string @@ -131,7 +131,7 @@ const CollectionTabWithMetadata: React.FunctionComponent< stats, }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const { log, mongoLogId } = useLogger('COMPASS-COLLECTION-TAB-UI'); useEffect(() => { const activeSubTabName = currentTab @@ -144,10 +144,10 @@ const CollectionTabWithMetadata: React.FunctionComponent< { name: activeSubTabName, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); } - }, [currentTab, track, connectionInfoAccess]); + }, [currentTab, track, connectionInfoRef]); const pluginTabs = useCollectionSubTabs(); const pluginModals = useCollectionScopedModals(); diff --git a/packages/compass-components/src/components/breadcrumb.tsx b/packages/compass-components/src/components/breadcrumb.tsx index f901aa40115..335e6d6da90 100644 --- a/packages/compass-components/src/components/breadcrumb.tsx +++ b/packages/compass-components/src/components/breadcrumb.tsx @@ -66,7 +66,7 @@ export const Breadcrumbs = ({ if (isLast) { return ( +
diff --git a/packages/compass-connections/src/connection-info-provider.tsx b/packages/compass-connections/src/connection-info-provider.tsx index 3e68be23fd5..c41325085d6 100644 --- a/packages/compass-connections/src/connection-info-provider.tsx +++ b/packages/compass-connections/src/connection-info-provider.tsx @@ -1,48 +1,29 @@ -import React, { createContext, useContext, useState } from 'react'; -import type { ConnectionInfo } from '@mongodb-js/connection-info'; +import React, { createContext, useContext, useRef } from 'react'; +import { type ConnectionInfo } from '@mongodb-js/connection-info'; import { createServiceLocator, createServiceProvider, } from 'hadron-app-registry'; import { - ConnectionsStoreContext, useConnectionForId, + useConnectionInfoForId, useConnectionInfoRefForId, } from './stores/store-context'; -import type { ConnectionId } from './stores/connections-store-redux'; +import type { + ConnectionId, + ConnectionState, +} from './stores/connections-store-redux'; export type { ConnectionInfo }; -export type ConnectionInfoAccess = { - getCurrentConnectionInfo(): ConnectionInfo; -}; - -const ConnectionInfoContext = createContext(null); - const ConnectionIdContext = createContext(null); /** - * @deprecated define connection for your test separately + * @internal never to be used outside of the test environment or re-exported + * from this package */ -export const TEST_CONNECTION_INFO: ConnectionInfo = { - id: 'TEST', - connectionOptions: { - connectionString: 'mongodb://localhost:27020', - }, -}; - -export function useConnectionInfo() { - const connectionInfo = useContext(ConnectionInfoContext); - if (!connectionInfo) { - if (process.env.NODE_ENV !== 'test') { - throw new Error( - 'Could not find the current ConnectionInfo. Did you forget to setup the ConnectionInfoContext?' - ); - } - return TEST_CONNECTION_INFO; - } - return connectionInfo; -} +export const TestEnvCurrentConnectionContext = + createContext(null); export const ConnectionInfoProvider: React.FC<{ connectionInfoId: string; @@ -53,91 +34,63 @@ export const ConnectionInfoProvider: React.FC<{ connectionInfoId, children, }) { - const connection = useConnectionForId(connectionInfoId); + const connectionFromState = useConnectionForId(connectionInfoId); + const testEnvConnection = useContext(TestEnvCurrentConnectionContext); + const connection = connectionFromState ?? testEnvConnection; const isConnected = connection?.status === 'connected'; return isConnected ? ( - - {typeof children === 'function' ? children(connection.info) : children} - + {typeof children === 'function' ? children(connection.info) : children} ) : null; }); /** - * @deprecated use `useConnectionInfoRef` instead + * Returns the value of the connectionInfo that is applied to the current scope + * (part of the React rendering tree). Throws if connection info doesn't exist */ -export const useConnectionInfoAccess = (): ConnectionInfoAccess => { - let connectionId = useContext(ConnectionIdContext); - if (!connectionId) { - if (process.env.NODE_ENV !== 'test') { - throw new Error( - 'Could not find the current ConnectionInfo. Did you forget to setup the ConnectionInfoContext?' - ); - } - connectionId = TEST_CONNECTION_INFO.id; - } - // TODO: remove when all tests are using new testing helpers - if (!useContext(ConnectionsStoreContext) && process.env.NODE_ENV === 'test') { - return { - getCurrentConnectionInfo() { - return TEST_CONNECTION_INFO; - }, - }; +export function useConnectionInfo() { + const connectionId = useContext(ConnectionIdContext); + const testEnvConnection = useContext(TestEnvCurrentConnectionContext); + const connectionInfoFromState = useConnectionInfoForId(connectionId ?? ''); + const connectionInfo = connectionInfoFromState ?? testEnvConnection?.info; + if (!connectionInfo) { + throw new Error( + 'Can not access connection info inside a `useConnectionInfo` hook. Make sure that you are only calling this hook inside connected application scope' + ); } - // This is stable in all environments - // eslint-disable-next-line react-hooks/rules-of-hooks - const connectionInfoRef = useConnectionInfoRefForId(connectionId); - // eslint-disable-next-line react-hooks/rules-of-hooks - const [access] = useState(() => { - // Return the function from useState to make sure the value doesn't change - // when component re-renders - return { - getCurrentConnectionInfo() { - if (!connectionInfoRef.current) { - if (process.env.NODE_ENV !== 'test') { - throw new Error( - 'Could not find the current ConnectionInfo. Did you forget to setup the ConnectionInfoContext?' - ); - } - return TEST_CONNECTION_INFO; - } - return connectionInfoRef.current; - }, - }; - }); - return access; -}; -export const connectionInfoAccessLocator = createServiceLocator( - useConnectionInfoAccess, - 'connectionInfoAccessLocator' -); + return connectionInfo; +} -type FirstArgument = F extends (...args: [infer A, ...any]) => any - ? A - : F extends { new (...args: [infer A, ...any]): any } - ? A - : never; +export type ConnectionInfoRef = { + readonly current: ConnectionInfo & { title: string }; +}; /** - * @deprecated instead of using HOC, refactor class component to functional - * component + * Returns a stable ref object with the value of the connectionInfo that is + * applied to the current scope (part of the React rendering tree). Throws if + * connection info doesn't exist */ -function withConnectionInfoAccess< - T extends ((...args: any[]) => any) | { new (...args: any[]): any } ->( - ReactComponent: T -): React.FunctionComponent, 'connectionInfoAccess'>> { - const WithConnectionInfoAccess = ( - props: Omit, 'connectionInfoAccess'> & React.Attributes - ) => { - const connectionInfoAccess = useConnectionInfoAccess(); - return React.createElement(ReactComponent, { - ...props, - connectionInfoAccess, - }); - }; - return WithConnectionInfoAccess; -} +export const useConnectionInfoRef = () => { + const connectionId = useContext(ConnectionIdContext); + const testEnvConnection = useContext(TestEnvCurrentConnectionContext); + const testEnvConnectionRef = useRef(testEnvConnection?.info); + testEnvConnectionRef.current = testEnvConnection?.info; + const connectionInfoRefFromStore = useConnectionInfoRefForId( + connectionId ?? '' + ); + const connectionInfoRef = connectionInfoRefFromStore.current + ? connectionInfoRefFromStore + : testEnvConnectionRef; + if (!connectionInfoRef.current) { + throw new Error( + 'Can not access connection info inside a `useConnectionInfoRef` hook. Make sure that you are only calling this hook inside connected application scope' + ); + } + return connectionInfoRef as ConnectionInfoRef; +}; -export { withConnectionInfoAccess }; +export const connectionInfoRefLocator = createServiceLocator( + useConnectionInfoRef, + 'connectionInfoRefLocator' +); diff --git a/packages/compass-connections/src/connection-scoped-app-registry.spec.ts b/packages/compass-connections/src/connection-scoped-app-registry.spec.ts index 642d60db873..fc006eba2fc 100644 --- a/packages/compass-connections/src/connection-scoped-app-registry.spec.ts +++ b/packages/compass-connections/src/connection-scoped-app-registry.spec.ts @@ -1,15 +1,16 @@ import { expect } from 'chai'; import { spy } from 'sinon'; -import type { ConnectionInfoAccess } from './connection-info-provider'; +import type { ConnectionInfoRef } from './connection-info-provider'; import { ConnectionScopedAppRegistryImpl } from './connection-scoped-app-registry'; -const connectionInfoAccess: ConnectionInfoAccess = { - getCurrentConnectionInfo() { +const connectionInfoRef: ConnectionInfoRef = { + get current() { return { id: '1234', connectionOptions: { connectionString: 'mongodb://webscales.com:27017', }, + title: '', }; }, }; @@ -20,7 +21,7 @@ describe('ConnectionScopedGlobalAppRegistry', function () { const newAppRegistryEmitter = new ConnectionScopedAppRegistryImpl<'schema-analyzed'>( emitSpy, - connectionInfoAccess + connectionInfoRef ); newAppRegistryEmitter.emit('schema-analyzed'); @@ -34,7 +35,7 @@ describe('ConnectionScopedGlobalAppRegistry', function () { const newAppRegistryEmitter = new ConnectionScopedAppRegistryImpl<'schema-analyzed'>( emitSpy, - connectionInfoAccess + connectionInfoRef ); newAppRegistryEmitter.emit('schema-analyzed', { record: true }); diff --git a/packages/compass-connections/src/connection-scoped-app-registry.ts b/packages/compass-connections/src/connection-scoped-app-registry.ts index b11300f59b5..43d1981e247 100644 --- a/packages/compass-connections/src/connection-scoped-app-registry.ts +++ b/packages/compass-connections/src/connection-scoped-app-registry.ts @@ -3,10 +3,8 @@ import { createServiceLocator, useGlobalAppRegistry, } from 'hadron-app-registry'; -import { - type ConnectionInfoAccess, - connectionInfoAccessLocator, -} from './connection-info-provider'; +import type { ConnectionInfoRef } from './connection-info-provider'; +import { connectionInfoRefLocator } from './connection-info-provider'; export type ConnectionScopedAppRegistryLocator< T extends string, @@ -30,7 +28,7 @@ export class ConnectionScopedAppRegistryImpl { constructor( private readonly appRegistryEmitter: AppRegistry['emit'], - private readonly connectionInfoAccess: ConnectionInfoAccess + private readonly connectionInfoRef: ConnectionInfoRef ) {} /** @@ -46,8 +44,7 @@ export class ConnectionScopedAppRegistryImpl * relying on AppRegistry events. */ emit(event: T, ...payload: any[]): void { - const connectionId = - this.connectionInfoAccess.getCurrentConnectionInfo().id; + const connectionId = this.connectionInfoRef.current.id; this.appRegistryEmitter(event, ...payload, { connectionId }); } } @@ -59,11 +56,11 @@ export const connectionScopedAppRegistryLocator = createServiceLocator( L extends keyof ConnectionScopedAppRegistryImpl = K >(): ConnectionScopedAppRegistry { const appRegistry = useGlobalAppRegistry(); - const connectionInfoAccess = connectionInfoAccessLocator(); + const connectionInfoRef = connectionInfoRefLocator(); return new ConnectionScopedAppRegistryImpl( appRegistry.emit.bind(appRegistry), - connectionInfoAccess + connectionInfoRef ); } ); diff --git a/packages/compass-connections/src/provider.ts b/packages/compass-connections/src/provider.ts index e0f1c64ed81..dee73bd3e64 100644 --- a/packages/compass-connections/src/provider.ts +++ b/packages/compass-connections/src/provider.ts @@ -64,17 +64,15 @@ export { } from './connection-scoped-app-registry'; export type { - ConnectionInfoAccess, + ConnectionInfoRef, ConnectionInfo, } from './connection-info-provider'; export { ConnectionInfoProvider, useConnectionInfo, - useConnectionInfoAccess, - withConnectionInfoAccess, - connectionInfoAccessLocator, - TEST_CONNECTION_INFO, + useConnectionInfoRef, + connectionInfoRefLocator, } from './connection-info-provider'; export { useTabConnectionTheme } from './hooks/use-tab-connection-theme'; diff --git a/packages/compass-crud/package.json b/packages/compass-crud/package.json index 91db3cfa5a6..8823549be8a 100644 --- a/packages/compass-crud/package.json +++ b/packages/compass-crud/package.json @@ -54,6 +54,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "@types/reflux": "^6.4.3", "chai": "^4.1.2", "chai-as-promised": "^7.1.1", diff --git a/packages/compass-crud/src/components/crud-toolbar.tsx b/packages/compass-crud/src/components/crud-toolbar.tsx index 47355683ece..875e7e83456 100644 --- a/packages/compass-crud/src/components/crud-toolbar.tsx +++ b/packages/compass-crud/src/components/crud-toolbar.tsx @@ -21,7 +21,7 @@ import { usePreference } from 'compass-preferences-model/provider'; import UpdateMenu from './update-data-menu'; import DeleteMenu from './delete-data-menu'; import { QueryBar } from '@mongodb-js/compass-query-bar'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const crudQueryBarStyles = css({ width: '100%', @@ -152,7 +152,7 @@ const CrudToolbar: React.FunctionComponent = ({ updateMaxDocumentsPerPage, }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const isImportExportEnabled = usePreference('enableImportExport'); const displayedDocumentCount = useMemo( @@ -161,13 +161,9 @@ const CrudToolbar: React.FunctionComponent = ({ ); const onClickRefreshDocuments = useCallback(() => { - track( - 'Query Results Refreshed', - {}, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Query Results Refreshed', {}, connectionInfoRef.current); refreshDocuments(); - }, [refreshDocuments, track, connectionInfoAccess]); + }, [refreshDocuments, track, connectionInfoRef]); const prevButtonDisabled = useMemo(() => page === 0, [page]); const nextButtonDisabled = useMemo( diff --git a/packages/compass-crud/src/index.ts b/packages/compass-crud/src/index.ts index e20f4778359..90b75ffa127 100644 --- a/packages/compass-crud/src/index.ts +++ b/packages/compass-crud/src/index.ts @@ -8,7 +8,7 @@ import { activateDocumentsPlugin, } from './stores/crud-store'; import { - connectionInfoAccessLocator, + connectionInfoRefLocator, connectionScopedAppRegistryLocator, dataServiceLocator, type DataServiceLocator, @@ -47,7 +47,7 @@ export const CompassDocumentsHadronPlugin = registerHadronPlugin( favoriteQueryStorageAccess: favoriteQueryStorageAccessLocator, recentQueryStorageAccess: recentQueryStorageAccessLocator, fieldStoreService: fieldStoreServiceLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, connectionScopedAppRegistry: connectionScopedAppRegistryLocator, queryBar: queryBarServiceLocator, diff --git a/packages/compass-crud/src/stores/crud-store.spec.ts b/packages/compass-crud/src/stores/crud-store.spec.ts index 78b5d5d27ea..7c31b49b3fe 100644 --- a/packages/compass-crud/src/stores/crud-store.spec.ts +++ b/packages/compass-crud/src/stores/crud-store.spec.ts @@ -32,12 +32,14 @@ import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import type { FieldStoreService } from '@mongodb-js/compass-field-store'; import { - type ConnectionInfoAccess, - TEST_CONNECTION_INFO, + type ConnectionInfoRef, ConnectionScopedAppRegistryImpl, } from '@mongodb-js/compass-connections/provider'; import type { TableHeaderType } from './grid-store'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; +import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass'; + +const TEST_CONNECTION_INFO = createDefaultConnectionInfo(); chai.use(chaiAsPromised); @@ -129,14 +131,12 @@ describe('store', function () { const localAppRegistry = new AppRegistry(); const globalAppRegistry = new AppRegistry(); - const connectionInfoAccess = { - getCurrentConnectionInfo() { - return TEST_CONNECTION_INFO; - }, - } as ConnectionInfoAccess; + const connectionInfoRef = { + current: TEST_CONNECTION_INFO, + } as ConnectionInfoRef; const connectionScopedAppRegistry = new ConnectionScopedAppRegistryImpl( globalAppRegistry.emit.bind(globalAppRegistry), - connectionInfoAccess + connectionInfoRef ); function activatePlugin( @@ -163,7 +163,7 @@ describe('store', function () { favoriteQueryStorageAccess: compassFavoriteQueryStorageAccess, recentQueryStorageAccess: compassRecentQueryStorageAccess, fieldStoreService: mockFieldStoreService, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, queryBar: mockQueryBar, ...services, diff --git a/packages/compass-crud/src/stores/crud-store.ts b/packages/compass-crud/src/stores/crud-store.ts index 995959004ab..258422dbe1e 100644 --- a/packages/compass-crud/src/stores/crud-store.ts +++ b/packages/compass-crud/src/stores/crud-store.ts @@ -60,7 +60,7 @@ import { mongoLogId } from '@mongodb-js/compass-logging/provider'; import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection'; import type { FieldStoreService } from '@mongodb-js/compass-field-store'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, ConnectionScopedAppRegistry, } from '@mongodb-js/compass-connections/provider'; import type { Query, QueryBarService } from '@mongodb-js/compass-query-bar'; @@ -343,7 +343,7 @@ class CrudStoreImpl fieldStoreService: FieldStoreService; logger: Logger; track: TrackFunction; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; instance: MongoDBInstance; connectionScopedAppRegistry: ConnectionScopedAppRegistry; queryBar: QueryBarService; @@ -358,7 +358,7 @@ class CrudStoreImpl | 'preferences' | 'logger' | 'track' - | 'connectionInfoAccess' + | 'connectionInfoRef' | 'fieldStoreService' | 'connectionScopedAppRegistry' | 'queryBar' @@ -376,7 +376,7 @@ class CrudStoreImpl this.preferences = services.preferences; this.logger = services.logger; this.track = services.track; - this.connectionInfoAccess = services.connectionInfoAccess; + this.connectionInfoRef = services.connectionInfoRef; this.instance = services.instance; this.fieldStoreService = services.fieldStoreService; this.connectionScopedAppRegistry = services.connectionScopedAppRegistry; @@ -503,7 +503,7 @@ class CrudStoreImpl this.track( 'Document Copied', { mode: this.modeForTelemetry() }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); const documentEJSON = doc.toEJSON(); // eslint-disable-next-line no-undef @@ -530,7 +530,7 @@ class CrudStoreImpl this.track( 'Document Deleted', { mode: this.modeForTelemetry() }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); const id = doc.getId(); if (id !== undefined) { @@ -607,7 +607,7 @@ class CrudStoreImpl this.track( 'Document Updated', { mode: this.modeForTelemetry() }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); try { doc.onUpdateStart(); @@ -683,7 +683,7 @@ class CrudStoreImpl this.track( 'Document Updated', { mode: this.modeForTelemetry() }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); try { doc.onUpdateStart(); @@ -932,7 +932,7 @@ class CrudStoreImpl this.track( 'Document Cloned', { mode: this.modeForTelemetry() }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); // We need to remove the _id or we will get an duplicate key error on // insert, and we currently do not allow editing of the _id field. @@ -997,7 +997,7 @@ class CrudStoreImpl { isUpdatePreviewSupported: this.state.isUpdatePreviewSupported, }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); await this.updateBulkUpdatePreview(updateText ?? INITIAL_BULK_UPDATE_TEXT); @@ -1147,7 +1147,7 @@ class CrudStoreImpl { isUpdatePreviewSupported: this.state.isUpdatePreviewSupported, }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); this.closeBulkUpdateModal(); @@ -1331,7 +1331,7 @@ class CrudStoreImpl mode: this.state.insert.jsonView ? 'json' : 'field-by-field', multiple: docs.length > 1, }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); try { @@ -1385,7 +1385,7 @@ class CrudStoreImpl mode: this.state.insert.jsonView ? 'json' : 'field-by-field', multiple: false, }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); let doc: BSONObject; @@ -1555,7 +1555,7 @@ class CrudStoreImpl : 'collection', used_regex: objectContainsRegularExpression(query.filter ?? {}), }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); } @@ -1792,11 +1792,7 @@ class CrudStoreImpl } openBulkDeleteDialog() { - this.track( - 'Bulk Delete Opened', - {}, - this.connectionInfoAccess.getCurrentConnectionInfo() - ); + this.track('Bulk Delete Opened', {}, this.connectionInfoRef.current); const PREVIEW_DOCS = 5; @@ -1861,11 +1857,7 @@ class CrudStoreImpl } async runBulkDelete() { - this.track( - 'Bulk Delete Executed', - {}, - this.connectionInfoAccess.getCurrentConnectionInfo() - ); + this.track('Bulk Delete Executed', {}, this.connectionInfoRef.current); const { affected } = this.state.bulkDelete; this.closeBulkDeleteDialog(); @@ -1910,7 +1902,7 @@ class CrudStoreImpl { isUpdatePreviewSupported: this.state.isUpdatePreviewSupported, }, - this.connectionInfoAccess.getCurrentConnectionInfo() + this.connectionInfoRef.current ); const { filter } = this.queryBar.getLastAppliedQuery('crud'); @@ -1952,7 +1944,7 @@ export type DocumentsPluginServices = { favoriteQueryStorageAccess?: FavoriteQueryStorageAccess; recentQueryStorageAccess?: RecentQueryStorageAccess; fieldStoreService: FieldStoreService; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; connectionScopedAppRegistry: ConnectionScopedAppRegistry; queryBar: QueryBarService; }; @@ -1969,7 +1961,7 @@ export function activateDocumentsPlugin( favoriteQueryStorageAccess, recentQueryStorageAccess, fieldStoreService, - connectionInfoAccess, + connectionInfoRef, connectionScopedAppRegistry, queryBar, }: DocumentsPluginServices, @@ -1986,7 +1978,7 @@ export function activateDocumentsPlugin( preferences, logger, track, - connectionInfoAccess, + connectionInfoRef, favoriteQueryStorage: favoriteQueryStorageAccess?.getStorage(), recentQueryStorage: recentQueryStorageAccess?.getStorage(), fieldStoreService, @@ -2028,8 +2020,7 @@ export function activateDocumentsPlugin( { ns }: { ns: string }, { connectionId }: { connectionId?: string } = {} ) => { - const { id: currentConnectionId } = - connectionInfoAccess.getCurrentConnectionInfo(); + const { id: currentConnectionId } = connectionInfoRef.current; if (currentConnectionId === connectionId && ns === store.state.ns) { void store.refreshDocuments(); } diff --git a/packages/compass-editor/src/editor.tsx b/packages/compass-editor/src/editor.tsx index 8c166a9c638..f34031affc2 100644 --- a/packages/compass-editor/src/editor.tsx +++ b/packages/compass-editor/src/editor.tsx @@ -1579,7 +1579,7 @@ const MultilineEditor = React.forwardRef( * ``` */ async function setCodemirrorEditorValue( - element: HTMLElement | string | null, + element: Element | string | null, text: string ): Promise { if (typeof element === 'string') { @@ -1606,9 +1606,7 @@ async function setCodemirrorEditorValue( * getCodemirrorEditorValue(screen.getByTestId('editor-test-id')); * ``` */ -function getCodemirrorEditorValue( - element: HTMLElement | string | null -): string { +function getCodemirrorEditorValue(element: Element | string | null): string { if (typeof element === 'string') { element = document.querySelector(`[data-testid="${element}"]`); } diff --git a/packages/compass-explain-plan/src/index.ts b/packages/compass-explain-plan/src/index.ts index bc74861baaa..c1809dd2ecc 100644 --- a/packages/compass-explain-plan/src/index.ts +++ b/packages/compass-explain-plan/src/index.ts @@ -2,7 +2,7 @@ import ExplainPlanModal from './components/explain-plan-modal'; import { activatePlugin } from './stores'; import { registerHadronPlugin } from 'hadron-app-registry'; import { - connectionInfoAccessLocator, + connectionInfoRefLocator, dataServiceLocator, type DataServiceLocator, } from '@mongodb-js/compass-connections/provider'; @@ -19,7 +19,7 @@ const ExplainPlanModalPlugin = registerHadronPlugin( { logger: createLoggerLocator('EXPLAIN-PLAN-MODAL-UI'), track: telemetryLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, dataService: dataServiceLocator as DataServiceLocator< 'explainAggregate' | 'explainFind' | 'isCancelError' >, diff --git a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.spec.ts b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.spec.ts index 1d6d61aec3e..c2cd4656cac 100644 --- a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.spec.ts +++ b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.spec.ts @@ -8,7 +8,7 @@ import { activatePlugin } from './'; import { expect } from 'chai'; import type { Document } from 'mongodb'; import Sinon from 'sinon'; -import type { ConnectionInfo } from '../../../connection-info/dist'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const localAppRegistry = new AppRegistry(); @@ -81,12 +81,11 @@ describe('explain plan modal store', function () { mongoLogId() {}, } as any, track: () => {}, - connectionInfoAccess: { - getCurrentConnectionInfo: () => - ({ - id: 'TEST', - } as ConnectionInfo), - }, + connectionInfoRef: { + current: { + id: 'TEST', + }, + } as ConnectionInfoRef, preferences: { getPreferences() { return { maxTimeMS: 0 }; diff --git a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts index 7267d7b9c4e..3fedc6ecb4f 100644 --- a/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts +++ b/packages/compass-explain-plan/src/stores/explain-plan-modal-store.ts @@ -180,13 +180,13 @@ export const openExplainPlanModal = ( dataService, preferences, track, - connectionInfoAccess, + connectionInfoRef, logger: { log, mongoLogId }, } ) => { const { id: fetchId, signal } = getAbortSignal(); - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; let rawExplainPlan = null; let explainPlan = null; diff --git a/packages/compass-explain-plan/src/stores/index.ts b/packages/compass-explain-plan/src/stores/index.ts index b015ebf5b01..2ba90aaee4b 100644 --- a/packages/compass-explain-plan/src/stores/index.ts +++ b/packages/compass-explain-plan/src/stores/index.ts @@ -10,7 +10,7 @@ import type { AggregateOptions, Document, FindOptions } from 'mongodb'; import type AppRegistry from 'hadron-app-registry'; import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import type { Logger } from '@mongodb-js/compass-logging/provider'; @@ -47,7 +47,7 @@ export type ExplainPlanModalServices = { >; logger: Logger; track: TrackFunction; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; preferences: PreferencesAccess; localAppRegistry: AppRegistry; }; diff --git a/packages/compass-export-to-language/package.json b/packages/compass-export-to-language/package.json index 9a8aeeb7b85..6b62f947b54 100644 --- a/packages/compass-export-to-language/package.json +++ b/packages/compass-export-to-language/package.json @@ -64,7 +64,6 @@ "redux": "^4.2.1" }, "devDependencies": { - "@mongodb-js/compass-logging": "^1.4.7", "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", diff --git a/packages/compass-export-to-language/src/components/modal.tsx b/packages/compass-export-to-language/src/components/modal.tsx index 64bd87bad4e..c0c71b4283f 100644 --- a/packages/compass-export-to-language/src/components/modal.tsx +++ b/packages/compass-export-to-language/src/components/modal.tsx @@ -23,7 +23,7 @@ import { countAggregationStagesInString } from '../modules/count-aggregation-sta import { usePreference } from 'compass-preferences-model/provider'; import { prettify } from '@mongodb-js/compass-editor'; import { closeModal } from '../stores'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type LanguageOption = { displayName: string; @@ -101,7 +101,7 @@ const ExportToLanguageModal: React.FunctionComponent< } > = ({ modalOpen, onModalClose, inputExpression, uri, namespace }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const [outputLanguage, setOutputLanguage] = useState('python'); const [includeImports, setIncludeImports] = useState(false); @@ -147,7 +147,7 @@ const ExportToLanguageModal: React.FunctionComponent< useEffect(() => { if (modalOpen && !wasOpen) { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (mode === 'Query') { track('Query Export Opened', {}, connectionInfo); @@ -169,7 +169,7 @@ const ExportToLanguageModal: React.FunctionComponent< } setWasOpen(modalOpen); - }, [modalOpen, wasOpen, mode, inputExpression, track, connectionInfoAccess]); + }, [modalOpen, wasOpen, mode, inputExpression, track, connectionInfoRef]); const trackCopiedOutput = useCallback(() => { const commonProps = { @@ -180,23 +180,11 @@ const ExportToLanguageModal: React.FunctionComponent< }; if (mode === 'Update Query') { - track( - 'Update Exported', - commonProps, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Update Exported', commonProps, connectionInfoRef.current); } else if (mode === 'Delete Query') { - track( - 'Delete Exported', - commonProps, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Delete Exported', commonProps, connectionInfoRef.current); } else if (mode === 'Query') { - track( - 'Query Exported', - commonProps, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Query Exported', commonProps, connectionInfoRef.current); } else if (mode === 'Pipeline') { track( 'Aggregation Exported', @@ -204,12 +192,12 @@ const ExportToLanguageModal: React.FunctionComponent< ...commonProps, ...stageCountForTelemetry(inputExpression), }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); } }, [ track, - connectionInfoAccess, + connectionInfoRef, outputLanguage, includeImports, includeDrivers, diff --git a/packages/compass-export-to-language/src/index.spec.tsx b/packages/compass-export-to-language/src/index.spec.tsx index 38d026202a1..73ce95bec17 100644 --- a/packages/compass-export-to-language/src/index.spec.tsx +++ b/packages/compass-export-to-language/src/index.spec.tsx @@ -2,7 +2,6 @@ import React from 'react'; import { screen, render, - cleanup, within, waitFor, userEvent, @@ -10,12 +9,6 @@ import { import ExportToLanguagePlugin from './'; import { expect } from 'chai'; import { prettify } from '@mongodb-js/compass-editor'; -import { - LoggerProvider, - createNoopLogger, -} from '@mongodb-js/compass-logging/provider'; -import { TelemetryProvider } from '@mongodb-js/compass-telemetry/provider'; -import Sinon from 'sinon'; const allTypesStr = `{ 0: true, 1: 1, 2: NumberLong(100), 3: 0.001, 4: 0x1243, 5: 0o123, @@ -47,10 +40,6 @@ describe('ExportToLanguagePlugin', function () { dataService: dataService as any, }); - afterEach(function () { - cleanup(); - }); - describe('on `open-query-export-to-language` event', function () { it('should show query export to language modal', function () { const { localAppRegistry } = render( @@ -131,27 +120,8 @@ result = client['db']['coll'].find( describe('on "Copy" button clicked', function () { it('should emit telemetry event', async function () { - const track = Sinon.stub(); - const { localAppRegistry } = render( - - { - track(event, props); - }, - }} - > - - - + const { localAppRegistry, track } = render( + ); localAppRegistry.emit('open-aggregation-export-to-language', '[]'); diff --git a/packages/compass-field-store/src/stores/field-store-service.ts b/packages/compass-field-store/src/stores/field-store-service.ts index 1a9b915cea6..4077ab1bba8 100644 --- a/packages/compass-field-store/src/stores/field-store-service.ts +++ b/packages/compass-field-store/src/stores/field-store-service.ts @@ -1,8 +1,8 @@ import { type Schema } from 'mongodb-schema'; import { createServiceLocator } from 'hadron-app-registry'; import { - useConnectionInfoAccess, - type ConnectionInfoAccess, + useConnectionInfoRef, + type ConnectionInfoRef, } from '@mongodb-js/compass-connections/provider'; import { useDispatch } from './context'; import { documentsUpdated, schemaUpdated } from '../modules'; @@ -17,7 +17,7 @@ export type FieldStoreService = { function createFieldStoreService( dispatch: ReturnType, - connectionInfoAccess: ConnectionInfoAccess + connectionInfoRef: ConnectionInfoRef ): FieldStoreService { return { async updateFieldsFromDocuments( @@ -25,21 +25,11 @@ function createFieldStoreService( documents: Record[] ) { await dispatch( - documentsUpdated( - connectionInfoAccess.getCurrentConnectionInfo().id, - ns, - documents - ) + documentsUpdated(connectionInfoRef.current.id, ns, documents) ); }, updateFieldsFromSchema(ns: string, schema: Schema) { - dispatch( - schemaUpdated( - connectionInfoAccess.getCurrentConnectionInfo().id, - ns, - schema - ) - ); + dispatch(schemaUpdated(connectionInfoRef.current.id, ns, schema)); }, }; } @@ -49,8 +39,8 @@ function createFieldStoreService( */ export function useFieldStoreService() { const dispatch = useDispatch(); - const connectionInfoAccess = useConnectionInfoAccess(); - return createFieldStoreService(dispatch, connectionInfoAccess); + const connectionInfoRef = useConnectionInfoRef(); + return createFieldStoreService(dispatch, connectionInfoRef); } export const fieldStoreServiceLocator = createServiceLocator( diff --git a/packages/compass-indexes/src/components/create-index-modal/create-index-modal.tsx b/packages/compass-indexes/src/components/create-index-modal/create-index-modal.tsx index c8af3391597..004ed8c52f3 100644 --- a/packages/compass-indexes/src/components/create-index-modal/create-index-modal.tsx +++ b/packages/compass-indexes/src/components/create-index-modal/create-index-modal.tsx @@ -23,7 +23,7 @@ import { useTrackOnChange, type TrackFunction, } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type CreateIndexModalProps = React.ComponentProps & { isVisible: boolean; @@ -45,7 +45,7 @@ function CreateIndexModal({ closeCreateIndexModal, ...props }: CreateIndexModalProps) { - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const onSetOpen = useCallback( (open) => { if (!open) { @@ -57,7 +57,7 @@ function CreateIndexModal({ useTrackOnChange( (track: TrackFunction) => { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (isVisible) { track('Screen', { name: 'create_index_modal' }, connectionInfo); track( @@ -69,7 +69,7 @@ function CreateIndexModal({ ); } }, - [isVisible, connectionInfoAccess], + [isVisible, connectionInfoRef], undefined ); diff --git a/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.tsx b/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.tsx index 76e4b1417b4..69419775b33 100644 --- a/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.tsx +++ b/packages/compass-indexes/src/components/search-indexes-modals/base-search-index-modal.tsx @@ -45,7 +45,7 @@ import { useTrackOnChange, type TrackFunction, } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; // Copied from packages/compass-aggregations/src/modules/pipeline-builder/pipeline-parser/utils.ts function parseShellBSON(source: string): Document[] { @@ -158,7 +158,7 @@ export const BaseSearchIndexModal: React.FunctionComponent< onClose, }) => { const editorRef = useRef(null); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const [indexName, setIndexName] = useState(initialIndexName); const [searchIndexType, setSearchIndexType] = useState( @@ -192,7 +192,7 @@ export const BaseSearchIndexModal: React.FunctionComponent< useTrackOnChange( (track: TrackFunction) => { if (isModalOpen) { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; track('Screen', { name: `${mode}_search_index_modal` }, connectionInfo); if (mode === 'create') { track( @@ -205,7 +205,7 @@ export const BaseSearchIndexModal: React.FunctionComponent< } } }, - [isModalOpen, mode, connectionInfoAccess], + [isModalOpen, mode, connectionInfoRef], undefined ); diff --git a/packages/compass-indexes/src/index.ts b/packages/compass-indexes/src/index.ts index e58ae962af9..c0aa25b8f8c 100644 --- a/packages/compass-indexes/src/index.ts +++ b/packages/compass-indexes/src/index.ts @@ -11,7 +11,7 @@ import { } from './stores/store'; import Indexes from './components/indexes/indexes'; import { - connectionInfoAccessLocator, + connectionInfoRefLocator, dataServiceLocator, type DataServiceLocator, } from '@mongodb-js/compass-connections/provider'; @@ -28,7 +28,7 @@ export const CompassIndexesHadronPlugin = registerHadronPlugin( { dataService: dataServiceLocator as DataServiceLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, instance: mongoDBInstanceLocator, logger: createLoggerLocator('COMPASS-INDEXES-UI'), track: telemetryLocator, @@ -50,7 +50,7 @@ export const CreateIndexPlugin = registerHadronPlugin( dataService: dataServiceLocator as DataServiceLocator<'createIndex'>, logger: createLoggerLocator('COMPASS-INDEXES-UI'), track: telemetryLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, } ); @@ -64,6 +64,6 @@ export const DropIndexPlugin = registerHadronPlugin( dataService: dataServiceLocator as DataServiceLocator<'dropIndex'>, logger: createLoggerLocator('COMPASS-INDEXES-UI'), track: telemetryLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, } ); diff --git a/packages/compass-indexes/src/modules/create-index/index.spec.js b/packages/compass-indexes/src/modules/create-index/index.spec.js index 0ba9bf52ef4..c99f1011a40 100644 --- a/packages/compass-indexes/src/modules/create-index/index.spec.js +++ b/packages/compass-indexes/src/modules/create-index/index.spec.js @@ -23,7 +23,7 @@ const thunkArgs = { localAppRegistry: { emit() {} }, dataService: { createIndex() {} }, track: () => {}, - connectionInfoAccess: { getCurrentConnectionInfo() {} }, + connectionInfoRef: { current: {} }, }; describe('create index module', function () { diff --git a/packages/compass-indexes/src/modules/create-index/index.ts b/packages/compass-indexes/src/modules/create-index/index.ts index 41d2c4aa91b..ae1d513ceec 100644 --- a/packages/compass-indexes/src/modules/create-index/index.ts +++ b/packages/compass-indexes/src/modules/create-index/index.ts @@ -106,7 +106,7 @@ export const createIndex = (): CreateIndexThunkAction> => { return async ( dispatch, getState, - { dataService, localAppRegistry, track, connectionInfoAccess } + { dataService, localAppRegistry, track, connectionInfoRef } ) => { const state = getState(); const spec = {} as CreateIndexSpec; @@ -243,11 +243,7 @@ export const createIndex = (): CreateIndexThunkAction> => { try { await dataService.createIndex(ns, spec as IndexSpecification, options); - track( - 'Index Created', - trackEvent, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Index Created', trackEvent, connectionInfoRef.current); dispatch(resetForm()); dispatch(toggleInProgress(false)); dispatch(toggleIsVisible(false)); diff --git a/packages/compass-indexes/src/modules/index.ts b/packages/compass-indexes/src/modules/index.ts index 941cba995ce..ca894d21c77 100644 --- a/packages/compass-indexes/src/modules/index.ts +++ b/packages/compass-indexes/src/modules/index.ts @@ -13,7 +13,7 @@ import type { ThunkAction, ThunkDispatch } from 'redux-thunk'; import type { DataService } from 'mongodb-data-service'; import type { Logger } from '@mongodb-js/compass-logging'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; import type { IndexesDataServiceProps } from '../stores/store'; const reducer = combineReducers({ @@ -36,7 +36,7 @@ export type IndexesExtraArgs = { logger: Logger; track: TrackFunction; dataService: Pick; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; }; export type IndexesThunkDispatch = ThunkDispatch< RootState, diff --git a/packages/compass-indexes/src/modules/search-indexes.ts b/packages/compass-indexes/src/modules/search-indexes.ts index d10f670760d..aa331b80441 100644 --- a/packages/compass-indexes/src/modules/search-indexes.ts +++ b/packages/compass-indexes/src/modules/search-indexes.ts @@ -390,7 +390,7 @@ export const createIndex = ({ return async function ( dispatch, getState, - { track, connectionInfoAccess, dataService } + { track, connectionInfoRef, dataService } ) { const { namespace } = getState(); @@ -430,7 +430,7 @@ export const createIndex = ({ atlas_search: true, type, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); openToast('search-index-creation-in-progress', { @@ -456,7 +456,7 @@ export const updateIndex = ({ return async function ( dispatch, getState, - { track, connectionInfoAccess, dataService } + { track, connectionInfoRef, dataService } ) { const { namespace, @@ -480,7 +480,7 @@ export const updateIndex = ({ { atlas_search: true, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); openToast('search-index-update-in-progress', { title: `Your index ${name} is being updated.`, @@ -575,7 +575,7 @@ export const dropSearchIndex = ( return async function ( dispatch, getState, - { track, connectionInfoAccess, dataService } + { track, connectionInfoRef, dataService } ) { const { namespace } = getState(); @@ -598,7 +598,7 @@ export const dropSearchIndex = ( { atlas_search: true, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); openToast('search-index-delete-in-progress', { title: `Your index ${name} is being deleted.`, diff --git a/packages/compass-indexes/src/stores/create-index.ts b/packages/compass-indexes/src/stores/create-index.ts index 551a14d2d89..b24cf5ea244 100644 --- a/packages/compass-indexes/src/stores/create-index.ts +++ b/packages/compass-indexes/src/stores/create-index.ts @@ -8,7 +8,7 @@ import type AppRegistry from 'hadron-app-registry'; import type { DataService } from 'mongodb-data-service'; import type { Logger } from '@mongodb-js/compass-logging'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type CreateIndexPluginOptions = Pick< CollectionTabPluginMetadata, @@ -19,7 +19,7 @@ export type CreateIndexPluginServices = { globalAppRegistry: AppRegistry; localAppRegistry: AppRegistry; dataService: Pick; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; logger: Logger; track: TrackFunction; }; @@ -31,7 +31,7 @@ export function activatePlugin( dataService, logger, track, - connectionInfoAccess, + connectionInfoRef, }: CreateIndexPluginServices, { on, cleanup }: ActivateHelpers ) { @@ -44,7 +44,7 @@ export function activatePlugin( dataService, logger, track, - connectionInfoAccess, + connectionInfoRef, }) ) ); diff --git a/packages/compass-indexes/src/stores/drop-index.tsx b/packages/compass-indexes/src/stores/drop-index.tsx index 041622e683b..2fba9e84263 100644 --- a/packages/compass-indexes/src/stores/drop-index.tsx +++ b/packages/compass-indexes/src/stores/drop-index.tsx @@ -10,14 +10,14 @@ import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection import type { DataService } from 'mongodb-data-service'; import type { Logger } from '@mongodb-js/compass-logging/provider'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type DropIndexInitialProps = Pick; type DropIndexServices = { localAppRegistry: AppRegistry; dataService: Pick; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; logger: Logger; track: TrackFunction; }; @@ -28,13 +28,13 @@ export function activatePlugin( localAppRegistry, dataService, track, - connectionInfoAccess, + connectionInfoRef, }: DropIndexServices, { on, cleanup, signal }: ActivateHelpers ) { on(localAppRegistry, 'open-drop-index-modal', async (indexName: string) => { try { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; track('Screen', { name: 'drop_index_modal' }, connectionInfo); const confirmed = await showConfirmation({ variant: 'danger', diff --git a/packages/compass-indexes/src/stores/store.spec.ts b/packages/compass-indexes/src/stores/store.spec.ts index 4ca21c6d4a7..439cbb9342b 100644 --- a/packages/compass-indexes/src/stores/store.spec.ts +++ b/packages/compass-indexes/src/stores/store.spec.ts @@ -6,7 +6,7 @@ import { activateIndexesPlugin, type IndexesStore } from './store'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; -import type { ConnectionInfo } from '../../../connection-info/dist'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; class FakeInstance extends EventEmitter { isWritable = true; @@ -45,9 +45,11 @@ describe('IndexesStore [Store]', function () { } as unknown as IndexesDataService, logger: createNoopLogger(), track: createNoopTrack(), - connectionInfoAccess: { - getCurrentConnectionInfo: () => ({ id: 'TEST' } as ConnectionInfo), - }, + connectionInfoRef: { + current: { + id: 'TEST', + }, + } as ConnectionInfoRef, }, createActivateHelpers() ); diff --git a/packages/compass-indexes/src/stores/store.ts b/packages/compass-indexes/src/stores/store.ts index a699015623e..04236d8a823 100644 --- a/packages/compass-indexes/src/stores/store.ts +++ b/packages/compass-indexes/src/stores/store.ts @@ -26,7 +26,7 @@ import type { ActivateHelpers } from 'hadron-app-registry'; import type { MongoDBInstance } from '@mongodb-js/compass-app-stores/provider'; import type { Logger } from '@mongodb-js/compass-logging'; import type { TrackFunction } from '@mongodb-js/compass-telemetry'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; export type IndexesDataServiceProps = | 'indexes' @@ -42,7 +42,7 @@ export type IndexesDataService = Pick; export type IndexesPluginServices = { dataService: IndexesDataService; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; instance: MongoDBInstance; localAppRegistry: Pick; globalAppRegistry: Pick; @@ -64,7 +64,7 @@ export type IndexesStore = Store & { export function activateIndexesPlugin( options: IndexesPluginOptions, { - connectionInfoAccess, + connectionInfoRef, instance, localAppRegistry, globalAppRegistry, @@ -96,7 +96,7 @@ export function activateIndexesPlugin( globalAppRegistry, logger, track, - connectionInfoAccess, + connectionInfoRef, dataService, }) ) diff --git a/packages/compass-indexes/test/setup-store.ts b/packages/compass-indexes/test/setup-store.ts index fa63168e3e6..8a66cc07aa0 100644 --- a/packages/compass-indexes/test/setup-store.ts +++ b/packages/compass-indexes/test/setup-store.ts @@ -10,8 +10,7 @@ import { activateIndexesPlugin } from '../src/stores/store'; import { createActivateHelpers } from 'hadron-app-registry'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; -import type { ConnectionInfo } from '../../connection-info/dist'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const NOOP_DATA_PROVIDER: IndexesDataService = { // eslint-disable-next-line @typescript-eslint/no-unused-vars @@ -81,9 +80,11 @@ export const setupStore = ( getStore: Sinon.spy(), } as unknown as AppRegistry; - const connectionInfoAccess: ConnectionInfoAccess = { - getCurrentConnectionInfo: () => ({ id: 'TEST' } as ConnectionInfo), - }; + const connectionInfoRef = { + current: { + id: 'TEST', + }, + } as ConnectionInfoRef; return activateIndexesPlugin( { @@ -100,7 +101,7 @@ export const setupStore = ( instance: fakeInstance as any, logger: createNoopLogger('TEST'), track: createNoopTrack(), - connectionInfoAccess, + connectionInfoRef, ...services, }, createActivateHelpers() diff --git a/packages/compass-query-bar/src/components/query-ai.tsx b/packages/compass-query-bar/src/components/query-ai.tsx index 626b27e72ea..b8e588701cf 100644 --- a/packages/compass-query-bar/src/components/query-ai.tsx +++ b/packages/compass-query-bar/src/components/query-ai.tsx @@ -13,12 +13,12 @@ import { import { useLogger } from '@mongodb-js/compass-logging/provider'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; import { isEqualDefaultQuery } from '../utils/query'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const useOnSubmitFeedback = (lastAIQueryRequestId: string | null) => { const logger = useLogger('AI-QUERY-UI'); const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); return useCallback( (feedback: 'positive' | 'negative', text: string) => { const { log, mongoLogId } = logger; @@ -35,7 +35,7 @@ const useOnSubmitFeedback = (lastAIQueryRequestId: string | null) => { text, request_id: lastAIQueryRequestId, }), - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); openToast('query-ai-feedback-submitted', { @@ -44,7 +44,7 @@ const useOnSubmitFeedback = (lastAIQueryRequestId: string | null) => { timeout: 10_000, }); }, - [logger, lastAIQueryRequestId, track, connectionInfoAccess] + [logger, lastAIQueryRequestId, track, connectionInfoRef] ); }; diff --git a/packages/compass-query-bar/src/components/query-history-button-popover.tsx b/packages/compass-query-bar/src/components/query-history-button-popover.tsx index fae6dbebbf6..25e63cb15a3 100644 --- a/packages/compass-query-bar/src/components/query-history-button-popover.tsx +++ b/packages/compass-query-bar/src/components/query-history-button-popover.tsx @@ -14,7 +14,7 @@ import { type TrackFunction, } from '@mongodb-js/compass-telemetry/provider'; import { fetchSavedQueries } from '../stores/query-bar-reducer'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const openQueryHistoryButtonStyles = css( { @@ -43,18 +43,18 @@ const QueryHistoryButtonPopover = ({ onOpenPopover: () => void; }) => { const [isOpen, setIsOpen] = React.useState(false); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); useTrackOnChange( (track: TrackFunction) => { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (isOpen) { track('Query History Opened', {}, connectionInfo); } else { track('Query History Closed', {}, connectionInfo); } }, - [isOpen, connectionInfoAccess], + [isOpen, connectionInfoRef], undefined ); diff --git a/packages/compass-query-bar/src/components/query-history/favorite-list.tsx b/packages/compass-query-bar/src/components/query-history/favorite-list.tsx index eeada773310..6f6c8c462d5 100644 --- a/packages/compass-query-bar/src/components/query-history/favorite-list.tsx +++ b/packages/compass-query-bar/src/components/query-history/favorite-list.tsx @@ -19,7 +19,7 @@ import type { RootState } from '../../stores/query-bar-store'; import { OpenBulkUpdateActionButton } from './query-item/query-item-action-buttons'; import { usePreference } from 'compass-preferences-model/provider'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; export type FavoriteActions = { onApply: (query: BaseQuery) => void; @@ -38,7 +38,7 @@ const FavoriteItem = ({ isReadonly: boolean; }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const readOnlyCompass = usePreference('readOnly'); const isUpdateQuery = !!query.update; const isDisabled = isUpdateQuery && (isReadonly || readOnlyCompass); @@ -52,7 +52,7 @@ const FavoriteItem = ({ screen: 'documents', isUpdateQuery, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); if (isDisabled) { @@ -72,7 +72,7 @@ const FavoriteItem = ({ onApply, attributes, onUpdateFavoriteChoosen, - connectionInfoAccess, + connectionInfoRef, ]); const onDeleteClick = useCallback(() => { @@ -83,10 +83,10 @@ const FavoriteItem = ({ screen: 'documents', isUpdateQuery, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); onDelete(query._id); - }, [track, query._id, isUpdateQuery, onDelete, connectionInfoAccess]); + }, [track, query._id, isUpdateQuery, onDelete, connectionInfoRef]); return ( { const [tab, setTab] = useState('recent'); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); useTrackOnChange( (track: TrackFunction) => { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (tab === 'favorite') { track('Query History Favorites', {}, connectionInfo); } else { track('Query History Recent', {}, connectionInfo); } }, - [tab, connectionInfoAccess], + [tab, connectionInfoRef], undefined ); diff --git a/packages/compass-query-bar/src/components/query-history/recent-list.tsx b/packages/compass-query-bar/src/components/query-history/recent-list.tsx index 16b525e7e45..22cb1c14d22 100644 --- a/packages/compass-query-bar/src/components/query-history/recent-list.tsx +++ b/packages/compass-query-bar/src/components/query-history/recent-list.tsx @@ -23,7 +23,7 @@ import { SaveQueryForm } from './save-query-form'; import { formatQuery, copyToClipboard, getQueryAttributes } from '../../utils'; import type { BaseQuery } from '../../constants/query-properties'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; type RecentActions = { onFavorite: (query: RecentQuery, name: string) => Promise; @@ -44,7 +44,7 @@ const RecentItem = ({ isReadonly: boolean; }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const readOnlyCompass = usePreference('readOnly'); const isUpdateQuery = !!query.update; const isDisabled = isUpdateQuery && (isReadonly || readOnlyCompass); @@ -68,7 +68,7 @@ const RecentItem = ({ { isUpdateQuery, }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); onApply(attributes); }, [ @@ -78,7 +78,7 @@ const RecentItem = ({ onApply, attributes, onUpdateRecentChoosen, - connectionInfoAccess, + connectionInfoRef, ]); const onCardClick = useCallback( @@ -98,11 +98,11 @@ const RecentItem = ({ track( 'Query History Favorite Added', { isUpdateQuery }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); void onFavorite(query, name); }, - [track, isUpdateQuery, onFavorite, query, connectionInfoAccess] + [track, isUpdateQuery, onFavorite, query, connectionInfoRef] ); return ( diff --git a/packages/compass-query-bar/src/components/query-option.tsx b/packages/compass-query-bar/src/components/query-option.tsx index f7554c4b70f..429aeedf004 100644 --- a/packages/compass-query-bar/src/components/query-option.tsx +++ b/packages/compass-query-bar/src/components/query-option.tsx @@ -17,7 +17,7 @@ import { changeField } from '../stores/query-bar-reducer'; import type { QueryProperty } from '../constants/query-properties'; import type { RootState } from '../stores/query-bar-store'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const queryOptionStyles = css({ display: 'flex', @@ -123,7 +123,7 @@ const QueryOption: React.FunctionComponent = ({ disabled = false, }) => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const darkMode = useDarkMode(); const editorInitialValueRef = useRef(value); const editorCurrentValueRef = useRef(value); @@ -148,14 +148,10 @@ const QueryOption: React.FunctionComponent = ({ editorCurrentValueRef.current !== editorInitialValueRef.current && (editorInitialValueRef.current || editorCurrentValueRef.current !== '{}') ) { - track( - 'Query Edited', - { option_name: name }, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Query Edited', { option_name: name }, connectionInfoRef.current); editorInitialValueRef.current = editorCurrentValueRef.current; } - }, [track, name, connectionInfoAccess]); + }, [track, name, connectionInfoRef]); return (
({ + const connectionInfoRef = { + current: { id: 'TEST', - }), + }, }; describe('with a successful server response', function () { @@ -60,7 +60,7 @@ describe('aiQueryReducer', function () { }, { dataService: mockDataService, - connectionInfoAccess, + connectionInfoRef, atlasAuthService: { on: sandbox.stub() }, atlasAiService: mockAtlasAiService, preferences, @@ -106,7 +106,7 @@ describe('aiQueryReducer', function () { const store = createStore({}, { atlasAuthService: { on: sandbox.stub() }, atlasAiService: mockAtlasAiService, - connectionInfoAccess, + connectionInfoRef, dataService: { sample() { return Promise.resolve([]); @@ -139,7 +139,7 @@ describe('aiQueryReducer', function () { return Promise.resolve([]); }, }, - connectionInfoAccess, + connectionInfoRef, preferences, logger: createNoopLogger(), track: createNoopTrack(), @@ -181,7 +181,7 @@ describe('aiQueryReducer', function () { }, { dataService: mockDataService, - connectionInfoAccess, + connectionInfoRef, atlasAuthService: { on: sandbox.stub() }, atlasAiService: mockAtlasAiService, preferences, @@ -222,7 +222,7 @@ describe('aiQueryReducer', function () { }, { dataService: mockDataService, - connectionInfoAccess, + connectionInfoRef, atlasAuthService: { on: sandbox.stub() }, atlasAiService: mockAtlasAiService, preferences, diff --git a/packages/compass-query-bar/src/stores/ai-query-reducer.ts b/packages/compass-query-bar/src/stores/ai-query-reducer.ts index f173dcb6dc0..87a9609175b 100644 --- a/packages/compass-query-bar/src/stores/ai-query-reducer.ts +++ b/packages/compass-query-bar/src/stores/ai-query-reducer.ts @@ -164,7 +164,7 @@ export const runAIQuery = ( preferences, atlasAiService, logger: { log }, - connectionInfoAccess, + connectionInfoRef, track, } ) => { @@ -173,7 +173,7 @@ export const runAIQuery = ( const abortController = new AbortController(); const { id: requestId, signal } = getAbortSignal(); - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; track( 'AI Prompt Submitted', diff --git a/packages/compass-query-bar/src/stores/query-bar-store.ts b/packages/compass-query-bar/src/stores/query-bar-store.ts index 70a1dbcf532..6160fec1b0c 100644 --- a/packages/compass-query-bar/src/stores/query-bar-store.ts +++ b/packages/compass-query-bar/src/stores/query-bar-store.ts @@ -8,7 +8,7 @@ import thunk from 'redux-thunk'; import type { AnyAction } from 'redux'; import type { ThunkAction, ThunkDispatch } from 'redux-thunk'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import { DEFAULT_FIELD_VALUES } from '../constants/query-bar-store'; @@ -48,7 +48,7 @@ type QueryBarServices = { preferences: PreferencesAccess; logger: Logger; track: TrackFunction; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; atlasAuthService: AtlasAuthService; atlasAiService: AtlasAiService; favoriteQueryStorageAccess?: FavoriteQueryStorageAccess; @@ -82,7 +82,7 @@ export type QueryBarExtraArgs = { recentQueryStorage?: RecentQueryStorage; logger: Logger; track: TrackFunction; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; atlasAiService: AtlasAiService; }; @@ -125,7 +125,7 @@ export function activatePlugin( preferences, logger, track, - connectionInfoAccess, + connectionInfoRef, atlasAuthService, atlasAiService, favoriteQueryStorageAccess, @@ -160,7 +160,7 @@ export function activatePlugin( preferences, logger, track, - connectionInfoAccess, + connectionInfoRef, atlasAiService, } ); diff --git a/packages/compass-schema-validation/package.json b/packages/compass-schema-validation/package.json index 1d50ede6c68..292777d7b05 100644 --- a/packages/compass-schema-validation/package.json +++ b/packages/compass-schema-validation/package.json @@ -51,7 +51,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", diff --git a/packages/compass-schema-validation/src/components/validation-editor/validation-editor.spec.tsx b/packages/compass-schema-validation/src/components/validation-editor/validation-editor.spec.tsx index fc75062041d..0b91ad1dd8b 100644 --- a/packages/compass-schema-validation/src/components/validation-editor/validation-editor.spec.tsx +++ b/packages/compass-schema-validation/src/components/validation-editor/validation-editor.spec.tsx @@ -1,14 +1,11 @@ import React from 'react'; -import { mount } from 'enzyme'; +import { render, screen } from '@mongodb-js/testing-library-compass'; import { expect } from 'chai'; import sinon from 'sinon'; - import ValidationEditor from '.'; -import { CodemirrorMultilineEditor } from '@mongodb-js/compass-editor'; describe('ValidationEditor [Component]', function () { context('when it is an editable mode', function () { - let component: ReturnType | null; const setValidatorChangedSpy = sinon.spy(); const setValidationActionChangedSpy = sinon.spy(); const setValidationLevelChangedSpy = sinon.spy(); @@ -27,7 +24,7 @@ describe('ValidationEditor [Component]', function () { const isEditable = true; beforeEach(function () { - component = mount( + render( | null; const setValidatorChangedSpy = sinon.spy(); const setValidationActionChangedSpy = sinon.spy(); const setValidationLevelChangedSpy = sinon.spy(); @@ -75,7 +65,7 @@ describe('ValidationEditor [Component]', function () { const isEditable = false; beforeEach(function () { - component = mount( + render( ; isEditable: boolean; - darkMode?: boolean; - track: TrackFunction; - connectionInfoAccess: ConnectionInfoAccess; }; /** * The validation editor component. */ -class ValidationEditor extends Component { - static displayName = 'ValidationEditor'; - - debounceValidatorChanged: (text: string) => void; +const ValidationEditor: React.FunctionComponent = ({ + namespace, + clearSampleDocuments, + validatorChanged, + validationActionChanged, + validationLevelChanged, + cancelValidation, + saveValidation, + serverVersion, + validation, + isEditable, +}) => { + const track = useTelemetry(); + const connectionInfoRef = useConnectionInfoRef(); + + const clearSampleDocumentsRef = useRef(clearSampleDocuments); + clearSampleDocumentsRef.current = clearSampleDocuments; + + const validatorChangedRef = useRef(validatorChanged); + validatorChangedRef.current = validatorChanged; + + const saveValidationRef = useRef(saveValidation); + saveValidationRef.current = saveValidation; + + const validationRef = useRef(validation); + validationRef.current = validation; + + const trackValidator = useCallback( + (validator: string) => { + const checkedValidator = checkValidator(validator); + const trackEvent = { + json_schema: + typeof checkedValidator.validator === 'object' && + !!checkedValidator.validator?.$jsonSchema, + }; + track('Schema Validation Edited', trackEvent, connectionInfoRef.current); + }, + [connectionInfoRef, track] + ); - /** - * Set up the autocompleters once on initialization. - * - * @param {Object} props - The properties. - */ - constructor(props: ValidationEditorProps) { - super(props); - this.debounceValidatorChanged = debounce((validator) => { - this.props.clearSampleDocuments(); - this.trackValidator(validator); + const debounceValidatorChanged = useMemo(() => { + return debounce((validator: string) => { + clearSampleDocumentsRef.current(); + trackValidator(validator); }, 750); - } - - /** - * Save validator changes. - */ - onValidatorSave() { - this.props.saveValidation(this.props.validation); - } - - /** - * Save validator changes. - * - * @param {Object} validator - The validator. - */ - onValidatorChange(validator: string) { - this.props.validatorChanged(validator); - this.validatorChanged(); - } - - /** - * Checks if there is any error. - */ - hasErrors(): boolean { - return !!(this.props.validation.error || this.props.validation.syntaxError); - } - - /** - * Validator changed. - */ - validatorChanged() { - this.debounceValidatorChanged(this.props.validation.validator); - } + }, [trackValidator]); - trackValidator(validator: string) { - const checkedValidator = checkValidator(validator); - const trackEvent = { - json_schema: - typeof checkedValidator.validator === 'object' && - !!checkedValidator.validator?.$jsonSchema, + useEffect(() => { + return () => { + debounceValidatorChanged.cancel(); }; - this.props.track( - 'Schema Validation Edited', - trackEvent, - this.props.connectionInfoAccess.getCurrentConnectionInfo() - ); - } - - /** - * Render action selector. - */ - renderActionSelector() { - const { validation, isEditable, validationActionChanged } = this.props; - const { validationAction } = validation; - - return ( - - ); - } + }, [debounceValidatorChanged]); + + const onValidatorChange = useCallback( + (validator: string) => { + validatorChangedRef.current(validator); + debounceValidatorChanged(validator); + }, + [debounceValidatorChanged] + ); - /** - * Render level selector. - */ - renderLevelSelector() { - const { validation, isEditable, validationLevelChanged } = this.props; - const { validationLevel } = validation; + const onValidatorSave = useCallback(() => { + saveValidationRef.current(validationRef.current); + }, []); - return ( - - ); - } + const darkMode = useDarkMode(); - /** - * Render validation message. - */ - renderValidationMessage() { - if (!this.hasErrors()) { - return; - } + const { validationAction, validationLevel, error, syntaxError, isChanged } = + validation; - let message = ''; - let variant: BannerVariant = 'info'; + const hasErrors = !!(error || syntaxError); - if (this.props.validation.syntaxError) { - message = this.props.validation.syntaxError.message; - variant = 'danger'; - } else if (this.props.validation.error) { - message = this.props.validation.error.message; - variant = 'warning'; - } + let message = ''; + let variant: BannerVariant = 'info'; - return {message}; + if (syntaxError) { + message = syntaxError.message; + variant = 'danger'; + } else if (error) { + message = error.message; + variant = 'warning'; } - /** - * Render actions pannel. - */ - renderActionsPanel() { - if (!(this.props.validation.isChanged && this.props.isEditable)) { - return; - } + const hasChangedAndEditable = isChanged && isEditable; - return ( -
- - Validation modified - - - + return ( + +
+ +
- ); - } - - /** - * Render ValidationEditor component. - */ - render() { - const { darkMode, isEditable, validation } = this.props; - - return ( - -
- {this.renderActionSelector()} - {this.renderLevelSelector()} -
-
- { - return this.onValidatorChange(text); - }} - readOnly={!isEditable} - serverVersion={this.props.serverVersion} - /> + { + onValidatorChange(text); + }} + readOnly={!isEditable} + serverVersion={serverVersion} + /> +
+ {variant && message && {message}} + {hasChangedAndEditable && ( +
+ + Validation modified + + +
- {this.renderValidationMessage()} - {this.renderActionsPanel()} -
- ); - } -} + )} +
+ ); +}; -export default withTelemetry( - withConnectionInfoAccess( - withDarkMode(ValidationEditor) - ) -); +export default ValidationEditor; diff --git a/packages/compass-schema-validation/src/components/validation-states/validation-states.spec.tsx b/packages/compass-schema-validation/src/components/validation-states/validation-states.spec.tsx index 9aa5cb1336b..49b188191cc 100644 --- a/packages/compass-schema-validation/src/components/validation-states/validation-states.spec.tsx +++ b/packages/compass-schema-validation/src/components/validation-states/validation-states.spec.tsx @@ -1,29 +1,38 @@ import React from 'react'; -import { mount } from 'enzyme'; import { expect } from 'chai'; import sinon from 'sinon'; -import { - Banner, - EmptyContent, - WarningSummary, -} from '@mongodb-js/compass-components'; -import { Provider } from 'react-redux'; - import ValidationStates from '.'; -import ValidationEditor from '../validation-editor'; -import { configureStore } from '../../stores/store'; +import { + createPluginTestHelpers, + screen, +} from '@mongodb-js/testing-library-compass'; +import { CompassSchemaValidationHadronPlugin } from '../../index'; + +const { renderWithConnections } = createPluginTestHelpers( + CompassSchemaValidationHadronPlugin.withMockServices({ + dataService: { + collectionInfo() { + return Promise.resolve({}); + }, + } as any, + instance: { + build: { + version: '7.0.0', + }, + on() {}, + removeListener() {}, + } as any, + }), + { + namespace: 'foo.bar', + } as any +); describe('ValidationStates [Component]', function () { let props: any; - let component: ReturnType; - - const mountComponent = (props: any) => { - const store = configureStore({}, {} as any); - return mount( - - - - ); + + const render = (props: any) => { + return renderWithConnections(); }; beforeEach(function () { @@ -70,26 +79,20 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.1.0'; - component = mountComponent(props); + render(props); }); it('renders the wrapper div', function () { - expect( - component.find(`[data-testid="schema-validation-states"]`) - ).to.exist; + expect(screen.getByTestId('schema-validation-states')).to.exist; }); it('renders the version banner', function () { - expect( - component.find({ ['data-testid']: 'old-server-read-only' }) - ).to.exist; + expect(screen.getByTestId('old-server-read-only')).to.exist; }); it('does not render other banners', function () { expect( - component.find({ - ['data-testid']: 'collection-validation-warning', - }) + screen.queryByTestId('collection-validation-warning') ).to.not.exist; }); }); @@ -107,22 +110,12 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('renders the collection time-series banner', function () { expect( - component.find({ - ['data-testid']: 'collection-validation-warning', - }) - ).to.exist; - expect( - component - .find({ - ['data-testid']: 'collection-validation-warning', - }) - .at(0) - .text() + screen.getByTestId('collection-validation-warning').textContent ).to.equal( 'Schema validation for time-series collections is not supported.' ); @@ -142,29 +135,17 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('renders the collection read-only banner', function () { expect( - component.find({ - ['data-testid']: 'collection-validation-warning', - }) - ).to.exist; - expect( - component - .find({ - ['data-testid']: 'collection-validation-warning', - }) - .at(0) - .text() + screen.getByTestId('collection-validation-warning').textContent ).to.equal('Schema validation for readonly views is not supported.'); }); it('does not render other banners', function () { - expect( - component.find({ ['data-testid']: 'old-server-read-only' }) - ).to.be.not.exist; + expect(screen.queryByTestId('old-server-read-only')).to.be.not.exist; }); }); @@ -181,12 +162,13 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('does not render a warning banner', function () { - expect(component.find(Banner)).to.be.not.exist; - expect(component.find(WarningSummary)).to.be.not.exist; + expect( + screen.queryByTestId('collection-validation-warning') + ).to.be.not.exist; }); }); @@ -203,12 +185,13 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('does not render a warning banner', function () { - expect(component.find(Banner)).to.be.not.exist; - expect(component.find(WarningSummary)).to.be.not.exist; + expect( + screen.queryByTestId('collection-validation-warning') + ).to.be.not.exist; }); }); @@ -225,29 +208,17 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('renders the writable banner', function () { expect( - component.find({ - ['data-testid']: 'collection-validation-warning', - }) - ).to.exist; - expect( - component - .find({ - ['data-testid']: 'collection-validation-warning', - }) - .at(0) - .text() + screen.getByTestId('collection-validation-warning').textContent ).to.equal('This action is not available on a secondary node.'); }); it('does not render other banners', function () { - expect( - component.find({ ['data-testid']: 'old-server-read-only' }) - ).to.be.not.exist; + expect(screen.queryByTestId('old-server-read-only')).to.be.not.exist; }); }); @@ -264,11 +235,11 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('does not render the zero state', function () { - expect(component.find(EmptyContent)).to.not.exist; + expect(screen.queryByTestId('empty-content')).to.not.exist; }); }); @@ -285,11 +256,11 @@ describe('ValidationStates [Component]', function () { props.isLoaded = true; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('renders the zero state', function () { - expect(component.find(EmptyContent)).to.exist; + expect(screen.getByTestId('empty-content')).to.exist; }); }); @@ -306,11 +277,11 @@ describe('ValidationStates [Component]', function () { props.isLoaded = false; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('does not render the content', function () { - expect(component.find(ValidationEditor)).to.not.exist; + expect(screen.queryByTestId('validation-editor')).to.not.exist; }); }); @@ -327,11 +298,11 @@ describe('ValidationStates [Component]', function () { props.isLoaded = true; props.serverVersion = '3.2.0'; - component = mountComponent(props); + render(props); }); it('renders the content', function () { - expect(component.find(ValidationEditor)).to.exist; + expect(screen.getByTestId('validation-editor')).to.exist; }); }); }); diff --git a/packages/compass-schema-validation/src/index.ts b/packages/compass-schema-validation/src/index.ts index ec4da917a16..40d455dd039 100644 --- a/packages/compass-schema-validation/src/index.ts +++ b/packages/compass-schema-validation/src/index.ts @@ -2,7 +2,7 @@ import { onActivated } from './stores'; import CompassSchemaValidation from './components/compass-schema-validation'; import { registerHadronPlugin } from 'hadron-app-registry'; import { - connectionInfoAccessLocator, + connectionInfoRefLocator, dataServiceLocator, type DataServiceLocator, } from '@mongodb-js/compass-connections/provider'; @@ -21,7 +21,7 @@ export const CompassSchemaValidationHadronPlugin = registerHadronPlugin( dataService: dataServiceLocator as DataServiceLocator< 'aggregate' | 'collectionInfo' | 'updateCollection' >, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, instance: mongoDBInstanceLocator, preferences: preferencesLocator, logger: createLoggerLocator('COMPASS-SCHEMA-VALIDATION-UI'), diff --git a/packages/compass-schema-validation/src/modules/index.ts b/packages/compass-schema-validation/src/modules/index.ts index f0592fd6cbd..3dc9e02d3ea 100644 --- a/packages/compass-schema-validation/src/modules/index.ts +++ b/packages/compass-schema-validation/src/modules/index.ts @@ -24,7 +24,7 @@ import editMode, { INITIAL_STATE as EDIT_MODE_STATE } from './edit-mode'; import type { ThunkAction } from 'redux-thunk'; import type { PreferencesAccess } from 'compass-preferences-model'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import type AppRegistry from 'hadron-app-registry'; @@ -64,7 +64,7 @@ export type SchemaValidationExtraArgs = { DataService, 'aggregate' | 'collectionInfo' | 'updateCollection' >; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; preferences: PreferencesAccess; globalAppRegistry: AppRegistry; logger: Logger; diff --git a/packages/compass-schema-validation/src/modules/validation.ts b/packages/compass-schema-validation/src/modules/validation.ts index a98c34f5541..7752200207f 100644 --- a/packages/compass-schema-validation/src/modules/validation.ts +++ b/packages/compass-schema-validation/src/modules/validation.ts @@ -459,7 +459,7 @@ export const saveValidation = ( return async ( dispatch, getState, - { dataService, track, connectionInfoAccess } + { dataService, track, connectionInfoRef } ) => { const state = getState(); const namespace = state.namespace; @@ -475,11 +475,7 @@ export const saveValidation = ( validation_action: validation.validationAction, validation_level: validation.validationLevel, }; - track( - 'Schema Validation Updated', - trackEvent, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Schema Validation Updated', trackEvent, connectionInfoRef.current); try { await dataService.updateCollection( `${namespace.database}.${namespace.collection}`, diff --git a/packages/compass-schema-validation/src/modules/zero-state.ts b/packages/compass-schema-validation/src/modules/zero-state.ts index fcb98f5f5b1..e3ed225a6d9 100644 --- a/packages/compass-schema-validation/src/modules/zero-state.ts +++ b/packages/compass-schema-validation/src/modules/zero-state.ts @@ -48,13 +48,9 @@ export const zeroStateChanged = ( export const changeZeroState = ( isZeroState: boolean ): SchemaValidationThunkAction => { - return (dispatch, _getState, { track, connectionInfoAccess }) => { + return (dispatch, _getState, { track, connectionInfoRef }) => { if (isZeroState === false) { - track( - 'Schema Validation Added', - {}, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Schema Validation Added', {}, connectionInfoRef.current); } return dispatch(zeroStateChanged(isZeroState)); }; diff --git a/packages/compass-schema-validation/src/stores/store.spec.ts b/packages/compass-schema-validation/src/stores/store.spec.ts index bdc8f0f9b70..90be6a3c07d 100644 --- a/packages/compass-schema-validation/src/stores/store.spec.ts +++ b/packages/compass-schema-validation/src/stores/store.spec.ts @@ -20,7 +20,7 @@ import { onActivated } from './store'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const topologyDescription = { type: 'Unknown', @@ -46,9 +46,9 @@ describe('Schema Validation Store', function () { let store: Store; let deactivate: null | (() => void) = null; const globalAppRegistry = new AppRegistry(); - const connectionInfoAccess = { - getCurrentConnectionInfo: () => {}, - } as ConnectionInfoAccess; + const connectionInfoRef = { + current: {}, + } as ConnectionInfoRef; beforeEach(async function () { const activateResult = onActivated( @@ -60,7 +60,7 @@ describe('Schema Validation Store', function () { preferences: await createSandboxFromDefaultPreferences(), logger: createNoopLogger(), track: createNoopTrack(), - connectionInfoAccess, + connectionInfoRef, }, createActivateHelpers() ); diff --git a/packages/compass-schema-validation/src/stores/store.ts b/packages/compass-schema-validation/src/stores/store.ts index 38510cf10cf..41a0f2364d6 100644 --- a/packages/compass-schema-validation/src/stores/store.ts +++ b/packages/compass-schema-validation/src/stores/store.ts @@ -9,7 +9,7 @@ import semver from 'semver'; import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection'; import type { ActivateHelpers, AppRegistry } from 'hadron-app-registry'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import type { MongoDBInstance } from '@mongodb-js/compass-app-stores/provider'; @@ -28,7 +28,7 @@ type SchemaValidationServices = { DataService, 'aggregate' | 'collectionInfo' | 'updateCollection' >; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; preferences: PreferencesAccess; instance: MongoDBInstance; logger: Logger; @@ -45,7 +45,7 @@ export function configureStore( | 'preferences' | 'logger' | 'track' - | 'connectionInfoAccess' + | 'connectionInfoRef' > ) { return createStore( @@ -66,7 +66,7 @@ export function onActivated( { globalAppRegistry, dataService, - connectionInfoAccess, + connectionInfoRef, preferences, instance, logger, @@ -87,7 +87,7 @@ export function onActivated( }, { dataService, - connectionInfoAccess, + connectionInfoRef, preferences, globalAppRegistry, logger, diff --git a/packages/compass-schema/src/index.ts b/packages/compass-schema/src/index.ts index 201098d8abd..e5e19217183 100644 --- a/packages/compass-schema/src/index.ts +++ b/packages/compass-schema/src/index.ts @@ -1,5 +1,5 @@ import { - connectionInfoAccessLocator, + connectionInfoRefLocator, dataServiceLocator, type DataServiceLocator, } from '@mongodb-js/compass-connections/provider'; @@ -28,7 +28,7 @@ export const CompassSchemaHadronPlugin = registerHadronPlugin( preferences: preferencesLocator, fieldStoreService: fieldStoreServiceLocator, queryBar: queryBarServiceLocator, - connectionInfoAccess: connectionInfoAccessLocator, + connectionInfoRef: connectionInfoRefLocator, } ); export const CompassSchemaPlugin = { diff --git a/packages/compass-schema/src/stores/store.spec.ts b/packages/compass-schema/src/stores/store.spec.ts index f08d4617d25..e6cf05f7ba5 100644 --- a/packages/compass-schema/src/stores/store.spec.ts +++ b/packages/compass-schema/src/stores/store.spec.ts @@ -8,7 +8,7 @@ import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { createNoopLogger } from '@mongodb-js/compass-logging/provider'; import type { FieldStoreService } from '@mongodb-js/compass-field-store'; import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider'; -import type { ConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import type { ConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const dummyLogger = createNoopLogger('TEST'); const dummyTrack = createNoopTrack(); @@ -32,9 +32,9 @@ describe('Schema Store', function () { const globalAppRegistry = new AppRegistry(); const dataService = 'test'; const namespace = 'db.coll'; - const connectionInfoAccess = { - getCurrentConnectionInfo: () => {}, - } as ConnectionInfoAccess; + const connectionInfoRef = { + current: {}, + } as ConnectionInfoRef; beforeEach(async function () { const plugin = activateSchemaPlugin( @@ -50,7 +50,7 @@ describe('Schema Store', function () { preferences: await createSandboxFromDefaultPreferences(), fieldStoreService: mockFieldStoreService, queryBar: mockQueryBar as any, - connectionInfoAccess, + connectionInfoRef, }, createActivateHelpers() ); diff --git a/packages/compass-schema/src/stores/store.ts b/packages/compass-schema/src/stores/store.ts index 9485a1250e9..6bad28897a7 100644 --- a/packages/compass-schema/src/stores/store.ts +++ b/packages/compass-schema/src/stores/store.ts @@ -21,7 +21,7 @@ import { capMaxTimeMSAtPreferenceLimit } from 'compass-preferences-model/provide import { openToast } from '@mongodb-js/compass-components'; import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService as OriginalDataService, } from '@mongodb-js/compass-connections/provider'; import type { ActivateHelpers } from 'hadron-app-registry'; @@ -60,7 +60,7 @@ function resultId(): number { export type DataService = Pick; export type SchemaPluginServices = { dataService: DataService; - connectionInfoAccess: ConnectionInfoAccess; + connectionInfoRef: ConnectionInfoRef; localAppRegistry: Pick; globalAppRegistry: Pick; logger: Logger; @@ -131,7 +131,7 @@ export function activateSchemaPlugin( preferences, fieldStoreService, queryBar, - connectionInfoAccess, + connectionInfoRef, }: SchemaPluginServices, { on, cleanup }: ActivateHelpers ) { @@ -266,11 +266,7 @@ export function activateSchemaPlugin( geo_data: schema ? schemaContainsGeoData(schema) : false, analysis_time_ms: analysisTimeMS, }); - track( - 'Schema Analyzed', - trackEvent, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Schema Analyzed', trackEvent, connectionInfoRef.current); }, startAnalysis: async function (this: SchemaStore) { diff --git a/packages/compass-serverstats/package.json b/packages/compass-serverstats/package.json index bf7595e4d96..b25c452969a 100644 --- a/packages/compass-serverstats/package.json +++ b/packages/compass-serverstats/package.json @@ -49,9 +49,9 @@ "@mongodb-js/eslint-config-compass": "^1.1.7", "@mongodb-js/mocha-config-compass": "^1.4.2", "@mongodb-js/prettier-config-compass": "^1.0.2", + "@mongodb-js/testing-library-compass": "^1.0.0", "@mongodb-js/tsconfig-compass": "^1.0.5", "@types/d3": "^3.5.x", - "@types/enzyme": "^3.10.14", "chai": "^4.1.2", "depcheck": "^1.4.1", "electron-mocha": "^12.2.0", diff --git a/packages/compass-serverstats/src/components/current-op-component.jsx b/packages/compass-serverstats/src/components/current-op-component.jsx deleted file mode 100644 index a17af94ee28..00000000000 --- a/packages/compass-serverstats/src/components/current-op-component.jsx +++ /dev/null @@ -1,202 +0,0 @@ -const timer = require('d3-timer'); -const React = require('react'); -const PropTypes = require('prop-types'); -const Actions = require('../actions'); -const DBErrorStore = require('../stores/dberror-store'); -const { withTelemetry } = require('@mongodb-js/compass-telemetry/provider'); -const { - withConnectionInfoAccess, -} = require('@mongodb-js/compass-connections/provider'); - -// const debug = require('debug')('mongodb-compass:server-stats:current-op-component'); - -/** - * Represents the component that renders the current op information. - */ -class CurrentOpComponent extends React.Component { - /** - * The current op component should be initialized with a 'store' - * property, that triggers with the result of a { currentOp: 1 } - * command. - * - * @param {Object} props - The component properties. - */ - constructor(props) { - super(props); - this.state = { error: null, data: [], display: 'flex' }; - } - - /** - * When the component mounts, the component will subscribe to the - * provided store, so that each time the store triggers the component - * can update its state. - */ - componentDidMount() { - this.unsubscribeRefresh = this.props.store.listen(this.refresh.bind(this)); - this.unsubscribeShowOperationDetails = Actions.showOperationDetails.listen( - this.hide.bind(this) - ); - this.unsubscribeHideOperationDetails = Actions.hideOperationDetails.listen( - this.show.bind(this) - ); - - if (!DBErrorStore.ops.currentOp) { - this.unsubscribeError = DBErrorStore.listen(this.stop.bind(this)); - this.timer = timer.interval(() => { - Actions.currentOp(); - }, this.props.interval); - } - } - - /** - * When the component unmounts, we unsubscribe from the store and stop the - * timer. - */ - componentWillUnmount() { - this.unsubscribeRefresh(); - this.unsubscribeShowOperationDetails(); - this.unsubscribeHideOperationDetails(); - - if (this.unsubscribeError) { - this.unsubscribeError(); - this.timer.stop(); - } - } - - stop() { - if (this.timer) { - this.timer.stop(); - } - } - - /** - * Refreshes the component state with the new current op data that was - * received from the store. - * - * @param {Error} error - The error, if any occured. - * @param {Object} data - The javascript object for the result of the command. - */ - refresh(error, data) { - this.setState({ error: error, data: data }); - } - - /** - * Set the component to visible. - */ - show() { - this.setState({ display: 'flex' }); - } - - /** - * Set the component to hidden. - */ - hide() { - this.setState({ display: 'none' }); - } - - /** - * Fire the show operation detail action with the row data. - * - * @param {Object} data - The row data. - */ - showOperationDetails(data) { - this.props.track( - 'CurrentOp showOperationDetails', - {}, - this.props.connectionInfoAccess.getCurrentConnectionInfo() - ); - Actions.showOperationDetails(data); - } - - /** - * Render the error message in the component. - * - * @returns {String} The error message. - */ - renderError() { - return ( -
-
-

Slowest Operations

-
-
⚠ DATA UNAVAILABLE
-
- ); - } - - /** - * Render the error message in the component. - * - * @returns {React.Component} The zero-state. - */ - renderZero() { - return ( -
-
-

Slowest Operations

-
-
- ✔ No Slow Operations -
-
- ); - } - - /** - * Render the table in the component. - * - * @returns {React.Component} The table. - */ - renderGraph() { - const rows = this.state.data.map((row, i) => { - return ( - // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions -
  • this.showOperationDetails(row)} - key={`list-item-${i}`} - > -
    {row.op}
    -
    {row.ns}
    -
    {row.ms_running + ' ms'}
    -
  • - ); - }); - return ( -
    -
    -

    Slowest Operations

    -
    -
    -
      {rows}
    -
    -
    - ); - } - - /** - * Renders the component. - * - * @returns {React.Component} The component. - */ - render() { - if (this.state.error) { - return this.renderError(); - } - if (this.state.data.length === 0) { - return this.renderZero(); - } - return this.renderGraph(); - } -} - -CurrentOpComponent.propTypes = { - store: PropTypes.any.isRequired, - interval: PropTypes.number.isRequired, - track: PropTypes.any.isRequired, - connectionInfoAccess: PropTypes.any.isRequired, -}; - -CurrentOpComponent.displayName = 'CurrentOpComponent'; - -module.exports = withTelemetry(withConnectionInfoAccess(CurrentOpComponent)); diff --git a/packages/compass-serverstats/src/components/current-op-component.tsx b/packages/compass-serverstats/src/components/current-op-component.tsx new file mode 100644 index 00000000000..eb87f6300a0 --- /dev/null +++ b/packages/compass-serverstats/src/components/current-op-component.tsx @@ -0,0 +1,139 @@ +import React, { useCallback, useEffect, useState } from 'react'; +import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; + +// No types exist for these files +/* eslint-disable @typescript-eslint/no-var-requires */ +const timer = require('d3-timer'); +const Actions = require('../actions'); +const DBErrorStore = require('../stores/dberror-store'); +/* eslint-enable @typescript-eslint/no-var-requires */ + +type Row = { + ns: string; + op: string; + ms_running: number; +}; + +/** + * Represents the component that renders the current op information. + */ +const CurrentOpComponent: React.FunctionComponent<{ + store: any; + interval: number; +}> = ({ store, interval }) => { + const [state, setState] = useState<{ + error: Error | null; + data: Row[]; + display: string; + }>({ + error: null, + data: [], + display: 'flex', + }); + + useEffect(() => { + return store.listen((error: any, data: any) => { + setState((prevState) => { + return { ...prevState, error, data }; + }); + }); + }, [store]); + + useEffect(() => { + return Actions.showOperationDetails.listen(() => { + setState((prevState) => { + return { ...prevState, display: 'none' }; + }); + }); + }, [store]); + + useEffect(() => { + return Actions.hideOperationDetails.listen(() => { + setState((prevState) => { + return { ...prevState, display: 'flex' }; + }); + }); + }, [store]); + + useEffect(() => { + if (!DBErrorStore.ops.currentOp) { + const timerInterval = timer.interval(() => { + Actions.currentOp(); + }, interval); + const unsubscribe = DBErrorStore.listen(() => { + timerInterval.stop(); + }); + return () => { + timerInterval.stop(); + unsubscribe(); + }; + } + }, [interval, store]); + + const track = useTelemetry(); + const connectionInfoRef = useConnectionInfoRef(); + + const showOperationDetails = useCallback( + (data) => { + track('CurrentOp showOperationDetails', {}, connectionInfoRef.current); + Actions.showOperationDetails(data); + }, + [connectionInfoRef, track] + ); + + if (state.error) { + return ( +
    +
    +

    Slowest Operations

    +
    +
    ⚠ DATA UNAVAILABLE
    +
    + ); + } + + if (state.data.length === 0) { + return ( +
    +
    +

    Slowest Operations

    +
    +
    + ✔ No Slow Operations +
    +
    + ); + } + + const rows = state.data.map((row, i) => { + return ( + // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions +
  • { + showOperationDetails(row); + }} + key={`list-item-${i}`} + > +
    {row.op}
    +
    {row.ns}
    +
    {String(row.ms_running) + ' ms'}
    +
  • + ); + }); + + return ( +
    +
    +

    Slowest Operations

    +
    +
    +
      {rows}
    +
    +
    + ); +}; + +export default CurrentOpComponent; +export { CurrentOpComponent }; diff --git a/packages/compass-serverstats/src/components/detailview-component.tsx b/packages/compass-serverstats/src/components/detailview-component.tsx index 87a4b2e3f3e..840b02c73bf 100644 --- a/packages/compass-serverstats/src/components/detailview-component.tsx +++ b/packages/compass-serverstats/src/components/detailview-component.tsx @@ -3,7 +3,7 @@ import { Button, Icon } from '@mongodb-js/compass-components'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; import Actions from '../actions'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; function removeMS(key: string, value: any) { if (key === 'ms_running') { @@ -26,7 +26,7 @@ export function DetailViewComponent() { const [data, setData] = useState(null); const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); useEffect(() => { const unsubscribeShowOperationDetails = Actions.showOperationDetails.listen( @@ -47,23 +47,15 @@ export function DetailViewComponent() { }, []); const hideOperationDetails = useCallback(() => { - track( - 'DetailView hideOperationDetails', - {}, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('DetailView hideOperationDetails', {}, connectionInfoRef.current); Actions.hideOperationDetails(); - }, [track, connectionInfoAccess]); + }, [track, connectionInfoRef]); const onKillOp = useCallback(() => { - track( - 'DetailView killOp', - {}, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('DetailView killOp', {}, connectionInfoRef.current); if (data?.opid !== undefined) Actions.killOp(data.opid); hideOperationDetails(); - }, [data, track, hideOperationDetails, connectionInfoAccess]); + }, [data, track, hideOperationDetails, connectionInfoRef]); if (!data) { return null; diff --git a/packages/compass-serverstats/src/components/index.tsx b/packages/compass-serverstats/src/components/index.tsx index a6757433c2c..756085c82e4 100644 --- a/packages/compass-serverstats/src/components/index.tsx +++ b/packages/compass-serverstats/src/components/index.tsx @@ -25,7 +25,7 @@ import { useTrackOnChange, type TrackFunction, } from '@mongodb-js/compass-telemetry/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const REFRESH_STATS_INTERVAL_MS = 1000; @@ -119,17 +119,13 @@ function PerformancePanelMsgs() { */ function PerformanceComponent() { const eventDispatcher = useRef(realTimeDispatcher()); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); useTrackOnChange( (track: TrackFunction) => { - track( - 'Screen', - { name: 'performance' }, - connectionInfoAccess.getCurrentConnectionInfo() - ); + track('Screen', { name: 'performance' }, connectionInfoRef.current); }, - [connectionInfoAccess] + [connectionInfoRef] ); useEffect(() => { diff --git a/packages/compass-serverstats/src/components/server-stats-lists-component.jsx b/packages/compass-serverstats/src/components/server-stats-lists-component.jsx index e688f217ddf..7de6860d2b8 100644 --- a/packages/compass-serverstats/src/components/server-stats-lists-component.jsx +++ b/packages/compass-serverstats/src/components/server-stats-lists-component.jsx @@ -1,7 +1,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const { DetailViewComponent } = require('./detailview-component'); -const CurrentOpComponent = require('./current-op-component'); +const { CurrentOpComponent } = require('./current-op-component'); const TopComponent = require('./top-component'); const CurrentOpStore = require('../stores/current-op-store'); const TopStore = require('../stores/top-store'); diff --git a/packages/compass-serverstats/src/components/server-stats-toolbar.tsx b/packages/compass-serverstats/src/components/server-stats-toolbar.tsx index 8ea26d269fa..8bdf736838a 100644 --- a/packages/compass-serverstats/src/components/server-stats-toolbar.tsx +++ b/packages/compass-serverstats/src/components/server-stats-toolbar.tsx @@ -13,7 +13,7 @@ import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; import Actions from '../actions'; import ServerStatsStore from '../stores/server-stats-graphs-store'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; const serverStatsToolbarStyles = css({ display: 'flex', @@ -58,7 +58,7 @@ type ServerStatsToolbarProps = { function ServerStatsToolbar({ eventDispatcher }: ServerStatsToolbarProps) { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const darkMode = useDarkMode(); const [time, setTime] = useState('00:00:00'); @@ -73,7 +73,7 @@ function ServerStatsToolbar({ eventDispatcher }: ServerStatsToolbarProps) { }, [eventDispatcher]); const onPlayPauseClicked = useCallback(() => { - const connectionInfo = connectionInfoAccess.getCurrentConnectionInfo(); + const connectionInfo = connectionInfoRef.current; if (isPaused) { track('Performance Resumed', {}, connectionInfo); } else { @@ -81,7 +81,7 @@ function ServerStatsToolbar({ eventDispatcher }: ServerStatsToolbarProps) { } setPaused(!isPaused); Actions.pause(); - }, [isPaused, track, connectionInfoAccess]); + }, [isPaused, track, connectionInfoRef]); return (
    ); + render(); }); afterEach(function () { ServerStatsStore.isMongos = false; - component.unmount(); }); it('displays the top not available in mongos message', function () { - const state = component.find(Banner); - expect(state.text()).to.include( - 'Top command is not available for mongos, some charts may not show any data.' - ); + expect( + screen.getByText( + 'Top command is not available for mongos, some charts may not show any data.' + ) + ).to.exist; }); }); context( 'when top is unable to retrieve information about some collections', function () { - let component = null; - beforeEach(function () { TopStore.topUnableToRetrieveSomeCollections = true; - component = mount(); + render(); }); afterEach(function () { TopStore.topUnableToRetrieveSomeCollections = false; - component.unmount(); }); it('displays a warning message', function () { - const state = component.find(Banner); - expect(state.text()).to.include( - 'Top command is unable to retrieve information about certain collections, resulting in incomplete data being displayed on the charts.' - ); + expect( + screen.getByText( + 'Top command is unable to retrieve information about certain collections, resulting in incomplete data being displayed on the charts.' + ) + ).to.exist; }); } ); diff --git a/packages/compass-serverstats/test/enzyme/server-stats-toolbar.test.tsx b/packages/compass-serverstats/test/enzyme/server-stats-toolbar.test.tsx index dac16cdafb5..a96a87e0282 100644 --- a/packages/compass-serverstats/test/enzyme/server-stats-toolbar.test.tsx +++ b/packages/compass-serverstats/test/enzyme/server-stats-toolbar.test.tsx @@ -1,8 +1,7 @@ import { expect } from 'chai'; -import enzyme from 'enzyme'; import React from 'react'; import d3 from 'd3'; - +import { render, screen } from '@mongodb-js/testing-library-compass'; import realTimeDispatcher from '../../src/d3/real-time-dispatcher'; import { ServerStatsToolbar } from '../../src/components/server-stats-toolbar'; @@ -10,15 +9,15 @@ describe('', function () { context('when initialized, mounted and rendered', function () { beforeEach(function () { this.dispatcher = realTimeDispatcher(); - this.component = enzyme.mount( + this.component = render( ); }); it('shows a default time of 00:00:00', function () { - expect( - this.component.find('[data-testid="server-stats-time"]').text() - ).to.equal('00:00:00'); + expect(screen.getByTestId('server-stats-time').textContent).to.equal( + '00:00:00' + ); }); context('when the eventDispatcher notifies a newXValue', function () { @@ -28,9 +27,9 @@ describe('', function () { }); it('shows the correct time', function () { - expect( - this.component.find('[data-testid="server-stats-time"]').text() - ).to.equal((d3 as any).time.format.utc('%X')(this.date)); + expect(screen.getByTestId('server-stats-time').textContent).to.equal( + (d3 as any).time.format.utc('%X')(this.date) + ); }); }); }); diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index 228e6a40be6..8385b43394f 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -73,6 +73,7 @@ "@mongodb-js/prettier-config-compass": "^1.0.2", "@mongodb-js/testing-library-compass": "^1.0.1", "@mongodb-js/tsconfig-compass": "^1.0.5", + "@types/enzyme": "^3.10.14", "chai": "^4.2.0", "depcheck": "^1.4.1", "electron": "^30.5.1", diff --git a/packages/compass-shell/src/index.ts b/packages/compass-shell/src/index.ts index dd0d732b248..2b73e217df9 100644 --- a/packages/compass-shell/src/index.ts +++ b/packages/compass-shell/src/index.ts @@ -7,7 +7,7 @@ import { type WorkspaceComponent } from '@mongodb-js/compass-workspaces'; import { dataServiceLocator, type DataService, - connectionInfoAccessLocator, + connectionInfoRefLocator, type DataServiceLocator, } from '@mongodb-js/compass-connections/provider'; @@ -21,7 +21,7 @@ export const CompassShellPlugin = registerHadronPlugin( logger: createLoggerLocator('COMPASS-SHELL'), track: telemetryLocator, dataService: dataServiceLocator as DataServiceLocator, - connectionInfo: connectionInfoAccessLocator, + connectionInfo: connectionInfoRefLocator, preferences: preferencesLocator, } ); diff --git a/packages/compass-shell/src/modules/worker-runtime.ts b/packages/compass-shell/src/modules/worker-runtime.ts index b22d10c8ea9..33dcdb535b1 100644 --- a/packages/compass-shell/src/modules/worker-runtime.ts +++ b/packages/compass-shell/src/modules/worker-runtime.ts @@ -1,5 +1,5 @@ import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import type { MongoLogWriter } from '@mongodb-js/compass-logging/provider'; @@ -48,7 +48,7 @@ export function createWorkerRuntime( dataService: DataService, log: MongoLogWriter, track: TrackFunction, - connectionInfo: ConnectionInfoAccess + connectionInfo: ConnectionInfoRef ): typeof WorkerRuntime['prototype'] { const emitter = new EventEmitter(); @@ -63,11 +63,7 @@ export function createWorkerRuntime( // We always enable telemetry here, since the track call will // already check whether Compass telemetry is enabled or not. track: ({ event, properties }) => { - return track( - `Shell ${event}`, - properties, - connectionInfo.getCurrentConnectionInfo() - ); + return track(`Shell ${event}`, properties, connectionInfo.current); }, flush: () => { return Promise.resolve(); // not needed diff --git a/packages/compass-shell/src/plugin.tsx b/packages/compass-shell/src/plugin.tsx index 4ba46dc2218..18da16ed490 100644 --- a/packages/compass-shell/src/plugin.tsx +++ b/packages/compass-shell/src/plugin.tsx @@ -3,7 +3,7 @@ import thunk from 'redux-thunk'; import { HistoryStorage } from './modules/history-storage'; import { type Logger } from '@mongodb-js/compass-logging/provider'; import type { - ConnectionInfoAccess, + ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; import type { PreferencesAccess } from 'compass-preferences-model'; @@ -45,7 +45,7 @@ export type ShellPluginServices = { track: TrackFunction; dataService: DataService; preferences: PreferencesAccess; - connectionInfo: ConnectionInfoAccess; + connectionInfo: ConnectionInfoRef; }; export type ShellPluginExtraArgs = ShellPluginServices & { diff --git a/packages/connection-storage/src/provider.ts b/packages/connection-storage/src/provider.ts index 0cb29c87359..e13ca061ffa 100644 --- a/packages/connection-storage/src/provider.ts +++ b/packages/connection-storage/src/provider.ts @@ -23,9 +23,6 @@ export const ConnectionStorageProvider = ConnectionStorageContext.Provider; export function useConnectionStorageContext(): ConnectionStorage { const connectionStorage = useContext(ConnectionStorageContext); if (!connectionStorage) { - if (process.env.NODE_ENV === 'test') { - return new InMemoryConnectionStorage(); - } throw new Error( 'Could not find the current ConnectionStorage. Did you forget to setup the ConnectionStorageProvider?' ); diff --git a/packages/databases-collections-list/src/items-grid.tsx b/packages/databases-collections-list/src/items-grid.tsx index 663acccc489..c94230cb2dd 100644 --- a/packages/databases-collections-list/src/items-grid.tsx +++ b/packages/databases-collections-list/src/items-grid.tsx @@ -19,7 +19,7 @@ import { useConnectionInfo } from '@mongodb-js/compass-connections/provider'; import toNS from 'mongodb-ns'; import { getConnectionTitle } from '@mongodb-js/connection-info'; import { useOpenWorkspace } from '@mongodb-js/compass-workspaces/provider'; -import { useConnectionInfoAccess } from '@mongodb-js/compass-connections/provider'; +import { useConnectionInfoRef } from '@mongodb-js/compass-connections/provider'; import { usePreferences } from 'compass-preferences-model/provider'; type Item = { _id: string } & Record; @@ -308,16 +308,16 @@ export const ItemsGrid = ({ renderLoadSampleDataBanner, }: ItemsGridProps): React.ReactElement => { const track = useTelemetry(); - const connectionInfoAccess = useConnectionInfoAccess(); + const connectionInfoRef = useConnectionInfoRef(); const onViewTypeChange = useCallback( (newType: ViewType) => { track( 'Switch View Type', { view_type: newType, item_type: itemType }, - connectionInfoAccess.getCurrentConnectionInfo() + connectionInfoRef.current ); }, - [itemType, track, connectionInfoAccess] + [itemType, track, connectionInfoRef] ); const [sortControls, sortState] = useSortControls(sortBy); From 465663aa891639b1746d9f6079920c6743c5d440 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 15:35:00 +0000 Subject: [PATCH 56/57] chore: update AUTHORS, THIRD-PARTY-NOTICES, Security Test Summary (#6259) Update report Co-authored-by: gribnoysup <5036933+gribnoysup@users.noreply.github.com> --- docs/tracking-plan.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tracking-plan.md b/docs/tracking-plan.md index b60efa27b2d..4a1a51c7eef 100644 --- a/docs/tracking-plan.md +++ b/docs/tracking-plan.md @@ -1,7 +1,7 @@ # Compass Tracking Plan -Generated on Tue, Sep 17, 2024 at 01:32 PM +Generated on Tue, Sep 17, 2024 at 03:34 PM ## Table of Contents From 73ef900102ba1764b9b17f25ee67a6885dd23daa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:47:23 +0000 Subject: [PATCH 57/57] v1.44.4-beta.7 --- package-lock.json | 2 +- packages/compass/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 91d8a109694..b47d9ba3a55 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43755,7 +43755,7 @@ }, "packages/compass": { "name": "mongodb-compass", - "version": "1.44.4-beta.6", + "version": "1.44.4-beta.7", "hasInstallScript": true, "license": "SSPL", "dependencies": { diff --git a/packages/compass/package.json b/packages/compass/package.json index febfdc06ce7..97700cffe25 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -4,7 +4,7 @@ "productName": "MongoDB Compass", "description": "The MongoDB GUI", "homepage": "https://www.mongodb.com/products/compass", - "version": "1.44.4-beta.6", + "version": "1.44.4-beta.7", "apiVersion": "3.0.0", "main": "build/main.js", "author": {