@protontech/drive-sdk 0.1.0 → 0.1.2

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 (452) hide show
  1. package/dist/cache/memoryCache.js +0 -1
  2. package/dist/cache/memoryCache.js.map +1 -1
  3. package/dist/cache/memoryCache.test.js +2 -4
  4. package/dist/cache/memoryCache.test.js.map +1 -1
  5. package/dist/cache/nullCache.js +0 -1
  6. package/dist/cache/nullCache.js.map +1 -1
  7. package/dist/crypto/driveCrypto.d.ts +2 -5
  8. package/dist/crypto/driveCrypto.js +7 -12
  9. package/dist/crypto/driveCrypto.js.map +1 -1
  10. package/dist/crypto/driveCrypto.test.js +14 -14
  11. package/dist/crypto/openPGPCrypto.js +3 -3
  12. package/dist/crypto/openPGPCrypto.js.map +1 -1
  13. package/dist/diagnostic/eventsGenerator.js +1 -1
  14. package/dist/diagnostic/eventsGenerator.js.map +1 -1
  15. package/dist/diagnostic/httpClient.d.ts +1 -1
  16. package/dist/diagnostic/httpClient.js.map +1 -1
  17. package/dist/diagnostic/index.d.ts +3 -3
  18. package/dist/diagnostic/index.js.map +1 -1
  19. package/dist/diagnostic/integrityVerificationStream.js +1 -1
  20. package/dist/diagnostic/integrityVerificationStream.js.map +1 -1
  21. package/dist/diagnostic/interface.d.ts +2 -2
  22. package/dist/diagnostic/sdkDiagnostic.d.ts +3 -3
  23. package/dist/diagnostic/sdkDiagnostic.js +8 -2
  24. package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
  25. package/dist/diagnostic/sdkDiagnosticFull.d.ts +4 -4
  26. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -1
  27. package/dist/diagnostic/telemetry.js.map +1 -1
  28. package/dist/diagnostic/zipGenerators.js +2 -2
  29. package/dist/diagnostic/zipGenerators.js.map +1 -1
  30. package/dist/diagnostic/zipGenerators.test.js +1 -1
  31. package/dist/diagnostic/zipGenerators.test.js.map +1 -1
  32. package/dist/interface/events.d.ts +2 -4
  33. package/dist/interface/events.js.map +1 -1
  34. package/dist/interface/index.d.ts +5 -5
  35. package/dist/interface/index.js +0 -1
  36. package/dist/interface/index.js.map +1 -1
  37. package/dist/interface/result.js.map +1 -1
  38. package/dist/interface/sharing.d.ts +1 -0
  39. package/dist/interface/sharing.js.map +1 -1
  40. package/dist/interface/telemetry.js +0 -8
  41. package/dist/interface/telemetry.js.map +1 -1
  42. package/dist/interface/thumbnail.js.map +1 -1
  43. package/dist/interface/upload.d.ts +1 -1
  44. package/dist/internal/apiService/apiService.d.ts +1 -1
  45. package/dist/internal/apiService/apiService.js +7 -11
  46. package/dist/internal/apiService/apiService.js.map +1 -1
  47. package/dist/internal/apiService/apiService.test.js +55 -48
  48. package/dist/internal/apiService/apiService.test.js.map +1 -1
  49. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  50. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  51. package/dist/internal/apiService/errors.js +14 -8
  52. package/dist/internal/apiService/errors.js.map +1 -1
  53. package/dist/internal/apiService/errors.test.js +17 -12
  54. package/dist/internal/apiService/errors.test.js.map +1 -1
  55. package/dist/internal/apiService/transformers.d.ts +1 -1
  56. package/dist/internal/apiService/transformers.js +1 -1
  57. package/dist/internal/asyncIteratorMap.test.js +2 -2
  58. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  59. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  60. package/dist/internal/asyncIteratorRace.js +59 -0
  61. package/dist/internal/asyncIteratorRace.js.map +1 -0
  62. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  63. package/dist/internal/asyncIteratorRace.test.js +119 -0
  64. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  65. package/dist/internal/batch.d.ts +1 -0
  66. package/dist/internal/batch.js +12 -0
  67. package/dist/internal/batch.js.map +1 -0
  68. package/dist/internal/batch.test.d.ts +1 -0
  69. package/dist/internal/batch.test.js +41 -0
  70. package/dist/internal/batch.test.js.map +1 -0
  71. package/dist/internal/batchLoading.js.map +1 -1
  72. package/dist/internal/batchLoading.test.js +13 -13
  73. package/dist/internal/batchLoading.test.js.map +1 -1
  74. package/dist/internal/devices/apiService.d.ts +3 -3
  75. package/dist/internal/devices/apiService.js +2 -2
  76. package/dist/internal/devices/apiService.js.map +1 -1
  77. package/dist/internal/devices/cryptoService.js +1 -2
  78. package/dist/internal/devices/cryptoService.js.map +1 -1
  79. package/dist/internal/devices/index.d.ts +5 -5
  80. package/dist/internal/devices/index.js.map +1 -1
  81. package/dist/internal/devices/interface.d.ts +3 -3
  82. package/dist/internal/devices/manager.js +2 -2
  83. package/dist/internal/devices/manager.js.map +1 -1
  84. package/dist/internal/devices/manager.test.js +38 -7
  85. package/dist/internal/devices/manager.test.js.map +1 -1
  86. package/dist/internal/download/apiService.d.ts +4 -4
  87. package/dist/internal/download/apiService.js +0 -1
  88. package/dist/internal/download/apiService.js.map +1 -1
  89. package/dist/internal/download/cryptoService.d.ts +4 -4
  90. package/dist/internal/download/cryptoService.js +6 -5
  91. package/dist/internal/download/cryptoService.js.map +1 -1
  92. package/dist/internal/download/fileDownloader.d.ts +4 -4
  93. package/dist/internal/download/fileDownloader.js +3 -2
  94. package/dist/internal/download/fileDownloader.js.map +1 -1
  95. package/dist/internal/download/fileDownloader.test.js +1 -1
  96. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  97. package/dist/internal/download/index.d.ts +5 -5
  98. package/dist/internal/download/index.js +5 -5
  99. package/dist/internal/download/index.js.map +1 -1
  100. package/dist/internal/download/interface.d.ts +3 -4
  101. package/dist/internal/download/telemetry.d.ts +3 -3
  102. package/dist/internal/download/telemetry.js +4 -2
  103. package/dist/internal/download/telemetry.js.map +1 -1
  104. package/dist/internal/download/telemetry.test.js +8 -8
  105. package/dist/internal/download/telemetry.test.js.map +1 -1
  106. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  107. package/dist/internal/download/thumbnailDownloader.js +6 -6
  108. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  109. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  110. package/dist/internal/errors.d.ts +1 -1
  111. package/dist/internal/errors.js +1 -3
  112. package/dist/internal/errors.js.map +1 -1
  113. package/dist/internal/events/apiService.d.ts +2 -2
  114. package/dist/internal/events/apiService.js +9 -5
  115. package/dist/internal/events/apiService.js.map +1 -1
  116. package/dist/internal/events/coreEventManager.d.ts +3 -3
  117. package/dist/internal/events/coreEventManager.js.map +1 -1
  118. package/dist/internal/events/coreEventManager.test.js +14 -14
  119. package/dist/internal/events/eventManager.d.ts +2 -1
  120. package/dist/internal/events/eventManager.js +9 -1
  121. package/dist/internal/events/eventManager.js.map +1 -1
  122. package/dist/internal/events/eventManager.test.js +84 -60
  123. package/dist/internal/events/eventManager.test.js.map +1 -1
  124. package/dist/internal/events/index.d.ts +10 -9
  125. package/dist/internal/events/index.js +38 -32
  126. package/dist/internal/events/index.js.map +1 -1
  127. package/dist/internal/events/interface.d.ts +1 -1
  128. package/dist/internal/events/interface.js +0 -1
  129. package/dist/internal/events/interface.js.map +1 -1
  130. package/dist/internal/events/volumeEventManager.d.ts +3 -3
  131. package/dist/internal/events/volumeEventManager.js.map +1 -1
  132. package/dist/internal/events/volumeEventManager.test.js +55 -55
  133. package/dist/internal/events/volumeEventManager.test.js.map +1 -1
  134. package/dist/internal/nodes/apiService.d.ts +4 -3
  135. package/dist/internal/nodes/apiService.js +36 -15
  136. package/dist/internal/nodes/apiService.js.map +1 -1
  137. package/dist/internal/nodes/apiService.test.js +60 -41
  138. package/dist/internal/nodes/apiService.test.js.map +1 -1
  139. package/dist/internal/nodes/cache.d.ts +5 -5
  140. package/dist/internal/nodes/cache.js +14 -7
  141. package/dist/internal/nodes/cache.js.map +1 -1
  142. package/dist/internal/nodes/cache.test.js +31 -9
  143. package/dist/internal/nodes/cache.test.js.map +1 -1
  144. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  145. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  146. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  147. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  148. package/dist/internal/nodes/cryptoService.d.ts +3 -3
  149. package/dist/internal/nodes/cryptoService.js +11 -17
  150. package/dist/internal/nodes/cryptoService.js.map +1 -1
  151. package/dist/internal/nodes/cryptoService.test.js +320 -241
  152. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  153. package/dist/internal/nodes/events.d.ts +3 -3
  154. package/dist/internal/nodes/events.js +7 -7
  155. package/dist/internal/nodes/events.js.map +1 -1
  156. package/dist/internal/nodes/events.test.js +27 -21
  157. package/dist/internal/nodes/events.test.js.map +1 -1
  158. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  159. package/dist/internal/nodes/extendedAttributes.js +3 -1
  160. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  161. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  162. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  163. package/dist/internal/nodes/index.d.ts +10 -10
  164. package/dist/internal/nodes/index.js.map +1 -1
  165. package/dist/internal/nodes/index.test.d.ts +1 -0
  166. package/dist/internal/nodes/index.test.js +106 -0
  167. package/dist/internal/nodes/index.test.js.map +1 -0
  168. package/dist/internal/nodes/interface.d.ts +2 -2
  169. package/dist/internal/nodes/nodesAccess.d.ts +7 -7
  170. package/dist/internal/nodes/nodesAccess.js +28 -16
  171. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  172. package/dist/internal/nodes/nodesAccess.test.js +39 -13
  173. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  174. package/dist/internal/nodes/nodesManagement.d.ts +6 -6
  175. package/dist/internal/nodes/nodesManagement.js +9 -7
  176. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  177. package/dist/internal/nodes/nodesManagement.test.js +9 -9
  178. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  179. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  180. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  181. package/dist/internal/photos/albums.d.ts +3 -3
  182. package/dist/internal/photos/albums.js.map +1 -1
  183. package/dist/internal/photos/apiService.d.ts +1 -1
  184. package/dist/internal/photos/apiService.js +3 -6
  185. package/dist/internal/photos/apiService.js.map +1 -1
  186. package/dist/internal/photos/cache.d.ts +1 -1
  187. package/dist/internal/photos/index.d.ts +5 -5
  188. package/dist/internal/photos/index.js.map +1 -1
  189. package/dist/internal/photos/interface.d.ts +2 -2
  190. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  191. package/dist/internal/photos/photosTimeline.js +1 -2
  192. package/dist/internal/photos/photosTimeline.js.map +1 -1
  193. package/dist/internal/sdkEvents.d.ts +1 -1
  194. package/dist/internal/sdkEvents.js +2 -7
  195. package/dist/internal/sdkEvents.js.map +1 -1
  196. package/dist/internal/sdkEvents.test.js +8 -8
  197. package/dist/internal/shares/apiService.d.ts +2 -2
  198. package/dist/internal/shares/apiService.js +5 -3
  199. package/dist/internal/shares/apiService.js.map +1 -1
  200. package/dist/internal/shares/cache.d.ts +2 -2
  201. package/dist/internal/shares/cache.js +12 -6
  202. package/dist/internal/shares/cache.js.map +1 -1
  203. package/dist/internal/shares/cache.test.js.map +1 -1
  204. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  205. package/dist/internal/shares/cryptoCache.test.js +8 -2
  206. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  207. package/dist/internal/shares/cryptoService.d.ts +3 -3
  208. package/dist/internal/shares/cryptoService.js.map +1 -1
  209. package/dist/internal/shares/cryptoService.test.js +42 -42
  210. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  211. package/dist/internal/shares/index.d.ts +4 -4
  212. package/dist/internal/shares/index.js.map +1 -1
  213. package/dist/internal/shares/interface.d.ts +2 -2
  214. package/dist/internal/shares/manager.d.ts +7 -7
  215. package/dist/internal/shares/manager.js.map +1 -1
  216. package/dist/internal/shares/manager.test.js +71 -63
  217. package/dist/internal/shares/manager.test.js.map +1 -1
  218. package/dist/internal/sharing/apiService.d.ts +4 -4
  219. package/dist/internal/sharing/apiService.js +4 -3
  220. package/dist/internal/sharing/apiService.js.map +1 -1
  221. package/dist/internal/sharing/cache.d.ts +2 -1
  222. package/dist/internal/sharing/cache.js +9 -0
  223. package/dist/internal/sharing/cache.js.map +1 -1
  224. package/dist/internal/sharing/cache.test.js +33 -33
  225. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  226. package/dist/internal/sharing/cryptoService.js +3 -5
  227. package/dist/internal/sharing/cryptoService.js.map +1 -1
  228. package/dist/internal/sharing/cryptoService.test.js +39 -39
  229. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  230. package/dist/internal/sharing/events.d.ts +5 -4
  231. package/dist/internal/sharing/events.js +28 -19
  232. package/dist/internal/sharing/events.js.map +1 -1
  233. package/dist/internal/sharing/events.test.js +101 -88
  234. package/dist/internal/sharing/events.test.js.map +1 -1
  235. package/dist/internal/sharing/index.d.ts +6 -6
  236. package/dist/internal/sharing/index.js.map +1 -1
  237. package/dist/internal/sharing/interface.d.ts +5 -4
  238. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  239. package/dist/internal/sharing/sharingAccess.js +8 -4
  240. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  241. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  242. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  243. package/dist/internal/sharing/sharingManagement.d.ts +4 -4
  244. package/dist/internal/sharing/sharingManagement.js +5 -7
  245. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  246. package/dist/internal/sharing/sharingManagement.test.js +297 -248
  247. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  248. package/dist/internal/uids.js.map +1 -1
  249. package/dist/internal/upload/apiService.d.ts +3 -3
  250. package/dist/internal/upload/apiService.js +1 -1
  251. package/dist/internal/upload/apiService.js.map +1 -1
  252. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  253. package/dist/internal/upload/blockVerifier.js +1 -1
  254. package/dist/internal/upload/blockVerifier.js.map +1 -1
  255. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  256. package/dist/internal/upload/cryptoService.d.ts +4 -4
  257. package/dist/internal/upload/cryptoService.js +4 -4
  258. package/dist/internal/upload/cryptoService.js.map +1 -1
  259. package/dist/internal/upload/digests.js.map +1 -1
  260. package/dist/internal/upload/fileUploader.d.ts +6 -6
  261. package/dist/internal/upload/fileUploader.js.map +1 -1
  262. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  263. package/dist/internal/upload/index.d.ts +5 -5
  264. package/dist/internal/upload/index.js.map +1 -1
  265. package/dist/internal/upload/interface.d.ts +4 -3
  266. package/dist/internal/upload/manager.d.ts +5 -5
  267. package/dist/internal/upload/manager.js +15 -9
  268. package/dist/internal/upload/manager.js.map +1 -1
  269. package/dist/internal/upload/manager.test.js +139 -128
  270. package/dist/internal/upload/manager.test.js.map +1 -1
  271. package/dist/internal/upload/streamUploader.d.ts +6 -6
  272. package/dist/internal/upload/streamUploader.js +9 -7
  273. package/dist/internal/upload/streamUploader.js.map +1 -1
  274. package/dist/internal/upload/streamUploader.test.js +17 -12
  275. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  276. package/dist/internal/upload/telemetry.d.ts +3 -3
  277. package/dist/internal/upload/telemetry.js +5 -3
  278. package/dist/internal/upload/telemetry.js.map +1 -1
  279. package/dist/internal/upload/telemetry.test.js +8 -8
  280. package/dist/internal/upload/telemetry.test.js.map +1 -1
  281. package/dist/protonDriveClient.d.ts +8 -8
  282. package/dist/protonDriveClient.js +12 -9
  283. package/dist/protonDriveClient.js.map +1 -1
  284. package/dist/protonDrivePhotosClient.js.map +1 -1
  285. package/dist/telemetry.js +18 -15
  286. package/dist/telemetry.js.map +1 -1
  287. package/dist/tests/logger.js.map +1 -1
  288. package/dist/tests/telemetry.d.ts +1 -1
  289. package/dist/transformers.d.ts +1 -1
  290. package/dist/transformers.js +5 -2
  291. package/dist/transformers.js.map +1 -1
  292. package/package.json +1 -1
  293. package/src/cache/interface.ts +22 -22
  294. package/src/cache/memoryCache.test.ts +7 -7
  295. package/src/cache/memoryCache.ts +4 -4
  296. package/src/cache/nullCache.ts +1 -1
  297. package/src/config.ts +5 -5
  298. package/src/crypto/driveCrypto.test.ts +15 -15
  299. package/src/crypto/driveCrypto.ts +120 -156
  300. package/src/crypto/hmac.ts +1 -1
  301. package/src/crypto/interface.ts +63 -72
  302. package/src/crypto/openPGPCrypto.ts +74 -94
  303. package/src/crypto/utils.ts +1 -1
  304. package/src/diagnostic/eventsGenerator.ts +2 -2
  305. package/src/diagnostic/httpClient.ts +6 -2
  306. package/src/diagnostic/index.ts +12 -10
  307. package/src/diagnostic/integrityVerificationStream.ts +3 -4
  308. package/src/diagnostic/interface.ts +81 -81
  309. package/src/diagnostic/sdkDiagnostic.ts +35 -24
  310. package/src/diagnostic/sdkDiagnosticFull.ts +16 -19
  311. package/src/diagnostic/telemetry.ts +4 -1
  312. package/src/diagnostic/zipGenerators.test.ts +1 -1
  313. package/src/diagnostic/zipGenerators.ts +3 -3
  314. package/src/errors.ts +21 -21
  315. package/src/index.ts +3 -3
  316. package/src/interface/account.ts +10 -10
  317. package/src/interface/author.ts +6 -6
  318. package/src/interface/config.ts +4 -4
  319. package/src/interface/devices.ts +6 -6
  320. package/src/interface/download.ts +12 -9
  321. package/src/interface/events.ts +45 -39
  322. package/src/interface/httpClient.ts +11 -11
  323. package/src/interface/index.ts +76 -19
  324. package/src/interface/nodes.ts +47 -49
  325. package/src/interface/result.ts +1 -3
  326. package/src/interface/sharing.ts +60 -57
  327. package/src/interface/telemetry.ts +74 -74
  328. package/src/interface/thumbnail.ts +5 -6
  329. package/src/interface/upload.ts +20 -12
  330. package/src/internal/apiService/apiService.test.ts +109 -76
  331. package/src/internal/apiService/apiService.ts +40 -26
  332. package/src/internal/apiService/coreTypes.ts +2474 -2463
  333. package/src/internal/apiService/driveTypes.ts +1868 -1822
  334. package/src/internal/apiService/errorCodes.ts +4 -4
  335. package/src/internal/apiService/errors.test.ts +25 -23
  336. package/src/internal/apiService/errors.ts +15 -9
  337. package/src/internal/apiService/index.ts +1 -1
  338. package/src/internal/apiService/transformers.ts +2 -2
  339. package/src/internal/asyncIteratorMap.test.ts +4 -4
  340. package/src/internal/asyncIteratorMap.ts +1 -1
  341. package/src/internal/asyncIteratorRace.test.ts +149 -0
  342. package/src/internal/asyncIteratorRace.ts +79 -0
  343. package/src/internal/batch.test.ts +50 -0
  344. package/src/internal/batch.ts +9 -0
  345. package/src/internal/batchLoading.test.ts +13 -14
  346. package/src/internal/batchLoading.ts +8 -8
  347. package/src/internal/devices/apiService.ts +58 -51
  348. package/src/internal/devices/cryptoService.ts +22 -17
  349. package/src/internal/devices/index.ts +17 -10
  350. package/src/internal/devices/interface.ts +21 -12
  351. package/src/internal/devices/manager.test.ts +40 -9
  352. package/src/internal/devices/manager.ts +3 -3
  353. package/src/internal/download/apiService.ts +66 -49
  354. package/src/internal/download/cryptoService.ts +34 -18
  355. package/src/internal/download/fileDownloader.test.ts +25 -9
  356. package/src/internal/download/fileDownloader.ts +36 -18
  357. package/src/internal/download/index.ts +19 -19
  358. package/src/internal/download/interface.ts +19 -20
  359. package/src/internal/download/queue.ts +3 -3
  360. package/src/internal/download/telemetry.test.ts +11 -11
  361. package/src/internal/download/telemetry.ts +24 -14
  362. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  363. package/src/internal/download/thumbnailDownloader.ts +43 -32
  364. package/src/internal/errors.ts +7 -5
  365. package/src/internal/events/apiService.ts +30 -17
  366. package/src/internal/events/coreEventManager.test.ts +18 -18
  367. package/src/internal/events/coreEventManager.ts +9 -6
  368. package/src/internal/events/eventManager.test.ts +108 -82
  369. package/src/internal/events/eventManager.ts +16 -5
  370. package/src/internal/events/index.ts +75 -47
  371. package/src/internal/events/interface.ts +47 -39
  372. package/src/internal/events/volumeEventManager.test.ts +61 -65
  373. package/src/internal/events/volumeEventManager.ts +18 -9
  374. package/src/internal/nodes/apiService.test.ts +197 -147
  375. package/src/internal/nodes/apiService.ts +288 -174
  376. package/src/internal/nodes/cache.test.ts +48 -20
  377. package/src/internal/nodes/cache.ts +60 -44
  378. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  379. package/src/internal/nodes/cryptoCache.ts +10 -5
  380. package/src/internal/nodes/cryptoService.test.ts +492 -351
  381. package/src/internal/nodes/cryptoService.ts +170 -88
  382. package/src/internal/nodes/events.test.ts +38 -28
  383. package/src/internal/nodes/events.ts +13 -12
  384. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  385. package/src/internal/nodes/extendedAttributes.ts +20 -15
  386. package/src/internal/nodes/index.test.ts +133 -0
  387. package/src/internal/nodes/index.ts +27 -15
  388. package/src/internal/nodes/interface.ts +42 -29
  389. package/src/internal/nodes/nodesAccess.test.ts +124 -58
  390. package/src/internal/nodes/nodesAccess.ts +73 -49
  391. package/src/internal/nodes/nodesManagement.test.ts +32 -31
  392. package/src/internal/nodes/nodesManagement.ts +39 -32
  393. package/src/internal/nodes/nodesRevisions.ts +7 -7
  394. package/src/internal/nodes/validations.ts +2 -2
  395. package/src/internal/photos/albums.ts +5 -5
  396. package/src/internal/photos/apiService.ts +4 -7
  397. package/src/internal/photos/cache.ts +1 -1
  398. package/src/internal/photos/index.ts +8 -8
  399. package/src/internal/photos/interface.ts +2 -2
  400. package/src/internal/photos/photosTimeline.ts +4 -5
  401. package/src/internal/sdkEvents.test.ts +10 -10
  402. package/src/internal/sdkEvents.ts +5 -13
  403. package/src/internal/shares/apiService.ts +44 -33
  404. package/src/internal/shares/cache.test.ts +6 -4
  405. package/src/internal/shares/cache.ts +21 -12
  406. package/src/internal/shares/cryptoCache.test.ts +17 -11
  407. package/src/internal/shares/cryptoCache.ts +4 -4
  408. package/src/internal/shares/cryptoService.test.ts +72 -74
  409. package/src/internal/shares/cryptoService.ts +48 -23
  410. package/src/internal/shares/index.ts +23 -11
  411. package/src/internal/shares/interface.ts +8 -8
  412. package/src/internal/shares/manager.test.ts +88 -80
  413. package/src/internal/shares/manager.ts +19 -19
  414. package/src/internal/sharing/apiService.ts +282 -175
  415. package/src/internal/sharing/cache.test.ts +35 -35
  416. package/src/internal/sharing/cache.ts +11 -2
  417. package/src/internal/sharing/cryptoService.test.ts +58 -46
  418. package/src/internal/sharing/cryptoService.ts +121 -84
  419. package/src/internal/sharing/events.test.ts +113 -102
  420. package/src/internal/sharing/events.ts +42 -24
  421. package/src/internal/sharing/index.ts +22 -11
  422. package/src/internal/sharing/interface.ts +40 -40
  423. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  424. package/src/internal/sharing/sharingAccess.ts +39 -21
  425. package/src/internal/sharing/sharingManagement.test.ts +398 -298
  426. package/src/internal/sharing/sharingManagement.ts +138 -65
  427. package/src/internal/uids.ts +1 -1
  428. package/src/internal/upload/apiService.ts +167 -117
  429. package/src/internal/upload/blockVerifier.ts +8 -6
  430. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  431. package/src/internal/upload/cryptoService.ts +42 -36
  432. package/src/internal/upload/digests.ts +2 -2
  433. package/src/internal/upload/fileUploader.test.ts +15 -3
  434. package/src/internal/upload/fileUploader.ts +39 -17
  435. package/src/internal/upload/index.ts +13 -14
  436. package/src/internal/upload/interface.ts +79 -78
  437. package/src/internal/upload/manager.test.ts +170 -156
  438. package/src/internal/upload/manager.ts +66 -39
  439. package/src/internal/upload/queue.ts +3 -3
  440. package/src/internal/upload/streamUploader.test.ts +40 -26
  441. package/src/internal/upload/streamUploader.ts +87 -69
  442. package/src/internal/upload/telemetry.test.ts +11 -11
  443. package/src/internal/upload/telemetry.ts +25 -15
  444. package/src/internal/wait.test.ts +1 -1
  445. package/src/internal/wait.ts +3 -3
  446. package/src/protonDriveClient.ts +121 -39
  447. package/src/protonDrivePhotosClient.ts +16 -10
  448. package/src/telemetry.ts +60 -52
  449. package/src/tests/logger.ts +1 -1
  450. package/src/tests/telemetry.ts +2 -2
  451. package/src/transformers.ts +29 -21
  452. package/src/version.ts +0 -1
