@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,14 +1,19 @@
1
- import { ProtonDriveEntitiesCache, Logger } from "../../interface";
2
- import { getErrorMessage } from "../errors";
3
- import { Volume } from "./interface";
1
+ import { ProtonDriveEntitiesCache, Logger } from '../../interface';
2
+ import { getErrorMessage } from '../errors';
3
+ import { Volume } from './interface';
4
4
 
5
5
  /**
6
6
  * Provides caching for shares and volume metadata.
7
- *
7
+ *
8
8
  * The cache is responsible for serialising and deserialising volume metadata.
9
+ *
10
+ * This is only intended for the owner's main volume. There is no cache invalidation.
9
11
  */
10
12
  export class SharesCache {
11
- constructor(private logger: Logger, private driveCache: ProtonDriveEntitiesCache) {
13
+ constructor(
14
+ private logger: Logger,
15
+ private driveCache: ProtonDriveEntitiesCache,
16
+ ) {
12
17
  this.logger = logger;
13
18
  this.driveCache = driveCache;
14
19
  }
@@ -49,16 +54,22 @@ function serializeVolume(volume: Volume) {
49
54
  }
50
55
 
51
56
  function deserializeVolume(shareData: string): Volume {
52
- const volume = JSON.parse(shareData);
53
- if (
54
- !volume || typeof volume !== 'object' ||
55
- !volume.volumeId || typeof volume.volumeId !== 'string' ||
56
- !volume.shareId || typeof volume.shareId !== 'string' ||
57
- !volume.rootNodeId || typeof volume.rootNodeId !== 'string' ||
58
- !volume.creatorEmail || typeof volume.creatorEmail !== 'string' ||
59
- !volume.addressId || typeof volume.addressId !== 'string'
57
+ const volume = JSON.parse(shareData);
58
+ if (
59
+ !volume ||
60
+ typeof volume !== 'object' ||
61
+ !volume.volumeId ||
62
+ typeof volume.volumeId !== 'string' ||
63
+ !volume.shareId ||
64
+ typeof volume.shareId !== 'string' ||
65
+ !volume.rootNodeId ||
66
+ typeof volume.rootNodeId !== 'string' ||
67
+ !volume.creatorEmail ||
68
+ typeof volume.creatorEmail !== 'string' ||
69
+ !volume.addressId ||
70
+ typeof volume.addressId !== 'string'
60
71
  ) {
61
72
  throw new Error('Invalid volume data');
62
73
  }
63
74
  return volume;
64
- }
75
+ }
@@ -1,19 +1,19 @@
1
- import { PrivateKey, SessionKey } from "../../crypto";
2
- import { MemoryCache } from "../../cache";
3
- import { CachedCryptoMaterial } from "../../interface";
4
- import { SharesCryptoCache } from "./cryptoCache";
1
+ import { PrivateKey, SessionKey } from '../../crypto';
2
+ import { MemoryCache } from '../../cache';
3
+ import { CachedCryptoMaterial } from '../../interface';
4
+ import { SharesCryptoCache } from './cryptoCache';
5
5
 
6
6
  describe('sharesCryptoCache', () => {
7
7
  let memoryCache: MemoryCache<CachedCryptoMaterial>;
8
8
  let cache: SharesCryptoCache;
9
9
 
10
10
  const generatePrivateKey = (name: string) => {
11
- return name as unknown as PrivateKey
12
- }
11
+ return name as unknown as PrivateKey;
12
+ };
13
13
 
14
14
  const generateSessionKey = (name: string) => {
15
- return name as unknown as SessionKey
16
- }
15
+ return name as unknown as SessionKey;
16
+ };
17
17
 
18
18
  beforeEach(() => {
19
19
  memoryCache = new MemoryCache();
@@ -32,8 +32,14 @@ describe('sharesCryptoCache', () => {
32
32
 
33
33
  it('should replace and retrieve new keys', async () => {
34
34
  const shareId = 'newShareId';
35
- const keys1 = { key: generatePrivateKey('privateKey1'), passphraseSessionKey: generateSessionKey('sessionKey1') };
36
- const keys2 = { key: generatePrivateKey('privateKey2'), passphraseSessionKey: generateSessionKey('sessionKey2') };
35
+ const keys1 = {
36
+ key: generatePrivateKey('privateKey1'),
37
+ passphraseSessionKey: generateSessionKey('sessionKey1'),
38
+ };
39
+ const keys2 = {
40
+ key: generatePrivateKey('privateKey2'),
41
+ passphraseSessionKey: generateSessionKey('sessionKey2'),
42
+ };
37
43
 
38
44
  await cache.setShareKey(shareId, keys1);
39
45
  await cache.setShareKey(shareId, keys2);
@@ -67,4 +73,4 @@ describe('sharesCryptoCache', () => {
67
73
  expect(`${error}`).toBe('Error: Entity not found');
68
74
  }
69
75
  });
70
- });
76
+ });
@@ -1,12 +1,12 @@
1
- import { ProtonDriveCryptoCache } from "../../interface";
2
- import { DecryptedShareKey } from "./interface";
1
+ import { ProtonDriveCryptoCache } from '../../interface';
2
+ import { DecryptedShareKey } from './interface';
3
3
 
4
4
  /**
5
5
  * Provides caching for share crypto material.
6
- *
6
+ *
7
7
  * The cache is responsible for serialising and deserialising share
8
8
  * crypto material.
9
- *
9
+ *
10
10
  * The share crypto materials are cached so the updates to the root
11
11
  * nodes can be decrypted without the need to fetch the share keys
12
12
  * from the server again. Otherwise the rest of the tree requires
@@ -1,10 +1,10 @@
1
- import { DriveCrypto, PrivateKey, SessionKey, VERIFICATION_STATUS } from "../../crypto";
2
- import { ProtonDriveAccount, ProtonDriveTelemetry } from "../../interface";
3
- import { getMockTelemetry } from "../../tests/telemetry";
4
- import { EncryptedRootShare, ShareType } from "./interface";
5
- import { SharesCryptoService } from "./cryptoService";
1
+ import { DriveCrypto, PrivateKey, SessionKey, VERIFICATION_STATUS } from '../../crypto';
2
+ import { ProtonDriveAccount, ProtonDriveTelemetry } from '../../interface';
3
+ import { getMockTelemetry } from '../../tests/telemetry';
4
+ import { EncryptedRootShare, ShareType } from './interface';
5
+ import { SharesCryptoService } from './cryptoService';
6
6
 
7
- describe("SharesCryptoService", () => {
7
+ describe('SharesCryptoService', () => {
8
8
  let telemetry: ProtonDriveTelemetry;
9
9
  let driveCrypto: DriveCrypto;
10
10
  let account: ProtonDriveAccount;
@@ -14,89 +14,89 @@ describe("SharesCryptoService", () => {
14
14
  telemetry = getMockTelemetry();
15
15
  // @ts-expect-error No need to implement all methods for mocking
16
16
  driveCrypto = {
17
- decryptKey: jest.fn(async () => Promise.resolve({
18
- passphrase: "pass",
19
- key: "decryptedKey" as unknown as PrivateKey,
20
- passphraseSessionKey: "sessionKey" as unknown as SessionKey,
21
- verified: VERIFICATION_STATUS.SIGNED_AND_VALID,
22
- })),
17
+ decryptKey: jest.fn(async () =>
18
+ Promise.resolve({
19
+ passphrase: 'pass',
20
+ key: 'decryptedKey' as unknown as PrivateKey,
21
+ passphraseSessionKey: 'sessionKey' as unknown as SessionKey,
22
+ verified: VERIFICATION_STATUS.SIGNED_AND_VALID,
23
+ }),
24
+ ),
23
25
  };
24
26
  account = {
25
27
  // @ts-expect-error No need to implement full response for mocking
26
28
  getOwnAddress: jest.fn(async () => ({
27
- keys: [{ key: "addressKey" as unknown as PrivateKey }],
29
+ keys: [{ key: 'addressKey' as unknown as PrivateKey }],
28
30
  })),
29
31
  getPublicKeys: jest.fn(async () => []),
30
32
  };
31
33
  cryptoService = new SharesCryptoService(telemetry, driveCrypto, account);
32
34
  });
33
35
 
34
- it("should decrypt root share", async () => {
35
- const result = await cryptoService.decryptRootShare(
36
- {
37
- shareId: "shareId",
38
- addressId: "addressId",
39
- creatorEmail: "signatureEmail",
40
- encryptedCrypto: {
41
- armoredKey: "armoredKey",
42
- armoredPassphrase: "armoredPassphrase",
43
- armoredPassphraseSignature: "armoredPassphraseSignature",
44
- },
45
- type: ShareType.Main,
46
- } as EncryptedRootShare,
47
- );
36
+ it('should decrypt root share', async () => {
37
+ const result = await cryptoService.decryptRootShare({
38
+ shareId: 'shareId',
39
+ addressId: 'addressId',
40
+ creatorEmail: 'signatureEmail',
41
+ encryptedCrypto: {
42
+ armoredKey: 'armoredKey',
43
+ armoredPassphrase: 'armoredPassphrase',
44
+ armoredPassphraseSignature: 'armoredPassphraseSignature',
45
+ },
46
+ type: ShareType.Main,
47
+ } as EncryptedRootShare);
48
48
 
49
49
  expect(result).toMatchObject({
50
50
  share: {
51
- shareId: "shareId",
52
- author: { ok: true, value: "signatureEmail" },
51
+ shareId: 'shareId',
52
+ author: { ok: true, value: 'signatureEmail' },
53
53
  },
54
54
  key: {
55
- key: "decryptedKey",
56
- passphraseSessionKey: "sessionKey",
55
+ key: 'decryptedKey',
56
+ passphraseSessionKey: 'sessionKey',
57
57
  },
58
58
  });
59
59
 
60
- expect(account.getOwnAddress).toHaveBeenCalledWith("addressId");
61
- expect(account.getPublicKeys).toHaveBeenCalledWith("signatureEmail");
60
+ expect(account.getOwnAddress).toHaveBeenCalledWith('addressId');
61
+ expect(account.getPublicKeys).toHaveBeenCalledWith('signatureEmail');
62
62
  expect(telemetry.logEvent).not.toHaveBeenCalled();
63
63
  });
64
64
 
65
- it("should decrypt root share with signiture verification error", async () => {
66
- driveCrypto.decryptKey = jest.fn(async () => Promise.resolve({
67
- passphrase: "pass",
68
- key: "decryptedKey" as unknown as PrivateKey,
69
- passphraseSessionKey: "sessionKey" as unknown as SessionKey,
70
- verified: VERIFICATION_STATUS.NOT_SIGNED,
71
- }));
72
-
73
- const result = await cryptoService.decryptRootShare(
74
- {
75
- shareId: "shareId",
76
- addressId: "addressId",
77
- creatorEmail: "signatureEmail",
78
- encryptedCrypto: {
79
- armoredKey: "armoredKey",
80
- armoredPassphrase: "armoredPassphrase",
81
- armoredPassphraseSignature: "armoredPassphraseSignature",
82
- },
83
- type: ShareType.Main,
84
- } as EncryptedRootShare,
65
+ it('should decrypt root share with signiture verification error', async () => {
66
+ driveCrypto.decryptKey = jest.fn(async () =>
67
+ Promise.resolve({
68
+ passphrase: 'pass',
69
+ key: 'decryptedKey' as unknown as PrivateKey,
70
+ passphraseSessionKey: 'sessionKey' as unknown as SessionKey,
71
+ verified: VERIFICATION_STATUS.NOT_SIGNED,
72
+ }),
85
73
  );
86
74
 
75
+ const result = await cryptoService.decryptRootShare({
76
+ shareId: 'shareId',
77
+ addressId: 'addressId',
78
+ creatorEmail: 'signatureEmail',
79
+ encryptedCrypto: {
80
+ armoredKey: 'armoredKey',
81
+ armoredPassphrase: 'armoredPassphrase',
82
+ armoredPassphraseSignature: 'armoredPassphraseSignature',
83
+ },
84
+ type: ShareType.Main,
85
+ } as EncryptedRootShare);
86
+
87
87
  expect(result).toMatchObject({
88
88
  share: {
89
- shareId: "shareId",
90
- author: { ok: false, error: { claimedAuthor: "signatureEmail", error: "Missing signature" } },
89
+ shareId: 'shareId',
90
+ author: { ok: false, error: { claimedAuthor: 'signatureEmail', error: 'Missing signature' } },
91
91
  },
92
92
  key: {
93
- key: "decryptedKey",
94
- passphraseSessionKey: "sessionKey",
93
+ key: 'decryptedKey',
94
+ passphraseSessionKey: 'sessionKey',
95
95
  },
96
96
  });
97
97
 
98
- expect(account.getOwnAddress).toHaveBeenCalledWith("addressId");
99
- expect(account.getPublicKeys).toHaveBeenCalledWith("signatureEmail");
98
+ expect(account.getOwnAddress).toHaveBeenCalledWith('addressId');
99
+ expect(account.getPublicKeys).toHaveBeenCalledWith('signatureEmail');
100
100
  expect(telemetry.logEvent).toHaveBeenCalledWith({
101
101
  eventName: 'verificationError',
102
102
  volumeType: 'own_volume',
@@ -106,23 +106,21 @@ describe("SharesCryptoService", () => {
106
106
  });
107
107
  });
108
108
 
109
- it("should handle decrypt issue of root share", async () => {
110
- const error = new Error("Decryption error");
109
+ it('should handle decrypt issue of root share', async () => {
110
+ const error = new Error('Decryption error');
111
111
  driveCrypto.decryptKey = jest.fn(async () => Promise.reject(error));
112
112
 
113
- const result = cryptoService.decryptRootShare(
114
- {
115
- shareId: "shareId",
116
- addressId: "addressId",
117
- creatorEmail: "signatureEmail",
118
- encryptedCrypto: {
119
- armoredKey: "armoredKey",
120
- armoredPassphrase: "armoredPassphrase",
121
- armoredPassphraseSignature: "armoredPassphraseSignature",
122
- },
123
- type: ShareType.Main,
124
- } as EncryptedRootShare,
125
- );
113
+ const result = cryptoService.decryptRootShare({
114
+ shareId: 'shareId',
115
+ addressId: 'addressId',
116
+ creatorEmail: 'signatureEmail',
117
+ encryptedCrypto: {
118
+ armoredKey: 'armoredKey',
119
+ armoredPassphrase: 'armoredPassphrase',
120
+ armoredPassphraseSignature: 'armoredPassphraseSignature',
121
+ },
122
+ type: ShareType.Main,
123
+ } as EncryptedRootShare);
126
124
 
127
125
  await expect(result).rejects.toThrow(error);
128
126
 
@@ -1,16 +1,31 @@
1
- import { ProtonDriveAccount, resultOk, resultError, Result, UnverifiedAuthorError, ProtonDriveTelemetry, Logger, MetricVolumeType } from "../../interface";
2
- import { DriveCrypto, PrivateKey, VERIFICATION_STATUS } from "../../crypto";
3
- import { getVerificationMessage } from "../errors";
4
- import { EncryptedRootShare, DecryptedRootShare, EncryptedShareCrypto, DecryptedShareKey, ShareType } from "./interface";
1
+ import {
2
+ ProtonDriveAccount,
3
+ resultOk,
4
+ resultError,
5
+ Result,
6
+ UnverifiedAuthorError,
7
+ ProtonDriveTelemetry,
8
+ Logger,
9
+ MetricVolumeType,
10
+ } from '../../interface';
11
+ import { DriveCrypto, PrivateKey, VERIFICATION_STATUS } from '../../crypto';
12
+ import { getVerificationMessage } from '../errors';
13
+ import {
14
+ EncryptedRootShare,
15
+ DecryptedRootShare,
16
+ EncryptedShareCrypto,
17
+ DecryptedShareKey,
18
+ ShareType,
19
+ } from './interface';
5
20
 
6
21
  /**
7
22
  * Provides crypto operations for share keys.
8
- *
23
+ *
9
24
  * The share crypto service is responsible for encrypting and decrypting share
10
25
  * keys. It should export high-level actions only, such as "decrypt share"
11
26
  * instead of low-level operations like "decrypt share passphrase". Low-level
12
27
  * operations should be kept private to the module.
13
- *
28
+ *
14
29
  * The service owns the logic to switch between old and new crypto model.
15
30
  */
16
31
  export class SharesCryptoService {
@@ -19,7 +34,11 @@ export class SharesCryptoService {
19
34
  private reportedDecryptionErrors = new Set<string>();
20
35
  private reportedVerificationErrors = new Set<string>();
21
36
 
22
- constructor(private telemetry: ProtonDriveTelemetry, private driveCrypto: DriveCrypto, private account: ProtonDriveAccount) {
37
+ constructor(
38
+ private telemetry: ProtonDriveTelemetry,
39
+ private driveCrypto: DriveCrypto,
40
+ private account: ProtonDriveAccount,
41
+ ) {
23
42
  this.telemetry = telemetry;
24
43
  this.logger = telemetry.getLogger('shares-crypto');
25
44
  this.driveCrypto = driveCrypto;
@@ -27,16 +46,21 @@ export class SharesCryptoService {
27
46
  }
28
47
 
29
48
  async generateVolumeBootstrap(addressKey: PrivateKey): Promise<{
30
- shareKey: { encrypted: EncryptedShareCrypto, decrypted: DecryptedShareKey },
49
+ shareKey: { encrypted: EncryptedShareCrypto; decrypted: DecryptedShareKey };
31
50
  rootNode: {
32
- key: { encrypted: EncryptedShareCrypto, decrypted: DecryptedShareKey },
33
- encryptedName: string,
34
- armoredHashKey: string,
35
- }
51
+ key: { encrypted: EncryptedShareCrypto; decrypted: DecryptedShareKey };
52
+ encryptedName: string;
53
+ armoredHashKey: string;
54
+ };
36
55
  }> {
37
56
  const shareKey = await this.driveCrypto.generateKey([addressKey], addressKey);
38
57
  const rootNodeKey = await this.driveCrypto.generateKey([shareKey.decrypted.key], addressKey);
39
- const { armoredNodeName } = await this.driveCrypto.encryptNodeName('root', undefined, shareKey.decrypted.key, addressKey);
58
+ const { armoredNodeName } = await this.driveCrypto.encryptNodeName(
59
+ 'root',
60
+ undefined,
61
+ shareKey.decrypted.key,
62
+ addressKey,
63
+ );
40
64
  const { armoredHashKey } = await this.driveCrypto.generateHashKey(rootNodeKey.decrypted.key);
41
65
  return {
42
66
  shareKey,
@@ -45,10 +69,10 @@ export class SharesCryptoService {
45
69
  encryptedName: armoredNodeName,
46
70
  armoredHashKey,
47
71
  },
48
- }
72
+ };
49
73
  }
50
74
 
51
- async decryptRootShare(share: EncryptedRootShare): Promise<{ share: DecryptedRootShare, key: DecryptedShareKey }> {
75
+ async decryptRootShare(share: EncryptedRootShare): Promise<{ share: DecryptedRootShare; key: DecryptedShareKey }> {
52
76
  const { keys: addressKeys } = await this.account.getOwnAddress(share.addressId);
53
77
  const addressPublicKeys = await this.account.getPublicKeys(share.creatorEmail);
54
78
 
@@ -60,7 +84,7 @@ export class SharesCryptoService {
60
84
  share.encryptedCrypto.armoredPassphraseSignature,
61
85
  addressKeys.map(({ key }) => key),
62
86
  addressPublicKeys,
63
- )
87
+ );
64
88
  key = result.key;
65
89
  passphraseSessionKey = result.passphraseSessionKey;
66
90
  verified = result.verified;
@@ -69,12 +93,13 @@ export class SharesCryptoService {
69
93
  throw error;
70
94
  }
71
95
 
72
- const author: Result<string, UnverifiedAuthorError> = verified === VERIFICATION_STATUS.SIGNED_AND_VALID
73
- ? resultOk(share.creatorEmail)
74
- : resultError({
75
- claimedAuthor: share.creatorEmail,
76
- error: getVerificationMessage(verified),
77
- });
96
+ const author: Result<string, UnverifiedAuthorError> =
97
+ verified === VERIFICATION_STATUS.SIGNED_AND_VALID
98
+ ? resultOk(share.creatorEmail)
99
+ : resultError({
100
+ claimedAuthor: share.creatorEmail,
101
+ error: getVerificationMessage(verified),
102
+ });
78
103
 
79
104
  if (!author.ok) {
80
105
  await this.reportVerificationError(share);
@@ -89,7 +114,7 @@ export class SharesCryptoService {
89
114
  key,
90
115
  passphraseSessionKey,
91
116
  },
92
- }
117
+ };
93
118
  }
94
119
 
95
120
  private reportDecryptionError(share: EncryptedRootShare, error?: unknown) {
@@ -1,20 +1,25 @@
1
- import { ProtonDriveEntitiesCache, ProtonDriveCryptoCache, ProtonDriveAccount, ProtonDriveTelemetry } from "../../interface";
1
+ import {
2
+ ProtonDriveEntitiesCache,
3
+ ProtonDriveCryptoCache,
4
+ ProtonDriveAccount,
5
+ ProtonDriveTelemetry,
6
+ } from '../../interface';
2
7
  import { DriveCrypto } from '../../crypto';
3
- import { DriveAPIService } from "../apiService";
4
- import { SharesAPIService } from "./apiService";
5
- import { SharesCryptoCache } from "./cryptoCache";
6
- import { SharesCache } from "./cache";
7
- import { SharesCryptoService } from "./cryptoService";
8
- import { SharesManager } from "./manager";
8
+ import { DriveAPIService } from '../apiService';
9
+ import { SharesAPIService } from './apiService';
10
+ import { SharesCryptoCache } from './cryptoCache';
11
+ import { SharesCache } from './cache';
12
+ import { SharesCryptoService } from './cryptoService';
13
+ import { SharesManager } from './manager';
9
14
 
10
- export type { EncryptedShare } from "./interface";
15
+ export type { EncryptedShare } from './interface';
11
16
 
12
17
  /**
13
18
  * Provides facade for the whole shares module.
14
- *
19
+ *
15
20
  * The shares module is responsible for handling shares metadata, including
16
21
  * API communication, encryption, decryption, caching, and event handling.
17
- *
22
+ *
18
23
  * This facade provides internal interface that other modules can use to
19
24
  * interact with the shares.
20
25
  */
@@ -30,6 +35,13 @@ export function initSharesModule(
30
35
  const cache = new SharesCache(telemetry.getLogger('shares-cache'), driveEntitiesCache);
31
36
  const cryptoCache = new SharesCryptoCache(driveCryptoCache);
32
37
  const cryptoService = new SharesCryptoService(telemetry, crypto, account);
33
- const sharesManager = new SharesManager(telemetry.getLogger('shares'), api, cache, cryptoCache, cryptoService, account);
38
+ const sharesManager = new SharesManager(
39
+ telemetry.getLogger('shares'),
40
+ api,
41
+ cache,
42
+ cryptoCache,
43
+ cryptoService,
44
+ account,
45
+ );
34
46
  return sharesManager;
35
47
  }
@@ -1,13 +1,13 @@
1
- import { PrivateKey, SessionKey } from "../../crypto";
2
- import { Result, UnverifiedAuthorError } from "../../interface";
1
+ import { PrivateKey, SessionKey } from '../../crypto';
2
+ import { Result, UnverifiedAuthorError } from '../../interface';
3
3
 
4
4
  /**
5
5
  * Internal interface providing basic identification of volume and its root
6
6
  * share and node.
7
- *
7
+ *
8
8
  * No interface should inherit from this, this is only for composition to
9
9
  * create basic volume or share interfaces.
10
- *
10
+ *
11
11
  * Volumes do not have necessarily share or node, but we want to always
12
12
  * know what is the root share or node, thus we want to keep this for both
13
13
  * volumes or any type of share.
@@ -21,7 +21,7 @@ export interface VolumeShareNodeIDs {
21
21
  export type Volume = {
22
22
  /**
23
23
  * Creator email and address ID come from the default share.
24
- *
24
+ *
25
25
  * The idea is to keep this information synced, so whenever we check
26
26
  * cached volume information, we have creator details at hand for any
27
27
  * verification checks or creation needs.
@@ -62,7 +62,7 @@ interface BaseRootShare extends BaseShare {
62
62
 
63
63
  /**
64
64
  * Interface used only internaly in the shares module.
65
- *
65
+ *
66
66
  * Outside of the module, the decrypted share interface should be used.
67
67
  */
68
68
  export interface EncryptedShare extends BaseShare {
@@ -77,7 +77,7 @@ interface ShareMembership {
77
77
 
78
78
  /**
79
79
  * Interface used only internaly in the shares module.
80
- *
80
+ *
81
81
  * Outside of the module, the decrypted share interface should be used.
82
82
  */
83
83
  export interface EncryptedRootShare extends BaseRootShare {
@@ -89,7 +89,7 @@ export interface EncryptedRootShare extends BaseRootShare {
89
89
  * Interface holding decrypted share metadata.
90
90
  */
91
91
  export interface DecryptedRootShare extends BaseRootShare {
92
- author: Result<string, UnverifiedAuthorError>,
92
+ author: Result<string, UnverifiedAuthorError>;
93
93
  }
94
94
 
95
95
  export interface EncryptedShareCrypto {