@protontech/drive-sdk 0.0.13 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/memoryCache.js +0 -1
  6. package/dist/cache/memoryCache.js.map +1 -1
  7. package/dist/cache/memoryCache.test.js +2 -4
  8. package/dist/cache/memoryCache.test.js.map +1 -1
  9. package/dist/cache/nullCache.d.ts +14 -0
  10. package/dist/cache/nullCache.js +36 -0
  11. package/dist/cache/nullCache.js.map +1 -0
  12. package/dist/config.d.ts +16 -1
  13. package/dist/config.js +1 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/crypto/driveCrypto.d.ts +2 -5
  16. package/dist/crypto/driveCrypto.js +7 -12
  17. package/dist/crypto/driveCrypto.js.map +1 -1
  18. package/dist/crypto/driveCrypto.test.js +14 -14
  19. package/dist/crypto/openPGPCrypto.js +5 -3
  20. package/dist/crypto/openPGPCrypto.js.map +1 -1
  21. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  22. package/dist/diagnostic/eventsGenerator.js +49 -0
  23. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  24. package/dist/diagnostic/httpClient.d.ts +16 -0
  25. package/dist/diagnostic/httpClient.js +81 -0
  26. package/dist/diagnostic/httpClient.js.map +1 -0
  27. package/dist/diagnostic/index.d.ts +10 -0
  28. package/dist/diagnostic/index.js +35 -0
  29. package/dist/diagnostic/index.js.map +1 -0
  30. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  31. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  32. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  33. package/dist/diagnostic/interface.d.ts +102 -0
  34. package/dist/diagnostic/interface.js +3 -0
  35. package/dist/diagnostic/interface.js.map +1 -0
  36. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  37. package/dist/diagnostic/sdkDiagnostic.js +222 -0
  38. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  39. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  40. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  41. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  42. package/dist/diagnostic/telemetry.d.ts +25 -0
  43. package/dist/diagnostic/telemetry.js +70 -0
  44. package/dist/diagnostic/telemetry.js.map +1 -0
  45. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  46. package/dist/diagnostic/zipGenerators.js +64 -0
  47. package/dist/diagnostic/zipGenerators.js.map +1 -0
  48. package/dist/diagnostic/zipGenerators.test.js +144 -0
  49. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  50. package/dist/errors.d.ts +2 -1
  51. package/dist/errors.js +3 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/interface/config.d.ts +26 -0
  54. package/dist/interface/config.js +3 -0
  55. package/dist/interface/config.js.map +1 -0
  56. package/dist/interface/download.d.ts +2 -2
  57. package/dist/interface/events.d.ts +58 -20
  58. package/dist/interface/events.js +11 -1
  59. package/dist/interface/events.js.map +1 -1
  60. package/dist/interface/httpClient.d.ts +0 -14
  61. package/dist/interface/index.d.ts +11 -7
  62. package/dist/interface/index.js +2 -2
  63. package/dist/interface/index.js.map +1 -1
  64. package/dist/interface/nodes.d.ts +9 -0
  65. package/dist/interface/nodes.js.map +1 -1
  66. package/dist/interface/result.js.map +1 -1
  67. package/dist/interface/sharing.d.ts +2 -0
  68. package/dist/interface/sharing.js.map +1 -1
  69. package/dist/interface/telemetry.js +0 -8
  70. package/dist/interface/telemetry.js.map +1 -1
  71. package/dist/interface/thumbnail.js.map +1 -1
  72. package/dist/interface/upload.d.ts +7 -1
  73. package/dist/internal/apiService/apiService.d.ts +1 -1
  74. package/dist/internal/apiService/apiService.js +7 -11
  75. package/dist/internal/apiService/apiService.js.map +1 -1
  76. package/dist/internal/apiService/apiService.test.js +55 -48
  77. package/dist/internal/apiService/apiService.test.js.map +1 -1
  78. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  79. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  80. package/dist/internal/apiService/errors.js +14 -8
  81. package/dist/internal/apiService/errors.js.map +1 -1
  82. package/dist/internal/apiService/errors.test.js +17 -12
  83. package/dist/internal/apiService/errors.test.js.map +1 -1
  84. package/dist/internal/apiService/transformers.d.ts +1 -1
  85. package/dist/internal/apiService/transformers.js +1 -1
  86. package/dist/internal/asyncIteratorMap.test.js +2 -2
  87. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  88. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  89. package/dist/internal/asyncIteratorRace.js +59 -0
  90. package/dist/internal/asyncIteratorRace.js.map +1 -0
  91. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  92. package/dist/internal/asyncIteratorRace.test.js +119 -0
  93. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  94. package/dist/internal/batch.d.ts +1 -0
  95. package/dist/internal/batch.js +12 -0
  96. package/dist/internal/batch.js.map +1 -0
  97. package/dist/internal/batch.test.d.ts +1 -0
  98. package/dist/internal/batch.test.js +41 -0
  99. package/dist/internal/batch.test.js.map +1 -0
  100. package/dist/internal/batchLoading.js.map +1 -1
  101. package/dist/internal/batchLoading.test.js +13 -13
  102. package/dist/internal/batchLoading.test.js.map +1 -1
  103. package/dist/internal/devices/apiService.d.ts +3 -3
  104. package/dist/internal/devices/apiService.js +2 -2
  105. package/dist/internal/devices/apiService.js.map +1 -1
  106. package/dist/internal/devices/cryptoService.js +1 -2
  107. package/dist/internal/devices/cryptoService.js.map +1 -1
  108. package/dist/internal/devices/index.d.ts +5 -5
  109. package/dist/internal/devices/index.js.map +1 -1
  110. package/dist/internal/devices/interface.d.ts +3 -3
  111. package/dist/internal/devices/manager.js +2 -2
  112. package/dist/internal/devices/manager.js.map +1 -1
  113. package/dist/internal/devices/manager.test.js +38 -7
  114. package/dist/internal/devices/manager.test.js.map +1 -1
  115. package/dist/internal/download/apiService.d.ts +4 -4
  116. package/dist/internal/download/apiService.js +32 -32
  117. package/dist/internal/download/apiService.js.map +1 -1
  118. package/dist/internal/download/cryptoService.d.ts +4 -4
  119. package/dist/internal/download/cryptoService.js +6 -5
  120. package/dist/internal/download/cryptoService.js.map +1 -1
  121. package/dist/internal/download/fileDownloader.d.ts +6 -6
  122. package/dist/internal/download/fileDownloader.js +3 -2
  123. package/dist/internal/download/fileDownloader.js.map +1 -1
  124. package/dist/internal/download/fileDownloader.test.js +1 -1
  125. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  126. package/dist/internal/download/index.d.ts +5 -5
  127. package/dist/internal/download/index.js +5 -5
  128. package/dist/internal/download/index.js.map +1 -1
  129. package/dist/internal/download/interface.d.ts +3 -4
  130. package/dist/internal/download/telemetry.d.ts +3 -3
  131. package/dist/internal/download/telemetry.js +4 -2
  132. package/dist/internal/download/telemetry.js.map +1 -1
  133. package/dist/internal/download/telemetry.test.js +8 -8
  134. package/dist/internal/download/telemetry.test.js.map +1 -1
  135. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  136. package/dist/internal/download/thumbnailDownloader.js +6 -6
  137. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  138. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  139. package/dist/internal/errors.d.ts +1 -1
  140. package/dist/internal/errors.js +1 -3
  141. package/dist/internal/errors.js.map +1 -1
  142. package/dist/internal/events/apiService.d.ts +5 -7
  143. package/dist/internal/events/apiService.js +19 -22
  144. package/dist/internal/events/apiService.js.map +1 -1
  145. package/dist/internal/events/coreEventManager.d.ts +9 -12
  146. package/dist/internal/events/coreEventManager.js +19 -36
  147. package/dist/internal/events/coreEventManager.js.map +1 -1
  148. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  149. package/dist/internal/events/coreEventManager.test.js +87 -0
  150. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  151. package/dist/internal/events/eventManager.d.ts +11 -36
  152. package/dist/internal/events/eventManager.js +59 -106
  153. package/dist/internal/events/eventManager.js.map +1 -1
  154. package/dist/internal/events/eventManager.test.js +177 -83
  155. package/dist/internal/events/eventManager.test.js.map +1 -1
  156. package/dist/internal/events/index.d.ts +16 -36
  157. package/dist/internal/events/index.js +56 -72
  158. package/dist/internal/events/index.js.map +1 -1
  159. package/dist/internal/events/interface.d.ts +59 -14
  160. package/dist/internal/events/interface.js +12 -3
  161. package/dist/internal/events/interface.js.map +1 -1
  162. package/dist/internal/events/volumeEventManager.d.ts +9 -19
  163. package/dist/internal/events/volumeEventManager.js +58 -45
  164. package/dist/internal/events/volumeEventManager.js.map +1 -1
  165. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  166. package/dist/internal/events/volumeEventManager.test.js +203 -0
  167. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  168. package/dist/internal/nodes/apiService.d.ts +4 -3
  169. package/dist/internal/nodes/apiService.js +36 -15
  170. package/dist/internal/nodes/apiService.js.map +1 -1
  171. package/dist/internal/nodes/apiService.test.js +60 -41
  172. package/dist/internal/nodes/apiService.test.js.map +1 -1
  173. package/dist/internal/nodes/cache.d.ts +14 -5
  174. package/dist/internal/nodes/cache.js +31 -7
  175. package/dist/internal/nodes/cache.js.map +1 -1
  176. package/dist/internal/nodes/cache.test.js +31 -9
  177. package/dist/internal/nodes/cache.test.js.map +1 -1
  178. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  179. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  180. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  181. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  182. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  183. package/dist/internal/nodes/cryptoService.js +11 -17
  184. package/dist/internal/nodes/cryptoService.js.map +1 -1
  185. package/dist/internal/nodes/cryptoService.test.js +320 -241
  186. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  187. package/dist/internal/nodes/events.d.ts +8 -84
  188. package/dist/internal/nodes/events.js +43 -217
  189. package/dist/internal/nodes/events.js.map +1 -1
  190. package/dist/internal/nodes/events.test.js +35 -279
  191. package/dist/internal/nodes/events.test.js.map +1 -1
  192. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  193. package/dist/internal/nodes/extendedAttributes.js +3 -1
  194. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  195. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  196. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  197. package/dist/internal/nodes/index.d.ts +12 -13
  198. package/dist/internal/nodes/index.js +5 -5
  199. package/dist/internal/nodes/index.js.map +1 -1
  200. package/dist/internal/nodes/index.test.js +24 -32
  201. package/dist/internal/nodes/index.test.js.map +1 -1
  202. package/dist/internal/nodes/interface.d.ts +2 -2
  203. package/dist/internal/nodes/nodesAccess.d.ts +22 -7
  204. package/dist/internal/nodes/nodesAccess.js +65 -16
  205. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  206. package/dist/internal/nodes/nodesAccess.test.js +165 -101
  207. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  208. package/dist/internal/nodes/nodesManagement.d.ts +7 -9
  209. package/dist/internal/nodes/nodesManagement.js +21 -33
  210. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  211. package/dist/internal/nodes/nodesManagement.test.js +42 -21
  212. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  213. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  214. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  215. package/dist/internal/photos/albums.d.ts +3 -3
  216. package/dist/internal/photos/albums.js.map +1 -1
  217. package/dist/internal/photos/apiService.d.ts +1 -1
  218. package/dist/internal/photos/apiService.js +3 -6
  219. package/dist/internal/photos/apiService.js.map +1 -1
  220. package/dist/internal/photos/cache.d.ts +1 -1
  221. package/dist/internal/photos/index.d.ts +5 -5
  222. package/dist/internal/photos/index.js.map +1 -1
  223. package/dist/internal/photos/interface.d.ts +2 -2
  224. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  225. package/dist/internal/photos/photosTimeline.js +1 -2
  226. package/dist/internal/photos/photosTimeline.js.map +1 -1
  227. package/dist/internal/sdkEvents.d.ts +1 -1
  228. package/dist/internal/sdkEvents.js +2 -7
  229. package/dist/internal/sdkEvents.js.map +1 -1
  230. package/dist/internal/sdkEvents.test.js +8 -8
  231. package/dist/internal/shares/apiService.d.ts +2 -2
  232. package/dist/internal/shares/apiService.js +5 -3
  233. package/dist/internal/shares/apiService.js.map +1 -1
  234. package/dist/internal/shares/cache.d.ts +4 -2
  235. package/dist/internal/shares/cache.js +14 -6
  236. package/dist/internal/shares/cache.js.map +1 -1
  237. package/dist/internal/shares/cache.test.js.map +1 -1
  238. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  239. package/dist/internal/shares/cryptoCache.test.js +8 -2
  240. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  241. package/dist/internal/shares/cryptoService.d.ts +3 -3
  242. package/dist/internal/shares/cryptoService.js.map +1 -1
  243. package/dist/internal/shares/cryptoService.test.js +42 -42
  244. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  245. package/dist/internal/shares/index.d.ts +4 -4
  246. package/dist/internal/shares/index.js.map +1 -1
  247. package/dist/internal/shares/interface.d.ts +2 -2
  248. package/dist/internal/shares/manager.d.ts +8 -7
  249. package/dist/internal/shares/manager.js +3 -0
  250. package/dist/internal/shares/manager.js.map +1 -1
  251. package/dist/internal/shares/manager.test.js +71 -63
  252. package/dist/internal/shares/manager.test.js.map +1 -1
  253. package/dist/internal/sharing/apiService.d.ts +4 -4
  254. package/dist/internal/sharing/apiService.js +5 -3
  255. package/dist/internal/sharing/apiService.js.map +1 -1
  256. package/dist/internal/sharing/cache.d.ts +1 -1
  257. package/dist/internal/sharing/cache.test.js +33 -33
  258. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  259. package/dist/internal/sharing/cryptoService.js +3 -4
  260. package/dist/internal/sharing/cryptoService.js.map +1 -1
  261. package/dist/internal/sharing/cryptoService.test.js +39 -39
  262. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  263. package/dist/internal/sharing/events.d.ts +24 -56
  264. package/dist/internal/sharing/events.js +45 -138
  265. package/dist/internal/sharing/events.js.map +1 -1
  266. package/dist/internal/sharing/events.test.js +85 -189
  267. package/dist/internal/sharing/events.test.js.map +1 -1
  268. package/dist/internal/sharing/index.d.ts +8 -9
  269. package/dist/internal/sharing/index.js +5 -5
  270. package/dist/internal/sharing/index.js.map +1 -1
  271. package/dist/internal/sharing/interface.d.ts +8 -4
  272. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  273. package/dist/internal/sharing/sharingAccess.js +8 -4
  274. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  275. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  276. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  277. package/dist/internal/sharing/sharingManagement.d.ts +5 -6
  278. package/dist/internal/sharing/sharingManagement.js +12 -16
  279. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  280. package/dist/internal/sharing/sharingManagement.test.js +305 -286
  281. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  282. package/dist/internal/uids.js.map +1 -1
  283. package/dist/internal/upload/apiService.d.ts +5 -6
  284. package/dist/internal/upload/apiService.js +8 -5
  285. package/dist/internal/upload/apiService.js.map +1 -1
  286. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  287. package/dist/internal/upload/blockVerifier.js +1 -1
  288. package/dist/internal/upload/blockVerifier.js.map +1 -1
  289. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  290. package/dist/internal/upload/cryptoService.d.ts +4 -4
  291. package/dist/internal/upload/cryptoService.js +4 -4
  292. package/dist/internal/upload/cryptoService.js.map +1 -1
  293. package/dist/internal/upload/digests.js.map +1 -1
  294. package/dist/internal/upload/fileUploader.d.ts +6 -6
  295. package/dist/internal/upload/fileUploader.js.map +1 -1
  296. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  297. package/dist/internal/upload/index.d.ts +6 -6
  298. package/dist/internal/upload/index.js +3 -3
  299. package/dist/internal/upload/index.js.map +1 -1
  300. package/dist/internal/upload/interface.d.ts +5 -3
  301. package/dist/internal/upload/manager.d.ts +8 -8
  302. package/dist/internal/upload/manager.js +23 -52
  303. package/dist/internal/upload/manager.js.map +1 -1
  304. package/dist/internal/upload/manager.test.js +185 -147
  305. package/dist/internal/upload/manager.test.js.map +1 -1
  306. package/dist/internal/upload/streamUploader.d.ts +6 -6
  307. package/dist/internal/upload/streamUploader.js +9 -8
  308. package/dist/internal/upload/streamUploader.js.map +1 -1
  309. package/dist/internal/upload/streamUploader.test.js +17 -12
  310. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  311. package/dist/internal/upload/telemetry.d.ts +3 -3
  312. package/dist/internal/upload/telemetry.js +5 -3
  313. package/dist/internal/upload/telemetry.js.map +1 -1
  314. package/dist/internal/upload/telemetry.test.js +8 -8
  315. package/dist/internal/upload/telemetry.test.js.map +1 -1
  316. package/dist/protonDriveClient.d.ts +27 -170
  317. package/dist/protonDriveClient.js +37 -198
  318. package/dist/protonDriveClient.js.map +1 -1
  319. package/dist/protonDrivePhotosClient.js +3 -2
  320. package/dist/protonDrivePhotosClient.js.map +1 -1
  321. package/dist/telemetry.js +18 -15
  322. package/dist/telemetry.js.map +1 -1
  323. package/dist/tests/logger.js.map +1 -1
  324. package/dist/tests/telemetry.d.ts +1 -1
  325. package/dist/transformers.js +4 -2
  326. package/dist/transformers.js.map +1 -1
  327. package/package.json +3 -3
  328. package/src/cache/index.ts +1 -0
  329. package/src/cache/interface.ts +22 -22
  330. package/src/cache/memoryCache.test.ts +7 -7
  331. package/src/cache/memoryCache.ts +5 -5
  332. package/src/cache/nullCache.ts +38 -0
  333. package/src/config.ts +17 -2
  334. package/src/crypto/driveCrypto.test.ts +15 -15
  335. package/src/crypto/driveCrypto.ts +120 -156
  336. package/src/crypto/hmac.ts +1 -1
  337. package/src/crypto/interface.ts +63 -72
  338. package/src/crypto/openPGPCrypto.ts +76 -94
  339. package/src/crypto/utils.ts +1 -1
  340. package/src/diagnostic/eventsGenerator.ts +48 -0
  341. package/src/diagnostic/httpClient.ts +84 -0
  342. package/src/diagnostic/index.ts +40 -0
  343. package/src/diagnostic/integrityVerificationStream.ts +55 -0
  344. package/src/diagnostic/interface.ts +158 -0
  345. package/src/diagnostic/sdkDiagnostic.ts +249 -0
  346. package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
  347. package/src/diagnostic/telemetry.ts +74 -0
  348. package/src/diagnostic/zipGenerators.test.ts +177 -0
  349. package/src/diagnostic/zipGenerators.ts +70 -0
  350. package/src/errors.ts +25 -22
  351. package/src/index.ts +3 -3
  352. package/src/interface/account.ts +10 -10
  353. package/src/interface/author.ts +6 -6
  354. package/src/interface/config.ts +28 -0
  355. package/src/interface/devices.ts +6 -6
  356. package/src/interface/download.ts +12 -9
  357. package/src/interface/events.ts +76 -25
  358. package/src/interface/httpClient.ts +11 -27
  359. package/src/interface/index.ts +81 -20
  360. package/src/interface/nodes.ts +67 -60
  361. package/src/interface/result.ts +1 -3
  362. package/src/interface/sharing.ts +60 -56
  363. package/src/interface/telemetry.ts +74 -74
  364. package/src/interface/thumbnail.ts +5 -6
  365. package/src/interface/upload.ts +25 -11
  366. package/src/internal/apiService/apiService.test.ts +109 -76
  367. package/src/internal/apiService/apiService.ts +40 -26
  368. package/src/internal/apiService/coreTypes.ts +2474 -2463
  369. package/src/internal/apiService/driveTypes.ts +1868 -1822
  370. package/src/internal/apiService/errorCodes.ts +4 -4
  371. package/src/internal/apiService/errors.test.ts +25 -23
  372. package/src/internal/apiService/errors.ts +15 -9
  373. package/src/internal/apiService/index.ts +1 -1
  374. package/src/internal/apiService/transformers.ts +2 -2
  375. package/src/internal/asyncIteratorMap.test.ts +4 -4
  376. package/src/internal/asyncIteratorMap.ts +1 -1
  377. package/src/internal/asyncIteratorRace.test.ts +149 -0
  378. package/src/internal/asyncIteratorRace.ts +79 -0
  379. package/src/internal/batch.test.ts +50 -0
  380. package/src/internal/batch.ts +9 -0
  381. package/src/internal/batchLoading.test.ts +13 -14
  382. package/src/internal/batchLoading.ts +8 -8
  383. package/src/internal/devices/apiService.ts +58 -51
  384. package/src/internal/devices/cryptoService.ts +22 -17
  385. package/src/internal/devices/index.ts +17 -10
  386. package/src/internal/devices/interface.ts +21 -12
  387. package/src/internal/devices/manager.test.ts +40 -9
  388. package/src/internal/devices/manager.ts +3 -3
  389. package/src/internal/download/apiService.ts +72 -52
  390. package/src/internal/download/cryptoService.ts +34 -18
  391. package/src/internal/download/fileDownloader.test.ts +25 -9
  392. package/src/internal/download/fileDownloader.ts +38 -20
  393. package/src/internal/download/index.ts +19 -19
  394. package/src/internal/download/interface.ts +19 -20
  395. package/src/internal/download/queue.ts +3 -3
  396. package/src/internal/download/telemetry.test.ts +11 -11
  397. package/src/internal/download/telemetry.ts +24 -14
  398. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  399. package/src/internal/download/thumbnailDownloader.ts +43 -32
  400. package/src/internal/errors.ts +7 -5
  401. package/src/internal/events/apiService.ts +46 -36
  402. package/src/internal/events/coreEventManager.test.ts +101 -0
  403. package/src/internal/events/coreEventManager.ts +26 -48
  404. package/src/internal/events/eventManager.test.ts +211 -93
  405. package/src/internal/events/eventManager.ts +72 -117
  406. package/src/internal/events/index.ts +71 -91
  407. package/src/internal/events/interface.ts +92 -29
  408. package/src/internal/events/volumeEventManager.test.ts +239 -0
  409. package/src/internal/events/volumeEventManager.ts +68 -57
  410. package/src/internal/nodes/apiService.test.ts +197 -147
  411. package/src/internal/nodes/apiService.ts +288 -174
  412. package/src/internal/nodes/cache.test.ts +48 -20
  413. package/src/internal/nodes/cache.ts +79 -45
  414. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  415. package/src/internal/nodes/cryptoCache.ts +10 -5
  416. package/src/internal/nodes/cryptoService.test.ts +492 -351
  417. package/src/internal/nodes/cryptoService.ts +171 -89
  418. package/src/internal/nodes/events.test.ts +48 -344
  419. package/src/internal/nodes/events.ts +48 -254
  420. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  421. package/src/internal/nodes/extendedAttributes.ts +20 -15
  422. package/src/internal/nodes/index.test.ts +51 -55
  423. package/src/internal/nodes/index.ts +32 -22
  424. package/src/internal/nodes/interface.ts +44 -31
  425. package/src/internal/nodes/nodesAccess.test.ts +237 -130
  426. package/src/internal/nodes/nodesAccess.ts +113 -50
  427. package/src/internal/nodes/nodesManagement.test.ts +64 -39
  428. package/src/internal/nodes/nodesManagement.ts +51 -62
  429. package/src/internal/nodes/nodesRevisions.ts +7 -7
  430. package/src/internal/nodes/validations.ts +2 -2
  431. package/src/internal/photos/albums.ts +5 -5
  432. package/src/internal/photos/apiService.ts +4 -7
  433. package/src/internal/photos/cache.ts +1 -1
  434. package/src/internal/photos/index.ts +8 -8
  435. package/src/internal/photos/interface.ts +2 -2
  436. package/src/internal/photos/photosTimeline.ts +4 -5
  437. package/src/internal/sdkEvents.test.ts +10 -10
  438. package/src/internal/sdkEvents.ts +5 -13
  439. package/src/internal/shares/apiService.ts +44 -33
  440. package/src/internal/shares/cache.test.ts +6 -4
  441. package/src/internal/shares/cache.ts +25 -14
  442. package/src/internal/shares/cryptoCache.test.ts +17 -11
  443. package/src/internal/shares/cryptoCache.ts +4 -4
  444. package/src/internal/shares/cryptoService.test.ts +72 -74
  445. package/src/internal/shares/cryptoService.ts +48 -23
  446. package/src/internal/shares/index.ts +23 -11
  447. package/src/internal/shares/interface.ts +8 -8
  448. package/src/internal/shares/manager.test.ts +88 -80
  449. package/src/internal/shares/manager.ts +27 -23
  450. package/src/internal/sharing/apiService.ts +283 -175
  451. package/src/internal/sharing/cache.test.ts +35 -35
  452. package/src/internal/sharing/cache.ts +3 -3
  453. package/src/internal/sharing/cryptoService.test.ts +58 -46
  454. package/src/internal/sharing/cryptoService.ts +121 -83
  455. package/src/internal/sharing/events.test.ts +97 -207
  456. package/src/internal/sharing/events.ts +46 -157
  457. package/src/internal/sharing/index.ts +24 -16
  458. package/src/internal/sharing/interface.ts +46 -42
  459. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  460. package/src/internal/sharing/sharingAccess.ts +39 -21
  461. package/src/internal/sharing/sharingManagement.test.ts +405 -335
  462. package/src/internal/sharing/sharingManagement.ts +144 -75
  463. package/src/internal/uids.ts +1 -1
  464. package/src/internal/upload/apiService.ts +168 -119
  465. package/src/internal/upload/blockVerifier.ts +8 -6
  466. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  467. package/src/internal/upload/cryptoService.ts +42 -36
  468. package/src/internal/upload/digests.ts +2 -2
  469. package/src/internal/upload/fileUploader.test.ts +15 -3
  470. package/src/internal/upload/fileUploader.ts +39 -17
  471. package/src/internal/upload/index.ts +17 -18
  472. package/src/internal/upload/interface.ts +79 -77
  473. package/src/internal/upload/manager.test.ts +222 -175
  474. package/src/internal/upload/manager.ts +74 -80
  475. package/src/internal/upload/queue.ts +3 -3
  476. package/src/internal/upload/streamUploader.test.ts +40 -27
  477. package/src/internal/upload/streamUploader.ts +87 -71
  478. package/src/internal/upload/telemetry.test.ts +11 -11
  479. package/src/internal/upload/telemetry.ts +25 -15
  480. package/src/internal/wait.test.ts +1 -1
  481. package/src/internal/wait.ts +3 -3
  482. package/src/protonDriveClient.ts +189 -276
  483. package/src/protonDrivePhotosClient.ts +20 -13
  484. package/src/telemetry.ts +60 -52
  485. package/src/tests/logger.ts +1 -1
  486. package/src/tests/telemetry.ts +2 -2
  487. package/src/transformers.ts +27 -21
  488. package/src/version.ts +0 -1
  489. package/dist/internal/events/cache.d.ts +0 -28
  490. package/dist/internal/events/cache.js +0 -67
  491. package/dist/internal/events/cache.js.map +0 -1
  492. package/dist/internal/events/cache.test.js +0 -43
  493. package/dist/internal/events/cache.test.js.map +0 -1
  494. package/src/internal/events/cache.test.ts +0 -47
  495. package/src/internal/events/cache.ts +0 -80
  496. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