@@ -1,10 +1,10 @@
1
- import { NodeAPIService } from "./apiService";
2
- import { NodesCryptoCache } from "./cryptoCache";
3
- import { NodesCryptoService } from "./cryptoService";
1
+ import { NodeAPIService } from './apiService';
2
+ import { NodesCryptoCache } from './cryptoCache';
3
+ import { NodesCryptoService } from './cryptoService';
4
4
  import { NodesAccess } from './nodesAccess';
5
5
  import { DecryptedNode } from './interface';
6
6
  import { NodesManagement } from './nodesManagement';
7
- import { NodeResult } from "../../interface";
7
+ import { NodeResult } from '../../interface';
8
8
 
9
9
  describe('NodesManagement', () => {
10
10
  let apiService: NodeAPIService;
@@ -50,20 +50,20 @@ describe('NodesManagement', () => {
50
50
  renameNode: jest.fn(),
51
51
  moveNode: jest.fn(),
52
52
  trashNodes: jest.fn(async function* (uids) {
53
- yield* uids.map((uid) => ({ok: true, uid} as NodeResult))
53
+ yield* uids.map((uid) => ({ ok: true, uid }) as NodeResult);
54
54
  }),
55
55
  restoreNodes: jest.fn(async function* (uids) {
56
- yield* uids.map((uid) => ({ok: true, uid} as NodeResult))
56
+ yield* uids.map((uid) => ({ ok: true, uid }) as NodeResult);
57
57
  }),
58
58
  deleteNodes: jest.fn(async function* (uids) {
59
- yield* uids.map((uid) => ({ok: true, uid} as NodeResult))
59
+ yield* uids.map((uid) => ({ ok: true, uid }) as NodeResult);
60
60
  }),
61
61
  createFolder: jest.fn(),
62
- }
62
+ };
63
63
  // @ts-expect-error No need to implement all methods for mocking
64
64
  cryptoCache = {
65
65
  setNodeKeys: jest.fn(),
66
- }
66
+ };
67
67
  // @ts-expect-error No need to implement all methods for mocking
68
68
  cryptoService = {
69
69
  encryptNewName: jest.fn().mockResolvedValue({
@@ -73,7 +73,7 @@ describe('NodesManagement', () => {
73
73
  }),
74
74
  moveNode: jest.fn(),
75
75
  createFolder: jest.fn(),
76
- }
76
+ };
77
77
  // @ts-expect-error No need to implement all methods for mocking
78
78
  nodesAccess = {
79
79
  getNode: jest.fn().mockImplementation((uid: string) => nodes[uid]),
@@ -88,17 +88,19 @@ describe('NodesManagement', () => {
88
88
  hashKey: `${nodes[uid].parentUid}-hashKey`,
89
89
  })),
90
90
  iterateNodes: jest.fn(),
91
- getNodePrivateAndSessionKeys: jest.fn().mockImplementation((uid) => Promise.resolve({
92
- key: `${uid}-key`,
93
- passphrase: `${uid}-passphrase`,
94
- passphraseSessionKey: `${uid}-passphraseSessionKey`,
95
- contentKeyPacketSessionKey: `${uid}-contentKeyPacketSessionKey`,
96
- nameSessionKey: `${uid}-nameSessionKey`,
97
- })),
98
- getRootNodeEmailKey: jest.fn().mockResolvedValue({ email: "root-email", addressKey: "root-key" }),
91
+ getNodePrivateAndSessionKeys: jest.fn().mockImplementation((uid) =>
92
+ Promise.resolve({
93
+ key: `${uid}-key`,
94
+ passphrase: `${uid}-passphrase`,
95
+ passphraseSessionKey: `${uid}-passphraseSessionKey`,
96
+ contentKeyPacketSessionKey: `${uid}-contentKeyPacketSessionKey`,
97
+ nameSessionKey: `${uid}-nameSessionKey`,
98
+ }),
99
+ ),
100
+ getRootNodeEmailKey: jest.fn().mockResolvedValue({ email: 'root-email', addressKey: 'root-key' }),
99
101
  notifyNodeChanged: jest.fn(),
100
102
  notifyNodeDeleted: jest.fn(),
101
- }
103
+ };
102
104
 
