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

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 (353) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +271 -36
  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 +50 -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/badRequestResponse.d.ts +6 -0
  41. package/dist/src/dto/badRequestResponse.d.ts.map +1 -0
  42. package/dist/src/dto/badRequestResponse.js +3 -0
  43. package/dist/src/dto/badRequestResponse.js.map +1 -0
  44. package/dist/src/dto/chatResponse.d.ts +83 -0
  45. package/dist/src/dto/chatResponse.d.ts.map +1 -0
  46. package/dist/src/dto/chatResponse.js +45 -0
  47. package/dist/src/dto/chatResponse.js.map +1 -0
  48. package/dist/src/dto/limitsResponse.d.ts +29 -0
  49. package/dist/src/dto/limitsResponse.d.ts.map +1 -0
  50. package/dist/src/dto/limitsResponse.js +13 -0
  51. package/dist/src/dto/limitsResponse.js.map +1 -0
  52. package/dist/src/dto/statisticsResponse.d.ts +11 -0
  53. package/dist/src/dto/statisticsResponse.d.ts.map +1 -0
  54. package/dist/src/dto/statisticsResponse.js +3 -0
  55. package/dist/src/dto/statisticsResponse.js.map +1 -0
  56. package/dist/src/dto/userInfoResponse.d.ts +88 -0
  57. package/dist/src/dto/userInfoResponse.d.ts.map +1 -0
  58. package/dist/src/dto/userInfoResponse.js +3 -0
  59. package/dist/src/dto/userInfoResponse.js.map +1 -0
  60. package/dist/src/dto/workspacesResponse.d.ts +45 -0
  61. package/dist/src/dto/workspacesResponse.d.ts.map +1 -0
  62. package/dist/src/dto/workspacesResponse.js +3 -0
  63. package/dist/src/dto/workspacesResponse.js.map +1 -0
  64. package/dist/src/events.d.ts +17 -0
  65. package/dist/src/events.d.ts.map +1 -0
  66. package/dist/src/events.js +52 -0
  67. package/dist/src/events.js.map +1 -0
  68. package/dist/src/index.d.ts +66 -0
  69. package/dist/src/index.d.ts.map +1 -0
  70. package/dist/src/index.js +113 -0
  71. package/dist/src/index.js.map +1 -0
  72. package/dist/src/internal/app.impl.d.ts +28 -0
  73. package/dist/src/internal/app.impl.d.ts.map +1 -0
  74. package/dist/src/internal/app.impl.js +173 -0
  75. package/dist/src/internal/app.impl.js.map +1 -0
  76. package/dist/src/internal/appBuilder.impl.d.ts +27 -0
  77. package/dist/src/internal/appBuilder.impl.d.ts.map +1 -0
  78. package/dist/src/internal/appBuilder.impl.js +71 -0
  79. package/dist/src/internal/appBuilder.impl.js.map +1 -0
  80. package/dist/src/internal/createApp.impl.d.ts +4 -0
  81. package/dist/src/internal/createApp.impl.d.ts.map +1 -0
  82. package/dist/src/internal/createApp.impl.js +11 -0
  83. package/dist/src/internal/createApp.impl.js.map +1 -0
  84. package/dist/src/internal/registry.d.ts +66 -0
  85. package/dist/src/internal/registry.d.ts.map +1 -0
  86. package/dist/src/internal/registry.js +114 -0
  87. package/dist/src/internal/registry.js.map +1 -0
  88. package/dist/src/middleware.d.ts +6 -0
  89. package/dist/src/middleware.d.ts.map +1 -0
  90. package/dist/src/middleware.js +3 -0
  91. package/dist/src/middleware.js.map +1 -0
  92. package/dist/src/services/anonymousService.d.ts +8 -0
  93. package/dist/src/services/anonymousService.d.ts.map +1 -0
  94. package/dist/src/services/anonymousService.js +41 -0
  95. package/dist/src/services/anonymousService.js.map +1 -0
  96. package/dist/src/services/commandService.d.ts +18 -0
  97. package/dist/src/services/commandService.d.ts.map +1 -0
  98. package/dist/src/services/commandService.js +40 -0
  99. package/dist/src/services/commandService.js.map +1 -0
  100. package/dist/src/services/cookieService.d.ts +7 -0
  101. package/dist/src/services/cookieService.d.ts.map +1 -0
  102. package/dist/src/services/cookieService.js +18 -0
  103. package/dist/src/services/cookieService.js.map +1 -0
  104. package/dist/src/services/credentialService.d.ts +9 -0
  105. package/dist/src/services/credentialService.d.ts.map +1 -0
  106. package/dist/src/services/credentialService.js +26 -0
  107. package/dist/src/services/credentialService.js.map +1 -0
  108. package/dist/src/services/httpMethod.d.ts +2 -0
  109. package/dist/src/services/httpMethod.d.ts.map +1 -0
  110. package/dist/src/services/httpMethod.js +3 -0
  111. package/dist/src/services/httpMethod.js.map +1 -0
  112. package/dist/src/services/middlewareService.d.ts +10 -0
  113. package/dist/src/services/middlewareService.d.ts.map +1 -0
  114. package/dist/src/services/middlewareService.js +34 -0
  115. package/dist/src/services/middlewareService.js.map +1 -0
  116. package/dist/src/services/organizationService.d.ts +10 -0
  117. package/dist/src/services/organizationService.d.ts.map +1 -0
  118. package/dist/src/services/organizationService.js +19 -0
  119. package/dist/src/services/organizationService.js.map +1 -0
  120. package/dist/src/services/requestBuilder.d.ts +17 -0
  121. package/dist/src/services/requestBuilder.d.ts.map +1 -0
  122. package/dist/src/services/requestBuilder.js +105 -0
  123. package/dist/src/services/requestBuilder.js.map +1 -0
  124. package/dist/src/services/responseUtils.d.ts +8 -0
  125. package/dist/src/services/responseUtils.d.ts.map +1 -0
  126. package/dist/src/services/responseUtils.js +40 -0
  127. package/dist/src/services/responseUtils.js.map +1 -0
  128. package/dist/src/services/rpcService.d.ts +77 -0
  129. package/dist/src/services/rpcService.d.ts.map +1 -0
  130. package/dist/src/services/rpcService.js +125 -0
  131. package/dist/src/services/rpcService.js.map +1 -0
  132. package/dist/src/services/service.d.ts +21 -0
  133. package/dist/src/services/service.d.ts.map +1 -0
  134. package/dist/src/services/service.js +41 -0
  135. package/dist/src/services/service.js.map +1 -0
  136. package/dist/src/services/userProfileService.d.ts +9 -0
  137. package/dist/src/services/userProfileService.d.ts.map +1 -0
  138. package/dist/src/services/userProfileService.js +43 -0
  139. package/dist/src/services/userProfileService.js.map +1 -0
  140. package/dist/src/storages/chats/answer.d.ts +41 -0
  141. package/dist/src/storages/chats/answer.d.ts.map +1 -0
  142. package/dist/src/storages/chats/answer.impl.d.ts +29 -0
  143. package/dist/src/storages/chats/answer.impl.d.ts.map +1 -0
  144. package/dist/src/storages/chats/answer.impl.js +116 -0
  145. package/dist/src/storages/chats/answer.impl.js.map +1 -0
  146. package/dist/src/storages/chats/answer.js +15 -0
  147. package/dist/src/storages/chats/answer.js.map +1 -0
  148. package/dist/src/storages/chats/chat.d.ts +43 -0
  149. package/dist/src/storages/chats/chat.d.ts.map +1 -0
  150. package/dist/src/storages/chats/chat.impl.d.ts +25 -0
  151. package/dist/src/storages/chats/chat.impl.d.ts.map +1 -0
  152. package/dist/src/storages/chats/chat.impl.js +85 -0
  153. package/dist/src/storages/chats/chat.impl.js.map +1 -0
  154. package/dist/src/storages/chats/chat.js +12 -0
  155. package/dist/src/storages/chats/chat.js.map +1 -0
  156. package/dist/src/storages/chats/chats.d.ts +45 -0
  157. package/dist/src/storages/chats/chats.d.ts.map +1 -0
  158. package/dist/src/storages/chats/chats.impl.d.ts +19 -0
  159. package/dist/src/storages/chats/chats.impl.d.ts.map +1 -0
  160. package/dist/src/storages/chats/chats.impl.js +147 -0
  161. package/dist/src/storages/chats/chats.impl.js.map +1 -0
  162. package/dist/src/storages/chats/chats.js +16 -0
  163. package/dist/src/storages/chats/chats.js.map +1 -0
  164. package/dist/src/storages/files/file.d.ts +47 -0
  165. package/dist/src/storages/files/file.d.ts.map +1 -0
  166. package/dist/src/storages/files/file.impl.d.ts +25 -0
  167. package/dist/src/storages/files/file.impl.d.ts.map +1 -0
  168. package/dist/src/storages/files/file.impl.js +93 -0
  169. package/dist/src/storages/files/file.impl.js.map +1 -0
  170. package/dist/src/storages/files/file.js +17 -0
  171. package/dist/src/storages/files/file.js.map +1 -0
  172. package/dist/src/storages/files/files.d.ts +39 -0
  173. package/dist/src/storages/files/files.d.ts.map +1 -0
  174. package/dist/src/storages/files/files.impl.d.ts +24 -0
  175. package/dist/src/storages/files/files.impl.d.ts.map +1 -0
  176. package/dist/src/storages/files/files.impl.js +168 -0
  177. package/dist/src/storages/files/files.impl.js.map +1 -0
  178. package/dist/src/storages/files/files.js +20 -0
  179. package/dist/src/storages/files/files.js.map +1 -0
  180. package/dist/src/storages/files/filesPage.d.ts +28 -0
  181. package/dist/src/storages/files/filesPage.d.ts.map +1 -0
  182. package/dist/src/storages/files/filesPage.impl.d.ts +15 -0
  183. package/dist/src/storages/files/filesPage.impl.d.ts.map +1 -0
  184. package/dist/src/storages/files/filesPage.impl.js +38 -0
  185. package/dist/src/storages/files/filesPage.impl.js.map +1 -0
  186. package/dist/src/storages/files/filesPage.js +10 -0
  187. package/dist/src/storages/files/filesPage.js.map +1 -0
  188. package/dist/src/storages/groups/group.d.ts +63 -0
  189. package/dist/src/storages/groups/group.d.ts.map +1 -0
  190. package/dist/src/storages/groups/group.impl.d.ts +38 -0
  191. package/dist/src/storages/groups/group.impl.d.ts.map +1 -0
  192. package/dist/src/storages/groups/group.impl.js +210 -0
  193. package/dist/src/storages/groups/group.impl.js.map +1 -0
  194. package/dist/src/storages/groups/group.js +15 -0
  195. package/dist/src/storages/groups/group.js.map +1 -0
  196. package/dist/src/storages/groups/groups.d.ts +39 -0
  197. package/dist/src/storages/groups/groups.d.ts.map +1 -0
  198. package/dist/src/storages/groups/groups.impl.d.ts +30 -0
  199. package/dist/src/storages/groups/groups.impl.d.ts.map +1 -0
  200. package/dist/src/storages/groups/groups.impl.js +132 -0
  201. package/dist/src/storages/groups/groups.impl.js.map +1 -0
  202. package/dist/src/storages/groups/groups.js +20 -0
  203. package/dist/src/storages/groups/groups.js.map +1 -0
  204. package/dist/src/storages/organizations/organization.d.ts +95 -0
  205. package/dist/src/storages/organizations/organization.d.ts.map +1 -0
  206. package/dist/src/storages/organizations/organization.impl.d.ts +42 -0
  207. package/dist/src/storages/organizations/organization.impl.d.ts.map +1 -0
  208. package/dist/src/storages/organizations/organization.impl.js +240 -0
  209. package/dist/src/storages/organizations/organization.impl.js.map +1 -0
  210. package/dist/src/storages/organizations/organization.js +18 -0
  211. package/dist/src/storages/organizations/organization.js.map +1 -0
  212. package/dist/src/storages/organizations/organizations.d.ts +46 -0
  213. package/dist/src/storages/organizations/organizations.d.ts.map +1 -0
  214. package/dist/src/storages/organizations/organizations.impl.d.ts +38 -0
  215. package/dist/src/storages/organizations/organizations.impl.d.ts.map +1 -0
  216. package/dist/src/storages/organizations/organizations.impl.js +158 -0
  217. package/dist/src/storages/organizations/organizations.impl.js.map +1 -0
  218. package/dist/src/storages/organizations/organizations.js +20 -0
  219. package/dist/src/storages/organizations/organizations.js.map +1 -0
  220. package/dist/src/storages/user/userProfile.d.ts +54 -0
  221. package/dist/src/storages/user/userProfile.d.ts.map +1 -0
  222. package/dist/src/storages/user/userProfile.impl.d.ts +21 -0
  223. package/dist/src/storages/user/userProfile.impl.d.ts.map +1 -0
  224. package/dist/src/storages/user/userProfile.impl.js +114 -0
  225. package/dist/src/storages/user/userProfile.impl.js.map +1 -0
  226. package/dist/src/storages/user/userProfile.js +12 -0
  227. package/dist/src/storages/user/userProfile.js.map +1 -0
  228. package/dist/src/storages/workspaces/workspace.d.ts +44 -0
  229. package/dist/src/storages/workspaces/workspace.d.ts.map +1 -0
  230. package/dist/src/storages/workspaces/workspace.impl.d.ts +23 -0
  231. package/dist/src/storages/workspaces/workspace.impl.d.ts.map +1 -0
  232. package/dist/src/storages/workspaces/workspace.impl.js +98 -0
  233. package/dist/src/storages/workspaces/workspace.impl.js.map +1 -0
  234. package/dist/src/storages/workspaces/workspace.js +18 -0
  235. package/dist/src/storages/workspaces/workspace.js.map +1 -0
  236. package/dist/src/storages/workspaces/workspaces.d.ts +47 -0
  237. package/dist/src/storages/workspaces/workspaces.d.ts.map +1 -0
  238. package/dist/src/storages/workspaces/workspaces.impl.d.ts +33 -0
  239. package/dist/src/storages/workspaces/workspaces.impl.d.ts.map +1 -0
  240. package/dist/src/storages/workspaces/workspaces.impl.js +152 -0
  241. package/dist/src/storages/workspaces/workspaces.impl.js.map +1 -0
  242. package/dist/src/storages/workspaces/workspaces.js +19 -0
  243. package/dist/src/storages/workspaces/workspaces.js.map +1 -0
  244. package/dist/src/unitTest.d.ts +12 -0
  245. package/dist/src/unitTest.d.ts.map +1 -0
  246. package/dist/src/unitTest.js +44 -0
  247. package/dist/src/unitTest.js.map +1 -0
  248. package/dist/src/utils/browserUtils.d.ts +4 -0
  249. package/dist/src/utils/browserUtils.d.ts.map +1 -0
  250. package/dist/src/utils/browserUtils.js +64 -0
  251. package/dist/src/utils/browserUtils.js.map +1 -0
  252. package/dist/src/utils/request.d.ts +6 -0
  253. package/dist/src/utils/request.d.ts.map +1 -0
  254. package/dist/src/utils/request.js +3 -0
  255. package/dist/src/utils/request.js.map +1 -0
  256. package/dist/src/utils/utils.d.ts +3 -0
  257. package/dist/src/utils/utils.d.ts.map +1 -0
  258. package/dist/src/utils/utils.js +13 -0
  259. package/dist/src/utils/utils.js.map +1 -0
  260. package/index.d.ts +1 -0
  261. package/index.js +1 -0
  262. package/package.json +46 -5
  263. package/src/commands/deleteUserFullCommandHandler.ts +19 -0
  264. package/src/commands/startCommandHandler.ts +16 -5
  265. package/src/context.ts +4 -2
  266. package/src/credentials.ts +22 -0
  267. package/src/{appSdk.ts → dataIslandApp.ts} +3 -3
  268. package/src/disposable.ts +18 -5
  269. package/src/dto/accessGroupResponse.ts +19 -16
  270. package/src/dto/badRequestResponse.ts +6 -0
  271. package/src/dto/chatResponse.ts +59 -54
  272. package/src/dto/limitsResponse.ts +33 -0
  273. package/src/dto/statisticsResponse.ts +12 -0
  274. package/src/dto/userInfoResponse.ts +59 -2
  275. package/src/dto/workspacesResponse.ts +5 -3
  276. package/src/index.ts +46 -24
  277. package/src/internal/app.impl.ts +42 -9
  278. package/src/internal/createApp.impl.ts +4 -4
  279. package/src/internal/registry.ts +54 -6
  280. package/src/middleware.ts +2 -0
  281. package/src/services/anonymousService.ts +43 -0
  282. package/src/services/commandService.ts +4 -2
  283. package/src/services/cookieService.ts +16 -0
  284. package/src/services/httpMethod.ts +1 -0
  285. package/src/services/middlewareService.ts +1 -0
  286. package/src/services/organizationService.ts +2 -2
  287. package/src/services/requestBuilder.ts +10 -8
  288. package/src/services/responseUtils.ts +12 -0
  289. package/src/services/rpcService.ts +1 -0
  290. package/src/services/userProfileService.ts +18 -4
  291. package/src/storages/chats/answer.impl.ts +160 -0
  292. package/src/storages/chats/answer.ts +53 -0
  293. package/src/storages/chats/chat.impl.ts +107 -0
  294. package/src/storages/chats/chat.ts +55 -0
  295. package/src/storages/chats/chats.impl.ts +204 -0
  296. package/src/storages/chats/chats.ts +53 -0
  297. package/src/storages/files/file.impl.ts +111 -0
  298. package/src/storages/files/file.ts +58 -0
  299. package/src/storages/{files.impl.ts → files/files.impl.ts} +67 -46
  300. package/src/storages/{files.ts → files/files.ts} +14 -7
  301. package/src/storages/files/filesPage.impl.ts +37 -0
  302. package/src/storages/{filesPage.ts → files/filesPage.ts} +6 -0
  303. package/src/storages/groups/group.impl.ts +276 -0
  304. package/src/storages/groups/group.ts +73 -0
  305. package/src/storages/groups/groups.impl.ts +175 -0
  306. package/src/storages/groups/groups.ts +45 -0
  307. package/src/storages/organizations/organization.impl.ts +357 -0
  308. package/src/storages/organizations/organization.ts +118 -0
  309. package/src/storages/{organizations.impl.ts → organizations/organizations.impl.ts} +31 -13
  310. package/src/storages/{organizations.ts → organizations/organizations.ts} +1 -1
  311. package/src/storages/user/userProfile.impl.ts +136 -0
  312. package/src/storages/user/userProfile.ts +69 -0
  313. package/src/storages/{workspace.impl.ts → workspaces/workspace.impl.ts} +27 -7
  314. package/src/storages/{workspace.ts → workspaces/workspace.ts} +8 -3
  315. package/src/storages/{workspaces.impl.ts → workspaces/workspaces.impl.ts} +27 -32
  316. package/src/storages/{workspaces.ts → workspaces/workspaces.ts} +6 -2
  317. package/src/unitTest.ts +14 -3
  318. package/src/utils/browserUtils.ts +68 -0
  319. package/src/utils/request.ts +6 -0
  320. package/src/utils/utils.ts +8 -0
  321. package/.browserslistrc +0 -5
  322. package/.editorconfig +0 -25
  323. package/.eslintrc.json +0 -44
  324. package/.github/workflows/publish-npm.yml +0 -28
  325. package/.prettierignore +0 -1
  326. package/.prettierrc +0 -11
  327. package/.yarnrc +0 -2
  328. package/babel.config.js +0 -6
  329. package/jest.config.ts +0 -199
  330. package/jest.setup.ts +0 -2
  331. package/src/storages/chat.ts +0 -21
  332. package/src/storages/chats.ts +0 -17
  333. package/src/storages/file.impl.ts +0 -69
  334. package/src/storages/file.ts +0 -28
  335. package/src/storages/groups.impl.ts +0 -337
  336. package/src/storages/groups.ts +0 -43
  337. package/src/storages/organization.impl.ts +0 -68
  338. package/src/storages/organization.ts +0 -33
  339. package/src/storages/userProfile.impl.ts +0 -56
  340. package/src/storages/userProfile.ts +0 -42
  341. package/test/commands.test.ts +0 -24
  342. package/test/data/test_file.pdf +0 -0
  343. package/test/disposable.test.ts +0 -39
  344. package/test/events.test.ts +0 -151
  345. package/test/files.test.ts +0 -52
  346. package/test/index.test.ts +0 -122
  347. package/test/organization.test.ts +0 -57
  348. package/test/registry.test.ts +0 -44
  349. package/test/services.test.ts +0 -56
  350. package/test/setup.ts +0 -54
  351. package/test/unitTest.test.ts +0 -21
  352. package/test/workspace.test.ts +0 -71
  353. package/tsconfig.json +0 -31
