@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,13 +1,13 @@
1
- import { c } from "ttag";
1
+ import { c } from 'ttag';
2
2
 
3
- import { Logger, MemberRole, NodeType, ProtonDriveTelemetry, resultOk, Revision, RevisionState, UploadMetadata } from "../../interface";
4
- import { ValidationError, NodeAlreadyExistsValidationError } from "../../errors";
5
- import { ErrorCode } from "../apiService";
6
- import { DecryptedNode, generateFileExtendedAttributes } from "../nodes";
7
- import { UploadAPIService } from "./apiService";
8
- import { UploadCryptoService } from "./cryptoService";
9
- import { NodeRevisionDraft, NodesService, NodesEvents, NodeCrypto } from "./interface";
10
- import { makeNodeUid, splitNodeUid } from "../uids";
3
+ import { Logger, ProtonDriveTelemetry, UploadMetadata } from '../../interface';
4
+ import { ValidationError, NodeAlreadyExistsValidationError } from '../../errors';
5
+ import { ErrorCode } from '../apiService';
6
+ import { generateFileExtendedAttributes } from '../nodes';
7
+ import { UploadAPIService } from './apiService';
8
+ import { UploadCryptoService } from './cryptoService';
9
+ import { NodeRevisionDraft, NodesService, NodeCrypto } from './interface';
10
+ import { makeNodeUid, splitNodeUid } from '../uids';
11
11
 
