@protontech/drive-sdk 0.14.10 → 0.15.0

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 (358) hide show
  1. package/README.md +5 -0
  2. package/dist/cache/index.d.ts +1 -1
  3. package/dist/cache/memoryCache.d.ts +1 -1
  4. package/dist/cache/nullCache.d.ts +1 -1
  5. package/dist/crypto/driveCrypto.d.ts +7 -11
  6. package/dist/crypto/driveCrypto.js +35 -38
  7. package/dist/crypto/driveCrypto.js.map +1 -1
  8. package/dist/crypto/driveCrypto.test.js +1 -21
  9. package/dist/crypto/driveCrypto.test.js.map +1 -1
  10. package/dist/crypto/index.d.ts +2 -4
  11. package/dist/crypto/index.js +3 -6
  12. package/dist/crypto/index.js.map +1 -1
  13. package/dist/crypto/interface.d.ts +3 -35
  14. package/dist/crypto/interface.js +0 -7
  15. package/dist/crypto/interface.js.map +1 -1
  16. package/dist/crypto/openPGPCrypto.d.ts +10 -106
  17. package/dist/crypto/openPGPCrypto.js +2 -4
  18. package/dist/crypto/openPGPCrypto.js.map +1 -1
  19. package/dist/diagnostic/index.d.ts +1 -1
  20. package/dist/diagnostic/index.js +1 -1
  21. package/dist/diagnostic/index.js.map +1 -1
  22. package/dist/diagnostic/integrityVerificationStream.js +1 -2
  23. package/dist/diagnostic/integrityVerificationStream.js.map +1 -1
  24. package/dist/diagnostic/interface.d.ts +1 -1
  25. package/dist/diagnostic/nodeUtils.d.ts +1 -1
  26. package/dist/diagnostic/sdkDiagnosticBase.d.ts +2 -2
  27. package/dist/diagnostic/sdkDiagnosticBase.js.map +1 -1
  28. package/dist/diagnostic/sdkDiagnosticMain.js +1 -1
  29. package/dist/diagnostic/sdkDiagnosticMain.js.map +1 -1
  30. package/dist/diagnostic/sdkDiagnosticPhotos.js +1 -1
  31. package/dist/diagnostic/sdkDiagnosticPhotos.js.map +1 -1
  32. package/dist/index.d.ts +4 -3
  33. package/dist/index.js +2 -2
  34. package/dist/index.js.map +1 -1
  35. package/dist/interface/account.d.ts +1 -1
  36. package/dist/interface/devices.d.ts +1 -1
  37. package/dist/interface/index.d.ts +15 -15
  38. package/dist/interface/index.js +7 -7
  39. package/dist/interface/index.js.map +1 -1
  40. package/dist/interface/nodes.d.ts +1 -1
  41. package/dist/interface/photos.d.ts +1 -1
  42. package/dist/interface/sharing.d.ts +2 -2
  43. package/dist/internal/apiService/apiService.js +1 -1
  44. package/dist/internal/apiService/apiService.js.map +1 -1
  45. package/dist/internal/apiService/coreTypes.d.ts +8552 -7249
  46. package/dist/internal/apiService/driveTypes.d.ts +47 -92
  47. package/dist/internal/apiService/errors.test.js +1 -1
  48. package/dist/internal/apiService/errors.test.js.map +1 -1
  49. package/dist/internal/apiService/index.d.ts +4 -4
  50. package/dist/internal/apiService/index.js +5 -5
  51. package/dist/internal/apiService/index.js.map +1 -1
  52. package/dist/internal/apiService/transformers.d.ts +1 -1
  53. package/dist/internal/devices/index.d.ts +1 -1
  54. package/dist/internal/devices/manager.test.js +1 -1
  55. package/dist/internal/devices/manager.test.js.map +1 -1
  56. package/dist/internal/download/cryptoService.js +3 -2
  57. package/dist/internal/download/cryptoService.js.map +1 -1
  58. package/dist/internal/download/fileDownloader.js +8 -7
  59. package/dist/internal/download/fileDownloader.js.map +1 -1
  60. package/dist/internal/download/fileDownloader.test.js +1 -1
  61. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  62. package/dist/internal/download/index.d.ts +2 -2
  63. package/dist/internal/download/index.js +1 -1
  64. package/dist/internal/download/index.js.map +1 -1
  65. package/dist/internal/download/interface.d.ts +1 -1
  66. package/dist/internal/download/telemetry.js +2 -3
  67. package/dist/internal/download/telemetry.js.map +1 -1
  68. package/dist/internal/download/telemetry.test.js +5 -0
  69. package/dist/internal/download/telemetry.test.js.map +1 -1
  70. package/dist/internal/download/thumbnailDownloader.d.ts +1 -1
  71. package/dist/internal/download/thumbnailDownloader.js +1 -1
  72. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  73. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  74. package/dist/internal/errors.d.ts +1 -0
  75. package/dist/internal/errors.js +11 -0
  76. package/dist/internal/errors.js.map +1 -1
  77. package/dist/internal/events/coreEventManager.test.js +1 -1
  78. package/dist/internal/events/coreEventManager.test.js.map +1 -1
  79. package/dist/internal/events/eventManager.d.ts +1 -1
  80. package/dist/internal/events/eventManager.js +1 -0
  81. package/dist/internal/events/eventManager.js.map +1 -1
  82. package/dist/internal/events/index.js +1 -1
  83. package/dist/internal/events/index.js.map +1 -1
  84. package/dist/internal/events/interface.d.ts +8 -0
  85. package/dist/internal/events/interface.js.map +1 -1
  86. package/dist/internal/events/volumeEventManager.js +1 -1
  87. package/dist/internal/events/volumeEventManager.js.map +1 -1
  88. package/dist/internal/events/volumeEventManager.test.js +1 -1
  89. package/dist/internal/events/volumeEventManager.test.js.map +1 -1
  90. package/dist/internal/nodes/apiService.d.ts +10 -4
  91. package/dist/internal/nodes/apiService.js +6 -2
  92. package/dist/internal/nodes/apiService.js.map +1 -1
  93. package/dist/internal/nodes/apiService.test.js +6 -2
  94. package/dist/internal/nodes/apiService.test.js.map +1 -1
  95. package/dist/internal/nodes/cache.d.ts +1 -1
  96. package/dist/internal/nodes/cryptoCache.d.ts +1 -1
  97. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  98. package/dist/internal/nodes/cryptoReporter.d.ts +1 -1
  99. package/dist/internal/nodes/cryptoService.d.ts +2 -2
  100. package/dist/internal/nodes/cryptoService.js +2 -2
  101. package/dist/internal/nodes/cryptoService.js.map +1 -1
  102. package/dist/internal/nodes/cryptoService.test.js +1 -1
  103. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  104. package/dist/internal/nodes/events.test.js.map +1 -1
  105. package/dist/internal/nodes/index.d.ts +4 -4
  106. package/dist/internal/nodes/index.js +2 -2
  107. package/dist/internal/nodes/index.js.map +1 -1
  108. package/dist/internal/nodes/index.test.js +3 -3
  109. package/dist/internal/nodes/index.test.js.map +1 -1
  110. package/dist/internal/nodes/interface.d.ts +1 -1
  111. package/dist/internal/nodes/nodesAccess.d.ts +2 -2
  112. package/dist/internal/nodes/nodesAccess.js +3 -3
  113. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  114. package/dist/internal/nodes/nodesAccess.test.js +2 -2
  115. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  116. package/dist/internal/nodes/nodesManagement.d.ts +1 -1
  117. package/dist/internal/nodes/nodesManagement.js +2 -2
  118. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  119. package/dist/internal/nodes/nodesManagement.test.js +6 -6
  120. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  121. package/dist/internal/nodes/nodesRevisions.d.ts +1 -1
  122. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  123. package/dist/internal/photos/addToAlbum.d.ts +1 -1
  124. package/dist/internal/photos/addToAlbum.js.map +1 -1
  125. package/dist/internal/photos/albumsCrypto.js.map +1 -1
  126. package/dist/internal/photos/albumsManager.test.js +1 -1
  127. package/dist/internal/photos/albumsManager.test.js.map +1 -1
  128. package/dist/internal/photos/apiService.js +1 -1
  129. package/dist/internal/photos/index.d.ts +2 -2
  130. package/dist/internal/photos/index.js +5 -5
  131. package/dist/internal/photos/index.js.map +1 -1
  132. package/dist/internal/photos/interface.d.ts +2 -2
  133. package/dist/internal/photos/nodes.d.ts +2 -2
  134. package/dist/internal/photos/nodes.js +11 -1
  135. package/dist/internal/photos/nodes.js.map +1 -1
  136. package/dist/internal/photos/nodes.test.js +17 -3
  137. package/dist/internal/photos/nodes.test.js.map +1 -1
  138. package/dist/internal/photos/photosManager.d.ts +1 -1
  139. package/dist/internal/photos/photosManager.js +1 -1
  140. package/dist/internal/photos/photosManager.js.map +1 -1
  141. package/dist/internal/photos/photosManager.test.js +1 -1
  142. package/dist/internal/photos/photosManager.test.js.map +1 -1
  143. package/dist/internal/photos/photosTransferPayloadBuilder.test.js.map +1 -1
  144. package/dist/internal/photos/timeline.test.js.map +1 -1
  145. package/dist/internal/photos/upload.d.ts +1 -1
  146. package/dist/internal/shares/apiService.d.ts +1 -1
  147. package/dist/internal/shares/cache.d.ts +1 -1
  148. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  149. package/dist/internal/shares/cryptoService.d.ts +2 -2
  150. package/dist/internal/shares/cryptoService.js +1 -1
  151. package/dist/internal/shares/cryptoService.js.map +1 -1
  152. package/dist/internal/shares/cryptoService.test.js +1 -1
  153. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  154. package/dist/internal/shares/index.d.ts +2 -2
  155. package/dist/internal/shares/index.js +1 -1
  156. package/dist/internal/shares/index.js.map +1 -1
  157. package/dist/internal/shares/manager.d.ts +2 -2
  158. package/dist/internal/shares/manager.js.map +1 -1
  159. package/dist/internal/sharing/apiService.d.ts +2 -2
  160. package/dist/internal/sharing/cryptoService.d.ts +2 -3
  161. package/dist/internal/sharing/cryptoService.js +10 -31
  162. package/dist/internal/sharing/cryptoService.js.map +1 -1
  163. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  164. package/dist/internal/sharing/index.d.ts +3 -3
  165. package/dist/internal/sharing/index.js +1 -1
  166. package/dist/internal/sharing/index.js.map +1 -1
  167. package/dist/internal/sharing/interface.d.ts +2 -2
  168. package/dist/internal/sharing/sharingAccess.d.ts +1 -1
  169. package/dist/internal/sharing/sharingAccess.js +1 -1
  170. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  171. package/dist/internal/sharing/sharingAccess.test.js +1 -1
  172. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  173. package/dist/internal/sharing/sharingManagement.d.ts +3 -3
  174. package/dist/internal/sharing/sharingManagement.js +1 -1
  175. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  176. package/dist/internal/sharing/sharingManagement.test.js +2 -2
  177. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  178. package/dist/internal/sharingPublic/cryptoReporter.d.ts +1 -1
  179. package/dist/internal/sharingPublic/cryptoReporter.js +1 -1
  180. package/dist/internal/sharingPublic/cryptoReporter.js.map +1 -1
  181. package/dist/internal/sharingPublic/index.d.ts +2 -2
  182. package/dist/internal/sharingPublic/index.js +3 -3
  183. package/dist/internal/sharingPublic/index.js.map +1 -1
  184. package/dist/internal/sharingPublic/nodes.d.ts +4 -4
  185. package/dist/internal/sharingPublic/nodes.js +4 -1
  186. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  187. package/dist/internal/sharingPublic/session/apiService.d.ts +1 -1
  188. package/dist/internal/sharingPublic/session/manager.d.ts +1 -1
  189. package/dist/internal/upload/apiService.d.ts +1 -1
  190. package/dist/internal/upload/apiService.js +13 -6
  191. package/dist/internal/upload/apiService.js.map +1 -1
  192. package/dist/internal/upload/cryptoService.d.ts +1 -1
  193. package/dist/internal/upload/cryptoService.js +5 -4
  194. package/dist/internal/upload/cryptoService.js.map +1 -1
  195. package/dist/internal/upload/fileUploader.test.js +1 -1
  196. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  197. package/dist/internal/upload/index.d.ts +2 -2
  198. package/dist/internal/upload/index.js.map +1 -1
  199. package/dist/internal/upload/interface.d.ts +1 -1
  200. package/dist/internal/upload/manager.d.ts +1 -1
  201. package/dist/internal/upload/manager.js +1 -1
  202. package/dist/internal/upload/manager.js.map +1 -1
  203. package/dist/internal/upload/smallFileUploader.test.js +1 -1
  204. package/dist/internal/upload/smallFileUploader.test.js.map +1 -1
  205. package/dist/internal/upload/streamUploader.d.ts +3 -3
  206. package/dist/internal/upload/streamUploader.js +1 -1
  207. package/dist/internal/upload/streamUploader.js.map +1 -1
  208. package/dist/internal/upload/streamUploader.test.js +2 -2
  209. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  210. package/dist/internal/upload/telemetry.d.ts +1 -1
  211. package/dist/internal/upload/telemetry.js +2 -3
  212. package/dist/internal/upload/telemetry.js.map +1 -1
  213. package/dist/internal/upload/telemetry.test.js +5 -0
  214. package/dist/internal/upload/telemetry.test.js.map +1 -1
  215. package/dist/polyfill.d.ts +1 -0
  216. package/dist/polyfill.js +4 -0
  217. package/dist/polyfill.js.map +1 -0
  218. package/dist/protonDriveClient.d.ts +1 -1
  219. package/dist/protonDriveClient.js +3 -3
  220. package/dist/protonDriveClient.js.map +1 -1
  221. package/dist/protonDrivePhotosClient.d.ts +7 -1
  222. package/dist/protonDrivePhotosClient.js +13 -4
  223. package/dist/protonDrivePhotosClient.js.map +1 -1
  224. package/dist/protonDrivePublicLinkClient.d.ts +3 -3
  225. package/dist/protonDrivePublicLinkClient.js +3 -3
  226. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  227. package/dist/transformers.d.ts +1 -1
  228. package/package.json +8 -4
  229. package/src/cache/index.ts +1 -1
  230. package/src/cache/memoryCache.ts +1 -1
  231. package/src/cache/nullCache.ts +1 -1
  232. package/src/crypto/driveCrypto.test.ts +1 -24
  233. package/src/crypto/driveCrypto.ts +37 -35
  234. package/src/crypto/index.ts +2 -4
  235. package/src/crypto/interface.ts +3 -49
  236. package/src/crypto/openPGPCrypto.ts +4 -88
  237. package/src/diagnostic/index.ts +3 -3
  238. package/src/diagnostic/integrityVerificationStream.ts +1 -2
  239. package/src/diagnostic/interface.ts +1 -1
  240. package/src/diagnostic/nodeUtils.ts +1 -1
  241. package/src/diagnostic/sdkDiagnosticBase.ts +6 -6
  242. package/src/diagnostic/sdkDiagnosticMain.ts +2 -2
  243. package/src/diagnostic/sdkDiagnosticPhotos.ts +2 -2
  244. package/src/diagnostic/telemetry.ts +1 -1
  245. package/src/index.ts +4 -3
  246. package/src/interface/account.ts +1 -1
  247. package/src/interface/devices.ts +1 -1
  248. package/src/interface/index.ts +40 -40
  249. package/src/interface/nodes.ts +1 -1
  250. package/src/interface/photos.ts +1 -1
  251. package/src/interface/sharing.ts +2 -2
  252. package/src/internal/apiService/apiService.test.ts +2 -2
  253. package/src/internal/apiService/apiService.ts +3 -3
  254. package/src/internal/apiService/coreTypes.ts +8641 -7349
  255. package/src/internal/apiService/driveTypes.ts +47 -92
  256. package/src/internal/apiService/errors.test.ts +2 -2
  257. package/src/internal/apiService/index.ts +4 -4
  258. package/src/internal/apiService/transformers.ts +1 -1
  259. package/src/internal/devices/index.ts +1 -1
  260. package/src/internal/devices/manager.test.ts +2 -2
  261. package/src/internal/download/cryptoService.ts +6 -11
  262. package/src/internal/download/fileDownloader.test.ts +3 -3
  263. package/src/internal/download/fileDownloader.ts +8 -6
  264. package/src/internal/download/index.ts +3 -3
  265. package/src/internal/download/interface.ts +1 -1
  266. package/src/internal/download/seekableStream.test.ts +1 -1
  267. package/src/internal/download/telemetry.test.ts +7 -1
  268. package/src/internal/download/telemetry.ts +4 -7
  269. package/src/internal/download/thumbnailDownloader.test.ts +1 -1
  270. package/src/internal/download/thumbnailDownloader.ts +2 -2
  271. package/src/internal/errors.ts +15 -0
  272. package/src/internal/events/apiService.ts +2 -2
  273. package/src/internal/events/coreEventManager.test.ts +1 -1
  274. package/src/internal/events/eventManager.ts +2 -1
  275. package/src/internal/events/index.ts +2 -2
  276. package/src/internal/events/interface.ts +8 -0
  277. package/src/internal/events/volumeEventManager.test.ts +1 -1
  278. package/src/internal/events/volumeEventManager.ts +1 -1
  279. package/src/internal/nodes/apiService.test.ts +8 -3
  280. package/src/internal/nodes/apiService.ts +22 -7
  281. package/src/internal/nodes/cache.test.ts +1 -1
  282. package/src/internal/nodes/cache.ts +1 -1
  283. package/src/internal/nodes/cryptoCache.test.ts +1 -1
  284. package/src/internal/nodes/cryptoCache.ts +1 -1
  285. package/src/internal/nodes/cryptoReporter.ts +4 -4
  286. package/src/internal/nodes/cryptoService.test.ts +2 -2
  287. package/src/internal/nodes/cryptoService.ts +14 -15
  288. package/src/internal/nodes/events.test.ts +1 -1
  289. package/src/internal/nodes/extendedAttributes.test.ts +3 -3
  290. package/src/internal/nodes/index.test.ts +8 -8
  291. package/src/internal/nodes/index.ts +6 -6
  292. package/src/internal/nodes/interface.ts +6 -6
  293. package/src/internal/nodes/nodeName.test.ts +1 -1
  294. package/src/internal/nodes/nodesAccess.test.ts +3 -3
  295. package/src/internal/nodes/nodesAccess.ts +6 -6
  296. package/src/internal/nodes/nodesManagement.test.ts +4 -4
  297. package/src/internal/nodes/nodesManagement.ts +6 -6
  298. package/src/internal/nodes/nodesRevisions.ts +1 -1
  299. package/src/internal/photos/addToAlbum.ts +1 -1
  300. package/src/internal/photos/albumsCrypto.ts +1 -0
  301. package/src/internal/photos/albumsManager.test.ts +2 -2
  302. package/src/internal/photos/apiService.ts +1 -1
  303. package/src/internal/photos/index.ts +7 -7
  304. package/src/internal/photos/interface.ts +2 -2
  305. package/src/internal/photos/nodes.test.ts +22 -6
  306. package/src/internal/photos/nodes.ts +16 -9
  307. package/src/internal/photos/photosManager.test.ts +5 -5
  308. package/src/internal/photos/photosManager.ts +4 -4
  309. package/src/internal/photos/photosTransferPayloadBuilder.test.ts +1 -1
  310. package/src/internal/photos/timeline.test.ts +1 -1
  311. package/src/internal/photos/upload.ts +3 -3
  312. package/src/internal/sdkEvents.ts +1 -1
  313. package/src/internal/shares/apiService.ts +1 -1
  314. package/src/internal/shares/cache.ts +1 -1
  315. package/src/internal/shares/cryptoCache.test.ts +1 -1
  316. package/src/internal/shares/cryptoService.test.ts +1 -1
  317. package/src/internal/shares/cryptoService.ts +8 -8
  318. package/src/internal/shares/index.ts +5 -5
  319. package/src/internal/shares/manager.ts +2 -2
  320. package/src/internal/sharing/apiService.ts +10 -10
  321. package/src/internal/sharing/cryptoService.test.ts +1 -1
  322. package/src/internal/sharing/cryptoService.ts +12 -37
  323. package/src/internal/sharing/events.test.ts +2 -2
  324. package/src/internal/sharing/index.ts +3 -3
  325. package/src/internal/sharing/interface.ts +2 -2
  326. package/src/internal/sharing/sharingAccess.test.ts +4 -4
  327. package/src/internal/sharing/sharingAccess.ts +3 -3
  328. package/src/internal/sharing/sharingManagement.test.ts +4 -4
  329. package/src/internal/sharing/sharingManagement.ts +9 -9
  330. package/src/internal/sharingPublic/cryptoReporter.ts +7 -7
  331. package/src/internal/sharingPublic/index.ts +6 -6
  332. package/src/internal/sharingPublic/nodes.ts +7 -4
  333. package/src/internal/sharingPublic/session/apiService.ts +1 -1
  334. package/src/internal/sharingPublic/session/manager.ts +1 -1
  335. package/src/internal/upload/apiService.ts +17 -8
  336. package/src/internal/upload/cryptoService.ts +8 -6
  337. package/src/internal/upload/fileUploader.test.ts +4 -4
  338. package/src/internal/upload/index.ts +3 -3
  339. package/src/internal/upload/interface.ts +1 -2
  340. package/src/internal/upload/manager.ts +4 -4
  341. package/src/internal/upload/smallFileUploader.test.ts +4 -4
  342. package/src/internal/upload/streamUploader.test.ts +5 -5
  343. package/src/internal/upload/streamUploader.ts +4 -4
  344. package/src/internal/upload/telemetry.test.ts +7 -1
  345. package/src/internal/upload/telemetry.ts +5 -8
  346. package/src/polyfill.ts +1 -0
  347. package/src/protonDriveClient.ts +32 -32
  348. package/src/protonDrivePhotosClient.ts +42 -32
  349. package/src/protonDrivePublicLinkClient.ts +25 -25
  350. package/src/transformers.ts +9 -9
  351. package/dist/crypto/hmac.d.ts +0 -22
  352. package/dist/crypto/hmac.js +0 -44
  353. package/dist/crypto/hmac.js.map +0 -1
  354. package/dist/crypto/utils.d.ts +0 -2
  355. package/dist/crypto/utils.js +0 -35
  356. package/dist/crypto/utils.js.map +0 -1
  357. package/src/crypto/hmac.ts +0 -46
  358. package/src/crypto/utils.ts +0 -40
