@neuralinnovations/dataisland-sdk 0.0.1-dev5 → 0.0.1-dev51

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 (372) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +283 -37
  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 +33 -0
  25. package/dist/src/credentials.d.ts.map +1 -0
  26. package/dist/src/credentials.js +87 -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 +30 -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/badRequestResponse.d.ts +6 -0
  45. package/dist/src/dto/badRequestResponse.d.ts.map +1 -0
  46. package/dist/src/dto/badRequestResponse.js +3 -0
  47. package/dist/src/dto/badRequestResponse.js.map +1 -0
  48. package/dist/src/dto/chatResponse.d.ts +83 -0
  49. package/dist/src/dto/chatResponse.d.ts.map +1 -0
  50. package/dist/src/dto/chatResponse.js +45 -0
  51. package/dist/src/dto/chatResponse.js.map +1 -0
  52. package/dist/src/dto/limitsResponse.d.ts +29 -0
  53. package/dist/src/dto/limitsResponse.d.ts.map +1 -0
  54. package/dist/src/dto/limitsResponse.js +13 -0
  55. package/dist/src/dto/limitsResponse.js.map +1 -0
  56. package/dist/src/dto/statisticsResponse.d.ts +11 -0
  57. package/dist/src/dto/statisticsResponse.d.ts.map +1 -0
  58. package/dist/src/dto/statisticsResponse.js +3 -0
  59. package/dist/src/dto/statisticsResponse.js.map +1 -0
  60. package/dist/src/dto/userInfoResponse.d.ts +88 -0
  61. package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
  62. package/dist/src/dto/userInfoResponse.js +3 -0
  63. package/dist/src/dto/userInfoResponse.js.map +1 -0
  64. package/dist/src/dto/workspacesResponse.d.ts +45 -0
  65. package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
  66. package/dist/src/dto/workspacesResponse.js +3 -0
  67. package/dist/src/dto/workspacesResponse.js.map +1 -0
  68. package/dist/src/events.d.ts +17 -0
  69. package/dist/src/events.d.ts.map +1 -0
  70. package/dist/src/events.js +52 -0
  71. package/dist/src/events.js.map +1 -0
  72. package/dist/src/index.d.ts +72 -0
  73. package/dist/src/index.d.ts.map +1 -0
  74. package/dist/src/index.js +121 -0
  75. package/dist/src/index.js.map +1 -0
  76. package/dist/src/internal/app.impl.d.ts +30 -0
  77. package/dist/src/internal/app.impl.d.ts.map +1 -0
  78. package/dist/src/internal/app.impl.js +180 -0
  79. package/dist/src/internal/app.impl.js.map +1 -0
  80. package/dist/src/internal/appBuilder.impl.d.ts +27 -0
  81. package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
  82. package/dist/src/internal/appBuilder.impl.js +71 -0
  83. package/dist/src/internal/appBuilder.impl.js.map +1 -0
  84. package/dist/src/internal/createApp.impl.d.ts +4 -0
  85. package/dist/src/internal/createApp.impl.d.ts.map +1 -0
  86. package/dist/src/internal/createApp.impl.js +11 -0
  87. package/dist/src/internal/createApp.impl.js.map +1 -0
  88. package/dist/src/internal/registry.d.ts +66 -0
  89. package/dist/src/internal/registry.d.ts.map +1 -0
  90. package/dist/src/internal/registry.js +114 -0
  91. package/dist/src/internal/registry.js.map +1 -0
  92. package/dist/src/middleware.d.ts +6 -0
  93. package/dist/src/middleware.d.ts.map +1 -0
  94. package/dist/src/middleware.js +3 -0
  95. package/dist/src/middleware.js.map +1 -0
  96. package/dist/src/services/acquiringService.d.ts +9 -0
  97. package/dist/src/services/acquiringService.d.ts.map +1 -0
  98. package/dist/src/services/acquiringService.js +19 -0
  99. package/dist/src/services/acquiringService.js.map +1 -0
  100. package/dist/src/services/anonymousService.d.ts +8 -0
  101. package/dist/src/services/anonymousService.d.ts.map +1 -0
  102. package/dist/src/services/anonymousService.js +41 -0
  103. package/dist/src/services/anonymousService.js.map +1 -0
  104. package/dist/src/services/commandService.d.ts +18 -0
  105. package/dist/src/services/commandService.d.ts.map +1 -0
  106. package/dist/src/services/commandService.js +40 -0
  107. package/dist/src/services/commandService.js.map +1 -0
  108. package/dist/src/services/cookieService.d.ts +7 -0
  109. package/dist/src/services/cookieService.d.ts.map +1 -0
  110. package/dist/src/services/cookieService.js +18 -0
  111. package/dist/src/services/cookieService.js.map +1 -0
  112. package/dist/src/services/credentialService.d.ts +9 -0
  113. package/dist/src/services/credentialService.d.ts.map +1 -0
  114. package/dist/src/services/credentialService.js +26 -0
  115. package/dist/src/services/credentialService.js.map +1 -0
  116. package/dist/src/services/httpMethod.d.ts +2 -0
  117. package/dist/src/services/httpMethod.d.ts.map +1 -0
  118. package/dist/src/services/httpMethod.js +3 -0
  119. package/dist/src/services/httpMethod.js.map +1 -0
  120. package/dist/src/services/middlewareService.d.ts +10 -0
  121. package/dist/src/services/middlewareService.d.ts.map +1 -0
  122. package/dist/src/services/middlewareService.js +34 -0
  123. package/dist/src/services/middlewareService.js.map +1 -0
  124. package/dist/src/services/organizationService.d.ts +10 -0
  125. package/dist/src/services/organizationService.d.ts.map +1 -0
  126. package/dist/src/services/organizationService.js +19 -0
  127. package/dist/src/services/organizationService.js.map +1 -0
  128. package/dist/src/services/requestBuilder.d.ts +17 -0
  129. package/dist/src/services/requestBuilder.d.ts.map +1 -0
  130. package/dist/src/services/requestBuilder.js +105 -0
  131. package/dist/src/services/requestBuilder.js.map +1 -0
  132. package/dist/src/services/responseUtils.d.ts +8 -0
  133. package/dist/src/services/responseUtils.d.ts.map +1 -0
  134. package/dist/src/services/responseUtils.js +40 -0
  135. package/dist/src/services/responseUtils.js.map +1 -0
  136. package/dist/src/services/rpcService.d.ts +77 -0
  137. package/dist/src/services/rpcService.d.ts.map +1 -0
  138. package/dist/src/services/rpcService.js +125 -0
  139. package/dist/src/services/rpcService.js.map +1 -0
  140. package/dist/src/services/service.d.ts +21 -0
  141. package/dist/src/services/service.d.ts.map +1 -0
  142. package/dist/src/services/service.js +41 -0
  143. package/dist/src/services/service.js.map +1 -0
  144. package/dist/src/services/userProfileService.d.ts +10 -0
  145. package/dist/src/services/userProfileService.d.ts.map +1 -0
  146. package/dist/src/services/userProfileService.js +59 -0
  147. package/dist/src/services/userProfileService.js.map +1 -0
  148. package/dist/src/storages/acquirings/acquiring.d.ts +41 -0
  149. package/dist/src/storages/acquirings/acquiring.d.ts.map +1 -0
  150. package/dist/src/storages/acquirings/acquiring.impl.d.ts +20 -0
  151. package/dist/src/storages/acquirings/acquiring.impl.d.ts.map +1 -0
  152. package/dist/src/storages/acquirings/acquiring.impl.js +92 -0
  153. package/dist/src/storages/acquirings/acquiring.impl.js.map +1 -0
  154. package/dist/src/storages/acquirings/acquiring.js +10 -0
  155. package/dist/src/storages/acquirings/acquiring.js.map +1 -0
  156. package/dist/src/storages/chats/answer.d.ts +41 -0
  157. package/dist/src/storages/chats/answer.d.ts.map +1 -0
  158. package/dist/src/storages/chats/answer.impl.d.ts +29 -0
  159. package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
  160. package/dist/src/storages/chats/answer.impl.js +116 -0
  161. package/dist/src/storages/chats/answer.impl.js.map +1 -0
  162. package/dist/src/storages/chats/answer.js +15 -0
  163. package/dist/src/storages/chats/answer.js.map +1 -0
  164. package/dist/src/storages/chats/chat.d.ts +43 -0
  165. package/dist/src/storages/chats/chat.d.ts.map +1 -0
  166. package/dist/src/storages/chats/chat.impl.d.ts +25 -0
  167. package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
  168. package/dist/src/storages/chats/chat.impl.js +85 -0
  169. package/dist/src/storages/chats/chat.impl.js.map +1 -0
  170. package/dist/src/storages/chats/chat.js +12 -0
  171. package/dist/src/storages/chats/chat.js.map +1 -0
  172. package/dist/src/storages/chats/chats.d.ts +45 -0
  173. package/dist/src/storages/chats/chats.d.ts.map +1 -0
  174. package/dist/src/storages/chats/chats.impl.d.ts +19 -0
  175. package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
  176. package/dist/src/storages/chats/chats.impl.js +147 -0
  177. package/dist/src/storages/chats/chats.impl.js.map +1 -0
  178. package/dist/src/storages/chats/chats.js +16 -0
  179. package/dist/src/storages/chats/chats.js.map +1 -0
  180. package/dist/src/storages/files/file.d.ts +47 -0
  181. package/dist/src/storages/files/file.d.ts.map +1 -0
  182. package/dist/src/storages/files/file.impl.d.ts +25 -0
  183. package/dist/src/storages/files/file.impl.d.ts.map +1 -0
  184. package/dist/src/storages/files/file.impl.js +93 -0
  185. package/dist/src/storages/files/file.impl.js.map +1 -0
  186. package/dist/src/storages/files/file.js +17 -0
  187. package/dist/src/storages/files/file.js.map +1 -0
  188. package/dist/src/storages/files/files.d.ts +39 -0
  189. package/dist/src/storages/files/files.d.ts.map +1 -0
  190. package/dist/src/storages/files/files.impl.d.ts +24 -0
  191. package/dist/src/storages/files/files.impl.d.ts.map +1 -0
  192. package/dist/src/storages/files/files.impl.js +168 -0
  193. package/dist/src/storages/files/files.impl.js.map +1 -0
  194. package/dist/src/storages/files/files.js +20 -0
  195. package/dist/src/storages/files/files.js.map +1 -0
  196. package/dist/src/storages/files/filesPage.d.ts +28 -0
  197. package/dist/src/storages/files/filesPage.d.ts.map +1 -0
  198. package/dist/src/storages/files/filesPage.impl.d.ts +15 -0
  199. package/dist/src/storages/files/filesPage.impl.d.ts.map +1 -0
  200. package/dist/src/storages/files/filesPage.impl.js +38 -0
  201. package/dist/src/storages/files/filesPage.impl.js.map +1 -0
  202. package/dist/src/storages/files/filesPage.js +10 -0
  203. package/dist/src/storages/files/filesPage.js.map +1 -0
  204. package/dist/src/storages/groups/group.d.ts +63 -0
  205. package/dist/src/storages/groups/group.d.ts.map +1 -0
  206. package/dist/src/storages/groups/group.impl.d.ts +38 -0
  207. package/dist/src/storages/groups/group.impl.d.ts.map +1 -0
  208. package/dist/src/storages/groups/group.impl.js +210 -0
  209. package/dist/src/storages/groups/group.impl.js.map +1 -0
  210. package/dist/src/storages/groups/group.js +15 -0
  211. package/dist/src/storages/groups/group.js.map +1 -0
  212. package/dist/src/storages/groups/groups.d.ts +39 -0
  213. package/dist/src/storages/groups/groups.d.ts.map +1 -0
  214. package/dist/src/storages/groups/groups.impl.d.ts +30 -0
  215. package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
  216. package/dist/src/storages/groups/groups.impl.js +132 -0
  217. package/dist/src/storages/groups/groups.impl.js.map +1 -0
  218. package/dist/src/storages/groups/groups.js +20 -0
  219. package/dist/src/storages/groups/groups.js.map +1 -0
  220. package/dist/src/storages/organizations/organization.d.ts +96 -0
  221. package/dist/src/storages/organizations/organization.d.ts.map +1 -0
  222. package/dist/src/storages/organizations/organization.impl.d.ts +42 -0
  223. package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
  224. package/dist/src/storages/organizations/organization.impl.js +249 -0
  225. package/dist/src/storages/organizations/organization.impl.js.map +1 -0
  226. package/dist/src/storages/organizations/organization.js +18 -0
  227. package/dist/src/storages/organizations/organization.js.map +1 -0
  228. package/dist/src/storages/organizations/organizations.d.ts +46 -0
  229. package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
  230. package/dist/src/storages/organizations/organizations.impl.d.ts +38 -0
  231. package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
  232. package/dist/src/storages/organizations/organizations.impl.js +158 -0
  233. package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
  234. package/dist/src/storages/organizations/organizations.js +20 -0
  235. package/dist/src/storages/organizations/organizations.js.map +1 -0
  236. package/dist/src/storages/user/userProfile.d.ts +55 -0
  237. package/dist/src/storages/user/userProfile.d.ts.map +1 -0
  238. package/dist/src/storages/user/userProfile.impl.d.ts +21 -0
  239. package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
  240. package/dist/src/storages/user/userProfile.impl.js +113 -0
  241. package/dist/src/storages/user/userProfile.impl.js.map +1 -0
  242. package/dist/src/storages/user/userProfile.js +12 -0
  243. package/dist/src/storages/user/userProfile.js.map +1 -0
  244. package/dist/src/storages/workspaces/workspace.d.ts +44 -0
  245. package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
  246. package/dist/src/storages/workspaces/workspace.impl.d.ts +23 -0
  247. package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
  248. package/dist/src/storages/workspaces/workspace.impl.js +98 -0
  249. package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
  250. package/dist/src/storages/workspaces/workspace.js +18 -0
  251. package/dist/src/storages/workspaces/workspace.js.map +1 -0
  252. package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
  253. package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
  254. package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
  255. package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
  256. package/dist/src/storages/workspaces/workspaces.impl.js +152 -0
  257. package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
  258. package/dist/src/storages/workspaces/workspaces.js +19 -0
  259. package/dist/src/storages/workspaces/workspaces.js.map +1 -0
  260. package/dist/src/unitTest.d.ts +12 -0
  261. package/dist/src/unitTest.d.ts.map +1 -0
  262. package/dist/src/unitTest.js +44 -0
  263. package/dist/src/unitTest.js.map +1 -0
  264. package/dist/src/utils/browserUtils.d.ts +4 -0
  265. package/dist/src/utils/browserUtils.d.ts.map +1 -0
  266. package/dist/src/utils/browserUtils.js +64 -0
  267. package/dist/src/utils/browserUtils.js.map +1 -0
  268. package/dist/src/utils/request.d.ts +6 -0
  269. package/dist/src/utils/request.d.ts.map +1 -0
  270. package/dist/src/utils/request.js +3 -0
  271. package/dist/src/utils/request.js.map +1 -0
  272. package/dist/src/utils/utils.d.ts +3 -0
  273. package/dist/src/utils/utils.d.ts.map +1 -0
  274. package/dist/src/utils/utils.js +13 -0
  275. package/dist/src/utils/utils.js.map +1 -0
  276. package/index.d.ts +1 -0
  277. package/index.js +1 -0
  278. package/package.json +46 -5
  279. package/src/commands/deleteUserFullCommandHandler.ts +19 -0
  280. package/src/commands/startCommandHandler.ts +19 -5
  281. package/src/context.ts +4 -2
  282. package/src/credentials.ts +22 -0
  283. package/src/dataIslandApp.ts +8 -2
  284. package/src/disposable.ts +18 -5
  285. package/src/dto/accessGroupResponse.ts +19 -16
  286. package/src/dto/acquiringResponse.ts +54 -0
  287. package/src/dto/badRequestResponse.ts +6 -0
  288. package/src/dto/chatResponse.ts +59 -54
  289. package/src/dto/limitsResponse.ts +32 -0
  290. package/src/dto/statisticsResponse.ts +12 -0
  291. package/src/dto/userInfoResponse.ts +59 -2
  292. package/src/dto/workspacesResponse.ts +5 -3
  293. package/src/index.ts +56 -16
  294. package/src/internal/app.impl.ts +54 -12
  295. package/src/internal/registry.ts +54 -6
  296. package/src/middleware.ts +2 -0
  297. package/src/services/acquiringService.ts +21 -0
  298. package/src/services/anonymousService.ts +43 -0
  299. package/src/services/commandService.ts +4 -2
  300. package/src/services/cookieService.ts +16 -0
  301. package/src/services/httpMethod.ts +1 -0
  302. package/src/services/middlewareService.ts +1 -0
  303. package/src/services/organizationService.ts +2 -2
  304. package/src/services/requestBuilder.ts +10 -8
  305. package/src/services/responseUtils.ts +12 -0
  306. package/src/services/rpcService.ts +1 -0
  307. package/src/services/userProfileService.ts +36 -4
  308. package/src/storages/acquirings/acquiring.impl.ts +132 -0
  309. package/src/storages/acquirings/acquiring.ts +54 -0
  310. package/src/storages/chats/answer.impl.ts +160 -0
  311. package/src/storages/chats/answer.ts +53 -0
  312. package/src/storages/chats/chat.impl.ts +107 -0
  313. package/src/storages/chats/chat.ts +55 -0
  314. package/src/storages/chats/chats.impl.ts +204 -0
  315. package/src/storages/chats/chats.ts +53 -0
  316. package/src/storages/files/file.impl.ts +111 -0
  317. package/src/storages/files/file.ts +58 -0
  318. package/src/storages/{files.impl.ts → files/files.impl.ts} +67 -46
  319. package/src/storages/{files.ts → files/files.ts} +14 -7
  320. package/src/storages/files/filesPage.impl.ts +37 -0
  321. package/src/storages/{filesPage.ts → files/filesPage.ts} +6 -0
  322. package/src/storages/groups/group.impl.ts +276 -0
  323. package/src/storages/groups/group.ts +73 -0
  324. package/src/storages/groups/groups.impl.ts +175 -0
  325. package/src/storages/groups/groups.ts +45 -0
  326. package/src/storages/organizations/organization.impl.ts +378 -0
  327. package/src/storages/organizations/organization.ts +120 -0
  328. package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +31 -13
  329. package/src/storages/{organizations.ts → organizations/organizations.ts} +1 -1
  330. package/src/storages/user/userProfile.impl.ts +135 -0
  331. package/src/storages/user/userProfile.ts +70 -0
  332. package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +27 -7
  333. package/src/storages/{workspace.ts → workspaces/workspace.ts} +8 -3
  334. package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +27 -32
  335. package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
  336. package/src/unitTest.ts +3 -3
  337. package/src/utils/browserUtils.ts +68 -0
  338. package/src/utils/request.ts +6 -0
  339. package/src/utils/utils.ts +8 -0
  340. package/.browserslistrc +0 -5
  341. package/.editorconfig +0 -25
  342. package/.eslintrc.json +0 -44
  343. package/.github/workflows/publish-npm.yml +0 -28
  344. package/.prettierignore +0 -1
  345. package/.prettierrc +0 -11
  346. package/.yarnrc +0 -2
  347. package/babel.config.js +0 -6
  348. package/jest.config.ts +0 -199
  349. package/jest.setup.ts +0 -2
  350. package/src/storages/chat.ts +0 -21
  351. package/src/storages/chats.ts +0 -17
  352. package/src/storages/file.impl.ts +0 -69
  353. package/src/storages/file.ts +0 -28
  354. package/src/storages/groups.impl.ts +0 -337
  355. package/src/storages/groups.ts +0 -43
  356. package/src/storages/organization.impl.ts +0 -68
  357. package/src/storages/organization.ts +0 -33
  358. package/src/storages/userProfile.impl.ts +0 -56
  359. package/src/storages/userProfile.ts +0 -42
  360. package/test/commands.test.ts +0 -24
  361. package/test/data/test_file.pdf +0 -0
  362. package/test/disposable.test.ts +0 -39
  363. package/test/events.test.ts +0 -151
  364. package/test/files.test.ts +0 -52
  365. package/test/index.test.ts +0 -122
  366. package/test/organization.test.ts +0 -57
  367. package/test/registry.test.ts +0 -44
  368. package/test/services.test.ts +0 -56
  369. package/test/setup.ts +0 -54
  370. package/test/unitTest.test.ts +0 -21
  371. package/test/workspace.test.ts +0 -71
  372. package/tsconfig.json +0 -31
