@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,6 +1,6 @@
1
- import { MemberRole, NodeType } from "../../interface";
2
- import { getMockLogger } from "../../tests/logger";
3
- import { DriveAPIService, ErrorCode } from "../apiService";
1
+ import { MemberRole, NodeType } from '../../interface';
2
+ import { getMockLogger } from '../../tests/logger';
3
+ import { DriveAPIService, ErrorCode } from '../apiService';
4
4
  import { NodeAPIService } from './apiService';
5
5
 
6
6
  function generateAPIFileNode(linkOverrides = {}, overrides = {}) {
@@ -81,26 +81,26 @@ function generateFileNode(overrides = {}) {
81
81
  return {
82
82
  ...node,
83
83
  type: NodeType.File,
84
- mediaType: "text",
84
+ mediaType: 'text',
85
85
  totalStorageSize: 42,
86
86
  encryptedCrypto: {
87
87
  ...node.encryptedCrypto,
88
88
  file: {
89
- base64ContentKeyPacket: "contentKeyPacket",
90
- armoredContentKeyPacketSignature: "contentKeyPacketSig",
89
+ base64ContentKeyPacket: 'contentKeyPacket',
90
+ armoredContentKeyPacketSignature: 'contentKeyPacketSig',
91
91
  },
92
92
  activeRevision: {
93
- uid: "volumeId~linkId~revisionId",
94
- state: "active",
93
+ uid: 'volumeId~linkId~revisionId',
94
+ state: 'active',
95
95
  creationTime: new Date(1234567890000),
96
96
  storageSize: 12,
97
- signatureEmail: "revSigEmail",
98
- armoredExtendedAttributes: "{file}",
97
+ signatureEmail: 'revSigEmail',
98
+ armoredExtendedAttributes: '{file}',
99
99
  thumbnails: [],
100
100
  },
101
101
  },
102
- ...overrides
103
- }
102
+ ...overrides,
103
+ };
104
104
  }
105
105
 
106
106
  function generateFolderNode(overrides = {}) {
@@ -111,12 +111,12 @@ function generateFolderNode(overrides = {}) {
111
111
  encryptedCrypto: {
112
112
  ...node.encryptedCrypto,
113
113
  folder: {
114
- armoredHashKey: "nodeHashKey",
115
- armoredExtendedAttributes: "{folder}",
114
+ armoredHashKey: 'nodeHashKey',
115
+ armoredExtendedAttributes: '{folder}',
116
116
  },
117
117
  },
118
- ...overrides
119
- }
118
+ ...overrides,
119
+ };
120
120
  }
121
121
 
122
122
  function generateAlbumNode(overrides = {}) {
@@ -124,17 +124,17 @@ function generateAlbumNode(overrides = {}) {
124
124
  return {
125
125
  ...node,
126
126
  type: NodeType.Album,
127
- ...overrides
128
- }
127
+ ...overrides,
128
+ };
129
129
  }
130
130
 
131
131
  function generateNode() {
132
132
  return {
133
- hash: "nameHash",
134
- encryptedName: "encName",
133
+ hash: 'nameHash',
134
+ encryptedName: 'encName',
135
135
 
136
- uid: "volumeId~linkId",
137
- parentUid: "volumeId~parentLinkId",
136
+ uid: 'volumeId~linkId',
137
+ parentUid: 'volumeId~parentLinkId',
138
138
  creationTime: new Date(123456789000),
139
139
  trashTime: undefined,
140
140
 
@@ -143,16 +143,16 @@ function generateNode() {
143
143
  directMemberRole: MemberRole.Admin,
144
144
 
145
145
  encryptedCrypto: {
146
- armoredKey: "nodeKey",
147
- armoredNodePassphrase: "nodePass",
148
- armoredNodePassphraseSignature: "nodePassSig",
149
- nameSignatureEmail: "nameSigEmail",
150
- signatureEmail: "sigEmail",
146
+ armoredKey: 'nodeKey',
147
+ armoredNodePassphrase: 'nodePass',
148
+ armoredNodePassphraseSignature: 'nodePassSig',
149
+ nameSignatureEmail: 'nameSigEmail',
150
+ signatureEmail: 'sigEmail',
151
151
  },
152
- }
152
+ };
153
153
  }
