@protontech/drive-sdk 0.0.13 → 0.1.1

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 (496) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/memoryCache.js +0 -1
  6. package/dist/cache/memoryCache.js.map +1 -1
  7. package/dist/cache/memoryCache.test.js +2 -4
  8. package/dist/cache/memoryCache.test.js.map +1 -1
  9. package/dist/cache/nullCache.d.ts +14 -0
  10. package/dist/cache/nullCache.js +36 -0
  11. package/dist/cache/nullCache.js.map +1 -0
  12. package/dist/config.d.ts +16 -1
  13. package/dist/config.js +1 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/crypto/driveCrypto.d.ts +2 -5
  16. package/dist/crypto/driveCrypto.js +7 -12
  17. package/dist/crypto/driveCrypto.js.map +1 -1
  18. package/dist/crypto/driveCrypto.test.js +14 -14
  19. package/dist/crypto/openPGPCrypto.js +5 -3
  20. package/dist/crypto/openPGPCrypto.js.map +1 -1
  21. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  22. package/dist/diagnostic/eventsGenerator.js +49 -0
  23. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  24. package/dist/diagnostic/httpClient.d.ts +16 -0
  25. package/dist/diagnostic/httpClient.js +81 -0
  26. package/dist/diagnostic/httpClient.js.map +1 -0
  27. package/dist/diagnostic/index.d.ts +10 -0
  28. package/dist/diagnostic/index.js +35 -0
  29. package/dist/diagnostic/index.js.map +1 -0
  30. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  31. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  32. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  33. package/dist/diagnostic/interface.d.ts +102 -0
  34. package/dist/diagnostic/interface.js +3 -0
  35. package/dist/diagnostic/interface.js.map +1 -0
  36. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  37. package/dist/diagnostic/sdkDiagnostic.js +222 -0
  38. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  39. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  40. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  41. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  42. package/dist/diagnostic/telemetry.d.ts +25 -0
  43. package/dist/diagnostic/telemetry.js +70 -0
  44. package/dist/diagnostic/telemetry.js.map +1 -0
  45. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  46. package/dist/diagnostic/zipGenerators.js +64 -0
  47. package/dist/diagnostic/zipGenerators.js.map +1 -0
  48. package/dist/diagnostic/zipGenerators.test.js +144 -0
  49. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  50. package/dist/errors.d.ts +2 -1
  51. package/dist/errors.js +3 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/interface/config.d.ts +26 -0
  54. package/dist/interface/config.js +3 -0
  55. package/dist/interface/config.js.map +1 -0
  56. package/dist/interface/download.d.ts +2 -2
  57. package/dist/interface/events.d.ts +58 -20
  58. package/dist/interface/events.js +11 -1
  59. package/dist/interface/events.js.map +1 -1
  60. package/dist/interface/httpClient.d.ts +0 -14
  61. package/dist/interface/index.d.ts +11 -7
  62. package/dist/interface/index.js +2 -2
  63. package/dist/interface/index.js.map +1 -1
  64. package/dist/interface/nodes.d.ts +9 -0
  65. package/dist/interface/nodes.js.map +1 -1
  66. package/dist/interface/result.js.map +1 -1
  67. package/dist/interface/sharing.d.ts +2 -0
  68. package/dist/interface/sharing.js.map +1 -1
  69. package/dist/interface/telemetry.js +0 -8
  70. package/dist/interface/telemetry.js.map +1 -1
  71. package/dist/interface/thumbnail.js.map +1 -1
  72. package/dist/interface/upload.d.ts +7 -1
  73. package/dist/internal/apiService/apiService.d.ts +1 -1
  74. package/dist/internal/apiService/apiService.js +7 -11
  75. package/dist/internal/apiService/apiService.js.map +1 -1
  76. package/dist/internal/apiService/apiService.test.js +55 -48
  77. package/dist/internal/apiService/apiService.test.js.map +1 -1
  78. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  79. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  80. package/dist/internal/apiService/errors.js +14 -8
  81. package/dist/internal/apiService/errors.js.map +1 -1
  82. package/dist/internal/apiService/errors.test.js +17 -12
  83. package/dist/internal/apiService/errors.test.js.map +1 -1
  84. package/dist/internal/apiService/transformers.d.ts +1 -1
  85. package/dist/internal/apiService/transformers.js +1 -1
  86. package/dist/internal/asyncIteratorMap.test.js +2 -2
  87. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  88. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  89. package/dist/internal/asyncIteratorRace.js +59 -0
  90. package/dist/internal/asyncIteratorRace.js.map +1 -0
  91. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  92. package/dist/internal/asyncIteratorRace.test.js +119 -0
  93. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  94. package/dist/internal/batch.d.ts +1 -0
  95. package/dist/internal/batch.js +12 -0
  96. package/dist/internal/batch.js.map +1 -0
  97. package/dist/internal/batch.test.d.ts +1 -0
  98. package/dist/internal/batch.test.js +41 -0
  99. package/dist/internal/batch.test.js.map +1 -0
  100. package/dist/internal/batchLoading.js.map +1 -1
  101. package/dist/internal/batchLoading.test.js +13 -13
  102. package/dist/internal/batchLoading.test.js.map +1 -1
  103. package/dist/internal/devices/apiService.d.ts +3 -3
  104. package/dist/internal/devices/apiService.js +2 -2
  105. package/dist/internal/devices/apiService.js.map +1 -1
  106. package/dist/internal/devices/cryptoService.js +1 -2
  107. package/dist/internal/devices/cryptoService.js.map +1 -1
  108. package/dist/internal/devices/index.d.ts +5 -5
  109. package/dist/internal/devices/index.js.map +1 -1
  110. package/dist/internal/devices/interface.d.ts +3 -3
  111. package/dist/internal/devices/manager.js +2 -2
  112. package/dist/internal/devices/manager.js.map +1 -1
  113. package/dist/internal/devices/manager.test.js +38 -7
  114. package/dist/internal/devices/manager.test.js.map +1 -1
  115. package/dist/internal/download/apiService.d.ts +4 -4
  116. package/dist/internal/download/apiService.js +32 -32
  117. package/dist/internal/download/apiService.js.map +1 -1
  118. package/dist/internal/download/cryptoService.d.ts +4 -4
  119. package/dist/internal/download/cryptoService.js +6 -5
  120. package/dist/internal/download/cryptoService.js.map +1 -1
  121. package/dist/internal/download/fileDownloader.d.ts +6 -6
  122. package/dist/internal/download/fileDownloader.js +3 -2
  123. package/dist/internal/download/fileDownloader.js.map +1 -1
  124. package/dist/internal/download/fileDownloader.test.js +1 -1
  125. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  126. package/dist/internal/download/index.d.ts +5 -5
  127. package/dist/internal/download/index.js +5 -5
  128. package/dist/internal/download/index.js.map +1 -1
  129. package/dist/internal/download/interface.d.ts +3 -4
  130. package/dist/internal/download/telemetry.d.ts +3 -3
  131. package/dist/internal/download/telemetry.js +4 -2
  132. package/dist/internal/download/telemetry.js.map +1 -1
  133. package/dist/internal/download/telemetry.test.js +8 -8
  134. package/dist/internal/download/telemetry.test.js.map +1 -1
  135. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  136. package/dist/internal/download/thumbnailDownloader.js +6 -6
  137. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  138. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  139. package/dist/internal/errors.d.ts +1 -1
  140. package/dist/internal/errors.js +1 -3
  141. package/dist/internal/errors.js.map +1 -1
  142. package/dist/internal/events/apiService.d.ts +5 -7
  143. package/dist/internal/events/apiService.js +19 -22
  144. package/dist/internal/events/apiService.js.map +1 -1
  145. package/dist/internal/events/coreEventManager.d.ts +9 -12
  146. package/dist/internal/events/coreEventManager.js +19 -36
  147. package/dist/internal/events/coreEventManager.js.map +1 -1
  148. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  149. package/dist/internal/events/coreEventManager.test.js +87 -0
  150. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  151. package/dist/internal/events/eventManager.d.ts +11 -36
  152. package/dist/internal/events/eventManager.js +59 -106
  153. package/dist/internal/events/eventManager.js.map +1 -1
  154. package/dist/internal/events/eventManager.test.js +177 -83
  155. package/dist/internal/events/eventManager.test.js.map +1 -1
  156. package/dist/internal/events/index.d.ts +16 -36
  157. package/dist/internal/events/index.js +56 -72
  158. package/dist/internal/events/index.js.map +1 -1
  159. package/dist/internal/events/interface.d.ts +59 -14
  160. package/dist/internal/events/interface.js +12 -3
  161. package/dist/internal/events/interface.js.map +1 -1
  162. package/dist/internal/events/volumeEventManager.d.ts +9 -19
  163. package/dist/internal/events/volumeEventManager.js +58 -45
  164. package/dist/internal/events/volumeEventManager.js.map +1 -1
  165. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  166. package/dist/internal/events/volumeEventManager.test.js +203 -0
  167. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  168. package/dist/internal/nodes/apiService.d.ts +4 -3
  169. package/dist/internal/nodes/apiService.js +36 -15
  170. package/dist/internal/nodes/apiService.js.map +1 -1
  171. package/dist/internal/nodes/apiService.test.js +60 -41
  172. package/dist/internal/nodes/apiService.test.js.map +1 -1
  173. package/dist/internal/nodes/cache.d.ts +14 -5
  174. package/dist/internal/nodes/cache.js +31 -7
  175. package/dist/internal/nodes/cache.js.map +1 -1
  176. package/dist/internal/nodes/cache.test.js +31 -9
  177. package/dist/internal/nodes/cache.test.js.map +1 -1
  178. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  179. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  180. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  181. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  182. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  183. package/dist/internal/nodes/cryptoService.js +11 -17
  184. package/dist/internal/nodes/cryptoService.js.map +1 -1
  185. package/dist/internal/nodes/cryptoService.test.js +320 -241
  186. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  187. package/dist/internal/nodes/events.d.ts +8 -84
  188. package/dist/internal/nodes/events.js +43 -217
  189. package/dist/internal/nodes/events.js.map +1 -1
  190. package/dist/internal/nodes/events.test.js +35 -279
  191. package/dist/internal/nodes/events.test.js.map +1 -1
  192. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  193. package/dist/internal/nodes/extendedAttributes.js +3 -1
  194. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  195. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  196. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  197. package/dist/internal/nodes/index.d.ts +12 -13
  198. package/dist/internal/nodes/index.js +5 -5
  199. package/dist/internal/nodes/index.js.map +1 -1
  200. package/dist/internal/nodes/index.test.js +24 -32
  201. package/dist/internal/nodes/index.test.js.map +1 -1
  202. package/dist/internal/nodes/interface.d.ts +2 -2
  203. package/dist/internal/nodes/nodesAccess.d.ts +22 -7
  204. package/dist/internal/nodes/nodesAccess.js +65 -16
  205. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  206. package/dist/internal/nodes/nodesAccess.test.js +165 -101
  207. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  208. package/dist/internal/nodes/nodesManagement.d.ts +7 -9
  209. package/dist/internal/nodes/nodesManagement.js +21 -33
  210. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  211. package/dist/internal/nodes/nodesManagement.test.js +42 -21
  212. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  213. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  214. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  215. package/dist/internal/photos/albums.d.ts +3 -3
  216. package/dist/internal/photos/albums.js.map +1 -1
  217. package/dist/internal/photos/apiService.d.ts +1 -1
  218. package/dist/internal/photos/apiService.js +3 -6
  219. package/dist/internal/photos/apiService.js.map +1 -1
  220. package/dist/internal/photos/cache.d.ts +1 -1
  221. package/dist/internal/photos/index.d.ts +5 -5
  222. package/dist/internal/photos/index.js.map +1 -1
  223. package/dist/internal/photos/interface.d.ts +2 -2
  224. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  225. package/dist/internal/photos/photosTimeline.js +1 -2
  226. package/dist/internal/photos/photosTimeline.js.map +1 -1
  227. package/dist/internal/sdkEvents.d.ts +1 -1
  228. package/dist/internal/sdkEvents.js +2 -7
  229. package/dist/internal/sdkEvents.js.map +1 -1
  230. package/dist/internal/sdkEvents.test.js +8 -8
  231. package/dist/internal/shares/apiService.d.ts +2 -2
  232. package/dist/internal/shares/apiService.js +5 -3
  233. package/dist/internal/shares/apiService.js.map +1 -1
  234. package/dist/internal/shares/cache.d.ts +4 -2
  235. package/dist/internal/shares/cache.js +14 -6
  236. package/dist/internal/shares/cache.js.map +1 -1
  237. package/dist/internal/shares/cache.test.js.map +1 -1
  238. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  239. package/dist/internal/shares/cryptoCache.test.js +8 -2
  240. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  241. package/dist/internal/shares/cryptoService.d.ts +3 -3
  242. package/dist/internal/shares/cryptoService.js.map +1 -1
  243. package/dist/internal/shares/cryptoService.test.js +42 -42
  244. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  245. package/dist/internal/shares/index.d.ts +4 -4
  246. package/dist/internal/shares/index.js.map +1 -1
  247. package/dist/internal/shares/interface.d.ts +2 -2
  248. package/dist/internal/shares/manager.d.ts +8 -7
  249. package/dist/internal/shares/manager.js +3 -0
  250. package/dist/internal/shares/manager.js.map +1 -1
  251. package/dist/internal/shares/manager.test.js +71 -63
  252. package/dist/internal/shares/manager.test.js.map +1 -1
  253. package/dist/internal/sharing/apiService.d.ts +4 -4
  254. package/dist/internal/sharing/apiService.js +5 -3
  255. package/dist/internal/sharing/apiService.js.map +1 -1
  256. package/dist/internal/sharing/cache.d.ts +1 -1
  257. package/dist/internal/sharing/cache.test.js +33 -33
  258. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  259. package/dist/internal/sharing/cryptoService.js +3 -4
  260. package/dist/internal/sharing/cryptoService.js.map +1 -1
  261. package/dist/internal/sharing/cryptoService.test.js +39 -39
  262. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  263. package/dist/internal/sharing/events.d.ts +24 -56
  264. package/dist/internal/sharing/events.js +45 -138
  265. package/dist/internal/sharing/events.js.map +1 -1
  266. package/dist/internal/sharing/events.test.js +85 -189
  267. package/dist/internal/sharing/events.test.js.map +1 -1
  268. package/dist/internal/sharing/index.d.ts +8 -9
  269. package/dist/internal/sharing/index.js +5 -5
  270. package/dist/internal/sharing/index.js.map +1 -1
  271. package/dist/internal/sharing/interface.d.ts +8 -4
  272. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  273. package/dist/internal/sharing/sharingAccess.js +8 -4
  274. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  275. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  276. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  277. package/dist/internal/sharing/sharingManagement.d.ts +5 -6
  278. package/dist/internal/sharing/sharingManagement.js +12 -16
  279. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  280. package/dist/internal/sharing/sharingManagement.test.js +305 -286
  281. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  282. package/dist/internal/uids.js.map +1 -1
  283. package/dist/internal/upload/apiService.d.ts +5 -6
  284. package/dist/internal/upload/apiService.js +8 -5
  285. package/dist/internal/upload/apiService.js.map +1 -1
  286. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  287. package/dist/internal/upload/blockVerifier.js +1 -1
  288. package/dist/internal/upload/blockVerifier.js.map +1 -1
  289. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  290. package/dist/internal/upload/cryptoService.d.ts +4 -4
  291. package/dist/internal/upload/cryptoService.js +4 -4
  292. package/dist/internal/upload/cryptoService.js.map +1 -1
  293. package/dist/internal/upload/digests.js.map +1 -1
  294. package/dist/internal/upload/fileUploader.d.ts +6 -6
  295. package/dist/internal/upload/fileUploader.js.map +1 -1
  296. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  297. package/dist/internal/upload/index.d.ts +6 -6
  298. package/dist/internal/upload/index.js +3 -3
  299. package/dist/internal/upload/index.js.map +1 -1
  300. package/dist/internal/upload/interface.d.ts +5 -3
  301. package/dist/internal/upload/manager.d.ts +8 -8
  302. package/dist/internal/upload/manager.js +23 -52
  303. package/dist/internal/upload/manager.js.map +1 -1
  304. package/dist/internal/upload/manager.test.js +185 -147
  305. package/dist/internal/upload/manager.test.js.map +1 -1
  306. package/dist/internal/upload/streamUploader.d.ts +6 -6
  307. package/dist/internal/upload/streamUploader.js +9 -8
  308. package/dist/internal/upload/streamUploader.js.map +1 -1
  309. package/dist/internal/upload/streamUploader.test.js +17 -12
  310. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  311. package/dist/internal/upload/telemetry.d.ts +3 -3
  312. package/dist/internal/upload/telemetry.js +5 -3
  313. package/dist/internal/upload/telemetry.js.map +1 -1
  314. package/dist/internal/upload/telemetry.test.js +8 -8
  315. package/dist/internal/upload/telemetry.test.js.map +1 -1
  316. package/dist/protonDriveClient.d.ts +27 -170
  317. package/dist/protonDriveClient.js +37 -198
  318. package/dist/protonDriveClient.js.map +1 -1
  319. package/dist/protonDrivePhotosClient.js +3 -2
  320. package/dist/protonDrivePhotosClient.js.map +1 -1
  321. package/dist/telemetry.js +18 -15
  322. package/dist/telemetry.js.map +1 -1
  323. package/dist/tests/logger.js.map +1 -1
  324. package/dist/tests/telemetry.d.ts +1 -1
  325. package/dist/transformers.js +4 -2
  326. package/dist/transformers.js.map +1 -1
  327. package/package.json +3 -3
  328. package/src/cache/index.ts +1 -0
  329. package/src/cache/interface.ts +22 -22
  330. package/src/cache/memoryCache.test.ts +7 -7
  331. package/src/cache/memoryCache.ts +5 -5
  332. package/src/cache/nullCache.ts +38 -0
  333. package/src/config.ts +17 -2
  334. package/src/crypto/driveCrypto.test.ts +15 -15
  335. package/src/crypto/driveCrypto.ts +120 -156
  336. package/src/crypto/hmac.ts +1 -1
  337. package/src/crypto/interface.ts +63 -72
  338. package/src/crypto/openPGPCrypto.ts +76 -94
  339. package/src/crypto/utils.ts +1 -1
  340. package/src/diagnostic/eventsGenerator.ts +48 -0
  341. package/src/diagnostic/httpClient.ts +84 -0
  342. package/src/diagnostic/index.ts +40 -0
  343. package/src/diagnostic/integrityVerificationStream.ts +55 -0
  344. package/src/diagnostic/interface.ts +158 -0
  345. package/src/diagnostic/sdkDiagnostic.ts +249 -0
  346. package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
  347. package/src/diagnostic/telemetry.ts +74 -0
  348. package/src/diagnostic/zipGenerators.test.ts +177 -0
  349. package/src/diagnostic/zipGenerators.ts +70 -0
  350. package/src/errors.ts +25 -22
  351. package/src/index.ts +3 -3
  352. package/src/interface/account.ts +10 -10
  353. package/src/interface/author.ts +6 -6
  354. package/src/interface/config.ts +28 -0
  355. package/src/interface/devices.ts +6 -6
  356. package/src/interface/download.ts +12 -9
  357. package/src/interface/events.ts +76 -25
  358. package/src/interface/httpClient.ts +11 -27
  359. package/src/interface/index.ts +81 -20
  360. package/src/interface/nodes.ts +67 -60
  361. package/src/interface/result.ts +1 -3
  362. package/src/interface/sharing.ts +60 -56
  363. package/src/interface/telemetry.ts +74 -74
  364. package/src/interface/thumbnail.ts +5 -6
  365. package/src/interface/upload.ts +25 -11
  366. package/src/internal/apiService/apiService.test.ts +109 -76
  367. package/src/internal/apiService/apiService.ts +40 -26
  368. package/src/internal/apiService/coreTypes.ts +2474 -2463
  369. package/src/internal/apiService/driveTypes.ts +1868 -1822
  370. package/src/internal/apiService/errorCodes.ts +4 -4
  371. package/src/internal/apiService/errors.test.ts +25 -23
  372. package/src/internal/apiService/errors.ts +15 -9
  373. package/src/internal/apiService/index.ts +1 -1
  374. package/src/internal/apiService/transformers.ts +2 -2
  375. package/src/internal/asyncIteratorMap.test.ts +4 -4
  376. package/src/internal/asyncIteratorMap.ts +1 -1
  377. package/src/internal/asyncIteratorRace.test.ts +149 -0
  378. package/src/internal/asyncIteratorRace.ts +79 -0
  379. package/src/internal/batch.test.ts +50 -0
  380. package/src/internal/batch.ts +9 -0
  381. package/src/internal/batchLoading.test.ts +13 -14
  382. package/src/internal/batchLoading.ts +8 -8
  383. package/src/internal/devices/apiService.ts +58 -51
  384. package/src/internal/devices/cryptoService.ts +22 -17
  385. package/src/internal/devices/index.ts +17 -10
  386. package/src/internal/devices/interface.ts +21 -12
  387. package/src/internal/devices/manager.test.ts +40 -9
  388. package/src/internal/devices/manager.ts +3 -3
  389. package/src/internal/download/apiService.ts +72 -52
  390. package/src/internal/download/cryptoService.ts +34 -18
  391. package/src/internal/download/fileDownloader.test.ts +25 -9
  392. package/src/internal/download/fileDownloader.ts +38 -20
  393. package/src/internal/download/index.ts +19 -19
  394. package/src/internal/download/interface.ts +19 -20
  395. package/src/internal/download/queue.ts +3 -3
  396. package/src/internal/download/telemetry.test.ts +11 -11
  397. package/src/internal/download/telemetry.ts +24 -14
  398. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  399. package/src/internal/download/thumbnailDownloader.ts +43 -32
  400. package/src/internal/errors.ts +7 -5
  401. package/src/internal/events/apiService.ts +46 -36
  402. package/src/internal/events/coreEventManager.test.ts +101 -0
  403. package/src/internal/events/coreEventManager.ts +26 -48
  404. package/src/internal/events/eventManager.test.ts +211 -93
  405. package/src/internal/events/eventManager.ts +72 -117
  406. package/src/internal/events/index.ts +71 -91
  407. package/src/internal/events/interface.ts +92 -29
  408. package/src/internal/events/volumeEventManager.test.ts +239 -0
  409. package/src/internal/events/volumeEventManager.ts +68 -57
  410. package/src/internal/nodes/apiService.test.ts +197 -147
  411. package/src/internal/nodes/apiService.ts +288 -174
  412. package/src/internal/nodes/cache.test.ts +48 -20
  413. package/src/internal/nodes/cache.ts +79 -45
  414. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  415. package/src/internal/nodes/cryptoCache.ts +10 -5
  416. package/src/internal/nodes/cryptoService.test.ts +492 -351
  417. package/src/internal/nodes/cryptoService.ts +171 -89
  418. package/src/internal/nodes/events.test.ts +48 -344
  419. package/src/internal/nodes/events.ts +48 -254
  420. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  421. package/src/internal/nodes/extendedAttributes.ts +20 -15
  422. package/src/internal/nodes/index.test.ts +51 -55
  423. package/src/internal/nodes/index.ts +32 -22
  424. package/src/internal/nodes/interface.ts +44 -31
  425. package/src/internal/nodes/nodesAccess.test.ts +237 -130
  426. package/src/internal/nodes/nodesAccess.ts +113 -50
  427. package/src/internal/nodes/nodesManagement.test.ts +64 -39
  428. package/src/internal/nodes/nodesManagement.ts +51 -62
  429. package/src/internal/nodes/nodesRevisions.ts +7 -7
  430. package/src/internal/nodes/validations.ts +2 -2
  431. package/src/internal/photos/albums.ts +5 -5
  432. package/src/internal/photos/apiService.ts +4 -7
  433. package/src/internal/photos/cache.ts +1 -1
  434. package/src/internal/photos/index.ts +8 -8
  435. package/src/internal/photos/interface.ts +2 -2
  436. package/src/internal/photos/photosTimeline.ts +4 -5
  437. package/src/internal/sdkEvents.test.ts +10 -10
  438. package/src/internal/sdkEvents.ts +5 -13
  439. package/src/internal/shares/apiService.ts +44 -33
  440. package/src/internal/shares/cache.test.ts +6 -4
  441. package/src/internal/shares/cache.ts +25 -14
  442. package/src/internal/shares/cryptoCache.test.ts +17 -11
  443. package/src/internal/shares/cryptoCache.ts +4 -4
  444. package/src/internal/shares/cryptoService.test.ts +72 -74
  445. package/src/internal/shares/cryptoService.ts +48 -23
  446. package/src/internal/shares/index.ts +23 -11
  447. package/src/internal/shares/interface.ts +8 -8
  448. package/src/internal/shares/manager.test.ts +88 -80
  449. package/src/internal/shares/manager.ts +27 -23
  450. package/src/internal/sharing/apiService.ts +283 -175
  451. package/src/internal/sharing/cache.test.ts +35 -35
  452. package/src/internal/sharing/cache.ts +3 -3
  453. package/src/internal/sharing/cryptoService.test.ts +58 -46
  454. package/src/internal/sharing/cryptoService.ts +121 -83
  455. package/src/internal/sharing/events.test.ts +97 -207
  456. package/src/internal/sharing/events.ts +46 -157
  457. package/src/internal/sharing/index.ts +24 -16
  458. package/src/internal/sharing/interface.ts +46 -42
  459. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  460. package/src/internal/sharing/sharingAccess.ts +39 -21
  461. package/src/internal/sharing/sharingManagement.test.ts +405 -335
  462. package/src/internal/sharing/sharingManagement.ts +144 -75
  463. package/src/internal/uids.ts +1 -1
  464. package/src/internal/upload/apiService.ts +168 -119
  465. package/src/internal/upload/blockVerifier.ts +8 -6
  466. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  467. package/src/internal/upload/cryptoService.ts +42 -36
  468. package/src/internal/upload/digests.ts +2 -2
  469. package/src/internal/upload/fileUploader.test.ts +15 -3
  470. package/src/internal/upload/fileUploader.ts +39 -17
  471. package/src/internal/upload/index.ts +17 -18
  472. package/src/internal/upload/interface.ts +79 -77
  473. package/src/internal/upload/manager.test.ts +222 -175
  474. package/src/internal/upload/manager.ts +74 -80
  475. package/src/internal/upload/queue.ts +3 -3
  476. package/src/internal/upload/streamUploader.test.ts +40 -27
  477. package/src/internal/upload/streamUploader.ts +87 -71
  478. package/src/internal/upload/telemetry.test.ts +11 -11
  479. package/src/internal/upload/telemetry.ts +25 -15
  480. package/src/internal/wait.test.ts +1 -1
  481. package/src/internal/wait.ts +3 -3
  482. package/src/protonDriveClient.ts +189 -276
  483. package/src/protonDrivePhotosClient.ts +20 -13
  484. package/src/telemetry.ts +60 -52
  485. package/src/tests/logger.ts +1 -1
  486. package/src/tests/telemetry.ts +2 -2
  487. package/src/transformers.ts +27 -21
  488. package/src/version.ts +0 -1
  489. package/dist/internal/events/cache.d.ts +0 -28
  490. package/dist/internal/events/cache.js +0 -67
  491. package/dist/internal/events/cache.js.map +0 -1
  492. package/dist/internal/events/cache.test.js +0 -43
  493. package/dist/internal/events/cache.test.js.map +0 -1
  494. package/src/internal/events/cache.test.ts +0 -47
  495. package/src/internal/events/cache.ts +0 -80
  496. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
