Skip to content

Commit 68f1973

Browse files
authored
chore(compass-crud): convert to new plugin interface COMPASS-7404 (#5166)
1 parent 6f122ee commit 68f1973

File tree

18 files changed

+834
-773
lines changed

18 files changed

+834
-773
lines changed

package-lock.json

Lines changed: 15 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/compass-aggregations/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"@dnd-kit/core": "^6.0.7",
6565
"@dnd-kit/sortable": "^7.0.2",
6666
"@dnd-kit/utilities": "^3.2.1",
67+
"@mongodb-js/compass-collection": "^4.19.1",
6768
"@mongodb-js/eslint-config-compass": "^1.0.11",
6869
"@mongodb-js/mocha-config-compass": "^1.3.2",
6970
"@mongodb-js/prettier-config-compass": "^1.0.1",

packages/compass-aggregations/src/index.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import { Aggregations } from './components/aggregations';
55
import { activateCreateViewPlugin } from './stores/create-view';
66
import StageEditor from './components/stage-editor';
77
import CreateViewModal from './components/create-view-modal';
8-
import { dataServiceLocator } from 'mongodb-data-service/provider';
8+
import {
9+
dataServiceLocator,
10+
type DataServiceLocator,
11+
} from 'mongodb-data-service/provider';
912
import { createLoggerAndTelemetryLocator } from '@mongodb-js/compass-logging/provider';
1013
import type {
1114
DataService,
@@ -32,7 +35,7 @@ export const CompassAggregationsHadronPlugin = registerHadronPlugin<
3235
activate: activateAggregationsPlugin,
3336
},
3437
{
35-
dataService: dataServiceLocator as typeof dataServiceLocator<
38+
dataService: dataServiceLocator as DataServiceLocator<
3639
RequiredDataServiceProps,
3740
OptionalDataServiceProps
3841
>,
@@ -51,7 +54,7 @@ export const CreateViewPlugin = registerHadronPlugin(
5154
activate: activateCreateViewPlugin,
5255
},
5356
{
54-
dataService: dataServiceLocator as typeof dataServiceLocator<'createView'>,
57+
dataService: dataServiceLocator as DataServiceLocator<'createView'>,
5558
logger: createLoggerAndTelemetryLocator('COMPASS-CREATE-VIEW-UI'),
5659
}
5760
);

packages/compass-crud/package.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,22 @@
5656
"reformat": "npm run eslint . -- --fix && npm run prettier -- --write ."
5757
},
5858
"peerDependencies": {
59+
"@mongodb-js/compass-app-stores": "^7.6.1",
5960
"@mongodb-js/compass-components": "^1.19.0",
6061
"@mongodb-js/compass-editor": "^0.18.0",
6162
"@mongodb-js/compass-logging": "^1.2.6",
6263
"@mongodb-js/my-queries-storage": "^0.2.1",
6364
"@mongodb-js/explain-plan-helper": "^1.1.4",
6465
"bson": "^6.2.0",
6566
"compass-preferences-model": "^2.15.6",
67+
"hadron-app-registry": "^9.0.14",
6668
"hadron-document": "^8.4.3",
6769
"hadron-type-checker": "^7.1.0",
70+
"mongodb-data-service": "^22.15.1",
6871
"react": "^17.0.2"
6972
},
7073
"devDependencies": {
74+
"@mongodb-js/compass-collection": "^4.19.1",
7175
"@mongodb-js/compass-test-server": "^0.1.6",
7276
"@mongodb-js/eslint-config-compass": "^1.0.11",
7377
"@mongodb-js/mocha-config-compass": "^1.3.2",
@@ -88,10 +92,8 @@
8892
"enzyme": "^3.11.0",
8993
"eslint": "^7.25.0",
9094
"hadron-app": "^5.15.1",
91-
"hadron-app-registry": "^9.0.14",
9295
"lodash": "^4.17.21",
9396
"mocha": "^10.2.0",
94-
"mongodb-data-service": "^22.15.1",
9597
"mongodb-instance-model": "^12.15.1",
9698
"mongodb-query-parser": "^4.0.0",
9799
"mongodb-ns": "^2.4.0",
@@ -105,14 +107,17 @@
105107
"sinon": "^8.1.1"
106108
},
107109
"dependencies": {
110+
"@mongodb-js/compass-app-stores": "^7.6.1",
108111
"@mongodb-js/compass-components": "^1.19.0",
109112
"@mongodb-js/compass-editor": "^0.18.0",
110113
"@mongodb-js/compass-logging": "^1.2.6",
111114
"@mongodb-js/explain-plan-helper": "^1.1.4",
112115
"@mongodb-js/my-queries-storage": "^0.2.1",
113116
"bson": "^6.2.0",
114117
"compass-preferences-model": "^2.15.6",
118+
"hadron-app-registry": "^9.0.14",
115119
"hadron-document": "^8.4.3",
116-
"hadron-type-checker": "^7.1.0"
120+
"hadron-type-checker": "^7.1.0",
121+
"mongodb-data-service": "^22.15.1"
117122
}
118123
}

