@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
@@ -0,0 +1,177 @@
1
+ import { zipGenerators } from './zipGenerators';
2
+
3
+ async function* createTimedGenerator<T>(values: { value: T; delay: number }[]): AsyncGenerator<T> {
4
+ for (const { value, delay } of values) {
5
+ await new Promise((resolve) => setTimeout(resolve, delay));
6
+ yield value;
7
+ }
8
+ }
9
+
10
+ async function* createEmptyGenerator<T>(): AsyncGenerator<T> {
11
+ return;
12
+ }
13
+
14
+ describe('zipGenerators', () => {
15
+ it('should handle both generators being empty', async () => {
16
+ const genA = createEmptyGenerator<string>();
17
+ const genB = createEmptyGenerator<number>();
18
+
19
+ const result: (string | number)[] = [];
20
+ const zipGen = zipGenerators(genA, genB);
21
+
22
+ for await (const value of zipGen) {
23
+ result.push(value);
24
+ }
25
+
26
+ expect(result).toEqual([]);
27
+ });
28
+
29
+ it('should handle one generator being empty (first empty)', async () => {
30
+ const genA = createEmptyGenerator<string>();
31
+ const genB = createTimedGenerator([
32
+ { value: 1, delay: 10 },
33
+ { value: 2, delay: 10 },
34
+ ]);
35
+
36
+ const result: (string | number)[] = [];
37
+ const zipGen = zipGenerators(genA, genB);
38
+
39
+ const promise = (async () => {
40
+ for await (const value of zipGen) {
41
+ result.push(value);
42
+ }
43
+ })();
44
+
45
+ await promise;
46
+
47
+ expect(result).toEqual([1, 2]);
48
+ });
49
+
50
+ it('should handle one generator being empty (second empty)', async () => {
51
+ const genA = createTimedGenerator([
52
+ { value: 'a', delay: 10 },
53
+ { value: 'b', delay: 10 },
54
+ ]);
55
+ const genB = createEmptyGenerator<number>();
56
+
57
+ const result: (string | number)[] = [];
58
+ const zipGen = zipGenerators(genA, genB);
59
+
60
+ const promise = (async () => {
61
+ for await (const value of zipGen) {
62
+ result.push(value);
63
+ }
64
+ })();
65
+
66
+ await promise;
67
+
68
+ expect(result).toEqual(['a', 'b']);
69
+ });
70
+
71
+ it('should handle both generators with same number of elements yielded at same time', async () => {
72
+ const genA = createTimedGenerator([
73
+ { value: 'a1', delay: 10 },
74
+ { value: 'a2', delay: 10 },
75
+ { value: 'a3', delay: 10 },
76
+ ]);
77
+ const genB = createTimedGenerator([
78
+ { value: 'b1', delay: 10 },
79
+ { value: 'b2', delay: 10 },
80
+ { value: 'b3', delay: 10 },
81
+ ]);
82
+
83
+ const result: string[] = [];
84
+ const zipGen = zipGenerators(genA, genB);
85
+
86
+ const promise = (async () => {
87
+ for await (const value of zipGen) {
88
+ result.push(value);
89
+ }
90
+ })();
91
+
92
+ await promise;
93
+
94
+ // Since they yield at the same time, the order depends on Promise.race behavior
95
+ // Both values should be present, but order may vary
96
+ expect(result).toHaveLength(6);
97
+ expect(result).toEqual(expect.arrayContaining(['a1', 'a2', 'a3', 'b1', 'b2', 'b3']));
98
+ });
99
+
100
+ it('should handle generators with different timing - first generator faster', async () => {
101
+ const genA = createTimedGenerator([
102
+ { value: 'fast1', delay: 10 },
103
+ { value: 'fast2', delay: 10 },
104
+ { value: 'fast3', delay: 10 },
105
+ ]);
106
+ const genB = createTimedGenerator([
107
+ { value: 'slow1', delay: 50 },
108
+ { value: 'slow2', delay: 50 },
109
+ ]);
110
+
111
+ const result: string[] = [];
112
+ const zipGen = zipGenerators(genA, genB);
113
+
114
+ const promise = (async () => {
115
+ for await (const value of zipGen) {
116
+ result.push(value);
117
+ }
118
+ })();
119
+
120
+ await promise;
121
+
122
+ expect(result).toEqual(['fast1', 'fast2', 'fast3', 'slow1', 'slow2']);
123
+ });
124
+
125
+ it('should handle generators with different timing - second generator faster', async () => {
126
+ const genA = createTimedGenerator([
127
+ { value: 'slow1', delay: 50 },
128
+ { value: 'slow2', delay: 50 },
129
+ ]);
130
+ const genB = createTimedGenerator([
131
+ { value: 'fast1', delay: 10 },
132
+ { value: 'fast2', delay: 10 },
133
+ { value: 'fast3', delay: 10 },
134
+ ]);
135
+
136
+ const result: string[] = [];
137
+ const zipGen = zipGenerators(genA, genB);
138
+
139
+ const promise = (async () => {
140
+ for await (const value of zipGen) {
141
+ result.push(value);
142
+ }
143
+ })();
144
+
145
+ await promise;
146
+
147
+ expect(result).toEqual(['fast1', 'fast2', 'fast3', 'slow1', 'slow2']);
148
+ });
149
+
150
+ it('should handle mixed timing with overlapping yields', async () => {
151
+ const genA = createTimedGenerator([
152
+ { value: 'A1', delay: 50 },
153
+ { value: 'A2', delay: 100 },
154
+ { value: 'A3', delay: 100 },
155
+ ]);
156
+ const genB = createTimedGenerator([
157
+ { value: 'B1', delay: 100 },
158
+ { value: 'B2', delay: 100 },
159
+ { value: 'B3', delay: 200 },
160
+ ]);
161
+
162
+ const result: string[] = [];
163
+ const timestamps: number[] = [];
164
+ const zipGen = zipGenerators(genA, genB);
165
+
166
+ const promise = (async () => {
167
+ for await (const value of zipGen) {
168
+ result.push(value);
169
+ timestamps.push(Date.now());
170
+ }
171
+ })();
172
+
173
+ await promise;
174
+
175
+ expect(result).toEqual(['A1', 'B1', 'A2', 'B2', 'A3', 'B3']);
176
+ });
177
+ });
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Zips two generators into one.
3
+ *
4
+ * The combined generator yields values from both generators in the order they
5
+ * are produced.
6
+ */
7
+ export async function* zipGenerators<T, U>(
8
+ genA: AsyncGenerator<T>,
9
+ genB: AsyncGenerator<U>,
10
+ options?: {
11
+ stopOnFirstDone?: boolean;
12
+ },
13
+ ): AsyncGenerator<T | U> {
14
+ const { stopOnFirstDone = false } = options || {};
15
+
16
+ const itA = genA[Symbol.asyncIterator]();
17
+ const itB = genB[Symbol.asyncIterator]();
18
+
19
+ let promiseA: Promise<IteratorResult<T>> | undefined = itA.next();
20
+ let promiseB: Promise<IteratorResult<U>> | undefined = itB.next();
21
+
22
+ while (promiseA && promiseB) {
23
+ const result = await Promise.race([
24
+ promiseA.then((res) => ({ source: 'A' as const, result: res })),
25
+ promiseB.then((res) => ({ source: 'B' as const, result: res })),
26
+ ]);
27
+
28
+ if (result.source === 'A') {
29
+ if (result.result.done) {
30
+ promiseA = undefined;
31
+ if (stopOnFirstDone) {
32
+ break;
33
+ }
34
+ } else {
35
+ yield result.result.value;
36
+ promiseA = itA.next();
37
+ }
38
+ } else {
39
+ if (result.result.done) {
40
+ promiseB = undefined;
41
+ if (stopOnFirstDone) {
42
+ break;
43
+ }
44
+ } else {
45
+ yield result.result.value;
46
+ promiseB = itB.next();
47
+ }
48
+ }
49
+ }
50
+
51
+ if (stopOnFirstDone) {
52
+ return;
53
+ }
54
+
55
+ if (promiseA) {
56
+ const result = await promiseA;
57
+ if (!result.done) {
58
+ yield result.value;
59
+ }
60
+ yield* itA;
61
+ }
62
+
63
+ if (promiseB) {
64
+ const result = await promiseB;
65
+ if (!result.done) {
66
+ yield result.value;
67
+ }
68
+ yield* itB;
69
+ }
70
+ }
package/src/errors.ts CHANGED
@@ -2,13 +2,13 @@ import { c } from 'ttag';
2
2
 
