@protontech/drive-sdk 0.0.10

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 (594) hide show
  1. package/README.md +17 -0
  2. package/dist/cache/index.d.ts +2 -0
  3. package/dist/cache/index.js +6 -0
  4. package/dist/cache/index.js.map +1 -0
  5. package/dist/cache/interface.d.ts +105 -0
  6. package/dist/cache/interface.js +3 -0
  7. package/dist/cache/interface.js.map +1 -0
  8. package/dist/cache/memoryCache.d.ts +18 -0
  9. package/dist/cache/memoryCache.js +78 -0
  10. package/dist/cache/memoryCache.js.map +1 -0
  11. package/dist/cache/memoryCache.test.d.ts +1 -0
  12. package/dist/cache/memoryCache.test.js +121 -0
  13. package/dist/cache/memoryCache.test.js.map +1 -0
  14. package/dist/config.d.ts +2 -0
  15. package/dist/config.js +11 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/crypto/driveCrypto.d.ts +209 -0
  18. package/dist/crypto/driveCrypto.js +364 -0
  19. package/dist/crypto/driveCrypto.js.map +1 -0
  20. package/dist/crypto/driveCrypto.test.d.ts +1 -0
  21. package/dist/crypto/driveCrypto.test.js +42 -0
  22. package/dist/crypto/driveCrypto.test.js.map +1 -0
  23. package/dist/crypto/hmac.d.ts +22 -0
  24. package/dist/crypto/hmac.js +44 -0
  25. package/dist/crypto/hmac.js.map +1 -0
  26. package/dist/crypto/index.d.ts +6 -0
  27. package/dist/crypto/index.js +13 -0
  28. package/dist/crypto/index.js.map +1 -0
  29. package/dist/crypto/interface.d.ts +125 -0
  30. package/dist/crypto/interface.js +10 -0
  31. package/dist/crypto/interface.js.map +1 -0
  32. package/dist/crypto/openPGPCrypto.d.ts +145 -0
  33. package/dist/crypto/openPGPCrypto.js +250 -0
  34. package/dist/crypto/openPGPCrypto.js.map +1 -0
  35. package/dist/crypto/utils.d.ts +2 -0
  36. package/dist/crypto/utils.js +35 -0
  37. package/dist/crypto/utils.js.map +1 -0
  38. package/dist/errors.d.ts +138 -0
  39. package/dist/errors.js +163 -0
  40. package/dist/errors.js.map +1 -0
  41. package/dist/index.d.ts +24 -0
  42. package/dist/index.js +48 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/interface/account.d.ts +36 -0
  45. package/dist/interface/account.js +3 -0
  46. package/dist/interface/account.js.map +1 -0
  47. package/dist/interface/author.d.ts +26 -0
  48. package/dist/interface/author.js +3 -0
  49. package/dist/interface/author.js.map +1 -0
  50. package/dist/interface/devices.d.ts +18 -0
  51. package/dist/interface/devices.js +10 -0
  52. package/dist/interface/devices.js.map +1 -0
  53. package/dist/interface/download.d.ts +29 -0
  54. package/dist/interface/download.js +3 -0
  55. package/dist/interface/download.js.map +1 -0
  56. package/dist/interface/events.d.ts +26 -0
  57. package/dist/interface/events.js +11 -0
  58. package/dist/interface/events.js.map +1 -0
  59. package/dist/interface/httpClient.d.ts +38 -0
  60. package/dist/interface/httpClient.js +3 -0
  61. package/dist/interface/httpClient.js.map +1 -0
  62. package/dist/interface/index.d.ts +43 -0
  63. package/dist/interface/index.js +22 -0
  64. package/dist/interface/index.js.map +1 -0
  65. package/dist/interface/nodes.d.ts +161 -0
  66. package/dist/interface/nodes.js +21 -0
  67. package/dist/interface/nodes.js.map +1 -0
  68. package/dist/interface/result.d.ts +9 -0
  69. package/dist/interface/result.js +11 -0
  70. package/dist/interface/result.js.map +1 -0
  71. package/dist/interface/sharing.d.ts +73 -0
  72. package/dist/interface/sharing.js +9 -0
  73. package/dist/interface/sharing.js.map +1 -0
  74. package/dist/interface/telemetry.d.ts +61 -0
  75. package/dist/interface/telemetry.js +18 -0
  76. package/dist/interface/telemetry.js.map +1 -0
  77. package/dist/interface/thumbnail.d.ts +17 -0
  78. package/dist/interface/thumbnail.js +9 -0
  79. package/dist/interface/thumbnail.js.map +1 -0
  80. package/dist/interface/upload.d.ts +16 -0
  81. package/dist/interface/upload.js +3 -0
  82. package/dist/interface/upload.js.map +1 -0
  83. package/dist/internal/apiService/apiService.d.ts +51 -0
  84. package/dist/internal/apiService/apiService.js +305 -0
  85. package/dist/internal/apiService/apiService.js.map +1 -0
  86. package/dist/internal/apiService/apiService.test.d.ts +1 -0
  87. package/dist/internal/apiService/apiService.test.js +237 -0
  88. package/dist/internal/apiService/apiService.test.js.map +1 -0
  89. package/dist/internal/apiService/coreTypes.d.ts +24438 -0
  90. package/dist/internal/apiService/coreTypes.js +7 -0
  91. package/dist/internal/apiService/coreTypes.js.map +1 -0
  92. package/dist/internal/apiService/driveTypes.d.ts +11840 -0
  93. package/dist/internal/apiService/driveTypes.js +7 -0
  94. package/dist/internal/apiService/driveTypes.js.map +1 -0
  95. package/dist/internal/apiService/errorCodes.d.ts +30 -0
  96. package/dist/internal/apiService/errorCodes.js +11 -0
  97. package/dist/internal/apiService/errorCodes.js.map +1 -0
  98. package/dist/internal/apiService/errors.d.ts +19 -0
  99. package/dist/internal/apiService/errors.js +76 -0
  100. package/dist/internal/apiService/errors.js.map +1 -0
  101. package/dist/internal/apiService/errors.test.d.ts +1 -0
  102. package/dist/internal/apiService/errors.test.js +69 -0
  103. package/dist/internal/apiService/errors.test.js.map +1 -0
  104. package/dist/internal/apiService/index.d.ts +7 -0
  105. package/dist/internal/apiService/index.js +30 -0
  106. package/dist/internal/apiService/index.js.map +1 -0
  107. package/dist/internal/apiService/observerStream.d.ts +3 -0
  108. package/dist/internal/apiService/observerStream.js +15 -0
  109. package/dist/internal/apiService/observerStream.js.map +1 -0
  110. package/dist/internal/apiService/transformers.d.ts +4 -0
  111. package/dist/internal/apiService/transformers.js +48 -0
  112. package/dist/internal/apiService/transformers.js.map +1 -0
  113. package/dist/internal/batchLoading.d.ts +34 -0
  114. package/dist/internal/batchLoading.js +68 -0
  115. package/dist/internal/batchLoading.js.map +1 -0
  116. package/dist/internal/batchLoading.test.d.ts +1 -0
  117. package/dist/internal/batchLoading.test.js +50 -0
  118. package/dist/internal/batchLoading.test.js.map +1 -0
  119. package/dist/internal/devices/apiService.d.ts +38 -0
  120. package/dist/internal/devices/apiService.js +105 -0
  121. package/dist/internal/devices/apiService.js.map +1 -0
  122. package/dist/internal/devices/cryptoService.d.ts +30 -0
  123. package/dist/internal/devices/cryptoService.js +47 -0
  124. package/dist/internal/devices/cryptoService.js.map +1 -0
  125. package/dist/internal/devices/index.d.ts +15 -0
  126. package/dist/internal/devices/index.js +22 -0
  127. package/dist/internal/devices/index.js.map +1 -0
  128. package/dist/internal/devices/interface.d.ts +31 -0
  129. package/dist/internal/devices/interface.js +3 -0
  130. package/dist/internal/devices/interface.js.map +1 -0
  131. package/dist/internal/devices/manager.d.ts +18 -0
  132. package/dist/internal/devices/manager.js +103 -0
  133. package/dist/internal/devices/manager.js.map +1 -0
  134. package/dist/internal/devices/manager.test.d.ts +1 -0
  135. package/dist/internal/devices/manager.test.js +100 -0
  136. package/dist/internal/devices/manager.test.js.map +1 -0
  137. package/dist/internal/download/apiService.d.ts +27 -0
  138. package/dist/internal/download/apiService.js +110 -0
  139. package/dist/internal/download/apiService.js.map +1 -0
  140. package/dist/internal/download/controller.d.ts +8 -0
  141. package/dist/internal/download/controller.js +22 -0
  142. package/dist/internal/download/controller.js.map +1 -0
  143. package/dist/internal/download/cryptoService.d.ts +17 -0
  144. package/dist/internal/download/cryptoService.js +82 -0
  145. package/dist/internal/download/cryptoService.js.map +1 -0
  146. package/dist/internal/download/fileDownloader.d.ts +33 -0
  147. package/dist/internal/download/fileDownloader.js +226 -0
  148. package/dist/internal/download/fileDownloader.js.map +1 -0
  149. package/dist/internal/download/fileDownloader.test.d.ts +1 -0
  150. package/dist/internal/download/fileDownloader.test.js +324 -0
  151. package/dist/internal/download/fileDownloader.test.js.map +1 -0
  152. package/dist/internal/download/index.d.ts +10 -0
  153. package/dist/internal/download/index.js +82 -0
  154. package/dist/internal/download/index.js.map +1 -0
  155. package/dist/internal/download/interface.d.ts +35 -0
  156. package/dist/internal/download/interface.js +3 -0
  157. package/dist/internal/download/interface.js.map +1 -0
  158. package/dist/internal/download/queue.d.ts +5 -0
  159. package/dist/internal/download/queue.js +31 -0
  160. package/dist/internal/download/queue.js.map +1 -0
  161. package/dist/internal/download/telemetry.d.ts +14 -0
  162. package/dist/internal/download/telemetry.js +106 -0
  163. package/dist/internal/download/telemetry.js.map +1 -0
  164. package/dist/internal/download/telemetry.test.d.ts +1 -0
  165. package/dist/internal/download/telemetry.test.js +111 -0
  166. package/dist/internal/download/telemetry.test.js.map +1 -0
  167. package/dist/internal/download/thumbnailDownloader.d.ts +19 -0
  168. package/dist/internal/download/thumbnailDownloader.js +198 -0
  169. package/dist/internal/download/thumbnailDownloader.js.map +1 -0
  170. package/dist/internal/download/thumbnailDownloader.test.d.ts +1 -0
  171. package/dist/internal/download/thumbnailDownloader.test.js +179 -0
  172. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -0
  173. package/dist/internal/errors.d.ts +6 -0
  174. package/dist/internal/errors.js +28 -0
  175. package/dist/internal/errors.js.map +1 -0
  176. package/dist/internal/errors.test.d.ts +1 -0
  177. package/dist/internal/errors.test.js +22 -0
  178. package/dist/internal/errors.test.js.map +1 -0
  179. package/dist/internal/events/apiService.d.ts +18 -0
  180. package/dist/internal/events/apiService.js +81 -0
  181. package/dist/internal/events/apiService.js.map +1 -0
  182. package/dist/internal/events/cache.d.ts +28 -0
  183. package/dist/internal/events/cache.js +67 -0
  184. package/dist/internal/events/cache.js.map +1 -0
  185. package/dist/internal/events/cache.test.d.ts +1 -0
  186. package/dist/internal/events/cache.test.js +43 -0
  187. package/dist/internal/events/cache.test.js.map +1 -0
  188. package/dist/internal/events/coreEventManager.d.ts +25 -0
  189. package/dist/internal/events/coreEventManager.js +63 -0
  190. package/dist/internal/events/coreEventManager.js.map +1 -0
  191. package/dist/internal/events/eventManager.d.ts +62 -0
  192. package/dist/internal/events/eventManager.js +159 -0
  193. package/dist/internal/events/eventManager.js.map +1 -0
  194. package/dist/internal/events/eventManager.test.d.ts +1 -0
  195. package/dist/internal/events/eventManager.test.js +120 -0
  196. package/dist/internal/events/eventManager.test.js.map +1 -0
  197. package/dist/internal/events/index.d.ts +50 -0
  198. package/dist/internal/events/index.js +117 -0
  199. package/dist/internal/events/index.js.map +1 -0
  200. package/dist/internal/events/interface.d.ts +47 -0
  201. package/dist/internal/events/interface.js +12 -0
  202. package/dist/internal/events/interface.js.map +1 -0
  203. package/dist/internal/events/volumeEventManager.d.ts +27 -0
  204. package/dist/internal/events/volumeEventManager.js +69 -0
  205. package/dist/internal/events/volumeEventManager.js.map +1 -0
  206. package/dist/internal/nodes/apiService.d.ts +54 -0
  207. package/dist/internal/nodes/apiService.js +308 -0
  208. package/dist/internal/nodes/apiService.js.map +1 -0
  209. package/dist/internal/nodes/apiService.test.d.ts +1 -0
  210. package/dist/internal/nodes/apiService.test.js +344 -0
  211. package/dist/internal/nodes/apiService.test.js.map +1 -0
  212. package/dist/internal/nodes/cache.d.ts +57 -0
  213. package/dist/internal/nodes/cache.js +226 -0
  214. package/dist/internal/nodes/cache.js.map +1 -0
  215. package/dist/internal/nodes/cache.test.d.ts +1 -0
  216. package/dist/internal/nodes/cache.test.js +160 -0
  217. package/dist/internal/nodes/cache.test.js.map +1 -0
  218. package/dist/internal/nodes/cryptoCache.d.ts +16 -0
  219. package/dist/internal/nodes/cryptoCache.js +50 -0
  220. package/dist/internal/nodes/cryptoCache.js.map +1 -0
  221. package/dist/internal/nodes/cryptoCache.test.d.ts +1 -0
  222. package/dist/internal/nodes/cryptoCache.test.js +79 -0
  223. package/dist/internal/nodes/cryptoCache.test.js.map +1 -0
  224. package/dist/internal/nodes/cryptoService.d.ts +75 -0
  225. package/dist/internal/nodes/cryptoService.js +409 -0
  226. package/dist/internal/nodes/cryptoService.js.map +1 -0
  227. package/dist/internal/nodes/cryptoService.test.d.ts +1 -0
  228. package/dist/internal/nodes/cryptoService.test.js +698 -0
  229. package/dist/internal/nodes/cryptoService.test.js.map +1 -0
  230. package/dist/internal/nodes/events.d.ts +91 -0
  231. package/dist/internal/nodes/events.js +243 -0
  232. package/dist/internal/nodes/events.js.map +1 -0
  233. package/dist/internal/nodes/events.test.d.ts +1 -0
  234. package/dist/internal/nodes/events.test.js +318 -0
  235. package/dist/internal/nodes/events.test.js.map +1 -0
  236. package/dist/internal/nodes/extendedAttributes.d.ts +23 -0
  237. package/dist/internal/nodes/extendedAttributes.js +117 -0
  238. package/dist/internal/nodes/extendedAttributes.js.map +1 -0
  239. package/dist/internal/nodes/extendedAttributes.test.d.ts +1 -0
  240. package/dist/internal/nodes/extendedAttributes.test.js +176 -0
  241. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -0
  242. package/dist/internal/nodes/index.d.ts +26 -0
  243. package/dist/internal/nodes/index.js +40 -0
  244. package/dist/internal/nodes/index.js.map +1 -0
  245. package/dist/internal/nodes/index.test.d.ts +1 -0
  246. package/dist/internal/nodes/index.test.js +112 -0
  247. package/dist/internal/nodes/index.test.js.map +1 -0
  248. package/dist/internal/nodes/interface.d.ts +135 -0
  249. package/dist/internal/nodes/interface.js +3 -0
  250. package/dist/internal/nodes/interface.js.map +1 -0
  251. package/dist/internal/nodes/mediaTypes.d.ts +2 -0
  252. package/dist/internal/nodes/mediaTypes.js +13 -0
  253. package/dist/internal/nodes/mediaTypes.js.map +1 -0
  254. package/dist/internal/nodes/nodesAccess.d.ts +49 -0
  255. package/dist/internal/nodes/nodesAccess.js +332 -0
  256. package/dist/internal/nodes/nodesAccess.js.map +1 -0
  257. package/dist/internal/nodes/nodesAccess.test.d.ts +1 -0
  258. package/dist/internal/nodes/nodesAccess.test.js +487 -0
  259. package/dist/internal/nodes/nodesAccess.test.js.map +1 -0
  260. package/dist/internal/nodes/nodesManagement.d.ts +33 -0
  261. package/dist/internal/nodes/nodesManagement.js +222 -0
  262. package/dist/internal/nodes/nodesManagement.js.map +1 -0
  263. package/dist/internal/nodes/nodesManagement.test.d.ts +1 -0
  264. package/dist/internal/nodes/nodesManagement.test.js +178 -0
  265. package/dist/internal/nodes/nodesManagement.test.js.map +1 -0
  266. package/dist/internal/nodes/nodesRevisions.d.ts +18 -0
  267. package/dist/internal/nodes/nodesRevisions.js +55 -0
  268. package/dist/internal/nodes/nodesRevisions.js.map +1 -0
  269. package/dist/internal/nodes/validations.d.ts +4 -0
  270. package/dist/internal/nodes/validations.js +21 -0
  271. package/dist/internal/nodes/validations.js.map +1 -0
  272. package/dist/internal/photos/albums.d.ts +13 -0
  273. package/dist/internal/photos/albums.js +30 -0
  274. package/dist/internal/photos/albums.js.map +1 -0
  275. package/dist/internal/photos/apiService.d.ts +8 -0
  276. package/dist/internal/photos/apiService.js +18 -0
  277. package/dist/internal/photos/apiService.js.map +1 -0
  278. package/dist/internal/photos/cache.d.ts +6 -0
  279. package/dist/internal/photos/cache.js +15 -0
  280. package/dist/internal/photos/cache.js.map +1 -0
  281. package/dist/internal/photos/index.d.ts +9 -0
  282. package/dist/internal/photos/index.js +18 -0
  283. package/dist/internal/photos/index.js.map +1 -0
  284. package/dist/internal/photos/interface.d.ts +6 -0
  285. package/dist/internal/photos/interface.js +3 -0
  286. package/dist/internal/photos/interface.js.map +1 -0
  287. package/dist/internal/photos/photosTimeline.d.ts +10 -0
  288. package/dist/internal/photos/photosTimeline.js +20 -0
  289. package/dist/internal/photos/photosTimeline.js.map +1 -0
  290. package/dist/internal/sdkEvents.d.ts +12 -0
  291. package/dist/internal/sdkEvents.js +44 -0
  292. package/dist/internal/sdkEvents.js.map +1 -0
  293. package/dist/internal/sdkEvents.test.d.ts +1 -0
  294. package/dist/internal/sdkEvents.test.js +45 -0
  295. package/dist/internal/sdkEvents.test.js.map +1 -0
  296. package/dist/internal/shares/apiService.d.ts +51 -0
  297. package/dist/internal/shares/apiService.js +128 -0
  298. package/dist/internal/shares/apiService.js.map +1 -0
  299. package/dist/internal/shares/cache.d.ts +15 -0
  300. package/dist/internal/shares/cache.js +63 -0
  301. package/dist/internal/shares/cache.js.map +1 -0
  302. package/dist/internal/shares/cache.test.d.ts +1 -0
  303. package/dist/internal/shares/cache.test.js +54 -0
  304. package/dist/internal/shares/cache.test.js.map +1 -0
  305. package/dist/internal/shares/cryptoCache.d.ts +20 -0
  306. package/dist/internal/shares/cryptoCache.js +35 -0
  307. package/dist/internal/shares/cryptoCache.js.map +1 -0
  308. package/dist/internal/shares/cryptoCache.test.d.ts +1 -0
  309. package/dist/internal/shares/cryptoCache.test.js +58 -0
  310. package/dist/internal/shares/cryptoCache.test.js.map +1 -0
  311. package/dist/internal/shares/cryptoService.d.ts +42 -0
  312. package/dist/internal/shares/cryptoService.js +126 -0
  313. package/dist/internal/shares/cryptoService.js.map +1 -0
  314. package/dist/internal/shares/cryptoService.test.d.ts +1 -0
  315. package/dist/internal/shares/cryptoService.test.js +120 -0
  316. package/dist/internal/shares/cryptoService.test.js.map +1 -0
  317. package/dist/internal/shares/index.d.ts +15 -0
  318. package/dist/internal/shares/index.js +26 -0
  319. package/dist/internal/shares/index.js.map +1 -0
  320. package/dist/internal/shares/interface.d.ts +94 -0
  321. package/dist/internal/shares/interface.js +11 -0
  322. package/dist/internal/shares/interface.js.map +1 -0
  323. package/dist/internal/shares/manager.d.ts +68 -0
  324. package/dist/internal/shares/manager.js +186 -0
  325. package/dist/internal/shares/manager.js.map +1 -0
  326. package/dist/internal/shares/manager.test.d.ts +1 -0
  327. package/dist/internal/shares/manager.test.js +176 -0
  328. package/dist/internal/shares/manager.test.js.map +1 -0
  329. package/dist/internal/sharing/apiService.d.ts +80 -0
  330. package/dist/internal/sharing/apiService.js +325 -0
  331. package/dist/internal/sharing/apiService.js.map +1 -0
  332. package/dist/internal/sharing/cache.d.ts +37 -0
  333. package/dist/internal/sharing/cache.js +105 -0
  334. package/dist/internal/sharing/cache.js.map +1 -0
  335. package/dist/internal/sharing/cache.test.d.ts +1 -0
  336. package/dist/internal/sharing/cache.test.js +82 -0
  337. package/dist/internal/sharing/cache.test.js.map +1 -0
  338. package/dist/internal/sharing/cryptoService.d.ts +112 -0
  339. package/dist/internal/sharing/cryptoService.js +269 -0
  340. package/dist/internal/sharing/cryptoService.js.map +1 -0
  341. package/dist/internal/sharing/events.d.ts +57 -0
  342. package/dist/internal/sharing/events.js +153 -0
  343. package/dist/internal/sharing/events.js.map +1 -0
  344. package/dist/internal/sharing/events.test.d.ts +1 -0
  345. package/dist/internal/sharing/events.test.js +246 -0
  346. package/dist/internal/sharing/events.test.js.map +1 -0
  347. package/dist/internal/sharing/index.d.ts +20 -0
  348. package/dist/internal/sharing/index.js +30 -0
  349. package/dist/internal/sharing/index.js.map +1 -0
  350. package/dist/internal/sharing/interface.d.ts +169 -0
  351. package/dist/internal/sharing/interface.js +9 -0
  352. package/dist/internal/sharing/interface.js.map +1 -0
  353. package/dist/internal/sharing/sharingAccess.d.ts +32 -0
  354. package/dist/internal/sharing/sharingAccess.js +119 -0
  355. package/dist/internal/sharing/sharingAccess.js.map +1 -0
  356. package/dist/internal/sharing/sharingAccess.test.d.ts +1 -0
  357. package/dist/internal/sharing/sharingAccess.test.js +84 -0
  358. package/dist/internal/sharing/sharingAccess.test.js.map +1 -0
  359. package/dist/internal/sharing/sharingManagement.d.ts +43 -0
  360. package/dist/internal/sharing/sharingManagement.js +439 -0
  361. package/dist/internal/sharing/sharingManagement.js.map +1 -0
  362. package/dist/internal/sharing/sharingManagement.test.d.ts +1 -0
  363. package/dist/internal/sharing/sharingManagement.test.js +788 -0
  364. package/dist/internal/sharing/sharingManagement.test.js.map +1 -0
  365. package/dist/internal/uids.d.ts +38 -0
  366. package/dist/internal/uids.js +85 -0
  367. package/dist/internal/uids.js.map +1 -0
  368. package/dist/internal/upload/apiService.d.ts +65 -0
  369. package/dist/internal/upload/apiService.js +137 -0
  370. package/dist/internal/upload/apiService.js.map +1 -0
  371. package/dist/internal/upload/blockVerifier.d.ts +16 -0
  372. package/dist/internal/upload/blockVerifier.js +33 -0
  373. package/dist/internal/upload/blockVerifier.js.map +1 -0
  374. package/dist/internal/upload/chunkStreamReader.d.ts +13 -0
  375. package/dist/internal/upload/chunkStreamReader.js +46 -0
  376. package/dist/internal/upload/chunkStreamReader.js.map +1 -0
  377. package/dist/internal/upload/chunkStreamReader.test.d.ts +1 -0
  378. package/dist/internal/upload/chunkStreamReader.test.js +75 -0
  379. package/dist/internal/upload/chunkStreamReader.test.js.map +1 -0
  380. package/dist/internal/upload/controller.d.ts +8 -0
  381. package/dist/internal/upload/controller.js +25 -0
  382. package/dist/internal/upload/controller.js.map +1 -0
  383. package/dist/internal/upload/cryptoService.d.ts +29 -0
  384. package/dist/internal/upload/cryptoService.js +104 -0
  385. package/dist/internal/upload/cryptoService.js.map +1 -0
  386. package/dist/internal/upload/digests.d.ts +8 -0
  387. package/dist/internal/upload/digests.js +22 -0
  388. package/dist/internal/upload/digests.js.map +1 -0
  389. package/dist/internal/upload/fileUploader.d.ts +65 -0
  390. package/dist/internal/upload/fileUploader.js +463 -0
  391. package/dist/internal/upload/fileUploader.js.map +1 -0
  392. package/dist/internal/upload/fileUploader.test.d.ts +1 -0
  393. package/dist/internal/upload/fileUploader.test.js +393 -0
  394. package/dist/internal/upload/fileUploader.test.js.map +1 -0
  395. package/dist/internal/upload/index.d.ts +16 -0
  396. package/dist/internal/upload/index.js +77 -0
  397. package/dist/internal/upload/index.js.map +1 -0
  398. package/dist/internal/upload/interface.d.ts +117 -0
  399. package/dist/internal/upload/interface.js +3 -0
  400. package/dist/internal/upload/interface.js.map +1 -0
  401. package/dist/internal/upload/manager.d.ts +31 -0
  402. package/dist/internal/upload/manager.js +250 -0
  403. package/dist/internal/upload/manager.js.map +1 -0
  404. package/dist/internal/upload/manager.test.d.ts +1 -0
  405. package/dist/internal/upload/manager.test.js +349 -0
  406. package/dist/internal/upload/manager.test.js.map +1 -0
  407. package/dist/internal/upload/queue.d.ts +5 -0
  408. package/dist/internal/upload/queue.js +32 -0
  409. package/dist/internal/upload/queue.js.map +1 -0
  410. package/dist/internal/upload/telemetry.d.ts +15 -0
  411. package/dist/internal/upload/telemetry.js +111 -0
  412. package/dist/internal/upload/telemetry.js.map +1 -0
  413. package/dist/internal/upload/telemetry.test.d.ts +1 -0
  414. package/dist/internal/upload/telemetry.test.js +107 -0
  415. package/dist/internal/upload/telemetry.test.js.map +1 -0
  416. package/dist/internal/utils.d.ts +1 -0
  417. package/dist/internal/utils.js +13 -0
  418. package/dist/internal/utils.js.map +1 -0
  419. package/dist/internal/wait.d.ts +3 -0
  420. package/dist/internal/wait.js +28 -0
  421. package/dist/internal/wait.js.map +1 -0
  422. package/dist/internal/wait.test.d.ts +1 -0
  423. package/dist/internal/wait.test.js +21 -0
  424. package/dist/internal/wait.test.js.map +1 -0
  425. package/dist/protonDriveClient.d.ts +593 -0
  426. package/dist/protonDriveClient.js +768 -0
  427. package/dist/protonDriveClient.js.map +1 -0
  428. package/dist/protonDrivePhotosClient.d.ts +16 -0
  429. package/dist/protonDrivePhotosClient.js +46 -0
  430. package/dist/protonDrivePhotosClient.js.map +1 -0
  431. package/dist/telemetry.d.ts +187 -0
  432. package/dist/telemetry.js +297 -0
  433. package/dist/telemetry.js.map +1 -0
  434. package/dist/tests/logger.d.ts +2 -0
  435. package/dist/tests/logger.js +12 -0
  436. package/dist/tests/logger.js.map +1 -0
  437. package/dist/tests/telemetry.d.ts +2 -0
  438. package/dist/tests/telemetry.js +11 -0
  439. package/dist/tests/telemetry.js.map +1 -0
  440. package/dist/transformers.d.ts +17 -0
  441. package/dist/transformers.js +77 -0
  442. package/dist/transformers.js.map +1 -0
  443. package/dist/version.d.ts +1 -0
  444. package/dist/version.js +6 -0
  445. package/dist/version.js.map +1 -0
  446. package/package.json +49 -0
  447. package/src/cache/index.ts +2 -0
  448. package/src/cache/interface.ts +104 -0
  449. package/src/cache/memoryCache.test.ts +150 -0
  450. package/src/cache/memoryCache.ts +85 -0
  451. package/src/config.ts +9 -0
  452. package/src/crypto/driveCrypto.test.ts +45 -0
  453. package/src/crypto/driveCrypto.ts +696 -0
  454. package/src/crypto/hmac.ts +46 -0
  455. package/src/crypto/index.ts +6 -0
  456. package/src/crypto/interface.ts +230 -0
  457. package/src/crypto/openPGPCrypto.ts +398 -0
  458. package/src/crypto/utils.ts +40 -0
  459. package/src/errors.ts +168 -0
  460. package/src/index.ts +30 -0
  461. package/src/interface/account.ts +38 -0
  462. package/src/interface/author.ts +29 -0
  463. package/src/interface/devices.ts +21 -0
  464. package/src/interface/download.ts +32 -0
  465. package/src/interface/events.ts +30 -0
  466. package/src/interface/httpClient.ts +42 -0
  467. package/src/interface/index.ts +46 -0
  468. package/src/interface/nodes.ts +168 -0
  469. package/src/interface/result.ts +11 -0
  470. package/src/interface/sharing.ts +87 -0
  471. package/src/interface/telemetry.ts +107 -0
  472. package/src/interface/thumbnail.ts +14 -0
  473. package/src/interface/upload.ts +19 -0
  474. package/src/internal/apiService/apiService.test.ts +285 -0
  475. package/src/internal/apiService/apiService.ts +353 -0
  476. package/src/internal/apiService/coreTypes.ts +24439 -0
  477. package/src/internal/apiService/driveTypes.ts +11841 -0
  478. package/src/internal/apiService/errorCodes.ts +38 -0
  479. package/src/internal/apiService/errors.test.ts +63 -0
  480. package/src/internal/apiService/errors.ts +91 -0
  481. package/src/internal/apiService/index.ts +7 -0
  482. package/src/internal/apiService/observerStream.ts +10 -0
  483. package/src/internal/apiService/transformers.ts +45 -0
  484. package/src/internal/batchLoading.test.ts +58 -0
  485. package/src/internal/batchLoading.ts +74 -0
  486. package/src/internal/devices/apiService.ts +142 -0
  487. package/src/internal/devices/cryptoService.ts +65 -0
  488. package/src/internal/devices/index.ts +31 -0
  489. package/src/internal/devices/interface.ts +28 -0
  490. package/src/internal/devices/manager.test.ts +129 -0
  491. package/src/internal/devices/manager.ts +113 -0
  492. package/src/internal/download/apiService.ts +145 -0
  493. package/src/internal/download/controller.ts +22 -0
  494. package/src/internal/download/cryptoService.ts +96 -0
  495. package/src/internal/download/fileDownloader.test.ts +381 -0
  496. package/src/internal/download/fileDownloader.ts +266 -0
  497. package/src/internal/download/index.ts +122 -0
  498. package/src/internal/download/interface.ts +38 -0
  499. package/src/internal/download/queue.ts +30 -0
  500. package/src/internal/download/telemetry.test.ts +134 -0
  501. package/src/internal/download/telemetry.ts +115 -0
  502. package/src/internal/download/thumbnailDownloader.test.ts +226 -0
  503. package/src/internal/download/thumbnailDownloader.ts +250 -0
  504. package/src/internal/errors.test.ts +21 -0
  505. package/src/internal/errors.ts +28 -0
  506. package/src/internal/events/apiService.ts +87 -0
  507. package/src/internal/events/cache.test.ts +47 -0
  508. package/src/internal/events/cache.ts +80 -0
  509. package/src/internal/events/coreEventManager.ts +69 -0
  510. package/src/internal/events/eventManager.test.ts +139 -0
  511. package/src/internal/events/eventManager.ts +168 -0
  512. package/src/internal/events/index.ts +131 -0
  513. package/src/internal/events/interface.ts +51 -0
  514. package/src/internal/events/volumeEventManager.ts +74 -0
  515. package/src/internal/nodes/apiService.test.ts +394 -0
  516. package/src/internal/nodes/apiService.ts +455 -0
  517. package/src/internal/nodes/cache.test.ts +197 -0
  518. package/src/internal/nodes/cache.ts +240 -0
  519. package/src/internal/nodes/cryptoCache.test.ts +92 -0
  520. package/src/internal/nodes/cryptoCache.ts +47 -0
  521. package/src/internal/nodes/cryptoService.test.ts +814 -0
  522. package/src/internal/nodes/cryptoService.ts +550 -0
  523. package/src/internal/nodes/events.test.ts +383 -0
  524. package/src/internal/nodes/events.ts +271 -0
  525. package/src/internal/nodes/extendedAttributes.test.ts +177 -0
  526. package/src/internal/nodes/extendedAttributes.ts +180 -0
  527. package/src/internal/nodes/index.test.ts +135 -0
  528. package/src/internal/nodes/index.ts +52 -0
  529. package/src/internal/nodes/interface.ts +152 -0
  530. package/src/internal/nodes/mediaTypes.ts +10 -0
  531. package/src/internal/nodes/nodesAccess.test.ts +555 -0
  532. package/src/internal/nodes/nodesAccess.ts +360 -0
  533. package/src/internal/nodes/nodesManagement.test.ts +221 -0
  534. package/src/internal/nodes/nodesManagement.ts +272 -0
  535. package/src/internal/nodes/nodesRevisions.ts +58 -0
  536. package/src/internal/nodes/validations.ts +26 -0
  537. package/src/internal/photos/albums.ts +29 -0
  538. package/src/internal/photos/apiService.ts +16 -0
  539. package/src/internal/photos/cache.ts +11 -0
  540. package/src/internal/photos/index.ts +23 -0
  541. package/src/internal/photos/interface.ts +7 -0
  542. package/src/internal/photos/photosTimeline.ts +18 -0
  543. package/src/internal/sdkEvents.test.ts +55 -0
  544. package/src/internal/sdkEvents.ts +52 -0
  545. package/src/internal/shares/apiService.ts +176 -0
  546. package/src/internal/shares/cache.test.ts +58 -0
  547. package/src/internal/shares/cache.ts +64 -0
  548. package/src/internal/shares/cryptoCache.test.ts +70 -0
  549. package/src/internal/shares/cryptoCache.ts +35 -0
  550. package/src/internal/shares/cryptoService.test.ts +137 -0
  551. package/src/internal/shares/cryptoService.ts +143 -0
  552. package/src/internal/shares/index.ts +35 -0
  553. package/src/internal/shares/interface.ts +104 -0
  554. package/src/internal/shares/manager.test.ts +210 -0
  555. package/src/internal/shares/manager.ts +213 -0
  556. package/src/internal/sharing/apiService.ts +483 -0
  557. package/src/internal/sharing/cache.test.ts +99 -0
  558. package/src/internal/sharing/cache.ts +109 -0
  559. package/src/internal/sharing/cryptoService.ts +378 -0
  560. package/src/internal/sharing/events.test.ts +268 -0
  561. package/src/internal/sharing/events.ts +166 -0
  562. package/src/internal/sharing/index.ts +43 -0
  563. package/src/internal/sharing/interface.ts +177 -0
  564. package/src/internal/sharing/sharingAccess.test.ts +102 -0
  565. package/src/internal/sharing/sharingAccess.ts +133 -0
  566. package/src/internal/sharing/sharingManagement.test.ts +895 -0
  567. package/src/internal/sharing/sharingManagement.ts +521 -0
  568. package/src/internal/uids.ts +83 -0
  569. package/src/internal/upload/apiService.ts +243 -0
  570. package/src/internal/upload/blockVerifier.ts +40 -0
  571. package/src/internal/upload/chunkStreamReader.test.ts +89 -0
  572. package/src/internal/upload/chunkStreamReader.ts +49 -0
  573. package/src/internal/upload/controller.ts +25 -0
  574. package/src/internal/upload/cryptoService.ts +162 -0
  575. package/src/internal/upload/digests.ts +18 -0
  576. package/src/internal/upload/fileUploader.test.ts +513 -0
  577. package/src/internal/upload/fileUploader.ts +576 -0
  578. package/src/internal/upload/index.ts +126 -0
  579. package/src/internal/upload/interface.ts +128 -0
  580. package/src/internal/upload/manager.test.ts +390 -0
  581. package/src/internal/upload/manager.ts +320 -0
  582. package/src/internal/upload/queue.ts +31 -0
  583. package/src/internal/upload/telemetry.test.ts +129 -0
  584. package/src/internal/upload/telemetry.ts +121 -0
  585. package/src/internal/utils.ts +9 -0
  586. package/src/internal/wait.test.ts +21 -0
  587. package/src/internal/wait.ts +26 -0
  588. package/src/protonDriveClient.ts +861 -0
  589. package/src/protonDrivePhotosClient.ts +56 -0
  590. package/src/telemetry.ts +346 -0
  591. package/src/tests/logger.ts +10 -0
  592. package/src/tests/telemetry.ts +9 -0
  593. package/src/transformers.ts +98 -0
  594. package/src/version.ts +4 -0