@@ -1,120 +1,214 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const logger_1 = require("../../tests/logger");
4
- const apiService_1 = require("../apiService");
5
4
  const eventManager_1 = require("./eventManager");
5
+ const interface_1 = require("./interface");
6
6
  jest.useFakeTimers();
7
- describe("EventManager", () => {
7
+ const POLLING_INTERVAL = 1;
8
+ describe('EventManager', () => {
8
9
  let manager;
9
- const getLastEventIdMock = jest.fn();
10
+ const getLatestEventIdMock = jest.fn();
10
11
  const getEventsMock = jest.fn();
11
- const updateLatestEventIdMock = jest.fn();
12
12
  const listenerMock = jest.fn();
13
+ const mockLogger = (0, logger_1.getMockLogger)();
14
+ const subscriptions = [];
13
15
  beforeEach(() => {
14
- jest.clearAllMocks();
15
- getLastEventIdMock.mockImplementation(() => Promise.resolve("eventId1"));
16
- getEventsMock.mockImplementation(() => Promise.resolve({
17
- lastEventId: "eventId2",
18
- more: false,
19
- refresh: false,
20
- events: ["event1", "event2"],
21
- }));
22
- manager = new eventManager_1.EventManager((0, logger_1.getMockLogger)(), getLastEventIdMock, getEventsMock, updateLatestEventIdMock);
23
- manager.addListener(listenerMock);
16
+ const mockEventManager = {
17
+ getLogger: () => mockLogger,
18
+ getLatestEventId: getLatestEventIdMock,
19
+ getEvents: getEventsMock,
20
+ };
21
+ manager = new eventManager_1.EventManager(mockEventManager, POLLING_INTERVAL, null);
22
+ const subscription = manager.addListener(listenerMock);
23
+ subscriptions.push(subscription);
24
24
  });
25
25
  afterEach(async () => {
26
26
  await manager.stop();
27
+ while (subscriptions.length > 0) {
28
+ const subscription = subscriptions.pop();
29
+ subscription?.dispose();
30
+ }
31
+ jest.clearAllMocks();
27
32
  });
28
- it("should get latest event ID on first run only", async () => {
29
- await manager.start();
30
- expect(getLastEventIdMock).toHaveBeenCalledTimes(1);
33
+ it('should start polling when started', async () => {
34
+ getLatestEventIdMock.mockResolvedValue('EventId1');
35
+ const mockEvents = [
36
+ [
37
+ {
38
+ type: interface_1.DriveEventType.FastForward,
39
+ treeEventScopeId: 'volume1',
40
+ eventId: 'EventId2',
41
+ },
42
+ ],
43
+ [
44
+ {
45
+ type: interface_1.DriveEventType.FastForward,
46
+ treeEventScopeId: 'volume1',
47
+ eventId: 'EventId3',
48
+ },
49
+ ],
50
+ ];
51
+ getEventsMock
52
+ .mockImplementationOnce(async function* () {
53
+ yield* mockEvents[0];
54
+ })
55
+ .mockImplementationOnce(async function* () {
56
+ yield* mockEvents[1];
57
+ })
58
+ .mockImplementationOnce(async function* () { });
59
+ expect(getLatestEventIdMock).toHaveBeenCalledTimes(0);
31
60
  expect(getEventsMock).toHaveBeenCalledTimes(0);
32
- expect(listenerMock).toHaveBeenCalledTimes(0);
33
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
34
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
61
+ expect(await manager.start()).toBeUndefined();
62
+ expect(getLatestEventIdMock).toHaveBeenCalledTimes(1);
63
+ expect(getEventsMock).toHaveBeenCalledWith('EventId1');
64
+ await jest.runOnlyPendingTimersAsync();
65
+ expect(getEventsMock).toHaveBeenCalledTimes(2);
66
+ expect(getEventsMock).toHaveBeenCalledWith('EventId2');
35
67
  });
36
- it("should notify about events in the next run", async () => {
68
+ it('should stop polling when stopped', async () => {
69
+ getLatestEventIdMock.mockResolvedValue('eventId1');
70
+ getEventsMock.mockImplementation(async function* () {
71
+ yield {
72
+ type: interface_1.DriveEventType.FastForward,
73
+ treeEventScopeId: 'volume1',
74
+ eventId: 'eventId1',
75
+ };
76
+ });
37
77
  await manager.start();
38
- expect(getLastEventIdMock).toHaveBeenCalledTimes(1);
39
- expect(getEventsMock).toHaveBeenCalledTimes(0);
40
- expect(listenerMock).toHaveBeenCalledTimes(0);
41
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
42
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
43
- updateLatestEventIdMock.mockClear();
44
78
  await jest.runOnlyPendingTimersAsync();
45
- expect(getEventsMock).toHaveBeenCalledTimes(1);
79
+ const callsBeforeStop = getEventsMock.mock.calls.length;
80
+ await manager.stop();
81
+ await jest.runOnlyPendingTimersAsync();
82
+ // Should not have made additional calls after stopping
83
+ expect(getEventsMock).toHaveBeenCalledTimes(callsBeforeStop);
84
+ });
85
+ it('should notify all listeners when getting events', async () => {
86
+ getLatestEventIdMock.mockResolvedValue('eventId1');
87
+ const mockEvents = [
88
+ {
89
+ type: interface_1.DriveEventType.NodeCreated,
90
+ nodeUid: 'node1',
91
+ parentNodeUid: 'parent1',
92
+ isTrashed: false,
93
+ isShared: false,
94
+ treeEventScopeId: 'volume1',
95
+ eventId: 'eventId2',
96
+ },
97
+ ];
98
+ getEventsMock
99
+ .mockImplementationOnce(async function* () {
100
+ yield* mockEvents;
101
+ })
102
+ .mockImplementation(async function* () { });
103
+ expect(await manager.start()).toBeUndefined();
104
+ await jest.runOnlyPendingTimersAsync();
46
105
  expect(listenerMock).toHaveBeenCalledTimes(1);
47
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
48
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
106
+ expect(listenerMock).toHaveBeenNthCalledWith(1, mockEvents[0]);
107
+ });
108
+ it('should propagate unsubscription errors', async () => {
109
+ getLatestEventIdMock.mockImplementation(() => {
110
+ throw new interface_1.UnsubscribeFromEventsSourceError('Not found');
111
+ });
112
+ await expect(manager.start()).rejects.toThrow(interface_1.UnsubscribeFromEventsSourceError);
113
+ expect(getLatestEventIdMock).toHaveBeenCalledTimes(1);
114
+ expect(listenerMock).toHaveBeenCalledTimes(0);
115
+ expect(getEventsMock).toHaveBeenCalledTimes(0);
49
116
  });
50
- it("should continue with more events", async () => {
51
- getEventsMock.mockImplementation((lastEventId) => Promise.resolve({
52
- lastEventId: lastEventId === "eventId1" ? "eventId2" : "eventId3",
53
- more: lastEventId === "eventId1" ? true : false,
54
- refresh: false,
55
- events: lastEventId === "eventId1" ? ["event1", "event2"] : ["event3"],
56
- }));
117
+ it('should continue processing multiple events', async () => {
118
+ getLatestEventIdMock.mockResolvedValue('eventId1');
119
+ const mockEvents = [
120
+ {
121
+ type: interface_1.DriveEventType.NodeCreated,
122
+ nodeUid: 'node1',
123
+ parentNodeUid: 'parent1',
124
+ isTrashed: false,
125
+ isShared: false,
126
+ treeEventScopeId: 'volume1',
127
+ eventId: 'eventId2',
128
+ },
129
+ {
130
+ type: interface_1.DriveEventType.NodeCreated,
131
+ nodeUid: 'node2',
132
+ parentNodeUid: 'parent1',
133
+ isTrashed: false,
134
+ isShared: false,
135
+ treeEventScopeId: 'volume1',
136
+ eventId: 'eventId3',
137
+ },
138
+ ];
139
+ getEventsMock
140
+ .mockImplementationOnce(async function* () {
141
+ yield* mockEvents;
142
+ })
143
+ .mockImplementation(async function* () {
144
+ // Empty generator for subsequent calls
145
+ });
57
146
  await manager.start();
58
147
  await jest.runOnlyPendingTimersAsync();
59
- expect(getEventsMock).toHaveBeenCalledTimes(2);
60
148
  expect(listenerMock).toHaveBeenCalledTimes(2);
61
- expect(listenerMock).toHaveBeenCalledWith(["event1", "event2"], false);
62
- expect(listenerMock).toHaveBeenCalledWith(["event3"], false);
63
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(3);
64
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
65
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
66
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId3');
67
- });
68
- it("should refresh if event does not exist", async () => {
69
- getEventsMock.mockImplementation(() => Promise.reject(new apiService_1.NotFoundAPIError('Event not found', 2501)));
70
- await manager.start();
149
+ expect(listenerMock).toHaveBeenNthCalledWith(1, mockEvents[0]);
150
+ expect(listenerMock).toHaveBeenNthCalledWith(2, mockEvents[1]);
151
+ getEventsMock.mockImplementationOnce(async function* () {
152
+ yield* mockEvents;
153
+ });
71
154
  await jest.runOnlyPendingTimersAsync();
72
- expect(getLastEventIdMock).toHaveBeenCalledTimes(2);
73
- expect(listenerMock).toHaveBeenCalledTimes(1);
74
- expect(listenerMock).toHaveBeenCalledWith([], true);
75
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
76
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId1');
155
+ expect(listenerMock).toHaveBeenCalledTimes(4);
156
+ expect(listenerMock).toHaveBeenNthCalledWith(1, mockEvents[0]);
157
+ expect(listenerMock).toHaveBeenNthCalledWith(2, mockEvents[1]);
77
158
  });
78
- it("should retry on error", async () => {
79
- let index = 0;
80
- getEventsMock.mockImplementation(() => {
81
- index++;
82
- if (index <= 3) {
83
- return Promise.reject(new Error("Error"));
159
+ it('should retry on error with exponential backoff', async () => {
160
+ getLatestEventIdMock.mockResolvedValue('eventId1');
161
+ let callCount = 0;
162
+ getEventsMock.mockImplementation(async function* () {
163
+ callCount++;
164
+ if (callCount <= 3) {
165
+ throw new Error('Network error');
84
166
  }
85
- return Promise.resolve({
86
- lastEventId: "eventId2",
87
- more: false,
88
- refresh: false,
89
- events: ["event1", "event2"],
90
- });
167
+ yield {
168
+ type: interface_1.DriveEventType.FastForward,
169
+ treeEventScopeId: 'volume1',
170
+ eventId: 'eventId3',
171
+ };
91
172
  });
92
- await manager.start();
93
- updateLatestEventIdMock.mockClear();
94
- // First failure.
95
- await jest.runOnlyPendingTimersAsync();
96
- expect(listenerMock).toHaveBeenCalledTimes(0);
97
- expect(manager.nextPollTimeout).toBe(30000);
98
- // Second failure.
173
+ expect(manager['retryIndex']).toEqual(0);
174
+ expect(await manager.start()).toBeUndefined();
175
+ expect(getEventsMock).toHaveBeenCalledTimes(1);
176
+ expect(manager['retryIndex']).toEqual(1);
99
177
  await jest.runOnlyPendingTimersAsync();
100
- expect(listenerMock).toHaveBeenCalledTimes(0);
101
- expect(manager.nextPollTimeout).toBe(60000);
102
- // Third failure.
178
+ expect(getEventsMock).toHaveBeenCalledTimes(2);
179
+ expect(manager['retryIndex']).toEqual(2);
103
180
  await jest.runOnlyPendingTimersAsync();
181
+ expect(manager['retryIndex']).toEqual(3);
104
182
  expect(listenerMock).toHaveBeenCalledTimes(0);
105
- expect(manager.nextPollTimeout).toBe(90000);
106
- // And now it passes.
107
183
  await jest.runOnlyPendingTimersAsync();
108
184
  expect(listenerMock).toHaveBeenCalledTimes(1);
109
- expect(listenerMock).toHaveBeenCalledWith(["event1", "event2"], false);
110
- expect(updateLatestEventIdMock).toHaveBeenCalledTimes(1);
111
- expect(updateLatestEventIdMock).toHaveBeenCalledWith('eventId2');
185
+ // After success, retry index should reset
186
+ expect(manager['retryIndex']).toEqual(0);
112
187
  });
113
- it("should stop polling", async () => {
114
- await manager.start();
188
+ it('should stop polling when stopped immediately', async () => {
189
+ getLatestEventIdMock.mockResolvedValue('eventId1');
190
+ getEventsMock.mockImplementation(async function* () {
191
+ yield {
192
+ type: interface_1.DriveEventType.FastForward,
193
+ treeEventScopeId: 'volume1',
194
+ eventId: 'eventId1',
195
+ };
196
+ });
197
+ expect(await manager.start()).toBeUndefined();
198
+ expect(getEventsMock).toHaveBeenCalledTimes(1);
115
199
  await manager.stop();
116
200
  await jest.runOnlyPendingTimersAsync();
117
- expect(getEventsMock).toHaveBeenCalledTimes(0);
201
+ // getEvents should have been called once during start, but not again after stop
202
+ expect(getEventsMock).toHaveBeenCalledTimes(1);
203
+ });
204
+ it('should handle empty event streams', async () => {
205
+ getLatestEventIdMock.mockResolvedValue('eventId1');
206
+ getEventsMock.mockImplementation(async function* () {
207
+ // Empty generator - no events
208
+ });
209
+ await manager.start();
210
+ await jest.runOnlyPendingTimersAsync();
211
+ expect(listenerMock).toHaveBeenCalledTimes(0);
118
212
  });
119
213
  });
120
214
  //# sourceMappingURL=eventManager.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
- import { ProtonDriveEntitiesCache, ProtonDriveTelemetry } from "../../interface";
2
- import { DriveAPIService } from "../apiService";
3
- import { DriveListener } from "./interface";
4
- export type { DriveEvent, DriveListener } from "./interface";
5
- export { DriveEventType } from "./interface";
1
+ import { ProtonDriveTelemetry } from '../../interface';
2
+ import { DriveAPIService } from '../apiService';
3
+ import { DriveListener, EventSubscription, LatestEventIdProvider } from './interface';
4
+ import { SharesManager } from '../shares/manager';
5
+ export type { DriveEvent, DriveListener } from './interface';
6
+ export { DriveEventType } from './interface';
6
7
  /**
7
8
  * Service for listening to drive events. The service is responsible for
8
9
  * managing the subscriptions to the events and notifying the listeners
@@ -10,41 +11,20 @@ export { DriveEventType } from "./interface";
10
11
  */
11
12
  export declare class DriveEventsService {
12
13
  private telemetry;
14
+ private shareManagement;
15
+ private cacheEventListeners;
16
+ private latestEventIdProvider?;
13
17
  private apiService;
14
- private cache;
15
- private subscribedToRemoteDataUpdates;
16
- private listeners;
17
- private coreEvents;
18
- private volumesEvents;
18
+ private coreEvents?;
19
+ private volumeEventManagers;
19
20
  private logger;
20
- constructor(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache);
21
+ constructor(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, shareManagement: SharesManager, cacheEventListeners?: DriveListener[], latestEventIdProvider?: LatestEventIdProvider | undefined);
21
22
  /**
22
- * Loads all the subscribed volumes (including core events) from the
23
- * cache and starts listening to their events. Any additional volume
24
- * that is subscribed to later will be automatically started.
23
+ * Subscribe to drive events. The treeEventScopeId can be obtained from a node.
25
24
  */
26
- subscribeToRemoteDataUpdates(): Promise<void>;
27
- /**
28
- * Subscribe to given volume. The volume will be polled for events
29
- * with the polling interval depending on the type of the volume.
30
- * Own volumes are polled with highest frequency, while others are
31
- * polled with lower frequency depending on the total number of
32
- * subscriptions.
33
- *
34
- * @param isOwnVolume - Owned volumes are polled with higher frequency.
35
- */
36
- listenToVolume(volumeId: string, isOwnVolume?: boolean): Promise<void>;
37
- private loadSubscribedVolumeEventServices;
25
+ subscribeToTreeEvents(treeEventScopeId: string, callback: DriveListener): Promise<EventSubscription>;
26
+ subscribeToCoreEvents(callback: DriveListener): Promise<EventSubscription>;
38
27
  private sendNumberOfVolumeSubscriptionsToTelemetry;
39
28
  private createVolumeEventManager;
40
- /**
41
- * Listen to the drive events. The listener will be called with the
42
- * new events as they arrive.
43
- *
44
- * One call always provides events from withing the same volume. The
45
- * second argument of the callback `fullRefreshVolumeId` is thus single
46
- * ID and if multiple volumes must be fully refreshed, client will
47
- * receive multiple calls.
48
- */
49
- addListener(callback: DriveListener): void;
29
+ private getDefaultVolumePollingInterval;
50
30
  }
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DriveEventsService = exports.DriveEventType = void 0;
4
4
  const apiService_1 = require("./apiService");
5
- const cache_1 = require("./cache");
6
5
  const coreEventManager_1 = require("./coreEventManager");
7
6
  const volumeEventManager_1 = require("./volumeEventManager");
7
+ const eventManager_1 = require("./eventManager");
8
8
  var interface_1 = require("./interface");
9
9
  Object.defineProperty(exports, "DriveEventType", { enumerable: true, get: function () { return interface_1.DriveEventType; } });
10
10
  const OWN_VOLUME_POLLING_INTERVAL = 30;
11
11
  const OTHER_VOLUME_POLLING_INTERVAL = 60;
12
+ const CORE_POLLING_INTERVAL = 30;
12
13
  /**
13
14
  * Service for listening to drive events. The service is responsible for
14
15
  * managing the subscriptions to the events and notifying the listeners
@@ -16,101 +17,84 @@ const OTHER_VOLUME_POLLING_INTERVAL = 60;
16
17
  */
17
18
  class DriveEventsService {
18
19
  telemetry;
20
+ shareManagement;
21
+ cacheEventListeners;
22
+ latestEventIdProvider;
19
23
  apiService;
20
- cache;
21
- subscribedToRemoteDataUpdates = false;
22
- listeners = [];
23
24
  coreEvents;
24
- volumesEvents;
25
+ volumeEventManagers;
25
26
  logger;
26
- constructor(telemetry, apiService, driveEntitiesCache) {
27
+ constructor(telemetry, apiService, shareManagement, cacheEventListeners = [], latestEventIdProvider) {
27
28
  this.telemetry = telemetry;
29
+ this.shareManagement = shareManagement;
30
+ this.cacheEventListeners = cacheEventListeners;
31
+ this.latestEventIdProvider = latestEventIdProvider;
28
32
  this.telemetry = telemetry;
29
33
  this.logger = telemetry.getLogger('events');
30
34
  this.apiService = new apiService_1.EventsAPIService(apiService);
31
- this.cache = new cache_1.EventsCache(driveEntitiesCache);
32
- // FIXME: Allow to pass own core events manager from the public interface.
33
- this.coreEvents = new coreEventManager_1.CoreEventManager(this.logger, this.apiService, this.cache);
34
- this.volumesEvents = {};
35
+ this.volumeEventManagers = {};
35
36
  }
36
37
  /**
37
- * Loads all the subscribed volumes (including core events) from the
38
- * cache and starts listening to their events. Any additional volume
39
- * that is subscribed to later will be automatically started.
38
+ * Subscribe to drive events. The treeEventScopeId can be obtained from a node.
40
39
  */
41
- async subscribeToRemoteDataUpdates() {
42
- if (this.subscribedToRemoteDataUpdates) {
43
- return;
44
- }
45
- await this.loadSubscribedVolumeEventServices();
46
- this.sendNumberOfVolumeSubscriptionsToTelemetry();
47
- this.subscribedToRemoteDataUpdates = true;
48
- await this.coreEvents.startSubscription();
49
- await Promise.all(Object.values(this.volumesEvents)
50
- .map((volumeEvents) => volumeEvents.startSubscription()));
51
- }
52
- /**
53
- * Subscribe to given volume. The volume will be polled for events
54
- * with the polling interval depending on the type of the volume.
55
- * Own volumes are polled with highest frequency, while others are
56
- * polled with lower frequency depending on the total number of
57
- * subscriptions.
58
- *
59
- * @param isOwnVolume - Owned volumes are polled with higher frequency.
60
- */
61
- async listenToVolume(volumeId, isOwnVolume = false) {
62
- await this.loadSubscribedVolumeEventServices();
63
- if (this.volumesEvents[volumeId]) {
64
- return;
65
- }
40
+ async subscribeToTreeEvents(treeEventScopeId, callback) {
41
+ const volumeId = treeEventScopeId;
66
42
  this.logger.debug(`Creating volume event manager for volume ${volumeId}`);
67
- const manager = this.createVolumeEventManager(volumeId, isOwnVolume);
68
- // FIXME: Use dynamic algorithm to determine polling interval for non-own volumes.
69
- manager.setPollingInterval(isOwnVolume ? OWN_VOLUME_POLLING_INTERVAL : OTHER_VOLUME_POLLING_INTERVAL);
70
- if (this.subscribedToRemoteDataUpdates) {
71
- await manager.startSubscription();
43
+ let manager = this.volumeEventManagers[volumeId];
44
+ let started = true;
45
+ if (manager === undefined) {
46
+ manager = await this.createVolumeEventManager(volumeId);
47
+ this.volumeEventManagers[volumeId] = manager;
48
+ started = false;
72
49
  this.sendNumberOfVolumeSubscriptionsToTelemetry();
73
50
  }
51
+ const eventSubscription = manager.addListener(callback);
52
+ if (!started) {
53
+ await manager.start();
54
+ }
55
+ return eventSubscription;
74
56
  }
75
- async loadSubscribedVolumeEventServices() {
76
- for (const volumeId of await this.cache.getSubscribedVolumeIds()) {
77
- if (!this.volumesEvents[volumeId]) {
78
- const isOwnVolume = await this.cache.isOwnVolume(volumeId) || false;
79
- this.createVolumeEventManager(volumeId, isOwnVolume);
57
+ // FIXME: Allow to pass own core events manager from the public interface.
58
+ async subscribeToCoreEvents(callback) {
59
+ if (this.latestEventIdProvider === null || this.latestEventIdProvider === undefined) {
60
+ throw new Error('Cannot subscribe to events without passing a latestEventIdProvider in ProtonDriveClient initialization');
61
+ }
62
+ if (this.coreEvents === undefined) {
63
+ const coreEventManager = new coreEventManager_1.CoreEventManager(this.logger, this.apiService);
64
+ const latestEventId = this.latestEventIdProvider.getLatestEventId('core') ?? null;
65
+ this.coreEvents = new eventManager_1.EventManager(coreEventManager, CORE_POLLING_INTERVAL, latestEventId);
66
+ for (const listener of this.cacheEventListeners) {
67
+ this.coreEvents.addListener(listener);
80
68
  }
81
69
  }
70
+ const eventSubscription = this.coreEvents.addListener(callback);
71
+ await this.coreEvents.start();
72
+ return eventSubscription;
82
73
  }
83
74
  sendNumberOfVolumeSubscriptionsToTelemetry() {
84
75
  this.telemetry.logEvent({
85
76
  eventName: 'volumeEventsSubscriptionsChanged',
86
- numberOfVolumeSubscriptions: Object.keys(this.volumesEvents).length,
77
+ numberOfVolumeSubscriptions: Object.keys(this.volumeEventManagers).length,
87
78
  });
88
79
  }
89
- createVolumeEventManager(volumeId, isOwnVolume) {
90
- const manager = new volumeEventManager_1.VolumeEventManager(this.logger, this.apiService, this.cache, volumeId, isOwnVolume);
91
- for (const listener of this.listeners) {
92
- manager.addListener(listener);
80
+ async createVolumeEventManager(volumeId) {
81
+ if (this.latestEventIdProvider === null || this.latestEventIdProvider === undefined) {
82
+ throw new Error('Cannot subscribe to events without passing a latestEventIdProvider in ProtonDriveClient initialization');
93
83
  }
94
- this.volumesEvents[volumeId] = manager;
95
- return manager;
96
- }
97
- /**
98
- * Listen to the drive events. The listener will be called with the
99
- * new events as they arrive.
100
- *
101
- * One call always provides events from withing the same volume. The
102
- * second argument of the callback `fullRefreshVolumeId` is thus single
103
- * ID and if multiple volumes must be fully refreshed, client will
104
- * receive multiple calls.
105
- */
106
- addListener(callback) {
107
- // Add new listener to the list for any new event manager.
108
- this.listeners.push(callback);
109
- // Add new listener to all existings managers.
110
- this.coreEvents.addListener(callback);
111
- for (const volumeEvents of Object.values(this.volumesEvents)) {
112
- volumeEvents.addListener(callback);
84
+ const isOwnVolume = await this.shareManagement.isOwnVolume(volumeId);
85
+ const pollingInterval = this.getDefaultVolumePollingInterval(isOwnVolume);
86
+ const volumeEventManager = new volumeEventManager_1.VolumeEventManager(this.logger, this.apiService, volumeId);
87
+ const latestEventId = this.latestEventIdProvider.getLatestEventId(volumeId);
88
+ const eventManager = new eventManager_1.EventManager(volumeEventManager, pollingInterval, latestEventId);
89
+ for (const listener of this.cacheEventListeners) {
90
+ eventManager.addListener(listener);
113
91
  }
92
+ await eventManager.start();
93
+ this.volumeEventManagers[volumeId] = eventManager;
94
+ return eventManager;
95
+ }
96
+ getDefaultVolumePollingInterval(isOwnVolume) {
97
+ return isOwnVolume ? OWN_VOLUME_POLLING_INTERVAL : OTHER_VOLUME_POLLING_INTERVAL;
114
98
  }
115
99
  }
116
100
  exports.DriveEventsService = DriveEventsService;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/events/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/events/index.ts"],"names":[],"mappings":"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"}