@@ -48,24 +48,24 @@ export interface SessionKey {
48
48
  export enum VERIFICATION_STATUS {
49
49
  NOT_SIGNED = 0,
50
50
  SIGNED_AND_VALID = 1,
51
- SIGNED_AND_INVALID = 2
51
+ SIGNED_AND_INVALID = 2,
52
52
  }
53
53
 
54
54
  export interface SRPModule {
55
- getSrpVerifier: (password: string) => Promise<SRPVerifier>,
56
- computeKeyPassword: (password: string, salt: string) => Promise<string>,
55
+ getSrpVerifier: (password: string) => Promise<SRPVerifier>;
56
+ computeKeyPassword: (password: string, salt: string) => Promise<string>;
57
57
  }
58
58
 
59
59
  export type SRPVerifier = {
60
- modulusId: string,
61
- version: number,
62
- salt: string,
63
- verifier: string,
64
- }
60
+ modulusId: string;
61
+ version: number;
62
+ salt: string;
63
+ verifier: string;
64
+ };
65
65
 
66
66
  /**
67
67
  * OpenPGP crypto layer to provide necessary PGP operations for Drive crypto.
68
- *
68
+ *
69
69
  * This layer focuses on providing general openPGP functions. Every operation
70
70
  * should prefer binary input and output. Ideally, armoring should be done
71
71
  * later in serialisation step, but for now, it is part of the interface to
@@ -77,38 +77,44 @@ export type SRPVerifier = {
77
77
  export interface OpenPGPCrypto {
78
78
  /**
79
79
  * Generate a random passphrase.
80
- *
80
+ *
81
81
  * 32 random bytes are generated and encoded into a base64 string.
82
82
  */
