@protontech/drive-sdk 0.0.13 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/memoryCache.js +0 -1
  6. package/dist/cache/memoryCache.js.map +1 -1
  7. package/dist/cache/memoryCache.test.js +2 -4
  8. package/dist/cache/memoryCache.test.js.map +1 -1
  9. package/dist/cache/nullCache.d.ts +14 -0
  10. package/dist/cache/nullCache.js +36 -0
  11. package/dist/cache/nullCache.js.map +1 -0
  12. package/dist/config.d.ts +16 -1
  13. package/dist/config.js +1 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/crypto/driveCrypto.d.ts +2 -5
  16. package/dist/crypto/driveCrypto.js +7 -12
  17. package/dist/crypto/driveCrypto.js.map +1 -1
  18. package/dist/crypto/driveCrypto.test.js +14 -14
  19. package/dist/crypto/openPGPCrypto.js +5 -3
  20. package/dist/crypto/openPGPCrypto.js.map +1 -1
  21. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  22. package/dist/diagnostic/eventsGenerator.js +49 -0
  23. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  24. package/dist/diagnostic/httpClient.d.ts +16 -0
  25. package/dist/diagnostic/httpClient.js +81 -0
  26. package/dist/diagnostic/httpClient.js.map +1 -0
  27. package/dist/diagnostic/index.d.ts +10 -0
  28. package/dist/diagnostic/index.js +35 -0
  29. package/dist/diagnostic/index.js.map +1 -0
  30. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  31. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  32. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  33. package/dist/diagnostic/interface.d.ts +102 -0
  34. package/dist/diagnostic/interface.js +3 -0
  35. package/dist/diagnostic/interface.js.map +1 -0
  36. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  37. package/dist/diagnostic/sdkDiagnostic.js +222 -0
  38. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  39. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  40. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  41. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  42. package/dist/diagnostic/telemetry.d.ts +25 -0
  43. package/dist/diagnostic/telemetry.js +70 -0
  44. package/dist/diagnostic/telemetry.js.map +1 -0
  45. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  46. package/dist/diagnostic/zipGenerators.js +64 -0
  47. package/dist/diagnostic/zipGenerators.js.map +1 -0
  48. package/dist/diagnostic/zipGenerators.test.js +144 -0
  49. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  50. package/dist/errors.d.ts +2 -1
  51. package/dist/errors.js +3 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/interface/config.d.ts +26 -0
  54. package/dist/interface/config.js +3 -0
  55. package/dist/interface/config.js.map +1 -0
  56. package/dist/interface/download.d.ts +2 -2
  57. package/dist/interface/events.d.ts +58 -20
  58. package/dist/interface/events.js +11 -1
  59. package/dist/interface/events.js.map +1 -1
  60. package/dist/interface/httpClient.d.ts +0 -14
  61. package/dist/interface/index.d.ts +11 -7
  62. package/dist/interface/index.js +2 -2
  63. package/dist/interface/index.js.map +1 -1
  64. package/dist/interface/nodes.d.ts +9 -0
  65. package/dist/interface/nodes.js.map +1 -1
  66. package/dist/interface/result.js.map +1 -1
  67. package/dist/interface/sharing.d.ts +2 -0
  68. package/dist/interface/sharing.js.map +1 -1
  69. package/dist/interface/telemetry.js +0 -8
  70. package/dist/interface/telemetry.js.map +1 -1
  71. package/dist/interface/thumbnail.js.map +1 -1
  72. package/dist/interface/upload.d.ts +7 -1
  73. package/dist/internal/apiService/apiService.d.ts +1 -1
  74. package/dist/internal/apiService/apiService.js +7 -11
  75. package/dist/internal/apiService/apiService.js.map +1 -1
  76. package/dist/internal/apiService/apiService.test.js +55 -48
  77. package/dist/internal/apiService/apiService.test.js.map +1 -1
  78. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  79. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  80. package/dist/internal/apiService/errors.js +14 -8
  81. package/dist/internal/apiService/errors.js.map +1 -1
  82. package/dist/internal/apiService/errors.test.js +17 -12
  83. package/dist/internal/apiService/errors.test.js.map +1 -1
  84. package/dist/internal/apiService/transformers.d.ts +1 -1
  85. package/dist/internal/apiService/transformers.js +1 -1
  86. package/dist/internal/asyncIteratorMap.test.js +2 -2
  87. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  88. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  89. package/dist/internal/asyncIteratorRace.js +59 -0
  90. package/dist/internal/asyncIteratorRace.js.map +1 -0
  91. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  92. package/dist/internal/asyncIteratorRace.test.js +119 -0
  93. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  94. package/dist/internal/batch.d.ts +1 -0
  95. package/dist/internal/batch.js +12 -0
  96. package/dist/internal/batch.js.map +1 -0
  97. package/dist/internal/batch.test.d.ts +1 -0
  98. package/dist/internal/batch.test.js +41 -0
  99. package/dist/internal/batch.test.js.map +1 -0
  100. package/dist/internal/batchLoading.js.map +1 -1
  101. package/dist/internal/batchLoading.test.js +13 -13
  102. package/dist/internal/batchLoading.test.js.map +1 -1
  103. package/dist/internal/devices/apiService.d.ts +3 -3
  104. package/dist/internal/devices/apiService.js +2 -2
  105. package/dist/internal/devices/apiService.js.map +1 -1
  106. package/dist/internal/devices/cryptoService.js +1 -2
  107. package/dist/internal/devices/cryptoService.js.map +1 -1
  108. package/dist/internal/devices/index.d.ts +5 -5
  109. package/dist/internal/devices/index.js.map +1 -1
  110. package/dist/internal/devices/interface.d.ts +3 -3
  111. package/dist/internal/devices/manager.js +2 -2
  112. package/dist/internal/devices/manager.js.map +1 -1
  113. package/dist/internal/devices/manager.test.js +38 -7
  114. package/dist/internal/devices/manager.test.js.map +1 -1
  115. package/dist/internal/download/apiService.d.ts +4 -4
  116. package/dist/internal/download/apiService.js +32 -32
  117. package/dist/internal/download/apiService.js.map +1 -1
  118. package/dist/internal/download/cryptoService.d.ts +4 -4
  119. package/dist/internal/download/cryptoService.js +6 -5
  120. package/dist/internal/download/cryptoService.js.map +1 -1
  121. package/dist/internal/download/fileDownloader.d.ts +6 -6
  122. package/dist/internal/download/fileDownloader.js +3 -2
  123. package/dist/internal/download/fileDownloader.js.map +1 -1
  124. package/dist/internal/download/fileDownloader.test.js +1 -1
  125. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  126. package/dist/internal/download/index.d.ts +5 -5
  127. package/dist/internal/download/index.js +5 -5
  128. package/dist/internal/download/index.js.map +1 -1
  129. package/dist/internal/download/interface.d.ts +3 -4
  130. package/dist/internal/download/telemetry.d.ts +3 -3
  131. package/dist/internal/download/telemetry.js +4 -2
  132. package/dist/internal/download/telemetry.js.map +1 -1
  133. package/dist/internal/download/telemetry.test.js +8 -8
  134. package/dist/internal/download/telemetry.test.js.map +1 -1
  135. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  136. package/dist/internal/download/thumbnailDownloader.js +6 -6
  137. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  138. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  139. package/dist/internal/errors.d.ts +1 -1
  140. package/dist/internal/errors.js +1 -3
  141. package/dist/internal/errors.js.map +1 -1
  142. package/dist/internal/events/apiService.d.ts +5 -7
  143. package/dist/internal/events/apiService.js +19 -22
  144. package/dist/internal/events/apiService.js.map +1 -1
  145. package/dist/internal/events/coreEventManager.d.ts +9 -12
  146. package/dist/internal/events/coreEventManager.js +19 -36
  147. package/dist/internal/events/coreEventManager.js.map +1 -1
  148. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  149. package/dist/internal/events/coreEventManager.test.js +87 -0
  150. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  151. package/dist/internal/events/eventManager.d.ts +11 -36
  152. package/dist/internal/events/eventManager.js +59 -106
  153. package/dist/internal/events/eventManager.js.map +1 -1
  154. package/dist/internal/events/eventManager.test.js +177 -83
  155. package/dist/internal/events/eventManager.test.js.map +1 -1
  156. package/dist/internal/events/index.d.ts +16 -36
  157. package/dist/internal/events/index.js +56 -72
  158. package/dist/internal/events/index.js.map +1 -1
  159. package/dist/internal/events/interface.d.ts +59 -14
  160. package/dist/internal/events/interface.js +12 -3
  161. package/dist/internal/events/interface.js.map +1 -1
  162. package/dist/internal/events/volumeEventManager.d.ts +9 -19
  163. package/dist/internal/events/volumeEventManager.js +58 -45
  164. package/dist/internal/events/volumeEventManager.js.map +1 -1
  165. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  166. package/dist/internal/events/volumeEventManager.test.js +203 -0
  167. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  168. package/dist/internal/nodes/apiService.d.ts +4 -3
  169. package/dist/internal/nodes/apiService.js +36 -15
  170. package/dist/internal/nodes/apiService.js.map +1 -1
  171. package/dist/internal/nodes/apiService.test.js +60 -41
  172. package/dist/internal/nodes/apiService.test.js.map +1 -1
  173. package/dist/internal/nodes/cache.d.ts +14 -5
  174. package/dist/internal/nodes/cache.js +31 -7
  175. package/dist/internal/nodes/cache.js.map +1 -1
  176. package/dist/internal/nodes/cache.test.js +31 -9
  177. package/dist/internal/nodes/cache.test.js.map +1 -1
  178. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  179. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  180. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  181. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  182. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  183. package/dist/internal/nodes/cryptoService.js +11 -17
  184. package/dist/internal/nodes/cryptoService.js.map +1 -1
  185. package/dist/internal/nodes/cryptoService.test.js +320 -241
  186. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  187. package/dist/internal/nodes/events.d.ts +8 -84
  188. package/dist/internal/nodes/events.js +43 -217
  189. package/dist/internal/nodes/events.js.map +1 -1
  190. package/dist/internal/nodes/events.test.js +35 -279
  191. package/dist/internal/nodes/events.test.js.map +1 -1
  192. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  193. package/dist/internal/nodes/extendedAttributes.js +3 -1
  194. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  195. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  196. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  197. package/dist/internal/nodes/index.d.ts +12 -13
  198. package/dist/internal/nodes/index.js +5 -5
  199. package/dist/internal/nodes/index.js.map +1 -1
  200. package/dist/internal/nodes/index.test.js +24 -32
  201. package/dist/internal/nodes/index.test.js.map +1 -1
  202. package/dist/internal/nodes/interface.d.ts +2 -2
  203. package/dist/internal/nodes/nodesAccess.d.ts +22 -7
  204. package/dist/internal/nodes/nodesAccess.js +65 -16
  205. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  206. package/dist/internal/nodes/nodesAccess.test.js +165 -101
  207. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  208. package/dist/internal/nodes/nodesManagement.d.ts +7 -9
  209. package/dist/internal/nodes/nodesManagement.js +21 -33
  210. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  211. package/dist/internal/nodes/nodesManagement.test.js +42 -21
  212. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  213. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  214. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  215. package/dist/internal/photos/albums.d.ts +3 -3
  216. package/dist/internal/photos/albums.js.map +1 -1
  217. package/dist/internal/photos/apiService.d.ts +1 -1
  218. package/dist/internal/photos/apiService.js +3 -6
  219. package/dist/internal/photos/apiService.js.map +1 -1
  220. package/dist/internal/photos/cache.d.ts +1 -1
  221. package/dist/internal/photos/index.d.ts +5 -5
  222. package/dist/internal/photos/index.js.map +1 -1
  223. package/dist/internal/photos/interface.d.ts +2 -2
  224. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  225. package/dist/internal/photos/photosTimeline.js +1 -2
  226. package/dist/internal/photos/photosTimeline.js.map +1 -1
  227. package/dist/internal/sdkEvents.d.ts +1 -1
  228. package/dist/internal/sdkEvents.js +2 -7
  229. package/dist/internal/sdkEvents.js.map +1 -1
  230. package/dist/internal/sdkEvents.test.js +8 -8
  231. package/dist/internal/shares/apiService.d.ts +2 -2
  232. package/dist/internal/shares/apiService.js +5 -3
  233. package/dist/internal/shares/apiService.js.map +1 -1
  234. package/dist/internal/shares/cache.d.ts +4 -2
  235. package/dist/internal/shares/cache.js +14 -6
  236. package/dist/internal/shares/cache.js.map +1 -1
  237. package/dist/internal/shares/cache.test.js.map +1 -1
  238. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  239. package/dist/internal/shares/cryptoCache.test.js +8 -2
  240. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  241. package/dist/internal/shares/cryptoService.d.ts +3 -3
  242. package/dist/internal/shares/cryptoService.js.map +1 -1
  243. package/dist/internal/shares/cryptoService.test.js +42 -42
  244. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  245. package/dist/internal/shares/index.d.ts +4 -4
  246. package/dist/internal/shares/index.js.map +1 -1
  247. package/dist/internal/shares/interface.d.ts +2 -2
  248. package/dist/internal/shares/manager.d.ts +8 -7
  249. package/dist/internal/shares/manager.js +3 -0
  250. package/dist/internal/shares/manager.js.map +1 -1
  251. package/dist/internal/shares/manager.test.js +71 -63
  252. package/dist/internal/shares/manager.test.js.map +1 -1
  253. package/dist/internal/sharing/apiService.d.ts +4 -4
  254. package/dist/internal/sharing/apiService.js +5 -3
  255. package/dist/internal/sharing/apiService.js.map +1 -1
  256. package/dist/internal/sharing/cache.d.ts +1 -1
  257. package/dist/internal/sharing/cache.test.js +33 -33
  258. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  259. package/dist/internal/sharing/cryptoService.js +3 -4
  260. package/dist/internal/sharing/cryptoService.js.map +1 -1
  261. package/dist/internal/sharing/cryptoService.test.js +39 -39
  262. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  263. package/dist/internal/sharing/events.d.ts +24 -56
  264. package/dist/internal/sharing/events.js +45 -138
  265. package/dist/internal/sharing/events.js.map +1 -1
  266. package/dist/internal/sharing/events.test.js +85 -189
  267. package/dist/internal/sharing/events.test.js.map +1 -1
  268. package/dist/internal/sharing/index.d.ts +8 -9
  269. package/dist/internal/sharing/index.js +5 -5
  270. package/dist/internal/sharing/index.js.map +1 -1
  271. package/dist/internal/sharing/interface.d.ts +8 -4
  272. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  273. package/dist/internal/sharing/sharingAccess.js +8 -4
  274. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  275. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  276. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  277. package/dist/internal/sharing/sharingManagement.d.ts +5 -6
  278. package/dist/internal/sharing/sharingManagement.js +12 -16
  279. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  280. package/dist/internal/sharing/sharingManagement.test.js +305 -286
  281. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  282. package/dist/internal/uids.js.map +1 -1
  283. package/dist/internal/upload/apiService.d.ts +5 -6
  284. package/dist/internal/upload/apiService.js +8 -5
  285. package/dist/internal/upload/apiService.js.map +1 -1
  286. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  287. package/dist/internal/upload/blockVerifier.js +1 -1
  288. package/dist/internal/upload/blockVerifier.js.map +1 -1
  289. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  290. package/dist/internal/upload/cryptoService.d.ts +4 -4
  291. package/dist/internal/upload/cryptoService.js +4 -4
  292. package/dist/internal/upload/cryptoService.js.map +1 -1
  293. package/dist/internal/upload/digests.js.map +1 -1
  294. package/dist/internal/upload/fileUploader.d.ts +6 -6
  295. package/dist/internal/upload/fileUploader.js.map +1 -1
  296. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  297. package/dist/internal/upload/index.d.ts +6 -6
  298. package/dist/internal/upload/index.js +3 -3
  299. package/dist/internal/upload/index.js.map +1 -1
  300. package/dist/internal/upload/interface.d.ts +5 -3
  301. package/dist/internal/upload/manager.d.ts +8 -8
  302. package/dist/internal/upload/manager.js +23 -52
  303. package/dist/internal/upload/manager.js.map +1 -1
  304. package/dist/internal/upload/manager.test.js +185 -147
  305. package/dist/internal/upload/manager.test.js.map +1 -1
  306. package/dist/internal/upload/streamUploader.d.ts +6 -6
  307. package/dist/internal/upload/streamUploader.js +9 -8
  308. package/dist/internal/upload/streamUploader.js.map +1 -1
  309. package/dist/internal/upload/streamUploader.test.js +17 -12
  310. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  311. package/dist/internal/upload/telemetry.d.ts +3 -3
  312. package/dist/internal/upload/telemetry.js +5 -3
  313. package/dist/internal/upload/telemetry.js.map +1 -1
  314. package/dist/internal/upload/telemetry.test.js +8 -8
  315. package/dist/internal/upload/telemetry.test.js.map +1 -1
  316. package/dist/protonDriveClient.d.ts +27 -170
  317. package/dist/protonDriveClient.js +37 -198
  318. package/dist/protonDriveClient.js.map +1 -1
  319. package/dist/protonDrivePhotosClient.js +3 -2
  320. package/dist/protonDrivePhotosClient.js.map +1 -1
  321. package/dist/telemetry.js +18 -15
  322. package/dist/telemetry.js.map +1 -1
  323. package/dist/tests/logger.js.map +1 -1
  324. package/dist/tests/telemetry.d.ts +1 -1
  325. package/dist/transformers.js +4 -2
  326. package/dist/transformers.js.map +1 -1
  327. package/package.json +3 -3
  328. package/src/cache/index.ts +1 -0
  329. package/src/cache/interface.ts +22 -22
  330. package/src/cache/memoryCache.test.ts +7 -7
  331. package/src/cache/memoryCache.ts +5 -5
  332. package/src/cache/nullCache.ts +38 -0
  333. package/src/config.ts +17 -2
  334. package/src/crypto/driveCrypto.test.ts +15 -15
  335. package/src/crypto/driveCrypto.ts +120 -156
  336. package/src/crypto/hmac.ts +1 -1
  337. package/src/crypto/interface.ts +63 -72
  338. package/src/crypto/openPGPCrypto.ts +76 -94
  339. package/src/crypto/utils.ts +1 -1
  340. package/src/diagnostic/eventsGenerator.ts +48 -0
  341. package/src/diagnostic/httpClient.ts +84 -0
  342. package/src/diagnostic/index.ts +40 -0
  343. package/src/diagnostic/integrityVerificationStream.ts +55 -0
  344. package/src/diagnostic/interface.ts +158 -0
  345. package/src/diagnostic/sdkDiagnostic.ts +249 -0
  346. package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
  347. package/src/diagnostic/telemetry.ts +74 -0
  348. package/src/diagnostic/zipGenerators.test.ts +177 -0
  349. package/src/diagnostic/zipGenerators.ts +70 -0
  350. package/src/errors.ts +25 -22
  351. package/src/index.ts +3 -3
  352. package/src/interface/account.ts +10 -10
  353. package/src/interface/author.ts +6 -6
  354. package/src/interface/config.ts +28 -0
  355. package/src/interface/devices.ts +6 -6
  356. package/src/interface/download.ts +12 -9
  357. package/src/interface/events.ts +76 -25
  358. package/src/interface/httpClient.ts +11 -27
  359. package/src/interface/index.ts +81 -20
  360. package/src/interface/nodes.ts +67 -60
  361. package/src/interface/result.ts +1 -3
  362. package/src/interface/sharing.ts +60 -56
  363. package/src/interface/telemetry.ts +74 -74
  364. package/src/interface/thumbnail.ts +5 -6
  365. package/src/interface/upload.ts +25 -11
  366. package/src/internal/apiService/apiService.test.ts +109 -76
  367. package/src/internal/apiService/apiService.ts +40 -26
  368. package/src/internal/apiService/coreTypes.ts +2474 -2463
  369. package/src/internal/apiService/driveTypes.ts +1868 -1822
  370. package/src/internal/apiService/errorCodes.ts +4 -4
  371. package/src/internal/apiService/errors.test.ts +25 -23
  372. package/src/internal/apiService/errors.ts +15 -9
  373. package/src/internal/apiService/index.ts +1 -1
  374. package/src/internal/apiService/transformers.ts +2 -2
  375. package/src/internal/asyncIteratorMap.test.ts +4 -4
  376. package/src/internal/asyncIteratorMap.ts +1 -1
  377. package/src/internal/asyncIteratorRace.test.ts +149 -0
  378. package/src/internal/asyncIteratorRace.ts +79 -0
  379. package/src/internal/batch.test.ts +50 -0
  380. package/src/internal/batch.ts +9 -0
  381. package/src/internal/batchLoading.test.ts +13 -14
  382. package/src/internal/batchLoading.ts +8 -8
  383. package/src/internal/devices/apiService.ts +58 -51
  384. package/src/internal/devices/cryptoService.ts +22 -17
  385. package/src/internal/devices/index.ts +17 -10
  386. package/src/internal/devices/interface.ts +21 -12
  387. package/src/internal/devices/manager.test.ts +40 -9
  388. package/src/internal/devices/manager.ts +3 -3
  389. package/src/internal/download/apiService.ts +72 -52
  390. package/src/internal/download/cryptoService.ts +34 -18
  391. package/src/internal/download/fileDownloader.test.ts +25 -9
  392. package/src/internal/download/fileDownloader.ts +38 -20
  393. package/src/internal/download/index.ts +19 -19
  394. package/src/internal/download/interface.ts +19 -20
  395. package/src/internal/download/queue.ts +3 -3
  396. package/src/internal/download/telemetry.test.ts +11 -11
  397. package/src/internal/download/telemetry.ts +24 -14
  398. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  399. package/src/internal/download/thumbnailDownloader.ts +43 -32
  400. package/src/internal/errors.ts +7 -5
  401. package/src/internal/events/apiService.ts +46 -36
  402. package/src/internal/events/coreEventManager.test.ts +101 -0
  403. package/src/internal/events/coreEventManager.ts +26 -48
  404. package/src/internal/events/eventManager.test.ts +211 -93
  405. package/src/internal/events/eventManager.ts +72 -117
  406. package/src/internal/events/index.ts +71 -91
  407. package/src/internal/events/interface.ts +92 -29
  408. package/src/internal/events/volumeEventManager.test.ts +239 -0
  409. package/src/internal/events/volumeEventManager.ts +68 -57
  410. package/src/internal/nodes/apiService.test.ts +197 -147
  411. package/src/internal/nodes/apiService.ts +288 -174
  412. package/src/internal/nodes/cache.test.ts +48 -20
  413. package/src/internal/nodes/cache.ts +79 -45
  414. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  415. package/src/internal/nodes/cryptoCache.ts +10 -5
  416. package/src/internal/nodes/cryptoService.test.ts +492 -351
  417. package/src/internal/nodes/cryptoService.ts +171 -89
  418. package/src/internal/nodes/events.test.ts +48 -344
  419. package/src/internal/nodes/events.ts +48 -254
  420. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  421. package/src/internal/nodes/extendedAttributes.ts +20 -15
  422. package/src/internal/nodes/index.test.ts +51 -55
  423. package/src/internal/nodes/index.ts +32 -22
  424. package/src/internal/nodes/interface.ts +44 -31
  425. package/src/internal/nodes/nodesAccess.test.ts +237 -130
  426. package/src/internal/nodes/nodesAccess.ts +113 -50
  427. package/src/internal/nodes/nodesManagement.test.ts +64 -39
  428. package/src/internal/nodes/nodesManagement.ts +51 -62
  429. package/src/internal/nodes/nodesRevisions.ts +7 -7
  430. package/src/internal/nodes/validations.ts +2 -2
  431. package/src/internal/photos/albums.ts +5 -5
  432. package/src/internal/photos/apiService.ts +4 -7
  433. package/src/internal/photos/cache.ts +1 -1
  434. package/src/internal/photos/index.ts +8 -8
  435. package/src/internal/photos/interface.ts +2 -2
  436. package/src/internal/photos/photosTimeline.ts +4 -5
  437. package/src/internal/sdkEvents.test.ts +10 -10
  438. package/src/internal/sdkEvents.ts +5 -13
  439. package/src/internal/shares/apiService.ts +44 -33
  440. package/src/internal/shares/cache.test.ts +6 -4
  441. package/src/internal/shares/cache.ts +25 -14
  442. package/src/internal/shares/cryptoCache.test.ts +17 -11
  443. package/src/internal/shares/cryptoCache.ts +4 -4
  444. package/src/internal/shares/cryptoService.test.ts +72 -74
  445. package/src/internal/shares/cryptoService.ts +48 -23
  446. package/src/internal/shares/index.ts +23 -11
  447. package/src/internal/shares/interface.ts +8 -8
  448. package/src/internal/shares/manager.test.ts +88 -80
  449. package/src/internal/shares/manager.ts +27 -23
  450. package/src/internal/sharing/apiService.ts +283 -175
  451. package/src/internal/sharing/cache.test.ts +35 -35
  452. package/src/internal/sharing/cache.ts +3 -3
  453. package/src/internal/sharing/cryptoService.test.ts +58 -46
  454. package/src/internal/sharing/cryptoService.ts +121 -83
  455. package/src/internal/sharing/events.test.ts +97 -207
  456. package/src/internal/sharing/events.ts +46 -157
  457. package/src/internal/sharing/index.ts +24 -16
  458. package/src/internal/sharing/interface.ts +46 -42
  459. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  460. package/src/internal/sharing/sharingAccess.ts +39 -21
  461. package/src/internal/sharing/sharingManagement.test.ts +405 -335
  462. package/src/internal/sharing/sharingManagement.ts +144 -75
  463. package/src/internal/uids.ts +1 -1
  464. package/src/internal/upload/apiService.ts +168 -119
  465. package/src/internal/upload/blockVerifier.ts +8 -6
  466. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  467. package/src/internal/upload/cryptoService.ts +42 -36
  468. package/src/internal/upload/digests.ts +2 -2
  469. package/src/internal/upload/fileUploader.test.ts +15 -3
  470. package/src/internal/upload/fileUploader.ts +39 -17
  471. package/src/internal/upload/index.ts +17 -18
  472. package/src/internal/upload/interface.ts +79 -77
  473. package/src/internal/upload/manager.test.ts +222 -175
  474. package/src/internal/upload/manager.ts +74 -80
  475. package/src/internal/upload/queue.ts +3 -3
  476. package/src/internal/upload/streamUploader.test.ts +40 -27
  477. package/src/internal/upload/streamUploader.ts +87 -71
  478. package/src/internal/upload/telemetry.test.ts +11 -11
  479. package/src/internal/upload/telemetry.ts +25 -15
  480. package/src/internal/wait.test.ts +1 -1
  481. package/src/internal/wait.ts +3 -3
  482. package/src/protonDriveClient.ts +189 -276
  483. package/src/protonDrivePhotosClient.ts +20 -13
  484. package/src/telemetry.ts +60 -52
  485. package/src/tests/logger.ts +1 -1
  486. package/src/tests/telemetry.ts +2 -2
  487. package/src/transformers.ts +27 -21
  488. package/src/version.ts +0 -1
  489. package/dist/internal/events/cache.d.ts +0 -28
  490. package/dist/internal/events/cache.js +0 -67
  491. package/dist/internal/events/cache.js.map +0 -1
  492. package/dist/internal/events/cache.test.js +0 -43
  493. package/dist/internal/events/cache.test.js.map +0 -1
  494. package/src/internal/events/cache.test.ts +0 -47
  495. package/src/internal/events/cache.ts +0 -80
  496. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
