@neuralinnovations/dataisland-sdk 0.0.1-dev4 → 0.0.1-dev41

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