@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
@@ -0,0 +1,113 @@
|
|
1
|
+
import { Context } from "../../context"
|
2
|
+
import { Disposable } from "../../disposable"
|
3
|
+
import { FileDto, FileProgressDto } from "../../dto/workspacesResponse"
|
4
|
+
import { RpcService } from "../../services/rpcService"
|
5
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
6
|
+
import { File, FileStatus } from "./file"
|
7
|
+
import { FilesEvent } from "./files"
|
8
|
+
|
9
|
+
export class FileImpl extends File implements Disposable {
|
10
|
+
private _isDisposed: boolean = false
|
11
|
+
private _content?: FileDto
|
12
|
+
private _progress?: FileProgressDto
|
13
|
+
|
14
|
+
constructor(private readonly context: Context) {
|
15
|
+
super()
|
16
|
+
}
|
17
|
+
|
18
|
+
async initFrom(file: FileDto): Promise<File> {
|
19
|
+
this._content = file
|
20
|
+
|
21
|
+
await this.updateStatus()
|
22
|
+
|
23
|
+
return this
|
24
|
+
}
|
25
|
+
|
26
|
+
get isDisposed(): boolean {
|
27
|
+
return this._isDisposed
|
28
|
+
}
|
29
|
+
|
30
|
+
dispose(): void {
|
31
|
+
this._isDisposed = true
|
32
|
+
}
|
33
|
+
|
34
|
+
get id(): string {
|
35
|
+
return <string>this._content?.id
|
36
|
+
}
|
37
|
+
|
38
|
+
get name(): string {
|
39
|
+
return <string>this._content?.name
|
40
|
+
}
|
41
|
+
|
42
|
+
get createdAt(): number {
|
43
|
+
return <number>this._content?.createdAt
|
44
|
+
}
|
45
|
+
|
46
|
+
get progress(): FileProgressDto {
|
47
|
+
return <FileProgressDto>this._progress
|
48
|
+
}
|
49
|
+
|
50
|
+
get status(): FileStatus {
|
51
|
+
if (this._progress === undefined || this._progress.success === null ||
|
52
|
+
(this._progress.success && this._progress.completed_parts_count !== this._progress.file_parts_count)) {
|
53
|
+
return FileStatus.UPLOADING
|
54
|
+
} else if (this._progress.success) {
|
55
|
+
return FileStatus.SUCCESS
|
56
|
+
} else {
|
57
|
+
return FileStatus.FAILED
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
async url(): Promise<string> {
|
62
|
+
const response = await this.context
|
63
|
+
.resolve(RpcService)
|
64
|
+
?.requestBuilder("api/v1/Files/url")
|
65
|
+
.searchParam("id", this.id)
|
66
|
+
.sendGet()
|
67
|
+
|
68
|
+
if (ResponseUtils.isFail(response)) {
|
69
|
+
await ResponseUtils.throwError(
|
70
|
+
`Failed to get file ${this.id} url`,
|
71
|
+
response
|
72
|
+
)
|
73
|
+
}
|
74
|
+
|
75
|
+
return (await response!.json() as { url: string }).url
|
76
|
+
}
|
77
|
+
|
78
|
+
public fetchAfter() {
|
79
|
+
if (this.status === FileStatus.UPLOADING) {
|
80
|
+
setTimeout(async () => await this.updateStatus(), 500)
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
async updateStatus(): Promise<void> {
|
85
|
+
const response = await this.context
|
86
|
+
.resolve(RpcService)
|
87
|
+
?.requestBuilder("api/v1/Files/fetch")
|
88
|
+
.searchParam("id", this.id)
|
89
|
+
.sendGet()
|
90
|
+
|
91
|
+
if (ResponseUtils.isFail(response)) {
|
92
|
+
await ResponseUtils.throwError(`Failed to get file ${this.id}`, response)
|
93
|
+
}
|
94
|
+
|
95
|
+
const prev_progress = this._progress
|
96
|
+
this._progress = (await response!.json() as {
|
97
|
+
progress: FileProgressDto
|
98
|
+
}).progress as FileProgressDto
|
99
|
+
|
100
|
+
if (prev_progress === undefined ||
|
101
|
+
(this.progress.success !== null && this.progress.completed_parts_count > prev_progress.completed_parts_count) ||
|
102
|
+
this.status === FileStatus.SUCCESS ||
|
103
|
+
this.status === FileStatus.FAILED) {
|
104
|
+
// dispatch event, file updated
|
105
|
+
this.dispatch({
|
106
|
+
type: FilesEvent.UPDATED,
|
107
|
+
data: this
|
108
|
+
})
|
109
|
+
}
|
110
|
+
|
111
|
+
this.fetchAfter()
|
112
|
+
}
|
113
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { FileProgressDto } from "../../dto/workspacesResponse"
|
2
|
+
import { EventDispatcher } from "../../events"
|
3
|
+
import { FilesEvent } from "./files"
|
4
|
+
|
5
|
+
export type FileId = string
|
6
|
+
|
7
|
+
export enum FileStatus {
|
8
|
+
UPLOADING = "uploading",
|
9
|
+
SUCCESS = "success",
|
10
|
+
FAILED = "failed"
|
11
|
+
}
|
12
|
+
|
13
|
+
/**
|
14
|
+
* File.
|
15
|
+
*/
|
16
|
+
export abstract class File extends EventDispatcher<
|
17
|
+
FilesEvent,
|
18
|
+
File
|
19
|
+
> {
|
20
|
+
/**
|
21
|
+
* File id.
|
22
|
+
*/
|
23
|
+
abstract get id(): FileId
|
24
|
+
|
25
|
+
/**
|
26
|
+
* File name.
|
27
|
+
*/
|
28
|
+
abstract get name(): string
|
29
|
+
|
30
|
+
/**
|
31
|
+
* File date added.
|
32
|
+
*/
|
33
|
+
abstract get createdAt(): number
|
34
|
+
|
35
|
+
/**
|
36
|
+
* File uploading progress
|
37
|
+
*/
|
38
|
+
abstract get progress(): FileProgressDto
|
39
|
+
|
40
|
+
/**
|
41
|
+
* File uploading status
|
42
|
+
*/
|
43
|
+
abstract get status(): FileStatus
|
44
|
+
|
45
|
+
/**
|
46
|
+
* Get temporary url.
|
47
|
+
*/
|
48
|
+
abstract url(): Promise<string>
|
49
|
+
}
|
@@ -1,33 +1,14 @@
|
|
1
|
-
import { Context } from "
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
import { OrganizationService } from "../services/organizationService"
|
5
|
-
import { RpcService } from "../services/rpcService"
|
1
|
+
import { Context } from "../../context"
|
2
|
+
import { FileDto, FileListResponse } from "../../dto/workspacesResponse"
|
3
|
+
import { RpcService } from "../../services/rpcService"
|
6
4
|
import { FileImpl } from "./file.impl"
|
7
|
-
import {
|
8
|
-
import { WorkspaceImpl } from "
|
9
|
-
import { ResponseUtils } from "
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
public files: File[] = []
|
15
|
-
public total: number = 0
|
16
|
-
public filesPerPage: number = 0
|
17
|
-
public page: number = 0
|
18
|
-
|
19
|
-
get pages(): number {
|
20
|
-
return Math.ceil(Math.max(this.total / this.filesPerPage, 1.0))
|
21
|
-
}
|
22
|
-
|
23
|
-
get isDisposed(): boolean {
|
24
|
-
return this._isDisposed
|
25
|
-
}
|
26
|
-
|
27
|
-
dispose(): void {
|
28
|
-
this._isDisposed = true
|
29
|
-
}
|
30
|
-
}
|
5
|
+
import { Files, FilesEvent, UploadFile } from "./files"
|
6
|
+
import { WorkspaceImpl } from "../workspaces/workspace.impl"
|
7
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
8
|
+
import { File } from "./file"
|
9
|
+
import { FilesPage } from "./filesPage"
|
10
|
+
import { FilesPageImpl } from "./filesPage.impl"
|
11
|
+
// import { FormData } from "../../utils/request"
|
31
12
|
|
32
13
|
export class FilesImpl extends Files {
|
33
14
|
constructor(
|
@@ -40,12 +21,18 @@ export class FilesImpl extends Files {
|
|
40
21
|
// Object used as files page data, returned by "query"
|
41
22
|
public filesList?: FilesPage
|
42
23
|
|
43
|
-
async upload(
|
44
|
-
|
24
|
+
async upload(files: UploadFile[]): Promise<File[]> {
|
25
|
+
const loaded_files = []
|
26
|
+
for (const file of files) {
|
27
|
+
loaded_files.push(await this.internalUpload(file))
|
28
|
+
}
|
29
|
+
return loaded_files
|
45
30
|
}
|
46
31
|
|
47
|
-
async delete(
|
48
|
-
|
32
|
+
async delete(ids: string[]): Promise<void> {
|
33
|
+
for (const id of ids) {
|
34
|
+
await this.internalDeleteFile(id)
|
35
|
+
}
|
49
36
|
}
|
50
37
|
|
51
38
|
async query(query: string, page: number, limit: number): Promise<FilesPage> {
|
@@ -57,7 +44,7 @@ export class FilesImpl extends Files {
|
|
57
44
|
//----------------------------------------------------------------------------
|
58
45
|
|
59
46
|
/**
|
60
|
-
* Delete
|
47
|
+
* Delete file.
|
61
48
|
* @param id
|
62
49
|
*/
|
63
50
|
async internalDeleteFile(id: string): Promise<void> {
|
@@ -79,7 +66,7 @@ export class FilesImpl extends Files {
|
|
79
66
|
const file = <FileImpl>this.filesList!.files.find(f => f.id === id)
|
80
67
|
const index = this.filesList!.files.indexOf(file)
|
81
68
|
if (index < 0) {
|
82
|
-
throw new Error("
|
69
|
+
throw new Error("File delete, index is not found")
|
83
70
|
}
|
84
71
|
|
85
72
|
// remove file from collection
|
@@ -100,9 +87,16 @@ export class FilesImpl extends Files {
|
|
100
87
|
page: number,
|
101
88
|
limit: number
|
102
89
|
): Promise<FilesPage> {
|
90
|
+
|
91
|
+
// check page
|
103
92
|
if (page === undefined || page === null) {
|
104
93
|
throw new Error("File fetch, page is undefined or null")
|
105
94
|
}
|
95
|
+
if (page < 0) {
|
96
|
+
throw new Error("File fetch, page is negative")
|
97
|
+
}
|
98
|
+
|
99
|
+
// check limit
|
106
100
|
if (limit === undefined || limit === null) {
|
107
101
|
throw new Error("File fetch, limit is undefined or null")
|
108
102
|
}
|
@@ -110,23 +104,18 @@ export class FilesImpl extends Files {
|
|
110
104
|
throw new Error("File fetch, limit is 0")
|
111
105
|
}
|
112
106
|
|
113
|
-
|
114
|
-
|
115
|
-
if (orgService === undefined) {
|
116
|
-
throw new Error("File fetch, organization service undefined")
|
117
|
-
}
|
118
|
-
|
107
|
+
// send request to the server
|
119
108
|
const response = await this.context
|
120
109
|
.resolve(RpcService)
|
121
110
|
?.requestBuilder("api/v1/Files/list")
|
122
|
-
|
123
111
|
.searchParam("workspaceId", this.workspace.id)
|
124
|
-
.searchParam("organizationId",
|
112
|
+
.searchParam("organizationId", this.workspace.organization.id)
|
125
113
|
.searchParam("query", query)
|
126
114
|
.searchParam("page", page.toString())
|
127
115
|
.searchParam("limit", limit.toString())
|
128
116
|
.sendGet()
|
129
117
|
|
118
|
+
// check response status
|
130
119
|
if (ResponseUtils.isFail(response)) {
|
131
120
|
await ResponseUtils.throwError(
|
132
121
|
`Files fetch query:${query}, page:${page}, limit:${limit}, failed`,
|
@@ -134,57 +123,70 @@ export class FilesImpl extends Files {
|
|
134
123
|
)
|
135
124
|
}
|
136
125
|
|
126
|
+
// parse files from the server's response
|
137
127
|
const files = (await response!.json()) as FileListResponse
|
138
128
|
|
129
|
+
// create files list
|
139
130
|
const filesList = new FilesPageImpl()
|
140
131
|
filesList.total = files.totalFilesCount
|
141
132
|
filesList.filesPerPage = files.filesPerPage
|
142
133
|
filesList.page = page
|
134
|
+
|
135
|
+
// init files from the server's response
|
143
136
|
for (const fl of files.files) {
|
144
|
-
const file = new FileImpl(this.context).initFrom(fl)
|
145
137
|
|
146
|
-
|
138
|
+
// create file implementation
|
139
|
+
const file = await new FileImpl(this.context).initFrom(fl)
|
147
140
|
|
148
|
-
|
149
|
-
|
150
|
-
data: file
|
151
|
-
})
|
141
|
+
// add file to the collection
|
142
|
+
filesList.files.push(file)
|
152
143
|
}
|
153
144
|
|
145
|
+
// set files list
|
154
146
|
this.filesList = filesList
|
155
147
|
|
156
148
|
return filesList
|
157
149
|
}
|
158
150
|
|
159
|
-
async internalUpload(file:
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
throw new Error("File load, organization service undefined")
|
151
|
+
async internalUpload(file: UploadFile): Promise<File> {
|
152
|
+
// check file
|
153
|
+
if (file === undefined || file === null) {
|
154
|
+
throw new Error("File upload, file is undefined or null")
|
164
155
|
}
|
165
156
|
|
157
|
+
// form data to send
|
166
158
|
const form = new FormData()
|
167
|
-
form.append("organizationId",
|
159
|
+
form.append("organizationId", this.workspace.organization.id)
|
168
160
|
form.append("workspaceId", this.workspace.id)
|
169
161
|
form.append("name", file.name)
|
170
162
|
form.append("file", file, file.name)
|
171
163
|
|
164
|
+
// send request to the server
|
172
165
|
const response = await this.context
|
173
166
|
.resolve(RpcService)
|
174
167
|
?.requestBuilder("api/v1/Files")
|
175
|
-
.
|
168
|
+
.sendPostFormData(form)
|
169
|
+
|
170
|
+
// check response status
|
176
171
|
if (ResponseUtils.isFail(response)) {
|
177
|
-
await ResponseUtils.throwError(`File upload ${file}`, response)
|
172
|
+
await ResponseUtils.throwError(`File upload ${file.name}`, response)
|
178
173
|
}
|
179
|
-
const result = (await response!.json()).file as FileDto
|
180
174
|
|
181
|
-
|
175
|
+
// parse file from the server's response
|
176
|
+
const result = (await response!.json() as { file: FileDto }).file as FileDto
|
182
177
|
|
183
|
-
|
178
|
+
// create file implementation
|
179
|
+
const fileImpl = new FileImpl(this.context)
|
184
180
|
|
181
|
+
await fileImpl.initFrom(result)
|
182
|
+
|
183
|
+
// TODO: why is this here?
|
184
|
+
this.filesList?.files.push(fileImpl)
|
185
|
+
|
186
|
+
// dispatch event, file added
|
185
187
|
this.dispatch({
|
186
188
|
type: FilesEvent.ADDED,
|
187
|
-
data:
|
189
|
+
data: fileImpl
|
188
190
|
})
|
189
191
|
|
190
192
|
return fileImpl
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { EventDispatcher } from "../../events"
|
2
|
+
import { File, FileId } from "./file"
|
3
|
+
import { FilesPage } from "./filesPage"
|
4
|
+
|
5
|
+
/**
|
6
|
+
* Files event.
|
7
|
+
*/
|
8
|
+
export enum FilesEvent {
|
9
|
+
ADDED = "added",
|
10
|
+
REMOVED = "removed",
|
11
|
+
UPDATED = "updated"
|
12
|
+
}
|
13
|
+
|
14
|
+
/**
|
15
|
+
* Upload file.
|
16
|
+
*/
|
17
|
+
export type UploadFile = globalThis.File
|
18
|
+
|
19
|
+
/**
|
20
|
+
* Files storage.
|
21
|
+
*/
|
22
|
+
export abstract class Files extends EventDispatcher<FilesEvent, File> {
|
23
|
+
/**
|
24
|
+
* Upload file.
|
25
|
+
*/
|
26
|
+
abstract upload(files: UploadFile[]): Promise<File[]>
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Delete files.
|
30
|
+
* @param ids
|
31
|
+
*/
|
32
|
+
abstract delete(ids: FileId[]): Promise<void>
|
33
|
+
|
34
|
+
/**
|
35
|
+
* Query files.
|
36
|
+
*/
|
37
|
+
abstract query(query: string, page: number, limit: number): Promise<FilesPage>
|
38
|
+
}
|
39
|
+
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import { FilesPage } from "./filesPage"
|
2
|
+
import { Disposable } from "../../disposable"
|
3
|
+
import { File } from "./file"
|
4
|
+
|
5
|
+
export class FilesPageImpl extends FilesPage implements Disposable {
|
6
|
+
private _isDisposed: boolean = false
|
7
|
+
|
8
|
+
public files: File[] = []
|
9
|
+
public total: number = 0
|
10
|
+
public filesPerPage: number = 0
|
11
|
+
public page: number = 0
|
12
|
+
|
13
|
+
get pages(): number {
|
14
|
+
return Math.ceil(Math.max(this.total / this.filesPerPage, 1.0))
|
15
|
+
}
|
16
|
+
|
17
|
+
get isDisposed(): boolean {
|
18
|
+
return this._isDisposed
|
19
|
+
}
|
20
|
+
|
21
|
+
dispose(): void {
|
22
|
+
this._isDisposed = true
|
23
|
+
}
|
24
|
+
|
25
|
+
equals(other?: FilesPage | null): boolean {
|
26
|
+
if (other === undefined) return false
|
27
|
+
if (other === null) return false
|
28
|
+
if (other === this) return true
|
29
|
+
return (
|
30
|
+
other.pages === this.pages &&
|
31
|
+
other.total === this.total &&
|
32
|
+
other.page === this.page &&
|
33
|
+
(other.files === this.files ||
|
34
|
+
other.files.every((file, index) => file.id === this.files[index].id))
|
35
|
+
)
|
36
|
+
}
|
37
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { File } from "./file"
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Files page.
|
5
|
+
*/
|
6
|
+
export abstract class FilesPage {
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Get files.
|
10
|
+
*/
|
11
|
+
abstract get files(): File[]
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Get pages count.
|
15
|
+
*/
|
16
|
+
abstract get pages(): number
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Get total count.
|
20
|
+
*/
|
21
|
+
abstract get total(): number
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Get current page.
|
25
|
+
*/
|
26
|
+
abstract get page(): number
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Equals.
|
30
|
+
* @param other
|
31
|
+
*/
|
32
|
+
abstract equals(other?: FilesPage | null): boolean
|
33
|
+
}
|