diff --git a/configs/testing-library-compass/src/index.tsx b/configs/testing-library-compass/src/index.tsx index 831c640a604..165494bb76a 100644 --- a/configs/testing-library-compass/src/index.tsx +++ b/configs/testing-library-compass/src/index.tsx @@ -47,20 +47,30 @@ import { } from 'compass-preferences-model/provider'; import { TelemetryProvider } from '@mongodb-js/compass-telemetry/provider'; import { CompassComponentsProvider } from '@mongodb-js/compass-components'; + +/** + * NB: we are breaking the rules in this package and importing code directly + * from source so that we can create a better unit testing expirience while + * avoiding exposing the internals of the connections logic to the rest of the + * code in the repo. This is not a pattern that should be used anywhere else in + * the codebase! + */ import { TestEnvCurrentConnectionContext, ConnectionInfoProvider, -} 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'; -import { getDataServiceForConnection } from '@mongodb-js/compass-connections/src/stores/connections-store-redux'; +} from '../../../packages/compass-connections/src/connection-info-provider'; +import type { State } from '../../../packages/compass-connections/src/stores/connections-store-redux'; +import { createDefaultConnectionInfo } from '../../../packages/compass-connections/src/stores/connections-store-redux'; +import { getDataServiceForConnection } from '../../../packages/compass-connections/src/stores/connections-store-redux'; import { useConnectionActions, useStore, -} from '@mongodb-js/compass-connections/src/stores/store-context'; +} from '../../../packages/compass-connections/src/stores/store-context'; import CompassConnections, { ConnectFnProvider, -} from '@mongodb-js/compass-connections/src/index'; +} from '../../../packages/compass-connections/src/index'; +/***/ + import type { CompassPluginComponent, CompassPlugin, diff --git a/packages/atlas-service/main.d.ts b/packages/atlas-service/main.d.ts deleted file mode 100644 index 2288fec21d1..00000000000 --- a/packages/atlas-service/main.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/main.d'; diff --git a/packages/atlas-service/main.js b/packages/atlas-service/main.js deleted file mode 100644 index bf8a3d0b439..00000000000 --- a/packages/atlas-service/main.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/main'); diff --git a/packages/atlas-service/package.json b/packages/atlas-service/package.json index 8ea29755f6c..b48730a4868 100644 --- a/packages/atlas-service/package.json +++ b/packages/atlas-service/package.json @@ -17,17 +17,12 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "main.js", - "main.d.ts", - "renderer.js", - "renderer.d.ts", - "provider.js" + "dist" ], "license": "SSPL", "exports": { - "./main": "./main.js", - "./renderer": "./renderer.js", + "./main": "./dist/main.js", + "./renderer": "./dist/renderer.js", "./provider": "./dist/provider.js" }, "compass:exports": { diff --git a/packages/atlas-service/provider.d.ts b/packages/atlas-service/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/atlas-service/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/atlas-service/renderer.d.ts b/packages/atlas-service/renderer.d.ts deleted file mode 100644 index 1bea89cf1a7..00000000000 --- a/packages/atlas-service/renderer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/renderer.d'; diff --git a/packages/atlas-service/renderer.js b/packages/atlas-service/renderer.js deleted file mode 100644 index 547cf94808d..00000000000 --- a/packages/atlas-service/renderer.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/renderer'); diff --git a/packages/compass-aggregations/test/configure-store.ts b/packages/compass-aggregations/test/configure-store.ts index 7f3f0bd4467..d332c4c9264 100644 --- a/packages/compass-aggregations/test/configure-store.ts +++ b/packages/compass-aggregations/test/configure-store.ts @@ -73,7 +73,7 @@ function getMockedPluginArgs( */ export default function configureStore( ...args: Parameters -) { +): any /* TODO: typescript is struggling to infer the types here correctly */ { const [Plugin, initialProps, connectionInfo, renderOptions] = getMockedPluginArgs(...args); const { activatePluginWithActiveConnection } = diff --git a/packages/compass-app-stores/package.json b/packages/compass-app-stores/package.json index 00d7e2ac948..6430fd61417 100644 --- a/packages/compass-app-stores/package.json +++ b/packages/compass-app-stores/package.json @@ -17,9 +17,7 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js", - "provider.d.ts" + "dist" ], "license": "SSPL", "main": "dist/index.js", diff --git a/packages/compass-app-stores/provider.d.ts b/packages/compass-app-stores/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-app-stores/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-app-stores/provider.js b/packages/compass-app-stores/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/compass-app-stores/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider'); diff --git a/packages/compass-connections/package.json b/packages/compass-connections/package.json index 52f0305a39b..61439d7f0bb 100644 --- a/packages/compass-connections/package.json +++ b/packages/compass-connections/package.json @@ -17,13 +17,15 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js", - "provider.d.ts" + "dist" ], "license": "SSPL", "main": "dist/index.js", "compass:main": "src/index.tsx", + "exports": { + ".": "./dist/index.js", + "./provider": "./dist/provider.js" + }, "compass:exports": { ".": "./src/index.tsx", "./provider": "./src/provider.ts" diff --git a/packages/compass-connections/provider.d.ts b/packages/compass-connections/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-connections/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-connections/provider.js b/packages/compass-connections/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/compass-connections/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider'); diff --git a/packages/compass-connections/src/provider.ts b/packages/compass-connections/src/provider.ts index e33b35c4dc5..143a44a2580 100644 --- a/packages/compass-connections/src/provider.ts +++ b/packages/compass-connections/src/provider.ts @@ -1,6 +1,11 @@ import { createServiceLocator } from '@mongodb-js/compass-app-registry'; import { useConnectionInfo } from './connection-info-provider'; import type { DataService } from 'mongodb-data-service'; +import type { + ConnectionsEventEmitter, + ConnectionsEventMap, + ConnectionState, +} from './stores/connections-store-redux'; import { getDataServiceForConnection } from './stores/connections-store-redux'; export type { DataService }; @@ -87,3 +92,6 @@ const ConnectionStatus = { } as const; export { ConnectionStatus }; +export type { ConnectionId } from './stores/connections-store-redux'; + +export type { ConnectionsEventEmitter, ConnectionsEventMap, ConnectionState }; diff --git a/packages/compass-connections/src/stores/connections-store-redux.ts b/packages/compass-connections/src/stores/connections-store-redux.ts index cd23196d7f5..cb9eb3635ce 100644 --- a/packages/compass-connections/src/stores/connections-store-redux.ts +++ b/packages/compass-connections/src/stores/connections-store-redux.ts @@ -427,7 +427,13 @@ const ConnectionAttemptForConnection = new Map< const DataServiceForConnection = new Map(); -export function getDataServiceForConnection(connectionId: ConnectionId) { +export type GetDataServiceForConnectionFn = ( + connectionId: ConnectionId +) => DataService; + +export const getDataServiceForConnection: GetDataServiceForConnectionFn = ( + connectionId +) => { const ds = DataServiceForConnection.get(connectionId); if (!ds) { throw new Error( @@ -435,7 +441,7 @@ export function getDataServiceForConnection(connectionId: ConnectionId) { ); } return ds; -} +}; /** * Connection secrets are stored in-memory even after disconnecting (even if diff --git a/packages/compass-connections/src/stores/store-context.tsx b/packages/compass-connections/src/stores/store-context.tsx index b1b47a9898a..87ffd3fde52 100644 --- a/packages/compass-connections/src/stores/store-context.tsx +++ b/packages/compass-connections/src/stores/store-context.tsx @@ -13,6 +13,7 @@ import { import type { configureStore, ConnectionId, + ConnectionsEventEmitter, ConnectionState, State, } from './connections-store-redux'; @@ -209,7 +210,12 @@ export function useConnectionsListRef(): { return ref; } -function useConnections() { +export type ConnectionsService = Omit & { + getDataServiceForConnection: typeof getDataServiceForConnection; +} & ReturnType & + ReturnType; + +function useConnections(): ConnectionsService { const actions = useConnectionActions(); const connectionsListRef = useConnectionsListRef(); return useInitialValue({ @@ -218,16 +224,13 @@ function useConnections() { getDataServiceForConnection, on: connectionsEventEmitter.on, off: connectionsEventEmitter.off, + once: connectionsEventEmitter.once, removeListener: connectionsEventEmitter.removeListener, }); } -export type ConnectionsService = ReturnType; - -export const connectionsLocator = createServiceLocator( - useConnections, - 'connectionsLocator' -); +export const connectionsLocator: () => ConnectionsService = + createServiceLocator(useConnections, 'connectionsLocator'); function isShallowEqual( a: Record | null, diff --git a/packages/compass-data-modeling/provider.d.ts b/packages/compass-data-modeling/provider.d.ts deleted file mode 100644 index a39a0f8b74a..00000000000 --- a/packages/compass-data-modeling/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider/index'; diff --git a/packages/compass-data-modeling/provider.js b/packages/compass-data-modeling/provider.js deleted file mode 100644 index 10b49be22cc..00000000000 --- a/packages/compass-data-modeling/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider/index'); diff --git a/packages/compass-data-modeling/renderer.d.ts b/packages/compass-data-modeling/renderer.d.ts deleted file mode 100644 index 9bc1d366e41..00000000000 --- a/packages/compass-data-modeling/renderer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/services/data-model-storage-electron.d'; diff --git a/packages/compass-data-modeling/renderer.js b/packages/compass-data-modeling/renderer.js deleted file mode 100644 index f45fd38401d..00000000000 --- a/packages/compass-data-modeling/renderer.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/services/data-model-storage-electron'); diff --git a/packages/compass-data-modeling/web.d.ts b/packages/compass-data-modeling/web.d.ts deleted file mode 100644 index af1d4190f57..00000000000 --- a/packages/compass-data-modeling/web.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/services/data-model-storage-web.d'; diff --git a/packages/compass-data-modeling/web.js b/packages/compass-data-modeling/web.js deleted file mode 100644 index 9fa8b57b899..00000000000 --- a/packages/compass-data-modeling/web.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/services/data-model-storage-web'); diff --git a/packages/compass-generative-ai/package.json b/packages/compass-generative-ai/package.json index 42041e4d0e5..a43f4108a5a 100644 --- a/packages/compass-generative-ai/package.json +++ b/packages/compass-generative-ai/package.json @@ -17,8 +17,7 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js" + "dist" ], "license": "SSPL", "main": "dist/index.js", diff --git a/packages/compass-generative-ai/provider.d.ts b/packages/compass-generative-ai/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-generative-ai/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-logging/package.json b/packages/compass-logging/package.json index 9ff36fecb81..68b75687afc 100644 --- a/packages/compass-logging/package.json +++ b/packages/compass-logging/package.json @@ -19,8 +19,7 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js" + "dist" ], "license": "SSPL", "main": "dist/index.js", diff --git a/packages/compass-logging/provider.d.ts b/packages/compass-logging/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-logging/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-preferences-model/provider.d.ts b/packages/compass-preferences-model/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-preferences-model/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-preferences-model/provider.js b/packages/compass-preferences-model/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/compass-preferences-model/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider'); diff --git a/packages/compass-telemetry/package.json b/packages/compass-telemetry/package.json index cb43b00bc69..7c2e5512541 100644 --- a/packages/compass-telemetry/package.json +++ b/packages/compass-telemetry/package.json @@ -17,8 +17,7 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js" + "dist" ], "license": "SSPL", "main": "dist/index.js", diff --git a/packages/compass-telemetry/provider.d.ts b/packages/compass-telemetry/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-telemetry/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-workspaces/provider.d.ts b/packages/compass-workspaces/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/compass-workspaces/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/compass-workspaces/provider.js b/packages/compass-workspaces/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/compass-workspaces/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider'); diff --git a/packages/connection-storage/main.d.ts b/packages/connection-storage/main.d.ts deleted file mode 100644 index 2288fec21d1..00000000000 --- a/packages/connection-storage/main.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/main.d'; diff --git a/packages/connection-storage/main.js b/packages/connection-storage/main.js deleted file mode 100644 index bf8a3d0b439..00000000000 --- a/packages/connection-storage/main.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/main'); diff --git a/packages/connection-storage/package.json b/packages/connection-storage/package.json index f91939dbff6..569b48504ee 100644 --- a/packages/connection-storage/package.json +++ b/packages/connection-storage/package.json @@ -17,19 +17,13 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "main.js", - "main.d.ts", - "renderer.js", - "renderer.d.ts", - "provider.js", - "provider.d.ts" + "dist" ], "license": "SSPL", "exports": { - "./main": "./main.js", - "./renderer": "./renderer.js", - "./provider": "./provider.js" + "./main": "./dist/main.js", + "./renderer": "./dist/renderer.js", + "./provider": "./dist/provider.js" }, "compass:exports": { "./main": "./src/main.ts", diff --git a/packages/connection-storage/provider.d.ts b/packages/connection-storage/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/connection-storage/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/connection-storage/provider.js b/packages/connection-storage/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/connection-storage/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider'); diff --git a/packages/connection-storage/renderer.d.ts b/packages/connection-storage/renderer.d.ts deleted file mode 100644 index 01a29fe70b0..00000000000 --- a/packages/connection-storage/renderer.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/renderer'; diff --git a/packages/connection-storage/renderer.js b/packages/connection-storage/renderer.js deleted file mode 100644 index 547cf94808d..00000000000 --- a/packages/connection-storage/renderer.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/renderer'); diff --git a/packages/my-queries-storage/package.json b/packages/my-queries-storage/package.json index 4ffe8821b60..823adda4df4 100644 --- a/packages/my-queries-storage/package.json +++ b/packages/my-queries-storage/package.json @@ -17,14 +17,14 @@ "url": "https://github.com/mongodb-js/compass.git" }, "files": [ - "dist", - "provider.js" + "dist" ], "license": "SSPL", "main": "dist/index.js", "compass:main": "src/index.ts", "exports": { ".": { + "types": "./dist/index.d.ts", "import": "./dist/.esm-wrapper.mjs", "require": "./dist/index.js" }, diff --git a/packages/my-queries-storage/provider.d.ts b/packages/my-queries-storage/provider.d.ts deleted file mode 100644 index 6084d76ab26..00000000000 --- a/packages/my-queries-storage/provider.d.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './dist/provider.d'; diff --git a/packages/my-queries-storage/provider.js b/packages/my-queries-storage/provider.js deleted file mode 100644 index 5b56677514c..00000000000 --- a/packages/my-queries-storage/provider.js +++ /dev/null @@ -1,2 +0,0 @@ -'use strict'; -module.exports = require('./dist/provider');