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

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 +17 -0
  133. package/dist/src/services/requestBuilder.d.ts.map +1 -0
  134. package/dist/src/services/requestBuilder.js +105 -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 +116 -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 +51 -0
  169. package/dist/src/storages/chats/chat.d.ts.map +1 -0
  170. package/dist/src/storages/chats/chat.impl.d.ts +27 -0
  171. package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
  172. package/dist/src/storages/chats/chat.impl.js +93 -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 +127 -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 +10 -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 +160 -0
  316. package/src/storages/chats/answer.ts +53 -0
  317. package/src/storages/chats/chat.impl.ts +115 -0
  318. package/src/storages/chats/chat.ts +65 -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 +159 -0
  322. package/src/storages/files/file.ts +74 -0
  323. package/src/storages/{files.impl.ts → files/files.impl.ts} +67 -46
  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,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
+ }
@@ -0,0 +1,127 @@
1
+ import {WorkspaceId, Workspaces} from "../workspaces/workspaces"
2
+ import { OrganizationId } from "./organizations"
3
+ import { Groups } from "../groups/groups"
4
+ import { Chats } from "../chats/chats"
5
+ import { EventDispatcher } from "../../events"
6
+ import {
7
+ CurrentLimitsData,
8
+ UserDto,
9
+ UsersStatisticsResponse
10
+ } from "../../dto/userInfoResponse"
11
+ import { GroupId } from "../groups/group"
12
+ import { StatisticsResponse } from "../../dto/statisticsResponse"
13
+ import { SegmentData } from "../../dto/limitsResponse"
14
+ import {FileId} from "../files/file"
15
+ import {QuizData} from "../../dto/quizResponse"
16
+
17
+ /**
18
+ * Organization event.
19
+ */
20
+ export enum OrganizationEvent {
21
+ CHANGED = "changed"
22
+ }
23
+
24
+ /**
25
+ * Organization.
26
+ */
27
+ export abstract class Organization extends EventDispatcher<
28
+ OrganizationEvent,
29
+ Organization
30
+ > {
31
+ /**
32
+ * Organization id.
33
+ */
34
+ abstract get id(): OrganizationId
35
+
36
+ /**
37
+ * Organization name.
38
+ */
39
+ abstract get name(): string
40
+
41
+ /**
42
+ * Organization description.
43
+ */
44
+ abstract get description(): string
45
+
46
+ /**
47
+ * Workspaces.
48
+ */
49
+ abstract get workspaces(): Workspaces
50
+
51
+ /**
52
+ * Chats.
53
+ */
54
+ abstract get chats(): Chats
55
+
56
+ /**
57
+ * Groups.
58
+ */
59
+ abstract get accessGroups(): Groups
60
+
61
+ /**
62
+ * Get organization members
63
+ */
64
+ abstract members(): Promise<UserDto[]>
65
+
66
+ /**
67
+ * Get organization statistics
68
+ * @param dateFrom
69
+ * @param dateTo
70
+ */
71
+ abstract statistics(dateFrom: number, dateTo: number): Promise<StatisticsResponse>
72
+
73
+ /**
74
+ * Get organization statistics
75
+ * @param dateFrom
76
+ * @param dateTo
77
+ */
78
+ abstract membersStatistics(dateFrom: number, dateTo: number): Promise<UsersStatisticsResponse>
79
+
80
+ /**
81
+ * Get statistics for user
82
+ * @param userid
83
+ * @param dateFrom
84
+ * @param dateTo
85
+ */
86
+ abstract userStatistic(userid: string, dateFrom: number, dateTo: number): Promise<StatisticsResponse>
87
+
88
+ /**
89
+ * Get user limits data
90
+ */
91
+ abstract userLimits(): Promise<CurrentLimitsData>
92
+
93
+ /**
94
+ * Get default organization limits
95
+ */
96
+ abstract organizationLimits(): Promise<SegmentData>
97
+
98
+ /**
99
+ * Get all available segments data
100
+ */
101
+ abstract limitSegments(): Promise<SegmentData[]>
102
+
103
+ /**
104
+ * Change organization name and description.
105
+ */
106
+ abstract change(name: string, description: string): Promise<void>
107
+
108
+ /**
109
+ * Invite users with given emails to organization
110
+ */
111
+ abstract inviteUsers(emails: string[], accessGroups: GroupId[]): Promise<void>
112
+
113
+ /**
114
+ * Create invite code for users outside organization
115
+ */
116
+ abstract createInviteCode(accessGroups: GroupId[]): Promise<string>
117
+
118
+ /**
119
+ * Create quiz for given topic
120
+ * @param workspaces - workspaces to search for topic
121
+ * @param query - search query and quiz topic
122
+ * @param questionsCount - count of quiz tests
123
+ * @param optionsCount - count of one question options
124
+ * @param fileId - file id in case of test-on-file
125
+ */
126
+ abstract createQuiz(workspaces: WorkspaceId[], query: string, questionsCount: number, optionsCount: number, fileId: FileId): Promise<QuizData>
127
+ }
@@ -4,11 +4,12 @@ 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 { ApplyInviteCodeResponse, 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
+ import { UserProfileService } from "../../services/userProfileService"
12
13
 
13
14
  export class OrganizationsImpl extends Organizations {
14
15
  constructor(public readonly context: Context) {
@@ -61,6 +62,27 @@ export class OrganizationsImpl extends Organizations {
61
62
  return this.internalDeleteOrganization(id)
62
63
  }
63
64
 
65
+ async applyInviteCode(code: string): Promise<ApplyInviteCodeResponse> {
66
+ const response = await this.context
67
+ .resolve(RpcService)
68
+ ?.requestBuilder("api/v1/Invites/apply")
69
+ .sendPutJson({
70
+ code: code
71
+ })
72
+ if (ResponseUtils.isFail(response)) {
73
+ await ResponseUtils.throwError(
74
+ "Invite code validation failed",
75
+ response
76
+ )
77
+ }
78
+
79
+ await this.context.resolve(UserProfileService)?.fetch()
80
+
81
+ const result = (await response?.json()) as ApplyInviteCodeResponse
82
+
83
+ return result
84
+ }
85
+
64
86
  //----------------------------------------------------------------------------
65
87
  // INTERNALS
66
88
  //----------------------------------------------------------------------------
@@ -79,17 +101,22 @@ export class OrganizationsImpl extends Organizations {
79
101
  if (!this.contains(id)) {
80
102
  throw new Error(`Organization delete, id: ${id} is not found`)
81
103
  }
104
+ // send request to the server
82
105
  const response = await this.context
83
106
  .resolve(RpcService)
84
107
  ?.requestBuilder("/api/v1/Organizations")
85
108
  .searchParam("id", id)
86
109
  .sendDelete()
110
+
111
+ // check response status
87
112
  if (ResponseUtils.isFail(response)) {
88
113
  await ResponseUtils.throwError(
89
114
  `Organization ${id} delete, failed`,
90
115
  response
91
116
  )
92
117
  }
118
+
119
+ // check organization in collection
93
120
  const org = <OrganizationImpl>this.get(id)
94
121
  const index = this.organizations.indexOf(org)
95
122
  if (index < 0) {
@@ -134,7 +161,8 @@ export class OrganizationsImpl extends Organizations {
134
161
  profile: {
135
162
  name: name,
136
163
  description: description
137
- }
164
+ },
165
+ currentOrganizationId: this.currentOrganizationId
138
166
  })
139
167
  if (ResponseUtils.isFail(response)) {
140
168
  await ResponseUtils.throwError(
@@ -142,7 +170,9 @@ export class OrganizationsImpl extends Organizations {
142
170
  response
143
171
  )
144
172
  }
145
- const content = (await response!.json()).organization as OrganizationDto
173
+ const content = (await response!.json() as {
174
+ organization: OrganizationDto
175
+ }).organization as OrganizationDto
146
176
 
147
177
  // create organization and init from content
148
178
  const org = await new OrganizationImpl(this.context).initFrom(content, true)
@@ -170,22 +200,34 @@ export class OrganizationsImpl extends Organizations {
170
200
  organizations: OrganizationDto[],
171
201
  settings: UserSettings | null | undefined
172
202
  ): Promise<void> {
203
+
204
+ this.organizations = []
205
+
206
+ // set current organization
173
207
  this.currentOrganizationId = settings?.activeOrganizationId
208
+
209
+ // wait list
210
+ const waitList: Promise<OrganizationImpl>[] = []
211
+
212
+ // init organizations
174
213
  for (const organization of organizations) {
175
214
  // create organization and init from content
176
- const org = await new OrganizationImpl(this.context).initFrom(
215
+ const orgPromise = new OrganizationImpl(this.context).initFrom(
177
216
  organization,
178
217
  adminInOrganization.includes(organization.id)
179
218
  )
180
219
 
220
+ // add organization to wait list
221
+ waitList.push(orgPromise)
222
+ }
223
+
224
+ // wait for all organizations
225
+ const orgImpls = await Promise.all(waitList)
226
+
227
+ // add organizations to collection
228
+ for (const org of orgImpls) {
181
229
  // add organization to collection
182
230
  this.organizations.push(org)
183
-
184
- // dispatch event, organization added
185
- this.dispatch({
186
- type: OrganizationsEvent.ADDED,
187
- data: org
188
- })
189
231
  }
190
232
  }
191
233
  }
@@ -1,4 +1,5 @@
1
- import { EventDispatcher } from "../events"
1
+ import { ApplyInviteCodeResponse } from "../../dto/userInfoResponse"
2
+ import { EventDispatcher } from "../../events"
2
3
  import { Organization } from "./organization"
3
4
 
4
5
  /**
@@ -53,4 +54,9 @@ export abstract class Organizations extends EventDispatcher<
53
54
  * Delete organization.
54
55
  */
55
56
  abstract delete(id: OrganizationId): Promise<void>
57
+
58
+ /**
59
+ * Apply invite code for user
60
+ */
61
+ abstract applyInviteCode(code: string): Promise<ApplyInviteCodeResponse>
56
62
  }