@@ -0,0 +1,56 @@
1
+ import { DriveAPIService } from './internal/apiService';
2
+ import { ProtonDriveClientContructorParameters } from './interface';
3
+ import { DriveCrypto } from './crypto';
4
+ import { initSharesModule } from './internal/shares';
5
+ import { initNodesModule } from './internal/nodes';
6
+ import { initPhotosModule } from './internal/photos';
7
+ import { DriveEventsService } from './internal/events';
8
+ import { SDKEvents } from './internal/sdkEvents';
9
+ import { getConfig } from './config';
10
+ import { Telemetry } from './telemetry';
11
+
12
+ // TODO: this is only example, on background it use drive internals, but it exposes nice interface for photos
13
+ export class ProtonDrivePhotosClient {
14
+ private nodes: ReturnType<typeof initNodesModule>;
15
+ private photos: ReturnType<typeof initPhotosModule>;
16
+
17
+ constructor({
18
+ httpClient,
19
+ entitiesCache,
20
+ cryptoCache,
21
+ account,
22
+ openPGPCryptoModule,
23
+ srpModule,
24
+ config,
25
+ telemetry,
26
+ }: ProtonDriveClientContructorParameters) {
27
+ if (!telemetry) {
28
+ telemetry = new Telemetry();
29
+ }
30
+
31
+ const fullConfig = getConfig(config);
32
+ const sdkEvents = new SDKEvents(telemetry);
33
+ const cryptoModule = new DriveCrypto(openPGPCryptoModule, srpModule);
34
+ const apiService = new DriveAPIService(telemetry, sdkEvents, httpClient, fullConfig.baseUrl, fullConfig.language);
35
+ const events = new DriveEventsService(telemetry, apiService, entitiesCache);
36
+ const shares = initSharesModule(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule);
37
+ this.nodes = initNodesModule(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, events, shares);
38
+ this.photos = initPhotosModule(apiService, entitiesCache, this.nodes.access);
39
+ }
40
+
41
+ // Timeline or album view
42
+ iterateTimelinePhotos() { } // returns only UIDs and dates - used to show grid and scrolling
43
+ iterateAlbumPhotos() { } // same as above but for album
44
+ iterateThumbnails() { } // returns thumbnails for passed photos that are visible in the UI
45
+ getPhoto() { } // returns full photo details
46
+
47
+ // Album management
48
+ createAlbum(albumName: string) {
49
+ return this.photos.albums.createAlbum(albumName);
50
+ }
51
+ renameAlbum() { }
52
+ shareAlbum() { }
53
+ deleteAlbum() { }
54
+ iterateAlbums() { }
55
+ addPhotosToAlbum() { }
56
+ }
@@ -0,0 +1,346 @@
1
+ import { Logger as LoggerInterface } from './interface';
2
+
3
+ export interface LogRecord {
4
+ time: Date,
5
+ level: LogLevel;
6
+ loggerName: string;
7
+ message: string;
8
+ error?: unknown;
9
+ }
10
+
11
+ export enum LogLevel {
12
+ DEBUG = 'DEBUG',
13
+ INFO = 'INFO',
14
+ WARNING = 'WARNING',
15
+ ERROR = 'ERROR',
16
+ }
17
+
18
+ export interface LogFormatter {
19
+ format(log: LogRecord): string;
20
+ }
21
+
22
+ export interface LogHandler {
23
+ log(log: LogRecord): void;
24
+ }
25
+
26
+ export interface MetricRecord<T extends MetricEvent> {
27
+ time: Date,
28
+ event: T;
29
+ }
30
+
31
+ export type MetricEvent = {
32
+ eventName: string;
33
+ }
34
+
35
+ export interface MetricHandler<T extends MetricEvent> {
36
+ onEvent(metric: MetricRecord<T>): void;
37
+ }
38
+
39
+ /**
40
+ * Telemetry class that logs messages and metrics.
41
+ *
42
+ * Example:
43
+ *
44
+ * ```typescript
45
+ * const memoryLogHandler = new MemoryLogHandler();
46
+ *
47
+ * interface MetricEvents = {
48
+ * name: string,
49
+ * value: number,
50
+ * }
51
+ * class OwnMetricHandler implements MetricHandler<MetricEvents> {
52
+ * onEvent(metric: MetricRecord<MetricEvents>) {
53
+ * // Process metric event
54
+ * }
55
+ * }
56
+ *
57
+ * const telemetry = new Telemetry<MetricEvents>({
58
+ * // Enable debug logging
59
+ * logFilter: new LogFilter({ level: LogLevel.DEBUG }),
60
+ * // Log to console and memory
61
+ * logHandlers: [new ConsoleLogHandler(), memoryLogHandler],
62
+ * // Log to console and own handler to process further
63
+ * metricHandlers: [new ConsoleMetricHandler(), ownMetricHandler],
64
+ * });
65
+ *
66
+ * const logger = telemetry.getLogger('myLogger');
67
+ * logger.debug('Debug message');
68
+ *
69
+ * telemetry.logEvent({ name: 'somethingHappened', value: 42 });
70
+ *
71
+ * const logs = memoryLogHandler.getLogs();
72
+ * // Process logs
73
+ * ```
74
+ *
75
+ * @param logFilter - Log filter to filter logs based on log level, default INFO
76
+ * @param logHandlers - Log handlers to use for logging, see LogHandler implementations
77
+ * @param metricHandlers - Metric handlers to use for logging, see MetricHandler implementations
78
+ */
79
+ export class Telemetry<T extends MetricEvent> {
80
+ private logFilter: LogFilter;
81
+ private logHandlers: LogHandler[];
82
+ private metricHandlers: MetricHandler<T>[];
83
+
84
+ constructor(
85
+ options?: {
86
+ logFilter?: LogFilter,
87
+ logHandlers?: LogHandler[],
88
+ metricHandlers?: MetricHandler<T>[],
89
+ }
90
+ ) {
91
+ this.logFilter = options?.logFilter || new LogFilter();
92
+ this.logHandlers = options?.logHandlers || [new ConsoleLogHandler()];
93
+ this.metricHandlers = options?.metricHandlers || [new ConsoleMetricHandler()];
94
+ }
95
+
96
+ getLogger(name: string): Logger {
97
+ return new Logger(name, this.logFilter, this.logHandlers);
98
+ }
99
+
100
+ logEvent(event: T): void {
101
+ const metric = {
102
+ time: new Date(),
103
+ event,
104
+ };
105
+ this.metricHandlers.forEach(handler => handler.onEvent(metric));
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Logger class that logs messages with different levels.
111
+ *
112
+ * @param name - Name of the logger
113
+ * @param handlers - Log handlers to use for logging, see LogHandler implementations
114
+ */
115
+ class Logger {
116
+ constructor(private name: string, private filter: LogFilter, private handlers: LogHandler[]) {
117
+ this.name = name;
118
+ this.filter = filter;
119
+ this.handlers = handlers;
120
+ }
121
+
122
+ debug(message: string) {
123
+ this.log({
124
+ time: new Date(),
125
+ level: LogLevel.DEBUG,
126
+ loggerName: this.name,
127
+ message,
128
+ });
129
+ }
130
+
131
+ info(message: string) {
132
+ this.log({
133
+ time: new Date(),
134
+ level: LogLevel.INFO,
135
+ loggerName: this.name,
136
+ message,
137
+ });
138
+ }
139
+
140
+ warn(message: string) {
141
+ this.log({
142
+ time: new Date(),
143
+ level: LogLevel.WARNING,
144
+ loggerName: this.name,
145
+ message,
146
+ });
147
+ }
148
+
149
+ error(message: string, error?: unknown) {
150
+ this.log({
151
+ time: new Date(),
152
+ level: LogLevel.ERROR,
153
+ loggerName: this.name,
154
+ message,
155
+ error,
156
+ });
157
+ }
158
+
159
+ private log(log: LogRecord) {
160
+ if (!this.filter.filter(log)) {
161
+ return;
162
+ }
163
+ this.handlers.forEach(handler => handler.log(log));
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Logger class that logs messages with a prefix.
169
+ *
170
+ * Example:
171
+ *
172
+ * ```typescript
173
+ * const logger = new Logger('myLogger', new LogFilter(), [new ConsoleLogHandler()]);
174
+ * const loggerWithPrefix = new LoggerWithPrefix(logger, 'prefix');
175
+ * loggerWithPrefix.info('Info message');
176
+ * ```
177
+ */
178
+ export class LoggerWithPrefix {
179
+ constructor(private logger: LoggerInterface, private prefix: string) {
180
+ this.logger = logger;
181
+ this.prefix = prefix;
182
+ }
183
+
184
+ info(message: string) {
185
+ this.logger.info(`${this.prefix}: ${message}`);
186
+ }
187
+
188
+ debug(message: string) {
189
+ this.logger.debug(`${this.prefix}: ${message}`);
190
+ }
191
+
192
+ warn(message: string) {
193
+ this.logger.warn(`${this.prefix}: ${message}`);
194
+ }
195
+
196
+ error(message: string, error?: unknown) {
197
+ this.logger.error(`${this.prefix}: ${message}`, error);
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Filter logs based on log level. It can be configured by global level or
203
+ * per logger level.
204
+ *
205
+ * @param globalLevel - Global log level, default INFO
206
+ * @param loggerLevels - Log levels for specific loggers, default empty
207
+ */
208
+ export class LogFilter {
209
+ private logLevelMap = {
210
+ 'DEBUG': 0,
211
+ 'INFO': 1,
212
+ 'WARNING': 2,
213
+ 'ERROR': 3,
214
+ }
215
+
216
+ private globalLevel: number;
217
+ private loggerLevels: { [loggerName: string]: number };
218
+
219
+ constructor(options?: {
220
+ globalLevel?: LogLevel,
221
+ loggerLevels?: { [loggerName: string]: LogLevel },
222
+ }) {
223
+ this.globalLevel = this.logLevelMap[options?.globalLevel || LogLevel.INFO];
224
+ this.loggerLevels = Object.fromEntries(Object.entries(options?.loggerLevels || {})
225
+ .map(([loggerName, level]) => [loggerName, this.logLevelMap[level]]));
226
+ }
227
+
228
+ /**
229
+ * @returns False if the log should be ignored.
230
+ */
231
+ filter(log: LogRecord) {
232
+ const logLevel = this.logLevelMap[log.level];
233
+ if (logLevel < this.globalLevel) {
234
+ return false;
235
+ }
236
+ const loggerLevel = this.loggerLevels[log.loggerName] || 0;
237
+ if (logLevel < loggerLevel) {
238
+ return false;
239
+ }
240
+ return true;
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Log handler that logs to console.
246
+ *
247
+ * @param formatter - Formatter to use for log messages, default BasicLogFormatter
248
+ */
249
+ export class ConsoleLogHandler implements LogHandler {
250
+ private logLevelMap = {
251
+ 'DEBUG': console.debug, // eslint-disable-line no-console
252
+ 'INFO': console.info, // eslint-disable-line no-console
253
+ 'WARNING': console.warn, // eslint-disable-line no-console
254
+ 'ERROR': console.error, // eslint-disable-line no-console
255
+ }
256
+
257
+ private formatter: LogFormatter;
258
+
259
+ constructor(formatter?: LogFormatter) {
260
+ this.formatter = formatter || new BasicLogFormatter();
261
+ }
262
+
263
+ log(log: LogRecord) {
264
+ const message = this.formatter.format(log);
265
+ this.logLevelMap[log.level](message);
266
+ }
267
+ }
268
+
269
+ /**
270
+ * Log handler that stores logs in memory with option to retrieve later.
271
+ *
272
+ * Useful for keeping logs around and retrieve them on demand when an error
273
+ * occures.
274
+ *
275
+ * @param formatter - Formatter to use for log messages, default JSONLogFormatter
276
+ * @param maxLogs - Maximum number of logs to store, default 10000
277
+ */
278
+ export class MemoryLogHandler implements LogHandler {
279
+ private logs: string[] = [];
280
+
281
+ private formatter: LogFormatter;
282
+
283
+ constructor(formatter?: LogFormatter, private maxLogs = 10000) {
284
+ this.formatter = formatter || new JSONLogFormatter();
285
+ this.maxLogs = maxLogs;
286
+ }
287
+
288
+ log(log: LogRecord) {
289
+ const message = this.formatter.format(log);
290
+ this.logs.push(message);
291
+
292
+ if (this.logs.length > this.maxLogs) {
293
+ this.logs.shift();
294
+ }
295
+ }
296
+
297
+ getLogs() {
298
+ return this.logs;
299
+ }
300
+
301
+ clear() {
302
+ this.logs = [];
303
+ }
304
+ }
305
+
306
+ /**
307
+ * Formatter that formats logs as JSON.
308
+ *
309
+ * Useful for machine processing.
310
+ */
311
+ export class JSONLogFormatter implements LogFormatter {
312
+ format(log: LogRecord) {
313
+ if (log.error instanceof Error) {
314
+ return JSON.stringify({
315
+ ...log,
316
+ error: log.error.message,
317
+ stack: log.error.stack,
318
+ });
319
+ }
320
+ return JSON.stringify(log);
321
+ }
322
+ }
323
+
324
+ /**
325
+ * Formatter that formats logs as plain text.
326
+ *
327
+ * Useful for human reading.
328
+ */
329
+ export class BasicLogFormatter implements LogFormatter {
330
+ format(log: LogRecord) {
331
+ let errorDetails = '';
332
+ if (log.error) {
333
+ errorDetails = log.error instanceof Error
334
+ ? `\nError: ${log.error.message}\nStack:\n${log.error.stack}`
335
+ : `\nError: ${log.error}`;
336
+ }
337
+ return `${log.time.toISOString()} ${log.level} [${log.loggerName}] ${log.message}${errorDetails}`;
338
+ }
339
+ }
340
+
341
+ class ConsoleMetricHandler<T extends MetricEvent> implements MetricHandler<T> {
342
+ onEvent(metric: MetricRecord<T>) {
343
+ // eslint-disable-next-line no-console
344
+ console.info(`${metric.time.toISOString()} INFO [metric] ${metric.event.eventName} ${JSON.stringify({ ...metric.event, name: undefined })}`);
345
+ }
346
+ }
@@ -0,0 +1,10 @@
1
+ import { Logger } from '../interface';
2
+
3
+ export function getMockLogger(): Logger {
4
+ return {
5
+ debug: jest.fn(),
6
+ info: jest.fn(),
7
+ warn: jest.fn(),
8
+ error: jest.fn(),
9
+ }
10
+ }
@@ -0,0 +1,9 @@
1
+ import { ProtonDriveTelemetry } from "../interface";
2
+ import { getMockLogger } from "./logger";
3
+
4
+ export function getMockTelemetry(): ProtonDriveTelemetry {
5
+ return {
6
+ getLogger: getMockLogger,
7
+ logEvent: jest.fn(),
8
+ };
9
+ }
@@ -0,0 +1,98 @@
1
+ import { MaybeNode as PublicMaybeNode, MaybeMissingNode as PublicMaybeMissingNode, NodeEntity as PublicNodeEntity, DegradedNode as PublicDegradedNode, Result, resultOk, resultError, MissingNode } from './interface';
2
+ import { DecryptedNode as InternalNode } from './internal/nodes';
3
+
4
+ type InternalPartialNode = Pick<
5
+ InternalNode,
6
+ 'uid' |
7
+ 'parentUid' |
8
+ 'name' |
9
+ 'keyAuthor' |
10
+ 'nameAuthor' |
11
+ 'directMemberRole' |
12
+ 'type' |
13
+ 'mediaType' |
14
+ 'isShared' |
15
+ 'creationTime' |
16
+ 'trashTime' |
17
+ 'activeRevision' |
18
+ 'folder' |
19
+ 'totalStorageSize' |
20
+ 'errors'
21
+ >;
22
+
23
+ type NodeUid = string | { uid: string } | Result<{ uid: string }, { uid: string }>;
24
+
25
+ export function getUid(nodeUid: NodeUid): string {
26
+ if (typeof nodeUid === "string") {
27
+ return nodeUid;
28
+ }
29
+ // Directly passed NodeEntity or DegradedNode that has UID directly.
30
+ if ('uid' in nodeUid) {
31
+ return nodeUid.uid;
32
+ }
33
+ // MaybeNode that can be either NodeEntity or DegradedNode.
34
+ if (nodeUid.ok) {
35
+ return nodeUid.value.uid;
36
+ }
37
+ return nodeUid.error.uid;
38
+ }
39
+
40
+ export function getUids(nodeUids: NodeUid[]): string[] {
41
+ return nodeUids.map(getUid);
42
+ }
43
+
44
+ export async function *convertInternalNodeIterator(nodeIterator: AsyncGenerator<InternalPartialNode>): AsyncGenerator<PublicMaybeNode> {
45
+ for await (const node of nodeIterator) {
46
+ yield convertInternalNode(node);
47
+ }
48
+ }
49
+
50
+ export async function *convertInternalMissingNodeIterator(nodeIterator: AsyncGenerator<InternalPartialNode | MissingNode>): AsyncGenerator<PublicMaybeMissingNode> {
51
+ for await (const node of nodeIterator) {
52
+ if ('missingUid' in node) {
53
+ yield resultError(node);
54
+ } else {
55
+ yield convertInternalNode(node);
56
+ }
57
+ }
58
+ }
59
+
60
+ export async function convertInternalNodePromise(nodePromise: Promise<InternalPartialNode>): Promise<PublicMaybeNode> {
61
+ const node = await nodePromise;
62
+ return convertInternalNode(node);
63
+ }
64
+
65
+ export function convertInternalNode(node: InternalPartialNode): PublicMaybeNode {
66
+ const baseNodeMetadata = {
67
+ uid: node.uid,
68
+ parentUid: node.parentUid,
69
+ keyAuthor: node.keyAuthor,
70
+ nameAuthor: node.nameAuthor,
71
+ directMemberRole: node.directMemberRole,
72
+ type: node.type,
73
+ mediaType: node.mediaType,
74
+ isShared: node.isShared,
75
+ creationTime: node.creationTime,
76
+ trashTime: node.trashTime,
77
+ totalStorageSize: node.totalStorageSize,
78
+ folder: node.folder,
79
+ };
80
+
81
+ const name = node.name;
82
+ const activeRevision = node.activeRevision;
83
+
84
+ if (node.errors?.length || !name.ok || (activeRevision && !activeRevision.ok)) {
85
+ return resultError({
86
+ ...baseNodeMetadata,
87
+ name,
88
+ activeRevision,
89
+ errors: node.errors,
90
+ } as PublicDegradedNode);
91
+ }
92
+
93
+ return resultOk({
94
+ ...baseNodeMetadata,
95
+ name: name.value,
96
+ activeRevision: activeRevision?.value,
97
+ } as PublicNodeEntity);
98
+ }
package/src/version.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { version } from '../package.json';
2
+
3
+ export const VERSION = version;
4
+