@protontech/drive-sdk 0.1.0 → 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 (447) 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 +1 -1
  120. package/dist/internal/events/eventManager.js +0 -1
  121. package/dist/internal/events/eventManager.js.map +1 -1
  122. package/dist/internal/events/eventManager.test.js +34 -25
  123. package/dist/internal/events/eventManager.test.js.map +1 -1
  124. package/dist/internal/events/index.d.ts +6 -6
  125. package/dist/internal/events/index.js.map +1 -1
  126. package/dist/internal/events/interface.d.ts +1 -1
  127. package/dist/internal/events/interface.js +0 -1
  128. package/dist/internal/events/interface.js.map +1 -1
  129. package/dist/internal/events/volumeEventManager.d.ts +3 -3
  130. package/dist/internal/events/volumeEventManager.js.map +1 -1
  131. package/dist/internal/events/volumeEventManager.test.js +55 -55
  132. package/dist/internal/events/volumeEventManager.test.js.map +1 -1
  133. package/dist/internal/nodes/apiService.d.ts +4 -3
  134. package/dist/internal/nodes/apiService.js +36 -15
  135. package/dist/internal/nodes/apiService.js.map +1 -1
  136. package/dist/internal/nodes/apiService.test.js +60 -41
  137. package/dist/internal/nodes/apiService.test.js.map +1 -1
  138. package/dist/internal/nodes/cache.d.ts +5 -5
  139. package/dist/internal/nodes/cache.js +14 -7
  140. package/dist/internal/nodes/cache.js.map +1 -1
  141. package/dist/internal/nodes/cache.test.js +31 -9
  142. package/dist/internal/nodes/cache.test.js.map +1 -1
  143. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  144. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  145. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  146. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  147. package/dist/internal/nodes/cryptoService.d.ts +3 -3
  148. package/dist/internal/nodes/cryptoService.js +11 -17
  149. package/dist/internal/nodes/cryptoService.js.map +1 -1
  150. package/dist/internal/nodes/cryptoService.test.js +320 -241
  151. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  152. package/dist/internal/nodes/events.d.ts +3 -3
  153. package/dist/internal/nodes/events.js.map +1 -1
  154. package/dist/internal/nodes/events.test.js +27 -21
  155. package/dist/internal/nodes/events.test.js.map +1 -1
  156. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  157. package/dist/internal/nodes/extendedAttributes.js +3 -1
  158. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  159. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  160. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  161. package/dist/internal/nodes/index.d.ts +10 -10
  162. package/dist/internal/nodes/index.js.map +1 -1
  163. package/dist/internal/nodes/index.test.d.ts +1 -0
  164. package/dist/internal/nodes/index.test.js +106 -0
  165. package/dist/internal/nodes/index.test.js.map +1 -0
  166. package/dist/internal/nodes/interface.d.ts +2 -2
  167. package/dist/internal/nodes/nodesAccess.d.ts +7 -7
  168. package/dist/internal/nodes/nodesAccess.js +28 -16
  169. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  170. package/dist/internal/nodes/nodesAccess.test.js +39 -13
  171. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  172. package/dist/internal/nodes/nodesManagement.d.ts +6 -6
  173. package/dist/internal/nodes/nodesManagement.js +9 -7
  174. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  175. package/dist/internal/nodes/nodesManagement.test.js +9 -9
  176. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  177. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  178. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  179. package/dist/internal/photos/albums.d.ts +3 -3
  180. package/dist/internal/photos/albums.js.map +1 -1
  181. package/dist/internal/photos/apiService.d.ts +1 -1
  182. package/dist/internal/photos/apiService.js +3 -6
  183. package/dist/internal/photos/apiService.js.map +1 -1
  184. package/dist/internal/photos/cache.d.ts +1 -1
  185. package/dist/internal/photos/index.d.ts +5 -5
  186. package/dist/internal/photos/index.js.map +1 -1
  187. package/dist/internal/photos/interface.d.ts +2 -2
  188. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  189. package/dist/internal/photos/photosTimeline.js +1 -2
  190. package/dist/internal/photos/photosTimeline.js.map +1 -1
  191. package/dist/internal/sdkEvents.d.ts +1 -1
  192. package/dist/internal/sdkEvents.js +2 -7
  193. package/dist/internal/sdkEvents.js.map +1 -1
  194. package/dist/internal/sdkEvents.test.js +8 -8
  195. package/dist/internal/shares/apiService.d.ts +2 -2
  196. package/dist/internal/shares/apiService.js +5 -3
  197. package/dist/internal/shares/apiService.js.map +1 -1
  198. package/dist/internal/shares/cache.d.ts +2 -2
  199. package/dist/internal/shares/cache.js +12 -6
  200. package/dist/internal/shares/cache.js.map +1 -1
  201. package/dist/internal/shares/cache.test.js.map +1 -1
  202. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  203. package/dist/internal/shares/cryptoCache.test.js +8 -2
  204. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  205. package/dist/internal/shares/cryptoService.d.ts +3 -3
  206. package/dist/internal/shares/cryptoService.js.map +1 -1
  207. package/dist/internal/shares/cryptoService.test.js +42 -42
  208. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  209. package/dist/internal/shares/index.d.ts +4 -4
  210. package/dist/internal/shares/index.js.map +1 -1
  211. package/dist/internal/shares/interface.d.ts +2 -2
  212. package/dist/internal/shares/manager.d.ts +7 -7
  213. package/dist/internal/shares/manager.js.map +1 -1
  214. package/dist/internal/shares/manager.test.js +71 -63
  215. package/dist/internal/shares/manager.test.js.map +1 -1
  216. package/dist/internal/sharing/apiService.d.ts +4 -4
  217. package/dist/internal/sharing/apiService.js +4 -3
  218. package/dist/internal/sharing/apiService.js.map +1 -1
  219. package/dist/internal/sharing/cache.d.ts +1 -1
  220. package/dist/internal/sharing/cache.test.js +33 -33
  221. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  222. package/dist/internal/sharing/cryptoService.js +3 -5
  223. package/dist/internal/sharing/cryptoService.js.map +1 -1
  224. package/dist/internal/sharing/cryptoService.test.js +39 -39
  225. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  226. package/dist/internal/sharing/events.d.ts +4 -4
  227. package/dist/internal/sharing/events.js +0 -1
  228. package/dist/internal/sharing/events.js.map +1 -1
  229. package/dist/internal/sharing/events.test.js +39 -40
  230. package/dist/internal/sharing/events.test.js.map +1 -1
  231. package/dist/internal/sharing/index.d.ts +6 -6
  232. package/dist/internal/sharing/index.js.map +1 -1
  233. package/dist/internal/sharing/interface.d.ts +5 -4
  234. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  235. package/dist/internal/sharing/sharingAccess.js +8 -4
  236. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  237. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  238. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  239. package/dist/internal/sharing/sharingManagement.d.ts +4 -4
  240. package/dist/internal/sharing/sharingManagement.js +5 -7
  241. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  242. package/dist/internal/sharing/sharingManagement.test.js +297 -248
  243. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  244. package/dist/internal/uids.js.map +1 -1
  245. package/dist/internal/upload/apiService.d.ts +3 -3
  246. package/dist/internal/upload/apiService.js +1 -1
  247. package/dist/internal/upload/apiService.js.map +1 -1
  248. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  249. package/dist/internal/upload/blockVerifier.js +1 -1
  250. package/dist/internal/upload/blockVerifier.js.map +1 -1
  251. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  252. package/dist/internal/upload/cryptoService.d.ts +4 -4
  253. package/dist/internal/upload/cryptoService.js +4 -4
  254. package/dist/internal/upload/cryptoService.js.map +1 -1
  255. package/dist/internal/upload/digests.js.map +1 -1
  256. package/dist/internal/upload/fileUploader.d.ts +6 -6
  257. package/dist/internal/upload/fileUploader.js.map +1 -1
  258. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  259. package/dist/internal/upload/index.d.ts +5 -5
  260. package/dist/internal/upload/index.js.map +1 -1
  261. package/dist/internal/upload/interface.d.ts +3 -3
  262. package/dist/internal/upload/manager.d.ts +4 -4
  263. package/dist/internal/upload/manager.js +7 -5
  264. package/dist/internal/upload/manager.js.map +1 -1
  265. package/dist/internal/upload/manager.test.js +137 -123
  266. package/dist/internal/upload/manager.test.js.map +1 -1
  267. package/dist/internal/upload/streamUploader.d.ts +6 -6
  268. package/dist/internal/upload/streamUploader.js +8 -6
  269. package/dist/internal/upload/streamUploader.js.map +1 -1
  270. package/dist/internal/upload/streamUploader.test.js +16 -11
  271. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  272. package/dist/internal/upload/telemetry.d.ts +3 -3
  273. package/dist/internal/upload/telemetry.js +5 -3
  274. package/dist/internal/upload/telemetry.js.map +1 -1
  275. package/dist/internal/upload/telemetry.test.js +8 -8
  276. package/dist/internal/upload/telemetry.test.js.map +1 -1
  277. package/dist/protonDriveClient.d.ts +8 -8
  278. package/dist/protonDriveClient.js +12 -9
  279. package/dist/protonDriveClient.js.map +1 -1
  280. package/dist/protonDrivePhotosClient.js.map +1 -1
  281. package/dist/telemetry.js +18 -15
  282. package/dist/telemetry.js.map +1 -1
  283. package/dist/tests/logger.js.map +1 -1
  284. package/dist/tests/telemetry.d.ts +1 -1
  285. package/dist/transformers.js +4 -2
  286. package/dist/transformers.js.map +1 -1
  287. package/package.json +1 -1
  288. package/src/cache/interface.ts +22 -22
  289. package/src/cache/memoryCache.test.ts +7 -7
  290. package/src/cache/memoryCache.ts +4 -4
  291. package/src/cache/nullCache.ts +1 -1
  292. package/src/config.ts +5 -5
  293. package/src/crypto/driveCrypto.test.ts +15 -15
  294. package/src/crypto/driveCrypto.ts +120 -156
  295. package/src/crypto/hmac.ts +1 -1
  296. package/src/crypto/interface.ts +63 -72
  297. package/src/crypto/openPGPCrypto.ts +74 -94
  298. package/src/crypto/utils.ts +1 -1
  299. package/src/diagnostic/eventsGenerator.ts +2 -2
  300. package/src/diagnostic/httpClient.ts +6 -2
  301. package/src/diagnostic/index.ts +12 -10
  302. package/src/diagnostic/integrityVerificationStream.ts +3 -4
  303. package/src/diagnostic/interface.ts +81 -81
  304. package/src/diagnostic/sdkDiagnostic.ts +35 -24
  305. package/src/diagnostic/sdkDiagnosticFull.ts +16 -19
  306. package/src/diagnostic/telemetry.ts +4 -1
  307. package/src/diagnostic/zipGenerators.test.ts +1 -1
  308. package/src/diagnostic/zipGenerators.ts +3 -3
  309. package/src/errors.ts +21 -21
  310. package/src/index.ts +3 -3
  311. package/src/interface/account.ts +10 -10
  312. package/src/interface/author.ts +6 -6
  313. package/src/interface/config.ts +4 -4
  314. package/src/interface/devices.ts +6 -6
  315. package/src/interface/download.ts +12 -9
  316. package/src/interface/events.ts +45 -39
  317. package/src/interface/httpClient.ts +11 -11
  318. package/src/interface/index.ts +76 -19
  319. package/src/interface/nodes.ts +47 -49
  320. package/src/interface/result.ts +1 -3
  321. package/src/interface/sharing.ts +60 -57
  322. package/src/interface/telemetry.ts +74 -74
  323. package/src/interface/thumbnail.ts +5 -6
  324. package/src/interface/upload.ts +20 -12
  325. package/src/internal/apiService/apiService.test.ts +109 -76
  326. package/src/internal/apiService/apiService.ts +40 -26
  327. package/src/internal/apiService/coreTypes.ts +2474 -2463
  328. package/src/internal/apiService/driveTypes.ts +1868 -1822
  329. package/src/internal/apiService/errorCodes.ts +4 -4
  330. package/src/internal/apiService/errors.test.ts +25 -23
  331. package/src/internal/apiService/errors.ts +15 -9
  332. package/src/internal/apiService/index.ts +1 -1
  333. package/src/internal/apiService/transformers.ts +2 -2
  334. package/src/internal/asyncIteratorMap.test.ts +4 -4
  335. package/src/internal/asyncIteratorMap.ts +1 -1
  336. package/src/internal/asyncIteratorRace.test.ts +149 -0
  337. package/src/internal/asyncIteratorRace.ts +79 -0
  338. package/src/internal/batch.test.ts +50 -0
  339. package/src/internal/batch.ts +9 -0
  340. package/src/internal/batchLoading.test.ts +13 -14
  341. package/src/internal/batchLoading.ts +8 -8
  342. package/src/internal/devices/apiService.ts +58 -51
  343. package/src/internal/devices/cryptoService.ts +22 -17
  344. package/src/internal/devices/index.ts +17 -10
  345. package/src/internal/devices/interface.ts +21 -12
  346. package/src/internal/devices/manager.test.ts +40 -9
  347. package/src/internal/devices/manager.ts +3 -3
  348. package/src/internal/download/apiService.ts +66 -49
  349. package/src/internal/download/cryptoService.ts +34 -18
  350. package/src/internal/download/fileDownloader.test.ts +25 -9
  351. package/src/internal/download/fileDownloader.ts +36 -18
  352. package/src/internal/download/index.ts +19 -19
  353. package/src/internal/download/interface.ts +19 -20
  354. package/src/internal/download/queue.ts +3 -3
  355. package/src/internal/download/telemetry.test.ts +11 -11
  356. package/src/internal/download/telemetry.ts +24 -14
  357. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  358. package/src/internal/download/thumbnailDownloader.ts +43 -32
  359. package/src/internal/errors.ts +7 -5
  360. package/src/internal/events/apiService.ts +30 -17
  361. package/src/internal/events/coreEventManager.test.ts +18 -18
  362. package/src/internal/events/coreEventManager.ts +9 -6
  363. package/src/internal/events/eventManager.test.ts +51 -46
  364. package/src/internal/events/eventManager.ts +6 -5
  365. package/src/internal/events/index.ts +24 -14
  366. package/src/internal/events/interface.ts +47 -39
  367. package/src/internal/events/volumeEventManager.test.ts +61 -65
  368. package/src/internal/events/volumeEventManager.ts +18 -9
  369. package/src/internal/nodes/apiService.test.ts +197 -147
  370. package/src/internal/nodes/apiService.ts +288 -174
  371. package/src/internal/nodes/cache.test.ts +48 -20
  372. package/src/internal/nodes/cache.ts +60 -44
  373. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  374. package/src/internal/nodes/cryptoCache.ts +10 -5
  375. package/src/internal/nodes/cryptoService.test.ts +492 -351
  376. package/src/internal/nodes/cryptoService.ts +170 -88
  377. package/src/internal/nodes/events.test.ts +38 -28
  378. package/src/internal/nodes/events.ts +7 -5
  379. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  380. package/src/internal/nodes/extendedAttributes.ts +20 -15
  381. package/src/internal/nodes/index.test.ts +133 -0
  382. package/src/internal/nodes/index.ts +27 -15
  383. package/src/internal/nodes/interface.ts +42 -29
  384. package/src/internal/nodes/nodesAccess.test.ts +124 -58
  385. package/src/internal/nodes/nodesAccess.ts +73 -49
  386. package/src/internal/nodes/nodesManagement.test.ts +32 -31
  387. package/src/internal/nodes/nodesManagement.ts +39 -32
  388. package/src/internal/nodes/nodesRevisions.ts +7 -7
  389. package/src/internal/nodes/validations.ts +2 -2
  390. package/src/internal/photos/albums.ts +5 -5
  391. package/src/internal/photos/apiService.ts +4 -7
  392. package/src/internal/photos/cache.ts +1 -1
  393. package/src/internal/photos/index.ts +8 -8
  394. package/src/internal/photos/interface.ts +2 -2
  395. package/src/internal/photos/photosTimeline.ts +4 -5
  396. package/src/internal/sdkEvents.test.ts +10 -10
  397. package/src/internal/sdkEvents.ts +5 -13
  398. package/src/internal/shares/apiService.ts +44 -33
  399. package/src/internal/shares/cache.test.ts +6 -4
  400. package/src/internal/shares/cache.ts +21 -12
  401. package/src/internal/shares/cryptoCache.test.ts +17 -11
  402. package/src/internal/shares/cryptoCache.ts +4 -4
  403. package/src/internal/shares/cryptoService.test.ts +72 -74
  404. package/src/internal/shares/cryptoService.ts +48 -23
  405. package/src/internal/shares/index.ts +23 -11
  406. package/src/internal/shares/interface.ts +8 -8
  407. package/src/internal/shares/manager.test.ts +88 -80
  408. package/src/internal/shares/manager.ts +19 -19
  409. package/src/internal/sharing/apiService.ts +282 -175
  410. package/src/internal/sharing/cache.test.ts +35 -35
  411. package/src/internal/sharing/cache.ts +2 -2
  412. package/src/internal/sharing/cryptoService.test.ts +58 -46
  413. package/src/internal/sharing/cryptoService.ts +121 -84
  414. package/src/internal/sharing/events.test.ts +45 -49
  415. package/src/internal/sharing/events.ts +9 -6
  416. package/src/internal/sharing/index.ts +22 -11
  417. package/src/internal/sharing/interface.ts +40 -40
  418. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  419. package/src/internal/sharing/sharingAccess.ts +39 -21
  420. package/src/internal/sharing/sharingManagement.test.ts +398 -298
  421. package/src/internal/sharing/sharingManagement.ts +138 -65
  422. package/src/internal/uids.ts +1 -1
  423. package/src/internal/upload/apiService.ts +167 -117
  424. package/src/internal/upload/blockVerifier.ts +8 -6
  425. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  426. package/src/internal/upload/cryptoService.ts +42 -36
  427. package/src/internal/upload/digests.ts +2 -2
  428. package/src/internal/upload/fileUploader.test.ts +15 -3
  429. package/src/internal/upload/fileUploader.ts +39 -17
  430. package/src/internal/upload/index.ts +13 -14
  431. package/src/internal/upload/interface.ts +78 -78
  432. package/src/internal/upload/manager.test.ts +170 -153
  433. package/src/internal/upload/manager.ts +59 -35
  434. package/src/internal/upload/queue.ts +3 -3
  435. package/src/internal/upload/streamUploader.test.ts +40 -26
  436. package/src/internal/upload/streamUploader.ts +87 -69
  437. package/src/internal/upload/telemetry.test.ts +11 -11
  438. package/src/internal/upload/telemetry.ts +25 -15
  439. package/src/internal/wait.test.ts +1 -1
  440. package/src/internal/wait.ts +3 -3
  441. package/src/protonDriveClient.ts +121 -39
  442. package/src/protonDrivePhotosClient.ts +16 -10
  443. package/src/telemetry.ts +60 -52
  444. package/src/tests/logger.ts +1 -1
  445. package/src/tests/telemetry.ts +2 -2
  446. package/src/transformers.ts +27 -21
  447. package/src/version.ts +0 -1
