@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.
Files changed (424) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +204 -6
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/package.json +103 -0
  8. package/dist/src/appBuilder.d.ts +44 -0
  9. package/dist/src/appBuilder.d.ts.map +1 -0
  10. package/dist/src/appBuilder.js +10 -0
  11. package/dist/src/appBuilder.js.map +1 -0
  12. package/dist/src/commands/deleteUserFullCommandHandler.d.ts +7 -0
  13. package/dist/src/commands/deleteUserFullCommandHandler.d.ts.map +1 -0
  14. package/dist/src/commands/deleteUserFullCommandHandler.js +21 -0
  15. package/dist/src/commands/deleteUserFullCommandHandler.js.map +1 -0
  16. package/dist/src/commands/startCommandHandler.d.ts +7 -0
  17. package/dist/src/commands/startCommandHandler.d.ts.map +1 -0
  18. package/dist/src/commands/startCommandHandler.js +30 -0
  19. package/dist/src/commands/startCommandHandler.js.map +1 -0
  20. package/dist/src/context.d.ts +24 -0
  21. package/dist/src/context.d.ts.map +1 -0
  22. package/dist/src/context.js +31 -0
  23. package/dist/src/context.js.map +1 -0
  24. package/dist/src/credentials.d.ts +39 -0
  25. package/dist/src/credentials.d.ts.map +1 -0
  26. package/dist/src/credentials.js +105 -0
  27. package/dist/src/credentials.js.map +1 -0
  28. package/dist/src/dataIslandApp.d.ts +55 -0
  29. package/dist/src/dataIslandApp.d.ts.map +1 -0
  30. package/dist/src/dataIslandApp.js +10 -0
  31. package/dist/src/dataIslandApp.js.map +1 -0
  32. package/dist/src/disposable.d.ts +84 -0
  33. package/dist/src/disposable.d.ts.map +1 -0
  34. package/dist/src/disposable.js +147 -0
  35. package/dist/src/disposable.js.map +1 -0
  36. package/dist/src/dto/accessGroupResponse.d.ts +27 -0
  37. package/dist/src/dto/accessGroupResponse.d.ts.map +1 -0
  38. package/dist/src/dto/accessGroupResponse.js +3 -0
  39. package/dist/src/dto/accessGroupResponse.js.map +1 -0
  40. package/dist/src/dto/acquiringResponse.d.ts +46 -0
  41. package/dist/src/dto/acquiringResponse.d.ts.map +1 -0
  42. package/dist/src/dto/acquiringResponse.js +11 -0
  43. package/dist/src/dto/acquiringResponse.js.map +1 -0
  44. package/dist/src/dto/apiKeyResponse.d.ts +19 -0
  45. package/dist/src/dto/apiKeyResponse.d.ts.map +1 -0
  46. package/dist/src/dto/apiKeyResponse.js +3 -0
  47. package/dist/src/dto/apiKeyResponse.js.map +1 -0
  48. package/dist/src/dto/badRequestResponse.d.ts +6 -0
  49. package/dist/src/dto/badRequestResponse.d.ts.map +1 -0
  50. package/dist/src/dto/badRequestResponse.js +3 -0
  51. package/dist/src/dto/badRequestResponse.js.map +1 -0
  52. package/dist/src/dto/chatResponse.d.ts +84 -0
  53. package/dist/src/dto/chatResponse.d.ts.map +1 -0
  54. package/dist/src/dto/chatResponse.js +45 -0
  55. package/dist/src/dto/chatResponse.js.map +1 -0
  56. package/dist/src/dto/invitesResponse.d.ts +21 -0
  57. package/dist/src/dto/invitesResponse.d.ts.map +1 -0
  58. package/dist/src/dto/invitesResponse.js +3 -0
  59. package/dist/src/dto/invitesResponse.js.map +1 -0
  60. package/dist/src/dto/limitsResponse.d.ts +29 -0
  61. package/dist/src/dto/limitsResponse.d.ts.map +1 -0
  62. package/dist/src/dto/limitsResponse.js +13 -0
  63. package/dist/src/dto/limitsResponse.js.map +1 -0
  64. package/dist/src/dto/quizResponse.d.ts +11 -0
  65. package/dist/src/dto/quizResponse.d.ts.map +1 -0
  66. package/dist/src/dto/quizResponse.js +3 -0
  67. package/dist/src/dto/quizResponse.js.map +1 -0
  68. package/dist/src/dto/statisticsResponse.d.ts +11 -0
  69. package/dist/src/dto/statisticsResponse.d.ts.map +1 -0
  70. package/dist/src/dto/statisticsResponse.js +3 -0
  71. package/dist/src/dto/statisticsResponse.js.map +1 -0
  72. package/dist/src/dto/userInfoResponse.d.ts +92 -0
  73. package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
  74. package/dist/src/dto/userInfoResponse.js +3 -0
  75. package/dist/src/dto/userInfoResponse.js.map +1 -0
  76. package/dist/src/dto/workspacesResponse.d.ts +68 -0
  77. package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
  78. package/dist/src/dto/workspacesResponse.js +21 -0
  79. package/dist/src/dto/workspacesResponse.js.map +1 -0
  80. package/dist/src/events.d.ts +17 -0
  81. package/dist/src/events.d.ts.map +1 -0
  82. package/dist/src/events.js +52 -0
  83. package/dist/src/events.js.map +1 -0
  84. package/dist/src/index.d.ts +75 -0
  85. package/dist/src/index.d.ts.map +1 -0
  86. package/dist/src/index.js +124 -0
  87. package/dist/src/index.js.map +1 -0
  88. package/dist/src/internal/app.impl.d.ts +30 -0
  89. package/dist/src/internal/app.impl.d.ts.map +1 -0
  90. package/dist/src/internal/app.impl.js +180 -0
  91. package/dist/src/internal/app.impl.js.map +1 -0
  92. package/dist/src/internal/appBuilder.impl.d.ts +27 -0
  93. package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
  94. package/dist/src/internal/appBuilder.impl.js +71 -0
  95. package/dist/src/internal/appBuilder.impl.js.map +1 -0
  96. package/dist/src/internal/createApp.impl.d.ts +4 -0
  97. package/dist/src/internal/createApp.impl.d.ts.map +1 -0
  98. package/dist/src/internal/createApp.impl.js +11 -0
  99. package/dist/src/internal/createApp.impl.js.map +1 -0
  100. package/dist/src/internal/registry.d.ts +66 -0
  101. package/dist/src/internal/registry.d.ts.map +1 -0
  102. package/dist/src/internal/registry.js +114 -0
  103. package/dist/src/internal/registry.js.map +1 -0
  104. package/dist/src/middleware.d.ts +6 -0
  105. package/dist/src/middleware.d.ts.map +1 -0
  106. package/dist/src/middleware.js +3 -0
  107. package/dist/src/middleware.js.map +1 -0
  108. package/dist/src/services/acquiringService.d.ts +9 -0
  109. package/dist/src/services/acquiringService.d.ts.map +1 -0
  110. package/dist/src/services/acquiringService.js +19 -0
  111. package/dist/src/services/acquiringService.js.map +1 -0
  112. package/dist/src/services/anonymousService.d.ts +8 -0
  113. package/dist/src/services/anonymousService.d.ts.map +1 -0
  114. package/dist/src/services/anonymousService.js +41 -0
  115. package/dist/src/services/anonymousService.js.map +1 -0
  116. package/dist/src/services/commandService.d.ts +18 -0
  117. package/dist/src/services/commandService.d.ts.map +1 -0
  118. package/dist/src/services/commandService.js +40 -0
  119. package/dist/src/services/commandService.js.map +1 -0
  120. package/dist/src/services/cookieService.d.ts +7 -0
  121. package/dist/src/services/cookieService.d.ts.map +1 -0
  122. package/dist/src/services/cookieService.js +18 -0
  123. package/dist/src/services/cookieService.js.map +1 -0
  124. package/dist/src/services/credentialService.d.ts +9 -0
  125. package/dist/src/services/credentialService.d.ts.map +1 -0
  126. package/dist/src/services/credentialService.js +26 -0
  127. package/dist/src/services/credentialService.js.map +1 -0
  128. package/dist/src/services/httpMethod.d.ts +2 -0
  129. package/dist/src/services/httpMethod.d.ts.map +1 -0
  130. package/dist/src/services/httpMethod.js +3 -0
  131. package/dist/src/services/httpMethod.js.map +1 -0
  132. package/dist/src/services/middlewareService.d.ts +10 -0
  133. package/dist/src/services/middlewareService.d.ts.map +1 -0
  134. package/dist/src/services/middlewareService.js +34 -0
  135. package/dist/src/services/middlewareService.js.map +1 -0
  136. package/dist/src/services/organizationService.d.ts +10 -0
  137. package/dist/src/services/organizationService.d.ts.map +1 -0
  138. package/dist/src/services/organizationService.js +19 -0
  139. package/dist/src/services/organizationService.js.map +1 -0
  140. package/dist/src/services/requestBuilder.d.ts +19 -0
  141. package/dist/src/services/requestBuilder.d.ts.map +1 -0
  142. package/dist/src/services/requestBuilder.js +133 -0
  143. package/dist/src/services/requestBuilder.js.map +1 -0
  144. package/dist/src/services/responseUtils.d.ts +8 -0
  145. package/dist/src/services/responseUtils.d.ts.map +1 -0
  146. package/dist/src/services/responseUtils.js +40 -0
  147. package/dist/src/services/responseUtils.js.map +1 -0
  148. package/dist/src/services/rpcService.d.ts +77 -0
  149. package/dist/src/services/rpcService.d.ts.map +1 -0
  150. package/dist/src/services/rpcService.js +125 -0
  151. package/dist/src/services/rpcService.js.map +1 -0
  152. package/dist/src/services/service.d.ts +21 -0
  153. package/dist/src/services/service.d.ts.map +1 -0
  154. package/dist/src/services/service.js +41 -0
  155. package/dist/src/services/service.js.map +1 -0
  156. package/dist/src/services/userProfileService.d.ts +10 -0
  157. package/dist/src/services/userProfileService.d.ts.map +1 -0
  158. package/dist/src/services/userProfileService.js +59 -0
  159. package/dist/src/services/userProfileService.js.map +1 -0
  160. package/dist/src/storages/acquirings/acquiring.d.ts +41 -0
  161. package/dist/src/storages/acquirings/acquiring.d.ts.map +1 -0
  162. package/dist/src/storages/acquirings/acquiring.impl.d.ts +20 -0
  163. package/dist/src/storages/acquirings/acquiring.impl.d.ts.map +1 -0
  164. package/dist/src/storages/acquirings/acquiring.impl.js +92 -0
  165. package/dist/src/storages/acquirings/acquiring.impl.js.map +1 -0
  166. package/dist/src/storages/acquirings/acquiring.js +10 -0
  167. package/dist/src/storages/acquirings/acquiring.js.map +1 -0
  168. package/dist/src/storages/chats/answer.d.ts +41 -0
  169. package/dist/src/storages/chats/answer.d.ts.map +1 -0
  170. package/dist/src/storages/chats/answer.impl.d.ts +29 -0
  171. package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
  172. package/dist/src/storages/chats/answer.impl.js +134 -0
  173. package/dist/src/storages/chats/answer.impl.js.map +1 -0
  174. package/dist/src/storages/chats/answer.js +15 -0
  175. package/dist/src/storages/chats/answer.js.map +1 -0
  176. package/dist/src/storages/chats/chat.d.ts +55 -0
  177. package/dist/src/storages/chats/chat.d.ts.map +1 -0
  178. package/dist/src/storages/chats/chat.impl.d.ts +28 -0
  179. package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
  180. package/dist/src/storages/chats/chat.impl.js +106 -0
  181. package/dist/src/storages/chats/chat.impl.js.map +1 -0
  182. package/dist/src/storages/chats/chat.js +12 -0
  183. package/dist/src/storages/chats/chat.js.map +1 -0
  184. package/dist/src/storages/chats/chats.d.ts +51 -0
  185. package/dist/src/storages/chats/chats.d.ts.map +1 -0
  186. package/dist/src/storages/chats/chats.impl.d.ts +20 -0
  187. package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
  188. package/dist/src/storages/chats/chats.impl.js +184 -0
  189. package/dist/src/storages/chats/chats.impl.js.map +1 -0
  190. package/dist/src/storages/chats/chats.js +16 -0
  191. package/dist/src/storages/chats/chats.js.map +1 -0
  192. package/dist/src/storages/files/file.d.ts +59 -0
  193. package/dist/src/storages/files/file.d.ts.map +1 -0
  194. package/dist/src/storages/files/file.impl.d.ts +28 -0
  195. package/dist/src/storages/files/file.impl.d.ts.map +1 -0
  196. package/dist/src/storages/files/file.impl.js +130 -0
  197. package/dist/src/storages/files/file.impl.js.map +1 -0
  198. package/dist/src/storages/files/file.js +17 -0
  199. package/dist/src/storages/files/file.js.map +1 -0
  200. package/dist/src/storages/files/files.d.ts +39 -0
  201. package/dist/src/storages/files/files.d.ts.map +1 -0
  202. package/dist/src/storages/files/files.impl.d.ts +24 -0
  203. package/dist/src/storages/files/files.impl.d.ts.map +1 -0
  204. package/dist/src/storages/files/files.impl.js +168 -0
  205. package/dist/src/storages/files/files.impl.js.map +1 -0
  206. package/dist/src/storages/files/files.js +20 -0
  207. package/dist/src/storages/files/files.js.map +1 -0
  208. package/dist/src/storages/files/filesPage.d.ts +28 -0
  209. package/dist/src/storages/files/filesPage.d.ts.map +1 -0
  210. package/dist/src/storages/files/filesPage.impl.d.ts +15 -0
  211. package/dist/src/storages/files/filesPage.impl.d.ts.map +1 -0
  212. package/dist/src/storages/files/filesPage.impl.js +38 -0
  213. package/dist/src/storages/files/filesPage.impl.js.map +1 -0
  214. package/dist/src/storages/files/filesPage.js +10 -0
  215. package/dist/src/storages/files/filesPage.js.map +1 -0
  216. package/dist/src/storages/groups/group.d.ts +63 -0
  217. package/dist/src/storages/groups/group.d.ts.map +1 -0
  218. package/dist/src/storages/groups/group.impl.d.ts +38 -0
  219. package/dist/src/storages/groups/group.impl.d.ts.map +1 -0
  220. package/dist/src/storages/groups/group.impl.js +210 -0
  221. package/dist/src/storages/groups/group.impl.js.map +1 -0
  222. package/dist/src/storages/groups/group.js +15 -0
  223. package/dist/src/storages/groups/group.js.map +1 -0
  224. package/dist/src/storages/groups/groups.d.ts +43 -0
  225. package/dist/src/storages/groups/groups.d.ts.map +1 -0
  226. package/dist/src/storages/groups/groups.impl.d.ts +31 -0
  227. package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
  228. package/dist/src/storages/groups/groups.impl.js +136 -0
  229. package/dist/src/storages/groups/groups.impl.js.map +1 -0
  230. package/dist/src/storages/groups/groups.js +20 -0
  231. package/dist/src/storages/groups/groups.js.map +1 -0
  232. package/dist/src/storages/organizations/organization.d.ts +137 -0
  233. package/dist/src/storages/organizations/organization.d.ts.map +1 -0
  234. package/dist/src/storages/organizations/organization.impl.d.ts +55 -0
  235. package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
  236. package/dist/src/storages/organizations/organization.impl.js +362 -0
  237. package/dist/src/storages/organizations/organization.impl.js.map +1 -0
  238. package/dist/src/storages/organizations/organization.js +18 -0
  239. package/dist/src/storages/organizations/organization.js.map +1 -0
  240. package/dist/src/storages/organizations/organizations.d.ts +77 -0
  241. package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
  242. package/dist/src/storages/organizations/organizations.impl.d.ts +45 -0
  243. package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
  244. package/dist/src/storages/organizations/organizations.impl.js +242 -0
  245. package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
  246. package/dist/src/storages/organizations/organizations.js +20 -0
  247. package/dist/src/storages/organizations/organizations.js.map +1 -0
  248. package/dist/src/storages/user/userProfile.d.ts +64 -0
  249. package/dist/src/storages/user/userProfile.d.ts.map +1 -0
  250. package/dist/src/storages/user/userProfile.impl.d.ts +24 -0
  251. package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
  252. package/dist/src/storages/user/userProfile.impl.js +129 -0
  253. package/dist/src/storages/user/userProfile.impl.js.map +1 -0
  254. package/dist/src/storages/user/userProfile.js +12 -0
  255. package/dist/src/storages/user/userProfile.js.map +1 -0
  256. package/dist/src/storages/workspaces/workspace.d.ts +44 -0
  257. package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
  258. package/dist/src/storages/workspaces/workspace.impl.d.ts +23 -0
  259. package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
  260. package/dist/src/storages/workspaces/workspace.impl.js +98 -0
  261. package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
  262. package/dist/src/storages/workspaces/workspace.js +18 -0
  263. package/dist/src/storages/workspaces/workspace.js.map +1 -0
  264. package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
  265. package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
  266. package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
  267. package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
  268. package/dist/src/storages/workspaces/workspaces.impl.js +153 -0
  269. package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
  270. package/dist/src/storages/workspaces/workspaces.js +19 -0
  271. package/dist/src/storages/workspaces/workspaces.js.map +1 -0
  272. package/dist/src/unitTest.d.ts +12 -0
  273. package/dist/src/unitTest.d.ts.map +1 -0
  274. package/dist/src/unitTest.js +44 -0
  275. package/dist/src/unitTest.js.map +1 -0
  276. package/dist/src/utils/browserUtils.d.ts +4 -0
  277. package/dist/src/utils/browserUtils.d.ts.map +1 -0
  278. package/dist/src/utils/browserUtils.js +64 -0
  279. package/dist/src/utils/browserUtils.js.map +1 -0
  280. package/dist/src/utils/request.d.ts +6 -0
  281. package/dist/src/utils/request.d.ts.map +1 -0
  282. package/dist/src/utils/request.js +3 -0
  283. package/dist/src/utils/request.js.map +1 -0
  284. package/dist/src/utils/utils.d.ts +3 -0
  285. package/dist/src/utils/utils.d.ts.map +1 -0
  286. package/dist/src/utils/utils.js +13 -0
  287. package/dist/src/utils/utils.js.map +1 -0
  288. package/index.d.ts +1 -0
  289. package/index.js +1 -0
  290. package/package.json +44 -5
  291. package/src/commands/deleteUserFullCommandHandler.ts +19 -0
  292. package/src/commands/startCommandHandler.ts +19 -5
  293. package/src/context.ts +4 -2
  294. package/src/credentials.ts +46 -0
  295. package/src/dataIslandApp.ts +8 -2
  296. package/src/disposable.ts +18 -5
  297. package/src/dto/accessGroupResponse.ts +17 -16
  298. package/src/dto/acquiringResponse.ts +54 -0
  299. package/src/dto/apiKeyResponse.ts +23 -0
  300. package/src/dto/badRequestResponse.ts +6 -0
  301. package/src/dto/chatResponse.ts +60 -54
  302. package/src/dto/invitesResponse.ts +25 -0
  303. package/src/dto/limitsResponse.ts +32 -0
  304. package/src/dto/quizResponse.ts +12 -0
  305. package/src/dto/statisticsResponse.ts +12 -0
  306. package/src/dto/userInfoResponse.ts +64 -2
  307. package/src/dto/workspacesResponse.ts +38 -3
  308. package/src/index.ts +59 -16
  309. package/src/internal/app.impl.ts +54 -12
  310. package/src/internal/registry.ts +54 -6
  311. package/src/middleware.ts +2 -0
  312. package/src/services/acquiringService.ts +21 -0
  313. package/src/services/anonymousService.ts +43 -0
  314. package/src/services/commandService.ts +4 -2
  315. package/src/services/cookieService.ts +16 -0
  316. package/src/services/httpMethod.ts +1 -0
  317. package/src/services/middlewareService.ts +1 -0
  318. package/src/services/organizationService.ts +2 -2
  319. package/src/services/requestBuilder.ts +48 -8
  320. package/src/services/responseUtils.ts +12 -0
  321. package/src/services/rpcService.ts +1 -0
  322. package/src/services/userProfileService.ts +36 -4
  323. package/src/storages/acquirings/acquiring.impl.ts +132 -0
  324. package/src/storages/acquirings/acquiring.ts +54 -0
  325. package/src/storages/chats/answer.impl.ts +178 -0
  326. package/src/storages/chats/answer.ts +53 -0
  327. package/src/storages/chats/chat.impl.ts +139 -0
  328. package/src/storages/chats/chat.ts +70 -0
  329. package/src/storages/chats/chats.impl.ts +255 -0
  330. package/src/storages/chats/chats.ts +60 -0
  331. package/src/storages/files/file.impl.ts +162 -0
  332. package/src/storages/files/file.ts +74 -0
  333. package/src/storages/{files.impl.ts → files/files.impl.ts} +89 -67
  334. package/src/storages/{files.ts → files/files.ts} +14 -7
  335. package/src/storages/files/filesPage.impl.ts +37 -0
  336. package/src/storages/{filesPage.ts → files/filesPage.ts} +6 -0
  337. package/src/storages/groups/group.impl.ts +276 -0
  338. package/src/storages/groups/group.ts +73 -0
  339. package/src/storages/groups/groups.impl.ts +180 -0
  340. package/src/storages/groups/groups.ts +50 -0
  341. package/src/storages/organizations/organization.impl.ts +555 -0
  342. package/src/storages/organizations/organization.ts +168 -0
  343. package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +161 -12
  344. package/src/storages/organizations/organizations.ts +93 -0
  345. package/src/storages/user/userProfile.impl.ts +157 -0
  346. package/src/storages/user/userProfile.ts +81 -0
  347. package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +27 -7
  348. package/src/storages/{workspace.ts → workspaces/workspace.ts} +8 -3
  349. package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +29 -32
  350. package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
  351. package/src/unitTest.ts +3 -3
  352. package/src/utils/browserUtils.ts +68 -0
  353. package/src/utils/request.ts +6 -0
  354. package/src/utils/utils.ts +8 -0
  355. package/.browserslistrc +0 -5
  356. package/.editorconfig +0 -25
  357. package/.eslintrc.json +0 -44
  358. package/.github/workflows/publish-npm.yml +0 -41
  359. package/.prettierignore +0 -1
  360. package/.prettierrc +0 -11
  361. package/.yarnrc +0 -2
  362. package/babel.config.js +0 -6
  363. package/docs/.nojekyll +0 -1
  364. package/docs/classes/BasicCredential.md +0 -80
  365. package/docs/classes/BearerCredential.md +0 -72
  366. package/docs/classes/Chat.md +0 -69
  367. package/docs/classes/Chats.md +0 -90
  368. package/docs/classes/CredentialBase.md +0 -54
  369. package/docs/classes/DataIslandApp.md +0 -168
  370. package/docs/classes/DebugCredential.md +0 -72
  371. package/docs/classes/DefaultCredential.md +0 -56
  372. package/docs/classes/DisposableContainer.md +0 -177
  373. package/docs/classes/EventDispatcher.md +0 -109
  374. package/docs/classes/File.md +0 -79
  375. package/docs/classes/Files.md +0 -136
  376. package/docs/classes/FilesPage.md +0 -76
  377. package/docs/classes/Group.md +0 -191
  378. package/docs/classes/Groups.md +0 -130
  379. package/docs/classes/Lifetime.md +0 -108
  380. package/docs/classes/Organization.md +0 -89
  381. package/docs/classes/Organizations.md +0 -195
  382. package/docs/classes/UserProfile.md +0 -156
  383. package/docs/classes/Workspace.md +0 -165
  384. package/docs/classes/Workspaces.md +0 -189
  385. package/docs/enums/ChatAnswer.md +0 -22
  386. package/docs/enums/ChatsEvent.md +0 -22
  387. package/docs/enums/FilesEvent.md +0 -24
  388. package/docs/enums/GroupEvent.md +0 -29
  389. package/docs/enums/OrganizationsEvent.md +0 -31
  390. package/docs/enums/UserEvent.md +0 -15
  391. package/docs/enums/WorkspaceEvent.md +0 -17
  392. package/docs/enums/WorkspacesEvent.md +0 -24
  393. package/docs/interfaces/Disposable.md +0 -25
  394. package/docs/interfaces/Event.md +0 -58
  395. package/docs/interfaces/EventSubscriber.md +0 -41
  396. package/docs/interfaces/Input.md +0 -35
  397. package/docs/modules.md +0 -205
  398. package/jest.config.ts +0 -199
  399. package/jest.setup.ts +0 -2
  400. package/scripts/docs/index.js +0 -15
  401. package/src/storages/chat.ts +0 -21
  402. package/src/storages/chats.ts +0 -17
  403. package/src/storages/file.impl.ts +0 -69
  404. package/src/storages/file.ts +0 -28
  405. package/src/storages/groups.impl.ts +0 -337
  406. package/src/storages/groups.ts +0 -43
  407. package/src/storages/organization.impl.ts +0 -68
  408. package/src/storages/organization.ts +0 -33
  409. package/src/storages/organizations.ts +0 -56
  410. package/src/storages/userProfile.impl.ts +0 -56
  411. package/src/storages/userProfile.ts +0 -42
  412. package/test/commands.test.ts +0 -24
  413. package/test/data/test_file.pdf +0 -0
  414. package/test/disposable.test.ts +0 -39
  415. package/test/events.test.ts +0 -151
  416. package/test/files.test.ts +0 -52
  417. package/test/index.test.ts +0 -122
  418. package/test/organization.test.ts +0 -57
  419. package/test/registry.test.ts +0 -44
  420. package/test/services.test.ts +0 -56
  421. package/test/setup.ts +0 -54
  422. package/test/unitTest.test.ts +0 -21
  423. package/test/workspace.test.ts +0 -71
  424. package/tsconfig.json +0 -31
