@neuralinnovations/dataisland-sdk 0.0.1-dev7 → 0.0.1-dev71
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 +204 -6
- 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 +30 -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 +39 -0
- package/dist/src/credentials.d.ts.map +1 -0
- package/dist/src/credentials.js +105 -0
- package/dist/src/credentials.js.map +1 -0
- package/dist/src/dataIslandApp.d.ts +55 -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/acquiringResponse.d.ts +46 -0
- package/dist/src/dto/acquiringResponse.d.ts.map +1 -0
- package/dist/src/dto/acquiringResponse.js +11 -0
- package/dist/src/dto/acquiringResponse.js.map +1 -0
- package/dist/src/dto/apiKeyResponse.d.ts +19 -0
- package/dist/src/dto/apiKeyResponse.d.ts.map +1 -0
- package/dist/src/dto/apiKeyResponse.js +3 -0
- package/dist/src/dto/apiKeyResponse.js.map +1 -0
- package/dist/src/dto/badRequestResponse.d.ts +6 -0
- package/dist/src/dto/badRequestResponse.d.ts.map +1 -0
- package/dist/src/dto/badRequestResponse.js +3 -0
- package/dist/src/dto/badRequestResponse.js.map +1 -0
- package/dist/src/dto/chatResponse.d.ts +84 -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/invitesResponse.d.ts +21 -0
- package/dist/src/dto/invitesResponse.d.ts.map +1 -0
- package/dist/src/dto/invitesResponse.js +3 -0
- package/dist/src/dto/invitesResponse.js.map +1 -0
- package/dist/src/dto/limitsResponse.d.ts +29 -0
- package/dist/src/dto/limitsResponse.d.ts.map +1 -0
- package/dist/src/dto/limitsResponse.js +13 -0
- package/dist/src/dto/limitsResponse.js.map +1 -0
- package/dist/src/dto/quizResponse.d.ts +11 -0
- package/dist/src/dto/quizResponse.d.ts.map +1 -0
- package/dist/src/dto/quizResponse.js +3 -0
- package/dist/src/dto/quizResponse.js.map +1 -0
- package/dist/src/dto/statisticsResponse.d.ts +11 -0
- package/dist/src/dto/statisticsResponse.d.ts.map +1 -0
- package/dist/src/dto/statisticsResponse.js +3 -0
- package/dist/src/dto/statisticsResponse.js.map +1 -0
- package/dist/src/dto/userInfoResponse.d.ts +92 -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 +68 -0
- package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
- package/dist/src/dto/workspacesResponse.js +21 -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 +75 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +124 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/internal/app.impl.d.ts +30 -0
- package/dist/src/internal/app.impl.d.ts.map +1 -0
- package/dist/src/internal/app.impl.js +180 -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/acquiringService.d.ts +9 -0
- package/dist/src/services/acquiringService.d.ts.map +1 -0
- package/dist/src/services/acquiringService.js +19 -0
- package/dist/src/services/acquiringService.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 +19 -0
- package/dist/src/services/requestBuilder.d.ts.map +1 -0
- package/dist/src/services/requestBuilder.js +133 -0
- package/dist/src/services/requestBuilder.js.map +1 -0
- package/dist/src/services/responseUtils.d.ts +8 -0
- package/dist/src/services/responseUtils.d.ts.map +1 -0
- package/dist/src/services/responseUtils.js +40 -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 +10 -0
- package/dist/src/services/userProfileService.d.ts.map +1 -0
- package/dist/src/services/userProfileService.js +59 -0
- package/dist/src/services/userProfileService.js.map +1 -0
- package/dist/src/storages/acquirings/acquiring.d.ts +41 -0
- package/dist/src/storages/acquirings/acquiring.d.ts.map +1 -0
- package/dist/src/storages/acquirings/acquiring.impl.d.ts +20 -0
- package/dist/src/storages/acquirings/acquiring.impl.d.ts.map +1 -0
- package/dist/src/storages/acquirings/acquiring.impl.js +92 -0
- package/dist/src/storages/acquirings/acquiring.impl.js.map +1 -0
- package/dist/src/storages/acquirings/acquiring.js +10 -0
- package/dist/src/storages/acquirings/acquiring.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 +134 -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 +55 -0
- package/dist/src/storages/chats/chat.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.d.ts +28 -0
- package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chat.impl.js +106 -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 +51 -0
- package/dist/src/storages/chats/chats.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.d.ts +20 -0
- package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
- package/dist/src/storages/chats/chats.impl.js +184 -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 +59 -0
- package/dist/src/storages/files/file.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.d.ts +28 -0
- package/dist/src/storages/files/file.impl.d.ts.map +1 -0
- package/dist/src/storages/files/file.impl.js +130 -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 +39 -0
- package/dist/src/storages/files/files.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.d.ts +24 -0
- package/dist/src/storages/files/files.impl.d.ts.map +1 -0
- package/dist/src/storages/files/files.impl.js +168 -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 +43 -0
- package/dist/src/storages/groups/groups.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.d.ts +31 -0
- package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
- package/dist/src/storages/groups/groups.impl.js +136 -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 +137 -0
- package/dist/src/storages/organizations/organization.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.d.ts +55 -0
- package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organization.impl.js +362 -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 +77 -0
- package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts +45 -0
- package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
- package/dist/src/storages/organizations/organizations.impl.js +242 -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 +64 -0
- package/dist/src/storages/user/userProfile.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.d.ts +24 -0
- package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
- package/dist/src/storages/user/userProfile.impl.js +129 -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 +153 -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 +64 -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/dist/src/utils/utils.d.ts +3 -0
- package/dist/src/utils/utils.d.ts.map +1 -0
- package/dist/src/utils/utils.js +13 -0
- package/dist/src/utils/utils.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +44 -5
- package/src/commands/deleteUserFullCommandHandler.ts +19 -0
- package/src/commands/startCommandHandler.ts +19 -5
- package/src/context.ts +4 -2
- package/src/credentials.ts +46 -0
- package/src/dataIslandApp.ts +8 -2
- package/src/disposable.ts +18 -5
- package/src/dto/accessGroupResponse.ts +17 -16
- package/src/dto/acquiringResponse.ts +54 -0
- package/src/dto/apiKeyResponse.ts +23 -0
- package/src/dto/badRequestResponse.ts +6 -0
- package/src/dto/chatResponse.ts +60 -54
- package/src/dto/invitesResponse.ts +25 -0
- package/src/dto/limitsResponse.ts +32 -0
- package/src/dto/quizResponse.ts +12 -0
- package/src/dto/statisticsResponse.ts +12 -0
- package/src/dto/userInfoResponse.ts +64 -2
- package/src/dto/workspacesResponse.ts +38 -3
- package/src/index.ts +59 -16
- package/src/internal/app.impl.ts +54 -12
- package/src/internal/registry.ts +54 -6
- package/src/middleware.ts +2 -0
- package/src/services/acquiringService.ts +21 -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 +1 -0
- package/src/services/organizationService.ts +2 -2
- package/src/services/requestBuilder.ts +48 -8
- package/src/services/responseUtils.ts +12 -0
- package/src/services/rpcService.ts +1 -0
- package/src/services/userProfileService.ts +36 -4
- package/src/storages/acquirings/acquiring.impl.ts +132 -0
- package/src/storages/acquirings/acquiring.ts +54 -0
- package/src/storages/chats/answer.impl.ts +178 -0
- package/src/storages/chats/answer.ts +53 -0
- package/src/storages/chats/chat.impl.ts +139 -0
- package/src/storages/chats/chat.ts +70 -0
- package/src/storages/chats/chats.impl.ts +255 -0
- package/src/storages/chats/chats.ts +60 -0
- package/src/storages/files/file.impl.ts +162 -0
- package/src/storages/files/file.ts +74 -0
- package/src/storages/{files.impl.ts → files/files.impl.ts} +89 -67
- package/src/storages/{files.ts → files/files.ts} +14 -7
- package/src/storages/files/filesPage.impl.ts +37 -0
- package/src/storages/{filesPage.ts → files/filesPage.ts} +6 -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 +180 -0
- package/src/storages/groups/groups.ts +50 -0
- package/src/storages/organizations/organization.impl.ts +555 -0
- package/src/storages/organizations/organization.ts +168 -0
- package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +161 -12
- package/src/storages/organizations/organizations.ts +93 -0
- package/src/storages/user/userProfile.impl.ts +157 -0
- package/src/storages/user/userProfile.ts +81 -0
- package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +27 -7
- package/src/storages/{workspace.ts → workspaces/workspace.ts} +8 -3
- package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +29 -32
- package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
- package/src/unitTest.ts +3 -3
- package/src/utils/browserUtils.ts +68 -0
- package/src/utils/request.ts +6 -0
- package/src/utils/utils.ts +8 -0
- package/.browserslistrc +0 -5
- package/.editorconfig +0 -25
- package/.eslintrc.json +0 -44
- package/.github/workflows/publish-npm.yml +0 -41
- package/.prettierignore +0 -1
- package/.prettierrc +0 -11
- package/.yarnrc +0 -2
- package/babel.config.js +0 -6
- package/docs/.nojekyll +0 -1
- package/docs/classes/BasicCredential.md +0 -80
- package/docs/classes/BearerCredential.md +0 -72
- package/docs/classes/Chat.md +0 -69
- package/docs/classes/Chats.md +0 -90
- package/docs/classes/CredentialBase.md +0 -54
- package/docs/classes/DataIslandApp.md +0 -168
- package/docs/classes/DebugCredential.md +0 -72
- package/docs/classes/DefaultCredential.md +0 -56
- package/docs/classes/DisposableContainer.md +0 -177
- package/docs/classes/EventDispatcher.md +0 -109
- package/docs/classes/File.md +0 -79
- package/docs/classes/Files.md +0 -136
- package/docs/classes/FilesPage.md +0 -76
- package/docs/classes/Group.md +0 -191
- package/docs/classes/Groups.md +0 -130
- package/docs/classes/Lifetime.md +0 -108
- package/docs/classes/Organization.md +0 -89
- package/docs/classes/Organizations.md +0 -195
- package/docs/classes/UserProfile.md +0 -156
- package/docs/classes/Workspace.md +0 -165
- package/docs/classes/Workspaces.md +0 -189
- package/docs/enums/ChatAnswer.md +0 -22
- package/docs/enums/ChatsEvent.md +0 -22
- package/docs/enums/FilesEvent.md +0 -24
- package/docs/enums/GroupEvent.md +0 -29
- package/docs/enums/OrganizationsEvent.md +0 -31
- package/docs/enums/UserEvent.md +0 -15
- package/docs/enums/WorkspaceEvent.md +0 -17
- package/docs/enums/WorkspacesEvent.md +0 -24
- package/docs/interfaces/Disposable.md +0 -25
- package/docs/interfaces/Event.md +0 -58
- package/docs/interfaces/EventSubscriber.md +0 -41
- package/docs/interfaces/Input.md +0 -35
- package/docs/modules.md +0 -205
- package/jest.config.ts +0 -199
- package/jest.setup.ts +0 -2
- package/scripts/docs/index.js +0 -15
- package/src/storages/chat.ts +0 -21
- package/src/storages/chats.ts +0 -17
- package/src/storages/file.impl.ts +0 -69
- package/src/storages/file.ts +0 -28
- 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/src/storages/organizations.ts +0 -56
- package/src/storages/userProfile.impl.ts +0 -56
- package/src/storages/userProfile.ts +0 -42
- package/test/commands.test.ts +0 -24
- package/test/data/test_file.pdf +0 -0
- package/test/disposable.test.ts +0 -39
- package/test/events.test.ts +0 -151
- package/test/files.test.ts +0 -52
- package/test/index.test.ts +0 -122
- package/test/organization.test.ts +0 -57
- package/test/registry.test.ts +0 -44
- package/test/services.test.ts +0 -56
- package/test/setup.ts +0 -54
- package/test/unitTest.test.ts +0 -21
- package/test/workspace.test.ts +0 -71
- package/tsconfig.json +0 -31
@@ -0,0 +1,139 @@
|
|
1
|
+
import { Chat, ChatAnswerType } from "./chat"
|
2
|
+
import { Disposable } from "../../disposable"
|
3
|
+
import { Answer, AnswerId } from "./answer"
|
4
|
+
import {ChatDto} from "../../dto/chatResponse"
|
5
|
+
import { Context } from "../../context"
|
6
|
+
import { AnswerImpl } from "./answer.impl"
|
7
|
+
import { RpcService } from "../../services/rpcService"
|
8
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
9
|
+
import { Organization } from "../organizations/organization"
|
10
|
+
|
11
|
+
export class ChatImpl extends Chat implements Disposable {
|
12
|
+
private _isDisposed: boolean = false
|
13
|
+
private _answers: AnswerImpl[] = []
|
14
|
+
|
15
|
+
private _content?: ChatDto
|
16
|
+
|
17
|
+
constructor(
|
18
|
+
private readonly context: Context,
|
19
|
+
public readonly organization: Organization
|
20
|
+
) {
|
21
|
+
super()
|
22
|
+
}
|
23
|
+
|
24
|
+
async initFrom(chat: ChatDto): Promise<ChatImpl> {
|
25
|
+
this._content = chat
|
26
|
+
|
27
|
+
this._answers = []
|
28
|
+
// init answers
|
29
|
+
for (const ans of chat.answers) {
|
30
|
+
// create answer implementation
|
31
|
+
const answer = new AnswerImpl(this, this.context).initFromHistory(ans)
|
32
|
+
|
33
|
+
// add answer to the collection
|
34
|
+
this._answers.push(answer)
|
35
|
+
}
|
36
|
+
|
37
|
+
return this
|
38
|
+
}
|
39
|
+
|
40
|
+
async update(): Promise<void> {
|
41
|
+
const response = await this.context
|
42
|
+
.resolve(RpcService)
|
43
|
+
?.requestBuilder("api/v1/Chats")
|
44
|
+
.searchParam("id", this.id)
|
45
|
+
.sendGet()
|
46
|
+
|
47
|
+
// check response status
|
48
|
+
if (ResponseUtils.isFail(response)) {
|
49
|
+
await ResponseUtils.throwError(
|
50
|
+
`Get chat for id ${this.id} is failed`,
|
51
|
+
response
|
52
|
+
)
|
53
|
+
}
|
54
|
+
|
55
|
+
// parse chat from the server's response
|
56
|
+
const chat = (await response!.json() as { chat: ChatDto }).chat as ChatDto
|
57
|
+
|
58
|
+
await this.initFrom(chat)
|
59
|
+
}
|
60
|
+
|
61
|
+
get id(): string {
|
62
|
+
return <string>this._content?.id
|
63
|
+
}
|
64
|
+
|
65
|
+
get name(): string {
|
66
|
+
return <string>this._content?.name
|
67
|
+
}
|
68
|
+
|
69
|
+
get fileId(): string {
|
70
|
+
return <string>this._content?.fileId
|
71
|
+
}
|
72
|
+
|
73
|
+
get workspaceIds(): string[] {
|
74
|
+
return <string[]>this._content?.workspaceIds
|
75
|
+
}
|
76
|
+
|
77
|
+
get model(): string {
|
78
|
+
return <string>this._content?.model
|
79
|
+
}
|
80
|
+
|
81
|
+
get clientContext(): string {
|
82
|
+
return <string>this._content?.clientContext
|
83
|
+
}
|
84
|
+
|
85
|
+
get collection(): readonly Answer[] {
|
86
|
+
return <Answer[]>this._answers
|
87
|
+
}
|
88
|
+
|
89
|
+
get isDisposed(): boolean {
|
90
|
+
return this._isDisposed
|
91
|
+
}
|
92
|
+
|
93
|
+
public getAnswer(id: AnswerId): Answer {
|
94
|
+
const answer = this._answers.find(answer => answer.id === id)
|
95
|
+
if (answer) {
|
96
|
+
return answer
|
97
|
+
}
|
98
|
+
throw new Error(`Answer with id ${id} is not found`)
|
99
|
+
}
|
100
|
+
|
101
|
+
async ask(message: string, answerType: ChatAnswerType): Promise<Answer | undefined> {
|
102
|
+
|
103
|
+
// send request to the server
|
104
|
+
const response = await this.context
|
105
|
+
.resolve(RpcService)
|
106
|
+
?.requestBuilder("api/v1/Chats/question")
|
107
|
+
.sendPutJson({
|
108
|
+
chatId: this.id,
|
109
|
+
questionMessage: message,
|
110
|
+
isLongAnswer: (answerType === ChatAnswerType.LONG)
|
111
|
+
})
|
112
|
+
|
113
|
+
// check response status
|
114
|
+
if (ResponseUtils.isFail(response)) {
|
115
|
+
if (await ResponseUtils.isLimitReached()){
|
116
|
+
return undefined
|
117
|
+
}
|
118
|
+
await ResponseUtils.throwError(`Failed to ask a question, organization: ${this.organization.id}`, response)
|
119
|
+
}
|
120
|
+
|
121
|
+
// parse answer id from the server's response
|
122
|
+
const id = (await response!.json() as { id: string }).id
|
123
|
+
|
124
|
+
// create answer implementation
|
125
|
+
const answer = await new AnswerImpl(this, this.context).initNew(id, message)
|
126
|
+
|
127
|
+
// add answer to the collection
|
128
|
+
this._answers.push(answer)
|
129
|
+
|
130
|
+
return answer
|
131
|
+
}
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
dispose(): void {
|
136
|
+
this._isDisposed = true
|
137
|
+
}
|
138
|
+
|
139
|
+
}
|
@@ -0,0 +1,70 @@
|
|
1
|
+
import { Answer } from "./answer"
|
2
|
+
import { Organization } from "../organizations/organization"
|
3
|
+
|
4
|
+
export type ChatId = string
|
5
|
+
|
6
|
+
export enum ChatAnswerType {
|
7
|
+
SHORT = "short",
|
8
|
+
LONG = "long"
|
9
|
+
}
|
10
|
+
|
11
|
+
export abstract class Chat {
|
12
|
+
|
13
|
+
/**
|
14
|
+
* Organization.
|
15
|
+
*/
|
16
|
+
abstract get organization(): Organization
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Chat id.
|
20
|
+
*/
|
21
|
+
abstract get id(): ChatId
|
22
|
+
|
23
|
+
/**
|
24
|
+
* Chat name.
|
25
|
+
*/
|
26
|
+
abstract get name(): string
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Connected file ID.
|
30
|
+
*/
|
31
|
+
abstract get fileId(): string
|
32
|
+
|
33
|
+
/**
|
34
|
+
* Connected workspace ID.
|
35
|
+
*/
|
36
|
+
abstract get workspaceIds(): string[]
|
37
|
+
|
38
|
+
/**
|
39
|
+
* Model.
|
40
|
+
*/
|
41
|
+
abstract get model(): string
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Added client context.
|
45
|
+
*/
|
46
|
+
abstract get clientContext(): string
|
47
|
+
|
48
|
+
/**
|
49
|
+
* Answers list.
|
50
|
+
*/
|
51
|
+
abstract get collection(): ReadonlyArray<Answer>
|
52
|
+
|
53
|
+
/**
|
54
|
+
* Get answer by id
|
55
|
+
* @param id answer id
|
56
|
+
*/
|
57
|
+
abstract getAnswer(id: string): Answer
|
58
|
+
|
59
|
+
/**
|
60
|
+
* Update chat
|
61
|
+
*/
|
62
|
+
abstract update(): Promise<void>
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Ask new question in chat.
|
66
|
+
*/
|
67
|
+
abstract ask(message: string, answerType: ChatAnswerType): Promise<Answer | undefined>
|
68
|
+
|
69
|
+
}
|
70
|
+
|
@@ -0,0 +1,255 @@
|
|
1
|
+
import { Context } from "../../context"
|
2
|
+
import { ChatDto, ChatListResponse } from "../../dto/chatResponse"
|
3
|
+
import { ResponseUtils } from "../../services/responseUtils"
|
4
|
+
import { RpcService } from "../../services/rpcService"
|
5
|
+
import { OrganizationImpl } from "../organizations/organization.impl"
|
6
|
+
import { OrganizationId } from "../organizations/organizations"
|
7
|
+
import { Chat } from "./chat"
|
8
|
+
import { ChatImpl } from "./chat.impl"
|
9
|
+
import { Chats, ChatsEvent } from "./chats"
|
10
|
+
|
11
|
+
export class ChatsImpl extends Chats {
|
12
|
+
private readonly _chats: Chat[] = []
|
13
|
+
|
14
|
+
constructor(
|
15
|
+
public readonly organization: OrganizationImpl,
|
16
|
+
private readonly context: Context
|
17
|
+
) {
|
18
|
+
super()
|
19
|
+
}
|
20
|
+
|
21
|
+
async initFrom(organizationId: OrganizationId): Promise<void> {
|
22
|
+
// init chats from the server's response
|
23
|
+
const limit = 100
|
24
|
+
const page = 0
|
25
|
+
const response = await this.context
|
26
|
+
.resolve(RpcService)
|
27
|
+
?.requestBuilder("api/v1/Chats/list")
|
28
|
+
.searchParam("organizationId", organizationId)
|
29
|
+
.searchParam("limit", limit.toString())
|
30
|
+
.searchParam("page", page.toString())
|
31
|
+
.sendGet()
|
32
|
+
|
33
|
+
// check response status
|
34
|
+
if (ResponseUtils.isFail(response)) {
|
35
|
+
await ResponseUtils.throwError(
|
36
|
+
`Chats list org id:${organizationId}, page:${page}, limit:${limit}, failed`,
|
37
|
+
response
|
38
|
+
)
|
39
|
+
}
|
40
|
+
|
41
|
+
// parse chats from the server's response
|
42
|
+
const chats = (await response!.json()) as ChatListResponse
|
43
|
+
|
44
|
+
// init chats
|
45
|
+
for (const cht of chats.chats) {
|
46
|
+
// create chat implementation
|
47
|
+
const chat = await new ChatImpl(this.context, this.organization).initFrom(cht)
|
48
|
+
|
49
|
+
// add chat to the collection
|
50
|
+
this._chats.push(chat)
|
51
|
+
|
52
|
+
// dispatch event
|
53
|
+
this.dispatch({
|
54
|
+
type: ChatsEvent.ADDED,
|
55
|
+
data: chat
|
56
|
+
})
|
57
|
+
}
|
58
|
+
|
59
|
+
}
|
60
|
+
|
61
|
+
get collection(): readonly Chat[] {
|
62
|
+
return this._chats
|
63
|
+
}
|
64
|
+
|
65
|
+
get(id: string): Chat {
|
66
|
+
return <Chat>this.tryGet(id)
|
67
|
+
}
|
68
|
+
|
69
|
+
tryGet(id: string): Chat | undefined {
|
70
|
+
return this._chats.find(chat => chat.id === id)
|
71
|
+
}
|
72
|
+
|
73
|
+
async create(model: string, clientContext: string = ""): Promise<Chat | undefined> {
|
74
|
+
if (model === undefined || model === null) {
|
75
|
+
throw new Error("Create chat, model is undefined or null")
|
76
|
+
}
|
77
|
+
|
78
|
+
if (model.length === 0) {
|
79
|
+
throw new Error("Create chat, model is empty")
|
80
|
+
}
|
81
|
+
|
82
|
+
// send create request to the server
|
83
|
+
const response = await this.context
|
84
|
+
.resolve(RpcService)
|
85
|
+
?.requestBuilder("api/v1/Chats/workspaces")
|
86
|
+
.sendPostJson({ organizationId: this.organization.id, model: model, clientContext: clientContext })
|
87
|
+
|
88
|
+
// check response status
|
89
|
+
if (ResponseUtils.isFail(response)) {
|
90
|
+
if (await ResponseUtils.isLimitReached()){
|
91
|
+
return undefined
|
92
|
+
}
|
93
|
+
|
94
|
+
await ResponseUtils.throwError(`Failed to create chat, organization: ${this.organization.id}`, response)
|
95
|
+
}
|
96
|
+
|
97
|
+
// parse workspace from the server's response
|
98
|
+
const content = (await response!.json() as {
|
99
|
+
chat: ChatDto
|
100
|
+
}).chat as ChatDto
|
101
|
+
|
102
|
+
// create workspace implementation
|
103
|
+
const chat = new ChatImpl(this.context, this.organization)
|
104
|
+
await chat.initFrom(content)
|
105
|
+
|
106
|
+
// add chat to the collection
|
107
|
+
this._chats.push(chat)
|
108
|
+
|
109
|
+
// dispatch event
|
110
|
+
this.dispatch({
|
111
|
+
type: ChatsEvent.ADDED,
|
112
|
+
data: chat
|
113
|
+
})
|
114
|
+
|
115
|
+
return chat
|
116
|
+
}
|
117
|
+
|
118
|
+
async createWithFile(fileId: string): Promise<Chat | undefined> {
|
119
|
+
if (fileId === undefined || fileId === null) {
|
120
|
+
throw new Error("Create chat with file, id is undefined or null")
|
121
|
+
}
|
122
|
+
if (fileId.length === 0 || fileId.trim().length === 0) {
|
123
|
+
throw new Error("Create chat with file, id is empty")
|
124
|
+
}
|
125
|
+
|
126
|
+
// send create request to the server
|
127
|
+
const response = await this.context
|
128
|
+
.resolve(RpcService)
|
129
|
+
?.requestBuilder("api/v1/Chats/file")
|
130
|
+
.sendPostJson({
|
131
|
+
organizationId: this.organization.id,
|
132
|
+
fileId: fileId,
|
133
|
+
model: "search"
|
134
|
+
})
|
135
|
+
|
136
|
+
// check response status
|
137
|
+
if (ResponseUtils.isFail(response)) {
|
138
|
+
if (await ResponseUtils.isLimitReached()){
|
139
|
+
return undefined
|
140
|
+
}
|
141
|
+
|
142
|
+
await ResponseUtils.throwError(`Failed to create chat, organization: ${this.organization.id}`, response)
|
143
|
+
}
|
144
|
+
|
145
|
+
// parse workspace from the server's response
|
146
|
+
const content = (await response!.json() as {
|
147
|
+
chat: ChatDto
|
148
|
+
}).chat as ChatDto
|
149
|
+
|
150
|
+
// create workspace implementation
|
151
|
+
const chat = new ChatImpl(this.context, this.organization)
|
152
|
+
await chat.initFrom(content)
|
153
|
+
|
154
|
+
// add chat to the collection
|
155
|
+
this._chats.push(chat)
|
156
|
+
|
157
|
+
// dispatch event
|
158
|
+
this.dispatch({
|
159
|
+
type: ChatsEvent.ADDED,
|
160
|
+
data: chat
|
161
|
+
})
|
162
|
+
|
163
|
+
return chat
|
164
|
+
}
|
165
|
+
|
166
|
+
async createWithWorkspace(workspaceId: string, clientContext: string = ""): Promise<Chat | undefined> {
|
167
|
+
if (workspaceId === undefined || workspaceId === null) {
|
168
|
+
throw new Error("Create chat with workspace, id is undefined or null")
|
169
|
+
}
|
170
|
+
if (workspaceId.length === 0 || workspaceId.trim().length === 0) {
|
171
|
+
throw new Error("Create chat with workspace, id is empty")
|
172
|
+
}
|
173
|
+
|
174
|
+
// send create request to the server
|
175
|
+
const response = await this.context
|
176
|
+
.resolve(RpcService)
|
177
|
+
?.requestBuilder("api/v1/Chats/workspaces")
|
178
|
+
.sendPostJson({
|
179
|
+
organizationId: this.organization.id,
|
180
|
+
model: "search",
|
181
|
+
clientContext: clientContext,
|
182
|
+
workspaceIds: [workspaceId]
|
183
|
+
})
|
184
|
+
|
185
|
+
// check response status
|
186
|
+
if (ResponseUtils.isFail(response)) {
|
187
|
+
if (await ResponseUtils.isLimitReached()){
|
188
|
+
return undefined
|
189
|
+
}
|
190
|
+
|
191
|
+
await ResponseUtils.throwError(`Failed to create chat in workspace, organization: ${this.organization.id}`, response)
|
192
|
+
}
|
193
|
+
|
194
|
+
// parse workspace from the server's response
|
195
|
+
const content = (await response!.json() as {
|
196
|
+
chat: ChatDto
|
197
|
+
}).chat as ChatDto
|
198
|
+
|
199
|
+
// create workspace implementation
|
200
|
+
const chat = new ChatImpl(this.context, this.organization)
|
201
|
+
await chat.initFrom(content)
|
202
|
+
|
203
|
+
// add chat to the collection
|
204
|
+
this._chats.push(chat)
|
205
|
+
|
206
|
+
// dispatch event
|
207
|
+
this.dispatch({
|
208
|
+
type: ChatsEvent.ADDED,
|
209
|
+
data: chat
|
210
|
+
})
|
211
|
+
|
212
|
+
return chat
|
213
|
+
}
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
async delete(id: string): Promise<void> {
|
219
|
+
// get chat by id
|
220
|
+
const chat = <ChatImpl>this.tryGet(id)
|
221
|
+
|
222
|
+
// check if chat is found
|
223
|
+
if (!chat) {
|
224
|
+
throw new Error(`Chat ${id} is not found, organization: ${this.organization.id}`)
|
225
|
+
}
|
226
|
+
|
227
|
+
// send delete request to the server
|
228
|
+
const response = await this.context
|
229
|
+
.resolve(RpcService)
|
230
|
+
?.requestBuilder("api/v1/Chats")
|
231
|
+
.searchParam("id", id)
|
232
|
+
.sendDelete()
|
233
|
+
|
234
|
+
// check response status
|
235
|
+
if (ResponseUtils.isFail(response)) {
|
236
|
+
await ResponseUtils.throwError(
|
237
|
+
`Failed to delete chat: ${id}, organization: ${this.organization.id}`,
|
238
|
+
response
|
239
|
+
)
|
240
|
+
}
|
241
|
+
|
242
|
+
// remove chat from the collection
|
243
|
+
const index = this._chats.indexOf(<ChatImpl>chat)
|
244
|
+
if (index < 0) {
|
245
|
+
throw new Error(`Chat ${id} is not found, organization: ${this.organization.id}`)
|
246
|
+
}
|
247
|
+
this._chats.splice(index, 1)
|
248
|
+
|
249
|
+
// dispatch event
|
250
|
+
this.dispatch({
|
251
|
+
type: ChatsEvent.REMOVED,
|
252
|
+
data: chat
|
253
|
+
})
|
254
|
+
}
|
255
|
+
}
|
@@ -0,0 +1,60 @@
|
|
1
|
+
import { EventDispatcher } from "../../events"
|
2
|
+
import { Chat, ChatId } from "./chat"
|
3
|
+
import { Organization } from "../organizations/organization"
|
4
|
+
|
5
|
+
export enum ChatsEvent {
|
6
|
+
ADDED = "added",
|
7
|
+
REMOVED = "removed"
|
8
|
+
}
|
9
|
+
|
10
|
+
/**
|
11
|
+
* Chats storage.
|
12
|
+
*/
|
13
|
+
export abstract class Chats extends EventDispatcher<ChatsEvent, Chat> {
|
14
|
+
|
15
|
+
/**
|
16
|
+
* Organization.
|
17
|
+
*/
|
18
|
+
abstract get organization(): Organization
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Chats list.
|
22
|
+
*/
|
23
|
+
abstract get collection(): ReadonlyArray<Chat>
|
24
|
+
|
25
|
+
/**
|
26
|
+
* Create new chat.
|
27
|
+
*/
|
28
|
+
abstract create(model: string, clientContext: string): Promise<Chat | undefined>
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Create chat with specific file
|
32
|
+
* @param fileId
|
33
|
+
*/
|
34
|
+
abstract createWithFile(fileId: string): Promise<Chat | undefined>
|
35
|
+
|
36
|
+
/**
|
37
|
+
* Create chat with specific workspace
|
38
|
+
* @param workspaceId
|
39
|
+
* @param clientContext
|
40
|
+
*/
|
41
|
+
abstract createWithWorkspace(workspaceId: string, clientContext: string): Promise<Chat | undefined>
|
42
|
+
|
43
|
+
/**
|
44
|
+
* Get chat by id.
|
45
|
+
* @param id
|
46
|
+
*/
|
47
|
+
abstract get(id: ChatId): Chat
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Try to get chat by id.
|
51
|
+
* @param id
|
52
|
+
*/
|
53
|
+
abstract tryGet(id: ChatId): Chat | undefined
|
54
|
+
|
55
|
+
/**
|
56
|
+
* Delete chat.
|
57
|
+
* @param id
|
58
|
+
*/
|
59
|
+
abstract delete(id: ChatId): Promise<void>
|
60
|
+
}
|
@@ -0,0 +1,162 @@
|
|
1
|
+
import {Context} from "../../context"
|
2
|
+
import {Disposable} from "../../disposable"
|
3
|
+
import {
|
4
|
+
FileDto,
|
5
|
+
FileProgressDto,
|
6
|
+
MetadataDto
|
7
|
+
} from "../../dto/workspacesResponse"
|
8
|
+
import {RpcService} from "../../services/rpcService"
|
9
|
+
import {ResponseUtils} from "../../services/responseUtils"
|
10
|
+
import {File, FileStatus} from "./file"
|
11
|
+
import {FilesEvent} from "./files"
|
12
|
+
import {isNullOrUndefined} from "../../utils/utils"
|
13
|
+
|
14
|
+
export class FileImpl extends File implements Disposable {
|
15
|
+
private _isDisposed: boolean = false
|
16
|
+
private _content?: FileDto
|
17
|
+
private _progress?: FileProgressDto
|
18
|
+
|
19
|
+
constructor(private readonly context: Context) {
|
20
|
+
super()
|
21
|
+
}
|
22
|
+
|
23
|
+
async initFrom(file: FileDto): Promise<File> {
|
24
|
+
this._content = file
|
25
|
+
|
26
|
+
await this.updateStatus()
|
27
|
+
|
28
|
+
return this
|
29
|
+
}
|
30
|
+
|
31
|
+
get isDisposed(): boolean {
|
32
|
+
return this._isDisposed
|
33
|
+
}
|
34
|
+
|
35
|
+
dispose(): void {
|
36
|
+
this._isDisposed = true
|
37
|
+
}
|
38
|
+
|
39
|
+
get id(): string {
|
40
|
+
return <string>this._content?.id
|
41
|
+
}
|
42
|
+
|
43
|
+
get name(): string {
|
44
|
+
return <string>this._content?.name
|
45
|
+
}
|
46
|
+
|
47
|
+
get description(): string {
|
48
|
+
return <string>this._content?.description
|
49
|
+
}
|
50
|
+
|
51
|
+
get metadata(): MetadataDto[] {
|
52
|
+
const metadataString = <string>this._content?.fileMetadata
|
53
|
+
if (metadataString === null || metadataString === undefined){
|
54
|
+
return []
|
55
|
+
}
|
56
|
+
return <MetadataDto[]>JSON.parse(metadataString)
|
57
|
+
}
|
58
|
+
|
59
|
+
get createdAt(): number {
|
60
|
+
return <number>this._content?.createdAt
|
61
|
+
}
|
62
|
+
|
63
|
+
get modifiedAt(): number {
|
64
|
+
return <number>this._content?.modifiedAt
|
65
|
+
}
|
66
|
+
|
67
|
+
get url(): string {
|
68
|
+
return <string>this._content?.url
|
69
|
+
}
|
70
|
+
|
71
|
+
get previewUrl(): string {
|
72
|
+
return <string>this._content?.previewUrl
|
73
|
+
}
|
74
|
+
|
75
|
+
get progress(): FileProgressDto {
|
76
|
+
return <FileProgressDto>this._progress
|
77
|
+
}
|
78
|
+
|
79
|
+
get status(): FileStatus {
|
80
|
+
|
81
|
+
if (
|
82
|
+
isNullOrUndefined(this._progress) || isNullOrUndefined(this._progress.success)
|
83
|
+
|| (this._progress.success && this._progress.completed_parts_count < this._progress.file_parts_count)) {
|
84
|
+
return FileStatus.UPLOADING
|
85
|
+
} else if (this._progress.success) {
|
86
|
+
return FileStatus.SUCCESS
|
87
|
+
} else {
|
88
|
+
return FileStatus.FAILED
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
public fetchAfter() {
|
93
|
+
if (this.status === FileStatus.UPLOADING) {
|
94
|
+
setTimeout(async () => await this.updateStatus(), 2000)
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
async updateStatus(): Promise<void> {
|
99
|
+
const response = await this.context
|
100
|
+
.resolve(RpcService)
|
101
|
+
?.requestBuilder("api/v1/Files/fetch")
|
102
|
+
.searchParam("id", this.id)
|
103
|
+
.sendGet()
|
104
|
+
|
105
|
+
if (ResponseUtils.isFail(response)) {
|
106
|
+
await ResponseUtils.throwError(`Failed to get file ${this.id}`, response)
|
107
|
+
}
|
108
|
+
|
109
|
+
const prev_progress = this._progress
|
110
|
+
this._progress = (await response!.json() as {
|
111
|
+
progress: FileProgressDto
|
112
|
+
}).progress as FileProgressDto
|
113
|
+
|
114
|
+
if (isNullOrUndefined(prev_progress) ||
|
115
|
+
(!isNullOrUndefined(this.progress.success) && this.progress.completed_parts_count > prev_progress.completed_parts_count) ||
|
116
|
+
this.status === FileStatus.SUCCESS ||
|
117
|
+
this.status === FileStatus.FAILED) {
|
118
|
+
// dispatch event, file updated
|
119
|
+
this.dispatch({
|
120
|
+
type: FilesEvent.UPDATED,
|
121
|
+
data: this
|
122
|
+
})
|
123
|
+
}
|
124
|
+
|
125
|
+
this.fetchAfter()
|
126
|
+
}
|
127
|
+
|
128
|
+
async update(name: string, metadata: MetadataDto[], description?: string){
|
129
|
+
if (!this._content) {
|
130
|
+
throw new Error("File is not loaded.")
|
131
|
+
}
|
132
|
+
|
133
|
+
if (name === undefined || metadata === undefined || name === null || metadata === null ){
|
134
|
+
throw new Error("File update, one of parameters is undefined or null")
|
135
|
+
}
|
136
|
+
|
137
|
+
const metadataString = JSON.stringify(metadata)
|
138
|
+
|
139
|
+
const response = await this.context
|
140
|
+
.resolve(RpcService)
|
141
|
+
?.requestBuilder("api/v1/Files")
|
142
|
+
.sendPutJson({
|
143
|
+
fileId: this.id,
|
144
|
+
name: name,
|
145
|
+
description: description ?? this.description,
|
146
|
+
metadata: metadataString
|
147
|
+
})
|
148
|
+
|
149
|
+
if (ResponseUtils.isFail(response)) {
|
150
|
+
await ResponseUtils.throwError("Failed to update file", response)
|
151
|
+
}
|
152
|
+
|
153
|
+
this._content = (await response!.json() as {
|
154
|
+
file: FileDto
|
155
|
+
}).file as FileDto
|
156
|
+
|
157
|
+
this.dispatch({
|
158
|
+
type: FilesEvent.UPDATED,
|
159
|
+
data: this
|
160
|
+
})
|
161
|
+
}
|
162
|
+
}
|