@@ -1,7 +1,7 @@
1
- import { NodeType, MemberRole, NonProtonInvitationState, MissingNode, ShareResult, PublicLink } from "../../interface";
2
- import { PrivateKey, SessionKey } from "../../crypto";
3
- import { EncryptedShare } from "../shares";
4
- import { DecryptedNode } from "../nodes";
1
+ import { NodeType, MemberRole, NonProtonInvitationState, MissingNode, ShareResult, PublicLink } from '../../interface';
2
+ import { PrivateKey, SessionKey } from '../../crypto';
3
+ import { EncryptedShare } from '../shares';
4
+ import { DecryptedNode } from '../nodes';
5
5
 
6
6
  export enum SharingType {
7
7
  SharedByMe = 'sharedByMe',
@@ -43,10 +43,11 @@ export interface EncryptedInvitationWithNode extends EncryptedInvitation {
43
43
  creatorEmail: string;
44
44
  };
45
45
  node: {
46
+ uid: string;
46
47
  type: NodeType;
47
48
  mediaType?: string;
48
49
  encryptedName: string;
49
- }
50
+ };
50
51
  }
51
52
 
52
53
  /**
@@ -109,24 +110,24 @@ export interface EncryptedBookmark {
109
110
  }
110
111
 
111
112
  export interface EncryptedPublicLink {
112
- uid: string,
113
- creationTime: Date,
114
- expirationTime?: Date,
115
- role: MemberRole,
116
- flags: number,
117
- creatorEmail: string,
118
- publicUrl: string,
113
+ uid: string;
114
+ creationTime: Date;
115
+ expirationTime?: Date;
116
+ role: MemberRole;
117
+ flags: number;
118
+ creatorEmail: string;
119
+ publicUrl: string;
119
120
  numberOfInitializedDownloads: number;
120
- armoredUrlPassword: string,
121
- urlPasswordSalt: string,
122
- base64SharePassphraseKeyPacket: string,
123
- sharePassphraseSalt: string,
121
+ armoredUrlPassword: string;
122
+ urlPasswordSalt: string;
123
+ base64SharePassphraseKeyPacket: string;
124
+ sharePassphraseSalt: string;
124
125
  }
125
126
 
126
127
  export interface EncryptedPublicLinkCrypto {
127
- base64SharePasswordSalt: string,
128
- base64SharePassphraseKeyPacket: string,
129
- armoredPassword: string,
128
+ base64SharePasswordSalt: string;
129
+ base64SharePassphraseKeyPacket: string;
130
+ armoredPassword: string;
130
131
  }
131
132
 
132
133
  export interface ShareResultWithCreatorEmail extends ShareResult {
@@ -137,22 +138,21 @@ export interface PublicLinkWithCreatorEmail extends PublicLink {
137
138
  creatorEmail: string;
138
139
  }
139
140
 
140
-
141
141
  /**
142
142
  * Interface describing the dependencies to the shares module.
143
143
  */