@@ -0,0 +1,74 @@
1
+ import {FileProgressDto, MetadataDto} 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 description.
32
+ */
33
+ abstract get description(): string
34
+
35
+ /**
36
+ * File metadata.
37
+ */
38
+ abstract get metadata(): MetadataDto[]
39
+
40
+ /**
41
+ * File date added.
42
+ */
43
+ abstract get createdAt(): number
44
+
45
+ /**
46
+ * File date modified.
47
+ */
48
+ abstract get modifiedAt(): number
49
+
50
+ /**
51
+ * File uploading progress
52
+ */
53
+ abstract get progress(): FileProgressDto
54
+
55
+ /**
56
+ * File uploading status
57
+ */
58
+ abstract get status(): FileStatus
59
+
60
+ /**
61
+ * Get temporary url.
62
+ */
63
+ abstract get url(): string
64
+
65
+ /**
66
+ * Get temporary url.
67
+ */
68
+ abstract get previewUrl(): string
69
+
70
+ /**
71
+ * Update file.
72
+ */
73
+ abstract update(name: string, metadata: MetadataDto[], description?: string): Promise<void>
74
+ }
@@ -1,34 +1,14 @@
1
- import { Context } from "../context"
2
- import { Disposable } from "../disposable"
3
- import { FileDto, FileListResponse } from "../dto/workspacesResponse"
4
- import { RpcService } from "../services/rpcService"
1
+ import { Context } from "../../context"
2
+ import { FileDto, FileListResponse } from "../../dto/workspacesResponse"
3
+ import { RpcService } from "../../services/rpcService"
5
4
  import { FileImpl } from "./file.impl"