103
105
  management = new NodesManagement(apiService, cryptoCache, cryptoService, nodesAccess);
104
106
  });
@@ -117,13 +119,13 @@ describe('NodesManagement', () => {
117
119
  expect(cryptoService.encryptNewName).toHaveBeenCalledWith(
118
120
  { key: 'parentUid-key', hashKey: 'parentUid-hashKey' },
119
121
  'nodeUid-nameSessionKey',
120
- { email: "root-email", addressKey: "root-key" },
122
+ { email: 'root-email', addressKey: 'root-key' },
121
123
  'new name',
122
124
  );
123
125
  expect(apiService.renameNode).toHaveBeenCalledWith(
124
126
  nodes.nodeUid.uid,
125
127
  { hash: nodes.nodeUid.hash },
126
- { encryptedName: 'newArmoredNodeName', nameSignatureEmail: 'newSignatureEmail', hash: 'newHash' }
128
+ { encryptedName: 'newArmoredNodeName', nameSignatureEmail: 'newSignatureEmail', hash: 'newHash' },
127
129
  );
128
130
  expect(nodesAccess.notifyNodeChanged).toHaveBeenCalledWith('nodeUid');
129
131
  });
@@ -136,7 +138,7 @@ describe('NodesManagement', () => {
136
138
  armoredNodePassphraseSignature: 'movedArmoredNodePassphraseSignature',
137
139
  signatureEmail: 'movedSignatureEmail',
138
140
  nameSignatureEmail: 'movedNameSignatureEmail',
139
- }
141
+ };
140
142
  cryptoService.moveNode = jest.fn().mockResolvedValue(encryptedCrypto);