144
144
  export interface SharesService {
145
- getMyFilesIDs(): Promise<{ volumeId: string }>,
146
- loadEncryptedShare(shareId: string): Promise<EncryptedShare>,
145
+ getMyFilesIDs(): Promise<{ volumeId: string }>;
146
+ loadEncryptedShare(shareId: string): Promise<EncryptedShare>;
147
147
  getMyFilesShareMemberEmailKey(): Promise<{
148
- addressId: string,
149
- addressKey: PrivateKey,
150
- }>,
148
+ addressId: string;
149
+ addressKey: PrivateKey;
150
+ }>;
151
151
  getContextShareMemberEmailKey(shareId: string): Promise<{
152
- email: string,
153
- addressId: string,
154
- addressKey: PrivateKey,
155
- }>,
152
+ email: string;
153
+ addressId: string;
154
+ addressKey: PrivateKey;
155
+ }>;
156
156
  isOwnVolume(volumeId: string): Promise<boolean>;
157
157
  }
158
158
 
@@ -160,18 +160,18 @@ export interface SharesService {
160
160
  * Interface describing the dependencies to the nodes module.
161
161
  */
162
162
  export interface NodesService {
163
- getNode(nodeUid: string): Promise<DecryptedNode>,
164
- getNodeKeys(nodeUid: string): Promise<{ key: PrivateKey }>,
163
+ getNode(nodeUid: string): Promise<DecryptedNode>;
164
+ getNodeKeys(nodeUid: string): Promise<{ key: PrivateKey }>;
165
165
  getNodePrivateAndSessionKeys(nodeUid: string): Promise<{
166
- key: PrivateKey,
167
- passphraseSessionKey: SessionKey,
168
- nameSessionKey: SessionKey,
169
- }>,
166
+ key: PrivateKey;
167
+ passphraseSessionKey: SessionKey;
168
+ nameSessionKey: SessionKey;
169
+ }>;
170
170
  getRootNodeEmailKey(nodeUid: string): Promise<{
171
- email: string,
172
- addressId: string,
173
- addressKey: PrivateKey,
174
- }>,
171
+ email: string;
172
+ addressId: string;
173
+ addressKey: PrivateKey;
174
+ }>;
175
175
  iterateNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<DecryptedNode | MissingNode>;