83
- generatePassphrase: () => string,
83
+ generatePassphrase: () => string;
84
84
 
85
- generateSessionKey: (encryptionKeys: PrivateKey[]) => Promise<SessionKey>,
85
+ generateSessionKey: (encryptionKeys: PrivateKey[]) => Promise<SessionKey>;
86
86
 
87
- encryptSessionKey: (sessionKey: SessionKey, encryptionKeys: PublicKey | PublicKey[]) => Promise<{
88
- keyPacket: Uint8Array,
89
- }>,
87
+ encryptSessionKey: (
88
+ sessionKey: SessionKey,
89
+ encryptionKeys: PublicKey | PublicKey[],
90
+ ) => Promise<{
91
+ keyPacket: Uint8Array;
92
+ }>;
90
93
 
91
- encryptSessionKeyWithPassword: (sessionKey: SessionKey, password: string) => Promise<{
92
- keyPacket: Uint8Array,
93
- }>,
94
+ encryptSessionKeyWithPassword: (
95
+ sessionKey: SessionKey,
96
+ password: string,
97
+ ) => Promise<{
98
+ keyPacket: Uint8Array;
99
+ }>;
94
100
 
95
101
  /**
96
102
  * Generate a new key pair locked by a passphrase.
97
- *
103
+ *
98
104
  * The key pair is generated using the Curve25519 algorithm.
99
105
  */
