@protontech/drive-sdk 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (447) hide show
  1. package/dist/cache/memoryCache.js +0 -1
  2. package/dist/cache/memoryCache.js.map +1 -1
  3. package/dist/cache/memoryCache.test.js +2 -4
  4. package/dist/cache/memoryCache.test.js.map +1 -1
  5. package/dist/cache/nullCache.js +0 -1
  6. package/dist/cache/nullCache.js.map +1 -1
  7. package/dist/crypto/driveCrypto.d.ts +2 -5
  8. package/dist/crypto/driveCrypto.js +7 -12
  9. package/dist/crypto/driveCrypto.js.map +1 -1
  10. package/dist/crypto/driveCrypto.test.js +14 -14
  11. package/dist/crypto/openPGPCrypto.js +3 -3
  12. package/dist/crypto/openPGPCrypto.js.map +1 -1
  13. package/dist/diagnostic/eventsGenerator.js +1 -1
  14. package/dist/diagnostic/eventsGenerator.js.map +1 -1
  15. package/dist/diagnostic/httpClient.d.ts +1 -1
  16. package/dist/diagnostic/httpClient.js.map +1 -1
  17. package/dist/diagnostic/index.d.ts +3 -3
  18. package/dist/diagnostic/index.js.map +1 -1
  19. package/dist/diagnostic/integrityVerificationStream.js +1 -1
  20. package/dist/diagnostic/integrityVerificationStream.js.map +1 -1
  21. package/dist/diagnostic/interface.d.ts +2 -2
  22. package/dist/diagnostic/sdkDiagnostic.d.ts +3 -3
  23. package/dist/diagnostic/sdkDiagnostic.js +8 -2
  24. package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
  25. package/dist/diagnostic/sdkDiagnosticFull.d.ts +4 -4
  26. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -1
  27. package/dist/diagnostic/telemetry.js.map +1 -1
  28. package/dist/diagnostic/zipGenerators.js +2 -2
  29. package/dist/diagnostic/zipGenerators.js.map +1 -1
  30. package/dist/diagnostic/zipGenerators.test.js +1 -1
  31. package/dist/diagnostic/zipGenerators.test.js.map +1 -1
  32. package/dist/interface/events.d.ts +2 -4
  33. package/dist/interface/events.js.map +1 -1
  34. package/dist/interface/index.d.ts +5 -5
  35. package/dist/interface/index.js +0 -1
  36. package/dist/interface/index.js.map +1 -1
  37. package/dist/interface/result.js.map +1 -1
  38. package/dist/interface/sharing.d.ts +1 -0
  39. package/dist/interface/sharing.js.map +1 -1
  40. package/dist/interface/telemetry.js +0 -8
  41. package/dist/interface/telemetry.js.map +1 -1
  42. package/dist/interface/thumbnail.js.map +1 -1
  43. package/dist/interface/upload.d.ts +1 -1
  44. package/dist/internal/apiService/apiService.d.ts +1 -1
  45. package/dist/internal/apiService/apiService.js +7 -11
  46. package/dist/internal/apiService/apiService.js.map +1 -1
  47. package/dist/internal/apiService/apiService.test.js +55 -48
  48. package/dist/internal/apiService/apiService.test.js.map +1 -1
  49. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  50. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  51. package/dist/internal/apiService/errors.js +14 -8
  52. package/dist/internal/apiService/errors.js.map +1 -1
  53. package/dist/internal/apiService/errors.test.js +17 -12
  54. package/dist/internal/apiService/errors.test.js.map +1 -1
  55. package/dist/internal/apiService/transformers.d.ts +1 -1
  56. package/dist/internal/apiService/transformers.js +1 -1
  57. package/dist/internal/asyncIteratorMap.test.js +2 -2
  58. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  59. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  60. package/dist/internal/asyncIteratorRace.js +59 -0
  61. package/dist/internal/asyncIteratorRace.js.map +1 -0
  62. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  63. package/dist/internal/asyncIteratorRace.test.js +119 -0
  64. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  65. package/dist/internal/batch.d.ts +1 -0
  66. package/dist/internal/batch.js +12 -0
  67. package/dist/internal/batch.js.map +1 -0
  68. package/dist/internal/batch.test.d.ts +1 -0
  69. package/dist/internal/batch.test.js +41 -0
  70. package/dist/internal/batch.test.js.map +1 -0
  71. package/dist/internal/batchLoading.js.map +1 -1
  72. package/dist/internal/batchLoading.test.js +13 -13
  73. package/dist/internal/batchLoading.test.js.map +1 -1
  74. package/dist/internal/devices/apiService.d.ts +3 -3
  75. package/dist/internal/devices/apiService.js +2 -2
  76. package/dist/internal/devices/apiService.js.map +1 -1
  77. package/dist/internal/devices/cryptoService.js +1 -2
  78. package/dist/internal/devices/cryptoService.js.map +1 -1
  79. package/dist/internal/devices/index.d.ts +5 -5
  80. package/dist/internal/devices/index.js.map +1 -1
  81. package/dist/internal/devices/interface.d.ts +3 -3
  82. package/dist/internal/devices/manager.js +2 -2
  83. package/dist/internal/devices/manager.js.map +1 -1
  84. package/dist/internal/devices/manager.test.js +38 -7
  85. package/dist/internal/devices/manager.test.js.map +1 -1
  86. package/dist/internal/download/apiService.d.ts +4 -4
  87. package/dist/internal/download/apiService.js +0 -1
  88. package/dist/internal/download/apiService.js.map +1 -1
  89. package/dist/internal/download/cryptoService.d.ts +4 -4
  90. package/dist/internal/download/cryptoService.js +6 -5
  91. package/dist/internal/download/cryptoService.js.map +1 -1
  92. package/dist/internal/download/fileDownloader.d.ts +4 -4
  93. package/dist/internal/download/fileDownloader.js +3 -2
  94. package/dist/internal/download/fileDownloader.js.map +1 -1
  95. package/dist/internal/download/fileDownloader.test.js +1 -1
  96. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  97. package/dist/internal/download/index.d.ts +5 -5
  98. package/dist/internal/download/index.js +5 -5
  99. package/dist/internal/download/index.js.map +1 -1
  100. package/dist/internal/download/interface.d.ts +3 -4
  101. package/dist/internal/download/telemetry.d.ts +3 -3
  102. package/dist/internal/download/telemetry.js +4 -2
  103. package/dist/internal/download/telemetry.js.map +1 -1
  104. package/dist/internal/download/telemetry.test.js +8 -8
  105. package/dist/internal/download/telemetry.test.js.map +1 -1
  106. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  107. package/dist/internal/download/thumbnailDownloader.js +6 -6
  108. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  109. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  110. package/dist/internal/errors.d.ts +1 -1
  111. package/dist/internal/errors.js +1 -3
  112. package/dist/internal/errors.js.map +1 -1
  113. package/dist/internal/events/apiService.d.ts +2 -2
  114. package/dist/internal/events/apiService.js +9 -5
  115. package/dist/internal/events/apiService.js.map +1 -1
  116. package/dist/internal/events/coreEventManager.d.ts +3 -3
  117. package/dist/internal/events/coreEventManager.js.map +1 -1
  118. package/dist/internal/events/coreEventManager.test.js +14 -14
  119. package/dist/internal/events/eventManager.d.ts +1 -1
  120. package/dist/internal/events/eventManager.js +0 -1
  121. package/dist/internal/events/eventManager.js.map +1 -1
  122. package/dist/internal/events/eventManager.test.js +34 -25
  123. package/dist/internal/events/eventManager.test.js.map +1 -1
  124. package/dist/internal/events/index.d.ts +6 -6
  125. package/dist/internal/events/index.js.map +1 -1
  126. package/dist/internal/events/interface.d.ts +1 -1
  127. package/dist/internal/events/interface.js +0 -1
  128. package/dist/internal/events/interface.js.map +1 -1
  129. package/dist/internal/events/volumeEventManager.d.ts +3 -3
  130. package/dist/internal/events/volumeEventManager.js.map +1 -1
  131. package/dist/internal/events/volumeEventManager.test.js +55 -55
  132. package/dist/internal/events/volumeEventManager.test.js.map +1 -1
  133. package/dist/internal/nodes/apiService.d.ts +4 -3
  134. package/dist/internal/nodes/apiService.js +36 -15
  135. package/dist/internal/nodes/apiService.js.map +1 -1
  136. package/dist/internal/nodes/apiService.test.js +60 -41
  137. package/dist/internal/nodes/apiService.test.js.map +1 -1
  138. package/dist/internal/nodes/cache.d.ts +5 -5
  139. package/dist/internal/nodes/cache.js +14 -7
  140. package/dist/internal/nodes/cache.js.map +1 -1
  141. package/dist/internal/nodes/cache.test.js +31 -9
  142. package/dist/internal/nodes/cache.test.js.map +1 -1
  143. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  144. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  145. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  146. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  147. package/dist/internal/nodes/cryptoService.d.ts +3 -3
  148. package/dist/internal/nodes/cryptoService.js +11 -17
  149. package/dist/internal/nodes/cryptoService.js.map +1 -1
  150. package/dist/internal/nodes/cryptoService.test.js +320 -241
  151. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  152. package/dist/internal/nodes/events.d.ts +3 -3
  153. package/dist/internal/nodes/events.js.map +1 -1
  154. package/dist/internal/nodes/events.test.js +27 -21
  155. package/dist/internal/nodes/events.test.js.map +1 -1
  156. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  157. package/dist/internal/nodes/extendedAttributes.js +3 -1
  158. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  159. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  160. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  161. package/dist/internal/nodes/index.d.ts +10 -10
  162. package/dist/internal/nodes/index.js.map +1 -1
  163. package/dist/internal/nodes/index.test.d.ts +1 -0
  164. package/dist/internal/nodes/index.test.js +106 -0
  165. package/dist/internal/nodes/index.test.js.map +1 -0
  166. package/dist/internal/nodes/interface.d.ts +2 -2
  167. package/dist/internal/nodes/nodesAccess.d.ts +7 -7
  168. package/dist/internal/nodes/nodesAccess.js +28 -16
  169. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  170. package/dist/internal/nodes/nodesAccess.test.js +39 -13
  171. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  172. package/dist/internal/nodes/nodesManagement.d.ts +6 -6
  173. package/dist/internal/nodes/nodesManagement.js +9 -7
  174. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  175. package/dist/internal/nodes/nodesManagement.test.js +9 -9
  176. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  177. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  178. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  179. package/dist/internal/photos/albums.d.ts +3 -3
  180. package/dist/internal/photos/albums.js.map +1 -1
  181. package/dist/internal/photos/apiService.d.ts +1 -1
  182. package/dist/internal/photos/apiService.js +3 -6
  183. package/dist/internal/photos/apiService.js.map +1 -1
  184. package/dist/internal/photos/cache.d.ts +1 -1
  185. package/dist/internal/photos/index.d.ts +5 -5
  186. package/dist/internal/photos/index.js.map +1 -1
  187. package/dist/internal/photos/interface.d.ts +2 -2
  188. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  189. package/dist/internal/photos/photosTimeline.js +1 -2
  190. package/dist/internal/photos/photosTimeline.js.map +1 -1
  191. package/dist/internal/sdkEvents.d.ts +1 -1
  192. package/dist/internal/sdkEvents.js +2 -7
  193. package/dist/internal/sdkEvents.js.map +1 -1
  194. package/dist/internal/sdkEvents.test.js +8 -8
  195. package/dist/internal/shares/apiService.d.ts +2 -2
  196. package/dist/internal/shares/apiService.js +5 -3
  197. package/dist/internal/shares/apiService.js.map +1 -1
  198. package/dist/internal/shares/cache.d.ts +2 -2
  199. package/dist/internal/shares/cache.js +12 -6
  200. package/dist/internal/shares/cache.js.map +1 -1
  201. package/dist/internal/shares/cache.test.js.map +1 -1
  202. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  203. package/dist/internal/shares/cryptoCache.test.js +8 -2
  204. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  205. package/dist/internal/shares/cryptoService.d.ts +3 -3
  206. package/dist/internal/shares/cryptoService.js.map +1 -1
  207. package/dist/internal/shares/cryptoService.test.js +42 -42
  208. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  209. package/dist/internal/shares/index.d.ts +4 -4
  210. package/dist/internal/shares/index.js.map +1 -1
  211. package/dist/internal/shares/interface.d.ts +2 -2
  212. package/dist/internal/shares/manager.d.ts +7 -7
  213. package/dist/internal/shares/manager.js.map +1 -1
  214. package/dist/internal/shares/manager.test.js +71 -63
  215. package/dist/internal/shares/manager.test.js.map +1 -1
  216. package/dist/internal/sharing/apiService.d.ts +4 -4
  217. package/dist/internal/sharing/apiService.js +4 -3
  218. package/dist/internal/sharing/apiService.js.map +1 -1
  219. package/dist/internal/sharing/cache.d.ts +1 -1
  220. package/dist/internal/sharing/cache.test.js +33 -33
  221. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  222. package/dist/internal/sharing/cryptoService.js +3 -5
  223. package/dist/internal/sharing/cryptoService.js.map +1 -1
  224. package/dist/internal/sharing/cryptoService.test.js +39 -39
  225. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  226. package/dist/internal/sharing/events.d.ts +4 -4
  227. package/dist/internal/sharing/events.js +0 -1
  228. package/dist/internal/sharing/events.js.map +1 -1
  229. package/dist/internal/sharing/events.test.js +39 -40
  230. package/dist/internal/sharing/events.test.js.map +1 -1
  231. package/dist/internal/sharing/index.d.ts +6 -6
  232. package/dist/internal/sharing/index.js.map +1 -1
  233. package/dist/internal/sharing/interface.d.ts +5 -4
  234. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  235. package/dist/internal/sharing/sharingAccess.js +8 -4
  236. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  237. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  238. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  239. package/dist/internal/sharing/sharingManagement.d.ts +4 -4
  240. package/dist/internal/sharing/sharingManagement.js +5 -7
  241. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  242. package/dist/internal/sharing/sharingManagement.test.js +297 -248
  243. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  244. package/dist/internal/uids.js.map +1 -1
  245. package/dist/internal/upload/apiService.d.ts +3 -3
  246. package/dist/internal/upload/apiService.js +1 -1
  247. package/dist/internal/upload/apiService.js.map +1 -1
  248. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  249. package/dist/internal/upload/blockVerifier.js +1 -1
  250. package/dist/internal/upload/blockVerifier.js.map +1 -1
  251. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  252. package/dist/internal/upload/cryptoService.d.ts +4 -4
  253. package/dist/internal/upload/cryptoService.js +4 -4
  254. package/dist/internal/upload/cryptoService.js.map +1 -1
  255. package/dist/internal/upload/digests.js.map +1 -1
  256. package/dist/internal/upload/fileUploader.d.ts +6 -6
  257. package/dist/internal/upload/fileUploader.js.map +1 -1
  258. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  259. package/dist/internal/upload/index.d.ts +5 -5
  260. package/dist/internal/upload/index.js.map +1 -1
  261. package/dist/internal/upload/interface.d.ts +3 -3
  262. package/dist/internal/upload/manager.d.ts +4 -4
  263. package/dist/internal/upload/manager.js +7 -5
  264. package/dist/internal/upload/manager.js.map +1 -1
  265. package/dist/internal/upload/manager.test.js +137 -123
  266. package/dist/internal/upload/manager.test.js.map +1 -1
  267. package/dist/internal/upload/streamUploader.d.ts +6 -6
  268. package/dist/internal/upload/streamUploader.js +8 -6
  269. package/dist/internal/upload/streamUploader.js.map +1 -1
  270. package/dist/internal/upload/streamUploader.test.js +16 -11
  271. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  272. package/dist/internal/upload/telemetry.d.ts +3 -3
  273. package/dist/internal/upload/telemetry.js +5 -3
  274. package/dist/internal/upload/telemetry.js.map +1 -1
  275. package/dist/internal/upload/telemetry.test.js +8 -8
  276. package/dist/internal/upload/telemetry.test.js.map +1 -1
  277. package/dist/protonDriveClient.d.ts +8 -8
  278. package/dist/protonDriveClient.js +12 -9
  279. package/dist/protonDriveClient.js.map +1 -1
  280. package/dist/protonDrivePhotosClient.js.map +1 -1
  281. package/dist/telemetry.js +18 -15
  282. package/dist/telemetry.js.map +1 -1
  283. package/dist/tests/logger.js.map +1 -1
  284. package/dist/tests/telemetry.d.ts +1 -1
  285. package/dist/transformers.js +4 -2
  286. package/dist/transformers.js.map +1 -1
  287. package/package.json +1 -1
  288. package/src/cache/interface.ts +22 -22
  289. package/src/cache/memoryCache.test.ts +7 -7
  290. package/src/cache/memoryCache.ts +4 -4
  291. package/src/cache/nullCache.ts +1 -1
  292. package/src/config.ts +5 -5
  293. package/src/crypto/driveCrypto.test.ts +15 -15
  294. package/src/crypto/driveCrypto.ts +120 -156
  295. package/src/crypto/hmac.ts +1 -1
  296. package/src/crypto/interface.ts +63 -72
  297. package/src/crypto/openPGPCrypto.ts +74 -94
  298. package/src/crypto/utils.ts +1 -1
  299. package/src/diagnostic/eventsGenerator.ts +2 -2
  300. package/src/diagnostic/httpClient.ts +6 -2
  301. package/src/diagnostic/index.ts +12 -10
  302. package/src/diagnostic/integrityVerificationStream.ts +3 -4
  303. package/src/diagnostic/interface.ts +81 -81
  304. package/src/diagnostic/sdkDiagnostic.ts +35 -24
  305. package/src/diagnostic/sdkDiagnosticFull.ts +16 -19
  306. package/src/diagnostic/telemetry.ts +4 -1
  307. package/src/diagnostic/zipGenerators.test.ts +1 -1
  308. package/src/diagnostic/zipGenerators.ts +3 -3
  309. package/src/errors.ts +21 -21
  310. package/src/index.ts +3 -3
  311. package/src/interface/account.ts +10 -10
  312. package/src/interface/author.ts +6 -6
  313. package/src/interface/config.ts +4 -4
  314. package/src/interface/devices.ts +6 -6
  315. package/src/interface/download.ts +12 -9
  316. package/src/interface/events.ts +45 -39
  317. package/src/interface/httpClient.ts +11 -11
  318. package/src/interface/index.ts +76 -19
  319. package/src/interface/nodes.ts +47 -49
  320. package/src/interface/result.ts +1 -3
  321. package/src/interface/sharing.ts +60 -57
  322. package/src/interface/telemetry.ts +74 -74
  323. package/src/interface/thumbnail.ts +5 -6
  324. package/src/interface/upload.ts +20 -12
  325. package/src/internal/apiService/apiService.test.ts +109 -76
  326. package/src/internal/apiService/apiService.ts +40 -26
  327. package/src/internal/apiService/coreTypes.ts +2474 -2463
  328. package/src/internal/apiService/driveTypes.ts +1868 -1822
  329. package/src/internal/apiService/errorCodes.ts +4 -4
  330. package/src/internal/apiService/errors.test.ts +25 -23
  331. package/src/internal/apiService/errors.ts +15 -9
  332. package/src/internal/apiService/index.ts +1 -1
  333. package/src/internal/apiService/transformers.ts +2 -2
  334. package/src/internal/asyncIteratorMap.test.ts +4 -4
  335. package/src/internal/asyncIteratorMap.ts +1 -1
  336. package/src/internal/asyncIteratorRace.test.ts +149 -0
  337. package/src/internal/asyncIteratorRace.ts +79 -0
  338. package/src/internal/batch.test.ts +50 -0
  339. package/src/internal/batch.ts +9 -0
  340. package/src/internal/batchLoading.test.ts +13 -14
  341. package/src/internal/batchLoading.ts +8 -8
  342. package/src/internal/devices/apiService.ts +58 -51
  343. package/src/internal/devices/cryptoService.ts +22 -17
  344. package/src/internal/devices/index.ts +17 -10
  345. package/src/internal/devices/interface.ts +21 -12
  346. package/src/internal/devices/manager.test.ts +40 -9
  347. package/src/internal/devices/manager.ts +3 -3
  348. package/src/internal/download/apiService.ts +66 -49
  349. package/src/internal/download/cryptoService.ts +34 -18
  350. package/src/internal/download/fileDownloader.test.ts +25 -9
  351. package/src/internal/download/fileDownloader.ts +36 -18
  352. package/src/internal/download/index.ts +19 -19
  353. package/src/internal/download/interface.ts +19 -20
  354. package/src/internal/download/queue.ts +3 -3
  355. package/src/internal/download/telemetry.test.ts +11 -11
  356. package/src/internal/download/telemetry.ts +24 -14
  357. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  358. package/src/internal/download/thumbnailDownloader.ts +43 -32
  359. package/src/internal/errors.ts +7 -5
  360. package/src/internal/events/apiService.ts +30 -17
  361. package/src/internal/events/coreEventManager.test.ts +18 -18
  362. package/src/internal/events/coreEventManager.ts +9 -6
  363. package/src/internal/events/eventManager.test.ts +51 -46
  364. package/src/internal/events/eventManager.ts +6 -5
  365. package/src/internal/events/index.ts +24 -14
  366. package/src/internal/events/interface.ts +47 -39
  367. package/src/internal/events/volumeEventManager.test.ts +61 -65
  368. package/src/internal/events/volumeEventManager.ts +18 -9
  369. package/src/internal/nodes/apiService.test.ts +197 -147
  370. package/src/internal/nodes/apiService.ts +288 -174
  371. package/src/internal/nodes/cache.test.ts +48 -20
  372. package/src/internal/nodes/cache.ts +60 -44
  373. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  374. package/src/internal/nodes/cryptoCache.ts +10 -5
  375. package/src/internal/nodes/cryptoService.test.ts +492 -351
  376. package/src/internal/nodes/cryptoService.ts +170 -88
  377. package/src/internal/nodes/events.test.ts +38 -28
  378. package/src/internal/nodes/events.ts +7 -5
  379. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  380. package/src/internal/nodes/extendedAttributes.ts +20 -15
  381. package/src/internal/nodes/index.test.ts +133 -0
  382. package/src/internal/nodes/index.ts +27 -15
  383. package/src/internal/nodes/interface.ts +42 -29
  384. package/src/internal/nodes/nodesAccess.test.ts +124 -58
  385. package/src/internal/nodes/nodesAccess.ts +73 -49
  386. package/src/internal/nodes/nodesManagement.test.ts +32 -31
  387. package/src/internal/nodes/nodesManagement.ts +39 -32
  388. package/src/internal/nodes/nodesRevisions.ts +7 -7
  389. package/src/internal/nodes/validations.ts +2 -2
  390. package/src/internal/photos/albums.ts +5 -5
  391. package/src/internal/photos/apiService.ts +4 -7
  392. package/src/internal/photos/cache.ts +1 -1
  393. package/src/internal/photos/index.ts +8 -8
  394. package/src/internal/photos/interface.ts +2 -2
  395. package/src/internal/photos/photosTimeline.ts +4 -5
  396. package/src/internal/sdkEvents.test.ts +10 -10
  397. package/src/internal/sdkEvents.ts +5 -13
  398. package/src/internal/shares/apiService.ts +44 -33
  399. package/src/internal/shares/cache.test.ts +6 -4
  400. package/src/internal/shares/cache.ts +21 -12
  401. package/src/internal/shares/cryptoCache.test.ts +17 -11
  402. package/src/internal/shares/cryptoCache.ts +4 -4
  403. package/src/internal/shares/cryptoService.test.ts +72 -74
  404. package/src/internal/shares/cryptoService.ts +48 -23
  405. package/src/internal/shares/index.ts +23 -11
  406. package/src/internal/shares/interface.ts +8 -8
  407. package/src/internal/shares/manager.test.ts +88 -80
  408. package/src/internal/shares/manager.ts +19 -19
  409. package/src/internal/sharing/apiService.ts +282 -175
  410. package/src/internal/sharing/cache.test.ts +35 -35
  411. package/src/internal/sharing/cache.ts +2 -2
  412. package/src/internal/sharing/cryptoService.test.ts +58 -46
  413. package/src/internal/sharing/cryptoService.ts +121 -84
  414. package/src/internal/sharing/events.test.ts +45 -49
  415. package/src/internal/sharing/events.ts +9 -6
  416. package/src/internal/sharing/index.ts +22 -11
  417. package/src/internal/sharing/interface.ts +40 -40
  418. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  419. package/src/internal/sharing/sharingAccess.ts +39 -21
  420. package/src/internal/sharing/sharingManagement.test.ts +398 -298
  421. package/src/internal/sharing/sharingManagement.ts +138 -65
  422. package/src/internal/uids.ts +1 -1
  423. package/src/internal/upload/apiService.ts +167 -117
  424. package/src/internal/upload/blockVerifier.ts +8 -6
  425. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  426. package/src/internal/upload/cryptoService.ts +42 -36
  427. package/src/internal/upload/digests.ts +2 -2
  428. package/src/internal/upload/fileUploader.test.ts +15 -3
  429. package/src/internal/upload/fileUploader.ts +39 -17
  430. package/src/internal/upload/index.ts +13 -14
  431. package/src/internal/upload/interface.ts +78 -78
  432. package/src/internal/upload/manager.test.ts +170 -153
  433. package/src/internal/upload/manager.ts +59 -35
  434. package/src/internal/upload/queue.ts +3 -3
  435. package/src/internal/upload/streamUploader.test.ts +40 -26
  436. package/src/internal/upload/streamUploader.ts +87 -69
  437. package/src/internal/upload/telemetry.test.ts +11 -11
  438. package/src/internal/upload/telemetry.ts +25 -15
  439. package/src/internal/wait.test.ts +1 -1
  440. package/src/internal/wait.ts +3 -3
  441. package/src/protonDriveClient.ts +121 -39
  442. package/src/protonDrivePhotosClient.ts +16 -10
  443. package/src/telemetry.ts +60 -52
  444. package/src/tests/logger.ts +1 -1
  445. package/src/tests/telemetry.ts +2 -2
  446. package/src/transformers.ts +27 -21
  447. package/src/version.ts +0 -1