176
176
  notifyNodeChanged(nodeUid: string): Promise<void>;
177
177
  }
@@ -181,5 +181,5 @@ export interface NodesService {
181
181
  * Interface describing the dependencies to the nodes module.
182
182
  */
183
183
  export interface NodesEvents {
184
- nodeUpdated(partialNode: { uid: string, shareId: string | undefined, isShared: boolean }): Promise<void>,
184
+ nodeUpdated(partialNode: { uid: string; shareId: string | undefined; isShared: boolean }): Promise<void>;
185
185
  }
@@ -1,11 +1,11 @@
1
- import { NodeType, resultError, resultOk } from "../../interface";
2
- import { SharingAPIService } from "./apiService";
3
- import { SharingCache } from "./cache";
4
- import { SharingCryptoService } from "./cryptoService";
5
- import { SharesService, NodesService } from "./interface";
6
- import { SharingAccess } from "./sharingAccess";
7
-
8
- describe("SharingAccess", () => {
1
+ import { NodeType, resultError, resultOk } from '../../interface';
2
+ import { SharingAPIService } from './apiService';
3
+ import { SharingCache } from './cache';
4
+ import { SharingCryptoService } from './cryptoService';
5
+ import { SharesService, NodesService } from './interface';
6
+ import { SharingAccess } from './sharingAccess';
7
+
8
+ describe('SharingAccess', () => {
9
9
  let apiService: SharingAPIService;
10
10
  let cache: SharingCache;
11
11
  let cryptoService: SharingCryptoService;
@@ -20,7 +20,7 @@ describe("SharingAccess", () => {
20
20
  for (const nodeUid of nodeUids) {
21
21
  yield nodeUid;
22
22
  }
23
- }
23
+ };
24
24
 
25
25
  beforeEach(() => {
26
26
  // @ts-expect-error No need to implement all methods for mocking
@@ -29,29 +29,29 @@ describe("SharingAccess", () => {
29
29
  iterateSharedWithMeNodeUids: jest.fn().mockImplementation(() => nodeUidsIterator()),
30
30
  iterateBookmarks: jest.fn().mockImplementation(async function* () {
31
31
  yield {
32
- tokenId: "tokenId",
32
+ tokenId: 'tokenId',
33
33
  creationTime: new Date('2025-01-01'),
34
34
  node: {
35
35
  type: NodeType.File,
36
- mediaType: "mediaType",
36
+ mediaType: 'mediaType',
37
37
  },
38
- }
38
+ };
39
39
  }),
40
- }
40
+ };
41
41
  // @ts-expect-error No need to implement all methods for mocking
42
42
  cache = {
43
43
  setSharedByMeNodeUids: jest.fn(),
44
44
  setSharedWithMeNodeUids: jest.fn(),
45
- }
45
+ };
46
46
  // @ts-expect-error No need to implement all methods for mocking
47
47
  cryptoService = {
48
48
  decryptInvitation: jest.fn(),
49
49
  decryptBookmark: jest.fn(),
50
- }
50
+ };
51
51
  // @ts-expect-error No need to implement all methods for mocking
52
52
  sharesService = {
53
- getMyFilesIDs: jest.fn().mockResolvedValue({ volumeId: "volumeId" }),
54
- }
53
+ getMyFilesIDs: jest.fn().mockResolvedValue({ volumeId: 'volumeId' }),
54
+ };
55
55
  // @ts-expect-error No need to implement all methods for mocking
56
56
  nodesService = {
57
57
  iterateNodes: jest.fn().mockImplementation(async function* (nodeUids) {
@@ -61,13 +61,13 @@ describe("SharingAccess", () => {
61
61
  }
62
62
  }
63
63
  }),
64
- }
64
+ };
65
65
 
66
66
  sharingAccess = new SharingAccess(apiService, cache, cryptoService, sharesService, nodesService);
67
67
  });