100
106
  generateKey: (passphrase: string) => Promise<{
101
- privateKey: PrivateKey,
102
- armoredKey: string,
103
- }>,
107
+ privateKey: PrivateKey;
108
+ armoredKey: string;
109
+ }>;
104
110
 
105
111
  encryptArmored: (
106
112
  data: Uint8Array,
107
113
  encryptionKeys: PrivateKey[],
108
114
  sessionKey?: SessionKey,
109
115
  ) => Promise<{
110
- armoredData: string,
111
- }>,
116
+ armoredData: string;
117
+ }>;
112
118
 
113
119
  encryptAndSign: (
114
120
  data: Uint8Array,
@@ -116,8 +122,8 @@ export interface OpenPGPCrypto {
116
122
  encryptionKeys: PrivateKey[],
117
123
  signingKey: PrivateKey,
118
124
  ) => Promise<{
119
- encryptedData: Uint8Array,
120
- }>,
125
+ encryptedData: Uint8Array;
126
+ }>;
121
127
 
122
128
  encryptAndSignArmored: (
123
129
  data: Uint8Array,
@@ -125,8 +131,8 @@ export interface OpenPGPCrypto {
125
131
  encryptionKeys: PrivateKey[],
126
132
  signingKey: PrivateKey,
127
133
  ) => Promise<{
128
- armoredData: string,
129
- }>,
134
+ armoredData: string;
135
+ }>;
130
136
 
