@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,555 @@
|
|
1
|
+
import {OrganizationId} from "./organizations"
|
2
|
+
import {Disposable} from "../../disposable"
|
3
|
+
import {
|
4
|
+
CurrentLimitItem,
|
5
|
+
CurrentLimitRecordData,
|
6
|
+
CurrentLimitsData,
|
7
|
+
OrganizationDto,
|
8
|
+
OrganizationSegmentData,
|
9
|
+
UserDto,
|
10
|
+
UserLimitsData,
|
11
|
+
UsersStatisticsResponse
|
12
|
+
} from "../../dto/userInfoResponse"
|
13
|
+
import {WorkspaceId, Workspaces} from "../workspaces/workspaces"
|
14
|
+
import {WorkspacesImpl} from "../workspaces/workspaces.impl"
|
15
|
+
import {Context} from "../../context"
|
16
|
+
import {Organization, OrganizationEvent} from "./organization"
|
17
|
+
import {GroupsImpl} from "../groups/groups.impl"
|
18
|
+
import {Groups} from "../groups/groups"
|
19
|
+
import {ChatsImpl} from "../chats/chats.impl"
|
20
|
+
import {Chats} from "../chats/chats"
|
21
|
+
import {RpcService} from "../../services/rpcService"
|
22
|
+
import {ResponseUtils} from "../../services/responseUtils"
|
23
|
+
import {StatisticsResponse} from "../../dto/statisticsResponse"
|
24
|
+
import {
|
25
|
+
LimitActionType,
|
26
|
+
SegmentData,
|
27
|
+
SegmentsData
|
28
|
+
} from "../../dto/limitsResponse"
|
29
|
+
import {FileId} from "../files/file"
|
30
|
+
import {QuizData} from "../../dto/quizResponse"
|
31
|
+
import {InviteCodeResponse, InviteResponse} from "../../dto/invitesResponse"
|
32
|
+
import {
|
33
|
+
ApiKeyResponse,
|
34
|
+
OrganizationApiKey,
|
35
|
+
OrganizationKeysResponse, TokenResponse
|
36
|
+
} from "../../dto/apiKeyResponse"
|
37
|
+
import {IconResponse} from "../../dto/workspacesResponse"
|
38
|
+
import {UploadFile} from "../files/files"
|
39
|
+
|
40
|
+
export class OrganizationImpl extends Organization implements Disposable {
|
41
|
+
private _isDisposed: boolean = false
|
42
|
+
private _isAdmin: boolean = false
|
43
|
+
private _content?: OrganizationDto
|
44
|
+
private readonly _workspaces: WorkspacesImpl
|
45
|
+
private readonly _accessGroups: GroupsImpl
|
46
|
+
private readonly _chats: ChatsImpl
|
47
|
+
|
48
|
+
constructor(private readonly context: Context) {
|
49
|
+
super()
|
50
|
+
this._workspaces = new WorkspacesImpl(this, this.context)
|
51
|
+
this._accessGroups = new GroupsImpl(this, this.context)
|
52
|
+
this._chats = new ChatsImpl(this, this.context)
|
53
|
+
}
|
54
|
+
|
55
|
+
public async initFrom(
|
56
|
+
content: OrganizationDto,
|
57
|
+
isAdmin: boolean
|
58
|
+
): Promise<OrganizationImpl> {
|
59
|
+
this._content = content
|
60
|
+
this._isAdmin = isAdmin
|
61
|
+
|
62
|
+
// init workspaces by organization id
|
63
|
+
const promises = [
|
64
|
+
this._workspaces.initFrom(content.id),
|
65
|
+
this._chats.initFrom(content.id),
|
66
|
+
this._accessGroups.initialize()
|
67
|
+
]
|
68
|
+
|
69
|
+
await Promise.all(promises)
|
70
|
+
|
71
|
+
return this
|
72
|
+
}
|
73
|
+
|
74
|
+
get isAdmin(): boolean {
|
75
|
+
return this._isAdmin
|
76
|
+
}
|
77
|
+
|
78
|
+
get isDisposed(): boolean {
|
79
|
+
return this._isDisposed
|
80
|
+
}
|
81
|
+
|
82
|
+
dispose(): void {
|
83
|
+
this._isDisposed = true
|
84
|
+
}
|
85
|
+
|
86
|
+
get id(): OrganizationId {
|
87
|
+
return <OrganizationId>this._content?.id
|
88
|
+
}
|
89
|
+
|
90
|
+
get name(): string {
|
91
|
+
return <string>this._content?.profile.name
|
92
|
+
}
|
93
|
+
|
94
|
+
get description(): string {
|
95
|
+
return <string>this._content?.profile.description
|
96
|
+
}
|
97
|
+
|
98
|
+
get icon(): string {
|
99
|
+
return <string>this._content?.profile.iconId
|
100
|
+
}
|
101
|
+
|
102
|
+
get workspaces(): Workspaces {
|
103
|
+
return this._workspaces
|
104
|
+
}
|
105
|
+
|
106
|
+
get accessGroups(): Groups {
|
107
|
+
return this._accessGroups
|
108
|
+
}
|
109
|
+
|
110
|
+
get chats(): Chats {
|
111
|
+
return this._chats
|
112
|
+
}
|
113
|
+
|
114
|
+
async members(): Promise<UserDto[]> {
|
115
|
+
// send request to the server
|
116
|
+
const response = await this.context
|
117
|
+
.resolve(RpcService)
|
118
|
+
?.requestBuilder("api/v1/Organizations/members")
|
119
|
+
.searchParam("id", this.id)
|
120
|
+
.sendGet()
|
121
|
+
|
122
|
+
// check response status
|
123
|
+
if (ResponseUtils.isFail(response)) {
|
124
|
+
await ResponseUtils.throwError(
|
125
|
+
`Failed during fetch of organization members ${this.id}`,
|
126
|
+
response
|
127
|
+
)
|
128
|
+
}
|
129
|
+
|
130
|
+
return (await response!.json() as {
|
131
|
+
members: UserDto[]
|
132
|
+
}).members as UserDto[]
|
133
|
+
}
|
134
|
+
|
135
|
+
async change(name: string, description: string): Promise<void> {
|
136
|
+
if (!this._content) {
|
137
|
+
throw new Error("Organization is not loaded.")
|
138
|
+
}
|
139
|
+
|
140
|
+
if (name === this.name && description === this.description) {
|
141
|
+
return Promise.resolve()
|
142
|
+
}
|
143
|
+
if (name === undefined || name === null || name.trim() === "") {
|
144
|
+
throw new Error("Name is required. Please provide a valid name.")
|
145
|
+
}
|
146
|
+
if (
|
147
|
+
description === undefined ||
|
148
|
+
description === null ||
|
149
|
+
description.trim() === ""
|
150
|
+
) {
|
151
|
+
throw new Error(
|
152
|
+
"Description is required. Please provide a valid description."
|
153
|
+
)
|
154
|
+
}
|
155
|
+
|
156
|
+
const response = await this.context
|
157
|
+
.resolve(RpcService)
|
158
|
+
?.requestBuilder("api/v1/Organizations")
|
159
|
+
.sendPutJson({
|
160
|
+
organizationId: this.id,
|
161
|
+
profile: {
|
162
|
+
name,
|
163
|
+
description
|
164
|
+
}
|
165
|
+
})
|
166
|
+
|
167
|
+
if (ResponseUtils.isFail(response)) {
|
168
|
+
await ResponseUtils.throwError("Failed to change organization", response)
|
169
|
+
}
|
170
|
+
|
171
|
+
if (this._content) {
|
172
|
+
this._content.profile.name = name
|
173
|
+
this._content.profile.description = description
|
174
|
+
}
|
175
|
+
|
176
|
+
this.dispatch({
|
177
|
+
type: OrganizationEvent.CHANGED,
|
178
|
+
data: this
|
179
|
+
})
|
180
|
+
}
|
181
|
+
|
182
|
+
async uploadIcon(icon: UploadFile): Promise<string> {
|
183
|
+
// check icon file
|
184
|
+
if (icon === undefined || icon === null) {
|
185
|
+
throw new Error("Organization icon upload, file is undefined or null")
|
186
|
+
}
|
187
|
+
|
188
|
+
// form data to send
|
189
|
+
const form = new FormData()
|
190
|
+
form.append("OrganizationId", this.id)
|
191
|
+
form.append("FileName", icon.name)
|
192
|
+
form.append("File", icon, icon.name)
|
193
|
+
|
194
|
+
// send request to the server
|
195
|
+
const response = await this.context
|
196
|
+
.resolve(RpcService)
|
197
|
+
?.requestBuilder("api/v1/Organizations/icon")
|
198
|
+
.sendPutFormData(form)
|
199
|
+
|
200
|
+
// check response status
|
201
|
+
if (ResponseUtils.isFail(response)) {
|
202
|
+
await ResponseUtils.throwError(`Organization icon upload ${icon.name}`, response)
|
203
|
+
}
|
204
|
+
|
205
|
+
const iconResponse = await response!.json() as IconResponse
|
206
|
+
|
207
|
+
return iconResponse.iconId
|
208
|
+
}
|
209
|
+
|
210
|
+
async statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse> {
|
211
|
+
// send request to the server
|
212
|
+
const response = await this.context
|
213
|
+
.resolve(RpcService)
|
214
|
+
?.requestBuilder("api/v1/Stats/organization")
|
215
|
+
.searchParam("organizationId", this.id)
|
216
|
+
.searchParam("dateFrom", dateFrom.toString())
|
217
|
+
.searchParam("dateTo", dateTo.toString())
|
218
|
+
.sendGet()
|
219
|
+
|
220
|
+
// check response status
|
221
|
+
if (ResponseUtils.isFail(response)) {
|
222
|
+
await ResponseUtils.throwError(
|
223
|
+
`Failed during fetch of organization statistics ${this.id}`,
|
224
|
+
response
|
225
|
+
)
|
226
|
+
}
|
227
|
+
|
228
|
+
return await response!.json() as StatisticsResponse
|
229
|
+
}
|
230
|
+
|
231
|
+
async membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse> {
|
232
|
+
// send request to the server
|
233
|
+
const response = await this.context
|
234
|
+
.resolve(RpcService)
|
235
|
+
?.requestBuilder("api/v1/Stats/organization/members")
|
236
|
+
.searchParam("organizationId", this.id)
|
237
|
+
.searchParam("dateFrom", dateFrom.toString())
|
238
|
+
.searchParam("dateTo", dateTo.toString())
|
239
|
+
.sendGet()
|
240
|
+
|
241
|
+
// check response status
|
242
|
+
if (ResponseUtils.isFail(response)) {
|
243
|
+
await ResponseUtils.throwError(
|
244
|
+
`Failed during fetch of organization members statistics ${this.id}`,
|
245
|
+
response
|
246
|
+
)
|
247
|
+
}
|
248
|
+
|
249
|
+
return await response!.json() as UsersStatisticsResponse
|
250
|
+
}
|
251
|
+
|
252
|
+
async userStatistic(userId: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse> {
|
253
|
+
// send request to the server
|
254
|
+
const response = await this.context
|
255
|
+
.resolve(RpcService)
|
256
|
+
?.requestBuilder("api/v1/Stats/user")
|
257
|
+
.searchParam("userId", userId)
|
258
|
+
.searchParam("organizationId", this.id)
|
259
|
+
.searchParam("dateFrom", dateFrom.toString())
|
260
|
+
.searchParam("dateTo", dateTo.toString())
|
261
|
+
.sendGet()
|
262
|
+
|
263
|
+
// check response status
|
264
|
+
if (ResponseUtils.isFail(response)) {
|
265
|
+
await ResponseUtils.throwError(
|
266
|
+
`Failed during fetch of user statistics ${this.id}`,
|
267
|
+
response
|
268
|
+
)
|
269
|
+
}
|
270
|
+
|
271
|
+
return await response!.json() as StatisticsResponse
|
272
|
+
}
|
273
|
+
|
274
|
+
async userLimits(): Promise<CurrentLimitsData> {
|
275
|
+
// fetch limits
|
276
|
+
const response = await this.context.resolve(RpcService)
|
277
|
+
?.requestBuilder("api/v1/Users/limits")
|
278
|
+
.sendGet()
|
279
|
+
|
280
|
+
// check response status
|
281
|
+
if (ResponseUtils.isFail(response)) {
|
282
|
+
await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
|
283
|
+
}
|
284
|
+
|
285
|
+
// parse limits from the server's response
|
286
|
+
const limits = (await response!.json()) as UserLimitsData
|
287
|
+
|
288
|
+
const currentLimits = {
|
289
|
+
segment: limits.userSegment.key,
|
290
|
+
limits: []
|
291
|
+
} as CurrentLimitsData
|
292
|
+
for (const limit of limits.userLimits) {
|
293
|
+
const type = limit.action as LimitActionType
|
294
|
+
const currentItem = {
|
295
|
+
action: type,
|
296
|
+
records: []
|
297
|
+
} as CurrentLimitItem
|
298
|
+
|
299
|
+
if (limit.records.length == 0) continue
|
300
|
+
|
301
|
+
for (const record of limit.records) {
|
302
|
+
const segmentRecord = limits.userSegment.dayItems.find(item => item.daysCount == record.daysCount)
|
303
|
+
if (segmentRecord == null) {
|
304
|
+
throw new Error(`Invalid response during get limits in organization: ${this.id}. Days count with ${type} not found in segment ${limits.userSegment.key}`)
|
305
|
+
}
|
306
|
+
const actionRecord = segmentRecord?.actionItems.find(item => item.type == type)
|
307
|
+
if (actionRecord == null) {
|
308
|
+
throw new Error(`Invalid response during get limits in organization: ${this.id}. Type ${type} not found in segment ${limits.userSegment.key}`)
|
309
|
+
}
|
310
|
+
|
311
|
+
const currentRecord = {} as CurrentLimitRecordData
|
312
|
+
currentRecord.daysCount = record.daysCount
|
313
|
+
currentRecord.activeTill = record.activeTill
|
314
|
+
currentRecord.all = actionRecord?.tokenLimit ?? actionRecord?.countLimit
|
315
|
+
|
316
|
+
const available = record.tokenLimit ?? record.countLimit
|
317
|
+
currentRecord.used = currentRecord.all - available
|
318
|
+
|
319
|
+
currentItem.records.push(currentRecord)
|
320
|
+
}
|
321
|
+
|
322
|
+
currentLimits.limits.push(currentItem)
|
323
|
+
}
|
324
|
+
|
325
|
+
return currentLimits
|
326
|
+
}
|
327
|
+
|
328
|
+
async organizationLimits(): Promise<SegmentData> {
|
329
|
+
// fetch limits
|
330
|
+
const response = await this.context.resolve(RpcService)
|
331
|
+
?.requestBuilder("api/v1/Descriptions/limits/organization")
|
332
|
+
.searchParam("organizationId", this.id)
|
333
|
+
.sendGet()
|
334
|
+
|
335
|
+
// check response status
|
336
|
+
if (ResponseUtils.isFail(response)) {
|
337
|
+
await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
|
338
|
+
}
|
339
|
+
|
340
|
+
const json = await response!.json()
|
341
|
+
|
342
|
+
// parse limits from the server's response
|
343
|
+
const limits = (json as OrganizationSegmentData).segment
|
344
|
+
|
345
|
+
return limits
|
346
|
+
}
|
347
|
+
|
348
|
+
async limitSegments(): Promise<SegmentData[]> {
|
349
|
+
// fetch limits
|
350
|
+
const response = await this.context.resolve(RpcService)
|
351
|
+
?.requestBuilder("api/v1/Descriptions/limits/segments")
|
352
|
+
.sendGet()
|
353
|
+
|
354
|
+
// check response status
|
355
|
+
if (ResponseUtils.isFail(response)) {
|
356
|
+
await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
|
357
|
+
}
|
358
|
+
const json = await response!.json()
|
359
|
+
|
360
|
+
// parse limits from the server's response
|
361
|
+
const limits = (json as SegmentsData).segments
|
362
|
+
|
363
|
+
return limits
|
364
|
+
}
|
365
|
+
|
366
|
+
async inviteUsers(emails: string[], accessGroups: string[]): Promise<void> {
|
367
|
+
const response = await this.context
|
368
|
+
.resolve(RpcService)
|
369
|
+
?.requestBuilder("api/v1/Invites")
|
370
|
+
.sendPostJson({
|
371
|
+
organizationId: this.id,
|
372
|
+
emails: emails,
|
373
|
+
accessGroupIds: accessGroups
|
374
|
+
})
|
375
|
+
if (ResponseUtils.isFail(response)) {
|
376
|
+
await ResponseUtils.throwError(
|
377
|
+
`Invite users failed for organization ${this.id}`,
|
378
|
+
response
|
379
|
+
)
|
380
|
+
}
|
381
|
+
}
|
382
|
+
|
383
|
+
async createInviteCode(accessGroups: string[], validateDomain?: string ): Promise<string> {
|
384
|
+
|
385
|
+
let validateObj = null
|
386
|
+
if (validateDomain !== null && validateDomain !== undefined){
|
387
|
+
validateObj = {
|
388
|
+
domain: validateDomain
|
389
|
+
}
|
390
|
+
}
|
391
|
+
|
392
|
+
const response = await this.context
|
393
|
+
.resolve(RpcService)
|
394
|
+
?.requestBuilder("api/v1/Invites/link")
|
395
|
+
.sendPostJson({
|
396
|
+
organizationId: this.id,
|
397
|
+
accessGroupIds: accessGroups,
|
398
|
+
validation: validateObj
|
399
|
+
})
|
400
|
+
if (ResponseUtils.isFail(response)) {
|
401
|
+
await ResponseUtils.throwError(
|
402
|
+
`Invite code creation failed for organization ${this.id}`,
|
403
|
+
response
|
404
|
+
)
|
405
|
+
}
|
406
|
+
|
407
|
+
const json = await response!.json()
|
408
|
+
|
409
|
+
const code = (json as InviteCodeResponse).code
|
410
|
+
|
411
|
+
return code
|
412
|
+
}
|
413
|
+
|
414
|
+
async deleteInviteCode(code: string): Promise<void>{
|
415
|
+
if (code === undefined || code === null || code.trim() === "") {
|
416
|
+
throw new Error("Invite code is required. Please provide a valid code.")
|
417
|
+
}
|
418
|
+
|
419
|
+
const response = await this.context
|
420
|
+
.resolve(RpcService)
|
421
|
+
?.requestBuilder("api/v1/Invites/link")
|
422
|
+
.searchParam("code", code)
|
423
|
+
.sendDelete()
|
424
|
+
|
425
|
+
// check response status
|
426
|
+
if (ResponseUtils.isFail(response)) {
|
427
|
+
await ResponseUtils.throwError(
|
428
|
+
`Failed to delete invite for code: ${code}`,
|
429
|
+
response
|
430
|
+
)
|
431
|
+
}
|
432
|
+
}
|
433
|
+
|
434
|
+
async getOrganizationInvites(): Promise<InviteResponse>{
|
435
|
+
// get invites
|
436
|
+
const response = await this.context.resolve(RpcService)
|
437
|
+
?.requestBuilder("api/v1/Invites/link/organization")
|
438
|
+
.searchParam("organizationId", this.id)
|
439
|
+
.sendGet()
|
440
|
+
|
441
|
+
// check response status
|
442
|
+
if (ResponseUtils.isFail(response)) {
|
443
|
+
await ResponseUtils.throwError(`Failed to get invites in organization: ${this.id}`, response)
|
444
|
+
}
|
445
|
+
|
446
|
+
const json = await response!.json()
|
447
|
+
|
448
|
+
return json as InviteResponse
|
449
|
+
}
|
450
|
+
|
451
|
+
async createApiKey(name: string, accessGroups: string[]): Promise<OrganizationApiKey>{
|
452
|
+
if (name === null || name === undefined || name.trim() === "") {
|
453
|
+
throw new Error("Name is required. Please provide a valid name.")
|
454
|
+
}
|
455
|
+
|
456
|
+
const response = await this.context
|
457
|
+
.resolve(RpcService)
|
458
|
+
?.requestBuilder("api/v1/Keys/organization/exist")
|
459
|
+
.sendPostJson({
|
460
|
+
organizationId: this.id,
|
461
|
+
accessGroupIds: accessGroups,
|
462
|
+
keyName: name
|
463
|
+
})
|
464
|
+
|
465
|
+
if (ResponseUtils.isFail(response)) {
|
466
|
+
await ResponseUtils.throwError(
|
467
|
+
`API key creation failed for organization ${this.id}`,
|
468
|
+
response
|
469
|
+
)
|
470
|
+
}
|
471
|
+
|
472
|
+
const json = await response!.json()
|
473
|
+
|
474
|
+
const key = (json as ApiKeyResponse).apiKey
|
475
|
+
|
476
|
+
return key
|
477
|
+
}
|
478
|
+
|
479
|
+
async getApiKeys(): Promise<OrganizationApiKey[]> {
|
480
|
+
// get invites
|
481
|
+
const response = await this.context.resolve(RpcService)
|
482
|
+
?.requestBuilder("api/v1/Keys/organization")
|
483
|
+
.searchParam("organizationId", this.id)
|
484
|
+
.sendGet()
|
485
|
+
|
486
|
+
// check response status
|
487
|
+
if (ResponseUtils.isFail(response)) {
|
488
|
+
await ResponseUtils.throwError(`Failed to get api keys fot organization: ${this.id}`, response)
|
489
|
+
}
|
490
|
+
|
491
|
+
const json = await response!.json()
|
492
|
+
|
493
|
+
const keys = (json as OrganizationKeysResponse).keys
|
494
|
+
|
495
|
+
return keys
|
496
|
+
}
|
497
|
+
|
498
|
+
async getTokenFromKey(key: string, userId: string, userName: string, userMetadata: string): Promise<TokenResponse> {
|
499
|
+
// get invites
|
500
|
+
const response = await this.context.resolve(RpcService)
|
501
|
+
?.requestBuilder("api/v1/Keys/user/token/jwt")
|
502
|
+
.searchParam("apiKey", key)
|
503
|
+
.searchParam("userId", userId)
|
504
|
+
.searchParam("userName", userName)
|
505
|
+
.searchParam("userMetadata", userMetadata)
|
506
|
+
.sendGet()
|
507
|
+
|
508
|
+
// check response status
|
509
|
+
if (ResponseUtils.isFail(response)) {
|
510
|
+
await ResponseUtils.throwError(`Failed to get token from key for org: ${this.id}`, response)
|
511
|
+
}
|
512
|
+
|
513
|
+
const json = await response!.json()
|
514
|
+
|
515
|
+
return json as TokenResponse
|
516
|
+
}
|
517
|
+
|
518
|
+
async deleteApiKey(key: string): Promise<void>{
|
519
|
+
if (key === null || key === undefined || key.trim() === "") {
|
520
|
+
throw new Error("Key is required. Please provide a valid key.")
|
521
|
+
}
|
522
|
+
|
523
|
+
const response = await this.context
|
524
|
+
.resolve(RpcService)
|
525
|
+
?.requestBuilder("api/v1/Keys/organization")
|
526
|
+
.searchParam("apiKey", key )
|
527
|
+
.sendDelete()
|
528
|
+
|
529
|
+
if (ResponseUtils.isFail(response)) {
|
530
|
+
await ResponseUtils.throwError("Api key delete error", response)
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
async createQuiz(workspaces: WorkspaceId[], query: string, questionsCount: number, optionsCount: number, fileId: FileId): Promise<QuizData> {
|
535
|
+
const response = await this.context
|
536
|
+
.resolve(RpcService)
|
537
|
+
?.requestBuilder("api/v1/Quiz")
|
538
|
+
.sendPostJson({
|
539
|
+
query: query,
|
540
|
+
questionsCount: questionsCount,
|
541
|
+
optionsCount: optionsCount,
|
542
|
+
organizationId: this.id,
|
543
|
+
workspaceIds: workspaces,
|
544
|
+
fileId: fileId
|
545
|
+
})
|
546
|
+
if (ResponseUtils.isFail(response)) {
|
547
|
+
await ResponseUtils.throwError(
|
548
|
+
`Quiz creation failed for organization ${this.id} with query ${query}`,
|
549
|
+
response
|
550
|
+
)
|
551
|
+
}
|
552
|
+
|
553
|
+
return (await response!.json()) as QuizData
|
554
|
+
}
|
555
|
+
}
|
@@ -0,0 +1,168 @@
|
|
1
|
+
import {WorkspaceId, Workspaces} from "../workspaces/workspaces"
|
2
|
+
import { OrganizationId } from "./organizations"
|
3
|
+
import { Groups } from "../groups/groups"
|
4
|
+
import { Chats } from "../chats/chats"
|
5
|
+
import { EventDispatcher } from "../../events"
|
6
|
+
import {
|
7
|
+
CurrentLimitsData,
|
8
|
+
UserDto,
|
9
|
+
UsersStatisticsResponse
|
10
|
+
} from "../../dto/userInfoResponse"
|
11
|
+
import { GroupId } from "../groups/group"
|
12
|
+
import { StatisticsResponse } from "../../dto/statisticsResponse"
|
13
|
+
import { SegmentData } from "../../dto/limitsResponse"
|
14
|
+
import {FileId} from "../files/file"
|
15
|
+
import {QuizData} from "../../dto/quizResponse"
|
16
|
+
import {InviteResponse} from "../../dto/invitesResponse"
|
17
|
+
import { OrganizationApiKey } from "../../dto/apiKeyResponse"
|
18
|
+
import {UploadFile} from "../files/files"
|
19
|
+
|
20
|
+
/**
|
21
|
+
* Organization event.
|
22
|
+
*/
|
23
|
+
export enum OrganizationEvent {
|
24
|
+
CHANGED = "changed"
|
25
|
+
}
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Organization.
|
29
|
+
*/
|
30
|
+
export abstract class Organization extends EventDispatcher<
|
31
|
+
OrganizationEvent,
|
32
|
+
Organization
|
33
|
+
> {
|
34
|
+
/**
|
35
|
+
* Organization id.
|
36
|
+
*/
|
37
|
+
abstract get id(): OrganizationId
|
38
|
+
|
39
|
+
/**
|
40
|
+
* Organization name.
|
41
|
+
*/
|
42
|
+
abstract get name(): string
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Organization description.
|
46
|
+
*/
|
47
|
+
abstract get description(): string
|
48
|
+
|
49
|
+
/**
|
50
|
+
* ID of organization icon
|
51
|
+
*/
|
52
|
+
abstract get icon(): string
|
53
|
+
|
54
|
+
/**
|
55
|
+
* Workspaces.
|
56
|
+
*/
|
57
|
+
abstract get workspaces(): Workspaces
|
58
|
+
|
59
|
+
/**
|
60
|
+
* Chats.
|
61
|
+
*/
|
62
|
+
abstract get chats(): Chats
|
63
|
+
|
64
|
+
/**
|
65
|
+
* Groups.
|
66
|
+
*/
|
67
|
+
abstract get accessGroups(): Groups
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Get organization members
|
71
|
+
*/
|
72
|
+
abstract members(): Promise<UserDto[]>
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Get organization statistics
|
76
|
+
* @param dateFrom
|
77
|
+
* @param dateTo
|
78
|
+
*/
|
79
|
+
abstract statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse>
|
80
|
+
|
81
|
+
/**
|
82
|
+
* Get organization statistics
|
83
|
+
* @param dateFrom
|
84
|
+
* @param dateTo
|
85
|
+
*/
|
86
|
+
abstract membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse>
|
87
|
+
|
88
|
+
/**
|
89
|
+
* Get statistics for user
|
90
|
+
* @param userid
|
91
|
+
* @param dateFrom
|
92
|
+
* @param dateTo
|
93
|
+
*/
|
94
|
+
abstract userStatistic(userid: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse>
|
95
|
+
|
96
|
+
/**
|
97
|
+
* Get user limits data
|
98
|
+
*/
|
99
|
+
abstract userLimits(): Promise<CurrentLimitsData>
|
100
|
+
|
101
|
+
/**
|
102
|
+
* Get default organization limits
|
103
|
+
*/
|
104
|
+
abstract organizationLimits(): Promise<SegmentData>
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Get all available segments data
|
108
|
+
*/
|
109
|
+
abstract limitSegments(): Promise<SegmentData[]>
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Change organization name and description.
|
113
|
+
*/
|
114
|
+
abstract change(name: string, description: string): Promise<void>
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Upload an icon for organization
|
118
|
+
* @param icon
|
119
|
+
*/
|
120
|
+
abstract uploadIcon(icon: UploadFile): Promise<string>
|
121
|
+
|
122
|
+
/**
|
123
|
+
* Invite users with given emails to organization
|
124
|
+
*/
|
125
|
+
abstract inviteUsers(emails: string[], accessGroups: GroupId[]): Promise<void>
|
126
|
+
|
127
|
+
/**
|
128
|
+
* Create invite code for users outside organization
|
129
|
+
*/
|
130
|
+
abstract createInviteCode(accessGroups: GroupId[], validateDomain?: string): Promise<string>
|
131
|
+
|
132
|
+
/**
|
133
|
+
* Delete invite code
|
134
|
+
*/
|
135
|
+
abstract deleteInviteCode(code: string): Promise<void>
|
136
|
+
|
137
|
+
/**
|
138
|
+
* Get all invite links for organization
|
139
|
+
*/
|
140
|
+
abstract getOrganizationInvites(): Promise<InviteResponse>
|
141
|
+
|
142
|
+
/**
|
143
|
+
* Create new Api key for organization
|
144
|
+
* @param name
|
145
|
+
* @param accessGroups
|
146
|
+
*/
|
147
|
+
abstract createApiKey(name: string, accessGroups: string[]): Promise<OrganizationApiKey>
|
148
|
+
|
149
|
+
/**
|
150
|
+
* Get all organization api keys
|
151
|
+
*/
|
152
|
+
abstract getApiKeys(): Promise<OrganizationApiKey[]>
|
153
|
+
|
154
|
+
/**
|
155
|
+
* Delete api key
|
156
|
+
*/
|
157
|
+
abstract deleteApiKey(key: string): Promise<void>
|
158
|
+
|
159
|
+
/**
|
160
|
+
* Create quiz for given topic
|
161
|
+
* @param workspaces - workspaces to search for topic
|
162
|
+
* @param query - search query and quiz topic
|
163
|
+
* @param questionsCount - count of quiz tests
|
164
|
+
* @param optionsCount - count of one question options
|
165
|
+
* @param fileId - file id in case of test-on-file
|
166
|
+
*/
|
167
|
+
abstract createQuiz(workspaces: WorkspaceId[], query: string, questionsCount: number, optionsCount: number, fileId: FileId): Promise<QuizData>
|
168
|
+
}
|