6
5
  import { Files, FilesEvent, UploadFile } from "./files"
7
- import { WorkspaceImpl } from "./workspace.impl"
8
- import { ResponseUtils } from "../services/responseUtils"
6
+ import { WorkspaceImpl } from "../workspaces/workspace.impl"
7
+ import { ResponseUtils } from "../../services/responseUtils"
9
8
  import { File } from "./file"
10
9
  import { FilesPage } from "./filesPage"
11
-
12
- export class FilesPageImpl extends FilesPage implements Disposable {
13
- private _isDisposed: boolean = false
14
-
15
- public files: File[] = []
16
- public total: number = 0
17
- public filesPerPage: number = 0
18
- public page: number = 0
19
-
20
- get pages(): number {
21
- return Math.ceil(Math.max(this.total / this.filesPerPage, 1.0))
22
- }
23
-
24
- get isDisposed(): boolean {
25
- return this._isDisposed
26
- }
27
-
28
- dispose(): void {
29
- this._isDisposed = true
30
- }
31
- }
10
+ import { FilesPageImpl } from "./filesPage.impl"
11
+ // import { FormData } from "../../utils/request"
32
12
 
33
13
  export class FilesImpl extends Files {
34
14
  constructor(
@@ -41,12 +21,23 @@ export class FilesImpl extends Files {
41
21
  // Object used as files page data, returned by "query"
42
22
  public filesList?: FilesPage
43
23
 
44
- async upload(file: any): Promise<File> {
45
- return await this.internalUpload(file)
24
+ async upload(files: UploadFile[]): Promise<File[]> {
25
+ const loaded_files = []
26
+ for (const file of files) {
27
+ const loaded_file = await this.internalUpload(file)
28
+ if (loaded_file != undefined){
29
+ loaded_files.push(loaded_file)
30
+ }
31
+ }
32
+ return loaded_files
33
+ }
34
+
35
+ async get(fileId: string): Promise<File>{
36
+ return await this.internalGetFile(fileId)
46
37
  }
47
38
 
48
- async delete(id: string): Promise<void> {
49
- return await this.internalDeleteFile(id)
39
+ async delete(ids: string[]): Promise<void> {
40
+ await this.internalDeleteFiles(ids)
50
41
  }
51
42
 
52
43
  async query(query: string, page: number, limit: number): Promise<FilesPage> {
@@ -57,43 +48,78 @@ export class FilesImpl extends Files {
57
48
  // INTERNALS
58
49
  //----------------------------------------------------------------------------
59
50
 
60
- /**
61
- * Delete organization.
62
- * @param id
63
- */
64
- async internalDeleteFile(id: string): Promise<void> {
51
+
52
+ async internalGetFile(id: string): Promise<File>{
65
53
  if (id === undefined || id === null) {
66
- throw new Error("File delete, id is undefined or null")
54
+ throw new Error("File get, id is undefined or null")
67
55
  }
68
56
  if (id.length === 0 || id.trim().length === 0) {
69
- throw new Error("File delete, id is empty")
57
+ throw new Error("File get, id is empty")
70
58
  }
71
59
 
72
60
  const response = await this.context
73
61
  .resolve(RpcService)
74
- ?.requestBuilder("/api/v1/Files")
62
+ ?.requestBuilder("api/v1/Files")
75
63
  .searchParam("id", id)
76
- .sendDelete()
64
+ .sendGet()
65
+
77
66
  if (ResponseUtils.isFail(response)) {
78
- await ResponseUtils.throwError(`File ${id} delete, failed`, response)
67
+ await ResponseUtils.throwError(
68
+ `Failed to get file ${id}`,
69
+ response
70
+ )
79
71
  }
80
- const file = <FileImpl>this.filesList!.files.find(f => f.id === id)
81
- const index = this.filesList!.files.indexOf(file)
82
- if (index < 0) {
83
- throw new Error("Organization delete, index is not found")
72
+
73
+ // parse file from the server's response
74
+ const result = (await response!.json() as { file: FileDto }).file as FileDto
75
+
76
+ // create file implementation
77
+ const fileImpl = new FileImpl(this.context)
78
+
79
+ return await fileImpl.initFrom(result)
80
+ }
81
+
82
+ /**
83
+ * Delete file.
84
+ * @param ids array of file ids
85
+ */
86
+ async internalDeleteFiles(ids: string[]): Promise<void> {
87
+ if (ids === undefined || ids === null) {
88
+ throw new Error("File delete, ids array is undefined or null")
89
+ }
90
+ if (ids.length === 0) {
91
+ throw new Error("File delete, array of ids is empty")
84
92
  }
85
93
 
86
- // remove file from collection
87
- this.filesList!.files.splice(index, 1)
94
+ const response = await this.context
95
+ .resolve(RpcService)
96
+ ?.requestBuilder("api/v1/Files")
97
+ .searchParam("fileIds", ids.toString() )
98
+ .sendDelete()
99
+
100
+ if (ResponseUtils.isFail(response)) {
101
+ await ResponseUtils.throwError(`Files ${ids} delete, failed`, response)
102
+ }
88
103
 
89
- // dispatch event, file removed
90
- this.dispatch({
91
- type: FilesEvent.REMOVED,
92
- data: file
93
- })
104
+ for (const id of ids) {
105
+ const file = <FileImpl>this.filesList!.files.find(f => f.id === id)
106
+ const index = this.filesList!.files.indexOf(file)
107
+ if (index < 0) {
108
+ throw new Error("File delete, index is not found")
109
+ }
110
+
111
+ // remove file from collection
112
+ this.filesList!.files.splice(index, 1)
113
+
114
+ // dispatch event, file removed
115
+ this.dispatch({
116
+ type: FilesEvent.REMOVED,
117
+ data: file
118
+ })
94
119
 
95
- // dispose file
96
- file.dispose()
120
+ // dispose file
121
+ file.dispose()
122
+ }
97
123
  }
98
124
 
99
125
  async internalQuery(
@@ -122,7 +148,6 @@ export class FilesImpl extends Files {
122
148
  const response = await this.context
123
149
  .resolve(RpcService)
124
150
  ?.requestBuilder("api/v1/Files/list")
125
-
126
151
  .searchParam("workspaceId", this.workspace.id)
127
152
  .searchParam("organizationId", this.workspace.organization.id)
128
153
  .searchParam("query", query)
@@ -151,16 +176,10 @@ export class FilesImpl extends Files {
151
176
  for (const fl of files.files) {
152
177
 
153
178
  // create file implementation
154
- const file = new FileImpl(this.context).initFrom(fl)
179
+ const file = await new FileImpl(this.context).initFrom(fl)
155
180
 
156
181
  // add file to the collection
157
182
  filesList.files.push(file)
158
-
159
- // dispatch event, file added
160
- this.dispatch({
161
- type: FilesEvent.ADDED,
162
- data: file
163
- })
164
183
  }
165
184
 
166
185
  // set files list
@@ -169,7 +188,7 @@ export class FilesImpl extends Files {
169
188
  return filesList
170
189
  }
171
190
 
172
- async internalUpload(file: UploadFile): Promise<File> {
191
+ async internalUpload(file: UploadFile): Promise<File | undefined> {
173
192
  // check file
174
193
  if (file === undefined || file === null) {
175
194
  throw new Error("File upload, file is undefined or null")
@@ -190,17 +209,20 @@ export class FilesImpl extends Files {
190
209
 
191
210
  // check response status
192
211
  if (ResponseUtils.isFail(response)) {
212
+ if (await ResponseUtils.isLimitReached()){
213
+ return undefined
214
+ }
215
+
193
216
  await ResponseUtils.throwError(`File upload ${file.name}`, response)
194
217
  }
195
218
 
196
219
  // parse file from the server's response
197
- const result = (await response!.json()).file as FileDto
220
+ const result = (await response!.json() as { file: FileDto }).file as FileDto
198
221
 
199
222
  // create file implementation
200
- const fileImpl = new FileImpl(this.context).initFrom(result)
223
+ const fileImpl = new FileImpl(this.context)
201
224
 
202
- // TODO: why is this here?
203
- this.filesList?.files.push(fileImpl)
225
+ await fileImpl.initFrom(result)
204
226
 
205
227
  // dispatch event, file added
206
228
  this.dispatch({
@@ -1,4 +1,4 @@
1
- import { EventDispatcher } from "../events"
1
+ import { EventDispatcher } from "../../events"
2
2
  import { File, FileId } from "./file"
3
3
  import { FilesPage } from "./filesPage"
4
4
 
@@ -7,7 +7,8 @@ import { FilesPage } from "./filesPage"
7
7
  */
8
8
  export enum FilesEvent {
9
9
  ADDED = "added",
10
- REMOVED = "removed"
10
+ REMOVED = "removed",
11
+ UPDATED = "updated"
11
12
  }
12
13
 
13
14
  /**
@@ -20,15 +21,21 @@ export type UploadFile = globalThis.File
20
21
  */
21
22
  export abstract class Files extends EventDispatcher<FilesEvent, File> {
22
23
  /**
23
- * Get file by id.
24
+ * Upload file.
24
25
  */
25
- abstract upload(file: UploadFile): Promise<File>
26
+ abstract upload(files: UploadFile[]): Promise<File[]>
26
27
 
27
28
  /**
28
- * Delete file.
29
- * @param id
29
+ * Get file by ID
30
+ * @param fileId
30
31
  */
31
- abstract delete(id: FileId): Promise<void>
32
+ abstract get(fileId: FileId): Promise<File>
33
+
34
+ /**
35
+ * Delete files.
36
+ * @param ids
37
+ */
38
+ abstract delete(ids: FileId[]): Promise<void>
32
39
 
33
40
  /**
34
41
  * Query files.
@@ -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
+ }
@@ -24,4 +24,10 @@ export abstract class FilesPage {
24
24
  * Get current page.
25
25
  */
26
26
  abstract get page(): number
27
+
28
+ /**
29
+ * Equals.
30
+ * @param other
31
+ */
32
+ abstract equals(other?: FilesPage | null): boolean
27
33
  }
@@ -0,0 +1,276 @@
1
+ import { Group, GroupEvent, GroupId } from "./group"
2
+ import { Disposable } from "../../disposable"
3
+ import {
4
+ AccessGroupDto,
5
+ AccessGroupResponse
6
+ } from "../../dto/accessGroupResponse"
7
+ import { UserDto } from "../../dto/userInfoResponse"
8
+ import { Workspace } from "../workspaces/workspace"
9
+ import { Context } from "../../context"
10
+ import { Organization } from "../organizations/organization"
11
+ import { RpcService } from "../../services/rpcService"
12
+ import { ResponseUtils } from "../../services/responseUtils"
13
+ import { WorkspacesResponse } from "../../dto/workspacesResponse"
14
+ import { WorkspaceId } from "../workspaces/workspaces"
15
+ import { UserId } from "../user/userProfile"
16
+
17
+ export class GroupImpl extends Group implements Disposable {
18
+ private _isDisposed: boolean = false
19
+ private _content?: AccessGroupDto
20
+ private _members?: UserDto[]
21
+ private _workspaces: Workspace[] = []
22
+ private _id?: GroupId
23
+
24
+ constructor(
25
+ private readonly context: Context,
26
+ public readonly organization: Organization
27
+ ) {
28
+ super()
29
+ }
30
+
31
+ async initFrom(id: GroupId): Promise<Group> {
32
+ // set id
33
+ this._id = id
34
+
35
+ // reload group and workspaces
36
+ const groupPromise = this.reloadGroup(id)
37
+ const workspacePromise = this.reloadWorkspaces(id)
38
+
39
+ // wait for all promises
40
+ await Promise.all([groupPromise, workspacePromise])
41
+
42
+ return this
43
+ }
44
+
45
+ async reloadGroup(id: GroupId): Promise<void> {
46
+ // fetch group
47
+ const response = await this.context.resolve(RpcService)
48
+ ?.requestBuilder("api/v1/AccessGroups")
49
+ .searchParam("groupId", id)
50
+ .sendGet()
51
+
52
+ // check response status
53
+ if (ResponseUtils.isFail(response)) {
54
+ await ResponseUtils.throwError(`Failed to get group: ${id}, organization: ${this.organization.id}`, response)
55
+ }
56
+
57
+ // parse group from the server's response
58
+ const group = (await response!.json()) as AccessGroupResponse
59
+ // init group
60
+ this._content = group.group
61
+ this._members = group.members
62
+ }
63
+
64
+ async reloadWorkspaces(id: GroupId): Promise<void> {
65
+ const groupWorkspaces = await this.loadWorkspaces(id)
66
+ this._workspaces.length = 0
67
+ this._workspaces.push(...groupWorkspaces)
68
+ }
69
+
70
+ async loadWorkspaces(groupId: GroupId): Promise<Workspace[]> {
71
+ // fetch workspaces
72
+ const response = await this.context.resolve(RpcService)
73
+ ?.requestBuilder("api/v1/AccessGroups/workspaces")
74
+ .searchParam("groupId", groupId)
75
+ .sendGet()
76
+
77
+ if (ResponseUtils.isFail(response)) {
78
+ await ResponseUtils.throwError(`Failed to get workspaces for group: ${this.id}, organization: ${this.organization.id}`, response)
79
+ }
80
+
81
+ // parse workspaces from the server's response
82
+ const workspaces = (await response!.json()) as WorkspacesResponse
83
+
84
+ // get workspaces
85
+ const result: Workspace[] = []
86
+ for (const workspaceDto of workspaces.workspaces) {
87
+ result.push(this.organization.workspaces.get(workspaceDto.id))
88
+ }
89
+
90
+ return result
91
+ }
92
+
93
+ get id(): GroupId {
94
+ if (this._id) {
95
+ return this._id
96
+ }
97
+ throw new Error("Access group is not loaded.")
98
+ }
99
+
100
+ get group(): AccessGroupDto {
101
+ if (this._content) {
102
+ return this._content
103
+ }
104
+ throw new Error("Access group is not loaded.")
105
+ }
106
+
107
+ get workspaces(): readonly Workspace[] {
108
+ return this._workspaces
109
+ }
110
+
111
+ get members(): UserDto[] {
112
+ if (this._members) {
113
+ return this._members
114
+ }
115
+ throw new Error("Access group is not loaded.")
116
+ }
117
+
118
+ async setName(name: string): Promise<void> {
119
+ if (name === undefined || name === null) {
120
+ throw new Error("Groups change, name is undefined or null")
121
+ }
122
+ if (name.length === 0 || name.trim().length === 0) {
123
+ throw new Error("Groups change, name is empty")
124
+ }
125
+ // send request to the server
126
+ const response = await this.context
127
+ .resolve(RpcService)
128
+ ?.requestBuilder("api/v1/AccessGroups/name")
129
+ .sendPutJson({
130
+ groupId: this.id,
131
+ name: name
132
+ })
133
+
134
+ // check response status
135
+ if (ResponseUtils.isFail(response)) {
136
+ await ResponseUtils.throwError(`Failed to change group name, group: ${this.id}, organization: ${this.organization.id}`, response)
137
+ }
138
+
139
+ // change name
140
+ if (this._content) {
141
+ this._content.name = name
142
+ }
143
+
144
+ // dispatch event
145
+ this.dispatch({
146
+ type: GroupEvent.UPDATED,
147
+ data: this
148
+ })
149
+ }
150
+
151
+ async setPermits(permits: { isAdmin: boolean }): Promise<void> {
152
+ // send request to the server
153
+ const response = await this.context
154
+ .resolve(RpcService)
155
+ ?.requestBuilder("api/v1/AccessGroups/permits")
156
+ .sendPutJson({
157
+ groupId: this.id,
158
+ permits: permits
159
+ })
160
+
161
+ if (ResponseUtils.isFail(response)) {
162
+ await ResponseUtils.throwError(`Failed to change group permits, group: ${this.id}, organization: ${this.organization.id}`, response)
163
+ }
164
+ }
165
+
166
+ async setWorkspaces(workspaces: string[]): Promise<void> {
167
+ if (workspaces === null || workspaces === undefined) {
168
+ throw new Error("Group add workspaces, workspaces is undefined or null")
169
+ }
170
+
171
+ // send request to the server
172
+ const response = await this.context
173
+ .resolve(RpcService)
174
+ ?.requestBuilder("api/v1/AccessGroups/workspaces")
175
+ .sendPutJson({
176
+ groupId: this.id,
177
+ actualWorkspaceIds: workspaces
178
+ })
179
+
180
+ if (ResponseUtils.isFail(response)) {
181
+ await ResponseUtils.throwError(`Failed to set workspaces for group: ${this.id}, organization: ${this.organization.id}`, response)
182
+ }
183
+
184
+ // reload workspaces
185
+ await this.reloadWorkspaces(this.id)
186
+
187
+ // dispatch event
188
+ this.dispatch({
189
+ type: GroupEvent.UPDATED,
190
+ data: this
191
+ })
192
+ }
193
+
194
+ async removeWorkspaces(workspaces: WorkspaceId[]): Promise<void> {
195
+ if (workspaces === null || workspaces === undefined) {
196
+ throw new Error("Group removeWorkspaces, workspaces is undefined or null")
197
+ }
198
+
199
+ // make set of workspaces
200
+ const groupWorkspaces = new Set(this.workspaces.map(w => w.id))
201
+
202
+ // check argument
203
+ if (!workspaces.every(w => groupWorkspaces.has(w))) {
204
+ const notExistingWorkspaces = workspaces.filter(workspaceId => !groupWorkspaces.has(workspaceId))
205
+ throw new Error(`Group removeWorkspaces, workspaces contains not existing workspaces: ${notExistingWorkspaces}`)
206
+ }
207
+
208
+ // remove workspaces
209
+ for (const id of workspaces) {
210
+ groupWorkspaces.delete(id)
211
+ }
212
+
213
+ // send request to the server
214
+ await this.setWorkspaces(Array.from(groupWorkspaces))
215
+ }
216
+
217
+ async setMembersIds(members: UserId[]) {
218
+ if (members === null || members === undefined) {
219
+ throw new Error("Group setMembersIds, members is undefined or null")
220
+ }
221
+
222
+ // send request to the server
223
+ const response = await this.context
224
+ .resolve(RpcService)
225
+ ?.requestBuilder("api/v1/AccessGroups/members")
226
+ .sendPutJson({
227
+ groupId: this.id,
228
+ memberIds: members
229
+ })
230
+
231
+ if (ResponseUtils.isFail(response)) {
232
+ await ResponseUtils.throwError(`Failed to set members for group: ${this.id}, organization: ${this.organization.id}`, response)
233
+ }
234
+
235
+ // reload group
236
+ await this.reloadGroup(this.id)
237
+
238
+ // dispatch event
239
+ this.dispatch({
240
+ type: GroupEvent.UPDATED,
241
+ data: this
242
+ })
243
+ }
244
+
245
+ async removeMembers(members: UserId[]): Promise<void> {
246
+ // check members
247
+ if (members === null || members === undefined) {
248
+ throw new Error("Group removeMembers, members is undefined or null")
249
+ }
250
+
251
+ // make set of members
252
+ const groupMembers = new Set(this.members.map(m => m.id))
253
+
254
+ // check argument
255
+ if (!members.every(m => groupMembers.has(m))) {
256
+ const notExistingMembers = members.filter(memberId => !groupMembers.has(memberId))
257
+ throw new Error(`Group removeMembers, members contains not existing members: ${notExistingMembers}`)
258
+ }
259
+
260
+ // remove members
261
+ for (const id of members) {
262
+ groupMembers.delete(id)
263
+ }
264
+
265
+ // send request to the server
266
+ await this.setMembersIds(Array.from(groupMembers))
267
+ }
268
+
269
+ get isDisposed(): boolean {
270
+ return this._isDisposed
271
+ }
272
+
273
+ dispose(): void {
274
+ this._isDisposed = true
275
+ }
276
+ }