12
12
  /**
13
13
  * UploadManager is responsible for creating and deleting draft nodes
@@ -22,12 +22,13 @@ export class UploadManager {
22
22
  private apiService: UploadAPIService,
23
23
  private cryptoService: UploadCryptoService,
24
24
  private nodesService: NodesService,
25
- private nodesEvents: NodesEvents,
25
+ private clientUid: string | undefined,
26
26
  ) {
27
27
  this.logger = telemetry.getLogger('upload');
28
28
  this.apiService = apiService;
29
29
  this.cryptoService = cryptoService;
30
30
  this.nodesService = nodesService;
31
+ this.clientUid = clientUid;
31
32
  }
32
33
 
33
34
  async createDraftNode(parentFolderUid: string, name: string, metadata: UploadMetadata): Promise<NodeRevisionDraft> {
@@ -74,8 +75,8 @@ export class UploadManager {
74
75
  metadata: UploadMetadata,
75
76
  generatedNodeCrypto: NodeCrypto,
76
77
  ): Promise<{
77
- nodeUid: string,
78
- nodeRevisionUid: string,
78
+ nodeUid: string;
79
+ nodeRevisionUid: string;
79
80
  }> {
80
81
  try {
81
82
  const result = await this.apiService.createDraft(parentFolderUid, {
@@ -87,9 +88,9 @@ export class UploadManager {
87
88
  armoredNodePassphrase: generatedNodeCrypto.nodeKeys.encrypted.armoredPassphrase,
88
89
  armoredNodePassphraseSignature: generatedNodeCrypto.nodeKeys.encrypted.armoredPassphraseSignature,
89
90
  base64ContentKeyPacket: generatedNodeCrypto.contentKey.encrypted.base64ContentKeyPacket,
90
- armoredContentKeyPacketSignature: generatedNodeCrypto.contentKey.encrypted.armoredContentKeyPacketSignature,
91
+ armoredContentKeyPacketSignature:
92
+ generatedNodeCrypto.contentKey.encrypted.armoredContentKeyPacketSignature,
91
93
  signatureEmail: generatedNodeCrypto.signatureAddress.email,
92
- // FIXME: client UID
93
94
  });
94
95
  return result;
95
96
  } catch (error: unknown) {
@@ -97,22 +98,39 @@ export class UploadManager {
97
98
  if (error.code === ErrorCode.ALREADY_EXISTS) {
98
99
  this.logger.info(`Node with given name already exists`);
99
100
 
100
- const typedDetails = error.details as {
101
- ConflictLinkID: string,
102
- ConflictRevisionID?: string,
103
- ConflictDraftRevisionID?: string,
104
- ConflictDraftClientUID?: string,
105
- } | undefined;
101
+ const typedDetails = error.details as
102
+ | {
103
+ ConflictLinkID: string;
104
+ ConflictRevisionID?: string;
105
+ ConflictDraftRevisionID?: string;
106
+ ConflictDraftClientUID?: string;
107
+ }
108
+ | undefined;
109
+
110
+ // If the client doesn't specify the client UID, it should
111
+ // never be considered own draft.
112
+ const isOwnDraftConflict =
113
+ typedDetails?.ConflictDraftRevisionID &&
114
+ this.clientUid &&
115
+ typedDetails?.ConflictDraftClientUID === this.clientUid;
106
116
 
107
117
  // If there is existing draft created by this client,
108
118
  // automatically delete it and try to create a new one
109
119
  // with the same name again.
110
- if (typedDetails?.ConflictDraftRevisionID) {
111
- const existingDraftNodeUid = makeNodeUid(splitNodeUid(parentFolderUid).volumeId, typedDetails.ConflictLinkID);
120
+ if (
121
+ typedDetails?.ConflictDraftRevisionID &&
122
+ (isOwnDraftConflict || metadata.overrideExistingDraftByOtherClient)
123
+ ) {
124
+ const existingDraftNodeUid = makeNodeUid(
125
+ splitNodeUid(parentFolderUid).volumeId,
126
+ typedDetails.ConflictLinkID,
127
+ );
112
128
 
113
129
  let deleteFailed = false;
114
130
  try {
115
- this.logger.warn(`Deleting existing draft node ${existingDraftNodeUid}`);
131
+ this.logger.warn(
132
+ `Deleting existing draft node ${existingDraftNodeUid} by ${typedDetails.ConflictDraftClientUID}`,
133
+ );
116
134
  await this.apiService.deleteDraft(existingDraftNodeUid);
117
135
  } catch (deleteDraftError: unknown) {
118
136
  // Do not throw, let throw the conflict error.
@@ -120,11 +138,25 @@ export class UploadManager {
120
138
  this.logger.error('Failed to delete existing draft node', deleteDraftError);
121
139
  }
122
140
  if (!deleteFailed) {
123
- return this.createDraftOnAPI(parentFolderUid, parentHashKey, name, metadata, generatedNodeCrypto);
141
+ return this.createDraftOnAPI(
142
+ parentFolderUid,
143
+ parentHashKey,
144
+ name,
145
+ metadata,
146
+ generatedNodeCrypto,
147
+ );
124
148
  }
125
149
  }
126
150
 
127
- const existingNodeUid = typedDetails ? makeNodeUid(splitNodeUid(parentFolderUid).volumeId, typedDetails.ConflictLinkID) : undefined;
151
+ if (isOwnDraftConflict) {
152
+ this.logger.warn(
153
+ `Existing draft conflict by another client ${typedDetails.ConflictDraftClientUID}`,
154
+ );
155
+ }
156
+
157
+ const existingNodeUid = typedDetails
158
+ ? makeNodeUid(splitNodeUid(parentFolderUid).volumeId, typedDetails.ConflictLinkID)
159
+ : undefined;
128
160
 
129
161
  // If there is existing node, return special error
130
162
  // that includes the available name the client can use.
@@ -132,6 +164,7 @@ export class UploadManager {
132
164
  error.message,
133
165
  error.code,
134
166
  existingNodeUid,
167
+ !!typedDetails?.ConflictDraftRevisionID,
135
168
  );
136
169
  }
137
170
  }
@@ -210,7 +243,7 @@ export class UploadManager {
210
243
  contentKeyPacketSessionKey: nodeKeys.contentKeyPacketSessionKey,
211
244
  signatureAddress: signatureAddress,
212
245
  },
213
- }
246
+ };
214
247
  }
215
248
 
216
249
  async deleteDraftRevision(nodeRevisionUid: string): Promise<void> {
@@ -227,65 +260,26 @@ export class UploadManager {
227
260
  async commitDraft(
228
261
  nodeRevisionDraft: NodeRevisionDraft,
229
262
  manifest: Uint8Array,
230
- metadata: UploadMetadata,
263
+ _metadata: UploadMetadata,
231
264
  extendedAttributes: {
232
- modificationTime?: Date,
233
- size?: number,
234
- blockSizes?: number[],
265
+ modificationTime?: Date;
266
+ size?: number;
267
+ blockSizes?: number[];
235
268
  digests?: {
236
- sha1?: string,
237
- },
269
+ sha1?: string;
270
+ };
238
271
  },
239
- encryptedSize: number,
240
272
  ): Promise<void> {
241
273
  const generatedExtendedAttributes = generateFileExtendedAttributes(extendedAttributes);
242
- const nodeCommitCrypto = await this.cryptoService.commitFile(nodeRevisionDraft.nodeKeys, manifest, generatedExtendedAttributes);
274
+ const nodeCommitCrypto = await this.cryptoService.commitFile(
275
+ nodeRevisionDraft.nodeKeys,
276
+ manifest,
277
+ generatedExtendedAttributes,
278
+ );
243
279
  await this.apiService.commitDraftRevision(nodeRevisionDraft.nodeRevisionUid, nodeCommitCrypto);
244
-
245
- const activeRevision = resultOk<Revision, Error>({
246
- uid: nodeRevisionDraft.nodeRevisionUid,
247
- state: RevisionState.Active,
248
- creationTime: new Date(),
249
- storageSize: encryptedSize,
250
- contentAuthor: resultOk(nodeCommitCrypto.signatureEmail),
251
- claimedSize: metadata.expectedSize,
252
- claimedModificationTime: extendedAttributes.modificationTime,
253
- claimedDigests: {
254
- sha1: extendedAttributes.digests?.sha1,
255
- },
256
- });
257
- if (nodeRevisionDraft.newNodeInfo) {
258
- const node: DecryptedNode = {
259
- // Internal metadata
260
- hash: nodeRevisionDraft.newNodeInfo.hash,
261
- encryptedName: nodeRevisionDraft.newNodeInfo.encryptedName,
262
-
263
- // Basic node metadata
264
- uid: nodeRevisionDraft.nodeUid,
265
- parentUid: nodeRevisionDraft.newNodeInfo.parentUid,
266
- type: NodeType.File,
267
- mediaType: metadata.mediaType,
268
- creationTime: new Date(),
269
- totalStorageSize: encryptedSize,
270
-
271
- // Share node metadata
272
- isShared: false,
273
- directMemberRole: MemberRole.Inherited,
274
-
275
- // Decrypted metadata
276
- isStale: false,
277
- keyAuthor: resultOk(nodeRevisionDraft.nodeKeys.signatureAddress.email),
278
- nameAuthor: resultOk(nodeRevisionDraft.nodeKeys.signatureAddress.email),
279
- name: resultOk(nodeRevisionDraft.newNodeInfo.name),
280
-
281
- activeRevision,
282
- }
283
- await this.nodesEvents.nodeCreated(node);
284
- } else {
285
- await this.nodesEvents.nodeUpdated({
286
- uid: nodeRevisionDraft.nodeUid,
287
- activeRevision,
288
- });
280
+ const node = await this.nodesService.getNode(nodeRevisionDraft.nodeUid);
281
+ if (node.parentUid) {
282
+ await this.nodesService.notifyChildCreated(node.parentUid);
289
283
  }
290
284
  }
291
285
  }
@@ -299,7 +293,7 @@ function splitExtension(filename = ''): [string, string] {
299
293
  return [filename, ''];
300
294
  }
301
295
  return [filename.slice(0, endIdx), filename.slice(endIdx + 1)];
302
- };
296
+ }
303
297
 
304
298
  /**
305
299
  * Join a filename into `name (index).extension`
@@ -2,13 +2,13 @@ import { waitForCondition } from '../wait';
2
2
 
3
3
  /**
4
4
  * A queue that limits the number of concurrent uploads.
5
- *
5
+ *
6
6
  * This is used to limit the number of concurrent uploads to avoid
7
7
  * overloading the server, or get rate limited.
8
- *
8
+ *
9
9
  * Each file upload consumes memory and is limited by the number of
10
10
  * concurrent block uploads for each file.
11
- *
11
+ *
12
12
  * This queue is straitforward and does not have any priority mechanism
13
13
  * or other features, such as limiting total number of blocks being
14
14
  * uploaded. That is something we want to add in the future to be
@@ -12,7 +12,12 @@ import { UploadManager } from './manager';
12
12
 
13
13
  const BLOCK_ENCRYPTION_OVERHEAD = 10000;
14
14
 
15
- async function mockEncryptBlock(verifyBlock: (block: Uint8Array) => Promise<void>, _: any, block: Uint8Array, index: number) {
15
+ async function mockEncryptBlock(
16
+ verifyBlock: (block: Uint8Array) => Promise<void>,
17
+ _: any,
18
+ block: Uint8Array,
19
+ index: number,
20
+ ) {
16
21
  await verifyBlock(block);
17
22
  return {
18
23
  index,
@@ -25,7 +30,12 @@ async function mockEncryptBlock(verifyBlock: (block: Uint8Array) => Promise<void
25
30
  };
26
31
  }
27
32
 
28
- function mockUploadBlock(_: string, __: string, encryptedBlock: Uint8Array, onProgress: (uploadedBytes: number) => void) {
33
+ function mockUploadBlock(
34
+ _: string,
35
+ __: string,
36
+ encryptedBlock: Uint8Array,
37
+ onProgress: (uploadedBytes: number) => void,
38
+ ) {
29
39
  onProgress(encryptedBlock.length);
30
40
  }
31
41
 
@@ -137,23 +147,19 @@ describe('StreamUploader', () => {
137
147
 
138
148
  const numberOfExpectedBlocks = Math.ceil(metadata.expectedSize / FILE_CHUNK_SIZE);
139
149
  expect(uploadManager.commitDraft).toHaveBeenCalledTimes(1);
140
- expect(uploadManager.commitDraft).toHaveBeenCalledWith(
141
- revisionDraft,
142
- expect.anything(),
143
- metadata,
144
- {
145
- size: metadata.expectedSize,
146
- blockSizes: metadata.expectedSize ? [
147
- ...Array(numberOfExpectedBlocks - 1).fill(FILE_CHUNK_SIZE),
148
- metadata.expectedSize % FILE_CHUNK_SIZE
149
- ] : [],
150
- modificationTime: undefined,
151
- digests: {
152
- sha1: expect.anything(),
153
- }
150
+ expect(uploadManager.commitDraft).toHaveBeenCalledWith(revisionDraft, expect.anything(), metadata, {
151
+ size: metadata.expectedSize,
152
+ blockSizes: metadata.expectedSize
153
+ ? [
154
+ ...Array(numberOfExpectedBlocks - 1).fill(FILE_CHUNK_SIZE),
155
+ metadata.expectedSize % FILE_CHUNK_SIZE,
156
+ ]
157
+ : [],
158
+ modificationTime: undefined,
159
+ digests: {
160
+ sha1: expect.anything(),
154
161
  },
155
- metadata.expectedSize + numberOfExpectedBlocks * BLOCK_ENCRYPTION_OVERHEAD,
156
- );
162
+ });
157
163
  expect(telemetry.uploadFinished).toHaveBeenCalledTimes(1);
158
164
  expect(telemetry.uploadFinished).toHaveBeenCalledWith('revisionUid', metadata.expectedSize + thumbnailSize);
159
165
  expect(telemetry.uploadFailed).not.toHaveBeenCalled();
@@ -161,7 +167,11 @@ describe('StreamUploader', () => {
161
167
  expect(onFinish).toHaveBeenCalledWith(false);
162
168
  };
163
169
 
164
- const verifyFailure = async (error: string, uploadedBytes: number | undefined, expectedSize = metadata.expectedSize) => {
170
+ const verifyFailure = async (
171
+ error: string,
172
+ uploadedBytes: number | undefined,
173
+ expectedSize = metadata.expectedSize,
174
+ ) => {
165
175
  const promise = uploader.start(stream, thumbnails, onProgress);
166
176
  await expect(promise).rejects.toThrow(error);
167
177
 
@@ -190,7 +200,7 @@ describe('StreamUploader', () => {
190
200
  {
191
201
  type: ThumbnailType.Type1,
192
202
  thumbnail: new Uint8Array(1024),
193
- }
203
+ },
194
204
  ];
195
205
  thumbnailSize = thumbnails.reduce((acc, thumbnail) => acc + thumbnail.thumbnail.length, 0);
196
206
  stream = new ReadableStream({
@@ -205,7 +215,7 @@ describe('StreamUploader', () => {
205
215
  });
206
216
  });
207
217
 
208
- it("should upload successfully", async () => {
218
+ it('should upload successfully', async () => {
209
219
  await verifySuccess();
210
220
  expect(apiService.requestBlockUpload).toHaveBeenCalledTimes(1);
211
221
  expect(apiService.uploadBlock).toHaveBeenCalledTimes(4); // 3 blocks + 1 thumbnail
@@ -214,7 +224,7 @@ describe('StreamUploader', () => {
214
224
  await verifyOnProgress([thumbnailSize, 4 * 1024 * 1024, 4 * 1024 * 1024, 2 * 1024 * 1024]);
215
225
  });
216
226
 
217
- it("should upload successfully empty file without thumbnail", async () => {
227
+ it('should upload successfully empty file without thumbnail', async () => {
218
228
  metadata = {
219
229
  expectedSize: 0,
220
230
  } as UploadMetadata;
@@ -243,7 +253,7 @@ describe('StreamUploader', () => {
243
253
  await verifyOnProgress([]);
244
254
  });
245
255
 
246
- it("should upload successfully empty file with thumbnail", async () => {
256
+ it('should upload successfully empty file with thumbnail', async () => {
247
257
  metadata = {
248
258
  expectedSize: 0,
249
259
  } as UploadMetadata;
@@ -396,7 +406,7 @@ describe('StreamUploader', () => {
396
406
  hash: 'blockHash',
397
407
  armoredSignature: 'signature',
398
408
  verificationToken: 'verificationToken',
399
- }
409
+ },
400
410
  ],
401
411
  },
402
412
  );
@@ -421,9 +431,12 @@ describe('StreamUploader', () => {
421
431
  });
422
432
 
423
433
  it('should report block verification error when retry helped', async () => {
424
- blockVerifier.verifyBlock = jest.fn().mockRejectedValueOnce(new IntegrityError('Block verification error')).mockResolvedValue({
425
- verificationToken: new Uint8Array(),
426
- });
434
+ blockVerifier.verifyBlock = jest
435
+ .fn()
436
+ .mockRejectedValueOnce(new IntegrityError('Block verification error'))
437
+ .mockResolvedValue({
438
+ verificationToken: new Uint8Array(),
439
+ });
427
440
  await verifySuccess();
428
441
  expect(telemetry.logBlockVerificationError).toHaveBeenCalledWith(true);
429
442
  });