141
143
 
142
144
  const newNode = await management.moveNode('nodeUid', 'newParentNodeUid');
@@ -157,10 +159,10 @@ describe('NodesManagement', () => {
157
159
  passphrase: 'nodeUid-passphrase',
158
160
  passphraseSessionKey: 'nodeUid-passphraseSessionKey',
159
161
  contentKeyPacketSessionKey: 'nodeUid-contentKeyPacketSessionKey',
160
- nameSessionKey: 'nodeUid-nameSessionKey'
162
+ nameSessionKey: 'nodeUid-nameSessionKey',
161
163
  }),
162
164
  expect.objectContaining({ key: 'newParentNodeUid-key', hashKey: 'newParentNodeUid-hashKey' }),
163
- { email: "root-email", addressKey: "root-key" },
165
+ { email: 'root-email', addressKey: 'root-key' },
164
166
  );
165
167
  expect(apiService.moveNode).toHaveBeenCalledWith(
166
168
  'nodeUid',
@@ -185,7 +187,7 @@ describe('NodesManagement', () => {
185
187
  armoredNodePassphraseSignature: 'movedArmoredNodePassphraseSignature',
186
188
  signatureEmail: 'movedSignatureEmail',
187
189
  nameSignatureEmail: 'movedNameSignatureEmail',
188
- }
190
+ };
189
191
  cryptoService.moveNode = jest.fn().mockResolvedValue(encryptedCrypto);
190
192
 
191
193
  const newNode = await management.moveNode('anonymousNodeUid', 'newParentNodeUid');
@@ -197,10 +199,10 @@ describe('NodesManagement', () => {
197
199
  passphrase: 'anonymousNodeUid-passphrase',
198
200
  passphraseSessionKey: 'anonymousNodeUid-passphraseSessionKey',
199
201
  contentKeyPacketSessionKey: 'anonymousNodeUid-contentKeyPacketSessionKey',
200
- nameSessionKey: 'anonymousNodeUid-nameSessionKey'
202
+ nameSessionKey: 'anonymousNodeUid-nameSessionKey',
201
203
  }),
202
204
  expect.objectContaining({ key: 'newParentNodeUid-key', hashKey: 'newParentNodeUid-hashKey' }),
203
- { email: "root-email", addressKey: "root-key" },
205
+ { email: 'root-email', addressKey: 'root-key' },
204
206
  );
