@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,16 +1,16 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { MemberRole, NodeType, NodeResult, resultOk } from "../../interface";
4
- import { AbortError, ValidationError } from "../../errors";
3
+ import { MemberRole, NodeType, NodeResult, resultOk } from '../../interface';
4
+ import { AbortError, ValidationError } from '../../errors';
5
5
  import { getErrorMessage } from '../errors';
6
- import { NodeAPIService } from "./apiService";
7
- import { NodesCryptoCache } from "./cryptoCache";
8
- import { NodesCryptoService } from "./cryptoService";
9
- import { NodesEvents } from './events';
10
- import { DecryptedNode } from "./interface";
11
- import { NodesAccess } from "./nodesAccess";
12
- import { validateNodeName } from "./validations";
13
- import { generateFolderExtendedAttributes } from "./extendedAttributes";
6
+ import { NodeAPIService } from './apiService';
7
+ import { NodesCryptoCache } from './cryptoCache';
8
+ import { NodesCryptoService } from './cryptoService';
9
+ import { DecryptedNode } from './interface';
10
+ import { NodesAccess } from './nodesAccess';
11
+ import { validateNodeName } from './validations';
12
+ import { generateFolderExtendedAttributes } from './extendedAttributes';
13
+ import { splitNodeUid } from '../uids';
14
14
 