131
137
  encryptAndSignDetached: (
132
138
  data: Uint8Array,
@@ -134,9 +140,9 @@ export interface OpenPGPCrypto {
134
140
  encryptionKeys: PrivateKey[],
135
141
  signingKey: PrivateKey,
136
142
  ) => Promise<{
137
- encryptedData: Uint8Array,
138
- signature: Uint8Array,
139
- }>,
143
+ encryptedData: Uint8Array;
144
+ signature: Uint8Array;
145
+ }>;
140
146
 
141
147
  encryptAndSignDetachedArmored: (
142
148
  data: Uint8Array,
@@ -144,56 +150,47 @@ export interface OpenPGPCrypto {
144
150
  encryptionKeys: PrivateKey[],
145
151
  signingKey: PrivateKey,
146
152
  ) => Promise<{
147
- armoredData: string,
148
- armoredSignature: string,
149
- }>,
153
+ armoredData: string;
154
+ armoredSignature: string;
155
+ }>;
150
156
 
151
157
  sign: (
152
158
  data: Uint8Array,
153
159
  signingKey: PrivateKey,
154
160
  signatureContext: string,
155
161
  ) => Promise<{
156
- signature: Uint8Array,
157
- }>,
162
+ signature: Uint8Array;
163
+ }>;
158
164
 
