@neuralinnovations/dataisland-sdk 0.0.1-dev6 → 0.0.1-dev61

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