@@ -0,0 +1,111 @@
1
+ import { Context } from "../../context"
2
+ import { Disposable } from "../../disposable"
3
+ import { FileDto, FileProgressDto } from "../../dto/workspacesResponse"
4
+ import { RpcService } from "../../services/rpcService"
5
+ import { ResponseUtils } from "../../services/responseUtils"
6
+ import { File, FileStatus } from "./file"
7
+ import { FilesEvent } from "./files"
8
+ import { isNullOrUndefined } from "../../utils/utils"
9
+
10
+ export class FileImpl extends File implements Disposable {
11
+ private _isDisposed: boolean = false
12
+ private _content?: FileDto
13
+ private _progress?: FileProgressDto
14
+
15
+ constructor(private readonly context: Context) {
16
+ super()
17
+ }
18
+
19
+ async initFrom(file: FileDto): Promise<File> {
20
+ this._content = file
21
+
22
+ await this.updateStatus()
23
+
24
+ return this
25
+ }
26
+
27
+ get isDisposed(): boolean {
28
+ return this._isDisposed
29
+ }
30
+
31
+ dispose(): void {
32
+ this._isDisposed = true
33
+ }
34
+
35
+ get id(): string {
36
+ return <string>this._content?.id
37
+ }
38
+
39
+ get name(): string {
40
+ return <string>this._content?.name
41
+ }
42
+
43
+ get createdAt(): number {
44
+ return <number>this._content?.createdAt
45
+ }
46
+
47
+ get modifiedAt(): number {
48
+ return <number>this._content?.modifiedAt
49
+ }
50
+
51
+ get url(): string {
52
+ return <string>this._content?.url
53
+ }
54
+
55
+ get previewUrl(): string {
56
+ return <string>this._content?.previewUrl
57
+ }
58
+
59
+ get progress(): FileProgressDto {
60
+ return <FileProgressDto>this._progress
61
+ }
62
+
63
+ get status(): FileStatus {
64
+
65
+ if (
66
+ isNullOrUndefined(this._progress) || isNullOrUndefined(this._progress.success)
67
+ || (this._progress.success && this._progress.completed_parts_count < this._progress.file_parts_count)) {
68
+ return FileStatus.UPLOADING
69
+ } else if (this._progress.success) {
70
+ return FileStatus.SUCCESS
71
+ } else {
72
+ return FileStatus.FAILED
73
+ }
74
+ }
75
+
76
+ public fetchAfter() {
77
+ if (this.status === FileStatus.UPLOADING) {
78
+ setTimeout(async () => await this.updateStatus(), 500)
79
+ }
80
+ }
81
+
82
+ async updateStatus(): Promise<void> {
83
+ const response = await this.context
84
+ .resolve(RpcService)
85
+ ?.requestBuilder("api/v1/Files/fetch")
86
+ .searchParam("id", this.id)
87
+ .sendGet()
88
+
89
+ if (ResponseUtils.isFail(response)) {
90
+ await ResponseUtils.throwError(`Failed to get file ${this.id}`, response)
91
+ }
92
+
93
+ const prev_progress = this._progress
94
+ this._progress = (await response!.json() as {
95
+ progress: FileProgressDto
96
+ }).progress as FileProgressDto
97
+
98
+ if (isNullOrUndefined(prev_progress) ||
99
+ (!isNullOrUndefined(this.progress.success) && this.progress.completed_parts_count > prev_progress.completed_parts_count) ||
100
+ this.status === FileStatus.SUCCESS ||
101
+ this.status === FileStatus.FAILED) {
102
+ // dispatch event, file updated
103
+ this.dispatch({
104
+ type: FilesEvent.UPDATED,
105
+ data: this
106
+ })
107
+ }
108
+
109
+ this.fetchAfter()
110
+ }
111
+ }
@@ -0,0 +1,58 @@
1
+ import { FileProgressDto } from "../../dto/workspacesResponse"
2
+ import { EventDispatcher } from "../../events"
3
+ import { FilesEvent } from "./files"
4
+
5
+ export type FileId = string
6
+
7
+ export enum FileStatus {
8
+ UPLOADING = "uploading",
9
+ SUCCESS = "success",
10
+ FAILED = "failed"
11
+ }
12
+
13
+ /**
14
+ * File.
15
+ */
16
+ export abstract class File extends EventDispatcher<
17
+ FilesEvent,
18
+ File
19
+ > {
20
+ /**
21
+ * File id.
22
+ */
23
+ abstract get id(): FileId
24
+
25
+ /**
26
+ * File name.
27
+ */
28
+ abstract get name(): string
29
+
30
+ /**
31
+ * File date added.
32
+ */
33
+ abstract get createdAt(): number
34
+
35
+ /**
36
+ * File date modified.
37
+ */
38
+ abstract get modifiedAt(): number
39
+ /**
40
+ * File uploading progress
41
+ */
42
+ abstract get progress(): FileProgressDto
43
+
44
+ /**
45
+ * File uploading status
46
+ */
47
+ abstract get status(): FileStatus
48
+
49
+ /**
50
+ * Get temporary url.
51
+ */
52
+ abstract get url(): string
53
+
54
+ /**
55
+ * Get temporary url.
56
+ */
57
+ abstract get previewUrl(): string
58
+ }
@@ -1,34 +1,14 @@
1
- import { Context } from "../context"
2
- import { Disposable } from "../disposable"
3
- import { FileDto, FileListResponse } from "../dto/workspacesResponse"
4
- import { RpcService } from "../services/rpcService"
1
+ import { Context } from "../../context"
2
+ import { FileDto, FileListResponse } from "../../dto/workspacesResponse"
3
+ import { RpcService } from "../../services/rpcService"
5
4
  import { FileImpl } from "./file.impl"