15
15
  /**
16
16
  * Provides high-level actions for managing nodes.
@@ -27,16 +27,18 @@ export class NodesManagement {
27
27
  private cryptoCache: NodesCryptoCache,
28
28
  private cryptoService: NodesCryptoService,
29
29
  private nodesAccess: NodesAccess,
30
- private nodesEvents: NodesEvents,
31
30
  ) {
32
31
  this.apiService = apiService;
33
32
  this.cryptoCache = cryptoCache;
34
33
  this.cryptoService = cryptoService;
35
34
  this.nodesAccess = nodesAccess;
36
- this.nodesEvents = nodesEvents;
37
35
  }
38
36
 
39
- async renameNode(nodeUid: string, newName: string, options = { allowRenameRootNode: false }): Promise<DecryptedNode> {
37
+ async renameNode(
38
+ nodeUid: string,
39
+ newName: string,
40
+ options = { allowRenameRootNode: false },
41
+ ): Promise<DecryptedNode> {
40
42
  validateNodeName(newName);
41
43
 
42
44
  const node = await this.nodesAccess.getNode(nodeUid);
@@ -45,19 +47,20 @@ export class NodesManagement {
45
47
  const address = await this.nodesAccess.getRootNodeEmailKey(nodeUid);
46
48
 
47
49
  if (!options.allowRenameRootNode && (!node.hash || !parentKeys.hashKey)) {
48
- throw new ValidationError(c('Error').t`Renaming root item is not allowed`)
50
+ throw new ValidationError(c('Error').t`Renaming root item is not allowed`);
49
51
  }
50
52
 
51
- const {
52
- signatureEmail,
53
- armoredNodeName,
54
- hash,
55
- } = await this.cryptoService.encryptNewName(parentKeys, nodeNameSessionKey, address, newName);
53
+ const { signatureEmail, armoredNodeName, hash } = await this.cryptoService.encryptNewName(
54
+ parentKeys,
55
+ nodeNameSessionKey,
56
+ address,
57
+ newName,
58
+ );
56
59
 
57
60
  // Because hash is optional, lets ensure we have it unless explicitely
58
61
  // allowed to rename root node.
59
62
  if (!options.allowRenameRootNode && !hash) {
60
- throw new Error("Node hash not generated");
63
+ throw new Error('Node hash not generated');
61
64
  }
62
65
 
63
66
  await this.apiService.renameNode(
@@ -69,20 +72,21 @@ export class NodesManagement {
69
72
  encryptedName: armoredNodeName,
70
73
  nameSignatureEmail: signatureEmail,
71
74
  hash: hash,
72
- }
75
+ },
73
76
  );
77
+ await this.nodesAccess.notifyNodeChanged(nodeUid);
74
78
  const newNode: DecryptedNode = {
75
79
  ...node,
76
80
  name: resultOk(newName),
81
+ encryptedName: armoredNodeName,
77
82
  nameAuthor: resultOk(signatureEmail),
78
83
  hash,
79
- }
80
- await this.nodesEvents.nodeUpdated(newNode);
84
+ };
81
85
  return newNode;
82
86
  }
83
87
 
84
88
  // Improvement requested: move nodes in parallel
85
- async* moveNodes(nodeUids: string[], newParentNodeUid: string, signal?: AbortSignal): AsyncGenerator<NodeResult> {
89
+ async *moveNodes(nodeUids: string[], newParentNodeUid: string, signal?: AbortSignal): AsyncGenerator<NodeResult> {
86
90
  for (const nodeUid of nodeUids) {
87
91
  if (signal?.aborted) {
88
92
  throw new AbortError(c('Error').t`Move operation aborted`);
@@ -92,13 +96,13 @@ export class NodesManagement {
92
96
  yield {
93
97
  uid: nodeUid,
94
98
  ok: true,
95
- }
99
+ };
96
100
  } catch (error: unknown) {
97
101
  yield {
98
102
  uid: nodeUid,
99
103
  ok: false,
100
104
  error: getErrorMessage(error),
101
- }
105
+ };
102
106
  }
103
107
  }
104
108
  }
@@ -133,10 +137,12 @@ export class NodesManagement {
133
137
  // Node passphrase and signature email must be passed if and only if
134
138
  // the the signatures are missing (key author is null).
135
139
  const anonymousKey = node.keyAuthor.ok && node.keyAuthor.value === null;
136
- const keySignatureProperties = !anonymousKey ? {} : {
137
- signatureEmail: encryptedCrypto.signatureEmail,
138
- armoredNodePassphraseSignature: encryptedCrypto.armoredNodePassphraseSignature,
139
- }
140
+ const keySignatureProperties = !anonymousKey
141
+ ? {}
142
+ : {
143
+ signatureEmail: encryptedCrypto.signatureEmail,
144
+ armoredNodePassphraseSignature: encryptedCrypto.armoredNodePassphraseSignature,
145
+ };
140
146
  await this.apiService.moveNode(
141
147
  nodeUid,
142
148
  {
@@ -150,70 +156,51 @@ export class NodesManagement {
150
156
  nameSignatureEmail: encryptedCrypto.nameSignatureEmail,
151
157
  hash: encryptedCrypto.hash,
152
158
  // TODO: When moving photos, we need to pass content hash.
153
- }
159
+ },
154
160
  );
155
161
  const newNode: DecryptedNode = {
156
162
  ...node,
163
+ encryptedName: encryptedCrypto.encryptedName,
157
164
  parentUid: newParentUid,
158
165
  hash: encryptedCrypto.hash,
159
166
  keyAuthor: resultOk(encryptedCrypto.signatureEmail),
160
167
  nameAuthor: resultOk(encryptedCrypto.nameSignatureEmail),
161
168
  };
162
- await this.nodesEvents.nodeUpdated(newNode);
169
+ await this.nodesAccess.notifyNodeChanged(node.uid, newParentUid);
163
170
  return newNode;
164
171
  }
165
172
 
166
- async* trashNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
167
- const nodesOrMissing = await Array.fromAsync(this.nodesAccess.iterateNodes(nodeUids, signal));
168
- const nodes = nodesOrMissing.filter(node => !('missingUid' in node)) as DecryptedNode[];
169
-
173
+ async *trashNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
170
174
  for await (const result of this.apiService.trashNodes(nodeUids, signal)) {
171
175
  if (result.ok) {
172
- const node = nodes.find(node => node.uid === result.uid);
173
- if (node) {
174
- await this.nodesEvents.nodeUpdated({
175
- ...node,
176
- trashTime: new Date(),
177
- });
178
- }
176
+ await this.nodesAccess.notifyNodeChanged(result.uid);
179
177
  }
180
-
181
178
  yield result;
182
179
  }
183
180
  }
184
181
 
185
- async* restoreNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
186
- const nodesOrMissing = await Array.fromAsync(this.nodesAccess.iterateNodes(nodeUids, signal));
187
- const nodes = nodesOrMissing.filter(node => !('missingUid' in node)) as DecryptedNode[];
188
-
182
+ async *restoreNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
189
183
  for await (const result of this.apiService.restoreNodes(nodeUids, signal)) {
190
184
  if (result.ok) {
191
- const node = nodes.find(node => node.uid === result.uid);
192
- if (node) {
193
- await this.nodesEvents.nodeUpdated({
194
- ...node,
195
- trashTime: undefined,
196
- });
197
- }
185
+ await this.nodesAccess.notifyNodeChanged(result.uid);
198
186
  }
199
-
200
187
  yield result;
201
188
  }
202
189
  }
203
190
 
204
- async* deleteNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
191
+ async *deleteNodes(nodeUids: string[], signal?: AbortSignal): AsyncGenerator<NodeResult> {
205
192
  const deletedNodeUids = [];
206
193
 
207
194
  for await (const result of this.apiService.deleteNodes(nodeUids, signal)) {
208
195
  if (result.ok) {
209
196
  deletedNodeUids.push(result.uid);
197
+ await this.nodesAccess.notifyNodeDeleted(result.uid);
210
198
  }
211
199
  yield result;
212
200
  }
213
-
214
- await this.nodesEvents.nodesDeleted(deletedNodeUids);
215
201
  }
216
202
 
203
+ // FIXME create test for create folder
217
204
  async createFolder(parentNodeUid: string, folderName: string, modificationTime?: Date): Promise<DecryptedNode> {
218
205
  validateNodeName(folderName);
219
206
 
@@ -242,6 +229,8 @@ export class NodesManagement {
242
229
  armoredExtendedAttributes: encryptedCrypto.folder.armoredExtendedAttributes,
243
230
  });
244
231
 
232
+ await this.nodesAccess.notifyChildCreated(parentNodeUid);
233
+
245
234
  const node: DecryptedNode = {
246
235
  // Internal metadata
247
236
  hash: encryptedCrypto.hash,
@@ -251,7 +240,7 @@ export class NodesManagement {
251
240
  uid: nodeUid,
252
241
  parentUid: parentNodeUid,
253
242
  type: NodeType.Folder,
254
- mediaType: "Folder",
243
+ mediaType: 'Folder',
255
244
  creationTime: new Date(),
256
245
 
257
246
  // Share node metadata
@@ -263,9 +252,9 @@ export class NodesManagement {
263
252
  keyAuthor: resultOk(encryptedCrypto.signatureEmail),
264
253
  nameAuthor: resultOk(encryptedCrypto.signatureEmail),
265
254
  name: resultOk(folderName),
266
- }
255
+ treeEventScopeId: splitNodeUid(nodeUid).volumeId,
256
+ };
267
257
 
268
- await this.nodesEvents.nodeCreated(node);
269
258
  await this.cryptoCache.setNodeKeys(nodeUid, keys);
270
259
  return node;
271
260
  }
@@ -1,9 +1,9 @@
1
- import { Logger, Revision } from "../../interface";
2
- import { makeNodeUidFromRevisionUid } from "../uids";
3
- import { NodeAPIService } from "./apiService";
4
- import { NodesCryptoService } from "./cryptoService";
5
- import { NodesAccess } from "./nodesAccess";
6
- import { parseFileExtendedAttributes } from "./extendedAttributes";
1
+ import { Logger, Revision } from '../../interface';
2
+ import { makeNodeUidFromRevisionUid } from '../uids';
3
+ import { NodeAPIService } from './apiService';
4
+ import { NodesCryptoService } from './cryptoService';
5
+ import { NodesAccess } from './nodesAccess';
6
+ import { parseFileExtendedAttributes } from './extendedAttributes';
7
7
 
8
8
  /**
9
9
  * Provides access to revisions metadata.
@@ -34,7 +34,7 @@ export class NodesRevisons {
34
34
  };
35
35
  }
36
36
 
37
- async* iterateRevisions(nodeUid: string, signal?: AbortSignal): AsyncGenerator<Revision> {
37
+ async *iterateRevisions(nodeUid: string, signal?: AbortSignal): AsyncGenerator<Revision> {
38
38
  const { key } = await this.nodesAccess.getNodeKeys(nodeUid);
39
39
 
40
40
  const encryptedRevisions = await this.apiService.getRevisions(nodeUid, signal);
@@ -16,8 +16,8 @@ export function validateNodeName(name: string): void {
16
16
  c('Error').ngettext(
17
17
  msgid`Name must be ${MAX_NODE_NAME_LENGTH} character long at most`,
18
18
  `Name must be ${MAX_NODE_NAME_LENGTH} characters long at most`,
19
- MAX_NODE_NAME_LENGTH
20
- )
19
+ MAX_NODE_NAME_LENGTH,
20
+ ),
21
21
  );
22
22
  }
23
23
  if (name.includes('/')) {
@@ -1,6 +1,6 @@
1
- import { PhotosAPIService } from "./apiService";
2
- import { PhotosCache } from "./cache";
3
- import { NodesService } from "./interface";
1
+ import { PhotosAPIService } from './apiService';
2
+ import { PhotosCache } from './cache';
3
+ import { NodesService } from './interface';
4
4
 
5
5
  export class Albums {
6
6
  constructor(
@@ -13,12 +13,12 @@ export class Albums {
13
13
  this.nodesService = nodesService;
14
14
  }
15
15
 
16
- async* iterateAlbums() {
16
+ async *iterateAlbums() {
17
17
  for await (const album of this.apiService.iterateAlbums()) {
18
18
  const node = await this.nodesService.getNode(album.uid);
19
19
  yield {
20
20
  node,
21
- }
21
+ };
22
22
  }
23
23
  }
24
24
 
@@ -1,16 +1,13 @@
1
- import { DriveAPIService } from "../apiService";
1
+ import { DriveAPIService } from '../apiService';
2
2
 
3
3
  export class PhotosAPIService {
4
4
  constructor(private apiService: DriveAPIService) {
5
5
  this.apiService = apiService;
6
6
  }
7
7
 
8
- async* iterateTimeline(): AsyncGenerator<any> {
9
- }
8
+ async *iterateTimeline(): AsyncGenerator<any> {}
10
9
 
11
- async* iterateAlbums(): AsyncGenerator<any> {
12
- }
10
+ async *iterateAlbums(): AsyncGenerator<any> {}
13
11
 
14
- async createAlbum(object: any): Promise<any> {
15
- }
12
+ async createAlbum(object: any): Promise<any> {}
16
13
  }
@@ -1,4 +1,4 @@
1
- import { ProtonDriveEntitiesCache } from "../../interface";
1
+ import { ProtonDriveEntitiesCache } from '../../interface';
2
2
 
3
3
  export class PhotosCache {
4
4
  constructor(private driveCache: ProtonDriveEntitiesCache) {
@@ -1,10 +1,10 @@
1
- import { DriveAPIService } from "../apiService";
2
- import { ProtonDriveEntitiesCache } from "../../interface";
3
- import { PhotosAPIService } from "./apiService";
4
- import { PhotosCache } from "./cache";
5
- import { PhotosTimeline } from "./photosTimeline";
6
- import { Albums } from "./albums";
7
- import { NodesService } from "./interface";
1
+ import { DriveAPIService } from '../apiService';
2
+ import { ProtonDriveEntitiesCache } from '../../interface';
3
+ import { PhotosAPIService } from './apiService';
4
+ import { PhotosCache } from './cache';
5
+ import { PhotosTimeline } from './photosTimeline';
6
+ import { Albums } from './albums';
7
+ import { NodesService } from './interface';
8
8
 
9
9
  export function initPhotosModule(
10
10
  apiService: DriveAPIService,
@@ -19,5 +19,5 @@ export function initPhotosModule(
19
19
  return {
20
20
  timeline,
21
21
  albums,
22
- }
22
+ };
23
23
  }
@@ -1,5 +1,5 @@
1
- import { MissingNode } from "../../interface";
2
- import { DecryptedNode } from "../nodes";
1
+ import { MissingNode } from '../../interface';
2
+ import { DecryptedNode } from '../nodes';
3
3
 
4
4
  export interface NodesService {
5
5
  getNode(nodeUid: string): Promise<DecryptedNode>;
@@ -1,6 +1,6 @@
1
- import { PhotosAPIService } from "./apiService";
2
- import { PhotosCache } from "./cache";
3
- import { NodesService } from "./interface";
1
+ import { PhotosAPIService } from './apiService';
2
+ import { PhotosCache } from './cache';
3
+ import { NodesService } from './interface';
4
4
 
5
5
  export class PhotosTimeline {
6
6
  constructor(
@@ -13,6 +13,5 @@ export class PhotosTimeline {
13
13
  this.nodesService = nodesService;
14
14
  }
15
15
 
16
- async getTimelineStructure() {
17
- }
16
+ async getTimelineStructure() {}
18
17
  }
@@ -1,7 +1,7 @@
1
- import { SDKEvent } from "../interface";
2
- import { SDKEvents } from "./sdkEvents";
1
+ import { SDKEvent } from '../interface';
2
+ import { SDKEvents } from './sdkEvents';
3
3
 
4
- describe("SDKEvents", () => {
4
+ describe('SDKEvents', () => {
5
5
  let sdkEvents: SDKEvents;
6
6
  let logger: { debug: jest.Mock };
7
7
 
@@ -10,13 +10,13 @@ describe("SDKEvents", () => {
10
10
  sdkEvents = new SDKEvents({ getLogger: () => logger } as any);
11
11
  });
12
12
 
13
- it("should log when no listeners are present for an event", () => {
13
+ it('should log when no listeners are present for an event', () => {
14
14
  sdkEvents.requestsThrottled();
15
15
 
16
- expect(logger.debug).toHaveBeenCalledWith("No listeners for event: requestsThrottled");
16
+ expect(logger.debug).toHaveBeenCalledWith('No listeners for event: requestsThrottled');
17
17
  });
18
18
 
19
- it("should emit an event to its listeners", () => {
19
+ it('should emit an event to its listeners', () => {
20
20
  const requestsThrottledListener = jest.fn();
21
21
  sdkEvents.addListener(SDKEvent.RequestsThrottled, requestsThrottledListener);
22
22
  const requestsUnthrottledListener = jest.fn();
@@ -26,10 +26,10 @@ describe("SDKEvents", () => {
26
26
 
27
27
  expect(requestsThrottledListener).toHaveBeenCalled();
28
28
  expect(requestsUnthrottledListener).not.toHaveBeenCalled();
29
- expect(logger.debug).toHaveBeenCalledWith("Emitting event: requestsThrottled");
29
+ expect(logger.debug).toHaveBeenCalledWith('Emitting event: requestsThrottled');
30
30
  });
31
31
 
32
- it("should emit an event to multiple listeners", () => {
32
+ it('should emit an event to multiple listeners', () => {
33
33
  const requestsThrottledListener1 = jest.fn();
34
34
  const requestsThrottledListener2 = jest.fn();
35
35
  sdkEvents.addListener(SDKEvent.RequestsThrottled, requestsThrottledListener1);
@@ -39,10 +39,10 @@ describe("SDKEvents", () => {
39
39
 
40
40
  expect(requestsThrottledListener1).toHaveBeenCalled();
41
41
  expect(requestsThrottledListener2).toHaveBeenCalled();
42
- expect(logger.debug).toHaveBeenCalledWith("Emitting event: requestsThrottled");
42
+ expect(logger.debug).toHaveBeenCalledWith('Emitting event: requestsThrottled');
43
43
  });
44
44
 
45
- it("should not emit after unsubsribe", () => {
45
+ it('should not emit after unsubsribe', () => {
46
46
  const callback = jest.fn();
47
47
  const unsubscribe = sdkEvents.addListener(SDKEvent.RequestsThrottled, callback);
48
48
 
@@ -1,4 +1,4 @@
1
- import { ProtonDriveTelemetry, Logger, SDKEvent } from "../interface";
1
+ import { ProtonDriveTelemetry, Logger, SDKEvent } from '../interface';
2
2
 
3
3
  export class SDKEvents {
4
4
  private logger: Logger;
@@ -9,17 +9,11 @@ export class SDKEvents {
9
9
  }
10
10
 
11
11
  addListener(eventName: SDKEvent, callback: () => void): () => void {
12
- this.listeners.set(eventName, [
13
- ...(this.listeners.get(eventName) || []),
14
- callback,
15
- ]);
12
+ this.listeners.set(eventName, [...(this.listeners.get(eventName) || []), callback]);
16
13
 
17
14
  return () => {
18
- this.listeners.set(
19
- eventName,
20
- this.listeners.get(eventName)?.filter((cb) => cb !== callback) || []
21
- );
22
- }
15
+ this.listeners.set(eventName, this.listeners.get(eventName)?.filter((cb) => cb !== callback) || []);
16
+ };
23
17
  }
24
18
 
25
19
  transfersPaused(): void {
@@ -45,8 +39,6 @@ export class SDKEvents {
45
39
  }
46
40
 
47
41
  this.logger.debug(`Emitting event: ${eventName}`);
48
- this.listeners
49
- .get(eventName)
50
- ?.forEach((callback) => callback());
42
+ this.listeners.get(eventName)?.forEach((callback) => callback());
51
43
  }
52
44
  }
@@ -1,20 +1,29 @@
1
- import { DriveAPIService, drivePaths } from "../apiService";
2
- import { makeMemberUid } from "../uids";
3
- import { EncryptedShare, EncryptedRootShare, EncryptedShareCrypto, ShareType } from "./interface";
4
-
5
- type PostCreateVolumeRequest = Extract<drivePaths['/drive/volumes']['post']['requestBody'], { 'content': object }>['content']['application/json'];
1
+ import { DriveAPIService, drivePaths } from '../apiService';
2
+ import { makeMemberUid } from '../uids';
3
+ import { EncryptedShare, EncryptedRootShare, EncryptedShareCrypto, ShareType } from './interface';
4
+
5
+ type PostCreateVolumeRequest = Extract<
6
+ drivePaths['/drive/volumes']['post']['requestBody'],
7
+ { content: object }
8
+ >['content']['application/json'];
6
9
  type PostCreateVolumeResponse = drivePaths['/drive/volumes']['post']['responses']['200']['content']['application/json'];
7
10
 
8
- type PostCreateShareRequest = Extract<drivePaths['/drive/volumes/{volumeID}/shares']['post']['requestBody'], { 'content': object }>['content']['application/json'];
9
- type PostCreateShareResponse = drivePaths['/drive/volumes/{volumeID}/shares']['post']['responses']['200']['content']['application/json'];
10
-
11
- type GetMyFilesResponse = drivePaths['/drive/v2/shares/my-files']['get']['responses']['200']['content']['application/json'];
12
- type GetVolumeResponse = drivePaths['/drive/volumes/{volumeID}']['get']['responses']['200']['content']['application/json'];
11
+ type PostCreateShareRequest = Extract<
12
+ drivePaths['/drive/volumes/{volumeID}/shares']['post']['requestBody'],
13
+ { content: object }
14
+ >['content']['application/json'];
15
+ type PostCreateShareResponse =
16
+ drivePaths['/drive/volumes/{volumeID}/shares']['post']['responses']['200']['content']['application/json'];
17
+
18
+ type GetMyFilesResponse =
19
+ drivePaths['/drive/v2/shares/my-files']['get']['responses']['200']['content']['application/json'];
20
+ type GetVolumeResponse =
21
+ drivePaths['/drive/volumes/{volumeID}']['get']['responses']['200']['content']['application/json'];
13
22
  type GetShareResponse = drivePaths['/drive/shares/{shareID}']['get']['responses']['200']['content']['application/json'];
14
23
 
15
24
  /**
16
25
  * Provides API communication for fetching shares and creating volumes.
17
- *
26
+ *
18
27
  * The service is responsible for transforming local objects to API payloads
19
28
  * and vice versa. It should not contain any business logic.
20
29
  */
