@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,13 +1,25 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { SessionKey } from "../../crypto";
4
- import { ValidationError } from "../../errors";
5
- import { Logger, MemberRole, ShareNodeSettings, UnshareNodeSettings, ShareResult, ProtonInvitation, NonProtonInvitation, Member, resultOk, ProtonDriveAccount, SharePublicLinkSettingsObject } from "../../interface";
6
- import { splitNodeUid } from "../uids";
3
+ import { SessionKey } from '../../crypto';
4
+ import { ValidationError } from '../../errors';
5
+ import {
6
+ Logger,
7
+ MemberRole,
8
+ ShareNodeSettings,
9
+ UnshareNodeSettings,
10
+ ShareResult,
11
+ ProtonInvitation,
12
+ NonProtonInvitation,
13
+ Member,
14
+ resultOk,
15
+ ProtonDriveAccount,
16
+ SharePublicLinkSettingsObject,
17
+ } from '../../interface';
18
+ import { splitNodeUid } from '../uids';
7
19
  import { getErrorMessage } from '../errors';
8
- import { SharingAPIService } from "./apiService";
9
- import { PUBLIC_LINK_GENERATED_PASSWORD_LENGTH, SharingCryptoService } from "./cryptoService";
10
- import { SharesService, NodesService, NodesEvents, ShareResultWithCreatorEmail, PublicLinkWithCreatorEmail } from "./interface";
20
+ import { SharingAPIService } from './apiService';
21
+ import { PUBLIC_LINK_GENERATED_PASSWORD_LENGTH, SharingCryptoService } from './cryptoService';
22
+ import { SharesService, NodesService, ShareResultWithCreatorEmail, PublicLinkWithCreatorEmail } from './interface';
11
23
 
