@neuralinnovations/dataisland-sdk 0.0.1-dev3 → 0.0.1-dev31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +294 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/package.json +103 -0
- package/dist/src/appBuilder.d.ts +44 -0
- package/dist/src/appBuilder.d.ts.map +1 -0
- package/dist/src/appBuilder.js +10 -0
- package/dist/src/appBuilder.js.map +1 -0
- package/dist/src/commands/deleteUserFullCommandHandler.d.ts +7 -0
- package/dist/src/commands/deleteUserFullCommandHandler.d.ts.map +1 -0
- package/dist/src/commands/deleteUserFullCommandHandler.js +21 -0
- package/dist/src/commands/deleteUserFullCommandHandler.js.map +1 -0
- package/dist/src/commands/startCommandHandler.d.ts +7 -0
- package/dist/src/commands/startCommandHandler.d.ts.map +1 -0
- package/dist/src/commands/startCommandHandler.js +27 -0
- package/dist/src/commands/startCommandHandler.js.map +1 -0
- package/dist/src/context.d.ts +24 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +31 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/credentials.d.ts +33 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +87 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/dataIslandApp.d.ts +50 -0
- package/dist/src/dataIslandApp.d.ts.map +1 -0
- package/dist/src/dataIslandApp.js +10 -0
- package/dist/src/dataIslandApp.js.map +1 -0
- package/dist/src/disposable.d.ts +84 -0
- package/dist/src/disposable.d.ts.map +1 -0
- package/dist/src/disposable.js +147 -0
- package/dist/src/disposable.js.map +1 -0
- package/dist/src/dto/accessGroupResponse.d.ts +27 -0
- package/dist/src/dto/accessGroupResponse.d.ts.map +1 -0
- package/dist/src/dto/accessGroupResponse.js +3 -0
- package/dist/src/dto/accessGroupResponse.js.map +1 -0
- package/dist/src/dto/chatResponse.d.ts +81 -0
- package/dist/src/dto/chatResponse.d.ts.map +1 -0
- package/dist/src/dto/chatResponse.js +45 -0
- package/dist/src/dto/chatResponse.js.map +1 -0
- package/dist/src/dto/userInfoResponse.d.ts +43 -0
- package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
- package/dist/src/dto/userInfoResponse.js +3 -0
- package/dist/src/dto/userInfoResponse.js.map +1 -0
- package/dist/src/dto/workspacesResponse.d.ts +43 -0
- package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
- package/dist/src/dto/workspacesResponse.js +3 -0
- package/dist/src/dto/workspacesResponse.js.map +1 -0
- package/dist/src/events.d.ts +17 -0
- package/dist/src/events.d.ts.map +1 -0
- package/dist/src/events.js +52 -0
- package/dist/src/events.js.map +1 -0
- package/dist/src/index.d.ts +65 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +110 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal/app.impl.d.ts +28 -0
- package/dist/src/internal/app.impl.d.ts.map +1 -0
- package/dist/src/internal/app.impl.js +173 -0
- package/dist/src/internal/app.impl.js.map +1 -0
- package/dist/src/internal/appBuilder.impl.d.ts +27 -0
- package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
- package/dist/src/internal/appBuilder.impl.js +71 -0
- package/dist/src/internal/appBuilder.impl.js.map +1 -0
- package/dist/src/internal/createApp.impl.d.ts +4 -0
- package/dist/src/internal/createApp.impl.d.ts.map +1 -0
- package/dist/src/internal/createApp.impl.js +11 -0
- package/dist/src/internal/createApp.impl.js.map +1 -0
- package/dist/src/internal/registry.d.ts +66 -0
- package/dist/src/internal/registry.d.ts.map +1 -0
- package/dist/src/internal/registry.js +114 -0
- package/dist/src/internal/registry.js.map +1 -0
- package/dist/src/middleware.d.ts +6 -0
- package/dist/src/middleware.d.ts.map +1 -0
- package/dist/src/middleware.js +3 -0
- package/dist/src/middleware.js.map +1 -0
- package/dist/src/services/anonymousService.d.ts +8 -0
- package/dist/src/services/anonymousService.d.ts.map +1 -0
- package/dist/src/services/anonymousService.js +41 -0
- package/dist/src/services/anonymousService.js.map +1 -0
- package/dist/src/services/commandService.d.ts +18 -0
- package/dist/src/services/commandService.d.ts.map +1 -0
- package/dist/src/services/commandService.js +40 -0
- package/dist/src/services/commandService.js.map +1 -0
- package/dist/src/services/cookieService.d.ts +7 -0
- package/dist/src/services/cookieService.d.ts.map +1 -0
- package/dist/src/services/cookieService.js +18 -0
- package/dist/src/services/cookieService.js.map +1 -0
- package/dist/src/services/credentialService.d.ts +9 -0
- package/dist/src/services/credentialService.d.ts.map +1 -0
- package/dist/src/services/credentialService.js +26 -0
- package/dist/src/services/credentialService.js.map +1 -0
- package/dist/src/services/httpMethod.d.ts +2 -0
- package/dist/src/services/httpMethod.d.ts.map +1 -0
- package/dist/src/services/httpMethod.js +3 -0
- package/dist/src/services/httpMethod.js.map +1 -0
- package/dist/src/services/middlewareService.d.ts +10 -0
- package/dist/src/services/middlewareService.d.ts.map +1 -0
- package/dist/src/services/middlewareService.js +34 -0
- package/dist/src/services/middlewareService.js.map +1 -0
- package/dist/src/services/organizationService.d.ts +10 -0
- package/dist/src/services/organizationService.d.ts.map +1 -0
- package/dist/src/services/organizationService.js +19 -0
- package/dist/src/services/organizationService.js.map +1 -0
- package/dist/src/services/requestBuilder.d.ts +17 -0
- package/dist/src/services/requestBuilder.d.ts.map +1 -0
- package/dist/src/services/requestBuilder.js +105 -0
- package/dist/src/services/requestBuilder.js.map +1 -0
- package/dist/src/services/responseUtils.d.ts +7 -0
- package/dist/src/services/responseUtils.d.ts.map +1 -0
- package/dist/src/services/responseUtils.js +32 -0
- package/dist/src/services/responseUtils.js.map +1 -0
- package/dist/src/services/rpcService.d.ts +77 -0
- package/dist/src/services/rpcService.d.ts.map +1 -0
- package/dist/src/services/rpcService.js +125 -0
- package/dist/src/services/rpcService.js.map +1 -0
- package/dist/src/services/service.d.ts +21 -0
- package/dist/src/services/service.d.ts.map +1 -0
- package/dist/src/services/service.js +41 -0
- package/dist/src/services/service.js.map +1 -0
- package/dist/src/services/userProfileService.d.ts +9 -0
- package/dist/src/services/userProfileService.d.ts.map +1 -0
- package/dist/src/services/userProfileService.js +43 -0
- package/dist/src/services/userProfileService.js.map +1 -0
- package/dist/src/storages/chats/answer.d.ts +41 -0
- package/dist/src/storages/chats/answer.d.ts.map +1 -0
- package/dist/src/storages/chats/answer.impl.d.ts +29 -0
- package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/answer.impl.js +116 -0
- package/dist/src/storages/chats/answer.impl.js.map +1 -0
- package/dist/src/storages/chats/answer.js +15 -0
- package/dist/src/storages/chats/answer.js.map +1 -0
- package/dist/src/storages/chats/chat.d.ts +35 -0
- package/dist/src/storages/chats/chat.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.d.ts +23 -0
- package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.js +74 -0
- package/dist/src/storages/chats/chat.impl.js.map +1 -0
- package/dist/src/storages/chats/chat.js +12 -0
- package/dist/src/storages/chats/chat.js.map +1 -0
- package/dist/src/storages/chats/chats.d.ts +40 -0
- package/dist/src/storages/chats/chats.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.d.ts +18 -0
- package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.js +102 -0
- package/dist/src/storages/chats/chats.impl.js.map +1 -0
- package/dist/src/storages/chats/chats.js +16 -0
- package/dist/src/storages/chats/chats.js.map +1 -0
- package/dist/src/storages/files/file.d.ts +39 -0
- package/dist/src/storages/files/file.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.d.ts +23 -0
- package/dist/src/storages/files/file.impl.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.js +89 -0
- package/dist/src/storages/files/file.impl.js.map +1 -0
- package/dist/src/storages/files/file.js +17 -0
- package/dist/src/storages/files/file.js.map +1 -0
- package/dist/src/storages/files/files.d.ts +34 -0
- package/dist/src/storages/files/files.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.d.ts +22 -0
- package/dist/src/storages/files/files.impl.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.js +142 -0
- package/dist/src/storages/files/files.impl.js.map +1 -0
- package/dist/src/storages/files/files.js +20 -0
- package/dist/src/storages/files/files.js.map +1 -0
- package/dist/src/storages/files/filesPage.d.ts +28 -0
- package/dist/src/storages/files/filesPage.d.ts.map +1 -0
- package/dist/src/storages/files/filesPage.impl.d.ts +15 -0
- package/dist/src/storages/files/filesPage.impl.d.ts.map +1 -0
- package/dist/src/storages/files/filesPage.impl.js +38 -0
- package/dist/src/storages/files/filesPage.impl.js.map +1 -0
- package/dist/src/storages/files/filesPage.js +10 -0
- package/dist/src/storages/files/filesPage.js.map +1 -0
- package/dist/src/storages/groups/group.d.ts +63 -0
- package/dist/src/storages/groups/group.d.ts.map +1 -0
- package/dist/src/storages/groups/group.impl.d.ts +38 -0
- package/dist/src/storages/groups/group.impl.d.ts.map +1 -0
- package/dist/src/storages/groups/group.impl.js +210 -0
- package/dist/src/storages/groups/group.impl.js.map +1 -0
- package/dist/src/storages/groups/group.js +15 -0
- package/dist/src/storages/groups/group.js.map +1 -0
- package/dist/src/storages/groups/groups.d.ts +39 -0
- package/dist/src/storages/groups/groups.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.d.ts +30 -0
- package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.js +132 -0
- package/dist/src/storages/groups/groups.impl.js.map +1 -0
- package/dist/src/storages/groups/groups.js +20 -0
- package/dist/src/storages/groups/groups.js.map +1 -0
- package/dist/src/storages/organizations/organization.d.ts +55 -0
- package/dist/src/storages/organizations/organization.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.d.ts +32 -0
- package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.js +120 -0
- package/dist/src/storages/organizations/organization.impl.js.map +1 -0
- package/dist/src/storages/organizations/organization.js +18 -0
- package/dist/src/storages/organizations/organization.js.map +1 -0
- package/dist/src/storages/organizations/organizations.d.ts +46 -0
- package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts +38 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.js +157 -0
- package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
- package/dist/src/storages/organizations/organizations.js +20 -0
- package/dist/src/storages/organizations/organizations.js.map +1 -0
- package/dist/src/storages/user/userProfile.d.ts +36 -0
- package/dist/src/storages/user/userProfile.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.d.ts +14 -0
- package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.js +57 -0
- package/dist/src/storages/user/userProfile.impl.js.map +1 -0
- package/dist/src/storages/user/userProfile.js +12 -0
- package/dist/src/storages/user/userProfile.js.map +1 -0
- package/dist/src/storages/workspaces/workspace.d.ts +44 -0
- package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspace.impl.d.ts +23 -0
- package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspace.impl.js +98 -0
- package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
- package/dist/src/storages/workspaces/workspace.js +18 -0
- package/dist/src/storages/workspaces/workspace.js.map +1 -0
- package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
- package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
- package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
- package/dist/src/storages/workspaces/workspaces.impl.js +159 -0
- package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
- package/dist/src/storages/workspaces/workspaces.js +19 -0
- package/dist/src/storages/workspaces/workspaces.js.map +1 -0
- package/dist/src/unitTest.d.ts +12 -0
- package/dist/src/unitTest.d.ts.map +1 -0
- package/dist/src/unitTest.js +44 -0
- package/dist/src/unitTest.js.map +1 -0
- package/dist/src/utils/browserUtils.d.ts +4 -0
- package/dist/src/utils/browserUtils.d.ts.map +1 -0
- package/dist/src/utils/browserUtils.js +68 -0
- package/dist/src/utils/browserUtils.js.map +1 -0
- package/dist/src/utils/request.d.ts +6 -0
- package/dist/src/utils/request.d.ts.map +1 -0
- package/dist/src/utils/request.js +3 -0
- package/dist/src/utils/request.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +46 -5
- package/src/commands/deleteUserFullCommandHandler.ts +19 -0
- package/src/commands/startCommandHandler.ts +16 -5
- package/src/context.ts +4 -2
- package/src/credentials.ts +22 -0
- package/src/{appSdk.ts → dataIslandApp.ts} +3 -3
- package/src/disposable.ts +20 -8
- package/src/dto/accessGroupResponse.ts +15 -16
- package/src/dto/chatResponse.ts +57 -54
- package/src/dto/userInfoResponse.ts +5 -2
- package/src/dto/workspacesResponse.ts +3 -3
- package/src/events.ts +12 -12
- package/src/index.ts +45 -10
- package/src/internal/app.impl.ts +47 -17
- package/src/internal/createApp.impl.ts +4 -4
- package/src/internal/registry.ts +54 -6
- package/src/middleware.ts +2 -0
- package/src/services/anonymousService.ts +43 -0
- package/src/services/commandService.ts +4 -2
- package/src/services/cookieService.ts +16 -0
- package/src/services/httpMethod.ts +1 -0
- package/src/services/middlewareService.ts +2 -1
- package/src/services/organizationService.ts +2 -2
- package/src/services/requestBuilder.ts +42 -15
- package/src/services/responseUtils.ts +2 -0
- package/src/services/rpcService.ts +24 -6
- package/src/services/service.ts +7 -5
- package/src/services/userProfileService.ts +16 -2
- package/src/storages/chats/answer.impl.ts +160 -0
- package/src/storages/chats/answer.ts +53 -0
- package/src/storages/chats/chat.impl.ts +95 -0
- package/src/storages/chats/chat.ts +45 -0
- package/src/storages/chats/chats.impl.ts +144 -0
- package/src/storages/chats/chats.ts +47 -0
- package/src/storages/files/file.impl.ts +113 -0
- package/src/storages/files/file.ts +49 -0
- package/src/storages/{files.impl.ts → files/files.impl.ts} +63 -61
- package/src/storages/files/files.ts +39 -0
- package/src/storages/files/filesPage.impl.ts +37 -0
- package/src/storages/files/filesPage.ts +33 -0
- package/src/storages/groups/group.impl.ts +276 -0
- package/src/storages/groups/group.ts +73 -0
- package/src/storages/groups/groups.impl.ts +175 -0
- package/src/storages/groups/groups.ts +45 -0
- package/src/storages/organizations/organization.impl.ts +165 -0
- package/src/storages/organizations/organization.ts +67 -0
- package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +30 -13
- package/src/storages/{organizations.ts → organizations/organizations.ts} +1 -1
- package/src/storages/{userProfile.impl.ts → user/userProfile.impl.ts} +8 -1
- package/src/storages/{userProfile.ts → user/userProfile.ts} +6 -1
- package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +28 -8
- package/src/storages/{workspace.ts → workspaces/workspace.ts} +13 -2
- package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +18 -13
- package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
- package/src/unitTest.ts +14 -3
- package/src/utils/browserUtils.ts +72 -0
- package/src/utils/request.ts +6 -0
- package/.browserslistrc +0 -5
- package/.editorconfig +0 -25
- package/.eslintrc.json +0 -44
- package/.github/workflows/publish-npm.yml +0 -28
- package/.prettierignore +0 -1
- package/.prettierrc +0 -11
- package/.yarnrc +0 -2
- package/babel.config.js +0 -6
- package/jest.config.ts +0 -199
- package/jest.setup.ts +0 -2
- package/src/storages/chat.ts +0 -37
- package/src/storages/file.impl.ts +0 -68
- package/src/storages/files.ts +0 -67
- package/src/storages/groups.impl.ts +0 -337
- package/src/storages/groups.ts +0 -43
- package/src/storages/organization.impl.ts +0 -68
- package/src/storages/organization.ts +0 -33
- package/test/commands.test.ts +0 -24
- package/test/disposable.test.ts +0 -39
- package/test/events.test.ts +0 -151
- package/test/index.test.ts +0 -225
- package/test/registry.test.ts +0 -44
- package/test/services.test.ts +0 -56
- package/test/setup.ts +0 -2
- package/test/unitTest.test.ts +0 -21
- package/test_file.pdf +0 -0
- package/tsconfig.json +0 -31
package/src/events.ts
CHANGED
@@ -1,25 +1,25 @@
|
|
1
1
|
import { type Disposable, DisposableContainer } from "./disposable"
|
2
2
|
|
3
|
-
export interface Input<
|
4
|
-
type?:
|
5
|
-
data:
|
3
|
+
export interface Input<EventType, DataType> {
|
4
|
+
type?: EventType
|
5
|
+
data: DataType
|
6
6
|
}
|
7
7
|
|
8
|
-
export interface Event<
|
8
|
+
export interface Event<EventType, DataType> extends Input<EventType, DataType> {
|
9
9
|
unsubscribe: () => void
|
10
10
|
}
|
11
11
|
|
12
|
-
export interface EventSubscriber<
|
13
|
-
subscribe: (callback: (event: Event<
|
12
|
+
export interface EventSubscriber<EventType, DataType> {
|
13
|
+
subscribe: (callback: (event: Event<EventType, DataType>) => void, type?: EventType) => Disposable
|
14
14
|
}
|
15
15
|
|
16
|
-
export class EventDispatcher<
|
16
|
+
export class EventDispatcher<EventType, DataType> implements EventSubscriber<EventType, DataType> {
|
17
17
|
private _listeners: Array<{
|
18
|
-
callback: (value: Event<
|
18
|
+
callback: (value: Event<EventType, DataType>) => void
|
19
19
|
disposable: Disposable
|
20
20
|
}> = []
|
21
21
|
|
22
|
-
dispatch(input: Input<
|
22
|
+
dispatch(input: Input<EventType, DataType>): void {
|
23
23
|
this._listeners.slice().forEach(it => {
|
24
24
|
const value = {
|
25
25
|
type: input.type,
|
@@ -27,16 +27,16 @@ export class EventDispatcher<ET, DT> implements EventSubscriber<ET, DT> {
|
|
27
27
|
unsubscribe: () => {
|
28
28
|
it.disposable.dispose()
|
29
29
|
}
|
30
|
-
} satisfies Event<
|
30
|
+
} satisfies Event<EventType, DataType>
|
31
31
|
it.callback(value)
|
32
32
|
})
|
33
33
|
}
|
34
34
|
|
35
|
-
subscribe(callback: (event: Event<
|
35
|
+
subscribe(callback: (event: Event<EventType, DataType>) => void, type?: EventType): Disposable {
|
36
36
|
const container = new DisposableContainer()
|
37
37
|
if (type !== undefined) {
|
38
38
|
const cb = callback
|
39
|
-
const listener = (evt: Event<
|
39
|
+
const listener = (evt: Event<EventType, DataType>): void => {
|
40
40
|
if (evt.type === type) {
|
41
41
|
cb(evt)
|
42
42
|
}
|
package/src/index.ts
CHANGED
@@ -1,15 +1,47 @@
|
|
1
1
|
import { version } from "../package.json"
|
2
2
|
import { _createApp } from "./internal/createApp.impl"
|
3
3
|
import { type AppBuilder } from "./appBuilder"
|
4
|
-
import { type
|
4
|
+
import { type DataIslandApp } from "./dataIslandApp"
|
5
5
|
|
6
6
|
export * from "./events"
|
7
7
|
export * from "./disposable"
|
8
8
|
export * from "./credentials"
|
9
|
-
export * from "./
|
9
|
+
export * from "./dataIslandApp"
|
10
|
+
export * from "./appBuilder"
|
11
|
+
export * from "./context"
|
12
|
+
export * from "./middleware"
|
13
|
+
export * from "./dto/chatResponse"
|
14
|
+
export * from "./dto/accessGroupResponse"
|
15
|
+
export * from "./dto/userInfoResponse"
|
16
|
+
export * from "./dto/workspacesResponse"
|
17
|
+
export * from "./storages/organizations/organizations"
|
18
|
+
export * from "./storages/organizations/organization"
|
19
|
+
export * from "./storages/workspaces/workspaces"
|
20
|
+
export * from "./storages/workspaces/workspace"
|
21
|
+
export * from "./storages/groups/groups"
|
22
|
+
export * from "./storages/user/userProfile"
|
23
|
+
export * from "./storages/files/files"
|
24
|
+
export * from "./storages/files/file"
|
25
|
+
export * from "./storages/files/filesPage"
|
26
|
+
export * from "./storages/chats/chats"
|
27
|
+
export * from "./storages/chats/chat"
|
28
|
+
export * from "./storages/chats/answer"
|
10
29
|
|
11
|
-
|
12
|
-
|
30
|
+
export {
|
31
|
+
OrganizationId, Organizations, OrganizationsEvent
|
32
|
+
} from "./storages/organizations/organizations"
|
33
|
+
export {
|
34
|
+
WorkspaceId, Workspaces, WorkspacesEvent
|
35
|
+
} from "./storages/workspaces/workspaces"
|
36
|
+
export { FileId, File, FileStatus } from "./storages/files/file"
|
37
|
+
export { UploadFile, Files, FilesEvent } from "./storages/files/files"
|
38
|
+
export { Group, GroupEvent, GroupId } from "./storages/groups/group"
|
39
|
+
export { AnswerId, Answer, StepId, AnswerEvent } from "./storages/chats/answer"
|
40
|
+
|
41
|
+
// map of apps that are not ready to be used
|
42
|
+
const _appsNotReady = new Map<string, Promise<DataIslandApp>>()
|
43
|
+
// map of apps that are ready to be used
|
44
|
+
const _appsReady = new Map<string, DataIslandApp>()
|
13
45
|
|
14
46
|
/**
|
15
47
|
* Current SDK version.
|
@@ -26,7 +58,10 @@ export const DEFAULT_NAME = "[DEFAULT]"
|
|
26
58
|
*/
|
27
59
|
export const DEFAULT_HOST = "https://api.dataisland.com.ua"
|
28
60
|
|
29
|
-
|
61
|
+
/**
|
62
|
+
* Returns a list of DataIsland App instances.
|
63
|
+
*/
|
64
|
+
export function dataIslandInstances(): DataIslandApp[] {
|
30
65
|
return Array.from(_appsReady.values())
|
31
66
|
}
|
32
67
|
|
@@ -37,19 +72,19 @@ export function sdks(): AppSdk[] {
|
|
37
72
|
* @returns A DataIsland App instance.
|
38
73
|
* @example
|
39
74
|
* ```js
|
40
|
-
* import {
|
75
|
+
* import { dataIslandApp, DEFAULT_NAME } from '@neuralinnovations/dataisland-sdk'
|
41
76
|
*
|
42
|
-
* const app = await
|
77
|
+
* const app = await dataIslandApp(DEFAULT_NAME, builder => {
|
43
78
|
* builder.useHost("https://dataisland.com.ua")
|
44
79
|
* builder.useAutomaticDataCollectionEnabled(true)
|
45
80
|
* builder.useCredential(new BasicCredential("email", "password"))
|
46
81
|
* })
|
47
82
|
* ```
|
48
83
|
*/
|
49
|
-
export async function
|
84
|
+
export async function dataIslandApp(
|
50
85
|
name?: string,
|
51
86
|
setup?: (builder: AppBuilder) => Promise<void>
|
52
|
-
): Promise<
|
87
|
+
): Promise<DataIslandApp> {
|
53
88
|
name = name ?? DEFAULT_NAME
|
54
89
|
|
55
90
|
let appPromise = _appsNotReady.get(name)
|
@@ -67,7 +102,7 @@ export async function appSdk(
|
|
67
102
|
} else {
|
68
103
|
if (setup !== undefined) {
|
69
104
|
throw new Error(
|
70
|
-
`
|
105
|
+
`DataIsland ${name} is initializing. You can't setup the same again.`
|
71
106
|
)
|
72
107
|
}
|
73
108
|
}
|
package/src/internal/app.impl.ts
CHANGED
@@ -7,8 +7,12 @@ import { DisposableContainer, type Lifetime } from "../disposable"
|
|
7
7
|
import { type Service, ServiceContext } from "../services/service"
|
8
8
|
import { CredentialService } from "../services/credentialService"
|
9
9
|
import { MiddlewareService } from "../services/middlewareService"
|
10
|
-
import {
|
11
|
-
|
10
|
+
import {
|
11
|
+
DefaultCredential,
|
12
|
+
type CredentialBase,
|
13
|
+
AnonymousCredential
|
14
|
+
} from "../credentials"
|
15
|
+
import { DataIslandApp } from "../dataIslandApp"
|
12
16
|
import { RpcService } from "../services/rpcService"
|
13
17
|
import { CommandService } from "../services/commandService"
|
14
18
|
import {
|
@@ -17,11 +21,17 @@ import {
|
|
17
21
|
} from "../commands/startCommandHandler"
|
18
22
|
import { UserProfileService } from "../services/userProfileService"
|
19
23
|
import { OrganizationService } from "../services/organizationService"
|
20
|
-
import { Organizations } from "../storages/organizations"
|
21
|
-
import { UserProfile } from "../storages/userProfile"
|
24
|
+
import { Organizations } from "../storages/organizations/organizations"
|
25
|
+
import { UserProfile } from "../storages/user/userProfile"
|
22
26
|
import { isUnitTest, UnitTest } from "../unitTest"
|
27
|
+
import {
|
28
|
+
DeleteUserFullCommand,
|
29
|
+
DeleteUserFullCommandHandler
|
30
|
+
} from "../commands/deleteUserFullCommandHandler"
|
31
|
+
import { CookieService } from "../services/cookieService"
|
32
|
+
import { AnonymousService } from "../services/anonymousService"
|
23
33
|
|
24
|
-
export class
|
34
|
+
export class DataIslandAppImpl extends DataIslandApp {
|
25
35
|
readonly name: string
|
26
36
|
private _host: string = DEFAULT_HOST
|
27
37
|
private _automaticDataCollectionEnabled: boolean = true
|
@@ -34,7 +44,7 @@ export class AppImplementation extends AppSdk {
|
|
34
44
|
this.name = name
|
35
45
|
this._registry = new Registry()
|
36
46
|
this._disposable = new DisposableContainer()
|
37
|
-
this._context = new Context(this._registry, this._disposable.lifetime,
|
47
|
+
this._context = new Context(this._registry, this._disposable.lifetime, this)
|
38
48
|
|
39
49
|
this._registry.map(Context).asValue(this._context)
|
40
50
|
}
|
@@ -83,8 +93,14 @@ export class AppImplementation extends AppSdk {
|
|
83
93
|
builder.registerCommand(StartCommand, (context: Context) => {
|
84
94
|
return new StartCommandHandler(context)
|
85
95
|
})
|
96
|
+
builder.registerCommand(DeleteUserFullCommand, (context: Context) => {
|
97
|
+
return new DeleteUserFullCommandHandler(context)
|
98
|
+
})
|
86
99
|
|
87
100
|
// register services
|
101
|
+
builder.registerService(CookieService, (context: ServiceContext) => {
|
102
|
+
return new CookieService(context)
|
103
|
+
})
|
88
104
|
builder.registerService(CredentialService, (context: ServiceContext) => {
|
89
105
|
return new CredentialService(context)
|
90
106
|
})
|
@@ -103,12 +119,8 @@ export class AppImplementation extends AppSdk {
|
|
103
119
|
builder.registerService(OrganizationService, (context: ServiceContext) => {
|
104
120
|
return new OrganizationService(context)
|
105
121
|
})
|
106
|
-
|
107
|
-
|
108
|
-
builder.registerMiddleware(async (req, next) => {
|
109
|
-
req.headers.set("accept", "text/plain")
|
110
|
-
req.headers.set("content-type", "application/json")
|
111
|
-
return await next(req)
|
122
|
+
builder.registerService(AnonymousService, (context: ServiceContext) => {
|
123
|
+
return new AnonymousService(context)
|
112
124
|
})
|
113
125
|
|
114
126
|
// call customer setup
|
@@ -146,15 +158,15 @@ export class AppImplementation extends AppSdk {
|
|
146
158
|
this.resolve(CommandService)?.register(command[0], command[1])
|
147
159
|
})
|
148
160
|
|
149
|
-
this.credential = builder.credential
|
150
|
-
|
151
161
|
//-------------------------------------------------------------------------
|
152
162
|
// register services
|
153
163
|
//-------------------------------------------------------------------------
|
154
164
|
const waitList: Array<Promise<void>> = []
|
155
165
|
// call onRegister service's callback
|
156
166
|
services.forEach(([serviceContext]) => {
|
157
|
-
|
167
|
+
if (typeof serviceContext.onRegister === "function") {
|
168
|
+
waitList.push(serviceContext.onRegister())
|
169
|
+
}
|
158
170
|
})
|
159
171
|
|
160
172
|
// wait for all services to register
|
@@ -167,13 +179,31 @@ export class AppImplementation extends AppSdk {
|
|
167
179
|
waitList.length = 0
|
168
180
|
// call onStart service's callback
|
169
181
|
services.forEach(([serviceContext]) => {
|
170
|
-
|
182
|
+
if (typeof serviceContext.onStart === "function") {
|
183
|
+
waitList.push(serviceContext.onStart())
|
184
|
+
}
|
171
185
|
})
|
172
186
|
|
173
187
|
// wait for all services to start
|
174
188
|
await Promise.all(waitList)
|
175
189
|
//-------------------------------------------------------------------------
|
176
190
|
|
191
|
+
// set credential
|
192
|
+
this.credential = builder.credential
|
193
|
+
|
194
|
+
// Check anonymous authorization
|
195
|
+
if (!isUnitTest(UnitTest.DO_NOT_START) && builder.credential instanceof DefaultCredential) {
|
196
|
+
const anonymous = this.resolve(AnonymousService)!
|
197
|
+
const {
|
198
|
+
token,
|
199
|
+
isValid
|
200
|
+
} = await anonymous.getToken()
|
201
|
+
|
202
|
+
if (isValid) {
|
203
|
+
this.credential = new AnonymousCredential(token)
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
177
207
|
// start app, execute start command
|
178
208
|
if (!isUnitTest(UnitTest.DO_NOT_START)) {
|
179
209
|
await this.context.execute(new StartCommand())
|
@@ -181,7 +211,7 @@ export class AppImplementation extends AppSdk {
|
|
181
211
|
|
182
212
|
// log app initialized
|
183
213
|
if (!isUnitTest(UnitTest.DO_NOT_PRINT_INITIALIZED_LOG)) {
|
184
|
-
console.log(`
|
214
|
+
console.log(`DataIsland ${this.name} initialized`)
|
185
215
|
}
|
186
216
|
}
|
187
217
|
}
|
@@ -1,12 +1,12 @@
|
|
1
|
-
import {
|
1
|
+
import { DataIslandAppImpl } from "./app.impl"
|
2
2
|
import { type AppBuilder } from "../appBuilder"
|
3
|
-
import {
|
3
|
+
import { DataIslandApp } from "../dataIslandApp"
|
4
4
|
|
5
5
|
export async function _createApp(
|
6
6
|
name: string,
|
7
7
|
setup?: (builder: AppBuilder) => Promise<void>
|
8
|
-
): Promise<
|
9
|
-
const app = new
|
8
|
+
): Promise<DataIslandApp> {
|
9
|
+
const app = new DataIslandAppImpl(name)
|
10
10
|
await app.initialize(setup)
|
11
11
|
return app
|
12
12
|
}
|
package/src/internal/registry.ts
CHANGED
@@ -1,9 +1,21 @@
|
|
1
|
+
/**
|
2
|
+
* Constructor type.
|
3
|
+
*/
|
1
4
|
export type Constructor<T> = new (...args: any[]) => T
|
2
5
|
|
6
|
+
/**
|
7
|
+
* Provider interface.
|
8
|
+
*/
|
3
9
|
abstract class Provider {
|
10
|
+
/**
|
11
|
+
* Provide method.
|
12
|
+
*/
|
4
13
|
abstract provide(): any | undefined
|
5
14
|
}
|
6
15
|
|
16
|
+
/**
|
17
|
+
* MethodProvider class.
|
18
|
+
*/
|
7
19
|
class MethodProvider<T> extends Provider {
|
8
20
|
private instance?: T
|
9
21
|
private provided: boolean = false
|
@@ -25,6 +37,9 @@ class MethodProvider<T> extends Provider {
|
|
25
37
|
}
|
26
38
|
}
|
27
39
|
|
40
|
+
/**
|
41
|
+
* ValueProvider class.
|
42
|
+
*/
|
28
43
|
class ValueProvider<T> extends Provider {
|
29
44
|
constructor(private readonly value: T | undefined) {
|
30
45
|
super()
|
@@ -35,44 +50,77 @@ class ValueProvider<T> extends Provider {
|
|
35
50
|
}
|
36
51
|
}
|
37
52
|
|
53
|
+
/**
|
54
|
+
* RegistryItem class.
|
55
|
+
*/
|
38
56
|
export class RegistryItem<T> {
|
39
57
|
constructor(
|
40
58
|
private readonly registry: Map<Constructor<any>, Provider>,
|
41
59
|
private readonly type: Constructor<T>
|
42
|
-
) {
|
60
|
+
) {
|
61
|
+
}
|
43
62
|
|
63
|
+
/**
|
64
|
+
* As value method.
|
65
|
+
* @param value
|
66
|
+
*/
|
44
67
|
asValue(value: T): void {
|
45
68
|
this.registry.set(this.type, new ValueProvider<T>(value))
|
46
69
|
}
|
47
70
|
|
71
|
+
/**
|
72
|
+
* As provider method.
|
73
|
+
* @param provider
|
74
|
+
* @param oneTime
|
75
|
+
*/
|
48
76
|
asProvider<T>(provider: () => T, oneTime: boolean = false): void {
|
49
77
|
this.registry.set(this.type, new MethodProvider<T>(provider, oneTime))
|
50
78
|
}
|
51
79
|
|
80
|
+
/**
|
81
|
+
* As factory method.
|
82
|
+
* @param provider
|
83
|
+
*/
|
52
84
|
asFactory<T>(provider: () => T): void {
|
53
85
|
this.registry.set(this.type, new MethodProvider<T>(provider, false))
|
54
86
|
}
|
55
87
|
|
88
|
+
/**
|
89
|
+
* As singleton method.
|
90
|
+
* @param provider
|
91
|
+
*/
|
56
92
|
asSingleton<T>(provider: () => T): void {
|
57
93
|
this.registry.set(this.type, new MethodProvider<T>(provider, true))
|
58
94
|
}
|
59
95
|
}
|
60
96
|
|
97
|
+
/**
|
98
|
+
* Registry class.
|
99
|
+
*/
|
61
100
|
export class Registry {
|
62
|
-
private readonly services: Map<Constructor<any>, Provider>
|
63
|
-
|
64
|
-
constructor() {
|
65
|
-
this.services = new Map()
|
66
|
-
}
|
101
|
+
private readonly services: Map<Constructor<any>, Provider> = new Map()
|
67
102
|
|
103
|
+
/**
|
104
|
+
* Map method.
|
105
|
+
* @param type
|
106
|
+
*/
|
68
107
|
map<T>(type: Constructor<T>): RegistryItem<T> {
|
69
108
|
return new RegistryItem<T>(this.services, type)
|
70
109
|
}
|
71
110
|
|
111
|
+
/**
|
112
|
+
* Set method.
|
113
|
+
* @param type
|
114
|
+
* @param provider
|
115
|
+
*/
|
72
116
|
set<T>(type: Constructor<T>, provider: Provider): void {
|
73
117
|
this.services.set(type, provider)
|
74
118
|
}
|
75
119
|
|
120
|
+
/**
|
121
|
+
* Get method.
|
122
|
+
* @param type
|
123
|
+
*/
|
76
124
|
get<T>(type: Constructor<T>): T | undefined {
|
77
125
|
const provider = this.services.get(type)
|
78
126
|
if (provider === undefined) {
|
package/src/middleware.ts
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
import { Service } from "./service"
|
2
|
+
import { CookieService } from "./cookieService"
|
3
|
+
import { createFingerprint } from "../utils/browserUtils"
|
4
|
+
import { RpcService } from "./rpcService"
|
5
|
+
import { ResponseUtils } from "./responseUtils"
|
6
|
+
|
7
|
+
export class AnonymousService extends Service {
|
8
|
+
|
9
|
+
async getToken(): Promise<{ token: string, isValid: boolean }> {
|
10
|
+
const cookie = this.resolve(CookieService)!
|
11
|
+
let token = cookie.anonymousToken
|
12
|
+
if (token === undefined || token === null || token.length === 0) {
|
13
|
+
const fingerprint = createFingerprint()
|
14
|
+
const response = await this.context
|
15
|
+
.resolve(RpcService)
|
16
|
+
?.requestBuilder("api/v1/Users/anonymous")
|
17
|
+
.sendPutJson({
|
18
|
+
info: {
|
19
|
+
fingerprint: JSON.stringify({
|
20
|
+
userAgent: fingerprint.get("userAgent"),
|
21
|
+
language: fingerprint.get("language"),
|
22
|
+
hardwareConcurrency: fingerprint.get("hardware_concurrency"),
|
23
|
+
cookieEnabled: fingerprint.get("cookie_enabled"),
|
24
|
+
pixelRatio: fingerprint.get("pixel_ratio")
|
25
|
+
})
|
26
|
+
}
|
27
|
+
})
|
28
|
+
|
29
|
+
if (ResponseUtils.isFail(response)) {
|
30
|
+
await ResponseUtils.throwError("Failed to create anonymous token", response)
|
31
|
+
}
|
32
|
+
|
33
|
+
token = (await response!.json() as { token: string }).token
|
34
|
+
|
35
|
+
cookie.anonymousToken = token!
|
36
|
+
}
|
37
|
+
|
38
|
+
return {
|
39
|
+
token: token!,
|
40
|
+
isValid: token !== undefined && token !== null && token.length > 0
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
@@ -3,7 +3,8 @@ import { Context } from "../context"
|
|
3
3
|
import { Constructor } from "../internal/registry"
|
4
4
|
|
5
5
|
export abstract class CommandHandler<T> {
|
6
|
-
constructor(protected readonly context: Context) {
|
6
|
+
constructor(protected readonly context: Context) {
|
7
|
+
}
|
7
8
|
|
8
9
|
resolve<T>(type: Constructor<T>): T | undefined {
|
9
10
|
return this.context.resolve<T>(type)
|
@@ -12,7 +13,8 @@ export abstract class CommandHandler<T> {
|
|
12
13
|
abstract execute(message: T): Promise<void>
|
13
14
|
}
|
14
15
|
|
15
|
-
export abstract class Command {
|
16
|
+
export abstract class Command {
|
17
|
+
}
|
16
18
|
|
17
19
|
export class CommandService extends Service {
|
18
20
|
private readonly _registry: Map<
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Service } from "./service"
|
2
|
+
import { getCookie, setCookie } from "../utils/browserUtils"
|
3
|
+
|
4
|
+
export class CookieService extends Service {
|
5
|
+
get anonymousToken(): string | undefined {
|
6
|
+
return getCookie("anonymous-token")
|
7
|
+
}
|
8
|
+
|
9
|
+
get anonymousTokenIsValid(): boolean {
|
10
|
+
return this.anonymousToken !== undefined && this.anonymousToken !== null && this.anonymousToken.length > 0
|
11
|
+
}
|
12
|
+
|
13
|
+
set anonymousToken(value: string | undefined) {
|
14
|
+
setCookie("anonymous-token", value)
|
15
|
+
}
|
16
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export type HttpMethod = "POST" | "GET" | "PUT" | "DELETE" | "PATCH"
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { Service } from "./service"
|
2
2
|
import { type Middleware } from "../middleware"
|
3
3
|
import { type Disposable } from "../disposable"
|
4
|
+
import { Request, Response } from "../utils/request"
|
4
5
|
|
5
6
|
export class MiddlewareService extends Service {
|
6
|
-
_middlewares: Middleware[] = []
|
7
|
+
private _middlewares: Middleware[] = []
|
7
8
|
|
8
9
|
public useMiddleware(middleware: Middleware): Disposable {
|
9
10
|
this._middlewares.push(middleware)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { Service } from "./service"
|
2
|
-
import { Organizations } from "../storages/organizations"
|
2
|
+
import { Organizations } from "../storages/organizations/organizations"
|
3
3
|
import { OrganizationDto, UserSettings } from "../dto/userInfoResponse"
|
4
|
-
import { OrganizationsImpl } from "../storages/organizations.impl"
|
4
|
+
import { OrganizationsImpl } from "../storages/organizations/organizations.impl"
|
5
5
|
|
6
6
|
export class OrganizationService extends Service {
|
7
7
|
private _impl?: OrganizationsImpl
|
@@ -1,17 +1,19 @@
|
|
1
|
+
// import { Request, Response, Headers, FormData } from "../utils/request"
|
2
|
+
|
1
3
|
export class RequestBuilder {
|
2
|
-
private readonly _headers:
|
4
|
+
private readonly _headers: Record<string, string>
|
3
5
|
private readonly _searchParams: URLSearchParams
|
4
6
|
|
5
7
|
constructor(
|
6
8
|
private readonly _url: URL,
|
7
9
|
private readonly _request: (req: Request) => Promise<Response>
|
8
10
|
) {
|
9
|
-
this._headers =
|
11
|
+
this._headers = {}
|
10
12
|
this._searchParams = new URLSearchParams()
|
11
13
|
}
|
12
14
|
|
13
15
|
public header(name: string, value: string): RequestBuilder {
|
14
|
-
this._headers
|
16
|
+
this._headers[name] = value
|
15
17
|
return this
|
16
18
|
}
|
17
19
|
|
@@ -23,11 +25,11 @@ export class RequestBuilder {
|
|
23
25
|
}
|
24
26
|
if (headers instanceof Headers) {
|
25
27
|
headers.forEach((value, name) => {
|
26
|
-
this._headers
|
28
|
+
this._headers[name] = value
|
27
29
|
})
|
28
30
|
} else {
|
29
31
|
Object.entries(headers).forEach(([name, value]) => {
|
30
|
-
this._headers
|
32
|
+
this._headers[name] = value
|
31
33
|
})
|
32
34
|
}
|
33
35
|
return this
|
@@ -48,18 +50,42 @@ export class RequestBuilder {
|
|
48
50
|
return this
|
49
51
|
}
|
50
52
|
|
51
|
-
public async
|
53
|
+
public async sendPostFormData(body: FormData): Promise<Response> {
|
54
|
+
const url = this._url
|
55
|
+
|
56
|
+
// set search params
|
57
|
+
url.search = this._searchParams.toString()
|
58
|
+
|
59
|
+
// create request
|
60
|
+
const req = new Request(url, {
|
61
|
+
method: "POST",
|
62
|
+
headers: this._headers,
|
63
|
+
body: body
|
64
|
+
})
|
65
|
+
|
66
|
+
// discard content type
|
67
|
+
const reqAny = req as any
|
68
|
+
reqAny.discardContentType = true
|
69
|
+
|
70
|
+
return await this._request(
|
71
|
+
req
|
72
|
+
)
|
73
|
+
}
|
74
|
+
|
75
|
+
public async sendPostJson(body: object | null | undefined): Promise<Response> {
|
52
76
|
const url = this._url
|
53
77
|
url.search = this._searchParams.toString()
|
78
|
+
let json: string | undefined = undefined
|
54
79
|
if (body !== undefined && body !== null && typeof body === "object") {
|
55
|
-
|
80
|
+
json = JSON.stringify(body)
|
56
81
|
}
|
82
|
+
const request = new Request(url, {
|
83
|
+
method: "POST",
|
84
|
+
headers: this._headers,
|
85
|
+
body: json
|
86
|
+
})
|
57
87
|
return await this._request(
|
58
|
-
|
59
|
-
method: "POST",
|
60
|
-
headers: this._headers,
|
61
|
-
body
|
62
|
-
})
|
88
|
+
request
|
63
89
|
)
|
64
90
|
}
|
65
91
|
|
@@ -85,17 +111,18 @@ export class RequestBuilder {
|
|
85
111
|
)
|
86
112
|
}
|
87
113
|
|
88
|
-
public async
|
114
|
+
public async sendPutJson(body: object | null | undefined): Promise<Response> {
|
89
115
|
const url = this._url
|
90
116
|
url.search = this._searchParams.toString()
|
117
|
+
let json: string | undefined = undefined
|
91
118
|
if (body !== undefined && body !== null && typeof body === "object") {
|
92
|
-
|
119
|
+
json = JSON.stringify(body)
|
93
120
|
}
|
94
121
|
return await this._request(
|
95
122
|
new Request(url, {
|
96
123
|
method: "PUT",
|
97
124
|
headers: this._headers,
|
98
|
-
body
|
125
|
+
body: json
|
99
126
|
})
|
100
127
|
)
|
101
128
|
}
|