From 8ade720eb2933a84aa66c17d6b103e780ac77af0 Mon Sep 17 00:00:00 2001 From: Le Roux Bodenstein Date: Mon, 8 Dec 2025 17:40:17 +0000 Subject: [PATCH] add workspace-info --- package-lock.json | 235 +++++++++++++++++- packages/compass-collection/package.json | 1 + .../components/collection-tab-provider.tsx | 2 +- .../src/components/collection-tab.tsx | 2 +- packages/compass-collection/src/index.ts | 2 +- .../src/modules/collection-tab.ts | 2 +- .../src/plugin-tab-title.tsx | 2 +- .../package.json | 2 +- .../src/connections-navigation-tree.spec.tsx | 2 +- .../src/connections-navigation-tree.tsx | 2 +- packages/compass-data-modeling/package.json | 1 + packages/compass-data-modeling/src/index.ts | 2 +- .../src/plugin-tab-title.tsx | 2 +- .../package.json | 1 + .../src/index.ts | 2 +- .../src/plugin-tab-title.tsx | 2 +- packages/compass-serverstats/package.json | 2 +- packages/compass-serverstats/src/index.ts | 2 +- .../src/plugin-tab-title.tsx | 2 +- packages/compass-shell/package.json | 1 + packages/compass-shell/src/index.ts | 2 +- .../compass-shell/src/plugin-tab-title.tsx | 2 +- packages/compass-sidebar/package.json | 1 + .../connections-navigation.tsx | 2 +- .../multiple-connections/sidebar.spec.tsx | 2 +- .../multiple-connections/sidebar.tsx | 2 +- packages/compass-web/package.json | 1 + .../sandbox/sandbox-workspace-tab-router.tsx | 6 +- packages/compass-web/src/entrypoint.tsx | 4 +- packages/compass-web/src/index.tsx | 8 +- packages/compass-web/src/url-builder.ts | 4 +- packages/compass-welcome/package.json | 2 +- packages/compass-welcome/src/index.ts | 2 +- .../compass-welcome/src/plugin-tab-title.tsx | 2 +- packages/compass-workspaces/package.json | 1 + .../src/components/index.tsx | 9 +- .../components/workspace-close-handler.tsx | 2 +- .../workspace-tab-context-provider.tsx | 2 +- .../src/components/workspaces-provider.tsx | 3 +- .../src/components/workspaces.tsx | 14 +- packages/compass-workspaces/src/index.ts | 27 +- packages/compass-workspaces/src/provider.tsx | 8 +- .../services/workspaces-storage-desktop.tsx | 2 +- .../src/services/workspaces-storage-web.tsx | 2 +- .../src/services/workspaces-storage.tsx | 2 +- .../src/stores/workspaces-middleware.ts | 2 +- .../src/stores/workspaces.spec.ts | 3 +- .../src/stores/workspaces.ts | 68 +++-- packages/compass/package.json | 1 + .../compass/src/app/components/workspace.tsx | 2 +- packages/databases-collections/package.json | 1 + .../src/collections-plugin-title.tsx | 2 +- .../src/databases-plugin-title.tsx | 2 +- packages/databases-collections/src/index.ts | 2 +- packages/workspace-info/.depcheckrc | 8 + packages/workspace-info/.eslintignore | 2 + packages/workspace-info/.eslintrc.js | 8 + packages/workspace-info/.mocharc.js | 1 + packages/workspace-info/package.json | 68 +++++ packages/workspace-info/src/index.spec.tsx | 0 packages/workspace-info/src/index.ts | 2 + .../src/workspace-info.ts} | 11 + packages/workspace-info/tsconfig-build.json | 5 + packages/workspace-info/tsconfig.json | 8 + 64 files changed, 450 insertions(+), 127 deletions(-) create mode 100644 packages/workspace-info/.depcheckrc create mode 100644 packages/workspace-info/.eslintignore create mode 100644 packages/workspace-info/.eslintrc.js create mode 100644 packages/workspace-info/.mocharc.js create mode 100644 packages/workspace-info/package.json create mode 100644 packages/workspace-info/src/index.spec.tsx create mode 100644 packages/workspace-info/src/index.ts rename packages/{compass-workspaces/src/types.ts => workspace-info/src/workspace-info.ts} (95%) create mode 100644 packages/workspace-info/tsconfig-build.json create mode 100644 packages/workspace-info/tsconfig.json diff --git a/package-lock.json b/package-lock.json index bdc99fb6d24..c53e0141b7b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11154,6 +11154,10 @@ "resolved": "configs/webpack-config-compass", "link": true }, + "node_modules/@mongodb-js/workspace-info": { + "resolved": "packages/workspace-info", + "link": true + }, "node_modules/@mongosh/arg-parser": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-3.22.0.tgz", @@ -47352,6 +47356,7 @@ "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@mongodb-js/webpack-config-compass": "^1.10.12", + "@mongodb-js/workspace-info": "^1.0.0", "@segment/analytics-node": "^1.1.4", "@types/minimatch": "^5.1.2", "bson": "^6.10.4", @@ -47919,6 +47924,7 @@ "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/mongodb-constants": "^0.17.0", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "hadron-document": "^8.10.5", @@ -48266,9 +48272,9 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-context-menu": "^0.3.1", - "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/connection-form": "^1.75.0", "@mongodb-js/connection-info": "^0.24.0", + "@mongodb-js/workspace-info": "^1.0.0", "compass-preferences-model": "^2.66.3", "mongodb-build-info": "^1.8.1", "react": "^17.0.2", @@ -48573,6 +48579,7 @@ "@mongodb-js/compass-user-data": "^0.11.2", "@mongodb-js/compass-utils": "^0.9.23", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "html-to-image": "1.11.11", @@ -50609,6 +50616,7 @@ "@mongodb-js/connection-form": "^1.75.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/my-queries-storage": "^0.50.2", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "fuse.js": "^6.5.3", @@ -50839,7 +50847,7 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "d3": "^3.5.17", "d3-timer": "^1.0.3", "debug": "^4.3.4", @@ -50958,6 +50966,7 @@ "@mongodb-js/compass-user-data": "^0.11.2", "@mongodb-js/compass-utils": "^0.9.23", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongosh/browser-repl": "^3.26.0", "@mongosh/logging": "^3.15.3", "@mongosh/node-runtime-worker-thread": "^3.3.28", @@ -51002,6 +51011,7 @@ "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/mongodb-constants": "^0.17.0", + "@mongodb-js/workspace-info": "^1.0.0", "compass-preferences-model": "^2.66.3", "lodash": "^4.17.21", "mongodb": "^6.19.0", @@ -51657,6 +51667,7 @@ "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@mongodb-js/webpack-config-compass": "^1.10.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -51885,7 +51896,7 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "compass-preferences-model": "^2.66.3", "react": "^17.0.2", "react-redux": "^8.1.3", @@ -51951,6 +51962,7 @@ "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-logging": "^1.7.25", "@mongodb-js/compass-user-data": "^0.11.2", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "lodash": "^4.17.21", @@ -52827,6 +52839,7 @@ "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/databases-collections-list": "^1.86.0", "@mongodb-js/my-queries-storage": "^0.50.2", + "@mongodb-js/workspace-info": "^1.0.0", "compass-preferences-model": "^2.66.3", "lodash": "^4.17.21", "mongodb-collection-model": "^5.37.0", @@ -54251,6 +54264,110 @@ "typescript": "^5.0.4" } }, + "packages/workspace-info": { + "name": "@mongodb-js/workspace-info", + "version": "1.0.0", + "license": "SSPL", + "dependencies": { + "@mongodb-js/compass-app-registry": "^9.4.29", + "@mongodb-js/compass-components": "^1.59.2", + "@mongodb-js/compass-user-data": "^0.11.2" + }, + "devDependencies": { + "@mongodb-js/eslint-config-compass": "^1.4.12", + "@mongodb-js/mocha-config-compass": "^1.7.2", + "@mongodb-js/prettier-config-compass": "^1.2.9", + "@mongodb-js/tsconfig-compass": "^1.2.12", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/sinon-chai": "^3.2.5", + "depcheck": "^1.4.1", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "sinon": "^17.0.1", + "typescript": "^5.9.3" + } + }, + "packages/workspace-info/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "packages/workspace-info/node_modules/@sinonjs/fake-timers": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "packages/workspace-info/node_modules/@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + } + }, + "packages/workspace-info/node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "packages/workspace-info/node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "packages/workspace-info/node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "packages/workspace-info/node_modules/path-to-regexp": { + "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/workspace-info/node_modules/sinon": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, "scripts": { "name": "@mongodb-js/compass-scripts", "version": "0.19.19", @@ -61234,6 +61351,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -61559,7 +61677,6 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-context-menu": "^0.3.1", - "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/connection-form": "^1.75.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/eslint-config-compass": "^1.4.12", @@ -61567,6 +61684,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -61810,6 +61928,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -61933,6 +62052,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "chai": "^4.2.0", "compass-preferences-model": "^2.66.3", @@ -63054,6 +63174,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -63406,12 +63527,12 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/eslint-config-compass": "^1.4.12", "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/d3": "^3.5.x", "chai": "^4.1.2", "d3": "^3.5.17", @@ -63521,6 +63642,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@mongosh/browser-repl": "^3.26.0", "@mongosh/logging": "^3.15.3", "@mongosh/node-runtime-worker-thread": "^3.3.28", @@ -63561,6 +63683,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -64090,6 +64213,7 @@ "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@mongodb-js/webpack-config-compass": "^1.10.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/express-http-proxy": "^1.6.6", @@ -64287,12 +64411,12 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", "@mongodb-js/eslint-config-compass": "^1.4.12", "@mongodb-js/mocha-config-compass": "^1.7.2", "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -64351,6 +64475,7 @@ "@mongodb-js/prettier-config-compass": "^1.2.9", "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", + "@mongodb-js/workspace-info": "^1.0.0", "@types/chai": "^4.2.21", "@types/chai-dom": "^0.0.10", "@types/mocha": "^9.0.0", @@ -66538,6 +66663,103 @@ } } }, + "@mongodb-js/workspace-info": { + "version": "file:packages/workspace-info", + "requires": { + "@mongodb-js/compass-app-registry": "^9.4.29", + "@mongodb-js/compass-components": "^1.59.2", + "@mongodb-js/compass-user-data": "^0.11.2", + "@mongodb-js/eslint-config-compass": "^1.4.12", + "@mongodb-js/mocha-config-compass": "^1.7.2", + "@mongodb-js/prettier-config-compass": "^1.2.9", + "@mongodb-js/tsconfig-compass": "^1.2.12", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/sinon-chai": "^3.2.5", + "depcheck": "^1.4.1", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "sinon": "^17.0.1", + "typescript": "^5.9.3" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1" + } + }, + "@sinonjs/samsam": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.3.tgz", + "integrity": "sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" + }, + "dependencies": { + "type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true + } + } + }, + "just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "path-to-regexp": { + "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": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", + "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.5", + "supports-color": "^7.2.0" + } + } + } + }, "@mongosh/arg-parser": { "version": "3.22.0", "resolved": "https://registry.npmjs.org/@mongosh/arg-parser/-/arg-parser-3.22.0.tgz", @@ -85390,6 +85612,7 @@ "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@mongodb-js/webpack-config-compass": "^1.10.12", + "@mongodb-js/workspace-info": "^1.0.0", "@mongosh/node-runtime-worker-thread": "^3.3.28", "@segment/analytics-node": "^1.1.4", "@types/minimatch": "^5.1.2", diff --git a/packages/compass-collection/package.json b/packages/compass-collection/package.json index 79004f8d485..dbcac3a2312 100644 --- a/packages/compass-collection/package.json +++ b/packages/compass-collection/package.json @@ -61,6 +61,7 @@ "@mongodb-js/compass-telemetry": "^1.19.5", "@mongodb-js/compass-utils": "^0.9.23", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/mongodb-constants": "^0.17.0", "bson": "^6.10.4", diff --git a/packages/compass-collection/src/components/collection-tab-provider.tsx b/packages/compass-collection/src/components/collection-tab-provider.tsx index e82934e4ce1..db924050ab4 100644 --- a/packages/compass-collection/src/components/collection-tab-provider.tsx +++ b/packages/compass-collection/src/components/collection-tab-provider.tsx @@ -1,7 +1,7 @@ import React, { useContext } from 'react'; import type { CollectionTabPluginMetadata } from '../modules/collection-tab'; import type { CompassPluginComponent } from '@mongodb-js/compass-app-registry'; -import type { CollectionSubtab } from '@mongodb-js/compass-workspaces'; +import type { CollectionSubtab } from '@mongodb-js/workspace-info'; import { useInitialValue } from '@mongodb-js/compass-components'; export interface CollectionTabPlugin { diff --git a/packages/compass-collection/src/components/collection-tab.tsx b/packages/compass-collection/src/components/collection-tab.tsx index 11e61c70f6a..61436a66fdf 100644 --- a/packages/compass-collection/src/components/collection-tab.tsx +++ b/packages/compass-collection/src/components/collection-tab.tsx @@ -12,7 +12,7 @@ import { } from './collection-tab-provider'; import type { CollectionTabOptions } from '../stores/collection-tab'; import type { CollectionMetadata } from 'mongodb-collection-model'; -import type { CollectionSubtab } from '@mongodb-js/compass-workspaces'; +import type { CollectionSubtab } from '@mongodb-js/workspace-info'; import { useTelemetry } from '@mongodb-js/compass-telemetry/provider'; import { useConnectionInfoRef, diff --git a/packages/compass-collection/src/index.ts b/packages/compass-collection/src/index.ts index 05a1680409b..4f6a7183842 100644 --- a/packages/compass-collection/src/index.ts +++ b/packages/compass-collection/src/index.ts @@ -9,7 +9,7 @@ import { connectionInfoRefLocator, } from '@mongodb-js/compass-connections/provider'; import { collectionModelLocator } from '@mongodb-js/compass-app-stores/provider'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { workspacesServiceLocator } from '@mongodb-js/compass-workspaces/provider'; import { experimentationServiceLocator } from '@mongodb-js/compass-telemetry/provider'; import { createLoggerLocator } from '@mongodb-js/compass-logging/provider'; diff --git a/packages/compass-collection/src/modules/collection-tab.ts b/packages/compass-collection/src/modules/collection-tab.ts index b9553eebb22..b882da4d8b2 100644 --- a/packages/compass-collection/src/modules/collection-tab.ts +++ b/packages/compass-collection/src/modules/collection-tab.ts @@ -11,7 +11,7 @@ import type { ConnectionInfoRef, DataService, } from '@mongodb-js/compass-connections/provider'; -import type { CollectionSubtab } from '@mongodb-js/compass-workspaces'; +import type { CollectionSubtab } from '@mongodb-js/workspace-info'; import type { AtlasAiService } from '@mongodb-js/compass-generative-ai/provider'; import type { experimentationServiceLocator } from '@mongodb-js/compass-telemetry/provider'; import { type Logger, mongoLogId } from '@mongodb-js/compass-logging/provider'; diff --git a/packages/compass-collection/src/plugin-tab-title.tsx b/packages/compass-collection/src/plugin-tab-title.tsx index a625a2862b3..4ca351eec42 100644 --- a/packages/compass-collection/src/plugin-tab-title.tsx +++ b/packages/compass-collection/src/plugin-tab-title.tsx @@ -9,7 +9,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; import { type CollectionState } from './modules/collection-tab'; diff --git a/packages/compass-connections-navigation/package.json b/packages/compass-connections-navigation/package.json index 2473655cdc8..9275e5b49a4 100644 --- a/packages/compass-connections-navigation/package.json +++ b/packages/compass-connections-navigation/package.json @@ -51,7 +51,7 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-context-menu": "^0.3.1", - "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/connection-form": "^1.75.0", "@mongodb-js/connection-info": "^0.24.0", "compass-preferences-model": "^2.66.3", 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 94ff85ca53d..0951af836a2 100644 --- a/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx +++ b/packages/compass-connections-navigation/src/connections-navigation-tree.spec.tsx @@ -18,7 +18,7 @@ import type { } from 'compass-preferences-model'; import { createSandboxFromDefaultPreferences } from 'compass-preferences-model'; import { PreferencesProvider } from 'compass-preferences-model/provider'; -import { type WorkspaceTab } from '@mongodb-js/compass-workspaces'; +import { type WorkspaceTab } from '@mongodb-js/workspace-info'; import { ConnectionStatus } from '@mongodb-js/compass-connections/provider'; const connections: Connection[] = [ diff --git a/packages/compass-connections-navigation/src/connections-navigation-tree.tsx b/packages/compass-connections-navigation/src/connections-navigation-tree.tsx index 47affec403b..3c5aa4dc7f6 100644 --- a/packages/compass-connections-navigation/src/connections-navigation-tree.tsx +++ b/packages/compass-connections-navigation/src/connections-navigation-tree.tsx @@ -20,7 +20,7 @@ import { useId, } from '@mongodb-js/compass-components'; import { useConnectable } from '@mongodb-js/compass-connections/provider'; -import type { WorkspaceTab } from '@mongodb-js/compass-workspaces'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import { usePreferences } from 'compass-preferences-model/provider'; import type { NavigationItemActions } from './item-actions'; import { diff --git a/packages/compass-data-modeling/package.json b/packages/compass-data-modeling/package.json index 85d17072fbb..f4e314d81b4 100644 --- a/packages/compass-data-modeling/package.json +++ b/packages/compass-data-modeling/package.json @@ -65,6 +65,7 @@ "@mongodb-js/compass-user-data": "^0.11.2", "@mongodb-js/compass-utils": "^0.9.23", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "html-to-image": "1.11.11", diff --git a/packages/compass-data-modeling/src/index.ts b/packages/compass-data-modeling/src/index.ts index a1361e7b8dc..1bf57e82a64 100644 --- a/packages/compass-data-modeling/src/index.ts +++ b/packages/compass-data-modeling/src/index.ts @@ -4,7 +4,7 @@ import { preferencesLocator } from 'compass-preferences-model/provider'; import { connectionsLocator } from '@mongodb-js/compass-connections/provider'; import { telemetryLocator } from '@mongodb-js/compass-telemetry/provider'; import { createLoggerLocator } from '@mongodb-js/compass-logging/provider'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import DataModelingComponent from './components/data-modeling'; import { mongoDBInstancesManagerLocator } from '@mongodb-js/compass-app-stores/provider'; import { dataModelStorageServiceLocator } from './provider'; diff --git a/packages/compass-data-modeling/src/plugin-tab-title.tsx b/packages/compass-data-modeling/src/plugin-tab-title.tsx index 40aac13afbf..c695a9395b6 100644 --- a/packages/compass-data-modeling/src/plugin-tab-title.tsx +++ b/packages/compass-data-modeling/src/plugin-tab-title.tsx @@ -6,7 +6,7 @@ import { type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; import type { DataModelingState } from './store/reducer'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; export const WorkspaceName = 'Data Modeling' as const; diff --git a/packages/compass-saved-aggregations-queries/package.json b/packages/compass-saved-aggregations-queries/package.json index 41ccd109c52..41669a57708 100644 --- a/packages/compass-saved-aggregations-queries/package.json +++ b/packages/compass-saved-aggregations-queries/package.json @@ -55,6 +55,7 @@ "@mongodb-js/compass-logging": "^1.7.25", "@mongodb-js/compass-telemetry": "^1.19.5", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/connection-form": "^1.75.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/my-queries-storage": "^0.50.2", diff --git a/packages/compass-saved-aggregations-queries/src/index.ts b/packages/compass-saved-aggregations-queries/src/index.ts index 1d497c130bb..f1db582f9ac 100644 --- a/packages/compass-saved-aggregations-queries/src/index.ts +++ b/packages/compass-saved-aggregations-queries/src/index.ts @@ -5,7 +5,7 @@ import { createLoggerLocator } from '@mongodb-js/compass-logging/provider'; import { telemetryLocator } from '@mongodb-js/compass-telemetry/provider'; import { activatePlugin } from './stores'; import AggregationsQueriesList from './components/aggregations-queries-list'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { workspacesServiceLocator } from '@mongodb-js/compass-workspaces/provider'; import { pipelineStorageLocator, diff --git a/packages/compass-saved-aggregations-queries/src/plugin-tab-title.tsx b/packages/compass-saved-aggregations-queries/src/plugin-tab-title.tsx index 53114bee352..9f748fbc9d1 100644 --- a/packages/compass-saved-aggregations-queries/src/plugin-tab-title.tsx +++ b/packages/compass-saved-aggregations-queries/src/plugin-tab-title.tsx @@ -3,7 +3,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; export const WorkspaceName = 'My Queries' as const; diff --git a/packages/compass-serverstats/package.json b/packages/compass-serverstats/package.json index 4e0551041ed..70acba8dabc 100644 --- a/packages/compass-serverstats/package.json +++ b/packages/compass-serverstats/package.json @@ -34,7 +34,7 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "d3": "^3.5.17", "d3-timer": "^1.0.3", "debug": "^4.3.4", diff --git a/packages/compass-serverstats/src/index.ts b/packages/compass-serverstats/src/index.ts index 7dd017a94c4..42098f25ceb 100644 --- a/packages/compass-serverstats/src/index.ts +++ b/packages/compass-serverstats/src/index.ts @@ -10,7 +10,7 @@ import { mongoDBInstanceLocator } from '@mongodb-js/compass-app-stores/provider' import CurrentOpStore from './stores/current-op-store'; import ServerStatsStore from './stores/server-stats-graphs-store'; import TopStore from './stores/top-store'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { WorkspaceName, ServerStatsPluginTitleComponent, diff --git a/packages/compass-serverstats/src/plugin-tab-title.tsx b/packages/compass-serverstats/src/plugin-tab-title.tsx index a47c7c0a7cd..7ad668d0789 100644 --- a/packages/compass-serverstats/src/plugin-tab-title.tsx +++ b/packages/compass-serverstats/src/plugin-tab-title.tsx @@ -7,7 +7,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; export const WorkspaceName = 'Performance' as const; diff --git a/packages/compass-shell/package.json b/packages/compass-shell/package.json index d1a34d5f9fe..401ed9afc6b 100644 --- a/packages/compass-shell/package.json +++ b/packages/compass-shell/package.json @@ -58,6 +58,7 @@ "@mongodb-js/compass-user-data": "^0.11.2", "@mongodb-js/compass-utils": "^0.9.23", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongosh/browser-repl": "^3.26.0", "@mongosh/logging": "^3.15.3", "@mongosh/node-runtime-worker-thread": "^3.3.28", diff --git a/packages/compass-shell/src/index.ts b/packages/compass-shell/src/index.ts index a51b82ba65c..3ebd45364e8 100644 --- a/packages/compass-shell/src/index.ts +++ b/packages/compass-shell/src/index.ts @@ -4,7 +4,7 @@ import { telemetryLocator } from '@mongodb-js/compass-telemetry/provider'; import { ShellPlugin, onActivated } from './plugin'; import { registerCompassPlugin } from '@mongodb-js/compass-app-registry'; import { preferencesLocator } from 'compass-preferences-model/provider'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { dataServiceLocator, type DataService, diff --git a/packages/compass-shell/src/plugin-tab-title.tsx b/packages/compass-shell/src/plugin-tab-title.tsx index 46833fe80ee..65145e3a3be 100644 --- a/packages/compass-shell/src/plugin-tab-title.tsx +++ b/packages/compass-shell/src/plugin-tab-title.tsx @@ -7,7 +7,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; export const WorkspaceName = 'Shell' as const; diff --git a/packages/compass-sidebar/package.json b/packages/compass-sidebar/package.json index 806b9383912..d24eb90f9f3 100644 --- a/packages/compass-sidebar/package.json +++ b/packages/compass-sidebar/package.json @@ -59,6 +59,7 @@ "@mongodb-js/compass-maybe-protect-connection-string": "^0.64.3", "@mongodb-js/compass-telemetry": "^1.19.5", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/mongodb-constants": "^0.17.0", "compass-preferences-model": "^2.66.3", diff --git a/packages/compass-sidebar/src/components/multiple-connections/connections-navigation.tsx b/packages/compass-sidebar/src/components/multiple-connections/connections-navigation.tsx index c193a92ce01..7bd7efb56ac 100644 --- a/packages/compass-sidebar/src/components/multiple-connections/connections-navigation.tsx +++ b/packages/compass-sidebar/src/components/multiple-connections/connections-navigation.tsx @@ -30,7 +30,7 @@ import type { SidebarConnection, SidebarItem, } from '@mongodb-js/compass-connections-navigation'; -import type { WorkspaceTab } from '@mongodb-js/compass-workspaces'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import { getConnectionTitle, type ConnectionInfo, 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 28c18db2211..89d06369fb2 100644 --- a/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx +++ b/packages/compass-sidebar/src/components/multiple-connections/sidebar.spec.tsx @@ -10,7 +10,7 @@ import { userEvent, } from '@mongodb-js/testing-library-compass'; import MultipleConnectionSidebar from './sidebar'; -import type { WorkspaceTab } from '@mongodb-js/compass-workspaces'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import { WorkspacesProvider } from '@mongodb-js/compass-workspaces'; import type { WorkspacesService } from '@mongodb-js/compass-workspaces/provider'; import { WorkspacesServiceProvider } from '@mongodb-js/compass-workspaces/provider'; diff --git a/packages/compass-sidebar/src/components/multiple-connections/sidebar.tsx b/packages/compass-sidebar/src/components/multiple-connections/sidebar.tsx index 1af3783fee2..bfdcfee14fd 100644 --- a/packages/compass-sidebar/src/components/multiple-connections/sidebar.tsx +++ b/packages/compass-sidebar/src/components/multiple-connections/sidebar.tsx @@ -18,7 +18,7 @@ import { type RootState, type SidebarThunkAction } from '../../modules'; import { Navigation } from './navigation/navigation'; import ConnectionInfoModal from '../connection-info-modal'; import { useMaybeProtectConnectionString } from '@mongodb-js/compass-maybe-protect-connection-string'; -import type { WorkspaceTab } from '@mongodb-js/compass-workspaces'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import ConnectionsNavigation from './connections-navigation'; import CSFLEConnectionModal, { type CSFLEConnectionModalProps, diff --git a/packages/compass-web/package.json b/packages/compass-web/package.json index c48c1cd9938..f365d50809c 100644 --- a/packages/compass-web/package.json +++ b/packages/compass-web/package.json @@ -97,6 +97,7 @@ "@mongodb-js/compass-user-data": "^0.11.2", "@mongodb-js/compass-welcome": "^0.87.0", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/connection-info": "^0.24.0", "@mongodb-js/connection-storage": "^0.63.0", "@mongodb-js/devtools-proxy-support": "^0.5.5", diff --git a/packages/compass-web/sandbox/sandbox-workspace-tab-router.tsx b/packages/compass-web/sandbox/sandbox-workspace-tab-router.tsx index ceb267d6efc..5f78272c4bd 100644 --- a/packages/compass-web/sandbox/sandbox-workspace-tab-router.tsx +++ b/packages/compass-web/sandbox/sandbox-workspace-tab-router.tsx @@ -1,8 +1,6 @@ import { useCallback, useState } from 'react'; -import type { - OpenWorkspaceOptions, - WorkspaceTab, -} from '@mongodb-js/compass-workspaces'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; +import type { OpenWorkspaceOptions } from '@mongodb-js/compass-workspaces'; import { getRouteFromWorkspaceTab, getWorkspaceTabFromRoute } from '../src'; export function useWorkspaceTabRouter() { diff --git a/packages/compass-web/src/entrypoint.tsx b/packages/compass-web/src/entrypoint.tsx index 599319b205c..101e89e61f2 100644 --- a/packages/compass-web/src/entrypoint.tsx +++ b/packages/compass-web/src/entrypoint.tsx @@ -8,10 +8,10 @@ import { useConnectionActions } from '@mongodb-js/compass-connections/provider'; import { CompassInstanceStorePlugin } from '@mongodb-js/compass-app-stores'; import type { CollectionTabInfo, - OpenWorkspaceOptions, WorkspaceTab, -} from '@mongodb-js/compass-workspaces'; +} from '@mongodb-js/workspace-info'; import WorkspacesPlugin, { + type OpenWorkspaceOptions, WorkspacesProvider, WorkspacesStorageServiceProviderWeb, } from '@mongodb-js/compass-workspaces'; diff --git a/packages/compass-web/src/index.tsx b/packages/compass-web/src/index.tsx index c250fd97dd5..223e35471cd 100644 --- a/packages/compass-web/src/index.tsx +++ b/packages/compass-web/src/index.tsx @@ -1,16 +1,14 @@ export { CompassWeb } from './entrypoint'; export type { CompassWebProps, TrackFunction } from './entrypoint'; export * from './url-builder'; -export type { - OpenWorkspaceOptions, - WorkspaceTab, -} from '@mongodb-js/compass-workspaces'; +export type { WorkspaceTab } from '@mongodb-js/workspace-info'; +export type { OpenWorkspaceOptions } from '@mongodb-js/compass-workspaces'; export { CompassExperimentationProvider, ExperimentTestName, ExperimentTestGroup, } from '@mongodb-js/compass-telemetry'; -export type { CollectionTabInfo } from '@mongodb-js/compass-workspaces'; +export type { CollectionTabInfo } from '@mongodb-js/workspace-info'; export type { AllPreferences, AtlasCloudFeatureFlags, diff --git a/packages/compass-web/src/url-builder.ts b/packages/compass-web/src/url-builder.ts index a6d7307a297..53dc6c3fc2a 100644 --- a/packages/compass-web/src/url-builder.ts +++ b/packages/compass-web/src/url-builder.ts @@ -1,8 +1,8 @@ import type { CollectionSubtab, - OpenWorkspaceOptions, WorkspaceTab, -} from '@mongodb-js/compass-workspaces'; +} from '@mongodb-js/workspace-info'; +import type { OpenWorkspaceOptions } from '@mongodb-js/compass-workspaces'; import toNS from 'mongodb-ns'; /** diff --git a/packages/compass-welcome/package.json b/packages/compass-welcome/package.json index 6a270f57851..0071b4ddbe3 100644 --- a/packages/compass-welcome/package.json +++ b/packages/compass-welcome/package.json @@ -52,7 +52,7 @@ "@mongodb-js/compass-components": "^1.59.2", "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-telemetry": "^1.19.5", - "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "compass-preferences-model": "^2.66.3", "@mongodb-js/compass-app-registry": "^9.4.29", "react": "^17.0.2", diff --git a/packages/compass-welcome/src/index.ts b/packages/compass-welcome/src/index.ts index bfd9a33cd76..eef53e055c0 100644 --- a/packages/compass-welcome/src/index.ts +++ b/packages/compass-welcome/src/index.ts @@ -1,6 +1,6 @@ import React from 'react'; import { registerCompassPlugin } from '@mongodb-js/compass-app-registry'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { WelcomeModal as WelcomeModalComponent, DesktopWelcomeTab, diff --git a/packages/compass-welcome/src/plugin-tab-title.tsx b/packages/compass-welcome/src/plugin-tab-title.tsx index ce564c7159b..5573f66de5f 100644 --- a/packages/compass-welcome/src/plugin-tab-title.tsx +++ b/packages/compass-welcome/src/plugin-tab-title.tsx @@ -3,7 +3,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; export const WorkspaceName = 'Welcome' as const; diff --git a/packages/compass-workspaces/package.json b/packages/compass-workspaces/package.json index e6b5dcbb286..c8371a7ce69 100644 --- a/packages/compass-workspaces/package.json +++ b/packages/compass-workspaces/package.json @@ -57,6 +57,7 @@ "@mongodb-js/compass-connections": "^1.89.0", "@mongodb-js/compass-logging": "^1.7.25", "@mongodb-js/compass-user-data": "^0.11.2", + "@mongodb-js/workspace-info": "^1.0.0", "bson": "^6.10.4", "compass-preferences-model": "^2.66.3", "lodash": "^4.17.21", diff --git a/packages/compass-workspaces/src/components/index.tsx b/packages/compass-workspaces/src/components/index.tsx index 97214082351..76adf448eaf 100644 --- a/packages/compass-workspaces/src/components/index.tsx +++ b/packages/compass-workspaces/src/components/index.tsx @@ -6,13 +6,16 @@ import { useCurrentValueRef, useDarkMode, } from '@mongodb-js/compass-components'; -import type { CollectionTabInfo } from '../stores/workspaces'; import { getActiveTab, - type OpenWorkspaceOptions, type WorkspacesState, + type OpenWorkspaceOptions, } from '../stores/workspaces'; -import type { WorkspaceTab } from '../types'; +import type { + WorkspaceTab, + CollectionTabInfo, +} from '@mongodb-js/workspace-info'; + import Workspaces from './workspaces'; import { connect } from '../stores/context'; import { WorkspacesServiceProvider } from '../provider'; diff --git a/packages/compass-workspaces/src/components/workspace-close-handler.tsx b/packages/compass-workspaces/src/components/workspace-close-handler.tsx index 81174429614..edc9816bc5a 100644 --- a/packages/compass-workspaces/src/components/workspace-close-handler.tsx +++ b/packages/compass-workspaces/src/components/workspace-close-handler.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import type { WorkspaceTab } from '../types'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import { useWorkspaceTabId } from './workspace-tab-state-provider'; import { useCurrentValueRef } from '@mongodb-js/compass-components'; diff --git a/packages/compass-workspaces/src/components/workspace-tab-context-provider.tsx b/packages/compass-workspaces/src/components/workspace-tab-context-provider.tsx index a416e46c680..44ade9e5de3 100644 --- a/packages/compass-workspaces/src/components/workspace-tab-context-provider.tsx +++ b/packages/compass-workspaces/src/components/workspace-tab-context-provider.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useRef } from 'react'; import { getLocalAppRegistryForTab } from '../stores/workspaces'; -import type { WorkspaceTab } from '../types'; +import type { WorkspaceTab } from '@mongodb-js/workspace-info'; import { NamespaceProvider } from '@mongodb-js/compass-app-stores/provider'; import { ConnectionInfoProvider, diff --git a/packages/compass-workspaces/src/components/workspaces-provider.tsx b/packages/compass-workspaces/src/components/workspaces-provider.tsx index 35e19ed6b91..9cf98873f1c 100644 --- a/packages/compass-workspaces/src/components/workspaces-provider.tsx +++ b/packages/compass-workspaces/src/components/workspaces-provider.tsx @@ -1,6 +1,5 @@ import React, { useContext } from 'react'; -import type { AnyWorkspace } from '../'; -import type { WorkspacePlugin } from '../types'; +import type { WorkspacePlugin, AnyWorkspace } from '@mongodb-js/workspace-info'; import { useInitialValue } from '@mongodb-js/compass-components'; export type AnyWorkspacePlugin = diff --git a/packages/compass-workspaces/src/components/workspaces.tsx b/packages/compass-workspaces/src/components/workspaces.tsx index 0dcdd35b9cc..efa4dd7c4cc 100644 --- a/packages/compass-workspaces/src/components/workspaces.tsx +++ b/packages/compass-workspaces/src/components/workspaces.tsx @@ -9,12 +9,7 @@ import { useDarkMode, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { - CollectionTabInfo, - DatabaseTabInfo, - OpenWorkspaceOptions, - WorkspacesState, -} from '../stores/workspaces'; +import type { WorkspacesState } from '../stores/workspaces'; import { closeTab, closeAllOtherTabs, @@ -26,13 +21,18 @@ import { selectNextTab, selectPrevTab, selectTab, + type OpenWorkspaceOptions, } from '../stores/workspaces'; import { useWorkspacePlugins } from './workspaces-provider'; import toNS from 'mongodb-ns'; import { useLogger } from '@mongodb-js/compass-logging/provider'; import { connect } from '../stores/context'; import { WorkspaceTabContextProvider } from './workspace-tab-context-provider'; -import type { WorkspaceTab } from '../types'; +import type { + WorkspaceTab, + CollectionTabInfo, + DatabaseTabInfo, +} from '@mongodb-js/workspace-info'; const emptyWorkspaceStyles = css({ margin: '0 auto', diff --git a/packages/compass-workspaces/src/index.ts b/packages/compass-workspaces/src/index.ts index 311c6cb5d9b..ffdf09b7773 100644 --- a/packages/compass-workspaces/src/index.ts +++ b/packages/compass-workspaces/src/index.ts @@ -1,10 +1,7 @@ import type AppRegistry from '@mongodb-js/compass-app-registry'; import type { ActivateHelpers } from '@mongodb-js/compass-app-registry'; import { registerCompassPlugin } from '@mongodb-js/compass-app-registry'; -import type { - OpenWorkspaceOptions, - CollectionTabInfo, -} from './stores/workspaces'; +import type { OpenWorkspaceOptions } from './stores/workspaces'; import workspacesReducer, { collectionRemoved, collectionRenamed, @@ -40,7 +37,7 @@ import { import type { PreferencesAccess } from 'compass-preferences-model/provider'; import { preferencesLocator } from 'compass-preferences-model/provider'; import { workspacesStorageServiceLocator } from './services/workspaces-storage'; -import { type WorkspacesStateSchema } from './types'; +import type { WorkspacesStateSchema } from '@mongodb-js/workspace-info'; import { type IUserData } from '@mongodb-js/compass-user-data'; export type WorkspacesServices = { @@ -205,26 +202,10 @@ const WorkspacesPlugin = registerCompassPlugin( } ); -export { WorkspacesStateSchema } from './types'; export default WorkspacesPlugin; export { WorkspacesProvider } from './components/workspaces-provider'; -export type { OpenWorkspaceOptions, CollectionTabInfo }; -export type { - WelcomeWorkspace, - MyQueriesWorkspace, - DataModelingWorkspace, - ServerStatsWorkspace, - ShellWorkspace, - DatabasesWorkspace, - CollectionsWorkspace, - CollectionWorkspace, - AnyWorkspace, - Workspace, - WorkspacePlugin, - WorkspaceTab, - CollectionSubtab, - WorkspacePluginProps, -} from './types'; export { WorkspacesStorageServiceProviderDesktop } from './services/workspaces-storage-desktop'; export { WorkspacesStorageServiceProviderWeb } from './services/workspaces-storage-web'; + +export type { OpenWorkspaceOptions } from './stores/workspaces'; diff --git a/packages/compass-workspaces/src/provider.tsx b/packages/compass-workspaces/src/provider.tsx index aa311c736c1..41dfe47a7fe 100644 --- a/packages/compass-workspaces/src/provider.tsx +++ b/packages/compass-workspaces/src/provider.tsx @@ -1,13 +1,17 @@ import React, { useContext, useRef } from 'react'; import { useSelector, useStore } from './stores/context'; -import type { OpenWorkspaceOptions, TabOptions } from './stores/workspaces'; +import type { TabOptions } from './stores/workspaces'; import { collectionSubtabSelected, getActiveTab, openWorkspace as openWorkspaceAction, } from './stores/workspaces'; import { createServiceLocator } from '@mongodb-js/compass-app-registry'; -import type { CollectionSubtab, WorkspaceTab } from './types'; +import type { + CollectionSubtab, + WorkspaceTab, +} from '@mongodb-js/workspace-info'; +import type { OpenWorkspaceOptions } from './stores/workspaces'; import type { WorkspaceDestroyHandler } from './components/workspace-close-handler'; import { useRegisterTabDestroyHandler } from './components/workspace-close-handler'; diff --git a/packages/compass-workspaces/src/services/workspaces-storage-desktop.tsx b/packages/compass-workspaces/src/services/workspaces-storage-desktop.tsx index ae79db169e7..6a5e00eb736 100644 --- a/packages/compass-workspaces/src/services/workspaces-storage-desktop.tsx +++ b/packages/compass-workspaces/src/services/workspaces-storage-desktop.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { FileUserData, type IUserData } from '@mongodb-js/compass-user-data'; import { WorkspacesStorageServiceContext } from './workspaces-storage'; -import { WorkspacesStateSchema } from '../types'; +import { WorkspacesStateSchema } from '@mongodb-js/workspace-info'; import { EJSON } from 'bson'; import { useInitialValue } from '@mongodb-js/compass-components'; diff --git a/packages/compass-workspaces/src/services/workspaces-storage-web.tsx b/packages/compass-workspaces/src/services/workspaces-storage-web.tsx index 069b2bddc41..eb022127a3e 100644 --- a/packages/compass-workspaces/src/services/workspaces-storage-web.tsx +++ b/packages/compass-workspaces/src/services/workspaces-storage-web.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { AtlasUserData, type IUserData } from '@mongodb-js/compass-user-data'; import { WorkspacesStorageServiceContext } from './workspaces-storage'; -import { WorkspacesStateSchema } from '../types'; +import { WorkspacesStateSchema } from '@mongodb-js/workspace-info'; import { EJSON } from 'bson'; import { useInitialValue } from '@mongodb-js/compass-components'; diff --git a/packages/compass-workspaces/src/services/workspaces-storage.tsx b/packages/compass-workspaces/src/services/workspaces-storage.tsx index 181cd46cd65..62458d74c95 100644 --- a/packages/compass-workspaces/src/services/workspaces-storage.tsx +++ b/packages/compass-workspaces/src/services/workspaces-storage.tsx @@ -5,7 +5,7 @@ import { type ReadAllResult, } from '@mongodb-js/compass-user-data'; import React, { useContext } from 'react'; -import { WorkspacesStateSchema } from '../types'; +import { WorkspacesStateSchema } from '@mongodb-js/workspace-info'; const throwIfNotTestEnv = () => { if (process.env.NODE_ENV !== 'test') { diff --git a/packages/compass-workspaces/src/stores/workspaces-middleware.ts b/packages/compass-workspaces/src/stores/workspaces-middleware.ts index 2c335156c8c..a3b8a098b4c 100644 --- a/packages/compass-workspaces/src/stores/workspaces-middleware.ts +++ b/packages/compass-workspaces/src/stores/workspaces-middleware.ts @@ -1,6 +1,6 @@ import type { Middleware, AnyAction } from 'redux'; import type { WorkspacesState } from './workspaces'; -import type { WorkspacesStateData } from '../types'; +import type { WorkspacesStateData } from '@mongodb-js/workspace-info'; import type { WorkspacesServices } from '..'; import { mongoLogId } from '@mongodb-js/compass-logging/provider'; diff --git a/packages/compass-workspaces/src/stores/workspaces.spec.ts b/packages/compass-workspaces/src/stores/workspaces.spec.ts index a3dcce9d23b..ad2abe61a7b 100644 --- a/packages/compass-workspaces/src/stores/workspaces.spec.ts +++ b/packages/compass-workspaces/src/stores/workspaces.spec.ts @@ -1,12 +1,11 @@ import { expect } from 'chai'; -import type { Workspace } from '../index'; import WorkspacesPlugin from '../index'; import type { activateWorkspacePlugin } from '../index'; import * as workspacesSlice from './workspaces'; import { _bulkTabsClose } from './workspaces'; import { TestMongoDBInstanceManager } from '@mongodb-js/compass-app-stores/provider'; import type { ConnectionInfo } from '../../../connection-info/dist'; -import type { WorkspaceTab } from '../types'; +import type { Workspace, WorkspaceTab } from '@mongodb-js/workspace-info'; import { setTabDestroyHandler } from '../components/workspace-close-handler'; import { createPluginTestHelpers } from '@mongodb-js/testing-library-compass'; diff --git a/packages/compass-workspaces/src/stores/workspaces.ts b/packages/compass-workspaces/src/stores/workspaces.ts index d0c521d53a3..ddac6be8ea1 100644 --- a/packages/compass-workspaces/src/stores/workspaces.ts +++ b/packages/compass-workspaces/src/stores/workspaces.ts @@ -3,8 +3,15 @@ import type { ThunkAction } from 'redux-thunk'; import { ObjectId } from 'bson'; import AppRegistry from '@mongodb-js/compass-app-registry'; import toNS from 'mongodb-ns'; -import type { Workspace, WorkspacesServices, CollectionSubtab } from '..'; -import type { WorkspaceTab, WorkspaceTabProps } from '../types'; +import type { WorkspacesServices } from '..'; +import type { + WorkspaceTab, + WorkspaceTabProps, + CollectionSubtab, + CollectionTabInfo, + DatabaseTabInfo, + Workspace, +} from '@mongodb-js/workspace-info'; import { isEqual } from 'lodash'; import { cleanupTabState } from '../components/workspace-tab-state-provider'; import { @@ -74,17 +81,6 @@ function isAction( return action.type === type; } -export type CollectionTabInfo = { - isTimeSeries: boolean; - isReadonly: boolean; - sourceName?: string | null; - inferredFromPrivileges: boolean; -}; - -export type DatabaseTabInfo = { - inferredFromPrivileges: boolean; -}; - export type WorkspacesState = { /** * All currently open tabs @@ -641,29 +637,6 @@ export const getActiveTab = (state: WorkspacesState): WorkspaceTab | null => { return state.tabs[getActiveTabIndex(state)] ?? null; }; -export type OpenWorkspaceOptions = - | Pick, 'type'> - | Pick, 'type'> - | Pick, 'type'> - | Pick< - Workspace<'Shell'>, - 'type' | 'connectionId' | 'initialEvaluate' | 'initialInput' - > - | Pick, 'type' | 'connectionId'> - | Pick, 'type' | 'connectionId'> - | Pick, 'type' | 'connectionId' | 'namespace'> - | (Pick, 'type' | 'connectionId' | 'namespace'> & - Partial< - Pick< - Workspace<'Collection'>, - | 'initialQuery' - | 'initialAggregation' - | 'initialPipeline' - | 'initialPipelineText' - | 'editViewName' - > - > & { initialSubtab?: CollectionSubtab }); - type OpenWorkspaceAction = { type: typeof WorkspacesActions.OpenWorkspace; workspace: OpenWorkspaceOptions; @@ -693,6 +666,29 @@ export type TabOptions = { newTab?: boolean; }; +export type OpenWorkspaceOptions = + | Pick, 'type'> + | Pick, 'type'> + | Pick, 'type'> + | Pick< + Workspace<'Shell'>, + 'type' | 'connectionId' | 'initialEvaluate' | 'initialInput' + > + | Pick, 'type' | 'connectionId'> + | Pick, 'type' | 'connectionId'> + | Pick, 'type' | 'connectionId' | 'namespace'> + | (Pick, 'type' | 'connectionId' | 'namespace'> & + Partial< + Pick< + Workspace<'Collection'>, + | 'initialQuery' + | 'initialAggregation' + | 'initialPipeline' + | 'initialPipelineText' + | 'editViewName' + > + > & { initialSubtab?: CollectionSubtab }); + export const updateCollectionInfo = ( namespaceId: string, info: CollectionTabInfo diff --git a/packages/compass/package.json b/packages/compass/package.json index f05527ca14f..71a9899e731 100644 --- a/packages/compass/package.json +++ b/packages/compass/package.json @@ -243,6 +243,7 @@ "@mongodb-js/testing-library-compass": "^1.4.0", "@mongodb-js/tsconfig-compass": "^1.2.12", "@mongodb-js/webpack-config-compass": "^1.10.12", + "@mongodb-js/workspace-info": "^1.0.0", "@segment/analytics-node": "^1.1.4", "@types/minimatch": "^5.1.2", "bson": "^6.10.4", diff --git a/packages/compass/src/app/components/workspace.tsx b/packages/compass/src/app/components/workspace.tsx index fd534d73401..ce9f2a01cf7 100644 --- a/packages/compass/src/app/components/workspace.tsx +++ b/packages/compass/src/app/components/workspace.tsx @@ -7,7 +7,7 @@ import { import type { WorkspaceTab, CollectionTabInfo, -} from '@mongodb-js/compass-workspaces'; +} from '@mongodb-js/workspace-info'; import WorkspacesPlugin, { WorkspacesProvider, diff --git a/packages/databases-collections/package.json b/packages/databases-collections/package.json index 05ca97aee23..8ce8fdf7812 100644 --- a/packages/databases-collections/package.json +++ b/packages/databases-collections/package.json @@ -66,6 +66,7 @@ "@mongodb-js/compass-logging": "^1.7.25", "@mongodb-js/compass-telemetry": "^1.19.5", "@mongodb-js/compass-workspaces": "^0.70.0", + "@mongodb-js/workspace-info": "^1.0.0", "@mongodb-js/databases-collections-list": "^1.86.0", "@mongodb-js/my-queries-storage": "^0.50.2", "compass-preferences-model": "^2.66.3", diff --git a/packages/databases-collections/src/collections-plugin-title.tsx b/packages/databases-collections/src/collections-plugin-title.tsx index 2ba599e91b3..5cafae33afc 100644 --- a/packages/databases-collections/src/collections-plugin-title.tsx +++ b/packages/databases-collections/src/collections-plugin-title.tsx @@ -7,7 +7,7 @@ import { WorkspaceTab, type WorkspaceTabCoreProps, } from '@mongodb-js/compass-components'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; import { CollectionsWorkspaceName } from './collections-plugin'; diff --git a/packages/databases-collections/src/databases-plugin-title.tsx b/packages/databases-collections/src/databases-plugin-title.tsx index 9c0c7ec5baf..b4b49c8c37c 100644 --- a/packages/databases-collections/src/databases-plugin-title.tsx +++ b/packages/databases-collections/src/databases-plugin-title.tsx @@ -7,7 +7,7 @@ import { useConnectionInfo, useConnectionsListRef, } from '@mongodb-js/compass-connections/provider'; -import type { WorkspacePluginProps } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePluginProps } from '@mongodb-js/workspace-info'; import { DatabasesWorkspaceName } from './databases-plugin'; diff --git a/packages/databases-collections/src/index.ts b/packages/databases-collections/src/index.ts index 6503cdb41e7..1c8d178029e 100644 --- a/packages/databases-collections/src/index.ts +++ b/packages/databases-collections/src/index.ts @@ -16,7 +16,7 @@ import { activatePlugin as activateCreateNamespacePlugin } from './stores/create import { DatabasesPlugin, DatabasesWorkspaceName } from './databases-plugin'; import MappedRenameCollectionModal from './components/rename-collection-modal/rename-collection-modal'; import { activateRenameCollectionPlugin } from './stores/rename-collection'; -import type { WorkspacePlugin } from '@mongodb-js/compass-workspaces'; +import type { WorkspacePlugin } from '@mongodb-js/workspace-info'; import { workspacesServiceLocator } from '@mongodb-js/compass-workspaces/provider'; import { favoriteQueryStorageAccessLocator, diff --git a/packages/workspace-info/.depcheckrc b/packages/workspace-info/.depcheckrc new file mode 100644 index 00000000000..ab0ef21b740 --- /dev/null +++ b/packages/workspace-info/.depcheckrc @@ -0,0 +1,8 @@ +ignores: + - '@mongodb-js/prettier-config-compass' + - '@mongodb-js/tsconfig-compass' + - '@types/chai' + - '@types/sinon-chai' + - 'sinon' +ignore-patterns: + - 'dist' diff --git a/packages/workspace-info/.eslintignore b/packages/workspace-info/.eslintignore new file mode 100644 index 00000000000..85a8a75e68c --- /dev/null +++ b/packages/workspace-info/.eslintignore @@ -0,0 +1,2 @@ +.nyc-output +dist diff --git a/packages/workspace-info/.eslintrc.js b/packages/workspace-info/.eslintrc.js new file mode 100644 index 00000000000..a812ac46f5d --- /dev/null +++ b/packages/workspace-info/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + root: true, + extends: ['@mongodb-js/eslint-config-compass'], + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig.json'], + }, +}; diff --git a/packages/workspace-info/.mocharc.js b/packages/workspace-info/.mocharc.js new file mode 100644 index 00000000000..7e473d17b76 --- /dev/null +++ b/packages/workspace-info/.mocharc.js @@ -0,0 +1 @@ +module.exports = require('@mongodb-js/mocha-config-compass'); diff --git a/packages/workspace-info/package.json b/packages/workspace-info/package.json new file mode 100644 index 00000000000..4535bf7f4a6 --- /dev/null +++ b/packages/workspace-info/package.json @@ -0,0 +1,68 @@ +{ + "name": "@mongodb-js/workspace-info", + "description": "Types and utilities for workspaces", + "author": { + "name": "MongoDB Inc", + "email": "compass@mongodb.com" + }, + "private": true, + "bugs": { + "url": "https://jira.mongodb.org/projects/COMPASS/issues", + "email": "compass@mongodb.com" + }, + "homepage": "https://github.com/mongodb-js/compass", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "https://github.com/mongodb-js/compass.git" + }, + "files": [ + "dist" + ], + "license": "SSPL", + "main": "dist/index.js", + "compass:main": "src/index.ts", + "exports": { + "import": "./dist/.esm-wrapper.mjs", + "require": "./dist/index.js" + }, + "compass:exports": { + ".": "./src/index.ts" + }, + "types": "./dist/index.d.ts", + "scripts": { + "bootstrap": "npm run compile", + "compile": "tsc -p tsconfig-build.json", + "typecheck": "tsc -p tsconfig.json --noEmit", + "eslint": "eslint-compass", + "prettier": "prettier-compass", + "lint": "npm run eslint . && npm run prettier -- --check .", + "depcheck": "compass-scripts check-peer-deps && depcheck", + "check": "npm run typecheck && npm run lint && npm run depcheck", + "check-ci": "npm run check", + "test": "mocha", + "test-cov": "nyc --compact=false --produce-source-map=false -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test", + "test-watch": "npm run test -- --watch", + "test-ci": "npm run test-cov", + "reformat": "npm run eslint . -- --fix && npm run prettier -- --write ." + }, + "dependencies": { + "@mongodb-js/compass-app-registry": "^9.4.29", + "@mongodb-js/compass-components": "^1.59.2", + "@mongodb-js/compass-user-data": "^0.11.2" + }, + "devDependencies": { + "@mongodb-js/eslint-config-compass": "^1.4.12", + "@mongodb-js/mocha-config-compass": "^1.7.2", + "@mongodb-js/prettier-config-compass": "^1.2.9", + "@mongodb-js/tsconfig-compass": "^1.2.12", + "@types/chai": "^4.2.21", + "@types/mocha": "^9.0.0", + "@types/sinon-chai": "^3.2.5", + "depcheck": "^1.4.1", + "mocha": "^10.2.0", + "nyc": "^15.1.0", + "sinon": "^17.0.1", + "typescript": "^5.9.3" + } +} diff --git a/packages/workspace-info/src/index.spec.tsx b/packages/workspace-info/src/index.spec.tsx new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/workspace-info/src/index.ts b/packages/workspace-info/src/index.ts new file mode 100644 index 00000000000..9d94ca75d0d --- /dev/null +++ b/packages/workspace-info/src/index.ts @@ -0,0 +1,2 @@ +export type * from './workspace-info'; +export { WorkspaceTabSchema, WorkspacesStateSchema } from './workspace-info'; diff --git a/packages/compass-workspaces/src/types.ts b/packages/workspace-info/src/workspace-info.ts similarity index 95% rename from packages/compass-workspaces/src/types.ts rename to packages/workspace-info/src/workspace-info.ts index 1285d4425d9..81449e73d61 100644 --- a/packages/compass-workspaces/src/types.ts +++ b/packages/workspace-info/src/workspace-info.ts @@ -146,3 +146,14 @@ export type WorkspacePlugin = { content: (props: WorkspacePluginProps) => React.ReactElement | null; header: (props: PluginHeaderProps) => React.ReactElement | null; }; + +export type CollectionTabInfo = { + isTimeSeries: boolean; + isReadonly: boolean; + sourceName?: string | null; + inferredFromPrivileges: boolean; +}; + +export type DatabaseTabInfo = { + inferredFromPrivileges: boolean; +}; diff --git a/packages/workspace-info/tsconfig-build.json b/packages/workspace-info/tsconfig-build.json new file mode 100644 index 00000000000..737091e2e1c --- /dev/null +++ b/packages/workspace-info/tsconfig-build.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "include": ["src/**/*"], + "exclude": ["./src/**/*.spec.*"] +} diff --git a/packages/workspace-info/tsconfig.json b/packages/workspace-info/tsconfig.json new file mode 100644 index 00000000000..236d16200ee --- /dev/null +++ b/packages/workspace-info/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@mongodb-js/tsconfig-compass/tsconfig.common.json", + "compilerOptions": { + "outDir": "dist" + }, + "include": ["**/*"], + "exclude": ["node_modules", "dist"] +}