Skip to content

Commit 5f31974

Browse files
chore(atlas-service): split atlas service and create a service provider COMPASS-7412 (#5464)
* chore: minimise the atlas service interface * wip: moving generative ai client out of atlas service * stuck on cors * move service to renderer * atlas provider * compass web * cors header * preferences user * cors * separate the services * inject log and preferences in atlas-service * use hooks correctly * fix tests * split responsibility correctly * clean up * depcheck * changes * feedback and resolve log ids * fix log id * fix tests * refactor * fix unit tests * fix tests * undo skip * test * fix test-electron * fix home tests * separate concerns * fix e2e tests * correct check * remove env var * clean csp * use logger hook * remove unwanted dep * add urls to csp --------- Co-authored-by: Himanshu Singh <[email protected]>
1 parent 4aa48a6 commit 5f31974

File tree

67 files changed

+2187
-1688
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+2187
-1688
lines changed

Diff for: package-lock.json

+25-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: packages/atlas-service/package.json

+8-7
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,19 @@
2323
"main.js",
2424
"main.d.ts",
2525
"renderer.js",
26-
"renderer.d.ts"
26+
"renderer.d.ts",
27+
"provider.js"
2728
],
2829
"license": "SSPL",
2930
"exports": {
3031
"./main": "./main.js",
31-
"./renderer": "./renderer.js"
32+
"./renderer": "./renderer.js",
33+
"./provider": "./dist/provider.js"
3234
},
3335
"compass:exports": {
3436
"./main": "./src/main.ts",
35-
"./renderer": "./src/renderer.ts"
37+
"./renderer": "./src/renderer.ts",
38+
"./provider": "./src/provider.ts"
3639
},
3740
"scripts": {
3841
"bootstrap": "npm run compile",
@@ -57,31 +60,29 @@
5760
"@mongodb-js/prettier-config-compass": "^1.0.1",
5861
"@mongodb-js/tsconfig-compass": "^1.0.3",
5962
"@testing-library/react": "^12.1.4",
60-
"@testing-library/user-event": "^13.5.0",
6163
"@types/chai": "^4.2.21",
6264
"@types/mocha": "^9.0.0",
6365
"@types/sinon-chai": "^3.2.5",
6466
"chai": "^4.3.6",
6567
"depcheck": "^1.4.1",
6668
"eslint": "^7.25.0",
6769
"mocha": "^10.2.0",
68-
"mongodb": "^6.3.0",
69-
"mongodb-schema": "^12.1.0",
7070
"nyc": "^15.1.0",
7171
"prettier": "^2.7.1",
7272
"sinon": "^9.2.3",
7373
"typescript": "^5.0.4"
7474
},
7575
"dependencies": {
76-
"@mongodb-js/compass-user-data": "^0.1.15",
7776
"@mongodb-js/compass-components": "^1.21.3",
7877
"@mongodb-js/compass-logging": "^1.2.12",
78+
"@mongodb-js/compass-user-data": "^0.1.15",
7979
"@mongodb-js/compass-utils": "^0.5.11",
8080
"@mongodb-js/devtools-connect": "^2.4.2",
8181
"@mongodb-js/oidc-plugin": "^0.3.1",
8282
"compass-preferences-model": "^2.17.4",
8383
"electron": "^28.2.1",
8484
"hadron-ipc": "^3.2.10",
85+
"lodash": "^4.17.21",
8586
"node-fetch": "^2.7.0",
8687
"react": "^17.0.2",
8788
"react-redux": "^8.1.3",

Diff for: packages/atlas-service/provider.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './dist/provider.d';

Diff for: packages/atlas-service/src/atlas-auth-service.ts

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { EventEmitter } from 'events';
2+
import type { AtlasUserConfig } from './user-config-store';
3+
import type { AtlasUserInfo } from './util';
4+
5+
export type ArgsWithSignal<T = Record<string, unknown>> = T & {
6+
signal?: AbortSignal;
7+
};
8+
export type SignInPrompt = 'none' | 'ai-promo-modal';
9+
10+
type AtlasAuthServiceEvents = {
11+
'signed-in': [];
12+
'signed-out': [];
13+
'token-refresh-failed': [];
14+
'user-config-changed': [AtlasUserConfig];
15+
};
16+
17+
type AtlasAuthEventNames = keyof AtlasAuthServiceEvents;
18+
type AtlasAuthEventListener<T extends AtlasAuthEventNames> = (
19+
...args: AtlasAuthServiceEvents[T]
20+
) => void;
21+
22+
export abstract class AtlasAuthService extends EventEmitter {
23+
abstract signIn(
24+
opts?: ArgsWithSignal<{ promptType?: SignInPrompt }>
25+
): Promise<AtlasUserInfo>;
26+
abstract signOut(): Promise<void>;
27+
abstract isAuthenticated(opts?: ArgsWithSignal): Promise<boolean>;
28+
abstract getAuthHeaders(
29+
opts?: ArgsWithSignal
30+
): Promise<Record<string, string>>;
31+
32+
abstract getUserInfo(opts?: ArgsWithSignal): Promise<AtlasUserInfo>;
33+
abstract updateUserConfig(config: AtlasUserConfig): Promise<void>;
34+
35+
on<T extends AtlasAuthEventNames>(
36+
evt: T,
37+
listener: AtlasAuthEventListener<T>
38+
): this;
39+
on(evt: string, listener: (...args: any[]) => void): this {
40+
return super.on(evt, listener);
41+
}
42+
43+
once<T extends AtlasAuthEventNames>(
44+
evt: T,
45+
listener: AtlasAuthEventListener<T>
46+
): this;
47+
once(evt: string, listener: (...args: any[]) => void): this {
48+
return super.once(evt, listener);
49+
}
50+
51+
off<T extends AtlasAuthEventNames>(
52+
evt: T,
53+
listener: AtlasAuthEventListener<T>
54+
): this;
55+
off(evt: string, listener: (...args: any[]) => void): this {
56+
return super.off(evt, listener);
57+
}
58+
59+
removeListener<T extends AtlasAuthEventNames>(
60+
evt: T,
61+
listener: AtlasAuthEventListener<T>
62+
): this;
63+
removeListener(evt: string, listener: (...args: any[]) => void): this {
64+
return super.removeListener(evt, listener);
65+
}
66+
67+
emit<T extends AtlasAuthEventNames>(
68+
evt: T,
69+
...args: AtlasAuthServiceEvents[T]
70+
): boolean;
71+
emit(evt: string, ...args: any[]): boolean {
72+
return super.emit(evt, ...args);
73+
}
74+
}

0 commit comments

Comments
 (0)