@@ -1,20 +1,24 @@
1
- import { MemoryCache } from "../../cache";
2
- import { NodeType, MemberRole, RevisionState, resultOk, Result } from "../../interface";
3
- import { getMockLogger } from "../../tests/logger";
4
- import { CACHE_TAG_KEYS, NodesCache } from "./cache";
5
- import { DecryptedNode, DecryptedRevision } from "./interface";
6
-
7
- function generateNode(uid: string, parentUid='root', params: Partial<DecryptedNode> & { volumeId?: string } = {}): DecryptedNode {
1
+ import { MemoryCache } from '../../cache';
2
+ import { NodeType, MemberRole, RevisionState, resultOk, Result } from '../../interface';
3
+ import { getMockLogger } from '../../tests/logger';
4
+ import { CACHE_TAG_KEYS, NodesCache } from './cache';
5
+ import { DecryptedNode, DecryptedRevision } from './interface';
6
+
7
+ function generateNode(
8
+ uid: string,
9
+ parentUid = 'root',
10
+ params: Partial<DecryptedNode> & { volumeId?: string } = {},
11
+ ): DecryptedNode {
8
12
  return {
9
- uid: `${params.volumeId || "volumeId"}~:${uid}`,
10
- parentUid: `${params.volumeId || "volumeId"}~:${parentUid}`,
13
+ uid: `${params.volumeId || 'volumeId'}~:${uid}`,
14
+ parentUid: `${params.volumeId || 'volumeId'}~:${parentUid}`,
11
15
  directMemberRole: MemberRole.Admin,
12
16
  type: NodeType.File,
13
- mediaType: "text",
17
+ mediaType: 'text',
14
18
  isShared: false,
15
19
  creationTime: new Date(),
16
20
  trashTime: undefined,
17
- volumeId: "volumeId",
21
+ volumeId: 'volumeId',
18
22
  isStale: false,
19
23
  activeRevision: undefined,
20
24
  folder: undefined,
@@ -108,7 +112,7 @@ describe('nodesCache', () => {
108
112
  creationTime: new Date('2021-01-01'),
109
113
  storageSize: 100,
110
114
  contentAuthor: resultOk('test@test.com'),
111
- claimedModificationTime: new Date('2021-02-01')
115
+ claimedModificationTime: new Date('2021-02-01'),
112
116
  });
113
117
  const node = generateNode('node1', '', { activeRevision });
114
118
 
@@ -135,7 +139,9 @@ describe('nodesCache', () => {
135
139
  await cache.getNode('badObject');
136
140
  fail('Should have thrown an error');
137
141
  } catch (error) {
138
- expect(`${error}`).toBe('Error: Failed to deserialise node: Unexpected token \'a\', \"aaa\" is not valid JSON');
142
+ expect(`${error}`).toBe(
143
+ 'Error: Failed to deserialise node: Unexpected token \'a\', \"aaa\" is not valid JSON',
144
+ );
139
145
  }
140
146
 
141
147
  try {
@@ -153,7 +159,7 @@ describe('nodesCache', () => {
153
159
  cache,
154
160
  ['node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node2', 'node2a', 'node2b'],
155
161
  ['node3'],
156
- )
162
+ );
157
163
  });
158
164
 
159
165
  it('should remove node and its children', async () => {
@@ -162,8 +168,8 @@ describe('nodesCache', () => {
162
168
  await verifyNodesCache(
163
169
  cache,
164
170
  ['node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node3'],
165
- ['node2', 'node2a', 'node2b',],
166
- )
171
+ ['node2', 'node2a', 'node2b'],
172
+ );
167
173
  });
168
174
 
169
175
  it('should remove node and its children recursively', async () => {
@@ -198,9 +204,21 @@ describe('nodesCache', () => {
198
204
  expect(nodeUids).toStrictEqual(['volumeId~:node1', 'volumeId~:node2', 'volumeId~:node3']);
199
205
  await verifyNodesCache(
200
206
  cache,
201
- ['root', 'node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node2', 'node2a', 'node2b', 'node3'],
207
+ [
208
+ 'root',
209
+ 'node1',
210
+ 'node1a',
211
+ 'node1b',
212
+ 'node1c',
213
+ 'node1c-alpha',
214
+ 'node1c-beta',
215
+ 'node2',
216
+ 'node2a',
217
+ 'node2b',
218
+ 'node3',
219
+ ],
202
220
  ['badObject'],
203
- )
221
+ );
204
222
  });
205
223
 
206
224
  it('should iterate trashed nodes', async () => {
@@ -224,8 +242,18 @@ describe('nodesCache', () => {
224
242
  await generateTreeStructure(cache);
225
243
  await cache.setNodesStaleFromVolume('volumeId');
226
244
 
227
- const staleNodeUids = ['node1', 'node1a', 'node1b', 'node1c', 'node1c-alpha', 'node1c-beta', 'node2', 'node2a', 'node2b', 'node3']
228
- .map((uid) => `volumeId~:${uid}`);
245
+ const staleNodeUids = [
246
+ 'node1',
247
+ 'node1a',
248
+ 'node1b',
249
+ 'node1c',
250
+ 'node1c-alpha',
251
+ 'node1c-beta',
252
+ 'node2',
253
+ 'node2a',
254
+ 'node2b',
255
+ 'node3',
256
+ ].map((uid) => `volumeId~:${uid}`);
229
257
  const result = await Array.fromAsync(cache.iterateNodes([...staleNodeUids, 'volume2~:root-otherVolume']));
230
258
  const got = result.map((item) => ({ uid: item.uid, isStale: item.ok ? item.node.isStale : item.error }));
231
259
  const expected = [
@@ -1,28 +1,29 @@
1
- import { EntityResult } from "../../cache";
2
- import { ProtonDriveEntitiesCache, Logger, resultOk, Result } from "../../interface";
3
- import { splitNodeUid } from "../uids";
4
- import { DecryptedNode, DecryptedRevision } from "./interface";
1
+ import { EntityResult } from '../../cache';
2
+ import { ProtonDriveEntitiesCache, Logger, resultOk, Result } from '../../interface';
3
+ import { splitNodeUid } from '../uids';
4
+ import { DecryptedNode, DecryptedRevision } from './interface';
5
5
 
6
6
  export enum CACHE_TAG_KEYS {
7
7
  ParentUid = 'nodeParentUid',
8
8
  Trashed = 'nodeTrashed',
9
+ Roots = 'nodeRoot',
9
10
  }
10
11
 
11
- type DecryptedNodeResult = (
12
- {uid: string, ok: true, node: DecryptedNode} |
13
- {uid: string, ok: false, error: string}
14
- );
12
+ type DecryptedNodeResult = { uid: string; ok: true; node: DecryptedNode } | { uid: string; ok: false; error: string };
15
13
 
16
14
  /**
17
15
  * Provides caching for nodes metadata.
18
- *
16
+ *
19
17
  * The cache is responsible for serialising and deserialising node metadata,
20
18
  * recording parent-child relationships, and recursively removing nodes.
21
- *
19
+ *
22
20
  * The cache of node metadata should not contain any crypto material.
23
21
  */
24
22
  export class NodesCache {
25
- constructor(private logger: Logger, private driveCache: ProtonDriveEntitiesCache) {
23
+ constructor(
24
+ private logger: Logger,
25
+ private driveCache: ProtonDriveEntitiesCache,
26
+ ) {
26
27
  this.logger = logger;
27
28
  this.driveCache = driveCache;
28
29
  }
@@ -34,10 +35,12 @@ export class NodesCache {
34
35
 
35
36
  const tags = [`volume:${volumeId}`];
36
37
  if (node.parentUid) {
37
- tags.push(`${CACHE_TAG_KEYS.ParentUid}:${node.parentUid}`)
38
+ tags.push(`${CACHE_TAG_KEYS.ParentUid}:${node.parentUid}`);
39
+ } else {
40
+ tags.push(`${CACHE_TAG_KEYS.Roots}:${volumeId}`);
38
41
  }
39
42
  if (node.trashTime) {
40
- tags.push(`${CACHE_TAG_KEYS.Trashed}`)
43
+ tags.push(`${CACHE_TAG_KEYS.Trashed}`);
41
44
  }
42
45
 
43
46
  await this.driveCache.setEntity(key, nodeData, tags);
@@ -50,7 +53,7 @@ export class NodesCache {
50
53
  return deserialiseNode(nodeData);
51
54
  } catch (error: unknown) {
52
55
  await this.removeCorruptedNode({ nodeUid }, error);
53
- throw new Error(`Failed to deserialise node: ${error instanceof Error ? error.message : error}`)
56
+ throw new Error(`Failed to deserialise node: ${error instanceof Error ? error.message : error}`);
54
57
  }
55
58
  }
56
59
 
@@ -74,13 +77,27 @@ export class NodesCache {
74
77
  }
75
78
  }
76
79
 
80
+ /**
81
+ * Remove all entries associated with a volume.
82
+ *
83
+ * This is needed when a user looses access to a volume.
84
+ */
85
+ async removeVolume(volumeId: string): Promise<void> {
86
+ for await (const result of this.iterateRootNodeUids(volumeId)) {
87
+ await this.removeNodes([result.key]);
88
+ }
89
+ }
90
+
77
91
  /**
78
92
  * Remove corrupted node never throws, but it logs so we can know
79
93
  * about issues and fix them. It is crucial to remove corrupted
80
94
  * nodes and rather let SDK re-fetch them than to auotmatically
81
95
  * fix issues and do not bother user with it.
82
96
  */
83
- private async removeCorruptedNode({ nodeUid, cacheUid }: { nodeUid?: string, cacheUid?: string }, corruptionError: unknown): Promise<void> {
97
+ private async removeCorruptedNode(
98
+ { nodeUid, cacheUid }: { nodeUid?: string; cacheUid?: string },
99
+ corruptionError: unknown,
100
+ ): Promise<void> {
84
101
  this.logger.error(`Removing corrupted nodes from the cache`, corruptionError);
85
102
  try {
86
103
  if (nodeUid) {
@@ -92,7 +109,9 @@ export class NodesCache {
92
109
  // The node will not be returned, thus SDK will re-fetch
93
110
  // and re-cache it. Setting it again should then fix the
94
111
  // problem.
95
- this.logger.warn(`Failed to remove corrupted node from the cache: ${removingError instanceof Error ? removingError.message : removingError}`);
112
+ this.logger.warn(
113
+ `Failed to remove corrupted node from the cache: ${removingError instanceof Error ? removingError.message : removingError}`,
114
+ );
96
115
  }
97
116
  }
98
117
 
@@ -115,7 +134,9 @@ export class NodesCache {
115
134
 
116
135
  private async getRecursiveChildrenCacheUids(parentNodeUid: string): Promise<string[]> {
117
136
  const cacheUids = [];
118
- for await (const result of this.driveCache.iterateEntitiesByTag(`${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`)) {
137
+ for await (const result of this.driveCache.iterateEntitiesByTag(
138
+ `${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`,
139
+ )) {
119
140
  cacheUids.push(result.key);
120
141
  const childrenCacheUids = await this.getRecursiveChildrenCacheUids(getNodeUid(result.key));
121
142
  cacheUids.push(...childrenCacheUids);
@@ -134,7 +155,9 @@ export class NodesCache {
134
155
  }
135
156
 
136
157
  async *iterateChildren(parentNodeUid: string): AsyncGenerator<DecryptedNodeResult> {
137
- for await (const result of this.driveCache.iterateEntitiesByTag(`${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`)) {
158
+ for await (const result of this.driveCache.iterateEntitiesByTag(
159
+ `${CACHE_TAG_KEYS.ParentUid}:${parentNodeUid}`,
160
+ )) {
138
161
  const node = await this.convertCacheResult(result);
139
162
  if (node && (!node.ok || !node.node.trashTime)) {
140
163
  yield node;
@@ -142,6 +165,10 @@ export class NodesCache {
142
165
  }
143
166
  }
144
167
 
168
+ async *iterateRootNodeUids(volumeId: string): AsyncGenerator<EntityResult<string>> {
169
+ yield* this.driveCache.iterateEntitiesByTag(`${CACHE_TAG_KEYS.Roots}:${volumeId}`);
170
+ }
171
+
145
172
  async *iterateTrashedNodes(): AsyncGenerator<DecryptedNodeResult> {
146
173
  for await (const result of this.driveCache.iterateEntitiesByTag(CACHE_TAG_KEYS.Trashed)) {
147
174
  const node = await this.convertCacheResult(result);
@@ -160,13 +187,13 @@ export class NodesCache {
160
187
  try {
161
188
  nodeUid = getNodeUid(result.key);
162
189
  } catch (error: unknown) {
163
- await this.removeCorruptedNode({ cacheUid: result.key }, error)
190
+ await this.removeCorruptedNode({ cacheUid: result.key }, error);
164
191
  return null;
165
192
  }
166
193
  if (result.ok) {
167
194
  let node;
168
195
  try {
169
- node = deserialiseNode(result.value)
196
+ node = deserialiseNode(result.value);
170
197
  } catch (error: unknown) {
171
198
  await this.removeCorruptedNode({ nodeUid }, error);
172
199
  return null;
@@ -175,7 +202,7 @@ export class NodesCache {
175
202
  uid: nodeUid,
176
203
  ok: true,
177
204
  node,
178
- }
205
+ };
179
206
  } else {
180
207
  return {
181
208
  ...result,
@@ -221,31 +248,38 @@ function serialiseNode(node: DecryptedNode) {
221
248
  function deserialiseNode(nodeData: string): DecryptedNode {
222
249
  const node = JSON.parse(nodeData);
223
250
  if (
224
- !node || typeof node !== 'object' ||
225
- !node.uid || typeof node.uid !== 'string' ||
226
- !node.directMemberRole || typeof node.directMemberRole !== 'string' ||
227
- !node.type || typeof node.type !== 'string' ||
228
- (typeof node.mediaType !== 'string' && node.mediaType !== undefined) ||
229
- typeof node.isShared !== 'boolean' ||
230
- !node.creationTime || typeof node.creationTime !== 'string' ||
231
- (typeof node.trashTime !== 'string' && node.trashTime !== undefined) ||
232
- (typeof node.folder !== 'object' && node.folder !== undefined) ||
233
- (typeof node.folder?.claimedModificationTime !== 'string' && node.folder?.claimedModificationTime !== undefined)
234
- ) {
235
- throw new Error(`Invalid node data: ${nodeData}`);
236
- }
237
- return {
238
- ...node,
239
- creationTime: new Date(node.creationTime),
240
- trashTime: node.trashTime ? new Date(node.trashTime) : undefined,
241
- activeRevision: node.activeRevision ? deserialiseRevision(node.activeRevision) : undefined,
242
- folder: node.folder
251
+ !node ||
252
+ typeof node !== 'object' ||
253
+ !node.uid ||
254
+ typeof node.uid !== 'string' ||
255
+ !node.directMemberRole ||
256
+ typeof node.directMemberRole !== 'string' ||
257
+ !node.type ||
258
+ typeof node.type !== 'string' ||
259
+ (typeof node.mediaType !== 'string' && node.mediaType !== undefined) ||
260
+ typeof node.isShared !== 'boolean' ||
261
+ !node.creationTime ||
262
+ typeof node.creationTime !== 'string' ||
263
+ (typeof node.trashTime !== 'string' && node.trashTime !== undefined) ||
264
+ (typeof node.folder !== 'object' && node.folder !== undefined) ||
265
+ (typeof node.folder?.claimedModificationTime !== 'string' && node.folder?.claimedModificationTime !== undefined)
266
+ ) {
267
+ throw new Error(`Invalid node data: ${nodeData}`);
268
+ }
269
+ return {
270
+ ...node,
271
+ creationTime: new Date(node.creationTime),
272
+ trashTime: node.trashTime ? new Date(node.trashTime) : undefined,
273
+ activeRevision: node.activeRevision ? deserialiseRevision(node.activeRevision) : undefined,
274
+ folder: node.folder
243
275
  ? {
244
- ...node.folder,
245
- claimedModificationTime: node.folder.claimedModificationTime ? new Date(node.folder.claimedModificationTime) : undefined,
246
- }
276
+ ...node.folder,
277
+ claimedModificationTime: node.folder.claimedModificationTime
278
+ ? new Date(node.folder.claimedModificationTime)
279
+ : undefined,
280
+ }
247
281
  : undefined,
248
- };
282
+ };
249
283
  }
250
284
 
251
285
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -261,7 +295,7 @@ function deserialiseRevision(revision: any): Result<DecryptedRevision, Error> {
261
295
  return resultOk({
262
296
  ...revision.value,
263
297
  creationTime: new Date(revision.value.creationTime),
264
- claimedModificationTime: new Date(revision.value.claimedModificationTime)
298
+ claimedModificationTime: new Date(revision.value.claimedModificationTime),
265
299
  });
266
300
  }
267
301
 
@@ -1,20 +1,20 @@
1
- import { PrivateKey, SessionKey } from "../../crypto";
2
- import { MemoryCache } from "../../cache";
3
- import { CachedCryptoMaterial } from "../../interface";
4
- import { getMockLogger } from "../../tests/logger";
5
- import { NodesCryptoCache } from "./cryptoCache";
1
+ import { PrivateKey, SessionKey } from '../../crypto';
2
+ import { MemoryCache } from '../../cache';
3
+ import { CachedCryptoMaterial } from '../../interface';
4
+ import { getMockLogger } from '../../tests/logger';
5
+ import { NodesCryptoCache } from './cryptoCache';
6
6
 
7
7
  describe('nodesCryptoCache', () => {
8
8
  let memoryCache: MemoryCache<CachedCryptoMaterial>;
9
9
  let cache: NodesCryptoCache;
10
10
 
11
11
  const generatePrivateKey = (name: string) => {
12
- return name as unknown as PrivateKey
13
- }
12
+ return name as unknown as PrivateKey;
13
+ };
14
14
 
15
15
  const generateSessionKey = (name: string) => {
16
- return name as unknown as SessionKey
17
- }
16
+ return name as unknown as SessionKey;
17
+ };
18
18
 
19
19
  beforeEach(async () => {
20
20
  memoryCache = new MemoryCache();
@@ -28,7 +28,12 @@ describe('nodesCryptoCache', () => {
28
28
 
29
29
  it('should store and retrieve keys', async () => {
30
30
  const nodeId = 'newNodeId';
31
- const keys = { passphrase: 'pass', key: generatePrivateKey('privateKey'), passphraseSessionKey: generateSessionKey('sessionKey'), hashKey: undefined };
31
+ const keys = {
32
+ passphrase: 'pass',
33
+ key: generatePrivateKey('privateKey'),
34
+ passphraseSessionKey: generateSessionKey('sessionKey'),
35
+ hashKey: undefined,
36
+ };
32
37
 
33
38
  await cache.setNodeKeys(nodeId, keys);
34
39
  const result = await cache.getNodeKeys(nodeId);
@@ -38,8 +43,18 @@ describe('nodesCryptoCache', () => {
38
43
 
39
44
  it('should replace and retrieve new keys', async () => {
40
45
  const nodeId = 'newNodeId';
41
- const keys1 = { passphrase: 'pass', key: generatePrivateKey('privateKey1'), passphraseSessionKey: generateSessionKey('sessionKey1'), hashKey: undefined };
42
- const keys2 = { passphrase: 'pass', key: generatePrivateKey('privateKey2'), passphraseSessionKey: generateSessionKey('sessionKey2'), hashKey: undefined };
46
+ const keys1 = {
47
+ passphrase: 'pass',
48
+ key: generatePrivateKey('privateKey1'),
49
+ passphraseSessionKey: generateSessionKey('sessionKey1'),
50
+ hashKey: undefined,
51
+ };
52
+ const keys2 = {
53
+ passphrase: 'pass',
54
+ key: generatePrivateKey('privateKey2'),
55
+ passphraseSessionKey: generateSessionKey('sessionKey2'),
56
+ hashKey: undefined,
57
+ };
43
58
 
44
59
  await cache.setNodeKeys(nodeId, keys1);
45
60
  await cache.setNodeKeys(nodeId, keys2);
@@ -50,7 +65,12 @@ describe('nodesCryptoCache', () => {
50
65
 
51
66
  it('should remove keys', async () => {
52
67
  const nodeId = 'newNodeId';
53
- const keys = { passphrase: 'pass', key: generatePrivateKey('privateKey'), passphraseSessionKey: generateSessionKey('sessionKey'), hashKey: undefined };
68
+ const keys = {
69
+ passphrase: 'pass',
70
+ key: generatePrivateKey('privateKey'),
71
+ passphraseSessionKey: generateSessionKey('sessionKey'),
72
+ hashKey: undefined,
73
+ };
54
74
 
55
75
  await cache.setNodeKeys(nodeId, keys);
56
76
  await cache.removeNodeKeys([nodeId]);
@@ -89,4 +109,4 @@ describe('nodesCryptoCache', () => {
89
109
  expect(`${error}`).toBe('Error: Entity not found');
90
110
  }
91
111
  });
92
- });
112
+ });
@@ -1,14 +1,17 @@
1
- import { ProtonDriveCryptoCache, Logger } from "../../interface";
2
- import { DecryptedNodeKeys } from "./interface";
1
+ import { ProtonDriveCryptoCache, Logger } from '../../interface';
2
+ import { DecryptedNodeKeys } from './interface';
3
3
 
4
4
  /**
5
5
  * Provides caching for node crypto material.
6
- *
6
+ *
7
7
  * The cache is responsible for serialising and deserialising node
8
8
  * crypto material.
9
9
  */
10
10
  export class NodesCryptoCache {
11
- constructor(private logger: Logger, private driveCache: ProtonDriveCryptoCache) {
11
+ constructor(
12
+ private logger: Logger,
13
+ private driveCache: ProtonDriveCryptoCache,
14
+ ) {
12
15
  this.logger = logger;
13
16
  this.driveCache = driveCache;
14
17
  }
@@ -26,7 +29,9 @@ export class NodesCryptoCache {
26
29
  } catch (removingError: unknown) {
27
30
  // The node keys will not be returned, thus SDK will re-fetch
28
31
  // and re-cache it. Setting it again should then fix the problem.
29
- this.logger.warn(`Failed to remove corrupted node keys from the cache: ${removingError instanceof Error ? removingError.message : removingError}`);
32
+ this.logger.warn(
33
+ `Failed to remove corrupted node keys from the cache: ${removingError instanceof Error ? removingError.message : removingError}`,
34
+ );
30
35
  }
31
36
  throw new Error(`Failed to deserialize node keys: missing passphrase`);
32
37
  }