@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,40 @@
1
+ // This file has copy-pasted utilities from CryptoProxy located in Proton web clients monorepo.
2
+
3
+ export function uint8ArrayToBase64String(array: Uint8Array) {
4
+ return encodeBase64(arrayToBinaryString(array));
5
+ }
6
+
7
+ export function base64StringToUint8Array(string: string){
8
+ return binaryStringToArray(decodeBase64(string) || '');
9
+ }
10
+
11
+ const ifDefined =
12
+ <T, R>(cb: (input: T) => R) =>
13
+ <U extends T | undefined>(input: U) => {
14
+ return (input !== undefined ? cb(input as T) : undefined) as U extends T ? R : undefined;
15
+ };
16
+
17
+ const encodeBase64 = ifDefined((input: string) => btoa(input).trim());
18
+
19
+ const decodeBase64 = ifDefined((input: string) => atob(input.trim()));
20
+
21
+ const arrayToBinaryString = (bytes: Uint8Array) => {
22
+ const result = [];
23
+ const bs = 1 << 14;
24
+ const j = bytes.length;
25
+
26
+ for (let i = 0; i < j; i += bs) {
27
+ // @ts-expect-error Uint8Array treated as number[]
28
+ // eslint-disable-next-line prefer-spread
29
+ result.push(String.fromCharCode.apply(String, bytes.subarray(i, i + bs < j ? i + bs : j)));
30
+ }
31
+ return result.join('');
32
+ };
33
+
34
+ const binaryStringToArray = (str: string) => {
35
+ const result = new Uint8Array(str.length);
36
+ for (let i = 0; i < str.length; i++) {
37
+ result[i] = str.charCodeAt(i);
38
+ }
39
+ return result;
40
+ };
package/src/errors.ts ADDED
@@ -0,0 +1,168 @@
1
+ import { c } from 'ttag';
2
+
3
+ /**
4
+ * Base class for all SDK errors.
5
+ *
6
+ * This class can be used for catching all SDK errors. The error should have
7
+ * translated message in the `message` property that should be shown to the
8
+ * user without any modification.
9
+ *
10
+ * No retries should be done as that is already handled by the SDK.
11
+ *
12
+ * When SDK throws an error and it is not `ProtonDriveError`, it is unhandled error
13
+ * by the SDK and usually indicates bug in the SDK. Please, report it.
14
+ */
15
+ export class ProtonDriveError extends Error {
16
+ name = 'ProtonDriveError';
17
+ }
18
+
19
+ /**
20
+ * Error thrown when the operation is aborted.
21
+ *
22
+ * This error is thrown when the operation is aborted by the user.
23
+ * For example, by calling `abort()` on the `AbortSignal`.
24
+ */
25
+ export class AbortError extends ProtonDriveError {
26
+ name = 'AbortError';
27
+
28
+ constructor(message?: string) {
29
+ super(message || c('Error').t`Operation aborted`);
30
+ }
31
+ }
32
+
33
+ /**
34
+ * Error thrown when the validation fails.
35
+ *
36
+ * This error is thrown when the validation of the input fails.
37
+ * Validation can be done on the client side or on the server side.
38
+ *
39
+ * For example, on the client, it can be thrown when the node name doesn't
40
+ * follow the required format, etc., while on the server side, it can be thrown
41
+ * when there is not enough permissions, etc.
42
+ */
43
+ export class ValidationError extends ProtonDriveError {
44
+ name = 'ValidationError';
45
+
46
+ /**
47
+ * Internal API code.
48
+ *
49
+ * Use only for debugging purposes.
50
+ */
51
+ public readonly code?: number;
52
+
53
+ constructor(message: string, code?: number) {
54
+ super(message);
55
+ this.code = code;
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Error thrown when the node already exists.
61
+ *
62
+ * This error is thrown when the node with the same name already exists in the
63
+ * parent folder. The client should ask the user to replace the existing node
64
+ * or choose another name. The available name is provided in the `availableName`
65
+ * property (that will contain original name with the index that can be used).
66
+ */
67
+ export class NodeAlreadyExistsValidationError extends ValidationError {
68
+ name = 'NodeAlreadyExistsValidationError';
69
+
70
+ public readonly availableName: string;
71
+
72
+ constructor(message: string, code: number, availableName: string) {
73
+ super(message, code);
74
+ this.availableName = availableName;
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Error thrown when the API call fails.
80
+ *
81
+ * This error covers both HTTP errors and API errors. SDK automatically
82
+ * retries the request before the error is thrown. The sepcific algorithm
83
+ * used for retries depends on the type of the error.
84
+ *
85
+ * Client should not retry the request when this error is thrown.
86
+ */
87
+ export class ServerError extends ProtonDriveError {
88
+ name = 'ServerError';
89
+
90
+ /**
91
+ * HTTP status code of the response.
92
+ *
93
+ * Use only for debugging purposes.
94
+ */
95
+ public readonly statusCode?: number;
96
+ /**
97
+ * Internal API code.
98
+ *
99
+ * Use only for debugging purposes.
100
+ */
101
+ public readonly code?: number;
102
+ }
103
+
104
+ /**
105
+ * Error thrown when the client makes too many requests to the API.
106
+ *
107
+ * SDK is configured to stay below the rate limits, but it can still happen if
108
+ * client is running multiple SDKs in parallel, or if the rate limits are
109
+ * changed on the server side.
110
+ *
111
+ * SDK automatically retries the request before the error is thrown after
112
+ * waiting for the required time specified by the server.
113
+ *
114
+ * Client should slow down calling SDK when this error is thrown.
115
+ *
116
+ * You can be also notified about the rate limits by the `requestsThrottled`
117
+ * event. See `onMessage` method on the SDK class for more details.
118
+ */
119
+ export class RateLimitedError extends ServerError {
120
+ name = 'RateLimitedError';
121
+
122
+ code = 429;
123
+ }
124
+
125
+ /**
126
+ * Error thrown when the client is not connected to the internet.
127
+ *
128
+ * Client should check the internet connection when this error is thrown.
129
+ *
130
+ * You can also be notified about the connection status by the `offline` event
131
+ * See `onMessage` method on the SDK class for more details.
132
+ */
133
+ export class ConnectionError extends ProtonDriveError {
134
+ name = 'ConnectionError';
135
+ }
136
+
137
+ /**
138
+ * Error thrown when the decryption fails.
139
+ *
140
+ * Client should report this error to the user and report bug report.
141
+ *
142
+ * In most cases, there is no decryption error. Every decryption error should
143
+ * be not exposed but set as empty value on the node, for example. But in the
144
+ * case of the file content, if block cannot be decrypted, decryption error
145
+ * is thrown.
146
+ */
147
+ export class DecryptionError extends ProtonDriveError {
148
+ name = 'DecryptionError';
149
+ }
150
+
151
+ /**
152
+ * Error thrown when the data integrity check fails.
153
+ *
154
+ * Client should report this error to the user and report bug report.
155
+ *
156
+ * For example, it can happen when hashes don't match, etc. In some cases,
157
+ * SDK allows to run command without verification checks for debug purposes.
158
+ */
159
+ export class IntegrityError extends ProtonDriveError {
160
+ name = 'IntegrityError';
161
+
162
+ public readonly debug?: object;
163
+
164
+ constructor(message: string, debug?: object) {
165
+ super(message);
166
+ this.debug = debug;
167
+ }
168
+ }
package/src/index.ts ADDED
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Use only what is exported here. This is the public supported API of the SDK.
3
+ */
4
+
5
+ import { makeNodeUid } from './internal/uids';
6
+
7
+ export * from './interface';
8
+ export * from './cache';
9
+ export * from './errors';
10
+ export type { OpenPGPCrypto, OpenPGPCryptoProxy } from './crypto';
11
+ export { OpenPGPCryptoWithCryptoProxy } from './crypto';
12
+ export { ProtonDriveClient } from './protonDriveClient';
13
+ export { VERSION } from './version';
14
+
15
+ /**
16
+ * Provides the node UID for the given raw volume and node IDs.
17
+ *
18
+ * This is required only for the internal implementation to provide
19
+ * backward compatibility with the old Drive web setup.
20
+ *
21
+ * If you are having share ID, use `ProtonDriveClient::getNodeUid` instead.
22
+ *
23
+ * @deprecated This method is not part of the public API.
24
+ * @param volumeId - Volume of the node.
25
+ * @param nodeId - Node/link ID (not UID).
26
+ * @returns The node UID.
27
+ */
28
+ export function generateNodeUid(volumeId: string, nodeId: string) {
29
+ return makeNodeUid(volumeId, nodeId);
30
+ }
@@ -0,0 +1,38 @@
1
+ import { PrivateKey, PublicKey } from '../crypto';
2
+
3
+ export interface ProtonDriveAccount {
4
+ /**
5
+ * Get own primary address.
6
+ *
7
+ * @throws Error If there is no primary address.
8
+ */
9
+ getOwnPrimaryAddress(): Promise<ProtonDriveAccountAddress>,
10
+ /**
11
+ * Get own address by email or addressId.
12
+ *
13
+ * @throws Error If there is no address with given email or addressId.
14
+ */
15
+ getOwnAddress(emailOrAddressId: string): Promise<ProtonDriveAccountAddress>,
16
+ /**
17
+ * Returns whether given email can be used to share files with Proton Drive.
18
+ */
19
+ hasProtonAccount(email: string): Promise<boolean>,
20
+ /**
21
+ * Get public keys for given email.
22
+ *
23
+ * Does not throw if there is no public key for given email, but returns empty array.
24
+ *
25
+ * @throws Error Only if there is an error while fetching keys.
26
+ */
27
+ getPublicKeys(email: string): Promise<PublicKey[]>,
28
+ }
29
+
30
+ export interface ProtonDriveAccountAddress {
31
+ email: string,
32
+ addressId: string,
33
+ primaryKeyIndex: number,
34
+ keys: {
35
+ id: string,
36
+ key: PrivateKey,
37
+ }[],
38
+ }
@@ -0,0 +1,29 @@
1
+ import { Result } from './result';
2
+
3
+ /**
4
+ * Author with verification status.
5
+ *
6
+ * It can be either a string (email) or an anonymous user.
7
+ *
8
+ * If author cannot be verified, the result is failure with an error.
9
+ * The client can still get claimed author from the error object, but
10
+ * it must be used with caution.
11
+ */
12
+ export type Author = Result<string | AnonymousUser, UnverifiedAuthorError>;
13
+
14
+ /**
15
+ * Anonymous user. Used when user shares folder publicly and anonymous
16
+ * users can access the folder and upload new files without being logged in.
17
+ */
18
+ export type AnonymousUser = null;
19
+
20
+ /**
21
+ * Unverified author.
22
+ *
23
+ * If author cannot be verified, the result is this object containing
24
+ * the claimed author and the verification error.
25
+ */
26
+ export type UnverifiedAuthorError = {
27
+ claimedAuthor?: string,
28
+ error: string,
29
+ }
@@ -0,0 +1,21 @@
1
+ import { Result } from './result';
2
+ import { InvalidNameError } from './nodes';
3
+
4
+ export type Device = {
5
+ uid: string,
6
+ type: DeviceType,
7
+ name: Result<string, Error | InvalidNameError>,
8
+ rootFolderUid: string,
9
+ creationTime: Date,
10
+ lastSyncDate?: Date;
11
+ /** @deprecated to be removed once Volume-based navigation is implemented in web */
12
+ shareId: string;
13
+ }
14
+
15
+ export enum DeviceType {
16
+ Windows = 'Windows',
17
+ MacOS = 'MacOS',
18
+ Linux = 'Linux',
19
+ }
20
+
21
+ export type DeviceOrUid = Device | string;
@@ -0,0 +1,32 @@
1
+ export interface FileDownloader {
2
+ /**
3
+ * Get the claimed size of the file in bytes.
4
+ *
5
+ * This provides total clear-text size of the file. This is encrypted
6
+ * information that is not known to the Proton Drive and thus it is
7
+ * explicitely stated as claimed only and must be treated that way.
8
+ * It can be wrong or missing completely.
9
+ */
10
+ getClaimedSizeInBytes(): number | undefined,
11
+
12
+ /**
13
+ * Download, decrypt and verify the content from the server and write
14
+ * to the provided stream.
15
+ *
16
+ * @param onProgress - Callback that is called with the number of downloaded bytes
17
+ */
18
+ writeToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
19
+
20
+ /**
21
+ * Same as `writeToStream` but without verification checks.
22
+ *
23
+ * Use this only for debugging purposes.
24
+ */
25
+ unsafeWriteToStream(streamFactory: WritableStream, onProgress: (downloadedBytes: number) => void): DownloadController,
26
+ }
27
+
28
+ export interface DownloadController {
29
+ pause(): void,
30
+ resume(): void,
31
+ completion(): Promise<void>,
32
+ }
@@ -0,0 +1,30 @@
1
+ import { Device } from './devices';
2
+ import { MaybeNode } from './nodes';
3
+
4
+ export type DeviceEventCallback = (deviceEvent: DeviceEvent) => void;
5
+ export type NodeEventCallback = (nodeEvent: NodeEvent) => void;
6
+
7
+ export type NodeEvent = {
8
+ type: 'update',
9
+ uid: string,
10
+ node: MaybeNode,
11
+ } | {
12
+ type: 'remove',
13
+ uid: string,
14
+ }
15
+
16
+ export type DeviceEvent = {
17
+ type: 'update',
18
+ uid: string,
19
+ device: Device,
20
+ } | {
21
+ type: 'remove',
22
+ uid: string,
23
+ }
24
+
25
+ export enum SDKEvent {
26
+ TransfersPaused = "transfersPaused",
27
+ TransfersResumed = "transfersResumed",
28
+ RequestsThrottled = "requestsThrottled",
29
+ RequestsUnthrottled = "requestsUnthrottled",
30
+ }
@@ -0,0 +1,42 @@
1
+ export interface ProtonDriveHTTPClient {
2
+ fetchJson(options: ProtonDriveHTTPClientJsonOptions): Promise<Response>;
3
+ fetchBlob(options: ProtonDriveHTTPClientBlobOptions): Promise<Response>;
4
+ }
5
+
6
+ export type ProtonDriveHTTPClientJsonOptions = ProtonDriveHTTPClientBaseOptions & {
7
+ json?: object,
8
+ }
9
+
10
+ export type ProtonDriveHTTPClientBlobOptions = ProtonDriveHTTPClientBaseOptions & {
11
+ body?: XMLHttpRequestBodyInit,
12
+ onProgress?: (progress: number) => void,
13
+ }
14
+
15
+ type ProtonDriveHTTPClientBaseOptions = {
16
+ url: string,
17
+ method: string,
18
+ headers: Headers,
19
+ /**
20
+ * The timeout in milliseconds.
21
+ *
22
+ * When timeout is reached, the request will be aborted with TimeoutError.
23
+ */
24
+ timeoutMs: number,
25
+ signal?: AbortSignal,
26
+ }
27
+
28
+ export type ProtonDriveConfig = {
29
+ /**
30
+ * The base URL for the Proton Drive (without schema).
31
+ *
32
+ * If not provided, defaults to 'drive-api.proton.me'.
33
+ */
34
+ baseUrl?: string,
35
+
36
+ /**
37
+ * The language to use for error messages.
38
+ *
39
+ * If not provided, defaults to 'en'.
40
+ */
41
+ language?: string,
42
+ }
@@ -0,0 +1,46 @@
1
+ import { ProtonDriveCache } from '../cache';
2
+ import { OpenPGPCrypto, PrivateKey, SessionKey, SRPModule } from '../crypto';
3
+ import { ProtonDriveAccount } from './account';
4
+ import { ProtonDriveHTTPClient, ProtonDriveConfig } from './httpClient';
5
+ import { Telemetry, MetricEvent } from './telemetry';
6
+
7
+ export type { Result } from './result';
8
+ export { resultOk, resultError } from './result';
9
+ export type { ProtonDriveAccount, ProtonDriveAccountAddress } from './account';
10
+ export type { Author, UnverifiedAuthorError, AnonymousUser } from './author';
11
+ export type { Device, DeviceOrUid } from './devices';
12
+ export { DeviceType } from './devices';
13
+ export type { FileDownloader, DownloadController } from './download';
14
+ export type { NodeEvent, DeviceEvent, DeviceEventCallback, NodeEventCallback } from './events';
15
+ export { SDKEvent } from './events';
16
+ export type { ProtonDriveHTTPClient, ProtonDriveHTTPClientJsonOptions, ProtonDriveHTTPClientBlobOptions, ProtonDriveConfig } from './httpClient';
17
+ export type { MaybeNode, NodeEntity, DegradedNode, MaybeMissingNode, MissingNode, InvalidNameError, Revision, NodeOrUid, RevisionOrUid, NodeResult } from './nodes';
18
+ export { NodeType, MemberRole, RevisionState } from './nodes';
19
+ export type { ProtonInvitation, ProtonInvitationWithNode, NonProtonInvitation, Member, PublicLink, Bookmark, ProtonInvitationOrUid, NonProtonInvitationOrUid, BookmarkOrUid, ShareNodeSettings, UnshareNodeSettings, ShareMembersSettings, SharePublicLinkSettings, SharePublicLinkSettingsObject, ShareResult } from './sharing';
20
+ export { NonProtonInvitationState } from './sharing';
21
+ export type { Telemetry, Logger, MetricAPIRetrySucceededEvent, MetricUploadEvent, MetricsUploadErrorType, MetricDownloadEvent, MetricsDownloadErrorType, MetricDecryptionErrorEvent, MetricsDecryptionErrorField, MetricVerificationErrorEvent, MetricVerificationErrorField, MetricVolumeEventsSubscriptionsChangedEvent, MetricEvent } from './telemetry';
22
+ export { MetricContext } from './telemetry';
23
+ export type { Fileuploader, UploadController, UploadMetadata } from './upload';
24
+ export type { Thumbnail, ThumbnailResult } from './thumbnail';
25
+ export { ThumbnailType } from './thumbnail';
26
+
27
+ export type ProtonDriveTelemetry = Telemetry<MetricEvent>;
28
+ export type ProtonDriveEntitiesCache = ProtonDriveCache<string>;
29
+ export type ProtonDriveCryptoCache = ProtonDriveCache<CachedCryptoMaterial>;
30
+ export type CachedCryptoMaterial = {
31
+ passphrase?: string,
32
+ key: PrivateKey,
33
+ passphraseSessionKey: SessionKey,
34
+ hashKey?: Uint8Array,
35
+ };
36
+
37
+ export interface ProtonDriveClientContructorParameters {
38
+ httpClient: ProtonDriveHTTPClient,
39
+ entitiesCache: ProtonDriveEntitiesCache,
40
+ cryptoCache: ProtonDriveCryptoCache,
41
+ account: ProtonDriveAccount,
42
+ openPGPCryptoModule: OpenPGPCrypto,
43
+ srpModule: SRPModule,
44
+ config?: ProtonDriveConfig,
45
+ telemetry?: ProtonDriveTelemetry,
46
+ };
@@ -0,0 +1,168 @@
1
+ import { Result } from './result';
2
+ import { Author } from './author';
3
+
4
+ /**
5
+ * Node representing a file or folder in the system.
6
+ *
7
+ * This covers both happy path and degraded path. It is used in the SDK to
8
+ * represent the node in a way that is easy to work with. Whenever any field
9
+ * cannot be decrypted, it is returned as `DegradedNode` type.
10
+ */
11
+ export type MaybeNode = Result<NodeEntity, DegradedNode>;
12
+
13
+ /**
14
+ * Node representing a file or folder in the system, or missing node.
15
+ *
16
+ * In most cases, SDK returns `MaybeNode`, but in some specific cases, when
17
+ * client is requesting specific nodes, SDK must return `MissingNode` type
18
+ * to indicate the case when the node is not available. That can be when
19
+ * the node does not exist, or when the node is not available for the user
20
+ * (e.g. unshared with the user).
21
+ */
22
+ export type MaybeMissingNode = Result<NodeEntity, DegradedNode | MissingNode>;
23
+
24
+ export type MissingNode = {
25
+ missingUid: string,
26
+ };
27
+
28
+ /**
29
+ * Node representing a file or folder in the system.
30
+ *
31
+ * This is a happy path representation of the node. It is used in the SDK to
32
+ * represent the node in a way that is easy to work with. Whenever any field
33
+ * cannot be decrypted, it is returned as `DegradedNode` type.
34
+ *
35
+ * SDK never returns this entity directly but wrapped in `MaybeNode`.
36
+ *
37
+ * Note on naming: Node is reserved by JS/DOM, thus we need exception how the
38
+ * entity is called.
39
+ */
40
+ export type NodeEntity = {
41
+ uid: string,
42
+ parentUid?: string,
43
+ name: string,
44
+ /**
45
+ * Author of the node key.
46
+ *
47
+ * Person who created the node and keys for it. If user A uploads the file
48
+ * and user B renames the file and uploads new revision, name and content
49
+ * author is user B, while key author stays to user A who has forever
50
+ * option to decrypt latest versions.
51
+ */
52
+ keyAuthor: Author,
53
+ /**
54
+ * Author of the name.
55
+ *
56
+ * Person who named the file. If user A uploads the file and user B renames
57
+ * the file, key and content author is user A, while name author is user B.
58
+ */
59
+ nameAuthor: Author,
60
+ directMemberRole: MemberRole,
61
+ type: NodeType,
62
+ mediaType?: string,
63
+ /**
64
+ * Whether the node is shared. If true, the node is shared with at least
65
+ * one user, or via public link.
66
+ */
67
+ isShared: boolean,
68
+ /**
69
+ * Created on server date.
70
+ */
71
+ creationTime: Date,
72
+ trashTime?: Date,
73
+ /**
74
+ * Total size of all revisions, encrypted size on the server.
75
+ */
76
+ totalStorageSize?: number,
77
+ activeRevision?: Revision,
78
+ folder?: {
79
+ claimedModificationTime?: Date,
80
+ },
81
+ }
82
+
83
+ /**
84
+ * Degraded node representing a file or folder in the system.
85
+ *
86
+ * This is a degraded path representation of the node. It is used in the SDK to
87
+ * represent the node in a way that is easy to work with. Whenever any field
88
+ * cannot be decrypted, it is returned as `DegradedNode` type.
89
+ *
90
+ * SDK never returns this entity directly but wrapped in `MaybeNode`.
91
+ *
92
+ * The node can be still used around, but it is not guaranteed that all
93
+ * properties are decrypted, or that all actions can be performed on it.
94
+ *
95
+ * For example, if the node has issue decrypting the name, the name will be
96
+ * set as `Error` and potentially rename or move actions will not be
97
+ * possible, but download and upload new revision will still work.
98
+ */
99
+ export type DegradedNode = Omit<NodeEntity, 'name' | 'activeRevision'> & {
100
+ name: Result<string, Error | InvalidNameError>,
101
+ activeRevision?: Result<Revision, Error>,
102
+ /**
103
+ * If the error is not related to any specific field, it is set here.
104
+ *
105
+ * For example, if the node has issue decrypting the name, the name will be
106
+ * set as `Error` while this will be empty.
107
+ *
108
+ * On the other hand, if the node has issue decrypting the node key, but
109
+ * the name is still working, this will include the node key error, while
110
+ * the name will be set to the decrypted value.
111
+ */
112
+ errors?: unknown[],
113
+ }
114
+
115
+ /**
116
+ * Invalid name error represents node name that includes invalid characters.
117
+ */
118
+ export type InvalidNameError = {
119
+ /**
120
+ * Placeholder instead of node name that client can use to display.
121
+ */
122
+ name: string,
123
+ error: string,
124
+ }
125
+
126
+ export enum NodeType {
127
+ File = "file",
128
+ Folder = "folder",
129
+ }
130
+
131
+ export enum MemberRole {
132
+ Viewer = "viewer",
133
+ Editor = "editor",
134
+ Admin = "admin",
135
+ Inherited = "inherited",
136
+ }
137
+
138
+ export type Revision = {
139
+ uid: string,
140
+ state: RevisionState,
141
+ creationTime: Date, // created on server date
142
+ contentAuthor: Author,
143
+ /**
144
+ * Encrypted size of the revision, as stored on the server.
145
+ */
146
+ storageSize: number,
147
+ /**
148
+ * Raw size of the revision, as stored in extended attributes.
149
+ */
150
+ claimedSize?: number,
151
+ claimedModificationTime?: Date,
152
+ claimedDigests?: {
153
+ sha1?: string,
154
+ },
155
+ claimedAdditionalMetadata?: object,
156
+ }
157
+
158
+ export enum RevisionState {
159
+ Active = "active",
160
+ Superseded = "superseded",
161
+ }
162
+
163
+ export type NodeOrUid = MaybeNode | NodeEntity | DegradedNode | string;
164
+ export type RevisionOrUid = Revision | string;
165
+
166
+ export type NodeResult =
167
+ {uid: string, ok: true} |
168
+ {uid: string, ok: false, error: string};
@@ -0,0 +1,11 @@
1
+ export type Result<T, E> =
2
+ | { ok: true; value: T }
3
+ | { ok: false; error: E };
4
+
5
+ export function resultOk<T, E>(value: T): Result<T, E> {
6
+ return { ok: true, value };
7
+ }
8
+
9
+ export function resultError<T, E>(error: E): Result<T, E> {
10
+ return { ok: false, error };
11
+ }