12
24
  interface InternalShareResult extends ShareResultWithCreatorEmail {
13
25
  share: Share;
@@ -40,7 +52,6 @@ export class SharingManagement {
40
52
  private account: ProtonDriveAccount,
41
53
  private sharesService: SharesService,
42
54
  private nodesService: NodesService,
43
- private nodesEvents: NodesEvents,
44
55
  ) {
45
56
  this.logger = logger;
46
57
  this.apiService = apiService;
@@ -48,7 +59,6 @@ export class SharingManagement {
48
59
  this.account = account;
49
60
  this.sharesService = sharesService;
50
61
  this.nodesService = nodesService;
51
- this.nodesEvents = nodesEvents;
52
62
  }
53
63
 
54
64
  async getSharingInfo(nodeUid: string): Promise<ShareResultWithCreatorEmail | undefined> {
@@ -69,24 +79,24 @@ export class SharingManagement {
69
79
  nonProtonInvitations,
70
80
  members,
71
81
  publicLink,
72
- }
82
+ };
73
83
  }
74
84
 
75
- private async* iterateShareInvitations(shareId: string): AsyncGenerator<ProtonInvitation> {
85
+ private async *iterateShareInvitations(shareId: string): AsyncGenerator<ProtonInvitation> {
76
86
  const invitations = await this.apiService.getShareInvitations(shareId);
77
87
  for (const invitation of invitations) {
78
88
  yield this.cryptoService.decryptInvitation(invitation);
79
89
  }
80
90
  }
81
91
 
82
- private async* iterateShareExternalInvitations(shareId: string): AsyncGenerator<NonProtonInvitation> {
92
+ private async *iterateShareExternalInvitations(shareId: string): AsyncGenerator<NonProtonInvitation> {
83
93
  const invitations = await this.apiService.getShareExternalInvitations(shareId);
84
94
  for (const invitation of invitations) {
85
95
  yield this.cryptoService.decryptExternalInvitation(invitation);
86
96
  }
87
97
  }
88
98
 
89
- private async* iterateShareMembers(shareId: string): AsyncGenerator<Member> {
99
+ private async *iterateShareMembers(shareId: string): AsyncGenerator<Member> {
90
100
  const members = await this.apiService.getShareMembers(shareId);
91
101
  for (const member of members) {
92
102
  yield this.cryptoService.decryptMember(member);
@@ -108,9 +118,7 @@ export class SharingManagement {
108
118
  const nonProtonUsers = [];
109
119
  if (settings.users) {
110
120
  for (const user of settings.users) {
111
- const { email, role } = typeof user === "string"
112
- ? { email: user, role: MemberRole.Viewer }
113
- : user;
121
+ const { email, role } = typeof user === 'string' ? { email: user, role: MemberRole.Viewer } : user;
114
122
  const isProtonUser = await this.account.hasProtonAccount(email);
115
123
  if (isProtonUser) {
116
124
  protonUsers.push({ email, role });
@@ -122,7 +130,11 @@ export class SharingManagement {
122
130
 
123
131
  // Check if expiration date is in the past before creating share
124
132
  // so if this fails, we don't create empty share.
125
- if (typeof settings.publicLink === 'object' && settings.publicLink.expiration && settings.publicLink.expiration < new Date()) {
133
+ if (
134
+ typeof settings.publicLink === 'object' &&
135
+ settings.publicLink.expiration &&
136
+ settings.publicLink.expiration < new Date()
137
+ ) {
126
138
  throw new ValidationError(c('Error').t`Expiration date cannot be in the past`);
127
139
  }
128
140
 
@@ -143,12 +155,14 @@ export class SharingManagement {
143
155
  const emailOptions: EmailOptions = {
144
156
  message: settings.emailOptions?.message,
145
157
  nodeName: settings.emailOptions?.includeNodeName ? currentSharing.nodeName : undefined,
146
- }
158
+ };
147
159
 
148
160
  for (const user of protonUsers) {
149
161
  const { email, role } = user;
150
162
 
151
- const existingInvitation = currentSharing.protonInvitations.find((invitation) => invitation.inviteeEmail === email);
163
+ const existingInvitation = currentSharing.protonInvitations.find(
164
+ (invitation) => invitation.inviteeEmail === email,
165
+ );
152
166
  if (existingInvitation) {
153
167
  if (existingInvitation.role === role) {
154
168
  this.logger.info(`Invitation for ${email} already exists with role ${role} to node ${nodeUid}`);
@@ -180,13 +194,19 @@ export class SharingManagement {
180
194
  for (const user of nonProtonUsers) {
181
195
  const { email, role } = user;
182
196
 
183
- const existingExternalInvitation = currentSharing.nonProtonInvitations.find((invitation) => invitation.inviteeEmail === email);
197
+ const existingExternalInvitation = currentSharing.nonProtonInvitations.find(
198
+ (invitation) => invitation.inviteeEmail === email,
199
+ );
184
200
  if (existingExternalInvitation) {
185
201
  if (existingExternalInvitation.role === role) {
186
- this.logger.info(`External invitation for ${email} already exists with role ${role} to node ${nodeUid}`);
202
+ this.logger.info(
203
+ `External invitation for ${email} already exists with role ${role} to node ${nodeUid}`,
204
+ );
187
205
  continue;
188
206
  }
189
- this.logger.info(`External invitation for ${email} already exists, updating role to ${role} to node ${nodeUid}`);
207
+ this.logger.info(
208
+ `External invitation for ${email} already exists, updating role to ${role} to node ${nodeUid}`,
209
+ );
190
210
  await this.updateExternalInvitation(existingExternalInvitation.uid, role);
191
211
  existingExternalInvitation.role = role;
192
212
  continue;
@@ -210,13 +230,15 @@ export class SharingManagement {
210
230
  }
211
231
 
212
232
  if (settings.publicLink) {
213
- const options = settings.publicLink === true
214
- ? { role: MemberRole.Viewer }
215
- : settings.publicLink;
233
+ const options = settings.publicLink === true ? { role: MemberRole.Viewer } : settings.publicLink;
216
234
 
217
235
  if (currentSharing.publicLink) {
218
236
  this.logger.info(`Updating public link with role ${options.role} to node ${nodeUid}`);
219
- currentSharing.publicLink = await this.updateSharedLink(currentSharing.share, currentSharing.publicLink, options);
237
+ currentSharing.publicLink = await this.updateSharedLink(
238
+ currentSharing.share,
239
+ currentSharing.publicLink,
240
+ options,
241
+ );
220
242
  } else {
221
243
  this.logger.info(`Sharing via public link with role ${options.role} to node ${nodeUid}`);
222
244
  currentSharing.publicLink = await this.shareViaLink(currentSharing.share, options);
@@ -239,24 +261,32 @@ export class SharingManagement {
239
261
 
240
262
  if (!settings) {
241
263
  this.logger.info(`Unsharing node ${nodeUid}`);
242
- await this.deleteShare(nodeUid, currentSharing.share.shareId);
264
+ await this.deleteShare(currentSharing.share.shareId, nodeUid);
243
265
  return;
244
266
  }
245
267
 
246
268
  for (const userEmail of settings.users || []) {
247
- const existingInvitation = currentSharing.protonInvitations.find((invitation) => invitation.inviteeEmail === userEmail);
269
+ const existingInvitation = currentSharing.protonInvitations.find(
270
+ (invitation) => invitation.inviteeEmail === userEmail,
271
+ );
248
272
  if (existingInvitation) {
249
273
  this.logger.info(`Deleting invitation for ${userEmail} to node ${nodeUid}`);
250
274
  await this.deleteInvitation(existingInvitation.uid);
251
- currentSharing.protonInvitations = currentSharing.protonInvitations.filter((invitation) => invitation.uid !== existingInvitation.uid);
275
+ currentSharing.protonInvitations = currentSharing.protonInvitations.filter(
276
+ (invitation) => invitation.uid !== existingInvitation.uid,
277
+ );
252
278
  continue;
253
279
  }
254
280
 
255
- const existingExternalInvitation = currentSharing.nonProtonInvitations.find((invitation) => invitation.inviteeEmail === userEmail);
281
+ const existingExternalInvitation = currentSharing.nonProtonInvitations.find(
282
+ (invitation) => invitation.inviteeEmail === userEmail,
283
+ );
256
284
  if (existingExternalInvitation) {
257
285
  this.logger.info(`Deleting external invitation for ${userEmail} to node ${nodeUid}`);
258
286
  await this.deleteExternalInvitation(existingExternalInvitation.uid);
259
- currentSharing.nonProtonInvitations = currentSharing.nonProtonInvitations.filter((invitation) => invitation.uid !== existingExternalInvitation.uid);
287
+ currentSharing.nonProtonInvitations = currentSharing.nonProtonInvitations.filter(
288
+ (invitation) => invitation.uid !== existingExternalInvitation.uid,
289
+ );
260
290
  continue;
261
291
  }
262
292
 
@@ -293,13 +323,15 @@ export class SharingManagement {
293
323
  // update local state immediately.
294
324
  this.logger.info(`Deleting share ${currentSharing.share.shareId} for node ${nodeUid}`);
295
325
  try {
296
- await this.deleteShare(nodeUid, currentSharing.share.shareId);
326
+ await this.deleteShare(currentSharing.share.shareId, nodeUid);
297
327
  } catch (error: unknown) {
298
328
  // If deleting the share fails, we don't want to throw an error
299
329
  // as it might be a race condition that other client updated
300
330
  // the share and it is not empty.
301
331
  // If share is truly empty, backend will delete it eventually.
302
- this.logger.warn(`Failed to delete share ${currentSharing.share.shareId} for node ${nodeUid}: ${getErrorMessage(error)}`);
332
+ this.logger.warn(
333
+ `Failed to delete share ${currentSharing.share.shareId} for node ${nodeUid}: ${getErrorMessage(error)}`,
334
+ );
303
335
  }
304
336
  return;
305
337
  }
@@ -336,7 +368,7 @@ export class SharingManagement {
336
368
  passphraseSessionKey: passphraseSessionKey,
337
369
  },
338
370
  nodeName: node.name.ok ? node.name.value : node.name.error.name,
339
- }
371
+ };
340
372
  }
341
373
 
342
374
  private async createShare(nodeUid: string): Promise<Share> {
@@ -350,42 +382,47 @@ export class SharingManagement {
350
382
 
351
383
  const nodeKeys = await this.nodesService.getNodePrivateAndSessionKeys(nodeUid);
352
384
  const keys = await this.cryptoService.generateShareKeys(nodeKeys, addressKey);
353
- const shareId = await this.apiService.createStandardShare(
354
- nodeUid,
355
- addressId,
356
- keys.shareKey.encrypted,
357
- {
358
- base64PassphraseKeyPacket: keys.base64PpassphraseKeyPacket,
359
- base64NameKeyPacket: keys.base64NameKeyPacket,
360
- },
361
- );
362
-
363
- await this.nodesEvents.nodeUpdated({ uid: nodeUid, shareId, isShared: true });
364
-
385
+ const shareId = await this.apiService.createStandardShare(nodeUid, addressId, keys.shareKey.encrypted, {
386
+ base64PassphraseKeyPacket: keys.base64PpassphraseKeyPacket,
387
+ base64NameKeyPacket: keys.base64NameKeyPacket,
388
+ });
389
+ await this.nodesService.notifyNodeChanged(nodeUid);
365
390
  return {
366
391
  volumeId,
367
392
  shareId,
368
393
  creatorEmail: email,
369
394
  passphraseSessionKey: keys.shareKey.decrypted.passphraseSessionKey,
370
- }
395
+ };
371
396
  }
372
397
 
373
- private async deleteShare(nodeUid: string, shareId: string): Promise<void> {
398
+ private async deleteShare(shareId: string, nodeUid: string): Promise<void> {
374
399
  await this.apiService.deleteShare(shareId);
375
-
376
- await this.nodesEvents.nodeUpdated({ uid: nodeUid, shareId: undefined, isShared: false });
400
+ await this.nodesService.notifyNodeChanged(nodeUid);
377
401
  }
378
402
 
379
- private async inviteProtonUser(share: Share, inviteeEmail: string, role: MemberRole, emailOptions: EmailOptions): Promise<ProtonInvitation> {
403
+ private async inviteProtonUser(
404
+ share: Share,
405
+ inviteeEmail: string,
406
+ role: MemberRole,
407
+ emailOptions: EmailOptions,
408
+ ): Promise<ProtonInvitation> {
380
409
  const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
381
- const invitationCrypto = await this.cryptoService.encryptInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
410
+ const invitationCrypto = await this.cryptoService.encryptInvitation(
411
+ share.passphraseSessionKey,
412
+ inviter.addressKey,
413
+ inviteeEmail,
414
+ );
382
415
 
383
- const encryptedInvitation = await this.apiService.inviteProtonUser(share.shareId, {
384
- addedByEmail: inviter.email,
385
- inviteeEmail: inviteeEmail,
386
- role,
387
- ...invitationCrypto,
388
- }, emailOptions);
416
+ const encryptedInvitation = await this.apiService.inviteProtonUser(
417
+ share.shareId,
418
+ {
419
+ addedByEmail: inviter.email,
420
+ inviteeEmail: inviteeEmail,
421
+ role,
422
+ ...invitationCrypto,
423
+ },
424
+ emailOptions,
425
+ );
389
426
 
390
427
  return {
391
428
  ...encryptedInvitation,
@@ -409,7 +446,9 @@ export class SharingManagement {
409
446
  return await this.apiService.resendInvitationEmail(protonInvite.uid);
410
447
  }
411
448
 
412
- const nonProtonInvite = currentSharing.nonProtonInvitations.find((invitation) => invitation.uid === invitationUid);
449
+ const nonProtonInvite = currentSharing.nonProtonInvitations.find(
450
+ (invitation) => invitation.uid === invitationUid,
451
+ );
413
452
  if (nonProtonInvite) {
414
453
  return await this.apiService.resendExternalInvitationEmail(nonProtonInvite.uid);
415
454
  }
@@ -421,16 +460,29 @@ export class SharingManagement {
421
460
  await this.apiService.deleteInvitation(invitationUid);
422
461
  }
423
462
 
424
- private async inviteExternalUser(share: Share, inviteeEmail: string, role: MemberRole, emailOptions: EmailOptions): Promise<NonProtonInvitation> {
463
+ private async inviteExternalUser(
464
+ share: Share,
465
+ inviteeEmail: string,
466
+ role: MemberRole,
467
+ emailOptions: EmailOptions,
468
+ ): Promise<NonProtonInvitation> {
425
469
  const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
426
- const invitationCrypto = await this.cryptoService.encryptExternalInvitation(share.passphraseSessionKey, inviter.addressKey, inviteeEmail);
470
+ const invitationCrypto = await this.cryptoService.encryptExternalInvitation(
471
+ share.passphraseSessionKey,
472
+ inviter.addressKey,
473
+ inviteeEmail,
474
+ );
427
475
 
428
- const encryptedInvitation = await this.apiService.inviteExternalUser(share.shareId, {
429
- inviterAddressId: inviter.addressId,
430
- inviteeEmail: inviteeEmail,
431
- role,
432
- base64Signature: invitationCrypto.base64ExternalInvitationSignature,
433
- }, emailOptions);
476
+ const encryptedInvitation = await this.apiService.inviteExternalUser(
477
+ share.shareId,
478
+ {
479
+ inviterAddressId: inviter.addressId,
480
+ inviteeEmail: inviteeEmail,
481
+ role,
482
+ base64Signature: invitationCrypto.base64ExternalInvitationSignature,
483
+ },
484
+ emailOptions,
485
+ );
434
486
 
435
487
  return {
436
488
  uid: encryptedInvitation.uid,
@@ -446,7 +498,6 @@ export class SharingManagement {
446
498
  await this.apiService.updateExternalInvitation(invitationUid, { role });
447
499
  }
448
500
 
449
-
450
501
  private async deleteExternalInvitation(invitationUid: string): Promise<void> {
451
502
  await this.apiService.deleteExternalInvitation(invitationUid);
452
503
  }
@@ -463,13 +514,20 @@ export class SharingManagement {
463
514
  await this.apiService.updateMember(memberUid, { role });
464
515
  }
465
516
 
466
- private async shareViaLink(share: Share, options: SharePublicLinkSettingsObject): Promise<PublicLinkWithCreatorEmail> {
517
+ private async shareViaLink(
518
+ share: Share,
519
+ options: SharePublicLinkSettingsObject,
520
+ ): Promise<PublicLinkWithCreatorEmail> {
467
521
  const { email: creatorEmail } = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
468
522
 
469
523
  const generatedPassword = await this.cryptoService.generatePublicLinkPassword();
470
524
  const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
471
525
 
472
- const { crypto, srp } = await this.cryptoService.encryptPublicLink(creatorEmail, share.passphraseSessionKey, password);
526
+ const { crypto, srp } = await this.cryptoService.encryptPublicLink(
527
+ creatorEmail,
528
+ share.passphraseSessionKey,
529
+ password,
530
+ );
473
531
  const publicLink = await this.apiService.createPublicLink(share.shareId, {
474
532
  creatorEmail,
475
533
  role: options.role,
@@ -486,19 +544,30 @@ export class SharingManagement {
486
544
  url: `${publicLink.publicUrl}#${generatedPassword}`,
487
545
  customPassword: options.customPassword,
488
546
  expirationTime: options.expiration,
547
+ numberOfInitializedDownloads: 0,
489
548
  creatorEmail,
490
- }
549
+ };
491
550
  }
492
551
 
493
- private async updateSharedLink(share: Share, publicLink: PublicLinkWithCreatorEmail, options: SharePublicLinkSettingsObject): Promise<PublicLinkWithCreatorEmail> {
552
+ private async updateSharedLink(
553
+ share: Share,
554
+ publicLink: PublicLinkWithCreatorEmail,
555
+ options: SharePublicLinkSettingsObject,
556
+ ): Promise<PublicLinkWithCreatorEmail> {
494
557
  const generatedPassword = publicLink.url.split('#')[1];
495
558
  // Legacy public links didn't have generated password or had various lengths.
496
559
  if (!generatedPassword || generatedPassword.length !== PUBLIC_LINK_GENERATED_PASSWORD_LENGTH) {
497
- throw new ValidationError(c('Error').t`Legacy public link cannot be updated. Please re-create a new public link.`);
560
+ throw new ValidationError(
561
+ c('Error').t`Legacy public link cannot be updated. Please re-create a new public link.`,
562
+ );
498
563
  }
499
564
  const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
500
565
 
501
- const { crypto, srp } = await this.cryptoService.encryptPublicLink(publicLink.creatorEmail, share.passphraseSessionKey, password);
566
+ const { crypto, srp } = await this.cryptoService.encryptPublicLink(
567
+ publicLink.creatorEmail,
568
+ share.passphraseSessionKey,
569
+ password,
570
+ );
502
571
  await this.apiService.updatePublicLink(publicLink.uid, {
503
572
  role: options.role,
504
573
  includesCustomPassword: !!options.customPassword,
@@ -512,7 +581,7 @@ export class SharingManagement {
512
581
  role: options.role,
513
582
  customPassword: options.customPassword,
514
583
  expirationTime: options.expiration,
515
- }
584
+ };
516
585
  }
517
586
 
518
587
  private async removeSharedLink(publicLinkUid: string): Promise<void> {
@@ -7,7 +7,7 @@ export function splitDeviceUid(deviceUid: string) {
7
7
  if (parts.length !== 2) {
8
8
  throw new Error(`"${deviceUid}" is not valid device UID`);
9
9
  }
10
- const [ volumeId, deviceId ] = parts;
10
+ const [volumeId, deviceId] = parts;
11
11
  return { volumeId, deviceId };
12
12
  }
13
13