159
165
  signArmored: (
160
166
  data: Uint8Array,
161
167
  signingKey: PrivateKey | PrivateKey[],
162
168
  ) => Promise<{
163
- signature: string,
164
- }>,
169
+ signature: string;
170
+ }>;
165
171
 
166
172
  verify: (
167
173
  data: Uint8Array,
168
174
  armoredSignature: string,
169
175
  verificationKeys: PublicKey | PublicKey[],
170
176
  ) => Promise<{
171
- verified: VERIFICATION_STATUS,
172
- }>,
177
+ verified: VERIFICATION_STATUS;
178
+ }>;
173
179
 
174
- decryptSessionKey: (
175
- data: Uint8Array,
176
- decryptionKeys: PrivateKey | PrivateKey[],
177
- ) => Promise<SessionKey>,
180
+ decryptSessionKey: (data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
178
181
 
179
- decryptArmoredSessionKey: (
180
- armoredData: string,
181
- decryptionKeys: PrivateKey | PrivateKey[],
182
- ) => Promise<SessionKey>,
182
+ decryptArmoredSessionKey: (armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
183
183
 
184
- decryptKey: (
185
- armoredKey: string,
186
- passphrase: string,
187
- ) => Promise<PrivateKey>,
184
+ decryptKey: (armoredKey: string, passphrase: string) => Promise<PrivateKey>;
188
185
 
189
186
  decryptAndVerify(
190
187
  data: Uint8Array,
191
188
  sessionKey: SessionKey,
192
189
  verificationKeys: PublicKey | PublicKey[],
193
190
  ): Promise<{
194
- data: Uint8Array,
195
- verified: VERIFICATION_STATUS,
196
- }>,
191
+ data: Uint8Array;
192
+ verified: VERIFICATION_STATUS;
193
+ }>;
197
194
 
198
195
  decryptAndVerifyDetached(
199
196
  data: Uint8Array,
@@ -201,23 +198,20 @@ export interface OpenPGPCrypto {
201
198
  sessionKey: SessionKey,
202
199
  verificationKeys?: PublicKey | PublicKey[],
203
200
  ): Promise<{
204
- data: Uint8Array,
205
- verified: VERIFICATION_STATUS,
206
- }>,
201
+ data: Uint8Array;
202
+ verified: VERIFICATION_STATUS;
203
+ }>;
207
204
 
208
- decryptArmored(
209
- armoredData: string,
210
- decryptionKeys: PrivateKey | PrivateKey[],
211
- ): Promise<Uint8Array>,
205
+ decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array>;
212
206
 
213
207
  decryptArmoredAndVerify: (
214
208
  armoredData: string,
215
209
  decryptionKeys: PrivateKey | PrivateKey[],
216
210
  verificationKeys: PublicKey | PublicKey[],
217
211
  ) => Promise<{
218
- data: Uint8Array,
219
- verified: VERIFICATION_STATUS,
220
- }>,
212
+ data: Uint8Array;
213
+ verified: VERIFICATION_STATUS;
214
+ }>;
221
215
 
222
216
  decryptArmoredAndVerifyDetached: (
223
217
  armoredData: string,
@@ -225,12 +219,9 @@ export interface OpenPGPCrypto {
225
219
  sessionKey: SessionKey,
226
220
  verificationKeys: PublicKey | PublicKey[],
227
221
  ) => Promise<{
228
- data: Uint8Array,
229
- verified: VERIFICATION_STATUS,
230
- }>,
222
+ data: Uint8Array;
223
+ verified: VERIFICATION_STATUS;
224
+ }>;
231
225
 
232
- decryptArmoredWithPassword(
233
- armoredData: string,
234
- password: string,
235
- ): Promise<Uint8Array>,
226
+ decryptArmoredWithPassword(armoredData: string, password: string): Promise<Uint8Array>;
236
227
  }
@@ -6,57 +6,63 @@ import { uint8ArrayToBase64String } from './utils';
6
6
  * clients/packages/crypto/lib/proxy/proxy.ts.
7
7
  */
