@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
@@ -0,0 +1,10 @@
1
+ import { ProtonDriveClientContructorParameters } from '../interface';
2
+ import { Diagnostic } from './interface';
3
+ export type { Diagnostic, DiagnosticResult } from './interface';
4
+ /**
5
+ * Initializes the diagnostic tool. It creates the instance of
6
+ * ProtonDriveClient with the special probes to observe the logs,
7
+ * metrics and HTTP calls; and enforced null/empty cache to always
8
+ * start from scratch.
9
+ */
10
+ export declare function initDiagnostic(options: Omit<ProtonDriveClientContructorParameters, 'entitiesCache' | 'cryptoCache' | 'telemetry'>): Diagnostic;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initDiagnostic = initDiagnostic;
4
+ const cache_1 = require("../cache");
5
+ const protonDriveClient_1 = require("../protonDriveClient");
6
+ const httpClient_1 = require("./httpClient");
7
+ const sdkDiagnostic_1 = require("./sdkDiagnostic");
8
+ const sdkDiagnosticFull_1 = require("./sdkDiagnosticFull");
9
+ const telemetry_1 = require("./telemetry");
10
+ /**
11
+ * Initializes the diagnostic tool. It creates the instance of
12
+ * ProtonDriveClient with the special probes to observe the logs,
13
+ * metrics and HTTP calls; and enforced null/empty cache to always
14
+ * start from scratch.
15
+ */
16
+ function initDiagnostic(options) {
17
+ const httpClient = new httpClient_1.DiagnosticHTTPClient(options.httpClient);
18
+ const telemetry = new telemetry_1.DiagnosticTelemetry();
19
+ const protonDriveClient = new protonDriveClient_1.ProtonDriveClient({
20
+ ...options,
21
+ httpClient,
22
+ // Ensure we always start with a clean state.
23
+ // Do not use memory cache as diagnostic should visit each node
24
+ // only once and we don't want to grow memory usage.
25
+ entitiesCache: new cache_1.NullCache(),
26
+ // However, we need to use memory cache for crypto cache to avoid
27
+ // re-fetching the same key for all the children.
28
+ cryptoCache: new cache_1.MemoryCache(),
29
+ // Special telemetry that observes the logs and metrics.
30
+ telemetry,
31
+ });
32
+ const diagnostic = new sdkDiagnostic_1.SDKDiagnostic(protonDriveClient);
33
+ return new sdkDiagnosticFull_1.FullSDKDiagnostic(diagnostic, telemetry, httpClient);
34
+ }
35
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/diagnostic/index.ts"],"names":[],"mappings":";;AAiBA,wCAsBC;AAvCD,oCAAkD;AAElD,4DAAyD;AACzD,6CAAoD;AAEpD,mDAAgD;AAChD,2DAAwD;AACxD,2CAAkD;AAIlD;;;;;GAKG;AACH,SAAgB,cAAc,CAC1B,OAAmG;IAEnG,MAAM,UAAU,GAAG,IAAI,iCAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,+BAAmB,EAAE,CAAC;IAE5C,MAAM,iBAAiB,GAAG,IAAI,qCAAiB,CAAC;QAC5C,GAAG,OAAO;QACV,UAAU;QACV,6CAA6C;QAC7C,+DAA+D;QAC/D,oDAAoD;QACpD,aAAa,EAAE,IAAI,iBAAS,EAAE;QAC9B,iEAAiE;QACjE,iDAAiD;QACjD,WAAW,EAAE,IAAI,mBAAW,EAAE;QAC9B,wDAAwD;QACxD,SAAS;KACZ,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,6BAAa,CAAC,iBAAiB,CAAC,CAAC;IACxD,OAAO,IAAI,qCAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A WritableStream that computes SHA1 hash on the fly.
3
+ * The computed SHA1 hash is available after the stream is closed.
4
+ */
5
+ export declare class IntegrityVerificationStream extends WritableStream<Uint8Array> {
6
+ private sha1Hash;
7
+ private _computedSha1;
8
+ private _computedSizeInBytes;
9
+ private _isClosed;
10
+ constructor();
11
+ /**
12
+ * Get the computed SHA1 hash. Only available after the stream is closed.
13
+ * @returns The SHA1 hash as a hex string, or null if not yet computed or stream was aborted
14
+ */
15
+ get computedSha1(): string | undefined;
16
+ /**
17
+ * Get the computed size in bytes. Only available after the stream is closed.
18
+ * @returns The size in bytes, or 0 if not yet computed or stream was aborted
19
+ */
20
+ get computedSizeInBytes(): number | undefined;
21
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntegrityVerificationStream = void 0;
4
+ const legacy_1 = require("@noble/hashes/legacy");
5
+ const utils_1 = require("@noble/hashes/utils");
6
+ /**
7
+ * A WritableStream that computes SHA1 hash on the fly.
8
+ * The computed SHA1 hash is available after the stream is closed.
9
+ */
10
+ class IntegrityVerificationStream extends WritableStream {
11
+ sha1Hash = legacy_1.sha1.create();
12
+ _computedSha1 = undefined;
13
+ _computedSizeInBytes = 0;
14
+ _isClosed = false;
15
+ constructor() {
16
+ super({
17
+ start: () => { },
18
+ write: (chunk) => {
19
+ if (this._isClosed) {
20
+ throw new Error('Cannot write to a closed stream');
21
+ }
22
+ this.sha1Hash.update(chunk);
23
+ this._computedSizeInBytes += chunk.length;
24
+ },
25
+ close: () => {
26
+ if (!this._isClosed) {
27
+ this._computedSha1 = (0, utils_1.bytesToHex)(this.sha1Hash.digest());
28
+ this._isClosed = true;
29
+ }
30
+ },
31
+ abort: () => {
32
+ this._isClosed = true;
33
+ this._computedSha1 = undefined;
34
+ },
35
+ });
36
+ }
37
+ /**
38
+ * Get the computed SHA1 hash. Only available after the stream is closed.
39
+ * @returns The SHA1 hash as a hex string, or null if not yet computed or stream was aborted
40
+ */
41
+ get computedSha1() {
42
+ return this._computedSha1;
43
+ }
44
+ /**
45
+ * Get the computed size in bytes. Only available after the stream is closed.
46
+ * @returns The size in bytes, or 0 if not yet computed or stream was aborted
47
+ */
48
+ get computedSizeInBytes() {
49
+ if (!this._isClosed) {
50
+ return undefined;
51
+ }
52
+ return this._computedSizeInBytes;
53
+ }
54
+ }
55
+ exports.IntegrityVerificationStream = IntegrityVerificationStream;
56
+ //# sourceMappingURL=integrityVerificationStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrityVerificationStream.js","sourceRoot":"","sources":["../../src/diagnostic/integrityVerificationStream.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAC5C,+CAAiD;AAEjD;;;GAGG;AACH,MAAa,2BAA4B,SAAQ,cAA0B;IAC/D,QAAQ,GAAG,aAAI,CAAC,MAAM,EAAE,CAAC;IACzB,aAAa,GAAuB,SAAS,CAAC;IAC9C,oBAAoB,GAAW,CAAC,CAAC;IACjC,SAAS,GAAG,KAAK,CAAC;IAE1B;QACI,KAAK,CAAC;YACF,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,KAAK,EAAE,CAAC,KAAiB,EAAE,EAAE;gBACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACvD,CAAC;gBACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,oBAAoB,IAAI,KAAK,CAAC,MAAM,CAAC;YAC9C,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAClB,IAAI,CAAC,aAAa,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBAC1B,CAAC;YACL,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YACnC,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,IAAI,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;CACJ;AA/CD,kEA+CC"}
@@ -0,0 +1,102 @@
1
+ import { DegradedNode, MaybeNode, MetricEvent } from '../interface';
2
+ import { LogRecord } from '../telemetry';
3
+ export interface Diagnostic {
4
+ verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
5
+ verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
6
+ }
7
+ export type DiagnosticOptions = {
8
+ verifyContent?: boolean;
9
+ verifyThumbnails?: boolean;
10
+ };
11
+ export type DiagnosticResult = FatalErrorResult | SdkErrorResult | HttpErrorResult | DegradedNodeResult | UnverifiedAuthorResult | ExtendedAttributesErrorResult | ExtendedAttributesMissingFieldResult | ContentFileMissingRevisionResult | ContentIntegrityErrorResult | ContentDownloadErrorResult | ThumbnailsErrorResult | LogErrorResult | LogWarningResult | MetricResult;
12
+ export type FatalErrorResult = {
13
+ type: 'fatal_error';
14
+ message: string;
15
+ error?: unknown;
16
+ };
17
+ export type SdkErrorResult = {
18
+ type: 'sdk_error';
19
+ call: string;
20
+ error?: unknown;
21
+ };
22
+ export type HttpErrorResult = {
23
+ type: 'http_error';
24
+ request: {
25
+ url: string;
26
+ method: string;
27
+ json: unknown;
28
+ };
29
+ error?: unknown;
30
+ response?: {
31
+ status: number;
32
+ statusText: string;
33
+ json?: object;
34
+ jsonError?: unknown;
35
+ };
36
+ };
37
+ export type DegradedNodeResult = {
38
+ type: 'degraded_node';
39
+ nodeUid: string;
40
+ node: DegradedNode;
41
+ };
42
+ export type UnverifiedAuthorResult = {
43
+ type: 'unverified_author';
44
+ nodeUid: string;
45
+ revisionUid?: string;
46
+ authorType: string;
47
+ claimedAuthor?: string;
48
+ error: string;
49
+ node: MaybeNode;
50
+ };
51
+ export type ExtendedAttributesErrorResult = {
52
+ type: 'extended_attributes_error';
53
+ nodeUid: string;
54
+ revisionUid?: string;
55
+ field: 'sha1';
56
+ value: string;
57
+ };
58
+ export type ExtendedAttributesMissingFieldResult = {
59
+ type: 'extended_attributes_missing_field';
60
+ nodeUid: string;
61
+ revisionUid?: string;
62
+ missingField: 'sha1';
63
+ };
64
+ export type ContentFileMissingRevisionResult = {
65
+ type: 'content_file_missing_revision';
66
+ nodeUid: string;
67
+ revisionUid?: string;
68
+ };
69
+ export type ContentIntegrityErrorResult = {
70
+ type: 'content_integrity_error';
71
+ nodeUid: string;
72
+ revisionUid?: string;
73
+ claimedSha1?: string;
74
+ computedSha1?: string;
75
+ claimedSizeInBytes?: number;
76
+ computedSizeInBytes?: number;
77
+ };
78
+ export type ContentDownloadErrorResult = {
79
+ type: 'content_download_error';
80
+ nodeUid: string;
81
+ revisionUid?: string;
82
+ error: unknown;
83
+ };
84
+ export type ThumbnailsErrorResult = {
85
+ type: 'thumbnails_error';
86
+ nodeUid: string;
87
+ revisionUid?: string;
88
+ message?: string;
89
+ error?: unknown;
90
+ };
91
+ export type LogErrorResult = {
92
+ type: 'log_error';
93
+ log: LogRecord;
94
+ };
95
+ export type LogWarningResult = {
96
+ type: 'log_warning';
97
+ log: LogRecord;
98
+ };
99
+ export type MetricResult = {
100
+ type: 'metric';
101
+ event: MetricEvent;
102
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/diagnostic/interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { MaybeNode } from '../interface';
2
+ import { ProtonDriveClient } from '../protonDriveClient';
3
+ import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
4
+ /**
5
+ * Diagnostic tool that uses SDK to traverse the node tree and verify
6
+ * the integrity of the node tree.
7
+ *
8
+ * It produces only events that can be read by direct SDK invocation.
9
+ * To get the full diagnostic, use {@link FullSDKDiagnostic}.
10
+ */
11
+ export declare class SDKDiagnostic implements Diagnostic {
12
+ private protonDriveClient;
13
+ constructor(protonDriveClient: ProtonDriveClient);
14
+ verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
15
+ verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
16
+ private verifyNode;
17
+ private verifyAuthor;
18
+ private verifyFileExtendedAttributes;
19
+ private verifyContent;
20
+ private verifyThumbnails;
21
+ private verifyNodeChildren;
22
+ }
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SDKDiagnostic = void 0;
4
+ const interface_1 = require("../interface");
5
+ const integrityVerificationStream_1 = require("./integrityVerificationStream");
6
+ /**
7
+ * Diagnostic tool that uses SDK to traverse the node tree and verify
8
+ * the integrity of the node tree.
9
+ *
10
+ * It produces only events that can be read by direct SDK invocation.
11
+ * To get the full diagnostic, use {@link FullSDKDiagnostic}.
12
+ */
13
+ class SDKDiagnostic {
14
+ protonDriveClient;
15
+ constructor(protonDriveClient) {
16
+ this.protonDriveClient = protonDriveClient;
17
+ this.protonDriveClient = protonDriveClient;
18
+ }
19
+ async *verifyMyFiles(options) {
20
+ let myFilesRootFolder;
21
+ try {
22
+ myFilesRootFolder = await this.protonDriveClient.getMyFilesRootFolder();
23
+ }
24
+ catch (error) {
25
+ yield {
26
+ type: 'fatal_error',
27
+ message: `Error getting my files root folder`,
28
+ error,
29
+ };
30
+ return;
31
+ }
32
+ yield* this.verifyNodeTree(myFilesRootFolder, options);
33
+ }
34
+ async *verifyNodeTree(node, options) {
35
+ const isFolder = getNodeType(node) === interface_1.NodeType.Folder;
36
+ yield* this.verifyNode(node, options);
37
+ if (isFolder) {
38
+ yield* this.verifyNodeChildren(node, options);
39
+ }
40
+ }
41
+ async *verifyNode(node, options) {
42
+ const nodeUid = node.ok ? node.value.uid : node.error.uid;
43
+ if (!node.ok) {
44
+ yield {
45
+ type: 'degraded_node',
46
+ nodeUid,
47
+ node: node.error,
48
+ };
49
+ }
50
+ const activeRevision = getActiveRevision(node);
51
+ const nodeInfo = {
52
+ ...getNodeUids(node),
53
+ node,
54
+ };
55
+ yield* this.verifyAuthor(node.ok ? node.value.keyAuthor : node.error.keyAuthor, {
56
+ ...nodeInfo,
57
+ authorType: 'key',
58
+ });
59
+ yield* this.verifyAuthor(node.ok ? node.value.nameAuthor : node.error.nameAuthor, {
60
+ ...nodeInfo,
61
+ authorType: 'name',
62
+ });
63
+ if (activeRevision) {
64
+ yield* this.verifyAuthor(activeRevision.contentAuthor, { ...nodeInfo, authorType: 'content' });
65
+ }
66
+ yield* this.verifyFileExtendedAttributes(node);
67
+ if (options?.verifyContent) {
68
+ yield* this.verifyContent(node);
69
+ }
70
+ if (options?.verifyThumbnails) {
71
+ yield* this.verifyThumbnails(node);
72
+ }
73
+ }
74
+ async *verifyAuthor(author, info) {
75
+ if (!author.ok) {
76
+ yield {
77
+ type: 'unverified_author',
78
+ claimedAuthor: author.error.claimedAuthor,
79
+ error: author.error.error,
80
+ ...info,
81
+ };
82
+ }
83
+ }
84
+ async *verifyFileExtendedAttributes(node) {
85
+ const activeRevision = getActiveRevision(node);
86
+ const expectedAttributes = getNodeType(node) === interface_1.NodeType.File;
87
+ const claimedSha1 = activeRevision?.claimedDigests?.sha1;
88
+ if (claimedSha1 && !/^[0-9a-f]{40}$/i.test(claimedSha1)) {
89
+ yield {
90
+ type: 'extended_attributes_error',
91
+ ...getNodeUids(node),
92
+ field: 'sha1',
93
+ value: claimedSha1,
94
+ };
95
+ }
96
+ if (expectedAttributes && !claimedSha1) {
97
+ yield {
98
+ type: 'extended_attributes_missing_field',
99
+ ...getNodeUids(node),
100
+ missingField: 'sha1',
101
+ };
102
+ }
103
+ }
104
+ async *verifyContent(node) {
105
+ if (getNodeType(node) !== interface_1.NodeType.File) {
106
+ return;
107
+ }
108
+ const activeRevision = getActiveRevision(node);
109
+ if (!activeRevision) {
110
+ yield {
111
+ type: 'content_file_missing_revision',
112
+ nodeUid: node.ok ? node.value.uid : node.error.uid,
113
+ };
114
+ return;
115
+ }
116
+ let downloader;
117
+ try {
118
+ downloader = await this.protonDriveClient.getFileRevisionDownloader(activeRevision.uid);
119
+ }
120
+ catch (error) {
121
+ yield {
122
+ type: 'sdk_error',
123
+ call: `getFileRevisionDownloader(${activeRevision.uid})`,
124
+ error,
125
+ };
126
+ return;
127
+ }
128
+ const claimedSha1 = activeRevision.claimedDigests?.sha1;
129
+ const claimedSizeInBytes = downloader.getClaimedSizeInBytes();
130
+ const integrityVerificationStream = new integrityVerificationStream_1.IntegrityVerificationStream();
131
+ const controller = downloader.writeToStream(integrityVerificationStream);
132
+ try {
133
+ await controller.completion();
134
+ const computedSha1 = integrityVerificationStream.computedSha1;
135
+ const computedSizeInBytes = integrityVerificationStream.computedSizeInBytes;
136
+ if (claimedSha1 !== computedSha1 || claimedSizeInBytes !== computedSizeInBytes) {
137
+ yield {
138
+ type: 'content_integrity_error',
139
+ ...getNodeUids(node),
140
+ claimedSha1,
141
+ computedSha1,
142
+ claimedSizeInBytes,
143
+ computedSizeInBytes,
144
+ };
145
+ }
146
+ }
147
+ catch (error) {
148
+ yield {
149
+ type: 'content_download_error',
150
+ ...getNodeUids(node),
151
+ error,
152
+ };
153
+ }
154
+ }
155
+ async *verifyThumbnails(node) {
156
+ if (getNodeType(node) !== interface_1.NodeType.File) {
157
+ return;
158
+ }
159
+ const nodeUid = node.ok ? node.value.uid : node.error.uid;
160
+ try {
161
+ const result = await Array.fromAsync(this.protonDriveClient.iterateThumbnails([nodeUid], interface_1.ThumbnailType.Type1));
162
+ if (result.length === 0) {
163
+ yield {
164
+ type: 'sdk_error',
165
+ call: `iterateThumbnails(${nodeUid})`,
166
+ error: new Error('No thumbnails found'),
167
+ };
168
+ }
169
+ // TODO: We should have better way to check if the thumbnail is not expected.
170
+ if (!result[0].ok && result[0].error !== 'Node has no thumbnail') {
171
+ yield {
172
+ type: 'thumbnails_error',
173
+ nodeUid,
174
+ error: result[0].error,
175
+ };
176
+ }
177
+ }
178
+ catch (error) {
179
+ yield {
180
+ type: 'sdk_error',
181
+ call: `iterateThumbnails(${nodeUid})`,
182
+ error,
183
+ };
184
+ }
185
+ }
186
+ async *verifyNodeChildren(node, options) {
187
+ const nodeUid = node.ok ? node.value.uid : node.error.uid;
188
+ try {
189
+ for await (const child of this.protonDriveClient.iterateFolderChildren(node)) {
190
+ yield* this.verifyNodeTree(child, options);
191
+ }
192
+ }
193
+ catch (error) {
194
+ yield {
195
+ type: 'sdk_error',
196
+ call: `iterateFolderChildren(${nodeUid})`,
197
+ error,
198
+ };
199
+ }
200
+ }
201
+ }
202
+ exports.SDKDiagnostic = SDKDiagnostic;
203
+ function getNodeUids(node) {
204
+ const activeRevision = getActiveRevision(node);
205
+ return {
206
+ nodeUid: node.ok ? node.value.uid : node.error.uid,
207
+ revisionUid: activeRevision?.uid,
208
+ };
209
+ }
210
+ function getNodeType(node) {
211
+ return node.ok ? node.value.type : node.error.type;
212
+ }
213
+ function getActiveRevision(node) {
214
+ if (node.ok) {
215
+ return node.value.activeRevision;
216
+ }
217
+ if (node.error.activeRevision?.ok) {
218
+ return node.error.activeRevision.value;
219
+ }
220
+ return undefined;
221
+ }
222
+ //# sourceMappingURL=sdkDiagnostic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkDiagnostic.js","sourceRoot":"","sources":["../../src/diagnostic/sdkDiagnostic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { MaybeNode } from '../interface';
2
+ import { DiagnosticHTTPClient } from './httpClient';
3
+ import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
4
+ import { DiagnosticTelemetry } from './telemetry';
5
+ /**
6
+ * Diagnostic tool that produces full diagnostic, including logs and metrics
7
+ * by reading the events from the telemetry and HTTP client.
8
+ */
9
+ export declare class FullSDKDiagnostic implements Diagnostic {
10
+ private diagnostic;
11
+ private telemetry;
12
+ private httpClient;
13
+ constructor(diagnostic: Diagnostic, telemetry: DiagnosticTelemetry, httpClient: DiagnosticHTTPClient);
14
+ verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
15
+ verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult>;
16
+ private yieldEvents;
17
+ private internalGenerator;
18
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FullSDKDiagnostic = void 0;
4
+ const zipGenerators_1 = require("./zipGenerators");
5
+ /**
6
+ * Diagnostic tool that produces full diagnostic, including logs and metrics
7
+ * by reading the events from the telemetry and HTTP client.
8
+ */
9
+ class FullSDKDiagnostic {
10
+ diagnostic;
11
+ telemetry;
12
+ httpClient;
13
+ constructor(diagnostic, telemetry, httpClient) {
14
+ this.diagnostic = diagnostic;
15
+ this.telemetry = telemetry;
16
+ this.httpClient = httpClient;
17
+ this.diagnostic = diagnostic;
18
+ this.telemetry = telemetry;
19
+ this.httpClient = httpClient;
20
+ }
21
+ async *verifyMyFiles(options) {
22
+ yield* this.yieldEvents(this.diagnostic.verifyMyFiles(options));
23
+ }
24
+ async *verifyNodeTree(node, options) {
25
+ yield* this.yieldEvents(this.diagnostic.verifyNodeTree(node, options));
26
+ }
27
+ async *yieldEvents(generator) {
28
+ yield* (0, zipGenerators_1.zipGenerators)(generator, this.internalGenerator(), { stopOnFirstDone: true });
29
+ }
30
+ async *internalGenerator() {
31
+ yield* (0, zipGenerators_1.zipGenerators)(this.telemetry.iterateEvents(), this.httpClient.iterateEvents());
32
+ }
33
+ }
34
+ exports.FullSDKDiagnostic = FullSDKDiagnostic;
35
+ //# sourceMappingURL=sdkDiagnosticFull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkDiagnosticFull.js","sourceRoot":"","sources":["../../src/diagnostic/sdkDiagnosticFull.ts"],"names":[],"mappings":";;;AAIA,mDAAgD;AAEhD;;;GAGG;AACH,MAAa,iBAAiB;IAEd;IACA;IACA;IAHZ,YACY,UAAsB,EACtB,SAA8B,EAC9B,UAAgC;QAFhC,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAqB;QAC9B,eAAU,GAAV,UAAU,CAAsB;QAExC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,CAAC,aAAa,CAAC,OAA2B;QAC5C,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,CAAC,cAAc,CAAC,IAAe,EAAE,OAA2B;QAC9D,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,CAAC,WAAW,CAAC,SAA2C;QAClE,KAAK,CAAC,CAAC,IAAA,6BAAa,EAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAEO,KAAK,CAAC,CAAC,iBAAiB;QAC5B,KAAK,CAAC,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1F,CAAC;CACJ;AA1BD,8CA0BC"}
@@ -0,0 +1,25 @@
1
+ import { MetricEvent } from '../interface';
2
+ import { LogRecord } from '../telemetry';
3
+ import { EventsGenerator } from './eventsGenerator';
4
+ /**
5
+ * Special telemetry that is compatible with the SDK.
6
+ *
7
+ * It is a probe into SDK to observe whats going on and report any suspicious
8
+ * behavior.
9
+ *
10
+ * It should be used only for diagnostic purposes.
11
+ */
12
+ export declare class DiagnosticTelemetry extends EventsGenerator {
13
+ getLogger(name: string): Logger;
14
+ logEvent(event: MetricEvent): void;
15
+ }
16
+ declare class Logger {
17
+ private name;
18
+ private callback?;
19
+ constructor(name: string, callback?: ((log: LogRecord) => void) | undefined);
20
+ debug(message: string): void;
21
+ info(message: string): void;
22
+ warn(message: string): void;
23
+ error(message: string, error?: unknown): void;
24
+ }
25
+ export {};
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiagnosticTelemetry = void 0;
4
+ const telemetry_1 = require("../telemetry");
5
+ const eventsGenerator_1 = require("./eventsGenerator");
6
+ /**
7
+ * Special telemetry that is compatible with the SDK.
8
+ *
9
+ * It is a probe into SDK to observe whats going on and report any suspicious
10
+ * behavior.
11
+ *
12
+ * It should be used only for diagnostic purposes.
13
+ */
14
+ class DiagnosticTelemetry extends eventsGenerator_1.EventsGenerator {
15
+ getLogger(name) {
16
+ return new Logger(name, (log) => {
17
+ this.enqueueEvent({
18
+ type: log.level === telemetry_1.LogLevel.ERROR ? 'log_error' : 'log_warning',
19
+ log,
20
+ });
21
+ });
22
+ }
23
+ logEvent(event) {
24
+ if (event.eventName === 'download' && !event.error) {
25
+ return;
26
+ }
27
+ if (event.eventName === 'volumeEventsSubscriptionsChanged') {
28
+ return;
29
+ }
30
+ this.enqueueEvent({
31
+ type: 'metric',
32
+ event,
33
+ });
34
+ }
35
+ }
36
+ exports.DiagnosticTelemetry = DiagnosticTelemetry;
37
+ class Logger {
38
+ name;
39
+ callback;
40
+ constructor(name, callback) {
41
+ this.name = name;
42
+ this.callback = callback;
43
+ this.name = name;
44
+ this.callback = callback;
45
+ }
46
+ // Debug or info logs are excluded from the diagnostic.
47
+ // These logs should not include any suspicious behavior.
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ debug(message) { }
50
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
51
+ info(message) { }
52
+ warn(message) {
53
+ this.callback?.({
54
+ time: new Date(),
55
+ level: telemetry_1.LogLevel.WARNING,
56
+ loggerName: this.name,
57
+ message,
58
+ });
59
+ }
60
+ error(message, error) {
61
+ this.callback?.({
62
+ time: new Date(),
63
+ level: telemetry_1.LogLevel.ERROR,
64
+ loggerName: this.name,
65
+ message,
66
+ error,
67
+ });
68
+ }
69
+ }
70
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/diagnostic/telemetry.ts"],"names":[],"mappings":";;;AACA,4CAAmD;AACnD,uDAAoD;AAEpD;;;;;;;GAOG;AACH,MAAa,mBAAoB,SAAQ,iCAAe;IACpD,SAAS,CAAC,IAAY;QAClB,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YAC5B,IAAI,CAAC,YAAY,CAAC;gBACd,IAAI,EAAE,GAAG,CAAC,KAAK,KAAK,oBAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;gBAChE,GAAG;aACN,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAkB;QACvB,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACjD,OAAO;QACX,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,kCAAkC,EAAE,CAAC;YACzD,OAAO;QACX,CAAC;QAED,IAAI,CAAC,YAAY,CAAC;YACd,IAAI,EAAE,QAAQ;YACd,KAAK;SACR,CAAC,CAAC;IACP,CAAC;CACJ;AAvBD,kDAuBC;AAED,MAAM,MAAM;IAEI;IACA;IAFZ,YACY,IAAY,EACZ,QAAmC;QADnC,SAAI,GAAJ,IAAI,CAAQ;QACZ,aAAQ,GAAR,QAAQ,CAA2B;QAE3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,uDAAuD;IACvD,yDAAyD;IAEzD,6DAA6D;IAC7D,KAAK,CAAC,OAAe,IAAG,CAAC;IAEzB,6DAA6D;IAC7D,IAAI,CAAC,OAAe,IAAG,CAAC;IAExB,IAAI,CAAC,OAAe;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,KAAK,EAAE,oBAAQ,CAAC,OAAO;YACvB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,OAAO;SACV,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAe;QAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,IAAI,EAAE,IAAI,IAAI,EAAE;YAChB,KAAK,EAAE,oBAAQ,CAAC,KAAK;YACrB,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,OAAO;YACP,KAAK;SACR,CAAC,CAAC;IACP,CAAC;CACJ"}