@@ -2684,27 +2684,6 @@ export interface paths {
2684
2684
  patch?: never;
2685
2685
  trace?: never;
2686
2686
  };
2687
- "/drive/shares/{shareID}/property": {
2688
- parameters: {
2689
- query?: never;
2690
- header?: never;
2691
- path?: never;
2692
- cookie?: never;
2693
- };
2694
- get?: never;
2695
- put?: never;
2696
- /**
2697
- * Update properties of a share
2698
- * @deprecated
2699
- * @description Update the values on one or more properties of the Share. For now, only allowed changing editorsCanShare attribute
2700
- */
2701
- post: operations["post_drive-shares-{shareID}-property"];
2702
- delete?: never;
2703
- options?: never;
2704
- head?: never;
2705
- patch?: never;
2706
- trace?: never;
2707
- };
2708
2687
  "/drive/migrations/shareaccesswithnode": {
2709
2688
  parameters: {
2710
2689
  query?: never;
@@ -3434,13 +3413,15 @@ export interface components {
3434
3413
  };
3435
3414
  /** @description Address ID */
3436
3415
  AddressID: string;
3416
+ /** @description An encrypted ID */
3417
+ LongId: string;
3437
3418
  ShareDataDto: {
3438
3419
  AddressID: components["schemas"]["AddressID"];
3439
3420
  Key: components["schemas"]["PGPPrivateKey"];
3440
3421
  Passphrase: components["schemas"]["PGPMessage"];
3441
3422
  PassphraseSignature: components["schemas"]["PGPSignature"];
3442
3423
  /** @description User's encrypted AddressKeyID. Must be the primary key from the AddressID */
3443
- AddressKeyID?: components["schemas"]["Id"] | null;
3424
+ AddressKeyID?: components["schemas"]["LongId"] | null;
3444
3425
  };
3445
3426
  LinkDataDto: {
3446
3427
  /** @description Root folder name */
@@ -3700,7 +3681,7 @@ export interface components {
3700
3681
  BookmarkShareURLRequestDto: {
3701
3682
  EncryptedUrlPassword?: components["schemas"]["PGPMessage"] | null;
3702
3683
  AddressID: components["schemas"]["AddressID"];
3703
- AddressKeyID: components["schemas"]["Id"];
3684
+ AddressKeyID: components["schemas"]["LongId"];
3704
3685
  };
3705
3686
  CreateBookmarkShareURLRequestDto: {
3706
3687
  BookmarkShareURL: components["schemas"]["BookmarkShareURLRequestDto"];
@@ -3711,7 +3692,7 @@ export interface components {
3711
3692
  */
3712
3693
  BookmarkShareURLState: 1 | 3;
3713
3694
  BookmarkShareURLResponseDto: {
3714
- UserID: components["schemas"]["Id"];
3695
+ UserID: components["schemas"]["LongId"];
3715
3696
  Token: string;
3716
3697
  ShareURLID: components["schemas"]["Id"];
3717
3698
  EncryptedUrlPassword: components["schemas"]["PGPMessage"] | null;
@@ -3823,7 +3804,7 @@ export interface components {
3823
3804
  Passphrase: components["schemas"]["PGPMessage"];
3824
3805
  PassphraseSignature: components["schemas"]["PGPSignature"];
3825
3806
  /** @description User's encrypted AddressKeyID. Must be the primary key from the AddressID */
3826
- AddressKeyID?: components["schemas"]["Id"] | null;
3807
+ AddressKeyID?: components["schemas"]["LongId"] | null;
3827
3808
  /**
3828
3809
  * @deprecated
3829
3810
  * @default null
@@ -3971,8 +3952,10 @@ export interface components {
3971
3952
  */
3972
3953
  Code: 1000;
3973
3954
  };
3955
+ /** @description An encrypted ID */
3956
+ ShortId: string;
3974
3957
  LatestEventIDResponseDto: {
3975
- EventID: components["schemas"]["Id"];
3958
+ EventID: components["schemas"]["ShortId"];
3976
3959
  /**
3977
3960
  * ProtonResponseCode
3978
3961
  * @example 1000
@@ -4285,7 +4268,7 @@ export interface components {
4285
4268
  } | null;
4286
4269
  };
4287
4270
  EventResponseDto: {
4288
- EventID: components["schemas"]["Id"];
4271
+ EventID: components["schemas"]["ShortId"];
4289
4272
  EventType: components["schemas"]["EventType"];
4290
4273
  /** @description Event creation timestamp */
4291
4274
  CreateTime: number;
@@ -4330,7 +4313,7 @@ export interface components {
4330
4313
  ListEventsResponseDto: {
4331
4314
  Events: components["schemas"]["EventResponseDto"][];
4332
4315
  /** @description Last event ID that can be used on the next call. Will be latest/newest-event-id if requested last-event-id does not exist. */
4333
- EventID: components["schemas"]["Id"];
4316
+ EventID: components["schemas"]["ShortId"];
4334
4317
  /**
4335
4318
  * @description 1 if there is more to pull, i.e. there are more events than returned in one call
4336
4319
  * @enum {integer}
@@ -4355,18 +4338,20 @@ export interface components {
4355
4338
  IsTrashed: boolean;
4356
4339
  };
4357
4340
  EventV2ResponseDto: {
4358
- EventID: components["schemas"]["Id"];
4341
+ EventID: components["schemas"]["ShortId"];
4359
4342
  EventType: components["schemas"]["EventType"];
4360
4343
  Link: components["schemas"]["EventLinkDataDto"];
4361
4344
  };
4362
4345
  ListEventsV2ResponseDto: {
4363
4346
  Events: components["schemas"]["EventV2ResponseDto"][];
4364
4347
  /** @description Last event ID that can be used on the next call. Will be latest/newest-event-id if requested last-event-id does not exist. */
4365
- EventID: components["schemas"]["Id"];
4348
+ EventID: components["schemas"]["ShortId"];
4366
4349
  /** @description true if there is more to pull, i.e. there are more events than returned in one call */
4367
4350
  More: boolean;
4368
4351
  /** @description true if client needs to refresh from scratch as their provided event does not exist anymore, i.e. too much time passed since the last event sync */
4369
4352
  Refresh: boolean;
4353
+ /** @description true if client should skip SDK-side quota checks (e.g. user has an active free upload timer) */
4354
+ DisableSdkQuotaChecks: boolean;
4370
4355
  /**
4371
4356
  * ProtonResponseCode
4372
4357
  * @example 1000
@@ -4497,6 +4482,7 @@ export interface components {
4497
4482
  PhotosDto: {
4498
4483
  /** @description Photo content hash, hmacsha256 of sha1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ] */
4499
4484
  ContentHash: string;
4485
+ /** @default [] */
4500
4486
  RelatedPhotos: components["schemas"]["RelatedPhotoDto"][];
4501
4487
  };
4502
4488
  CopyLinkRequestDto: {
@@ -4667,7 +4653,7 @@ export interface components {
4667
4653
  };
4668
4654
  MembershipDto: {
4669
4655
  ShareID: components["schemas"]["Id"];
4670
- MembershipID: components["schemas"]["Id"];
4656
+ MembershipID: components["schemas"]["ShortId"];
4671
4657
  /**
4672
4658
  * @description Permission bitfield, valid permissions:
4673
4659
  * - 4: read access
@@ -4911,7 +4897,7 @@ export interface components {
4911
4897
  NodesWithMissingNodeHashKey: components["schemas"]["UpdateMissingHashKeyItemDto"][];
4912
4898
  };
4913
4899
  CommitRevisionPhotoDto: {
4914
- /** @description Photo capture timestamp */
4900
+ /** @description Photo capture timestamp, use negative values for times before 1970 */
4915
4901
  CaptureTime: number;
4916
4902
  /** @description Photo content hash, lowercase hex representation of HMAC SHA256 of SHA1 content using parent folder's hash key [ hmacSha256(folder hash key, sha1(plain content)) ] */
4917
4903
  ContentHash: string;
@@ -5538,8 +5524,10 @@ export interface components {
5538
5524
  };
5539
5525
  PhotoFileDto: {
5540
5526
  ActiveRevision: components["schemas"]["ActivePhotoRevisionDto"] | null;
5541
- CaptureTime: number;
5527
+ /** @description Timestamp of the photo capture in seconds since the Unix epoch; null on draft links */
5528
+ CaptureTime?: number | null;
5542
5529
  MainPhotoLinkID: components["schemas"]["Id"] | null;
5530
+ /** @description Photo content hash, lowercase hex representation of HMAC SHA256 of SHA1 content using parent folder's hash key; Null on draft links */
5543
5531
  ContentHash: string | null;
5544
5532
  RelatedPhotosLinkIDs: components["schemas"]["Id"][];
5545
5533
  Albums: components["schemas"]["PhotoAlbumDto"][];
@@ -5902,7 +5890,7 @@ export interface components {
5902
5890
  };
5903
5891
  PhotoResponseDto: {
5904
5892
  LinkID: components["schemas"]["Id"];
5905
- /** @description Unix timestamp of when the photo was taken as extracted by client from exif */
5893
+ /** @description Unix timestamp of when the photo was taken as extracted by client from exif. Negative values represent times before 1970 */
5906
5894
  CaptureTime: number;
5907
5895
  MainPhotoLinkID: components["schemas"]["Id"] | null;
5908
5896
  /** @description File name hash */
@@ -6231,7 +6219,7 @@ export interface components {
6231
6219
  Key: components["schemas"]["PGPPrivateKey"];
6232
6220
  Passphrase: components["schemas"]["PGPMessage"];
6233
6221
  PassphraseSignature: components["schemas"]["PGPSignature"];
6234
- AddressID: components["schemas"]["Id"];
6222
+ AddressID: components["schemas"]["LongId"];
6235
6223
  InviterSharePassphraseKeyPacketSignature?: components["schemas"]["PGPSignature"] | null;
6236
6224
  InviteeSharePassphraseSessionKeySignature?: components["schemas"]["PGPSignature"] | null;
6237
6225
  };
@@ -6276,10 +6264,10 @@ export interface components {
6276
6264
  */
6277
6265
  ShareMemberState: 1 | 2 | 3;
6278
6266
  MemberResponseDto: {
6279
- MemberID: components["schemas"]["Id"];
6267
+ MemberID: components["schemas"]["ShortId"];
6280
6268
  ShareID: components["schemas"]["Id"];
6281
- AddressID: components["schemas"]["Id"];
6282
- AddressKeyID: components["schemas"]["Id"];
6269
+ AddressID: components["schemas"]["LongId"];
6270
+ AddressKeyID: components["schemas"]["LongId"];
6283
6271
  /** Format: email */
6284
6272
  Inviter: string;
6285
6273
  /**
@@ -6311,8 +6299,8 @@ export interface components {
6311
6299
  Unlockable: boolean | null;
6312
6300
  };
6313
6301
  KeyPacketResponseDto: {
6314
- AddressID: components["schemas"]["Id"];
6315
- AddressKeyID: components["schemas"]["Id"];
6302
+ AddressID: components["schemas"]["LongId"];
6303
+ AddressKeyID: components["schemas"]["LongId"];
6316
6304
  KeyPacket: components["schemas"]["BinaryString"];
6317
6305
  /** @description 1=active, 3=locked */
6318
6306
  State: components["schemas"]["ShareMemberState"];
@@ -6357,12 +6345,12 @@ export interface components {
6357
6345
  Passphrase: components["schemas"]["PGPMessage"];
6358
6346
  PassphraseSignature: components["schemas"]["PGPSignature"];
6359
6347
  /** @description Address ID of the current user's address for the membership of this share. Can be missing if the user is not a direct member of the share. */
6360
- AddressID: components["schemas"]["Id"] | null;
6348
+ AddressID: components["schemas"]["LongId"] | null;
6361
6349
  /**
6362
6350
  * @deprecated
6363
6351
  * @description Clients should not use this field but pass the address keyring when validating and decrypting related fields.
6364
6352
  */
6365
- AddressKeyID?: components["schemas"]["Id"] | null;
6353
+ AddressKeyID?: components["schemas"]["LongId"] | null;
6366
6354
  /** @description Your own memberships */
6367
6355
  Memberships: components["schemas"]["MemberResponseDto"][];
6368
6356
  /**
@@ -6434,13 +6422,6 @@ export interface components {
6434
6422
  /** @description Indicates if editor members of this share could reshare it or not */
6435
6423
  Value: boolean;
6436
6424
  };
6437
- UpdateSharePropertyRequestDto: {
6438
- /**
6439
- * @description Indicates if editor members of this share could reshare it or not
6440
- * @default null
6441
- */
6442
- EditorsCanShare: boolean | null;
6443
- };
6444
6425
  ShareKPMigrationData: {
6445
6426
  /** @description Share to migrate. Can only be Active (State=1) Shares of Type=2 */
6446
6427
  ShareID: components["schemas"]["Id"];
@@ -6563,7 +6544,7 @@ export interface components {
6563
6544
  Code: 1000;
6564
6545
  };
6565
6546
  ExternalInvitationRequestDto: {
6566
- InviterAddressID: components["schemas"]["Id"];
6547
+ InviterAddressID: components["schemas"]["LongId"];
6567
6548
  /** Format: email */
6568
6549
  InviteeEmail: string;
6569
6550
  /**
@@ -6593,7 +6574,7 @@ export interface components {
6593
6574
  */
6594
6575
  ExternalInvitationState: 1 | 2 | 4;
6595
6576
  ExternalInvitationResponseDto: {
6596
- ExternalInvitationID: components["schemas"]["Id"];
6577
+ ExternalInvitationID: components["schemas"]["ShortId"];
6597
6578
  /** Format: email */
6598
6579
  InviterEmail: string;
6599
6580
  /** Format: email */
@@ -6633,12 +6614,12 @@ export interface components {
6633
6614
  UserRegisteredExternalInvitationItemDto: {
6634
6615
  VolumeID: components["schemas"]["Id"];
6635
6616
  ShareID: components["schemas"]["Id"];
6636
- ExternalInvitationID: components["schemas"]["Id"];
6617
+ ExternalInvitationID: components["schemas"]["ShortId"];
6637
6618
  };
6638
6619
  ListUserRegisteredExternalInvitationResponseDto: {
6639
6620
  ExternalInvitations: components["schemas"]["UserRegisteredExternalInvitationItemDto"][];
6640
6621
  /** @description Used for pagination, pass to the next call to get the next page of results */
6641
- AnchorID: components["schemas"]["Id"] | null;
6622
+ AnchorID: components["schemas"]["ShortId"] | null;
6642
6623
  /** @description Indicates if there is a next page of results */
6643
6624
  More: boolean;
6644
6625
  /**
@@ -6680,7 +6661,7 @@ export interface components {
6680
6661
  /** @description Signature of the above member key packet with the private key of the user (inviter) and the signature context `drive.share-member.inviter`, base64 encoded */
6681
6662
  KeyPacketSignature: components["schemas"]["BinaryString"];
6682
6663
  /** @default null */
6683
- ExternalInvitationID: components["schemas"]["Id"] | null;
6664
+ ExternalInvitationID: components["schemas"]["ShortId"] | null;
6684
6665
  };
6685
6666
  InviteUserRequestDto: {
6686
6667
  Invitation: components["schemas"]["InvitationRequestDto"];
@@ -6688,7 +6669,7 @@ export interface components {
6688
6669
  EmailDetails: components["schemas"]["InvitationEmailDetailsRequestDto"] | null;
6689
6670
  };
6690
6671
  InvitationResponseDto: {
6691
- InvitationID: components["schemas"]["Id"];
6672
+ InvitationID: components["schemas"]["ShortId"];
6692
6673
  /** Format: email */
6693
6674
  InviterEmail: string;
6694
6675
  /** Format: email */
@@ -6741,7 +6722,7 @@ export interface components {
6741
6722
  PendingInvitationItemDto: {
6742
6723
  VolumeID: components["schemas"]["Id"];
6743
6724
  ShareID: components["schemas"]["Id"];
6744
- InvitationID: components["schemas"]["Id"];
6725
+ InvitationID: components["schemas"]["ShortId"];
6745
6726
  /** @description The target type of the Share that is corresponding to this invitation.
6746
6727
  * This should not be used as source of information to know what NodeType or MIMEType the targeted Share is. */
6747
6728
  ShareTargetType: components["schemas"]["TargetType"];
@@ -6749,7 +6730,7 @@ export interface components {
6749
6730
  ListPendingInvitationResponseDto: {
6750
6731
  Invitations: components["schemas"]["PendingInvitationItemDto"][];
6751
6732
  /** @description Used for pagination, pass to the next call to get the next page of results */
6752
- AnchorID: components["schemas"]["Id"] | null;
6733
+ AnchorID: components["schemas"]["ShortId"] | null;
6753
6734
  /** @description Indicates if there is a next page of results */
6754
6735
  More: boolean;
6755
6736
  /**
@@ -6816,7 +6797,7 @@ export interface components {
6816
6797
  Code: 1000;
6817
6798
  };
6818
6799
  MemberResponseDto2: {
6819
- MemberID: components["schemas"]["Id"];
6800
+ MemberID: components["schemas"]["ShortId"];
6820
6801
  /** Format: email */
6821
6802
  InviterEmail: string;
6822
6803
  /** Format: email */
@@ -6968,7 +6949,7 @@ export interface components {
6968
6949
  CreateOrgVolumeRequestDto: {
6969
6950
  AddressID: components["schemas"]["AddressID"];
6970
6951
  /** @description XX's encrypted AddressKeyID. Must be the primary key from the AddressID */
6971
- AddressKeyID: components["schemas"]["Id"];
6952
+ AddressKeyID: components["schemas"]["LongId"];
6972
6953
  ShareKey: components["schemas"]["PGPPrivateKey"];
6973
6954
  SharePassphrase: components["schemas"]["PGPMessage"];
6974
6955
  SharePassphraseSignature: components["schemas"]["PGPSignature"];
@@ -6977,7 +6958,7 @@ export interface components {
6977
6958
  FolderPassphrase: components["schemas"]["PGPMessage"];
6978
6959
  FolderPassphraseSignature: components["schemas"]["PGPSignature"];
6979
6960
  FolderHashKey: components["schemas"]["PGPMessage"];
6980
- OrganizationID: components["schemas"]["Id"];
6961
+ OrganizationID: components["schemas"]["LongId"];
6981
6962
  /** @description Name of the org. volume. It's plain text so that name can be displayed in UI menu */
6982
6963
  VolumeName: string;
6983
6964
  };
@@ -7026,7 +7007,7 @@ export interface components {
7026
7007
  FolderPassphraseSignature: components["schemas"]["PGPSignature"];
7027
7008
  FolderHashKey: components["schemas"]["PGPMessage"];
7028
7009
  /** @description User's encrypted AddressKeyID. Must be the primary key from the AddressID */
7029
- AddressKeyID?: components["schemas"]["Id"] | null;
7010
+ AddressKeyID?: components["schemas"]["LongId"] | null;
7030
7011
  /**
7031
7012
  * @deprecated
7032
7013
  * @default null
@@ -7039,8 +7020,8 @@ export interface components {
7039
7020
  ShareName: string | null;
7040
7021
  };
7041
7022
  OrgVolumeResponseDto: {
7042
- ShareID: components["schemas"]["Id"];
7043
- VolumeID: components["schemas"]["Id"];
7023
+ ShareID: components["schemas"]["ShortId"];
7024
+ VolumeID: components["schemas"]["ShortId"];
7044
7025
  /** @description Name of the org. volume */
7045
7026
  Name: string;
7046
7027
  /** @description Membership creation time */
@@ -7056,7 +7037,7 @@ export interface components {
7056
7037
  Code: 1000;
7057
7038
  };
7058
7039
  OrgVolumeForAdminResponseDto: {
7059
- VolumeID: components["schemas"]["Id"];
7040
+ VolumeID: components["schemas"]["ShortId"];
7060
7041
  /** @description Name of the org. volume */
7061
7042
  Name: string;
7062
7043
  };
@@ -7110,7 +7091,7 @@ export interface components {
7110
7091
  /** @default [] */
7111
7092
  PhotoShares: components["schemas"]["RestoreRootShareDto"][];
7112
7093
  /** @description User's encrypted AddressKeyID. Must be the primary key from the signatureAddress */
7113
- AddressKeyID?: components["schemas"]["Id"] | null;
7094
+ AddressKeyID?: components["schemas"]["LongId"] | null;
7114
7095
  };
7115
7096
  AddPhotoToAlbumWithLinkIDResponseDto: Record<string, never>;
7116
7097
  MultiResponsesPerLinkFactory: {
@@ -12466,33 +12447,6 @@ export interface operations {
12466
12447
  };
12467
12448
  };
12468
12449
  };
12469
- "post_drive-shares-{shareID}-property": {
12470
- parameters: {
12471
- query?: never;
12472
- header?: never;
12473
- path: {
12474
- shareID: string;
12475
- };
12476
- cookie?: never;
12477
- };
12478
- requestBody?: {
12479
- content: {
12480
- "application/json": components["schemas"]["UpdateSharePropertyRequestDto"];
12481
- };
12482
- };
12483
- responses: {
12484
- /** @description Success */
12485
- 200: {
12486
- headers: {
12487
- "x-pm-code": 1000;
12488
- [name: string]: unknown;
12489
- };
12490
- content: {
12491
- "application/json": components["schemas"]["SuccessfulResponse"];
12492
- };
12493
- };
12494
- };
12495
- };
12496
12450
  "post_drive-migrations-shareaccesswithnode": {
12497
12451
  parameters: {
12498
12452
  query?: never;
@@ -13071,6 +13025,7 @@ export interface operations {
13071
13025
  * - 200502: key packet signature is invalid
13072
13026
  * - 200600: maximum number of invitations and members reached for current share
13073
13027
  * - 200202: Sharing with groups is not available yet.
13028
+ * - 2011: You do not have permission to invite this group. Please reach out to the group admin.
13074
13029
  * */
13075
13030
  Code: number;
13076
13031
  };
@@ -1,7 +1,7 @@
1
1
  import { AbortError } from '../../errors';
2
- import { apiErrorFactory } from './errors';
3
- import * as errors from './errors';
4
2
  import { ErrorCode } from './errorCodes';
3
+ import * as errors from './errors';
4
+ import { apiErrorFactory } from './errors';
5
5
 
6
6
  function mockAPIResponseAndResult(options: {
7
7
  httpStatusCode?: number;
@@ -1,7 +1,7 @@
1
1
  export { DriveAPIService } from './apiService';
2
- export type { paths as drivePaths } from './driveTypes';
3
2
  export type { paths as corePaths } from './coreTypes';
4
- export { HTTPErrorCode, ErrorCode, isCodeOk, isCodeOkAsync } from './errorCodes';
5
- export { nodeTypeNumberToNodeType, permissionsToMemberRole, memberRoleToPermission } from './transformers';
6
- export { ObserverStream } from './observerStream';
3
+ export type { paths as drivePaths } from './driveTypes';
4
+ export { ErrorCode, HTTPErrorCode, isCodeOk, isCodeOkAsync } from './errorCodes';
7
5
  export * from './errors';
6
+ export { ObserverStream } from './observerStream';
7
+ export { memberRoleToPermission, nodeTypeNumberToNodeType, permissionsToMemberRole } from './transformers';
@@ -1,4 +1,4 @@
1
- import { Logger, NodeType, MemberRole } from '../../interface';
1
+ import { Logger, MemberRole, NodeType } from '../../interface';
2
2
 
3
3
  enum ShareTargetType {
4
4
  Root = 0,
@@ -3,7 +3,7 @@ import { ProtonDriveTelemetry } from '../../interface';
3
3
  import { DriveAPIService } from '../apiService';
4
4
  import { DevicesAPIService } from './apiService';
5
5
  import { DevicesCryptoService } from './cryptoService';
6
- import { SharesService, NodesService, NodesManagementService } from './interface';
6
+ import { NodesManagementService, NodesService, SharesService } from './interface';
7
7
  import { DevicesManager } from './manager';
8
8
 
9
9
  /**
@@ -1,9 +1,9 @@
1
- import { Device, DeviceType, Logger } from '../../interface';
2
1
  import { ValidationError } from '../../errors';
2
+ import { Device, DeviceType, Logger } from '../../interface';
3
3
  import { getMockLogger } from '../../tests/logger';
4
4
  import { DevicesAPIService } from './apiService';
5
5
  import { DevicesCryptoService } from './cryptoService';
6
- import { SharesService, NodesService, NodesManagementService, DeviceMetadata } from './interface';
6
+ import { DeviceMetadata, NodesManagementService, NodesService, SharesService } from './interface';
7
7
  import { DevicesManager } from './manager';
8
8
 
9
9
  describe('DevicesManager', () => {
@@ -1,15 +1,10 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import {
4
- DriveCrypto,
5
- PrivateKey,
6
- PublicKey,
7
- SessionKey,
8
- uint8ArrayToBase64String,
9
- VERIFICATION_STATUS,
10
- } from '../../crypto';
11
- import { ProtonDriveAccount, Revision } from '../../interface';
3
+ import { computeSHA256 } from '@protontech/crypto/subtle/hash.ts';
4
+
5
+ import { DriveCrypto, PrivateKey, PublicKey, SessionKey, VERIFICATION_STATUS } from '../../crypto';
12
6
  import { DecryptionError, IntegrityError } from '../../errors';
7
+ import { ProtonDriveAccount, Revision } from '../../interface';
13
8
  import { getErrorMessage } from '../errors';
14
9
  import { mergeUint8Arrays } from '../utils';
15
10
  import { RevisionKeys, SignatureVerificationError } from './interface';
@@ -73,8 +68,8 @@ export class DownloadCryptoService {
73
68
  }
74
69
 
75
70
  async verifyBlockIntegrity(encryptedBlock: Uint8Array<ArrayBuffer>, base64sha256Hash: string): Promise<void> {
76
- const digest = await crypto.subtle.digest('SHA-256', encryptedBlock);
77
- const expectedHash = uint8ArrayToBase64String(new Uint8Array(digest));
71
+ const digest = await computeSHA256(encryptedBlock);
72
+ const expectedHash = new Uint8Array(digest).toBase64();
78
73
 
79
74
  if (expectedHash !== base64sha256Hash) {
80
75
  throw new IntegrityError(c('Error').t`Data integrity check of one part failed`, {
@@ -1,11 +1,11 @@
1
+ import { IntegrityError } from '../..';
1
2
  import { APIHTTPError, HTTPErrorCode } from '../apiService';
2
3
  import { DecryptedRevision } from '../nodes';
3
- import { FileDownloader } from './fileDownloader';
4
- import { DownloadTelemetry } from './telemetry';
5
4
  import { DownloadAPIService } from './apiService';
6
5
  import { DownloadCryptoService } from './cryptoService';
6
+ import { FileDownloader } from './fileDownloader';
7
7
  import { SignatureVerificationError } from './interface';
8
- import { IntegrityError } from '../..';
8
+ import { DownloadTelemetry } from './telemetry';
9
9
 
10
10
  function mockBlockDownload(_: string, token: string, onProgress: (downloadedBytes: number) => void) {
11
11
  const index = parseInt(token.slice(5, 6));
@@ -1,6 +1,6 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { PrivateKey, SessionKey, base64StringToUint8Array } from '../../crypto';
3
+ import { PrivateKey, SessionKey } from '../../crypto';
4
4
  import { AbortError, IntegrityError } from '../../errors';
5
5
  import { Logger } from '../../interface';
6
6
  import { LoggerWithPrefix } from '../../telemetry';
@@ -185,7 +185,7 @@ export class FileDownloader {
185
185
  continue;
186
186
  }
187
187
 
188
- allBlockHashes.push(base64StringToUint8Array(blockMetadata.base64sha256Hash));
188
+ allBlockHashes.push(Uint8Array.fromBase64(blockMetadata.base64sha256Hash));
189
189
  if (blockMetadata.type === 'thumbnail') {
190
190
  continue;
191
191
  }
@@ -235,10 +235,12 @@ export class FileDownloader {
235
235
 
236
236
  void this.telemetry.downloadFinished(this.revision.uid, fileProgress);
237
237
  this.logger.info(`Download succeeded`);
238
- try {
239
- writer.releaseLock();
240
- } catch (error: unknown) {
241
- this.logger.error(`Failed to release writer lock`, error);
238
+ if ('releaseLock' in writer) {
239
+ try {
240
+ writer.releaseLock();
241
+ } catch (error: unknown) {
242
+ this.logger.error(`Failed to release writer lock`, error);
243
+ }
242
244
  }
243
245
  } catch (error: unknown) {
244
246
  if (error instanceof SignatureVerificationError) {
@@ -2,15 +2,15 @@ import { c } from 'ttag';
2
2
 
3
3
  import { DriveCrypto } from '../../crypto';
4
4
  import { ValidationError } from '../../errors';
5
- import { ProtonDriveAccount, ProtonDriveTelemetry, NodeType, ThumbnailType, ThumbnailResult } from '../../interface';
5
+ import { NodeType, ProtonDriveAccount, ProtonDriveTelemetry, ThumbnailResult, ThumbnailType } from '../../interface';
6
6
  import { DriveAPIService } from '../apiService';
7
+ import { makeNodeUidFromRevisionUid } from '../uids';
7
8
  import { DownloadAPIService } from './apiService';
8
9
  import { DownloadCryptoService } from './cryptoService';
9
- import { NodesService, RevisionsService, SharesService } from './interface';
10
10
  import { FileDownloader } from './fileDownloader';
11
+ import { NodesService, RevisionsService, SharesService } from './interface';
11
12
  import { DownloadQueue } from './queue';
12
13
  import { DownloadTelemetry } from './telemetry';
13
- import { makeNodeUidFromRevisionUid } from '../uids';
14
14
  import { ThumbnailDownloader } from './thumbnailDownloader';
15
15
 
16
16
  export function initDownloadModule(
@@ -1,6 +1,6 @@
1
1
  import { PrivateKey, PublicKey, SessionKey } from '../../crypto';
2
2
  import { IntegrityError } from '../../errors';
3
- import { NodeType, Result, MissingNode, MetricVolumeType } from '../../interface';
3
+ import { MetricVolumeType, MissingNode, NodeType, Result } from '../../interface';
4
4
  import { DecryptedNode, DecryptedRevision } from '../nodes';
5
5
 
6
6
  export type BlockMetadata = {
@@ -1,4 +1,4 @@
1
- import { SeekableReadableStream, BufferedSeekableStream, UnderlyingSeekableSource } from './seekableStream';
1
+ import { BufferedSeekableStream, SeekableReadableStream, UnderlyingSeekableSource } from './seekableStream';
2
2
 
3
3
  describe('SeekableReadableStream', () => {
4
4
  it('should call the seek callback when seek is called', async () => {
@@ -1,4 +1,4 @@
1
- import { RateLimitedError, ValidationError, DecryptionError, IntegrityError } from '../../errors';
1
+ import { DecryptionError, IntegrityError, RateLimitedError, ValidationError } from '../../errors';
2
2
  import { ProtonDriveTelemetry } from '../../interface';
3
3
  import { APIHTTPError } from '../apiService';
4
4
  import { SharesService } from './interface';
@@ -139,5 +139,11 @@ describe('DownloadTelemetry', () => {
139
139
  await downloadTelemetry.downloadFailed(revisionUid, error, 100, 200);
140
140
  verifyErrorCategory('network_error');
141
141
  });
142
+
143
+ it('should detect "network_error" for TypeError', async () => {
144
+ const error = new TypeError('Failed to fetch');
145
+ await downloadTelemetry.downloadFailed(revisionUid, error, 100, 200);
146
+ verifyErrorCategory('network_error');
147
+ });
142
148
  });
143
149
  });
@@ -1,7 +1,8 @@
1
- import { RateLimitedError, ValidationError, DecryptionError, IntegrityError } from '../../errors';
2
- import { ProtonDriveTelemetry, MetricsDownloadErrorType, Logger, MetricVolumeType } from '../../interface';
1
+ import { DecryptionError, IntegrityError, RateLimitedError, ValidationError } from '../../errors';
2
+ import { Logger, MetricsDownloadErrorType, MetricVolumeType, ProtonDriveTelemetry } from '../../interface';
3
3
  import { LoggerWithPrefix, reduceSizePrecision } from '../../telemetry';
4
4
  import { APIHTTPError } from '../apiService';
5
+ import { isNetworkError } from '../errors';
5
6
  import { splitNodeRevisionUid, splitNodeUid } from '../uids';
6
7
  import { SharesService } from './interface';
7
8
 
@@ -117,11 +118,7 @@ function getErrorCategory(error: unknown): MetricsDownloadErrorType | undefined
117
118
  if (error.name === 'TimeoutError') {
118
119
  return 'server_error';
119
120
  }
120
- if (
121
- error.name === 'OfflineError' ||
122
- error.name === 'NetworkError' ||
123
- error.message?.toLowerCase() === 'network error'
124
- ) {
121
+ if (isNetworkError(error)) {
125
122
  return 'network_error';
126
123
  }
127
124
  if (error.name === 'AbortError') {
@@ -1,9 +1,9 @@
1
1
  import { ProtonDriveTelemetry } from '../../interface';
2
2
  import { getMockTelemetry } from '../../tests/telemetry';
3
- import { ThumbnailDownloader } from './thumbnailDownloader';
4
3
  import { DownloadAPIService } from './apiService';
5
4
  import { DownloadCryptoService } from './cryptoService';
6
5
  import { NodesService } from './interface';
6
+ import { ThumbnailDownloader } from './thumbnailDownloader';
7
7
 
8
8
  describe('ThumbnailDownloader', () => {
9
9
  let telemetry: ProtonDriveTelemetry;
@@ -1,12 +1,12 @@
1
1
  import { c } from 'ttag';
2
2
 
3
- import { ThumbnailType, ProtonDriveTelemetry, Logger, ThumbnailResult } from '../../interface';
4
3
  import { ValidationError } from '../../errors';
4
+ import { Logger, ProtonDriveTelemetry, ThumbnailResult, ThumbnailType } from '../../interface';
5
5
  import { LoggerWithPrefix } from '../../telemetry';
6
+ import { getErrorMessage } from '../errors';
6
7
  import { DownloadAPIService } from './apiService';
7
8
  import { DownloadCryptoService } from './cryptoService';
8
9
  import { NodesService } from './interface';
9
- import { getErrorMessage } from '../errors';
10
10
 
11
11
  /**
12
12
  * Maximum number of thumbnails that can be downloaded at the same time.