6
5
  import { Files, FilesEvent, UploadFile } from "./files"
7
- import { WorkspaceImpl } from "./workspace.impl"
8
- import { ResponseUtils } from "../services/responseUtils"
6
+ import { WorkspaceImpl } from "../workspaces/workspace.impl"
7
+ import { ResponseUtils } from "../../services/responseUtils"
9
8
  import { File } from "./file"
10
9
  import { FilesPage } from "./filesPage"
11
-
12
- export class FilesPageImpl extends FilesPage implements Disposable {
13
- private _isDisposed: boolean = false
14
-
15
- public files: File[] = []
16
- public total: number = 0
17
- public filesPerPage: number = 0
18
- public page: number = 0
19
-
20
- get pages(): number {
21
- return Math.ceil(Math.max(this.total / this.filesPerPage, 1.0))
22
- }
23
-
24
- get isDisposed(): boolean {
25
- return this._isDisposed
26
- }
27
-
28
- dispose(): void {
29
- this._isDisposed = true
30
- }
31
- }
10
+ import { FilesPageImpl } from "./filesPage.impl"
11
+ // import { FormData } from "../../utils/request"
32
12
 
33
13
  export class FilesImpl extends Files {
34
14
  constructor(
@@ -41,12 +21,25 @@ export class FilesImpl extends Files {
41
21
  // Object used as files page data, returned by "query"
42
22
  public filesList?: FilesPage
43
23
 
44
- async upload(file: any): Promise<File> {
45
- return await this.internalUpload(file)
24
+ async upload(files: UploadFile[]): Promise<File[]> {
25
+ const loaded_files = []
26
+ for (const file of files) {
27
+ const loaded_file = await this.internalUpload(file)
28
+ if (loaded_file != undefined){
29
+ loaded_files.push(loaded_file)
30
+ }
31
+ }
32
+ return loaded_files
33
+ }
34
+
35
+ async get(fileId: string): Promise<File>{
36
+ return await this.internalGetFile(fileId)
46
37
  }
47
38
 
48
- async delete(id: string): Promise<void> {
49
- return await this.internalDeleteFile(id)
39
+ async delete(ids: string[]): Promise<void> {
40
+ for (const id of ids) {
41
+ await this.internalDeleteFile(id)
42
+ }
50
43
  }
51
44
 
52
45
  async query(query: string, page: number, limit: number): Promise<FilesPage> {
@@ -57,8 +50,39 @@ export class FilesImpl extends Files {
57
50
  // INTERNALS
58
51
  //----------------------------------------------------------------------------
59
52
 
53
+
54
+ async internalGetFile(id: string): Promise<File>{
55
+ if (id === undefined || id === null) {
56
+ throw new Error("File get, id is undefined or null")
57
+ }
58
+ if (id.length === 0 || id.trim().length === 0) {
59
+ throw new Error("File get, id is empty")
60
+ }
61
+
62
+ const response = await this.context
63
+ .resolve(RpcService)
64
+ ?.requestBuilder("api/v1/Files")
65
+ .searchParam("id", id)
66
+ .sendGet()
67
+
68
+ if (ResponseUtils.isFail(response)) {
69
+ await ResponseUtils.throwError(
70
+ `Failed to get file ${id}`,
71
+ response
72
+ )
73
+ }
74
+
75
+ // parse file from the server's response
76
+ const result = (await response!.json() as { file: FileDto }).file as FileDto
77
+
78
+ // create file implementation
79
+ const fileImpl = new FileImpl(this.context)
80
+
81
+ return await fileImpl.initFrom(result)
82
+ }
83
+
60
84
  /**
61
- * Delete organization.
85
+ * Delete file.
62
86
  * @param id
63
87
  */
64
88
  async internalDeleteFile(id: string): Promise<void> {
@@ -74,13 +98,14 @@ export class FilesImpl extends Files {
74
98
  ?.requestBuilder("/api/v1/Files")
75
99
  .searchParam("id", id)
76
100
  .sendDelete()
101
+
77
102
  if (ResponseUtils.isFail(response)) {
78
103
  await ResponseUtils.throwError(`File ${id} delete, failed`, response)
79
104
  }
80
105
  const file = <FileImpl>this.filesList!.files.find(f => f.id === id)
81
106
  const index = this.filesList!.files.indexOf(file)
82
107
  if (index < 0) {
83
- throw new Error("Organization delete, index is not found")
108
+ throw new Error("File delete, index is not found")
84
109
  }
85
110
 
86
111
  // remove file from collection
@@ -122,7 +147,6 @@ export class FilesImpl extends Files {
122
147
  const response = await this.context
123
148
  .resolve(RpcService)
124
149
  ?.requestBuilder("api/v1/Files/list")
125
-
126
150
  .searchParam("workspaceId", this.workspace.id)
127
151
  .searchParam("organizationId", this.workspace.organization.id)
128
152
  .searchParam("query", query)
@@ -151,16 +175,10 @@ export class FilesImpl extends Files {
151
175
  for (const fl of files.files) {
152
176
 
153
177
  // create file implementation
154
- const file = new FileImpl(this.context).initFrom(fl)
178
+ const file = await new FileImpl(this.context).initFrom(fl)
155
179
 
156
180
  // add file to the collection
157
181
  filesList.files.push(file)
158
-
159
- // dispatch event, file added
160
- this.dispatch({
161
- type: FilesEvent.ADDED,
162
- data: file
163
- })
164
182
  }
165
183
 
166
184
  // set files list
@@ -169,7 +187,7 @@ export class FilesImpl extends Files {
169
187
  return filesList
170
188
  }
171
189
 
172
- async internalUpload(file: UploadFile): Promise<File> {
190
+ async internalUpload(file: UploadFile): Promise<File | undefined> {
173
191
  // check file
174
192
  if (file === undefined || file === null) {
175
193
  throw new Error("File upload, file is undefined or null")
@@ -190,17 +208,20 @@ export class FilesImpl extends Files {
190
208
 
191
209
  // check response status
192
210
  if (ResponseUtils.isFail(response)) {
211
+ if (await ResponseUtils.isLimitReached()){
212
+ return undefined
213
+ }
214
+
193
215
  await ResponseUtils.throwError(`File upload ${file.name}`, response)
194
216
  }
195
217
 
196
218
  // parse file from the server's response
197
- const result = (await response!.json()).file as FileDto
219
+ const result = (await response!.json() as { file: FileDto }).file as FileDto
198
220
 
199
221
  // create file implementation
200
- const fileImpl = new FileImpl(this.context).initFrom(result)
222
+ const fileImpl = new FileImpl(this.context)
201
223
 
202
- // TODO: why is this here?
203
- this.filesList?.files.push(fileImpl)
224
+ await fileImpl.initFrom(result)
204
225
 
205
226
  // dispatch event, file added
206
227
  this.dispatch({
@@ -1,4 +1,4 @@
1
- import { EventDispatcher } from "../events"
1
+ import { EventDispatcher } from "../../events"
2
2
  import { File, FileId } from "./file"
3
3
  import { FilesPage } from "./filesPage"
4
4
 
@@ -7,7 +7,8 @@ import { FilesPage } from "./filesPage"
7
7
  */
8
8
  export enum FilesEvent {
9
9
  ADDED = "added",
10
- REMOVED = "removed"
10
+ REMOVED = "removed",
11
+ UPDATED = "updated"
11
12
  }
12
13
 
13
14
  /**
@@ -20,15 +21,21 @@ export type UploadFile = globalThis.File
20
21
  */
21
22
  export abstract class Files extends EventDispatcher<FilesEvent, File> {
22
23
  /**
23
- * Get file by id.
24
+ * Upload file.
24
25
  */
25
- abstract upload(file: UploadFile): Promise<File>
26
+ abstract upload(files: UploadFile[]): Promise<File[]>
26
27
 
27
28
  /**
28
- * Delete file.
29
- * @param id
29
+ * Get file by ID
30
+ * @param fileId
30
31
  */
31
- abstract delete(id: FileId): Promise<void>
32
+ abstract get(fileId: FileId): Promise<File>
33
+
34
+ /**
35
+ * Delete files.
36
+ * @param ids
37
+ */
38
+ abstract delete(ids: FileId[]): Promise<void>
32
39
 
33
40
  /**
34
41
  * Query files.
@@ -0,0 +1,37 @@
1
+ import { FilesPage } from "./filesPage"
2
+ import { Disposable } from "../../disposable"
3
+ import { File } from "./file"
4
+
5
+ export class FilesPageImpl extends FilesPage implements Disposable {
6
+ private _isDisposed: boolean = false
7
+
8
+ public files: File[] = []
9
+ public total: number = 0
10
+ public filesPerPage: number = 0
11
+ public page: number = 0
12
+
13
+ get pages(): number {
14
+ return Math.ceil(Math.max(this.total / this.filesPerPage, 1.0))
15
+ }
16
+
17
+ get isDisposed(): boolean {
18
+ return this._isDisposed
19
+ }
20
+
21
+ dispose(): void {
22
+ this._isDisposed = true
23
+ }
24
+
25
+ equals(other?: FilesPage | null): boolean {
26
+ if (other === undefined) return false
27
+ if (other === null) return false
28
+ if (other === this) return true
29
+ return (
30
+ other.pages === this.pages &&
31
+ other.total === this.total &&
32
+ other.page === this.page &&
33
+ (other.files === this.files ||
34
+ other.files.every((file, index) => file.id === this.files[index].id))
35
+ )
36
+ }
37
+ }
@@ -24,4 +24,10 @@ export abstract class FilesPage {
24
24
  * Get current page.
25
25
  */
26
26
  abstract get page(): number
27
+
28
+ /**
29
+ * Equals.
30
+ * @param other
31
+ */
32
+ abstract equals(other?: FilesPage | null): boolean
27
33
  }