@@ -0,0 +1,378 @@
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 { 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 { InviteCodeResponse } from "../../dto/accessGroupResponse"
30
+
31
+ export class OrganizationImpl extends Organization implements Disposable {
32
+ private _isDisposed: boolean = false
33
+ private _isAdmin: boolean = false
34
+ private _content?: OrganizationDto
35
+ private readonly _workspaces: WorkspacesImpl
36
+ private readonly _accessGroups: GroupsImpl
37
+ private readonly _chats: ChatsImpl
38
+
39
+ constructor(private readonly context: Context) {
40
+ super()
41
+ this._workspaces = new WorkspacesImpl(this, this.context)
42
+ this._accessGroups = new GroupsImpl(this, this.context)
43
+ this._chats = new ChatsImpl(this, this.context)
44
+ }
45
+
46
+ public async initFrom(
47
+ content: OrganizationDto,
48
+ isAdmin: boolean
49
+ ): Promise<OrganizationImpl> {
50
+ this._content = content
51
+ this._isAdmin = isAdmin
52
+
53
+ // init workspaces by organization id
54
+ const promises = [
55
+ this._workspaces.initFrom(content.id),
56
+ this._chats.initFrom(content.id),
57
+ this._accessGroups.initialize()
58
+ ]
59
+
60
+ await Promise.all(promises)
61
+
62
+ return this
63
+ }
64
+
65
+ get isAdmin(): boolean {
66
+ return this._isAdmin
67
+ }
68
+
69
+ get isDisposed(): boolean {
70
+ return this._isDisposed
71
+ }
72
+
73
+ dispose(): void {
74
+ this._isDisposed = true
75
+ }
76
+
77
+ get id(): OrganizationId {
78
+ return <OrganizationId>this._content?.id
79
+ }
80
+
81
+ get name(): string {
82
+ return <OrganizationId>this._content?.profile.name
83
+ }
84
+
85
+ get description(): string {
86
+ return <OrganizationId>this._content?.profile.description
87
+ }
88
+
89
+ get workspaces(): Workspaces {
90
+ return this._workspaces
91
+ }
92
+
93
+ get accessGroups(): Groups {
94
+ return this._accessGroups
95
+ }
96
+
97
+ get chats(): Chats {
98
+ return this._chats
99
+ }
100
+
101
+ async members(): Promise<UserDto[]> {
102
+ // send request to the server
103
+ const response = await this.context
104
+ .resolve(RpcService)
105
+ ?.requestBuilder("api/v1/Organizations/members")
106
+ .searchParam("id", this.id)
107
+ .sendGet()
108
+
109
+ // check response status
110
+ if (ResponseUtils.isFail(response)) {
111
+ await ResponseUtils.throwError(
112
+ `Failed during fetch of organization members ${this.id}`,
113
+ response
114
+ )
115
+ }
116
+
117
+ return (await response!.json() as {
118
+ members: UserDto[]
119
+ }).members as UserDto[]
120
+ }
121
+
122
+ async change(name: string, description: string): Promise<void> {
123
+ if (!this._content) {
124
+ throw new Error("Organization is not loaded.")
125
+ }
126
+
127
+ if (name === this.name && description === this.description) {
128
+ return Promise.resolve()
129
+ }
130
+ if (name === undefined || name === null || name.trim() === "") {
131
+ throw new Error("Name is required. Please provide a valid name.")
132
+ }
133
+ if (
134
+ description === undefined ||
135
+ description === null ||
136
+ description.trim() === ""
137
+ ) {
138
+ throw new Error(
139
+ "Description is required. Please provide a valid description."
140
+ )
141
+ }
142
+
143
+ const response = await this.context
144
+ .resolve(RpcService)
145
+ ?.requestBuilder("api/v1/Organizations")
146
+ .sendPutJson({
147
+ organizationId: this.id,
148
+ profile: {
149
+ name,
150
+ description
151
+ }
152
+ })
153
+
154
+ if (ResponseUtils.isFail(response)) {
155
+ await ResponseUtils.throwError("Failed to change organization", response)
156
+ }
157
+
158
+ if (this._content) {
159
+ this._content.profile.name = name
160
+ this._content.profile.description = description
161
+ }
162
+
163
+ this.dispatch({
164
+ type: OrganizationEvent.CHANGED,
165
+ data: this
166
+ })
167
+ }
168
+
169
+ async statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse> {
170
+ // send request to the server
171
+ const response = await this.context
172
+ .resolve(RpcService)
173
+ ?.requestBuilder("api/v1/Stats/organization")
174
+ .searchParam("organizationId", this.id)
175
+ .searchParam("dateFrom", dateFrom.toString())
176
+ .searchParam("dateTo", dateTo.toString())
177
+ .sendGet()
178
+
179
+ // check response status
180
+ if (ResponseUtils.isFail(response)) {
181
+ await ResponseUtils.throwError(
182
+ `Failed during fetch of organization statistics ${this.id}`,
183
+ response
184
+ )
185
+ }
186
+
187
+ return await response!.json() as StatisticsResponse
188
+ }
189
+
190
+ async membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse> {
191
+ // send request to the server
192
+ const response = await this.context
193
+ .resolve(RpcService)
194
+ ?.requestBuilder("api/v1/Stats/organization/members")
195
+ .searchParam("organizationId", this.id)
196
+ .searchParam("dateFrom", dateFrom.toString())
197
+ .searchParam("dateTo", dateTo.toString())
198
+ .sendGet()
199
+
200
+ // check response status
201
+ if (ResponseUtils.isFail(response)) {
202
+ await ResponseUtils.throwError(
203
+ `Failed during fetch of organization members statistics ${this.id}`,
204
+ response
205
+ )
206
+ }
207
+
208
+ return await response!.json() as UsersStatisticsResponse
209
+ }
210
+
211
+ async userStatistic(userId: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse> {
212
+ // send request to the server
213
+ const response = await this.context
214
+ .resolve(RpcService)
215
+ ?.requestBuilder("api/v1/Stats/user")
216
+ .searchParam("userId", userId)
217
+ .searchParam("organizationId", this.id)
218
+ .searchParam("dateFrom", dateFrom.toString())
219
+ .searchParam("dateTo", dateTo.toString())
220
+ .sendGet()
221
+
222
+ // check response status
223
+ if (ResponseUtils.isFail(response)) {
224
+ await ResponseUtils.throwError(
225
+ `Failed during fetch of user statistics ${this.id}`,
226
+ response
227
+ )
228
+ }
229
+
230
+ return await response!.json() as StatisticsResponse
231
+ }
232
+
233
+ async userLimits(): Promise<CurrentLimitsData> {
234
+ // fetch limits
235
+ const response = await this.context.resolve(RpcService)
236
+ ?.requestBuilder("api/v1/Users/limits")
237
+ .sendGet()
238
+
239
+ // check response status
240
+ if (ResponseUtils.isFail(response)) {
241
+ await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
242
+ }
243
+
244
+ // parse limits from the server's response
245
+ const limits = (await response!.json()) as UserLimitsData
246
+
247
+ const currentLimits = {
248
+ segment: limits.userSegment.key,
249
+ limits: []
250
+ } as CurrentLimitsData
251
+ for (const limit of limits.userLimits) {
252
+ const type = limit.action as LimitActionType
253
+ const currentItem = {
254
+ action: type,
255
+ records: []
256
+ } as CurrentLimitItem
257
+
258
+ if (limit.records.length == 0) continue
259
+
260
+ for (const record of limit.records) {
261
+ const segmentRecord = limits.userSegment.dayItems.find(item => item.daysCount == record.daysCount)
262
+ if (segmentRecord == null) {
263
+ throw new Error(`Invalid response during get limits in organization: ${this.id}. Days count with ${type} not found in segment ${limits.userSegment.key}`)
264
+ }
265
+ const actionRecord = segmentRecord?.actionItems.find(item => item.type == type)
266
+ if (actionRecord == null) {
267
+ throw new Error(`Invalid response during get limits in organization: ${this.id}. Type ${type} not found in segment ${limits.userSegment.key}`)
268
+ }
269
+
270
+ const currentRecord = {} as CurrentLimitRecordData
271
+ currentRecord.daysCount = record.daysCount
272
+ currentRecord.activeTill = record.activeTill
273
+ currentRecord.all = actionRecord?.tokenLimit ?? actionRecord?.countLimit
274
+
275
+ const available = record.tokenLimit ?? record.countLimit
276
+ currentRecord.used = currentRecord.all - available
277
+
278
+ currentItem.records.push(currentRecord)
279
+ }
280
+
281
+ currentLimits.limits.push(currentItem)
282
+ }
283
+
284
+ return currentLimits
285
+ }
286
+
287
+ async organizationLimits(): Promise<SegmentData> {
288
+ // fetch limits
289
+ const response = await this.context.resolve(RpcService)
290
+ ?.requestBuilder("api/v1/Descriptions/limits/organization")
291
+ .searchParam("organizationId", this.id)
292
+ .sendGet()
293
+
294
+ // check response status
295
+ if (ResponseUtils.isFail(response)) {
296
+ await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
297
+ }
298
+
299
+ const json = await response!.json()
300
+
301
+ // parse limits from the server's response
302
+ const limits = (json as OrganizationSegmentData).segment
303
+
304
+ return limits
305
+ }
306
+
307
+ async limitSegments(): Promise<SegmentData[]> {
308
+ // fetch limits
309
+ const response = await this.context.resolve(RpcService)
310
+ ?.requestBuilder("api/v1/Descriptions/limits/segments")
311
+ .sendGet()
312
+
313
+ // check response status
314
+ if (ResponseUtils.isFail(response)) {
315
+ await ResponseUtils.throwError(`Failed to get limits in organization: ${this.id}`, response)
316
+ }
317
+ const json = await response!.json()
318
+
319
+ // parse limits from the server's response
320
+ const limits = (json as SegmentsData).segments
321
+
322
+ return limits
323
+ }
324
+
325
+ async inviteUsers(emails: string[], accessGroups: string[]): Promise<void> {
326
+ const response = await this.context
327
+ .resolve(RpcService)
328
+ ?.requestBuilder("api/v1/Invites")
329
+ .sendPostJson({
330
+ organizationId: this.id,
331
+ emails: emails,
332
+ accessGroupIds: accessGroups
333
+ })
334
+ if (ResponseUtils.isFail(response)) {
335
+ await ResponseUtils.throwError(
336
+ `Invite users failed for organization ${this.id}`,
337
+ response
338
+ )
339
+ }
340
+ }
341
+
342
+ async createInviteCode(accessGroups: string[]): Promise<string> {
343
+ const response = await this.context
344
+ .resolve(RpcService)
345
+ ?.requestBuilder("api/v1/Invites/link")
346
+ .sendPostJson({
347
+ organizationId: this.id,
348
+ accessGroupIds: accessGroups
349
+ })
350
+ if (ResponseUtils.isFail(response)) {
351
+ await ResponseUtils.throwError(
352
+ `Invite code creation failed for organization ${this.id}`,
353
+ response
354
+ )
355
+ }
356
+
357
+ const json = await response!.json()
358
+
359
+ const code = (json as InviteCodeResponse).code
360
+
361
+ return code
362
+ }
363
+
364
+ async validateInviteCode(code: string): Promise<void> {
365
+ const response = await this.context
366
+ .resolve(RpcService)
367
+ ?.requestBuilder("api/v1/Invites/apply")
368
+ .sendPutJson({
369
+ code: code
370
+ })
371
+ if (ResponseUtils.isFail(response)) {
372
+ await ResponseUtils.throwError(
373
+ `Invite code validation failed for organization ${this.id}`,
374
+ response
375
+ )
376
+ }
377
+ }
378
+ }
@@ -0,0 +1,120 @@
1
+ import { 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
+
15
+ /**
16
+ * Organization event.
17
+ */
18
+ export enum OrganizationEvent {
19
+ CHANGED = "changed"
20
+ }
21
+
22
+ /**
23
+ * Organization.
24
+ */
25
+ export abstract class Organization extends EventDispatcher<
26
+ OrganizationEvent,
27
+ Organization
28
+ > {
29
+ /**
30
+ * Organization id.
31
+ */
32
+ abstract get id(): OrganizationId
33
+
34
+ /**
35
+ * Organization name.
36
+ */
37
+ abstract get name(): string
38
+
39
+ /**
40
+ * Organization description.
41
+ */
42
+ abstract get description(): string
43
+
44
+ /**
45
+ * Workspaces.
46
+ */
47
+ abstract get workspaces(): Workspaces
48
+
49
+ /**
50
+ * Chats.
51
+ */
52
+ abstract get chats(): Chats
53
+
54
+ /**
55
+ * Groups.
56
+ */
57
+ abstract get accessGroups(): Groups
58
+
59
+ /**
60
+ * Get organization members
61
+ */
62
+ abstract members(): Promise<UserDto[]>
63
+
64
+ /**
65
+ * Get organization statistics
66
+ * @param dateFrom
67
+ * @param dateTo
68
+ */
69
+ abstract statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse>
70
+
71
+ /**
72
+ * Get organization statistics
73
+ * @param dateFrom
74
+ * @param dateTo
75
+ */
76
+ abstract membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse>
77
+
78
+ /**
79
+ * Get statistics for user
80
+ * @param userid
81
+ * @param dateFrom
82
+ * @param dateTo
83
+ */
84
+ abstract userStatistic(userid: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse>
85
+
86
+ /**
87
+ * Get user limits data
88
+ */
89
+ abstract userLimits(): Promise<CurrentLimitsData>
90
+
91
+ /**
92
+ * Get default organization limits
93
+ */
94
+ abstract organizationLimits(): Promise<SegmentData>
95
+
96
+ /**
97
+ * Get all available segments data
98
+ */
99
+ abstract limitSegments(): Promise<SegmentData[]>
100
+
101
+ /**
102
+ * Change organization name and description.
103
+ */
104
+ abstract change(name: string, description: string): Promise<void>
105
+
106
+ /**
107
+ * Invite users with given emails to organization
108
+ */
109
+ abstract inviteUsers(emails: string[], accessGroups: GroupId[]): Promise<void>
110
+
111
+ /**
112
+ * Create invite code for users outside organization
113
+ */
114
+ abstract createInviteCode(accessGroups: GroupId[]): Promise<string>
115
+
116
+ /**
117
+ * Validate invite code for user
118
+ */
119
+ abstract validateInviteCode(code: string): Promise<void>
120
+ }
@@ -4,11 +4,11 @@ import {
4
4
  Organizations
5
5
  } from "./organizations"
6
6
  import { OrganizationImpl } from "./organization.impl"
7
- import { RpcService } from "../services/rpcService"
8
- import { OrganizationDto, UserSettings } from "../dto/userInfoResponse"
9
- import { Context } from "../context"
7
+ import { RpcService } from "../../services/rpcService"
8
+ import { OrganizationDto, UserSettings } from "../../dto/userInfoResponse"
9
+ import { Context } from "../../context"
10
10
  import { Organization } from "./organization"
11
- import { ResponseUtils } from "../services/responseUtils"
11
+ import { ResponseUtils } from "../../services/responseUtils"
12
12
 
13
13
  export class OrganizationsImpl extends Organizations {
14
14
  constructor(public readonly context: Context) {
@@ -79,17 +79,22 @@ export class OrganizationsImpl extends Organizations {
79
79
  if (!this.contains(id)) {
80
80
  throw new Error(`Organization delete, id: ${id} is not found`)
81
81
  }
82
+ // send request to the server
82
83
  const response = await this.context
83
84
  .resolve(RpcService)
84
85
  ?.requestBuilder("/api/v1/Organizations")
85
86
  .searchParam("id", id)
86
87
  .sendDelete()
88
+
89
+ // check response status
87
90
  if (ResponseUtils.isFail(response)) {
88
91
  await ResponseUtils.throwError(
89
92
  `Organization ${id} delete, failed`,
90
93
  response
91
94
  )
92
95
  }
96
+
97
+ // check organization in collection
93
98
  const org = <OrganizationImpl>this.get(id)
94
99
  const index = this.organizations.indexOf(org)
95
100
  if (index < 0) {
@@ -134,7 +139,8 @@ export class OrganizationsImpl extends Organizations {
134
139
  profile: {
135
140
  name: name,
136
141
  description: description
137
- }
142
+ },
143
+ currentOrganizationId: this.currentOrganizationId
138
144
  })
139
145
  if (ResponseUtils.isFail(response)) {
140
146
  await ResponseUtils.throwError(
@@ -142,7 +148,9 @@ export class OrganizationsImpl extends Organizations {
142
148
  response
143
149
  )
144
150
  }
145
- const content = (await response!.json()).organization as OrganizationDto
151
+ const content = (await response!.json() as {
152
+ organization: OrganizationDto
153
+ }).organization as OrganizationDto
146
154
 
147
155
  // create organization and init from content
148
156
  const org = await new OrganizationImpl(this.context).initFrom(content, true)
@@ -170,22 +178,32 @@ export class OrganizationsImpl extends Organizations {
170
178
  organizations: OrganizationDto[],
171
179
  settings: UserSettings | null | undefined
172
180
  ): Promise<void> {
181
+
182
+ // set current organization
173
183
  this.currentOrganizationId = settings?.activeOrganizationId
184
+
185
+ // wait list
186
+ const waitList: Promise<OrganizationImpl>[] = []
187
+
188
+ // init organizations
174
189
  for (const organization of organizations) {
175
190
  // create organization and init from content
176
- const org = await new OrganizationImpl(this.context).initFrom(
191
+ const orgPromise = new OrganizationImpl(this.context).initFrom(
177
192
  organization,
178
193
  adminInOrganization.includes(organization.id)
179
194
  )
180
195
 
196
+ // add organization to wait list
197
+ waitList.push(orgPromise)
198
+ }
199
+
200
+ // wait for all organizations
201
+ const orgImpls = await Promise.all(waitList)
202
+
203
+ // add organizations to collection
204
+ for (const org of orgImpls) {
181
205
  // add organization to collection
182
206
  this.organizations.push(org)
183
-
184
- // dispatch event, organization added
185
- this.dispatch({
186
- type: OrganizationsEvent.ADDED,
187
- data: org
188
- })
189
207
  }
190
208
  }
191
209
  }
@@ -1,4 +1,4 @@
1
- import { EventDispatcher } from "../events"
1
+ import { EventDispatcher } from "../../events"
2
2
  import { Organization } from "./organization"
3
3
 
4
4
  /**