packages/compass-crud/src/components/crud-toolbar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ export type CrudToolbarProps = {
9898
isExportable: boolean;
9999
isWritable: boolean;
100100
loadingCount: boolean;
101-
localAppRegistry: AppRegistry;
101+
localAppRegistry: Pick<AppRegistry, 'getRole' | 'getStore'>;
102102
onApplyClicked: () => void;
103103
onResetClicked: () => void;
104104
onUpdateButtonClicked: () => void;

packages/compass-crud/src/index.ts

Lines changed: 39 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,58 @@
1-
import type AppRegistry from 'hadron-app-registry';
2-
31
import type { DocumentProps } from './components/document';
42
import Document from './components/document';
53
import type { DocumentListProps } from './components/document-list';
64
import DocumentList from './components/document-list';
75
import InsertDocumentDialog from './components/insert-document-dialog';
86
import { ConnectedDocumentList } from './components/connected-document-list';
9-
import configureActions from './actions';
10-
import configureStore from './stores/crud-store';
7+
import { activateDocumentsPlugin } from './stores/crud-store';
8+
import {
9+
dataServiceLocator,
10+
type DataServiceLocator,
11+
} from 'mongodb-data-service/provider';
12+
import type {
13+
DataService,
14+
OptionalDataServiceProps,
15+
RequiredDataServiceProps,
16+
} from './utils/data-service';
17+
import type { CollectionTabPluginMetadata } from '@mongodb-js/compass-collection';
18+
import type { MongoDBInstance } from '@mongodb-js/compass-app-stores/provider';
19+
import { mongoDBInstanceLocator } from '@mongodb-js/compass-app-stores/provider';
20+
import { registerHadronPlugin } from 'hadron-app-registry';
1121

12-
const COLLECTION_TAB_ROLE = {
13-
component: ConnectedDocumentList,
14-
name: 'Documents',
15-
hasQueryHistory: true,
16-
order: 1,
17-
configureStore: configureStore,
18-
storeName: 'CRUD.Store',
19-
configureActions: configureActions,
20-
actionName: 'CRUD.Actions',
22+
const activate = () => {
23+
// noop
2124
};
2225

23-
const DOCUMENT_ROLE = {
24-
component: Document,
25-
name: 'STANDARD',
26-
order: 1,
26+
const deactivate = () => {
27+
// noop
2728
};
2829

29-
/**
30-
* Activate all the components in the CRUD package.
31-
*
32-
* @param {AppRegistry} appRegistry - The app registry.
33-
*/
34-
const activate = (appRegistry: AppRegistry): void => {
35-
appRegistry.registerRole('Collection.Tab', COLLECTION_TAB_ROLE);
36-
appRegistry.registerRole('CRUD.Document', DOCUMENT_ROLE);
37-
};
30+
export const CompassDocumentsHadronPlugin = registerHadronPlugin<
31+
CollectionTabPluginMetadata,
32+
{ dataService: () => DataService; instance: () => MongoDBInstance }
33+
>(
34+
{
35+
name: 'CompassDocuments',
36+
component: ConnectedDocumentList as any, // as any because of reflux store
37+
activate: activateDocumentsPlugin,
38+
},
39+
{
40+
dataService: dataServiceLocator as DataServiceLocator<
41+
RequiredDataServiceProps,
42+
OptionalDataServiceProps
43+
>,
44+
instance: mongoDBInstanceLocator,
45+
}
46+
);
3847

39-
/**
40-
* Deactivate all the components in the CRUD package.
41-
*
42-
* @param {AppRegistry} appRegistry - The app registry.
43-
*/
44-
const deactivate = (appRegistry: AppRegistry): void => {
45-
appRegistry.deregisterRole('Collection.Tab', COLLECTION_TAB_ROLE);
46-
appRegistry.deregisterRole('CRUD.Document', DOCUMENT_ROLE);
48+
export const CompassDocumentsPlugin = {
49+
name: 'Documents',
50+
component: CompassDocumentsHadronPlugin,
4751
};
4852

4953
export default DocumentList;
5054
export type { DocumentListProps, DocumentProps };
51-
export {
52-
activate,
53-
deactivate,
54-
DocumentList,
55-
Document,
56-
InsertDocumentDialog,
57-
configureStore,
58-
configureActions,
59-
};
55+
export { activate, deactivate, DocumentList, Document, InsertDocumentDialog };
6056
export type { DocumentListViewProps } from './components/document-list-view';
6157
export { default as DocumentListView } from './components/document-list-view';
6258
export type { DocumentJsonViewProps } from './components/document-json-view';

0 commit comments

Comments
 (0)