8
8
  export interface OpenPGPCryptoProxy {
9
- generateKey: (options: { userIDs: { name: string }[], type: 'ecc', curve: 'ed25519Legacy' }) => Promise<PrivateKey>,
10
- exportPrivateKey: (options: { privateKey: PrivateKey, passphrase: string | null }) => Promise<string>,
11
- importPrivateKey: (options: { armoredKey: string, passphrase: string | null }) => Promise<PrivateKey>,
12
- generateSessionKey: (options: { recipientKeys: PrivateKey[] }) => Promise<SessionKey>,
13
- encryptSessionKey: (options: SessionKey & { format: 'binary', encryptionKeys?: PublicKey | PublicKey[], passwords?: string[] }) => Promise<Uint8Array>,
14
- decryptSessionKey: (options: { armoredMessage?: string, binaryMessage?: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[] }) => Promise<SessionKey | undefined>,
9
+ generateKey: (options: { userIDs: { name: string }[]; type: 'ecc'; curve: 'ed25519Legacy' }) => Promise<PrivateKey>;
10
+ exportPrivateKey: (options: { privateKey: PrivateKey; passphrase: string | null }) => Promise<string>;
11
+ importPrivateKey: (options: { armoredKey: string; passphrase: string | null }) => Promise<PrivateKey>;
12
+ generateSessionKey: (options: { recipientKeys: PrivateKey[] }) => Promise<SessionKey>;
13
+ encryptSessionKey: (
14
+ options: SessionKey & { format: 'binary'; encryptionKeys?: PublicKey | PublicKey[]; passwords?: string[] },
15
+ ) => Promise<Uint8Array>;
16
+ decryptSessionKey: (options: {
17
+ armoredMessage?: string;
18
+ binaryMessage?: Uint8Array;
19
+ decryptionKeys: PrivateKey | PrivateKey[];
20
+ }) => Promise<SessionKey | undefined>;
15
21
  encryptMessage: (options: {
16
- format?: 'armored' | 'binary',
17
- binaryData: Uint8Array,
18
- sessionKey?: SessionKey,
19
- encryptionKeys: PrivateKey[],
20
- signingKeys?: PrivateKey,
21
- detached?: boolean,
22
+ format?: 'armored' | 'binary';
23
+ binaryData: Uint8Array;
24
+ sessionKey?: SessionKey;
25
+ encryptionKeys: PrivateKey[];
26
+ signingKeys?: PrivateKey;
27
+ detached?: boolean;
22
28
  }) => Promise<{
23
- message: string | Uint8Array,
24
- signature?: string | Uint8Array,
25
- }>,
29
+ message: string | Uint8Array;
30
+ signature?: string | Uint8Array;
31
+ }>;
26
32
  decryptMessage: (options: {
27
- format: 'utf8' | 'binary',
28
- armoredMessage?: string,
29
- binaryMessage?: Uint8Array,
30
- armoredSignature?: string,
31
- binarySignature?: Uint8Array,
32
- sessionKeys?: SessionKey,
33
- passwords?: string[],
34
- decryptionKeys?: PrivateKey | PrivateKey[],
35
- verificationKeys?: PublicKey | PublicKey[],
33
+ format: 'utf8' | 'binary';
34
+ armoredMessage?: string;
35
+ binaryMessage?: Uint8Array;
36
+ armoredSignature?: string;
37
+ binarySignature?: Uint8Array;
38
+ sessionKeys?: SessionKey;
39
+ passwords?: string[];
40
+ decryptionKeys?: PrivateKey | PrivateKey[];
41
+ verificationKeys?: PublicKey | PublicKey[];
36
42
  }) => Promise<{
37
- data: Uint8Array | string,
43
+ data: Uint8Array | string;
38
44
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
39
45
  // Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
40
- verified?: VERIFICATION_STATUS,
41
- verificationStatus?: VERIFICATION_STATUS,
42
- }>,
46
+ verified?: VERIFICATION_STATUS;
47
+ verificationStatus?: VERIFICATION_STATUS;
48
+ }>;
43
49
  signMessage: (options: {
44
- format: 'binary' | 'armored',
45
- binaryData: Uint8Array,
46
- signingKeys: PrivateKey | PrivateKey[],
47
- detached: boolean,
48
- signatureContext?: { critical: boolean, value: string },
49
- }) => Promise<Uint8Array | string>,
50
+ format: 'binary' | 'armored';
51
+ binaryData: Uint8Array;
52
+ signingKeys: PrivateKey | PrivateKey[];
53
+ detached: boolean;
54
+ signatureContext?: { critical: boolean; value: string };
55
+ }) => Promise<Uint8Array | string>;
50
56
  verifyMessage: (options: {
51
- binaryData: Uint8Array,
52
- armoredSignature: string,
53
- verificationKeys: PublicKey | PublicKey[],
57
+ binaryData: Uint8Array;
58
+ armoredSignature: string;
59
+ verificationKeys: PublicKey | PublicKey[];
54
60
  }) => Promise<{
55
61
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
56
62
  // Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
57
- verified?: VERIFICATION_STATUS,
58
- verificationStatus?: VERIFICATION_STATUS,
59
- }>,
63
+ verified?: VERIFICATION_STATUS;
64
+ verificationStatus?: VERIFICATION_STATUS;
65
+ }>;
60
66
  }
61
67
 