205
207
  expect(newNode).toEqual({
206
208
  ...nodes.anonymousNodeUid,
@@ -217,12 +219,12 @@ describe('NodesManagement', () => {
217
219
  },
218
220
  {
219
221
  parentUid: 'newParentNodeUid',
220
- ...encryptedCrypto
222
+ ...encryptedCrypto,
221
223
  },
222
224
  );
223
225
  });
224
226
 
225
- it("trashes node and updates cache", async () => {
227
+ it('trashes node and updates cache', async () => {
226
228
  const uids = ['v1~n1', 'v1~n2'];
227
229
  const trashed = new Set();
228
230
  for await (const node of management.trashNodes(uids)) {
@@ -232,7 +234,7 @@ describe('NodesManagement', () => {
232
234
  expect(nodesAccess.notifyNodeChanged).toHaveBeenCalledTimes(2);
233
235
  });
234
236
 
235
- it("restores node and updates cache", async () => {
237
+ it('restores node and updates cache', async () => {
236
238
  const uids = ['v1~n1', 'v1~n2'];
237
239
  const restored = new Set();
238
240
  for await (const node of management.restoreNodes(uids)) {
@@ -241,5 +243,4 @@ describe('NodesManagement', () => {
241
243
  expect(restored).toEqual(new Set(uids));
242
244
  expect(nodesAccess.notifyNodeChanged).toHaveBeenCalledTimes(2);
243
245
  });
244
-
245
246
  });
@@ -1,15 +1,15 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { MemberRole, NodeType, NodeResult, resultOk } from "../../interface";
4
- import { AbortError, ValidationError } from "../../errors";
3
+ import { MemberRole, NodeType, NodeResult, resultOk } from '../../interface';
4
+ import { AbortError, ValidationError } from '../../errors';
5
5
  import { getErrorMessage } from '../errors';
6
- import { NodeAPIService } from "./apiService";
7
- import { NodesCryptoCache } from "./cryptoCache";
8
- import { NodesCryptoService } from "./cryptoService";
9
- import { DecryptedNode } from "./interface";
10
- import { NodesAccess } from "./nodesAccess";
11
- import { validateNodeName } from "./validations";
12
- import { generateFolderExtendedAttributes } from "./extendedAttributes";
6
+ import { NodeAPIService } from './apiService';
7
+ import { NodesCryptoCache } from './cryptoCache';
8
+ import { NodesCryptoService } from './cryptoService';
9
+ import { DecryptedNode } from './interface';
10
+ import { NodesAccess } from './nodesAccess';
11
+ import { validateNodeName } from './validations';
12
+ import { generateFolderExtendedAttributes } from './extendedAttributes';
13
13
  import { splitNodeUid } from '../uids';
14
14
 
15
15
  /**
@@ -34,7 +34,11 @@ export class NodesManagement {
34
34
  this.nodesAccess = nodesAccess;
35
35
  }
36
36
 
37
- async renameNode(nodeUid: string, newName: string, options = { allowRenameRootNode: false }): Promise<DecryptedNode> {
37
+ async renameNode(
38
+ nodeUid: string,
39
+ newName: string,
40
+ options = { allowRenameRootNode: false },
41
+ ): Promise<DecryptedNode> {
38
42
  validateNodeName(newName);
39
43
 
40
44
  const node = await this.nodesAccess.getNode(nodeUid);
@@ -43,19 +47,20 @@ export class NodesManagement {
43
47
  const address = await this.nodesAccess.getRootNodeEmailKey(nodeUid);
44
48
 
45
49
  if (!options.allowRenameRootNode && (!node.hash || !parentKeys.hashKey)) {
46
- throw new ValidationError(c('Error').t`Renaming root item is not allowed`)
50
+ throw new ValidationError(c('Error').t`Renaming root item is not allowed`);
47
51
  }
48
52
 
49
- const {
50
- signatureEmail,
51
- armoredNodeName,
52
- hash,
53
- } = await this.cryptoService.encryptNewName(parentKeys, nodeNameSessionKey, address, newName);
53
+ const { signatureEmail, armoredNodeName, hash } = await this.cryptoService.encryptNewName(
54
+ parentKeys,
55
+ nodeNameSessionKey,
56
+ address,
57
+ newName,
58
+ );
54
59
 
55
60
  // Because hash is optional, lets ensure we have it unless explicitely
56
61
  // allowed to rename root node.
57
62
  if (!options.allowRenameRootNode && !hash) {
58
- throw new Error("Node hash not generated");
63
+ throw new Error('Node hash not generated');
59
64
  }
60
65
 
61
66
  await this.apiService.renameNode(
@@ -67,7 +72,7 @@ export class NodesManagement {
67
72
  encryptedName: armoredNodeName,
68
73
  nameSignatureEmail: signatureEmail,
69
74
  hash: hash,
70
- }
75
+ },
71
76
  );
72
77
  await this.nodesAccess.notifyNodeChanged(nodeUid);
73
78
  const newNode: DecryptedNode = {
@@ -76,12 +81,12 @@ export class NodesManagement {
76
81
  encryptedName: armoredNodeName,
77
82
  nameAuthor: resultOk(signatureEmail),
78
83
  hash,
79
- }
84
+ };
80
85
  return newNode;
81
86
  }
82
87
 
83
88
  // Improvement requested: move nodes in parallel
84
- async* moveNodes(nodeUids: string[], newParentNodeUid: string, signal?: AbortSignal): AsyncGenerator<NodeResult> {
89
+ async *moveNodes(nodeUids: string[], newParentNodeUid: string, signal?: AbortSignal): AsyncGenerator<NodeResult> {
85
90
  for (const nodeUid of nodeUids) {
86
91
  if (signal?.aborted) {
87
92
  throw new AbortError(c('Error').t`Move operation aborted`);
@@ -91,13 +96,13 @@ export class NodesManagement {
91
96
  yield {
92
97
  uid: nodeUid,
93
98
  ok: true,
94
- }
99
+ };
95
100
  } catch (error: unknown) {
96
101
  yield {
97
102
  uid: nodeUid,
98
103
  ok: false,
99
104
  error: getErrorMessage(error),
100
- }
105
+ };
101
106
  }
102
107
  }
103
108
  }
@@ -132,10 +137,12 @@ export class NodesManagement {
132
137
  // Node passphrase and signature email must be passed if and only if
133
138
  // the the signatures are missing (key author is null).
134
139
  const anonymousKey = node.keyAuthor.ok && node.keyAuthor.value === null;
135
- const keySignatureProperties = !anonymousKey ? {} : {
136
- signatureEmail: encryptedCrypto.signatureEmail,
137
- armoredNodePassphraseSignature: encryptedCrypto.armoredNodePassphraseSignature,
138
- }
140
+ const keySignatureProperties = !anonymousKey
141
+ ? {}
142
+ : {
143
+ signatureEmail: encryptedCrypto.signatureEmail,
144
+ armoredNodePassphraseSignature: encryptedCrypto.armoredNodePassphraseSignature,
145
+ };
139
146
  await this.apiService.moveNode(
140
147
  nodeUid,
141
148
  {
@@ -149,7 +156,7 @@ export class NodesManagement {
149
156
  nameSignatureEmail: encryptedCrypto.nameSignatureEmail,
150
157
  hash: encryptedCrypto.hash,
151
158
  // TODO: When moving photos, we need to pass content hash.
152
- }
159
+ },
153
160
  );
154
161
  const newNode: DecryptedNode = {
155
162
  ...node,
@@ -163,7 +170,7 @@ export class NodesManagement {
163
170
  return newNode;
164
171
  }
165
172
 
166
- async* trashNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
173
+ async *trashNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
167
174
  for await (const result of this.apiService.trashNodes(nodeUids, signal)) {
168
175
  if (result.ok) {
169
176
  await this.nodesAccess.notifyNodeChanged(result.uid);
@@ -172,7 +179,7 @@ export class NodesManagement {
172
179
  }
173
180
  }
174
181
 
175
- async* restoreNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
182
+ async *restoreNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
176
183
  for await (const result of this.apiService.restoreNodes(nodeUids, signal)) {
177
184
  if (result.ok) {
178
185
  await this.nodesAccess.notifyNodeChanged(result.uid);
@@ -181,7 +188,7 @@ export class NodesManagement {
181
188
  }
182
189
  }
183
190
 
184
- async* deleteNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
191
+ async *deleteNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
185
192
  const deletedNodeUids = [];
186
193
 
187
194
  for await (const result of this.apiService.deleteNodes(nodeUids, signal)) {
@@ -233,7 +240,7 @@ export class NodesManagement {
233
240
  uid: nodeUid,
234
241
  parentUid: parentNodeUid,
235
242
  type: NodeType.Folder,
236
- mediaType: "Folder",
243
+ mediaType: 'Folder',
237
244
  creationTime: new Date(),
238
245
 
239
246
  // Share node metadata
@@ -246,7 +253,7 @@ export class NodesManagement {
246
253
  nameAuthor: resultOk(encryptedCrypto.signatureEmail),
247
254
  name: resultOk(folderName),
248
255
  treeEventScopeId: splitNodeUid(nodeUid).volumeId,
249
- }
256
+ };
250
257
 
251
258
  await this.cryptoCache.setNodeKeys(nodeUid, keys);
252
259
  return node;
@@ -1,9 +1,9 @@
1
- import { Logger, Revision } from "../../interface";
2
- import { makeNodeUidFromRevisionUid } from "../uids";
3
- import { NodeAPIService } from "./apiService";
4
- import { NodesCryptoService } from "./cryptoService";
5
- import { NodesAccess } from "./nodesAccess";
6
- import { parseFileExtendedAttributes } from "./extendedAttributes";
1
+ import { Logger, Revision } from '../../interface';
2
+ import { makeNodeUidFromRevisionUid } from '../uids';
3
+ import { NodeAPIService } from './apiService';
4
+ import { NodesCryptoService } from './cryptoService';
5
+ import { NodesAccess } from './nodesAccess';
6
+ import { parseFileExtendedAttributes } from './extendedAttributes';
7
7
 
8
8
  /**
9
9
  * Provides access to revisions metadata.
@@ -34,7 +34,7 @@ export class NodesRevisons {
34
34
  };
35
35
  }
36
36
 
37
- async* iterateRevisions(nodeUid: string, signal?: AbortSignal): AsyncGenerator<Revision> {
37
+ async *iterateRevisions(nodeUid: string, signal?: AbortSignal): AsyncGenerator<Revision> {
38
38
  const { key } = await this.nodesAccess.getNodeKeys(nodeUid);
39
39
 
40
40
  const encryptedRevisions = await this.apiService.getRevisions(nodeUid, signal);
@@ -16,8 +16,8 @@ export function validateNodeName(name: string): void {
16
16
  c('Error').ngettext(
17
17
  msgid`Name must be ${MAX_NODE_NAME_LENGTH} character long at most`,
18
18
  `Name must be ${MAX_NODE_NAME_LENGTH} characters long at most`,
19
- MAX_NODE_NAME_LENGTH
20
- )
19
+ MAX_NODE_NAME_LENGTH,
20
+ ),
21
21
  );
22
22
  }
23
23
  if (name.includes('/')) {
@@ -1,6 +1,6 @@
1
- import { PhotosAPIService } from "./apiService";
2
- import { PhotosCache } from "./cache";
3
- import { NodesService } from "./interface";
1
+ import { PhotosAPIService } from './apiService';
2
+ import { PhotosCache } from './cache';
3
+ import { NodesService } from './interface';
4
4
 
5
5
  export class Albums {
6
6
  constructor(
@@ -13,12 +13,12 @@ export class Albums {
13
13
  this.nodesService = nodesService;
14
14
  }
15
15
 
16
- async* iterateAlbums() {
16
+ async *iterateAlbums() {
17
17
  for await (const album of this.apiService.iterateAlbums()) {
18
18
  const node = await this.nodesService.getNode(album.uid);
19
19
  yield {
20
20
  node,
21
- }
21
+ };
22
22
  }
23
23
  }
24
24
 
@@ -1,16 +1,13 @@
1
- import { DriveAPIService } from "../apiService";
1
+ import { DriveAPIService } from '../apiService';
2
2
 
3
3
  export class PhotosAPIService {
4
4
  constructor(private apiService: DriveAPIService) {
5
5
  this.apiService = apiService;
6
6
  }
7
7
 
8
- async* iterateTimeline(): AsyncGenerator<any> {
9
- }
8
+ async *iterateTimeline(): AsyncGenerator<any> {}
10
9
 
11
- async* iterateAlbums(): AsyncGenerator<any> {
12
- }
10
+ async *iterateAlbums(): AsyncGenerator<any> {}
13
11
 
14
- async createAlbum(object: any): Promise<any> {
15
- }
12
+ async createAlbum(object: any): Promise<any> {}
16
13
  }
@@ -1,4 +1,4 @@
1
- import { ProtonDriveEntitiesCache } from "../../interface";
1
+ import { ProtonDriveEntitiesCache } from '../../interface';
2
2
 
3
3
  export class PhotosCache {
4
4
  constructor(private driveCache: ProtonDriveEntitiesCache) {
@@ -1,10 +1,10 @@
1
- import { DriveAPIService } from "../apiService";
2
- import { ProtonDriveEntitiesCache } from "../../interface";
3
- import { PhotosAPIService } from "./apiService";
4
- import { PhotosCache } from "./cache";
5
- import { PhotosTimeline } from "./photosTimeline";
6
- import { Albums } from "./albums";
7
- import { NodesService } from "./interface";
1
+ import { DriveAPIService } from '../apiService';
2
+ import { ProtonDriveEntitiesCache } from '../../interface';
3
+ import { PhotosAPIService } from './apiService';
4
+ import { PhotosCache } from './cache';
5
+ import { PhotosTimeline } from './photosTimeline';
6
+ import { Albums } from './albums';
7
+ import { NodesService } from './interface';
8
8
 
9
9
  export function initPhotosModule(
10
10
  apiService: DriveAPIService,
@@ -19,5 +19,5 @@ export function initPhotosModule(
19
19
  return {
20
20
  timeline,
21
21
  albums,
22
- }
22
+ };
23
23
  }
@@ -1,5 +1,5 @@
1
- import { MissingNode } from "../../interface";
2
- import { DecryptedNode } from "../nodes";
1
+ import { MissingNode } from '../../interface';
2
+ import { DecryptedNode } from '../nodes';
3
3
 
4
4
  export interface NodesService {
5
5
  getNode(nodeUid: string): Promise<DecryptedNode>;
@@ -1,6 +1,6 @@
1
- import { PhotosAPIService } from "./apiService";
2
- import { PhotosCache } from "./cache";
3
- import { NodesService } from "./interface";
1
+ import { PhotosAPIService } from './apiService';
2
+ import { PhotosCache } from './cache';
3
+ import { NodesService } from './interface';
4
4
 
5
5
  export class PhotosTimeline {
6
6
  constructor(
@@ -13,6 +13,5 @@ export class PhotosTimeline {
13
13
  this.nodesService = nodesService;
14
14
  }
15
15
 
16
- async getTimelineStructure() {
17
- }
16
+ async getTimelineStructure() {}
18
17
  }
@@ -1,7 +1,7 @@
1
- import { SDKEvent } from "../interface";
2
- import { SDKEvents } from "./sdkEvents";
1
+ import { SDKEvent } from '../interface';
2
+ import { SDKEvents } from './sdkEvents';
3
3
 
4
- describe("SDKEvents", () => {
4
+ describe('SDKEvents', () => {
5
5
  let sdkEvents: SDKEvents;
6
6
  let logger: { debug: jest.Mock };
7
7
 
@@ -10,13 +10,13 @@ describe("SDKEvents", () => {
10
10
  sdkEvents = new SDKEvents({ getLogger: () => logger } as any);
11
11
  });
12
12
 
13
- it("should log when no listeners are present for an event", () => {
13
+ it('should log when no listeners are present for an event', () => {
14
14
  sdkEvents.requestsThrottled();
15
15
 
16
- expect(logger.debug).toHaveBeenCalledWith("No listeners for event: requestsThrottled");
16
+ expect(logger.debug).toHaveBeenCalledWith('No listeners for event: requestsThrottled');
17
17
  });
18
18
 
19
- it("should emit an event to its listeners", () => {
19
+ it('should emit an event to its listeners', () => {
20
20
  const requestsThrottledListener = jest.fn();
21
21
  sdkEvents.addListener(SDKEvent.RequestsThrottled, requestsThrottledListener);
22
22
  const requestsUnthrottledListener = jest.fn();
@@ -26,10 +26,10 @@ describe("SDKEvents", () => {
26
26
 
27
27
  expect(requestsThrottledListener).toHaveBeenCalled();
28
28
  expect(requestsUnthrottledListener).not.toHaveBeenCalled();
29
- expect(logger.debug).toHaveBeenCalledWith("Emitting event: requestsThrottled");
29
+ expect(logger.debug).toHaveBeenCalledWith('Emitting event: requestsThrottled');
30
30
  });
31
31
 
32
- it("should emit an event to multiple listeners", () => {
32
+ it('should emit an event to multiple listeners', () => {
33
33
  const requestsThrottledListener1 = jest.fn();
34
34
  const requestsThrottledListener2 = jest.fn();
35
35
  sdkEvents.addListener(SDKEvent.RequestsThrottled, requestsThrottledListener1);
@@ -39,10 +39,10 @@ describe("SDKEvents", () => {
39
39
 
40
40
  expect(requestsThrottledListener1).toHaveBeenCalled();
41
41
  expect(requestsThrottledListener2).toHaveBeenCalled();
42
- expect(logger.debug).toHaveBeenCalledWith("Emitting event: requestsThrottled");
42
+ expect(logger.debug).toHaveBeenCalledWith('Emitting event: requestsThrottled');
43
43
  });
44
44
 
45
- it("should not emit after unsubsribe", () => {
45
+ it('should not emit after unsubsribe', () => {
46
46
  const callback = jest.fn();
47
47
  const unsubscribe = sdkEvents.addListener(SDKEvent.RequestsThrottled, callback);
48
48
 
@@ -1,4 +1,4 @@
1
- import { ProtonDriveTelemetry, Logger, SDKEvent } from "../interface";
1
+ import { ProtonDriveTelemetry, Logger, SDKEvent } from '../interface';
2
2
 
3
3
  export class SDKEvents {
4
4
  private logger: Logger;
@@ -9,17 +9,11 @@ export class SDKEvents {
9
9
  }
10
10
 
11
11
  addListener(eventName: SDKEvent, callback: () => void): () => void {
12
- this.listeners.set(eventName, [
13
- ...(this.listeners.get(eventName) || []),
14
- callback,
15
- ]);
12
+ this.listeners.set(eventName, [...(this.listeners.get(eventName) || []), callback]);
16
13
 
17
14
  return () => {
18
- this.listeners.set(
19
- eventName,
20
- this.listeners.get(eventName)?.filter((cb) => cb !== callback) || []
21
- );
22
- }
15
+ this.listeners.set(eventName, this.listeners.get(eventName)?.filter((cb) => cb !== callback) || []);
16
+ };
23
17
  }
24
18
 
25
19
  transfersPaused(): void {
@@ -45,8 +39,6 @@ export class SDKEvents {
45
39
  }
46
40
 
47
41
  this.logger.debug(`Emitting event: ${eventName}`);
48
- this.listeners
49
- .get(eventName)
50
- ?.forEach((callback) => callback());
42
+ this.listeners.get(eventName)?.forEach((callback) => callback());
51
43
  }
52
44
  }