154
154
 
155
- describe("nodeAPIService", () => {
155
+ describe('nodeAPIService', () => {
156
156
  let apiMock: DriveAPIService;
157
157
  let api: NodeAPIService;
158
158
 
@@ -172,19 +172,18 @@ describe("nodeAPIService", () => {
172
172
  describe('iterateNodes', () => {
173
173
  async function testIterateNodes(mockedLink: any, expectedNode: any, ownVolumeId = 'volumeId') {
174
174
  // @ts-expect-error Mocking for testing purposes
175
- apiMock.post = jest.fn(async () => Promise.resolve({
176
- Links: [mockedLink],
177
- }));
175
+ apiMock.post = jest.fn(async () =>
176
+ Promise.resolve({
177
+ Links: [mockedLink],
178
+ }),
179
+ );
178
180
 
179
181
  const nodes = await Array.fromAsync(api.iterateNodes(['volumeId~nodeId'], ownVolumeId));
180
182
  expect(nodes).toStrictEqual([expectedNode]);
181
183
  }
182
-
184
+
183
185
  it('should get folder node', async () => {
184
- await testIterateNodes(
185
- generateAPIFolderNode(),
186
- generateFolderNode(),
187
- );
186
+ await testIterateNodes(generateAPIFolderNode(), generateFolderNode());
188
187
  });
189
188
 
190
189
  it('should get root folder node', async () => {
@@ -193,31 +192,28 @@ describe("nodeAPIService", () => {
193
192
  generateFolderNode({ parentUid: undefined }),
194
193
  );
195
194
  });
196
-
195
+
197
196
  it('should get file node', async () => {
198
- await testIterateNodes(
199
- generateAPIFileNode(),
200
- generateFileNode(),
201
- );
197
+ await testIterateNodes(generateAPIFileNode(), generateFileNode());
202
198
  });
203
199
 
204
200
  it('should get album node', async () => {
205
- await testIterateNodes(
206
- generateAPIAlbumNode(),
207
- generateAlbumNode(),
208
- );
201
+ await testIterateNodes(generateAPIAlbumNode(), generateAlbumNode());
209
202
  });
210
203
 
211
204
  it('should get shared node', async () => {
212
205
  await testIterateNodes(
213
- generateAPIFolderNode({}, {
214
- Sharing: {
215
- ShareID: 'shareId',
216
- },
217
- Membership: {
218
- Permissions: 22,
206
+ generateAPIFolderNode(
207
+ {},
208
+ {
209
+ Sharing: {
210
+ ShareID: 'shareId',
211
+ },
212
+ Membership: {
213
+ Permissions: 22,
214
+ },
219
215
  },
220
- }),
216
+ ),
221
217
  generateFolderNode({
222
218
  isShared: true,
223
219
  shareId: 'shareId',
@@ -228,14 +224,17 @@ describe("nodeAPIService", () => {
228
224
 
229
225
  it('should get shared node with unknown permissions', async () => {
230
226
  await testIterateNodes(
231
- generateAPIFolderNode({}, {
232
- Sharing: {
233
- ShareID: 'shareId',
234
- },
235
- Membership: {
236
- Permissions: 42,
227
+ generateAPIFolderNode(
228
+ {},
229
+ {
230
+ Sharing: {
231
+ ShareID: 'shareId',
232
+ },
233
+ Membership: {
234
+ Permissions: 42,
235
+ },
237
236
  },
238
- }),
237
+ ),
239
238
  generateFolderNode({
240
239
  isShared: true,
241
240
  shareId: 'shareId',
@@ -251,23 +250,25 @@ describe("nodeAPIService", () => {
251
250
  TrashTime: 123456,
252
251
  }),
253
252
  generateFileNode({
254
- trashTime: new Date(123456000)
253
+ trashTime: new Date(123456000),
255
254
  }),
256
255
  );
257
256
  });
258
257
 
259
258
  it('should get all recognised nodes before throwing error', async () => {
260
259
  // @ts-expect-error Mocking for testing purposes
261
- apiMock.post = jest.fn(async () => Promise.resolve({
262
- Links: [
263
- generateAPIFolderNode(),
264
- // Type 42 is not recognised - should throw error.
265
- generateAPIFolderNode({ Type: 42 }),
266
- // Type 43 is not recognised - should throw error.
267
- generateAPIFileNode({ Type: 43 }),
268
- generateAPIFileNode(),
269
- ],
270
- }));
260
+ apiMock.post = jest.fn(async () =>
261
+ Promise.resolve({
262
+ Links: [
263
+ generateAPIFolderNode(),
264
+ // Type 42 is not recognised - should throw error.
265
+ generateAPIFolderNode({ Type: 42 }),
266
+ // Type 43 is not recognised - should throw error.
267
+ generateAPIFileNode({ Type: 43 }),
268
+ generateAPIFileNode(),
269
+ ],
270
+ }),
271
+ );
271
272
 
272
273
  const generator = api.iterateNodes(['volumeId~nodeId'], 'volumeId');
273
274
 
@@ -283,52 +284,95 @@ describe("nodeAPIService", () => {
283
284
  try {
284
285
  await node3;
285
286
  } catch (error: any) {
286
- expect(error.cause).toEqual([
287
- new Error('Unknown node type: 42'),
288
- new Error('Unknown node type: 43'),
289
- ]);
287
+ expect(error.cause).toEqual([new Error('Unknown node type: 42'), new Error('Unknown node type: 43')]);
290
288
  }
291
289
  });
292
290
 
293
291
  it('should get nodes across various volumes', async () => {
294
292
  // @ts-expect-error Mocking for testing purposes
295
- apiMock.post = jest.fn(async (url) => Promise.resolve({
296
- Links: [
297
- generateAPIFolderNode({
298
- LinkID: url.includes('volumeId1') ? 'nodeId1' : 'nodeId2',
299
- ParentLinkID: url.includes('volumeId1') ? 'parentNodeId1' : 'parentNodeId2',
300
- }),
301
- ],
302
- }));
303
-
304
- const nodes = await Array.fromAsync(api.iterateNodes(['volumeId1~nodeId1', 'volumeId2~nodeId2'], 'volumeId1'));
293
+ apiMock.post = jest.fn(async (url) =>
294
+ Promise.resolve({
295
+ Links: [
296
+ generateAPIFolderNode({
297
+ LinkID: url.includes('volumeId1') ? 'nodeId1' : 'nodeId2',
298
+ ParentLinkID: url.includes('volumeId1') ? 'parentNodeId1' : 'parentNodeId2',
299
+ }),
300
+ ],
301
+ }),
302
+ );
303
+
304
+ const nodes = await Array.fromAsync(
305
+ api.iterateNodes(['volumeId1~nodeId1', 'volumeId2~nodeId2'], 'volumeId1'),
306
+ );
305
307
  expect(nodes).toStrictEqual([
306
- generateFolderNode({ uid: 'volumeId1~nodeId1', parentUid: 'volumeId1~parentNodeId1', directMemberRole: MemberRole.Admin }),
307
- generateFolderNode({ uid: 'volumeId2~nodeId2', parentUid: 'volumeId2~parentNodeId2', directMemberRole: MemberRole.Inherited }),
308
+ generateFolderNode({
309
+ uid: 'volumeId1~nodeId1',
310
+ parentUid: 'volumeId1~parentNodeId1',
311
+ directMemberRole: MemberRole.Admin,
312
+ }),
313
+ generateFolderNode({
314
+ uid: 'volumeId2~nodeId2',
315
+ parentUid: 'volumeId2~parentNodeId2',
316
+ directMemberRole: MemberRole.Inherited,
317
+ }),
308
318
  ]);
309
319
  });
320
+
321
+ it('should get nodes in batches', async () => {
322
+ // @ts-expect-error Mocking for testing purposes
323
+ apiMock.post = jest.fn(async (_, { LinkIDs }) =>
324
+ Promise.resolve({
325
+ Links: LinkIDs.map((linkId: string) => generateAPIFolderNode({ LinkID: linkId })),
326
+ }),
327
+ );
328
+
329
+ const nodeUids = Array.from({ length: 250 }, (_, i) => `volumeId1~nodeId${i}`);
330
+ const nodeIds = nodeUids.map((uid) => uid.split('~')[1]);
331
+
332
+ const nodes = await Array.fromAsync(api.iterateNodes(nodeUids, 'volumeId1'));
333
+ expect(nodes).toHaveLength(nodeUids.length);
334
+
335
+ expect(apiMock.post).toHaveBeenCalledTimes(3);
336
+ expect(apiMock.post).toHaveBeenCalledWith(
337
+ 'drive/v2/volumes/volumeId1/links',
338
+ { LinkIDs: nodeIds.slice(0, 100) },
339
+ undefined,
340
+ );
341
+ expect(apiMock.post).toHaveBeenCalledWith(
342
+ 'drive/v2/volumes/volumeId1/links',
343
+ { LinkIDs: nodeIds.slice(100, 200) },
344
+ undefined,
345
+ );
346
+ expect(apiMock.post).toHaveBeenCalledWith(
347
+ 'drive/v2/volumes/volumeId1/links',
348
+ { LinkIDs: nodeIds.slice(200, 250) },
349
+ undefined,
350
+ );
351
+ });
310
352
  });
311
353
 
312
354
  describe('trashNodes', () => {
313
355
  it('should trash nodes', async () => {
314
356
  // @ts-expect-error Mocking for testing purposes
315
- apiMock.post = jest.fn(async () => Promise.resolve({
316
- Responses: [
317
- {
318
- LinkID: 'nodeId1',
319
- Response: {
320
- Code: ErrorCode.OK,
321
- }
322
- },
323
- {
324
- LinkID: 'nodeId2',
325
- Response: {
326
- Code: 2027,
327
- Error: 'INSUFFICIENT_SCOPE'
328
- }
329
- }
330
- ],
331
- }));
357
+ apiMock.post = jest.fn(async () =>
358
+ Promise.resolve({
359
+ Responses: [
360
+ {
361
+ LinkID: 'nodeId1',
362
+ Response: {
363
+ Code: ErrorCode.OK,
364
+ },
365
+ },
366
+ {
367
+ LinkID: 'nodeId2',
368
+ Response: {
369
+ Code: 2027,
370
+ Error: 'INSUFFICIENT_SCOPE',
371
+ },
372
+ },
373
+ ],
374
+ }),
375
+ );
332
376
 
333
377
  const result = await Array.fromAsync(api.trashNodes(['volumeId~nodeId1', 'volumeId~nodeId2']));
334
378
  expect(result).toEqual([
@@ -341,31 +385,35 @@ describe("nodeAPIService", () => {
341
385
  describe('restoreNodes', () => {
342
386
  it('should restore nodes', async () => {
343
387
  // @ts-expect-error Mocking for testing purposes
344
- apiMock.put = jest.fn(async () => Promise.resolve({
345
- Responses: [
346
- {
347
- LinkID: 'nodeId1',
348
- Response: {
349
- Code: ErrorCode.OK,
350
- }
351
- },
352
- {
353
- LinkID: 'nodeId2',
354
- Response: {
355
- Code: 2027,
356
- Error: 'INSUFFICIENT_SCOPE'
357
- }
358
- },
359
- {
360
- LinkID: 'nodeId3',
361
- Response: {
362
- Code: 2000,
363
- }
364
- },
365
- ],
366
- }));
388
+ apiMock.put = jest.fn(async () =>
389
+ Promise.resolve({
390
+ Responses: [
391
+ {
392
+ LinkID: 'nodeId1',
393
+ Response: {
394
+ Code: ErrorCode.OK,
395
+ },
396
+ },
397
+ {
398
+ LinkID: 'nodeId2',
399
+ Response: {
400
+ Code: 2027,
401
+ Error: 'INSUFFICIENT_SCOPE',
402
+ },
403
+ },
404
+ {
405
+ LinkID: 'nodeId3',
406
+ Response: {
407
+ Code: 2000,
408
+ },
409
+ },
410
+ ],
411
+ }),
412
+ );
367
413
 
368
- const result = await Array.fromAsync(api.restoreNodes(['volumeId~nodeId1', 'volumeId~nodeId2', 'volumeId~nodeId3']));
414
+ const result = await Array.fromAsync(
415
+ api.restoreNodes(['volumeId~nodeId1', 'volumeId~nodeId2', 'volumeId~nodeId3']),
416
+ );
369
417
  expect(result).toEqual([
370
418
  { uid: 'volumeId~nodeId1', ok: true },
371
419
  { uid: 'volumeId~nodeId2', ok: false, error: 'INSUFFICIENT_SCOPE' },
@@ -373,7 +421,7 @@ describe("nodeAPIService", () => {
373
421
  ]);
374
422
  });
375
423
 
376
- it('should fail restoring from multiple volumes', async () => {
424
+ it('should fail restoring from multiple volumes', async () => {
377
425
  try {
378
426
  await Array.fromAsync(api.restoreNodes(['volumeId1~nodeId1', 'volumeId2~nodeId2']));
379
427
  throw new Error('Should have thrown');
@@ -386,23 +434,25 @@ describe("nodeAPIService", () => {
386
434
  describe('deleteNOdes', () => {
387
435
  it('should delete nodes', async () => {
388
436
  // @ts-expect-error Mocking for testing purposes
389
- apiMock.post = jest.fn(async () => Promise.resolve({
390
- Responses: [
391
- {
392
- LinkID: 'nodeId1',
393
- Response: {
394
- Code: ErrorCode.OK,
395
- }
396
- },
397
- {
398
- LinkID: 'nodeId2',
399
- Response: {
400
- Code: 2027,
401
- Error: 'INSUFFICIENT_SCOPE'
402
- }
403
- }
404
- ],
405
- }));
437
+ apiMock.post = jest.fn(async () =>
438
+ Promise.resolve({
439
+ Responses: [
440
+ {
441
+ LinkID: 'nodeId1',
442
+ Response: {
443
+ Code: ErrorCode.OK,
444
+ },
445
+ },
446
+ {
447
+ LinkID: 'nodeId2',
448
+ Response: {
449
+ Code: 2027,
450
+ Error: 'INSUFFICIENT_SCOPE',
451
+ },
452
+ },
453
+ ],
454
+ }),
455
+ );
406
456
 
407
457
  const result = await Array.fromAsync(api.deleteNodes(['volumeId~nodeId1', 'volumeId~nodeId2']));
408
458
  expect(result).toEqual([
@@ -411,7 +461,7 @@ describe("nodeAPIService", () => {
411
461
  ]);
412
462
  });
413
463
 
414
- it('should fail deleting nodes from multiple volumes', async () => {
464
+ it('should fail deleting nodes from multiple volumes', async () => {
415
465
  try {
416
466
  await Array.fromAsync(api.deleteNodes(['volumeId1~nodeId1', 'volumeId2~nodeId2']));
417
467
  throw new Error('Should have thrown');