3
3
  /**
4
4
  * Base class for all SDK errors.
5
- *
5
+ *
6
6
  * This class can be used for catching all SDK errors. The error should have
7
7
  * translated message in the `message` property that should be shown to the
8
8
  * user without any modification.
9
- *
9
+ *
10
10
  * No retries should be done as that is already handled by the SDK.
11
- *
11
+ *
12
12
  * When SDK throws an error and it is not `ProtonDriveError`, it is unhandled error
13
13
  * by the SDK and usually indicates bug in the SDK. Please, report it.
14
14
  */
@@ -18,7 +18,7 @@ export class ProtonDriveError extends Error {
18
18
 
19
19
  /**
20
20
  * Error thrown when the operation is aborted.
21
- *
21
+ *
22
22
  * This error is thrown when the operation is aborted by the user.
23
23
  * For example, by calling `abort()` on the `AbortSignal`.
24
24
  */
@@ -32,7 +32,7 @@ export class AbortError extends ProtonDriveError {
32
32
 
33
33
  /**
34
34
  * Error thrown when the validation fails.
35
- *
35
+ *
36
36
  * This error is thrown when the validation of the input fails.
37
37
  * Validation can be done on the client side or on the server side.
38
38
  *
@@ -45,7 +45,7 @@ export class ValidationError extends ProtonDriveError {
45
45
 
46
46
  /**
47
47
  * Internal API code.
48
- *
48
+ *
49
49
  * Use only for debugging purposes.
50
50
  */
51
51
  public readonly code?: number;
@@ -64,7 +64,7 @@ export class ValidationError extends ProtonDriveError {
64
64
 
65
65
  /**
66
66
  * Error thrown when the node already exists.
67
- *
67
+ *
68
68
  * This error is thrown when the node with the same name already exists in the
69
69
  * parent folder. The client should ask the user to replace the existing node
70
70
  * or choose another name. The available name is provided in the `availableName`
@@ -75,19 +75,22 @@ export class NodeAlreadyExistsValidationError extends ValidationError {
75
75
 
76
76
  public readonly existingNodeUid?: string;
77
77
 
78
- constructor(message: string, code: number, existingNodeUid?: string) {
78
+ public readonly ongoingUploadByOtherClient: boolean;
79
+
80
+ constructor(message: string, code: number, existingNodeUid?: string, ongoingUploadByOtherClient = false) {
79
81
  super(message, code);
80
82
  this.existingNodeUid = existingNodeUid;
83
+ this.ongoingUploadByOtherClient = ongoingUploadByOtherClient;
81
84
  }
82
85
  }
83
86
 
84
87
  /**
85
88
  * Error thrown when the API call fails.
86
- *
89
+ *
87
90
  * This error covers both HTTP errors and API errors. SDK automatically
88
91
  * retries the request before the error is thrown. The sepcific algorithm
89
92
  * used for retries depends on the type of the error.
90
- *
93
+ *
91
94
  * Client should not retry the request when this error is thrown.
92
95
  */
93
96
  export class ServerError extends ProtonDriveError {
@@ -95,13 +98,13 @@ export class ServerError extends ProtonDriveError {
95
98
 
96
99
  /**
97
100
  * HTTP status code of the response.
98
- *
101
+ *
99
102
  * Use only for debugging purposes.
100
103
  */
101
104
  public readonly statusCode?: number;
102
105
  /**
103
106
  * Internal API code.
104
- *
107
+ *
105
108
  * Use only for debugging purposes.
106
109
  */
107
110
  public readonly code?: number;
@@ -109,16 +112,16 @@ export class ServerError extends ProtonDriveError {
109
112
 
110
113
  /**
111
114
  * Error thrown when the client makes too many requests to the API.
112
- *
115
+ *
113
116
  * SDK is configured to stay below the rate limits, but it can still happen if
114
117
  * client is running multiple SDKs in parallel, or if the rate limits are
115
118
  * changed on the server side.
116
- *
119
+ *
117
120
  * SDK automatically retries the request before the error is thrown after
118
121
  * waiting for the required time specified by the server.
119
- *
122
+ *
120
123
  * Client should slow down calling SDK when this error is thrown.
121
- *
124
+ *
122
125
  * You can be also notified about the rate limits by the `requestsThrottled`
123
126
  * event. See `onMessage` method on the SDK class for more details.
124
127
  */
@@ -130,9 +133,9 @@ export class RateLimitedError extends ServerError {
130
133
 
131
134
  /**
132
135
  * Error thrown when the client is not connected to the internet.
133
- *
136
+ *
134
137
  * Client should check the internet connection when this error is thrown.
135
- *
138
+ *
136
139
  * You can also be notified about the connection status by the `offline` event
137
140
  * See `onMessage` method on the SDK class for more details.
138
141
  */
@@ -142,9 +145,9 @@ export class ConnectionError extends ProtonDriveError {
142
145
 
143
146
  /**
144
147
  * Error thrown when the decryption fails.
145
- *
148
+ *
146
149
  * Client should report this error to the user and report bug report.
147
- *
150
+ *
148
151
  * In most cases, there is no decryption error. Every decryption error should
149
152
  * be not exposed but set as empty value on the node, for example. But in the
150
153
  * case of the file content, if block cannot be decrypted, decryption error
@@ -156,9 +159,9 @@ export class DecryptionError extends ProtonDriveError {
156
159
 
157
160
  /**
158
161
  * Error thrown when the data integrity check fails.
159
- *
162
+ *
160
163
  * Client should report this error to the user and report bug report.
161
- *
164
+ *
162
165
  * For example, it can happen when hashes don't match, etc. In some cases,
163
166
  * SDK allows to run command without verification checks for debug purposes.
164
167
  */
package/src/index.ts CHANGED
@@ -14,12 +14,12 @@ export { VERSION } from './version';
14
14
 
15
15
  /**
16
16
  * Provides the node UID for the given raw volume and node IDs.
17
- *
17
+ *
18
18
  * This is required only for the internal implementation to provide
19
19
  * backward compatibility with the old Drive web setup.
20
- *
20
+ *
21
21
  * If you are having share ID, use `ProtonDriveClient::getNodeUid` instead.
22
- *
22
+ *
23
23
  * @deprecated This method is not part of the public API.
24
24
  * @param volumeId - Volume of the node.
25
25
  * @param nodeId - Node/link ID (not UID).
@@ -6,17 +6,17 @@ export interface ProtonDriveAccount {
6
6
  *
7
7
  * @throws Error If there is no primary address.
8
8
  */
9
- getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress>,
9
+ getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress>;
10
10
  /**
11
11
  * Get own address by email or addressId.
12
12
  *
13
13
  * @throws Error If there is no address with given email or addressId.
14
14
  */
15
- getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress>,
15
+ getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress>;
16
16
  /**
17
17
  * Returns whether given email can be used to share files with Proton Drive.
18
18
  */
19
- hasProtonAccount(email: string): Promise<boolean>,
19
+ hasProtonAccount(email: string): Promise<boolean>;
20
20
  /**
21
21
  * Get public keys for given email.
22
22
  *
@@ -24,15 +24,15 @@ export interface ProtonDriveAccount {
24
24
  *
25
25
  * @throws Error Only if there is an error while fetching keys.
26
26
  */
27
- getPublicKeys(email: string): Promise<PublicKey[]>,
27
+ getPublicKeys(email: string): Promise<PublicKey[]>;
28
28
  }
29
29
 
30
30
  export interface ProtonDriveAccountAddress {
31
- email: string,
32
- addressId: string,
33
- primaryKeyIndex: number,
31
+ email: string;
32
+ addressId: string;
33
+ primaryKeyIndex: number;
34
34
  keys: {
35
- id: string,
36
- key: PrivateKey,
37
- }[],
35
+ id: string;
36
+ key: PrivateKey;
37
+ }[];
38
38
  }
@@ -2,9 +2,9 @@ import { Result } from './result';
2
2
 
3
3
  /**
4
4
  * Author with verification status.
5
- *
5
+ *
6
6
  * It can be either a string (email) or an anonymous user.
7
- *
7
+ *
8
8
  * If author cannot be verified, the result is failure with an error.
9
9
  * The client can still get claimed author from the error object, but
10
10
  * it must be used with caution.
@@ -19,11 +19,11 @@ export type AnonymousUser = null;
19
19
 
20
20
  /**
21
21
  * Unverified author.
22
- *
22
+ *
23
23
  * If author cannot be verified, the result is this object containing
24
24
  * the claimed author and the verification error.
25
25
  */
26
26
  export type UnverifiedAuthorError = {
27
- claimedAuthor?: string,
28
- error: string,
29
- }
27
+ claimedAuthor?: string;
28
+ error: string;
29
+ };
@@ -0,0 +1,28 @@
1
+ export type ProtonDriveConfig = {
2
+ /**
3
+ * The base URL for the Proton Drive (without schema).
4
+ *
5
+ * If not provided, defaults to 'drive-api.proton.me'.
6
+ */
7
+ baseUrl?: string;
8
+
9
+ /**
10
+ * The language to use for error messages.
11
+ *
12
+ * If not provided, defaults to 'en'.
13
+ */
14
+ language?: string;
15
+
16
+ /**
17
+ * Client UID is used to identify the client for the upload.
18
+ *
19
+ * If the upload failed because of the existing draft, the SDK will
20
+ * automatically clean up the existing draft and start a new upload.
21
+ * If the client UID doesn't match, the SDK throws and then you need
22
+ * to explicitely ask the user to override the existing draft.
23
+ *
24
+ * You can force the upload by setting up
25
+ * `overrideExistingDraftByOtherClient` to true.
26
+ */
27
+ clientUid?: string;
28
+ };
@@ -2,15 +2,15 @@ import { Result } from './result';
2
2
  import { InvalidNameError } from './nodes';
3
3
 
4
4
  export type Device = {
5
- uid: string,
6
- type: DeviceType,
7
- name: Result<string, Error | InvalidNameError>,
8
- rootFolderUid: string,
9
- creationTime: Date,
5
+ uid: string;
6
+ type: DeviceType;
7
+ name: Result<string, Error | InvalidNameError>;
8
+ rootFolderUid: string;
9
+ creationTime: Date;
10
10
  lastSyncDate?: Date;
11
11
  /** @deprecated to be removed once Volume-based navigation is implemented in web */
12
12
  shareId: string;
13
- }
13
+ };
14
14
 
15
15
  export enum DeviceType {
16
16
  Windows = 'Windows',
@@ -1,32 +1,35 @@
1
1
  export interface FileDownloader {
2
2
  /**
3
3
  * Get the claimed size of the file in bytes.
4
- *
4
+ *
5
5
  * This provides total clear-text size of the file. This is encrypted
6
6
  * information that is not known to the Proton Drive and thus it is
7
7
  * explicitely stated as claimed only and must be treated that way.
8
8
  * It can be wrong or missing completely.
9
9
  */
10
- getClaimedSizeInBytes(): number | undefined,
10
+ getClaimedSizeInBytes(): number | undefined;
11
11
 
12
12
  /**
13
13
  * Download, decrypt and verify the content from the server and write
14
14
  * to the provided stream.
15
- *
15
+ *
16
16
  * @param onProgress - Callback that is called with the number of downloaded bytes
17
17
  */
18
- writeToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
18
+ writeToStream(streamFactory: WritableStream, onProgress?: (downloadedBytes: number) => void): DownloadController;
19
19
 
20
20
  /**
21
21
  * Same as `writeToStream` but without verification checks.
22
- *
22
+ *
23
23
  * Use this only for debugging purposes.
24
24
  */
25
- unsafeWriteToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
25
+ unsafeWriteToStream(
26
+ streamFactory: WritableStream,
27
+ onProgress?: (downloadedBytes: number) => void,
28
+ ): DownloadController;
26
29
  }
27
30
 
28
31
  export interface DownloadController {
29
- pause(): void,
30
- resume(): void,
31
- completion(): Promise<void>,
32
+ pause(): void;
33
+ resume(): void;
34
+ completion(): Promise<void>;
32
35
  }
@@ -1,30 +1,81 @@
1
- import { Device } from './devices';
2
- import { MaybeNode } from './nodes';
3
-
4
- export type DeviceEventCallback = (deviceEvent: DeviceEvent) => void;
5
- export type NodeEventCallback = (nodeEvent: NodeEvent) => void;
6
-
7
- export type NodeEvent = {
8
- type: 'update',
9
- uid: string,
10
- node: MaybeNode,
11
- } | {
12
- type: 'remove',
13
- uid: string,
1
+ export enum SDKEvent {
2
+ TransfersPaused = 'transfersPaused',
3
+ TransfersResumed = 'transfersResumed',
4
+ RequestsThrottled = 'requestsThrottled',
5
+ RequestsUnthrottled = 'requestsUnthrottled',
14
6
  }
15
7
 
16
- export type DeviceEvent = {
17
- type: 'update',
18
- uid: string,
19
- device: Device,
20
- } | {
21
- type: 'remove',
22
- uid: string,
8
+ export interface LatestEventIdProvider {
9
+ getLatestEventId(treeEventScopeId: string): string | null;
23
10
  }
24
11
 
25
- export enum SDKEvent {
26
- TransfersPaused = "transfersPaused",
27
- TransfersResumed = "transfersResumed",
28
- RequestsThrottled = "requestsThrottled",
29
- RequestsUnthrottled = "requestsUnthrottled",
12
+ /**
13
+ * Callback that accepts list of Drive events and flag whether no
14
+ * event should be processed, but rather full cache refresh should be
15
+ * performed.
16
+ *
17
+ * Drive listeners should never throw and be wrapped in a try-catch loop.
18
+ *
19
+ * @param fullRefreshVolumeId - ID of the volume that should be fully refreshed.
20
+ */
21
+ export type DriveListener = (event: DriveEvent) => Promise<void>;
22
+
23
+ export type DriveEvent =
24
+ | NodeEvent
25
+ | FastForwardEvent
26
+ | TreeRefreshEvent
27
+ | TreeRemovalEvent
28
+ | FastForwardEvent
29
+ | SharedWithMeUpdated;
30
+
31
+ export type NodeEvent =
32
+ | {
33
+ type: DriveEventType.NodeCreated | DriveEventType.NodeUpdated;
34
+ nodeUid: string;
35
+ parentNodeUid?: string;
36
+ isTrashed: boolean;
37
+ isShared: boolean;
38
+ treeEventScopeId: string;
39
+ eventId: string;
40
+ }
41
+ | {
42
+ type: DriveEventType.NodeDeleted;
43
+ nodeUid: string;
44
+ parentNodeUid?: string;
45
+ treeEventScopeId: string;
46
+ eventId: string;
47
+ };
48
+
49
+ export type FastForwardEvent = {
50
+ type: DriveEventType.FastForward;
51
+ treeEventScopeId: string;
52
+ eventId: string;
53
+ };
54
+
55
+ export type TreeRefreshEvent = {
56
+ type: DriveEventType.TreeRefresh;
57
+ treeEventScopeId: string;
58
+ eventId: string;
59
+ };
60
+
61
+ export type TreeRemovalEvent = {
62
+ type: DriveEventType.TreeRemove;
63
+ treeEventScopeId: string;
64
+ eventId: 'none';
65
+ };
66
+
67
+ export type SharedWithMeUpdated = {
68
+ type: DriveEventType.SharedWithMeUpdated;
69
+ eventId: string;
70
+ treeEventScopeId: 'core';
71
+ };
72
+
73
+ export enum DriveEventType {
74
+ NodeCreated = 'node_created',
75
+ NodeUpdated = 'node_updated',
76
+ NodeDeleted = 'node_deleted',
77
+ SharedWithMeUpdated = 'shared_with_me_updated',
78
+ TreeRefresh = 'tree_refresh',
79
+ TreeRemove = 'tree_remove',
80
+ FastForward = 'fast_forward',
30
81
  }