@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,768 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProtonDriveClient = void 0;
4
+ const crypto_1 = require("./crypto");
5
+ const apiService_1 = require("./internal/apiService");
6
+ const shares_1 = require("./internal/shares");
7
+ const nodes_1 = require("./internal/nodes");
8
+ const sharing_1 = require("./internal/sharing");
9
+ const download_1 = require("./internal/download");
10
+ const upload_1 = require("./internal/upload");
11
+ const events_1 = require("./internal/events");
12
+ const sdkEvents_1 = require("./internal/sdkEvents");
13
+ const config_1 = require("./config");
14
+ const transformers_1 = require("./transformers");
15
+ const telemetry_1 = require("./telemetry");
16
+ const devices_1 = require("./internal/devices");
17
+ const uids_1 = require("./internal/uids");
18
+ /**
19
+ * ProtonDriveClient is the main interface for the ProtonDrive SDK.
20
+ *
21
+ * The client provides high-level operations for managing nodes, sharing,
22
+ * and downloading/uploading files. It is the main entry point for using
23
+ * the ProtonDrive SDK.
24
+ */
25
+ class ProtonDriveClient {
26
+ logger;
27
+ sdkEvents;
28
+ events;
29
+ shares;
30
+ nodes;
31
+ sharing;
32
+ download;
33
+ upload;
34
+ devices;
35
+ experimental;
36
+ constructor({ httpClient, entitiesCache, cryptoCache, account, openPGPCryptoModule, srpModule, config, telemetry, }) {
37
+ if (!telemetry) {
38
+ telemetry = new telemetry_1.Telemetry();
39
+ }
40
+ this.logger = telemetry.getLogger('interface');
41
+ const fullConfig = (0, config_1.getConfig)(config);
42
+ this.sdkEvents = new sdkEvents_1.SDKEvents(telemetry);
43
+ const cryptoModule = new crypto_1.DriveCrypto(openPGPCryptoModule, srpModule);
44
+ const apiService = new apiService_1.DriveAPIService(telemetry, this.sdkEvents, httpClient, fullConfig.baseUrl, fullConfig.language);
45
+ this.events = new events_1.DriveEventsService(telemetry, apiService, entitiesCache);
46
+ this.shares = (0, shares_1.initSharesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule);
47
+ this.nodes = (0, nodes_1.initNodesModule)(telemetry, apiService, entitiesCache, cryptoCache, account, cryptoModule, this.events, this.shares);
48
+ this.sharing = (0, sharing_1.initSharingModule)(telemetry, apiService, entitiesCache, account, cryptoModule, this.events, this.shares, this.nodes.access, this.nodes.events);
49
+ this.download = (0, download_1.initDownloadModule)(telemetry, apiService, cryptoModule, account, this.shares, this.nodes.access, this.nodes.revisions);
50
+ this.upload = (0, upload_1.initUploadModule)(telemetry, apiService, cryptoModule, this.shares, this.nodes.access, this.nodes.events);
51
+ this.devices = (0, devices_1.initDevicesModule)(telemetry, apiService, cryptoModule, this.shares, this.nodes.access, this.nodes.management);
52
+ this.experimental = {
53
+ getNodeUrl: async (nodeUid) => {
54
+ this.logger.debug(`Getting node URL for ${(0, transformers_1.getUid)(nodeUid)}`);
55
+ return this.nodes.access.getNodeUrl((0, transformers_1.getUid)(nodeUid));
56
+ },
57
+ getDocsKey: async (nodeUid) => {
58
+ this.logger.debug(`Getting docs keys for ${(0, transformers_1.getUid)(nodeUid)}`);
59
+ const keys = await this.nodes.access.getNodeKeys((0, transformers_1.getUid)(nodeUid));
60
+ if (!keys.contentKeyPacketSessionKey) {
61
+ throw new Error('Node does not have a content key packet session key');
62
+ }
63
+ return keys.contentKeyPacketSessionKey;
64
+ },
65
+ };
66
+ }
67
+ /**
68
+ * Subscribes to the general SDK events.
69
+ *
70
+ * This is not connected to the remote data updates. For that, use
71
+ * and see `subscribeToRemoteDataUpdates`.
72
+ *
73
+ * @param eventName - SDK event name.
74
+ * @param callback - Callback to be called when the event is emitted.
75
+ * @returns Callback to unsubscribe from the event.
76
+ */
77
+ onMessage(eventName, callback) {
78
+ this.logger.debug(`Subscribing to event ${eventName}`);
79
+ return this.sdkEvents.addListener(eventName, callback);
80
+ }
81
+ /**
82
+ * Subscribes to the remote data updates.
83
+ *
84
+ * By default, SDK doesn't subscribe to remote data updates. If you
85
+ * cache the data locally, you need to call this method so the SDK
86
+ * keeps the local cache in sync with the remote data.
87
+ *
88
+ * Only one instance of the SDK should subscribe to remote data updates.
89
+ *
90
+ * Once subscribed, the SDK will poll for events for core user events and
91
+ * for own data at minimum. Updates to nodes from other users are polled
92
+ * with lower frequency depending on the number of subscriptions, and only
93
+ * after accessing them for the first time via `iterateSharedNodesWithMe`.
94
+ */
95
+ async subscribeToRemoteDataUpdates() {
96
+ this.logger.debug('Subscribing to remote data updates');
97
+ await this.events.subscribeToRemoteDataUpdates();
98
+ const { volumeId } = await this.shares.getMyFilesIDs();
99
+ await this.events.listenToVolume(volumeId, true);
100
+ }
101
+ /**
102
+ * Subscribe to updates of the devices.
103
+ *
104
+ * Clients should subscribe to this before beginning to list devices
105
+ * to ensure that updates are reflected once a device is in the cache.
106
+ * Subscribing before listing is also required to ensure that devices
107
+ * that are created during the listing will be recognized.
108
+ *
109
+ * ```typescript
110
+ * const unsubscribe = sdk.subscribeToDevices((event) => {
111
+ * if (event.type === 'update') {
112
+ * // Update the device in the UI
113
+ * } else if (event.type === 'remove') {
114
+ * // Remove the device from the UI
115
+ * }
116
+ * });
117
+ *
118
+ * const devices = await Array.fromAsync(sdk.iterateDevices());
119
+ * // Render the devices in the UI
120
+ *
121
+ * // Unsubscribe from the updates when the component is unmounted
122
+ * unsubscribe();
123
+ * ```
124
+ *
125
+ * @param callback - Callback to be called when the event is emitted.
126
+ * @returns Callback to unsubscribe from the event.
127
+ */
128
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
129
+ subscribeToDevices(callback) {
130
+ this.logger.debug('Subscribing to devices');
131
+ throw new Error('Method not implemented');
132
+ }
133
+ /**
134
+ * Subscribe to updates of the children of the given parent node.
135
+ *
136
+ * Clients should subscribe to this before beginning to list children
137
+ * to ensure that updates are reflected once a node is in the cache.
138
+ * Subscribing before listing is also required to ensure that nodes
139
+ * that are created during the listing will be recognized.
140
+ *
141
+ * ```typescript
142
+ * const unsubscribe = sdk.subscribeToChildren(parentNodeUid, (event) => {
143
+ * if (event.type === 'update') {
144
+ * // Update the node in the UI
145
+ * } else if (event.type === 'remove') {
146
+ * // Remove the node from the UI
147
+ * }
148
+ * });
149
+ *
150
+ * const nodes = await Array.fromAsync(sdk.iterateChildren(parentNodeUid));
151
+ * // Render the nodes in the UI
152
+ *
153
+ * // Unsubscribe from the updates when the component is unmounted
154
+ * unsubscribe();
155
+ * ```
156
+ *
157
+ * @param parentNodeUid - Node entity or its UID string.
158
+ * @param callback - Callback to be called when the event is emitted.
159
+ * @returns Callback to unsubscribe from the event.
160
+ */
161
+ subscribeToFolder(parentNodeUid, callback) {
162
+ this.logger.debug(`Subscribing to children of ${(0, transformers_1.getUid)(parentNodeUid)}`);
163
+ return this.nodes.events.subscribeToChildren((0, transformers_1.getUid)(parentNodeUid), callback);
164
+ }
165
+ /**
166
+ * Subscribe to updates of the trashed nodes.
167
+ *
168
+ * Clients should subscribe to this before beginning to list trashed
169
+ * nodes to ensure that updates are reflected once a node is in the cache.
170
+ * Subscribing before listing is also required to ensure that nodes
171
+ * that are trashed during the listing will be recognized.
172
+ *
173
+ * ```typescript
174
+ * const unsubscribe = sdk.subscribeToTrashedNodes((event) => {
175
+ * if (event.type === 'update') {
176
+ * // Update the node in the UI
177
+ * } else if (event.type === 'remove') {
178
+ * // Remove the node from the UI
179
+ * }
180
+ * });
181
+ *
182
+ * const nodes = await Array.fromAsync(sdk.iterateTrashedNodes());
183
+ * // Render the nodes in the UI
184
+ *
185
+ * // Unsubscribe from the updates when the component is unmounted
186
+ * unsubscribe();
187
+ * ```
188
+ *
189
+ * @param callback - Callback to be called when the event is emitted.
190
+ * @returns Callback to unsubscribe from the event.
191
+ */
192
+ subscribeToTrashedNodes(callback) {
193
+ this.logger.debug('Subscribing to trashed nodes');
194
+ return this.nodes.events.subscribeToTrashedNodes(callback);
195
+ }
196
+ /**
197
+ * Subscribe to updates of the nodes shared by the user.
198
+ *
199
+ * Clients should subscribe to this before beginning to list shared
200
+ * nodes to ensure that updates are reflected once a node is in the cache.
201
+ * Subscribing before listing is also required to ensure that nodes
202
+ * that are shared during the listing will be recognized.
203
+ *
204
+ * ```typescript
205
+ * const unsubscribe = sdk.subscribeToSharedNodesByMe((event) => {
206
+ * if (event.type === 'update') {
207
+ * // Update the node in the UI
208
+ * } else if (event.type === 'remove') {
209
+ * // Remove the node from the UI
210
+ * }
211
+ * });
212
+ *
213
+ * const nodes = await Array.fromAsync(sdk.iterateSharedNodes());
214
+ * // Render the nodes in the UI
215
+ *
216
+ * // Unsubscribe from the updates when the component is unmounted
217
+ * unsubscribe();
218
+ * ```
219
+ *
220
+ * @param callback - Callback to be called when the event is emitted.
221
+ * @returns Callback to unsubscribe from the event.
222
+ */
223
+ subscribeToSharedNodesByMe(callback) {
224
+ this.logger.debug('Subscribing to shared nodes by me');
225
+ return this.sharing.events.subscribeToSharedNodesByMe(callback);
226
+ }
227
+ /**
228
+ * Subscribe to updates of the nodes shared with the user.
229
+ *
230
+ * Clients should subscribe to this before beginning to list shared
231
+ * nodes to ensure that updates are reflected once a node is in the cache.
232
+ * Subscribing before listing is also required to ensure that nodes
233
+ * that are shared during the listing will be recognized.
234
+ *
235
+ * ```typescript
236
+ * const unsubscribe = sdk.subscribeToSharedNodesWithMe((event) => {
237
+ * if (event.type === 'update') {
238
+ * // Update the node in the UI
239
+ * } else if (event.type === 'remove') {
240
+ * // Remove the node from the UI
241
+ * }
242
+ * });
243
+ *
244
+ * const nodes = await Array.fromAsync(sdk.iterateSharedNodesWithMe());
245
+ * // Render the nodes in the UI
246
+ *
247
+ * // Unsubscribe from the updates when the component is unmounted
248
+ * unsubscribe();
249
+ * ```
250
+ *
251
+ * @param callback - Callback to be called when the event is emitted.
252
+ * @returns Callback to unsubscribe from the event.
253
+ */
254
+ subscribeToSharedNodesWithMe(callback) {
255
+ this.logger.debug('Subscribing to shared nodes with me');
256
+ return this.sharing.events.subscribeToSharedNodesWithMe(callback);
257
+ }
258
+ /**
259
+ * Provides the node UID for the given raw share and node IDs.
260
+ *
261
+ * This is required only for the internal implementation to provide
262
+ * backward compatibility with the old Drive web setup.
263
+ *
264
+ * If you are having volume ID, use `generateNodeUid` instead.
265
+ *
266
+ * @deprecated This method is not part of the public API.
267
+ * @param shareId - Context share of the node.
268
+ * @param nodeId - Node/link ID (not UID).
269
+ * @returns The node UID.
270
+ */
271
+ async getNodeUid(shareId, nodeId) {
272
+ this.logger.info(`Getting node UID for share ${shareId} and node ${nodeId}`);
273
+ const share = await this.shares.loadEncryptedShare(shareId);
274
+ return (0, uids_1.makeNodeUid)(share.volumeId, nodeId);
275
+ }
276
+ /**
277
+ * @returns The root folder to My files section of the user.
278
+ */
279
+ async getMyFilesRootFolder() {
280
+ this.logger.info('Getting my files root folder');
281
+ return (0, transformers_1.convertInternalNodePromise)(this.nodes.access.getMyFilesRootFolder());
282
+ }
283
+ /**
284
+ * Iterates the children of the given parent node.
285
+ *
286
+ * The output is not sorted and the order of the children is not guaranteed.
287
+ *
288
+ * You can listen to updates via `subscribeToChildren`.
289
+ *
290
+ * @param parentNodeUid - Node entity or its UID string.
291
+ * @param signal - Signal to abort the operation.
292
+ * @returns An async generator of the children of the given parent node.
293
+ */
294
+ async *iterateFolderChildren(parentNodeUid, signal) {
295
+ this.logger.info(`Iterating children of ${(0, transformers_1.getUid)(parentNodeUid)}`);
296
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.nodes.access.iterateFolderChildren((0, transformers_1.getUid)(parentNodeUid), signal));
297
+ }
298
+ /**
299
+ * Iterates the trashed nodes.
300
+ *
301
+ * The list of trashed nodes is not cached and is fetched from the server
302
+ * on each call. The node data itself are served from cached if available.
303
+ *
304
+ * The output is not sorted and the order of the trashed nodes is not guaranteed.
305
+ *
306
+ * You can listen to updates via `subscribeToTrashedNodes`.
307
+ *
308
+ * @param signal - Signal to abort the operation.
309
+ * @returns An async generator of the trashed nodes.
310
+ */
311
+ async *iterateTrashedNodes(signal) {
312
+ this.logger.info('Iterating trashed nodes');
313
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.nodes.access.iterateTrashedNodes(signal));
314
+ }
315
+ /**
316
+ * Iterates the nodes by their UIDs.
317
+ *
318
+ * The output is not sorted and the order of the nodes is not guaranteed.
319
+ *
320
+ * @param nodeUids - List of node entities or their UIDs.
321
+ * @param signal - Signal to abort the operation.
322
+ * @returns An async generator of the nodes.
323
+ */
324
+ async *iterateNodes(nodeUids, signal) {
325
+ this.logger.info(`Iterating ${nodeUids.length} nodes`);
326
+ yield* (0, transformers_1.convertInternalMissingNodeIterator)(this.nodes.access.iterateNodes((0, transformers_1.getUids)(nodeUids), signal));
327
+ }
328
+ /**
329
+ * Get the node by its UID.
330
+ *
331
+ * @param nodeUid - Node entity or its UID string.
332
+ * @returns The node entity.
333
+ */
334
+ async getNode(nodeUid) {
335
+ this.logger.info(`Getting node ${(0, transformers_1.getUid)(nodeUid)}`);
336
+ return (0, transformers_1.convertInternalNodePromise)(this.nodes.access.getNode((0, transformers_1.getUid)(nodeUid)));
337
+ }
338
+ /**
339
+ * Rename the node.
340
+ *
341
+ * @param nodeUid - Node entity or its UID string.
342
+ * @returns The updated node entity.
343
+ * @throws {@link ValidationError} If the name is empty, too long, or contains a slash.
344
+ * @throws {@link Error} If another node with the same name already exists.
345
+ */
346
+ async renameNode(nodeUid, newName) {
347
+ this.logger.info(`Renaming node ${nodeUid} to ${newName}`);
348
+ return (0, transformers_1.convertInternalNodePromise)(this.nodes.management.renameNode((0, transformers_1.getUid)(nodeUid), newName));
349
+ }
350
+ /**
351
+ * Move the nodes to a new parent node.
352
+ *
353
+ * The operation is performed node by node and the results are yielded
354
+ * as they are available. Order of the results is not guaranteed.
355
+ *
356
+ * If one of the nodes fails to move, the operation continues with the
357
+ * rest of the nodes. Use `NodeResult` to check the status of the action.
358
+ *
359
+ * Only move withing the same section is supported at this moment.
360
+ * That means that the new parent node must be in the same section
361
+ * as the nodes being moved. E.g., moving from My files to Shared with
362
+ * me is not supported yet.
363
+ *
364
+ * @param nodeUids - List of node entities or their UIDs.
365
+ * @param newParentNodeUid - Node entity or its UID string.
366
+ * @param signal - Signal to abort the operation.
367
+ * @returns An async generator of the results of the move operation
368
+ */
369
+ async *moveNodes(nodeUids, newParentNodeUid, signal) {
370
+ this.logger.info(`Moving ${nodeUids.length} nodes to ${newParentNodeUid}`);
371
+ yield* this.nodes.management.moveNodes((0, transformers_1.getUids)(nodeUids), (0, transformers_1.getUid)(newParentNodeUid), signal);
372
+ }
373
+ /**
374
+ * Trash the nodes.
375
+ *
376
+ * The operation is performed in batches and the results are yielded
377
+ * as they are available. Order of the results is not guaranteed.
378
+ *
379
+ * If one of the nodes fails to trash, the operation continues with the
380
+ * rest of the nodes. Use `NodeResult` to check the status of the action.
381
+ *
382
+ * @param nodeUids - List of node entities or their UIDs.
383
+ * @param signal - Signal to abort the operation.
384
+ * @returns An async generator of the results of the trash operation
385
+ */
386
+ async *trashNodes(nodeUids, signal) {
387
+ this.logger.info(`Trashing ${nodeUids.length} nodes`);
388
+ yield* this.nodes.management.trashNodes((0, transformers_1.getUids)(nodeUids), signal);
389
+ }
390
+ /**
391
+ * Restore the nodes from the trash to their original place.
392
+ *
393
+ * The operation is performed in batches and the results are yielded
394
+ * as they are available. Order of the results is not guaranteed.
395
+ *
396
+ * If one of the nodes fails to restore, the operation continues with the
397
+ * rest of the nodes. Use `NodeResult` to check the status of the action.
398
+ *
399
+ * @param nodeUids - List of node entities or their UIDs.
400
+ * @param signal - Signal to abort the operation.
401
+ * @returns An async generator of the results of the restore operation
402
+ */
403
+ async *restoreNodes(nodeUids, signal) {
404
+ this.logger.info(`Restoring ${nodeUids.length} nodes`);
405
+ yield* this.nodes.management.restoreNodes((0, transformers_1.getUids)(nodeUids), signal);
406
+ }
407
+ /**
408
+ * Delete the nodes permanently.
409
+ *
410
+ * The operation is performed in batches and the results are yielded
411
+ * as they are available. Order of the results is not guaranteed.
412
+ *
413
+ * If one of the nodes fails to delete, the operation continues with the
414
+ * rest of the nodes. Use `NodeResult` to check the status of the action.
415
+ *
416
+ * @param nodeUids - List of node entities or their UIDs.
417
+ * @param signal - Signal to abort the operation.
418
+ * @returns An async generator of the results of the delete operation
419
+ */
420
+ async *deleteNodes(nodeUids, signal) {
421
+ this.logger.info(`Deleting ${nodeUids.length} nodes`);
422
+ yield* this.nodes.management.deleteNodes((0, transformers_1.getUids)(nodeUids), signal);
423
+ }
424
+ async emptyTrash() {
425
+ this.logger.info('Emptying trash');
426
+ throw new Error('Method not implemented');
427
+ }
428
+ /**
429
+ * Create a new folder.
430
+ *
431
+ * The folder is created in the given parent node.
432
+ *
433
+ * @param parentNodeUid - Node entity or its UID string of the parent folder.
434
+ * @param name - Name of the new folder.
435
+ * @param modificationTime - Optional modification time of the folder.
436
+ * @returns The created node entity.
437
+ * @throws {@link Error} If the parent node is not a folder.
438
+ * @throws {@link ValidationError} If the name is empty, too long, or contains a slash.
439
+ * @throws {@link Error} If another node with the same name already exists.
440
+ */
441
+ async createFolder(parentNodeUid, name, modificationTime) {
442
+ this.logger.info(`Creating folder ${name} in ${(0, transformers_1.getUid)(parentNodeUid)}`);
443
+ return (0, transformers_1.convertInternalNodePromise)(this.nodes.management.createFolder((0, transformers_1.getUid)(parentNodeUid), name, modificationTime));
444
+ }
445
+ /**
446
+ * Iterates the revisions of given node.
447
+ *
448
+ * The list of node revisions is not cached and is fetched and decrypted
449
+ * from the server on each call.
450
+ *
451
+ * The output is sorted by the revision date in descending order (newest
452
+ * first).
453
+ *
454
+ * @param nodeUid - Node entity or its UID string.
455
+ * @param signal - Signal to abort the operation.
456
+ * @returns An async generator of the node revisions.
457
+ */
458
+ async *iterateRevisions(nodeUid, signal) {
459
+ this.logger.info(`Iterating revisions of ${(0, transformers_1.getUid)(nodeUid)}`);
460
+ yield* this.nodes.revisions.iterateRevisions((0, transformers_1.getUid)(nodeUid), signal);
461
+ }
462
+ /**
463
+ * Restore the node to the given revision.
464
+ *
465
+ * Warning: Restoring revisions might be accepted by the server but not
466
+ * applied. If the client re-loads list of revisions quickly after the
467
+ * restore, the change might not be visible. Update the UI optimistically to
468
+ * reflect the change.
469
+ *
470
+ * @param revisionUid - UID of the revision to restore.
471
+ */
472
+ async restoreRevision(revisionUid) {
473
+ this.logger.info(`Restoring revision ${revisionUid}`);
474
+ await this.nodes.revisions.restoreRevision(revisionUid);
475
+ }
476
+ /**
477
+ * Delete the revision.
478
+ *
479
+ * @param revisionUid - UID of the revision to delete.
480
+ */
481
+ async deleteRevision(revisionUid) {
482
+ this.logger.info(`Deleting revision ${revisionUid}`);
483
+ await this.nodes.revisions.deleteRevision(revisionUid);
484
+ }
485
+ /**
486
+ * Iterates the nodes shared by the user.
487
+ *
488
+ * The output is not sorted and the order of the shared nodes is not guaranteed.
489
+ *
490
+ * You can listen to updates via `subscribeToSharedNodesByMe`.
491
+ *
492
+ * @param signal - Signal to abort the operation.
493
+ * @returns An async generator of the shared nodes.
494
+ */
495
+ async *iterateSharedNodes(signal) {
496
+ this.logger.info('Iterating shared nodes by me');
497
+ yield* (0, transformers_1.convertInternalNodeIterator)(this.sharing.access.iterateSharedNodes(signal));
498
+ }
499
+ /**
500
+ * Iterates the nodes shared with the user.
501
+ *
502
+ * The output is not sorted and the order of the shared nodes is not guaranteed.
503
+ *
504
+ * At the end of the iteration, if `subscribeToRemoteDataUpdates` was called,
505
+ * the SDK will listen to updates for the shared nodes to keep the local cache
506
+ * in sync with the remote data.
507
+ *
508
+ * You can listen to updates via `subscribeToSharedNodesWithMe`.
509
+ *
510
+ * @param signal - Signal to abort the operation.
511
+ * @returns An async generator of the shared nodes.
512
+ */
513
+ async *iterateSharedNodesWithMe(signal) {
514
+ this.logger.info('Iterating shared nodes with me');
515
+ const uniqueVolumeIds = new Set();
516
+ for await (const node of this.sharing.access.iterateSharedNodesWithMe(signal)) {
517
+ yield (0, transformers_1.convertInternalNode)(node);
518
+ const { volumeId } = (0, uids_1.splitNodeUid)(node.uid);
519
+ uniqueVolumeIds.add(volumeId);
520
+ }
521
+ for (const volumeId of uniqueVolumeIds) {
522
+ await this.events.listenToVolume(volumeId, false);
523
+ }
524
+ }
525
+ /**
526
+ * Leave shared node that was previously shared with the user.
527
+ *
528
+ * @param nodeUid - Node entity or its UID string.
529
+ */
530
+ async leaveSharedNode(nodeUid) {
531
+ this.logger.info(`Leaving shared node with me ${(0, transformers_1.getUid)(nodeUid)}`);
532
+ await this.sharing.access.removeSharedNodeWithMe((0, transformers_1.getUid)(nodeUid));
533
+ }
534
+ /**
535
+ * Iterates the invitations to shared nodes.
536
+ *
537
+ * The output is not sorted and the order of the invitations is not guaranteed.
538
+ *
539
+ * @param signal - Signal to abort the operation.
540
+ * @returns An async generator of the invitations.
541
+ */
542
+ async *iterateInvitations(signal) {
543
+ this.logger.info('Iterating invitations');
544
+ yield* this.sharing.access.iterateInvitations(signal);
545
+ }
546
+ /**
547
+ * Accept the invitation to the shared node.
548
+ *
549
+ * @param invitationId - Invitation entity or its UID string.
550
+ */
551
+ async acceptInvitation(invitationId) {
552
+ this.logger.info(`Accepting invitation ${invitationId}`);
553
+ await this.sharing.access.acceptInvitation(invitationId);
554
+ }
555
+ /**
556
+ * Reject the invitation to the shared node.
557
+ *
558
+ * @param invitationId - Invitation entity or its UID string.
559
+ */
560
+ async rejectInvitation(invitationId) {
561
+ this.logger.info(`Rejecting invitation ${invitationId}`);
562
+ await this.sharing.access.rejectInvitation(invitationId);
563
+ }
564
+ /**
565
+ * Get sharing info of the node.
566
+ *
567
+ * The sharing info contains the list of invitations, members,
568
+ * public link and permission for each.
569
+ *
570
+ * The sharing info is not cached and is fetched from the server
571
+ * on each call.
572
+ *
573
+ * @param nodeUid - Node entity or its UID string.
574
+ * @returns The sharing info of the node. Undefined if not shared.
575
+ */
576
+ async getSharingInfo(nodeUid) {
577
+ this.logger.info(`Getting sharing info for ${(0, transformers_1.getUid)(nodeUid)}`);
578
+ return this.sharing.management.getSharingInfo((0, transformers_1.getUid)(nodeUid));
579
+ }
580
+ /**
581
+ * Share or update sharing of the node.
582
+ *
583
+ * If the node is already shared, the sharing settings are updated.
584
+ * If the member is already present but with different role, the role
585
+ * is updated. If the sharing settings is identical, the sharing info
586
+ * is returned without any change.
587
+ *
588
+ * @param nodeUid - Node entity or its UID string.
589
+ * @param settings - Settings for sharing the node.
590
+ * @returns The updated sharing info of the node.
591
+ */
592
+ async shareNode(nodeUid, settings) {
593
+ this.logger.info(`Sharing node ${(0, transformers_1.getUid)(nodeUid)}`);
594
+ return this.sharing.management.shareNode((0, transformers_1.getUid)(nodeUid), settings);
595
+ }
596
+ /**
597
+ * Unshare the node, completely or partially.
598
+ *
599
+ * @param nodeUid - Node entity or its UID string.
600
+ * @param settings - Settings for unsharing the node. If not provided, the node
601
+ * is unshared completely.
602
+ * @returns The updated sharing info of the node. Undefined if unshared completely.
603
+ */
604
+ async unshareNode(nodeUid, settings) {
605
+ if (!settings) {
606
+ this.logger.info(`Unsharing node ${(0, transformers_1.getUid)(nodeUid)}`);
607
+ }
608
+ else {
609
+ this.logger.info(`Partially unsharing ${(0, transformers_1.getUid)(nodeUid)}`);
610
+ }
611
+ return this.sharing.management.unshareNode((0, transformers_1.getUid)(nodeUid), settings);
612
+ }
613
+ async resendInvitation(nodeUid, invitationUid) {
614
+ this.logger.info(`Resending invitation ${(0, transformers_1.getUid)(invitationUid)}`);
615
+ return this.sharing.management.resendInvitationEmail((0, transformers_1.getUid)(nodeUid), (0, transformers_1.getUid)(invitationUid));
616
+ }
617
+ /**
618
+ * Get the file downloader to download the node content of the active
619
+ * revision. For downloading specific revision of the file, use
620
+ * `getFileRevisionDownloader`.
621
+ *
622
+ * The number of ongoing downloads is limited. If the limit is reached,
623
+ * the download is queued and started when the slot is available. It is
624
+ * recommended to not start too many downloads at once to avoid having
625
+ * many open promises.
626
+ *
627
+ * The file downloader is not reusable. If the download is interrupted,
628
+ * a new file downloader must be created.
629
+ *
630
+ * Before download, the authorship of the node should be checked and
631
+ * reported to the user if there is any signature issue, notably on the
632
+ * content author on the revision.
633
+ *
634
+ * Client should not automatically retry the download if it fails. The
635
+ * download should be initiated by the user again. The downloader does
636
+ * automatically retry the download if it fails due to network issues,
637
+ * or if the server is temporarily unavailable.
638
+ *
639
+ * Once download is initiated, the download can fail, besides network
640
+ * issues etc., only when there is integrity error. It should be considered
641
+ * a bug and reported to the Drive developers. The SDK provides option
642
+ * to bypass integrity checks, but that should be used only for debugging
643
+ * purposes, not available to the end users.
644
+ *
645
+ * Example usage:
646
+ *
647
+ * ```typescript
648
+ * const downloader = await client.getFileDownloader(nodeUid, signal);
649
+ * const claimedSize = fileDownloader.getClaimedSizeInBytes();
650
+ * const downloadController = fileDownloader.writeToStream(stream, (downloadedBytes) => { ... });
651
+ *
652
+ * signalController.abort(); // to cancel
653
+ * downloadController.pause(); // to pause
654
+ * downloadController.resume(); // to resume
655
+ * await downloadController.completion(); // to await completion
656
+ * ```
657
+ */
658
+ async getFileDownloader(nodeUid, signal) {
659
+ this.logger.info(`Getting file downloader for ${(0, transformers_1.getUid)(nodeUid)}`);
660
+ return this.download.getFileDownloader((0, transformers_1.getUid)(nodeUid), signal);
661
+ }
662
+ /**
663
+ * Same as `getFileDownloader`, but for a specific revision of the file.
664
+ */
665
+ async getFileRevisionDownloader(nodeRevisionUid, signal) {
666
+ this.logger.info(`Getting file revision downloader for ${(0, transformers_1.getUid)(nodeRevisionUid)}`);
667
+ return this.download.getFileRevisionDownloader(nodeRevisionUid, signal);
668
+ }
669
+ /**
670
+ * Iterates the thumbnails of the given nodes.
671
+ *
672
+ * The output is not sorted and the order of the nodes is not guaranteed.
673
+ *
674
+ * @param nodeUids - List of node entities or their UIDs.
675
+ * @param thumbnailType - Type of the thumbnail to download.
676
+ * @returns An async generator of the results of the restore operation
677
+ */
678
+ async *iterateThumbnails(nodeUids, thumbnailType, signal) {
679
+ this.logger.info(`Iterating ${nodeUids.length} thumbnails`);
680
+ yield* this.download.iterateThumbnails((0, transformers_1.getUids)(nodeUids), thumbnailType, signal);
681
+ }
682
+ /**
683
+ * Get the file uploader to upload a new file. For uploading a new
684
+ * revision, use `getFileRevisionUploader` instead.
685
+ *
686
+ * The number of ongoing uploads is limited. If the limit is reached,
687
+ * the upload is queued and started when the slot is available. It is
688
+ * recommended to not start too many uploads at once to avoid having
689
+ * many open promises.
690
+ *
691
+ * The file uploader is not reusable. If the upload is interrupted,
692
+ * a new file uploader must be created.
693
+ *
694
+ * Client should not automatically retry the upload if it fails. The
695
+ * upload should be initiated by the user again. The uploader does
696
+ * automatically retry the upload if it fails due to network issues,
697
+ * or if the server is temporarily unavailable.
698
+ *
699
+ * Example usage:
700
+ *
701
+ * ```typescript
702
+ * const uploader = await client.getFileUploader(parentFolderUid, name, metadata, signal);
703
+ * const uploadController = uploader.writeStream(stream, thumbnails, (uploadedBytes) => { ... });
704
+ *
705
+ * signalController.abort(); // to cancel
706
+ * uploadController.pause(); // to pause
707
+ * uploadController.resume(); // to resume
708
+ * const nodeUid = await uploadController.completion(); // to await completion
709
+ * ```
710
+ */
711
+ async getFileUploader(parentFolderUid, name, metadata, signal) {
712
+ this.logger.info(`Getting file uploader for parent ${(0, transformers_1.getUid)(parentFolderUid)}`);
713
+ return this.upload.getFileUploader((0, transformers_1.getUid)(parentFolderUid), name, metadata, signal);
714
+ }
715
+ /**
716
+ * Same as `getFileUploader`, but for a uploading new revision of the file.
717
+ */
718
+ async getFileRevisionUploader(nodeUid, metadata, signal) {
719
+ this.logger.info(`Getting file revision uploader for ${(0, transformers_1.getUid)(nodeUid)}`);
720
+ return this.upload.getFileRevisionUploader((0, transformers_1.getUid)(nodeUid), metadata, signal);
721
+ }
722
+ /**
723
+ * Iterates the devices of the user.
724
+ *
725
+ * The output is not sorted and the order of the devices is not guaranteed.
726
+ *
727
+ * You can listen to updates via `subscribeToDevices`.
728
+ *
729
+ * @returns An async generator of devices.
730
+ */
731
+ async *iterateDevices(signal) {
732
+ this.logger.info('Iterating devices');
733
+ yield* this.devices.iterateDevices(signal);
734
+ }
735
+ /**
736
+ * Creates a new device.
737
+ *
738
+ * @param nodeUid - Device entity or its UID string.
739
+ * @returns The created device entity.
740
+ * @throws {@link ValidationError} If the name is empty, too long, or contains a slash.
741
+ */
742
+ async createDevice(name, deviceType) {
743
+ this.logger.info(`Creating device of type ${deviceType}`);
744
+ return this.devices.createDevice(name, deviceType);
745
+ }
746
+ /**
747
+ * Renames a device.
748
+ *
749
+ * @param deviceOrUid - Device entity or its UID string.
750
+ * @returns The updated device entity.
751
+ * @throws {@link ValidationError} If the name is empty, too long, or contains a slash.
752
+ */
753
+ async renameDevice(deviceOrUid, name) {
754
+ this.logger.info(`Renaming device ${(0, transformers_1.getUid)(deviceOrUid)}`);
755
+ return this.devices.renameDevice((0, transformers_1.getUid)(deviceOrUid), name);
756
+ }
757
+ /**
758
+ * Deletes a device.
759
+ *
760
+ * @param deviceOrUid - Device entity or its UID string.
761
+ */
762
+ async deleteDevice(deviceOrUid) {
763
+ this.logger.info(`Deleting device ${(0, transformers_1.getUid)(deviceOrUid)}`);
764
+ await this.devices.deleteDevice((0, transformers_1.getUid)(deviceOrUid));
765
+ }
766
+ }
767
+ exports.ProtonDriveClient = ProtonDriveClient;
768
+ //# sourceMappingURL=protonDriveClient.js.map