62
68
  /**
@@ -71,6 +77,8 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
71
77
 
72
78
  generatePassphrase(): string {
73
79
  const value = crypto.getRandomValues(new Uint8Array(32));
80
+ // TODO: Once all clients can use non-ascii bytes, switch to simple
81
+ // generating of random bytes without encoding it into base64.
74
82
  return uint8ArrayToBase64String(value);
75
83
  }
76
84
 
@@ -85,7 +93,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
85
93
  encryptionKeys,
86
94
  });
87
95
  return {
88
- keyPacket
96
+ keyPacket,
89
97
  };
90
98
  }
91
99
 
@@ -118,11 +126,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
118
126
  };
119
127
  }
120
128
 
121
- async encryptArmored(
122
- data: Uint8Array,
123
- encryptionKeys: PrivateKey[],
124
- sessionKey?: SessionKey,
125
- ) {
129
+ async encryptArmored(data: Uint8Array, encryptionKeys: PrivateKey[], sessionKey?: SessionKey) {
126
130
  const { message: armoredData } = await this.cryptoProxy.encryptMessage({
127
131
  binaryData: data,
128
132
  sessionKey,
@@ -130,7 +134,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
130
134
  });
131
135
  return {
132
136
  armoredData: armoredData as string,
133
- }
137
+ };
134
138
  }
135
139
 
136
140
  async encryptAndSign(
@@ -187,7 +191,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
187
191
  return {
188
192
  encryptedData: encryptedData as Uint8Array,
189
193
  signature: signature as Uint8Array,
190
- }
194
+ };
191
195
  }
192
196
 
193
197
  async encryptAndSignDetachedArmored(
@@ -206,14 +210,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
206
210
  return {
207
211
  armoredData: armoredData as string,
208
212
  armoredSignature: armoredSignature as string,
209
- }
213
+ };
210
214
  }
211
215
 
212
- async sign(
213
- data: Uint8Array,
214
- signingKeys: PrivateKey | PrivateKey[],
215
- signatureContext: string,
216
- ) {
216
+ async sign(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[], signatureContext: string) {
217
217
  const signature = await this.cryptoProxy.signMessage({
218
218
  binaryData: data,
219
219
  signingKeys,
@@ -226,10 +226,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
226
226
  };
227
227
  }
228
228
 
229
- async signArmored(
230
- data: Uint8Array,
231
- signingKeys: PrivateKey | PrivateKey[],
232
- ) {
229
+ async signArmored(data: Uint8Array, signingKeys: PrivateKey | PrivateKey[]) {
233
230
  const signature = await this.cryptoProxy.signMessage({
234
231
  binaryData: data,
235
232
  signingKeys,
@@ -241,11 +238,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
241
238
  };
242
239
  }
243
240
 
244
- async verify(
245
- data: Uint8Array,
246
- armoredSignature: string,
247
- verificationKeys: PublicKey | PublicKey[],
248
- ) {
241
+ async verify(data: Uint8Array, armoredSignature: string, verificationKeys: PublicKey | PublicKey[]) {
249
242
  const { verified, verificationStatus } = await this.cryptoProxy.verifyMessage({
250
243
  binaryData: data,
251
244
  armoredSignature,
@@ -258,10 +251,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
258
251
  };
259
252
  }
260
253
 
261
- async decryptSessionKey(
262
- data: Uint8Array,
263
- decryptionKeys: PrivateKey | PrivateKey[],
264
- ) {
254
+ async decryptSessionKey(data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) {
265
255
  const sessionKey = await this.cryptoProxy.decryptSessionKey({
266
256
  binaryMessage: data,
267
257
  decryptionKeys,
@@ -274,10 +264,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
274
264
  return sessionKey;
275
265
  }
276
266
 
277
- async decryptArmoredSessionKey(
278
- armoredData: string,
279
- decryptionKeys: PrivateKey | PrivateKey[],
280
- ) {
267
+ async decryptArmoredSessionKey(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) {
281
268
  const sessionKey = await this.cryptoProxy.decryptSessionKey({
282
269
  armoredMessage: armoredData,
283
270
  decryptionKeys,
@@ -290,10 +277,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
290
277
  return sessionKey;
291
278
  }
292
279
 
293
- async decryptKey(
294
- armoredKey: string,
295
- passphrase: string,
296
- ) {
280
+ async decryptKey(armoredKey: string, passphrase: string) {
297
281
  const key = await this.cryptoProxy.importPrivateKey({
298
282
  armoredKey,
299
283
  passphrase,
@@ -301,12 +285,12 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
301
285
  return key;
302
286
  }
303
287
 
304
- async decryptAndVerify(
305
- data: Uint8Array,
306
- sessionKey: SessionKey,
307
- verificationKeys: PublicKey[],
308
- ) {
309
- const { data: decryptedData, verified, verificationStatus } = await this.cryptoProxy.decryptMessage({
288
+ async decryptAndVerify(data: Uint8Array, sessionKey: SessionKey, verificationKeys: PublicKey[]) {
289
+ const {
290
+ data: decryptedData,
291
+ verified,
292
+ verificationStatus,
293
+ } = await this.cryptoProxy.decryptMessage({
310
294
  binaryMessage: data,
311
295
  sessionKeys: sessionKey,
312
296
  verificationKeys,
@@ -318,7 +302,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
318
302
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
319
303
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
320
304
  verified: verified || verificationStatus!,
321
- }
305
+ };
322
306
  }
323
307
 
324
308
  async decryptAndVerifyDetached(
@@ -327,7 +311,11 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
327
311
  sessionKey: SessionKey,
328
312
  verificationKeys?: PublicKey[],
329
313
  ) {
330
- const { data: decryptedData, verified, verificationStatus } = await this.cryptoProxy.decryptMessage({
314
+ const {
315
+ data: decryptedData,
316
+ verified,
317
+ verificationStatus,
318
+ } = await this.cryptoProxy.decryptMessage({
331
319
  binaryMessage: data,
332
320
  binarySignature: signature,
333
321
  sessionKeys: sessionKey,
@@ -340,13 +328,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
340
328
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
341
329
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
342
330
  verified: verified || verificationStatus!,
343
- }
331
+ };
344
332
  }
345
333
 
346
- async decryptArmored(
347
- armoredData: string,
348
- decryptionKeys: PrivateKey | PrivateKey[],
349
- ) {
334
+ async decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]) {
350
335
  const { data } = await this.cryptoProxy.decryptMessage({
351
336
  armoredMessage: armoredData,
352
337
  decryptionKeys,
@@ -372,7 +357,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
372
357
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
373
358
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
374
359
  verified: verified || verificationStatus!,
375
- }
360
+ };
376
361
  }
377
362
 
378
363
  async decryptArmoredAndVerifyDetached(
@@ -394,13 +379,10 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
394
379
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
395
380
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
396
381
  verified: verified || verificationStatus!,
397
- }
382
+ };
398
383
  }
399
384
 
400
- async decryptArmoredWithPassword(
401
- armoredData: string,
402
- password: string,
403
- ) {
385
+ async decryptArmoredWithPassword(armoredData: string, password: string) {
404
386
  const { data } = await this.cryptoProxy.decryptMessage({
405
387
  armoredMessage: armoredData,
406
388
  passwords: [password],
@@ -4,7 +4,7 @@ export function uint8ArrayToBase64String(array: Uint8Array) {
4
4
  return encodeBase64(arrayToBinaryString(array));
5
5
  }
6
6
 
7
- export function base64StringToUint8Array(string: string){
7
+ export function base64StringToUint8Array(string: string) {
8
8
  return binaryStringToArray(decodeBase64(string) || '');
9
9
  }
10
10
 
@@ -0,0 +1,48 @@
1
+ import { DiagnosticResult } from './interface';
2
+
3
+ /**
4
+ * A base class for class that should provide diagnostic events
5
+ * as a separate generator. Simply inherit from this class and use
6
+ * `enqueueEvent` to enqueue the observed events. The events will be
7
+ * available via `iterateEvents` generator.
8
+ */
9
+ export class EventsGenerator {
10
+ private eventQueue: DiagnosticResult[] = [];
11
+ private waitingResolvers: Array<() => void> = [];
12
+
13
+ protected enqueueEvent(event: DiagnosticResult): void {
14
+ this.eventQueue.push(event);
15
+ // Notify all waiting generators
16
+ const resolvers = this.waitingResolvers.splice(0);
17
+ resolvers.forEach((resolve) => resolve());
18
+ }
19
+
20
+ async *iterateEvents(): AsyncGenerator<DiagnosticResult> {
21
+ try {
22
+ while (true) {
23
+ if (this.eventQueue.length === 0) {
24
+ await this.waitForEvent();
25
+ }
26
+
27
+ while (this.eventQueue.length > 0) {
28
+ const event = this.eventQueue.shift();
29
+ if (event) {
30
+ yield event;
31
+ }
32
+ }
33
+ }
34
+ } finally {
35
+ this.waitingResolvers.splice(0);
36
+ }
37
+ }
38
+
39
+ private waitForEvent(): Promise<void> {
40
+ return new Promise<void>((resolve) => {
41
+ if (this.eventQueue.length > 0) {
42
+ resolve();
43
+ } else {
44
+ this.waitingResolvers.push(resolve);
45
+ }
46
+ });
47
+ }
48
+ }