@@ -44,7 +53,7 @@ export class SharesAPIService {
44
53
  const response = await this.apiService.get<GetVolumeResponse>(`drive/volumes/${volumeId}`);
45
54
  return {
46
55
  shareId: response.Volume.Share.ShareID,
47
- }
56
+ };
48
57
  }
49
58
 
50
59
  async getShare(shareId: string): Promise<EncryptedShare> {
@@ -54,11 +63,11 @@ export class SharesAPIService {
54
63
 
55
64
  /**
56
65
  * Returns root share with address key.
57
- *
66
+ *
58
67
  * This function provides access to root shares that provides access
59
68
  * to node tree via address key. For this reason, caller must use this
60
69
  * only when it is clear the shareId is root share.
61
- *
70
+ *
62
71
  * @throws Error when share is not root share.
63
72
  */
64
73
  async getRootShare(shareId: string): Promise<EncryptedRootShare> {
@@ -76,17 +85,17 @@ export class SharesAPIService {
76
85
 
77
86
  async createVolume(
78
87
  share: {
79
- addressId: string,
80
- addressKeyId: string,
88
+ addressId: string;
89
+ addressKeyId: string;
81
90
  } & EncryptedShareCrypto,
82
91
  node: {
83
- encryptedName: string,
84
- armoredKey: string,
85
- armoredPassphrase: string,
86
- armoredPassphraseSignature: string,
87
- armoredHashKey: string,
92
+ encryptedName: string;
93
+ armoredKey: string;
94
+ armoredPassphrase: string;
95
+ armoredPassphraseSignature: string;
96
+ armoredHashKey: string;
88
97
  },
89
- ): Promise<{ volumeId: string, shareId: string, rootNodeId: string }> {
98
+ ): Promise<{ volumeId: string; shareId: string; rootNodeId: string }> {
90
99
  const response = await this.apiService.post<
91
100
  // Volume & share names are deprecated.
92
101
  Omit<PostCreateVolumeRequest, 'VolumeName' | 'ShareName'>,
@@ -108,19 +117,19 @@ export class SharesAPIService {
108
117
  volumeId: response.Volume.ID,
109
118
  shareId: response.Volume.Share.ShareID,
110
119
  rootNodeId: response.Volume.Share.LinkID,
111
- }
120
+ };
112
121
  }
113
122
 
114
123
  async createShare(
115
124
  volumeId: string,
116
125
  share: {
117
- addressId: string,
126
+ addressId: string;
118
127
  } & EncryptedShareCrypto,
119
128
  node: {
120
- nodeId: string,
121
- encryptedName: string,
122
- nameKeyPacket: string,
123
- passphraseKeyPacket: string,
129
+ nodeId: string;
130
+ encryptedName: string;
131
+ nameKeyPacket: string;
132
+ passphraseKeyPacket: string;
124
133
  },
125
134
  ): Promise<{ shareId: string }> {
126
135
  const response = await this.apiService.post<
@@ -139,7 +148,7 @@ export class SharesAPIService {
139
148
 
140
149
  return {
141
150
  shareId: response.Share.ID,
142
- }
151
+ };
143
152
  }
144
153
  }
145
154
 
@@ -149,15 +158,17 @@ function convertSharePayload(response: GetShareResponse): EncryptedShare {
149
158
  shareId: response.ShareID,
150
159
  rootNodeId: response.LinkID,
151
160
  creatorEmail: response.Creator,
152
- creationTime: response.CreateTime ? new Date(response.CreateTime*1000) : undefined,
161
+ creationTime: response.CreateTime ? new Date(response.CreateTime * 1000) : undefined,
153
162
  encryptedCrypto: {
154
163
  armoredKey: response.Key,
155
164
  armoredPassphrase: response.Passphrase,
156
165
  armoredPassphraseSignature: response.PassphraseSignature,
157
166
  },
158
- membership: response.Memberships?.[0] ? {
159
- memberUid: makeMemberUid(response.ShareID, response.Memberships[0].MemberID),
160
- } : undefined,
167
+ membership: response.Memberships?.[0]
168
+ ? {
169
+ memberUid: makeMemberUid(response.ShareID, response.Memberships[0].MemberID),
170
+ }
171
+ : undefined,
161
172
  type: convertShareTypeNumberToEnum(response.Type),
162
173
  };
163
174
  }
@@ -1,6 +1,6 @@
1
- import { MemoryCache } from "../../cache";
2
- import { getMockLogger } from "../../tests/logger";
3
- import { SharesCache } from "./cache";
1
+ import { MemoryCache } from '../../cache';
2
+ import { getMockLogger } from '../../tests/logger';
3
+ import { SharesCache } from './cache';
4
4
 
5
5
  describe('sharesCache', () => {
6
6
  let memoryCache: MemoryCache<string>;
@@ -45,7 +45,9 @@ describe('sharesCache', () => {
45
45
  await cache.getVolume('badObject');
46
46
  fail('Should have thrown an error');
47
47
  } catch (error) {
48
- expect(`${error}`).toBe('Error: Failed to deserialize volume: Unexpected token \'a\', \"aaa\" is not valid JSON');
48
+ expect(`${error}`).toBe(
49
+ 'Error: Failed to deserialize volume: Unexpected token \'a\', \"aaa\" is not valid JSON',
50
+ );
49
51
  }
50
52
 
51
53
  try {