68
68
 
69
- describe("iterateSharedNodes", () => {
70
- it("should iterate from cache", async () => {
69
+ describe('iterateSharedNodes', () => {
70
+ it('should iterate from cache', async () => {
71
71
  cache.getSharedByMeNodeUids = jest.fn().mockResolvedValue(nodeUids);
72
72
 
73
73
  const result = await Array.fromAsync(sharingAccess.iterateSharedNodes());
@@ -77,20 +77,20 @@ describe("SharingAccess", () => {
77
77
  expect(cache.setSharedByMeNodeUids).not.toHaveBeenCalled();
78
78
  });
79
79
 
80
- it("should iterate from API", async () => {
80
+ it('should iterate from API', async () => {
81
81
  cache.getSharedByMeNodeUids = jest.fn().mockRejectedValue(new Error('Not cached'));
82
82
 
83
83
  const result = await Array.fromAsync(sharingAccess.iterateSharedNodes());
84
84
 
85
85
  expect(result).toEqual(nodes);
86
- expect(apiService.iterateSharedNodeUids).toHaveBeenCalledWith("volumeId", undefined);
86
+ expect(apiService.iterateSharedNodeUids).toHaveBeenCalledWith('volumeId', undefined);
87
87
  expect(nodesService.iterateNodes).toHaveBeenCalledTimes(2); // 15 / 10 per batch
88
88
  expect(cache.setSharedByMeNodeUids).toHaveBeenCalledWith(nodeUids);
89
89
  });
90
90
  });
91
91
 
92
- describe("iterateSharedNodesWithMe", () => {
93
- it("should iterate from cache", async () => {
92
+ describe('iterateSharedNodesWithMe', () => {
93
+ it('should iterate from cache', async () => {
94
94
  cache.getSharedWithMeNodeUids = jest.fn().mockResolvedValue(nodeUids);
95
95
 
96
96
  const result = await Array.fromAsync(sharingAccess.iterateSharedNodesWithMe());
@@ -100,7 +100,7 @@ describe("SharingAccess", () => {
100
100
  expect(cache.setSharedWithMeNodeUids).not.toHaveBeenCalled();
101
101
  });
102
102
 
103
- it("should iterate from API", async () => {
103
+ it('should iterate from API', async () => {
104
104
  cache.getSharedWithMeNodeUids = jest.fn().mockRejectedValue(new Error('Not cached'));
105
105
 
106
106
  const result = await Array.fromAsync(sharingAccess.iterateSharedNodesWithMe());
@@ -112,65 +112,71 @@ describe("SharingAccess", () => {
112
112
  });
113
113
  });
114
114
 
115
- describe("iterateBookmarks", () => {
116
- it("should return decrypted bookmark", async () => {
115
+ describe('iterateBookmarks', () => {
116
+ it('should return decrypted bookmark', async () => {
117
117
  cryptoService.decryptBookmark = jest.fn().mockResolvedValue({
118
- url: resultOk("url"),
119
- nodeName: resultOk("nodeName"),
118
+ url: resultOk('url'),
119
+ nodeName: resultOk('nodeName'),
120
120
  });
121
121
 
122
122
  const result = await Array.fromAsync(sharingAccess.iterateBookmarks());
123
123
 
124
- expect(result).toEqual([resultOk({
125
- uid: "tokenId",
126
- creationTime: new Date('2025-01-01'),
127
- url: "url",
128
- node: {
129
- name: "nodeName",
130
- type: NodeType.File,
131
- mediaType: "mediaType",
132
- },
133
- })]);
124
+ expect(result).toEqual([
125
+ resultOk({
126
+ uid: 'tokenId',
127
+ creationTime: new Date('2025-01-01'),
128
+ url: 'url',
129
+ node: {
130
+ name: 'nodeName',
131
+ type: NodeType.File,
132
+ mediaType: 'mediaType',
133
+ },
134
+ }),
135
+ ]);
134
136
  });
135
137
 
136
- it("should return degraded bookmark if URL password cannot be decrypted", async () => {
138
+ it('should return degraded bookmark if URL password cannot be decrypted', async () => {
137
139
  cryptoService.decryptBookmark = jest.fn().mockResolvedValue({
138
- url: resultError("url cannot be decrypted"),
139
- nodeName: resultError("url cannot be decrypted"),
140
+ url: resultError('url cannot be decrypted'),
141
+ nodeName: resultError('url cannot be decrypted'),
140
142
  });
141
143
 
142
144
  const result = await Array.fromAsync(sharingAccess.iterateBookmarks());
143
145
 
144
- expect(result).toEqual([resultError({
145
- uid: "tokenId",
146
- creationTime: new Date('2025-01-01'),
147
- url: resultError("url cannot be decrypted"),
148
- node: {
149
- name: resultError("url cannot be decrypted"),
150
- type: NodeType.File,
151
- mediaType: "mediaType",
152
- },
153
- })]);
146
+ expect(result).toEqual([
147
+ resultError({
148
+ uid: 'tokenId',
149
+ creationTime: new Date('2025-01-01'),
150
+ url: resultError('url cannot be decrypted'),
151
+ node: {
152
+ name: resultError('url cannot be decrypted'),
153
+ type: NodeType.File,
154
+ mediaType: 'mediaType',
155
+ },
156
+ }),
157
+ ]);
154
158
  });
155
159
 
156
- it("should return degraded bookmark if node name cannot be decrypted", async () => {
160
+ it('should return degraded bookmark if node name cannot be decrypted', async () => {
157
161
  cryptoService.decryptBookmark = jest.fn().mockResolvedValue({
158
- url: resultOk("url"),
159
- nodeName: resultError("node name cannot be decrypted"),
162
+ url: resultOk('url'),
163
+ nodeName: resultError('node name cannot be decrypted'),
160
164
  });
161
165
 
162
166
  const result = await Array.fromAsync(sharingAccess.iterateBookmarks());
163
167
 
164
- expect(result).toEqual([resultError({
165
- uid: "tokenId",
166
- creationTime: new Date('2025-01-01'),
167
- url: resultOk("url"),
168
- node: {
169
- name: resultError("node name cannot be decrypted"),
170
- type: NodeType.File,
171
- mediaType: "mediaType",
172
- },
173
- })]);
168
+ expect(result).toEqual([
169
+ resultError({
170
+ uid: 'tokenId',
171
+ creationTime: new Date('2025-01-01'),
172
+ url: resultOk('url'),
173
+ node: {
174
+ name: resultError('node name cannot be decrypted'),
175
+ type: NodeType.File,
176
+ mediaType: 'mediaType',
177
+ },
178
+ }),
179
+ ]);
174
180
  });
175
181
  });
176
182
  });
@@ -1,13 +1,13 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { MaybeBookmark, ProtonInvitationWithNode, resultError, resultOk } from "../../interface";
4
- import { ValidationError } from "../../errors";
5
- import { DecryptedNode } from "../nodes";
6
- import { BatchLoading } from "../batchLoading";
7
- import { SharingAPIService } from "./apiService";
8
- import { SharingCache } from "./cache";
9
- import { SharingCryptoService } from "./cryptoService";
10
- import { SharesService, NodesService } from "./interface";
3
+ import { MaybeBookmark, ProtonInvitationWithNode, resultError, resultOk } from '../../interface';
4
+ import { ValidationError } from '../../errors';
5
+ import { DecryptedNode } from '../nodes';
6
+ import { BatchLoading } from '../batchLoading';
7
+ import { SharingAPIService } from './apiService';
8
+ import { SharingCache } from './cache';
9
+ import { SharingCryptoService } from './cryptoService';
10
+ import { SharesService, NodesService } from './interface';
11
11
 
12
12
  /**
13
13
  * Provides high-level actions for access shared nodes.
@@ -31,42 +31,57 @@ export class SharingAccess {
31
31
  this.nodesService = nodesService;
32
32
  }
33
33
 
34
- async* iterateSharedNodes(signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
34
+ async *iterateSharedNodes(signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
35
35
  try {
36
36
  const nodeUids = await this.cache.getSharedByMeNodeUids();
37
37
  yield* this.iterateSharedNodesFromCache(nodeUids, signal);
38
38
  } catch {
39
39
  const { volumeId } = await this.sharesService.getMyFilesIDs();
40
40
  const nodeUidsIterator = this.apiService.iterateSharedNodeUids(volumeId, signal);
41
- yield* this.iterateSharedNodesFromAPI(nodeUidsIterator, (nodeUids) => this.cache.setSharedByMeNodeUids(nodeUids), signal);
41
+ yield* this.iterateSharedNodesFromAPI(
42
+ nodeUidsIterator,
43
+ (nodeUids) => this.cache.setSharedByMeNodeUids(nodeUids),
44
+ signal,
45
+ );
42
46
  }
43
47
  }
44
48
 
45
- async* iterateSharedNodesWithMe(signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
49
+ async *iterateSharedNodesWithMe(signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
46
50
  try {
47
51
  const nodeUids = await this.cache.getSharedWithMeNodeUids();
48
52
  yield* this.iterateSharedNodesFromCache(nodeUids, signal);
49
53
  } catch {
50
54
  const nodeUidsIterator = this.apiService.iterateSharedWithMeNodeUids(signal);
51
- yield* this.iterateSharedNodesFromAPI(nodeUidsIterator, (nodeUids) => this.cache.setSharedWithMeNodeUids(nodeUids), signal);
55
+ yield* this.iterateSharedNodesFromAPI(
56
+ nodeUidsIterator,
57
+ (nodeUids) => this.cache.setSharedWithMeNodeUids(nodeUids),
58
+ signal,
59
+ );
52
60
  }
53
61
  }
54
62
 
55
- private async* iterateSharedNodesFromCache(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
56
- const batchLoading = new BatchLoading<string, DecryptedNode>({ iterateItems: (nodeUids) => this.iterateNodesAndIgnoreMissingOnes(nodeUids, signal) });
63
+ private async *iterateSharedNodesFromCache(
64
+ nodeUids: string[],
65
+ signal?: AbortSignal,
66
+ ): AsyncGenerator<DecryptedNode> {
67
+ const batchLoading = new BatchLoading<string, DecryptedNode>({
68
+ iterateItems: (nodeUids) => this.iterateNodesAndIgnoreMissingOnes(nodeUids, signal),
69
+ });
57
70
  for (const nodeUid of nodeUids) {
58
71
  yield* batchLoading.load(nodeUid);
59
72
  }
60
73
  yield* batchLoading.loadRest();
61
74
  }
62
75
 
63
- private async* iterateSharedNodesFromAPI(
76
+ private async *iterateSharedNodesFromAPI(
64
77
  nodeUidsIterator: AsyncGenerator<string>,
65
78
  setCache: (nodeUids: string[]) => Promise<void>,
66
79
  signal?: AbortSignal,
67
80
  ): AsyncGenerator<DecryptedNode> {
68
81
  const loadedNodeUids = [];
69
- const batchLoading = new BatchLoading<string, DecryptedNode>({ iterateItems: (nodeUids) => this.iterateNodesAndIgnoreMissingOnes(nodeUids, signal) });
82
+ const batchLoading = new BatchLoading<string, DecryptedNode>({
83
+ iterateItems: (nodeUids) => this.iterateNodesAndIgnoreMissingOnes(nodeUids, signal),
84
+ });
70
85
  for await (const nodeUid of nodeUidsIterator) {
71
86
  loadedNodeUids.push(nodeUid);
72
87
  yield* batchLoading.load(nodeUid);
@@ -77,7 +92,10 @@ export class SharingAccess {
77
92
  await setCache(loadedNodeUids);
78
93
  }
79
94
 
80
- private async* iterateNodesAndIgnoreMissingOnes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<DecryptedNode> {
95
+ private async *iterateNodesAndIgnoreMissingOnes(
96
+ nodeUids: string[],
97
+ signal?: AbortSignal,
98
+ ): AsyncGenerator<DecryptedNode> {
81
99
  const nodeGenerator = this.nodesService.iterateNodes(nodeUids, signal);
82
100
  for await (const node of nodeGenerator) {
83
101
  if ('missingUid' in node) {
@@ -102,7 +120,7 @@ export class SharingAccess {
102
120
  await this.apiService.removeMember(memberUid);
103
121
  }
104
122
 
105
- async* iterateInvitations(signal?: AbortSignal): AsyncGenerator<ProtonInvitationWithNode> {
123
+ async *iterateInvitations(signal?: AbortSignal): AsyncGenerator<ProtonInvitationWithNode> {
106
124
  for await (const invitationUid of this.apiService.iterateInvitationUids(signal)) {
107
125
  const encryptedInvitation = await this.apiService.getInvitation(invitationUid);
108
126
  const invitation = await this.cryptoService.decryptInvitationWithNode(encryptedInvitation);
@@ -120,7 +138,7 @@ export class SharingAccess {
120
138
  await this.apiService.rejectInvitation(invitationUid);
121
139
  }
122
140
 
123
- async* iterateBookmarks(signal?: AbortSignal): AsyncGenerator<MaybeBookmark> {
141
+ async *iterateBookmarks(signal?: AbortSignal): AsyncGenerator<MaybeBookmark> {
124
142
  for await (const bookmark of this.apiService.iterateBookmarks(signal)) {
125
143
  const { url, nodeName } = await this.cryptoService.decryptBookmark(bookmark);
126
144
 
@@ -133,7 +151,7 @@ export class SharingAccess {
133
151
  name: nodeName,
134
152
  type: bookmark.node.type,
135
153
  mediaType: bookmark.node.mediaType,
136
- }
154
+ },
137
155
  });
138
156
  } else {
139
157
  yield resultOk({
@@ -144,7 +162,7 @@ export class SharingAccess {
144
162
  name: nodeName.value,
145
163
  type: bookmark.node.type,
146
164
  mediaType: bookmark.node.mediaType,
147
- }
165
+ },
148
166
  });
149
167
  }
150
168
  }