@@ -1,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, 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;
@@ -67,24 +79,24 @@ export class SharingManagement {
67
79
  nonProtonInvitations,
68
80
  members,
69
81
  publicLink,
70
- }
82
+ };
71
83
  }
72
84
 
73
- private async* iterateShareInvitations(shareId: string): AsyncGenerator<ProtonInvitation> {
85
+ private async *iterateShareInvitations(shareId: string): AsyncGenerator<ProtonInvitation> {
74
86
  const invitations = await this.apiService.getShareInvitations(shareId);
75
87
  for (const invitation of invitations) {
76
88
  yield this.cryptoService.decryptInvitation(invitation);
77
89
  }
78
90
  }
79
91
 
80
- private async* iterateShareExternalInvitations(shareId: string): AsyncGenerator<NonProtonInvitation> {
92
+ private async *iterateShareExternalInvitations(shareId: string): AsyncGenerator<NonProtonInvitation> {
81
93
  const invitations = await this.apiService.getShareExternalInvitations(shareId);
82
94
  for (const invitation of invitations) {
83
95
  yield this.cryptoService.decryptExternalInvitation(invitation);
84
96
  }
85
97
  }
86
98
 
87
- private async* iterateShareMembers(shareId: string): AsyncGenerator<Member> {
99
+ private async *iterateShareMembers(shareId: string): AsyncGenerator<Member> {
88
100
  const members = await this.apiService.getShareMembers(shareId);
89
101
  for (const member of members) {
90
102
  yield this.cryptoService.decryptMember(member);
@@ -106,9 +118,7 @@ export class SharingManagement {
106
118
  const nonProtonUsers = [];
107
119
  if (settings.users) {
108
120
  for (const user of settings.users) {
109
- const { email, role } = typeof user === "string"
110
- ? { email: user, role: MemberRole.Viewer }
111
- : user;
121
+ const { email, role } = typeof user === 'string' ? { email: user, role: MemberRole.Viewer } : user;
112
122
  const isProtonUser = await this.account.hasProtonAccount(email);
113
123
  if (isProtonUser) {
114
124
  protonUsers.push({ email, role });
@@ -120,7 +130,11 @@ export class SharingManagement {
120
130
 
121
131
  // Check if expiration date is in the past before creating share
122
132
  // so if this fails, we don't create empty share.
123
- 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
+ ) {
124
138
  throw new ValidationError(c('Error').t`Expiration date cannot be in the past`);
125
139
  }
126
140
 
@@ -141,12 +155,14 @@ export class SharingManagement {
141
155
  const emailOptions: EmailOptions = {
142
156
  message: settings.emailOptions?.message,
143
157
  nodeName: settings.emailOptions?.includeNodeName ? currentSharing.nodeName : undefined,
144
- }
158
+ };
145
159
 
146
160
  for (const user of protonUsers) {
147
161
  const { email, role } = user;
148
162
 
149
- const existingInvitation = currentSharing.protonInvitations.find((invitation) => invitation.inviteeEmail === email);
163
+ const existingInvitation = currentSharing.protonInvitations.find(
164
+ (invitation) => invitation.inviteeEmail === email,
165
+ );
150
166
  if (existingInvitation) {
151
167
  if (existingInvitation.role === role) {
152
168
  this.logger.info(`Invitation for ${email} already exists with role ${role} to node ${nodeUid}`);
@@ -178,13 +194,19 @@ export class SharingManagement {
178
194
  for (const user of nonProtonUsers) {
179
195
  const { email, role } = user;
180
196
 
181
- const existingExternalInvitation = currentSharing.nonProtonInvitations.find((invitation) => invitation.inviteeEmail === email);
197
+ const existingExternalInvitation = currentSharing.nonProtonInvitations.find(
198
+ (invitation) => invitation.inviteeEmail === email,
199
+ );
182
200
  if (existingExternalInvitation) {
183
201
  if (existingExternalInvitation.role === role) {
184
- 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
+ );
185
205
  continue;
186
206
  }
187
- 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
+ );
188
210
  await this.updateExternalInvitation(existingExternalInvitation.uid, role);
189
211
  existingExternalInvitation.role = role;
190
212
  continue;
@@ -208,13 +230,15 @@ export class SharingManagement {
208
230
  }
209
231
 
210
232
  if (settings.publicLink) {
211
- const options = settings.publicLink === true
212
- ? { role: MemberRole.Viewer }
213
- : settings.publicLink;
233
+ const options = settings.publicLink === true ? { role: MemberRole.Viewer } : settings.publicLink;
214
234
 
215
235
  if (currentSharing.publicLink) {
216
236
  this.logger.info(`Updating public link with role ${options.role} to node ${nodeUid}`);
217
- 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
+ );
218
242
  } else {
219
243
  this.logger.info(`Sharing via public link with role ${options.role} to node ${nodeUid}`);
220
244
  currentSharing.publicLink = await this.shareViaLink(currentSharing.share, options);
@@ -242,19 +266,27 @@ export class SharingManagement {
242
266
  }
243
267
 
244
268
  for (const userEmail of settings.users || []) {
245
- const existingInvitation = currentSharing.protonInvitations.find((invitation) => invitation.inviteeEmail === userEmail);
269
+ const existingInvitation = currentSharing.protonInvitations.find(
270
+ (invitation) => invitation.inviteeEmail === userEmail,
271
+ );
246
272
  if (existingInvitation) {
247
273
  this.logger.info(`Deleting invitation for ${userEmail} to node ${nodeUid}`);
248
274
  await this.deleteInvitation(existingInvitation.uid);
249
- currentSharing.protonInvitations = currentSharing.protonInvitations.filter((invitation) => invitation.uid !== existingInvitation.uid);
275
+ currentSharing.protonInvitations = currentSharing.protonInvitations.filter(
276
+ (invitation) => invitation.uid !== existingInvitation.uid,
277
+ );
250
278
  continue;
251
279
  }
252
280
 
253
- const existingExternalInvitation = currentSharing.nonProtonInvitations.find((invitation) => invitation.inviteeEmail === userEmail);
281
+ const existingExternalInvitation = currentSharing.nonProtonInvitations.find(
282
+ (invitation) => invitation.inviteeEmail === userEmail,
283
+ );
254
284
  if (existingExternalInvitation) {
255
285
  this.logger.info(`Deleting external invitation for ${userEmail} to node ${nodeUid}`);
256
286
  await this.deleteExternalInvitation(existingExternalInvitation.uid);
257
- currentSharing.nonProtonInvitations = currentSharing.nonProtonInvitations.filter((invitation) => invitation.uid !== existingExternalInvitation.uid);
287
+ currentSharing.nonProtonInvitations = currentSharing.nonProtonInvitations.filter(
288
+ (invitation) => invitation.uid !== existingExternalInvitation.uid,
289
+ );
258
290
  continue;
259
291
  }
260
292
 
@@ -297,7 +329,9 @@ export class SharingManagement {
297
329
  // as it might be a race condition that other client updated
298
330
  // the share and it is not empty.
299
331
  // If share is truly empty, backend will delete it eventually.
300
- 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
+ );
301
335
  }
302
336
  return;
303
337
  }
@@ -334,7 +368,7 @@ export class SharingManagement {
334
368
  passphraseSessionKey: passphraseSessionKey,
335
369
  },
336
370
  nodeName: node.name.ok ? node.name.value : node.name.error.name,
337
- }
371
+ };
338
372
  }
339
373
 
340
374
  private async createShare(nodeUid: string): Promise<Share> {
@@ -348,22 +382,17 @@ export class SharingManagement {
348
382
 
349
383
  const nodeKeys = await this.nodesService.getNodePrivateAndSessionKeys(nodeUid);
350
384
  const keys = await this.cryptoService.generateShareKeys(nodeKeys, addressKey);
351
- const shareId = await this.apiService.createStandardShare(
352
- nodeUid,
353
- addressId,
354
- keys.shareKey.encrypted,
355
- {
356
- base64PassphraseKeyPacket: keys.base64PpassphraseKeyPacket,
357
- base64NameKeyPacket: keys.base64NameKeyPacket,
358
- },
359
- );
385
+ const shareId = await this.apiService.createStandardShare(nodeUid, addressId, keys.shareKey.encrypted, {
386
+ base64PassphraseKeyPacket: keys.base64PpassphraseKeyPacket,
387
+ base64NameKeyPacket: keys.base64NameKeyPacket,
388
+ });
360
389
  await this.nodesService.notifyNodeChanged(nodeUid);
361
390
  return {
362
391
  volumeId,
363
392
  shareId,
364
393
  creatorEmail: email,
365
394
  passphraseSessionKey: keys.shareKey.decrypted.passphraseSessionKey,
366
- }
395
+ };
367
396
  }
368
397
 
369
398
  private async deleteShare(shareId: string, nodeUid: string): Promise<void> {
@@ -371,16 +400,29 @@ export class SharingManagement {
371
400
  await this.nodesService.notifyNodeChanged(nodeUid);
372
401
  }
373
402
 
374
- 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> {
375
409
  const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
376
- 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
+ );
377
415
 
378
- const encryptedInvitation = await this.apiService.inviteProtonUser(share.shareId, {
379
- addedByEmail: inviter.email,
380
- inviteeEmail: inviteeEmail,
381
- role,
382
- ...invitationCrypto,
383
- }, 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
+ );
384
426
 
385
427
  return {
386
428
  ...encryptedInvitation,
@@ -404,7 +446,9 @@ export class SharingManagement {
404
446
  return await this.apiService.resendInvitationEmail(protonInvite.uid);
405
447
  }
406
448
 
407
- const nonProtonInvite = currentSharing.nonProtonInvitations.find((invitation) => invitation.uid === invitationUid);
449
+ const nonProtonInvite = currentSharing.nonProtonInvitations.find(
450
+ (invitation) => invitation.uid === invitationUid,
451
+ );
408
452
  if (nonProtonInvite) {
409
453
  return await this.apiService.resendExternalInvitationEmail(nonProtonInvite.uid);
410
454
  }
@@ -416,16 +460,29 @@ export class SharingManagement {
416
460
  await this.apiService.deleteInvitation(invitationUid);
417
461
  }
418
462
 
419
- 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> {
420
469
  const inviter = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
421
- 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
+ );
422
475
 
423
- const encryptedInvitation = await this.apiService.inviteExternalUser(share.shareId, {
424
- inviterAddressId: inviter.addressId,
425
- inviteeEmail: inviteeEmail,
426
- role,
427
- base64Signature: invitationCrypto.base64ExternalInvitationSignature,
428
- }, 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
+ );
429
486
 
430
487
  return {
431
488
  uid: encryptedInvitation.uid,
@@ -441,7 +498,6 @@ export class SharingManagement {
441
498
  await this.apiService.updateExternalInvitation(invitationUid, { role });
442
499
  }
443
500
 
444
-
445
501
  private async deleteExternalInvitation(invitationUid: string): Promise<void> {
446
502
  await this.apiService.deleteExternalInvitation(invitationUid);
447
503
  }
@@ -458,13 +514,20 @@ export class SharingManagement {
458
514
  await this.apiService.updateMember(memberUid, { role });
459
515
  }
460
516
 
461
- private async shareViaLink(share: Share, options: SharePublicLinkSettingsObject): Promise<PublicLinkWithCreatorEmail> {
517
+ private async shareViaLink(
518
+ share: Share,
519
+ options: SharePublicLinkSettingsObject,
520
+ ): Promise<PublicLinkWithCreatorEmail> {
462
521
  const { email: creatorEmail } = await this.sharesService.getContextShareMemberEmailKey(share.shareId);
463
522
 
464
523
  const generatedPassword = await this.cryptoService.generatePublicLinkPassword();
465
524
  const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
466
525
 
467
- 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
+ );
468
531
  const publicLink = await this.apiService.createPublicLink(share.shareId, {
469
532
  creatorEmail,
470
533
  role: options.role,
@@ -483,18 +546,28 @@ export class SharingManagement {
483
546
  expirationTime: options.expiration,
484
547
  numberOfInitializedDownloads: 0,
485
548
  creatorEmail,
486
- }
549
+ };
487
550
  }
488
551
 
489
- 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> {
490
557
  const generatedPassword = publicLink.url.split('#')[1];
491
558
  // Legacy public links didn't have generated password or had various lengths.
492
559
  if (!generatedPassword || generatedPassword.length !== PUBLIC_LINK_GENERATED_PASSWORD_LENGTH) {
493
- 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
+ );
494
563
  }
495
564
  const password = options.customPassword ? `${generatedPassword}${options.customPassword}` : generatedPassword;
496
565
 
497
- 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
+ );
498
571
  await this.apiService.updatePublicLink(publicLink.uid, {
499
572
  role: options.role,
500
573
  includesCustomPassword: !!options.customPassword,
@@ -508,7 +581,7 @@ export class SharingManagement {
508
581
  role: options.role,
509
582
  customPassword: options.customPassword,
510
583
  expirationTime: options.expiration,
511
- }
584
+ };
512
585
  }
513
586
 
514
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