@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
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # Drive SDK for web
2
+
3
+ Use only what is exported by the library. This is the public supported API of the SDK. Anything else is internal implementation that can change without warning.
4
+
5
+ Start by creating instance of the `ProtonDriveClient`. That instance has then available many methods to access nodes, devices, upload and download content, or manage sharing.
6
+
7
+ ```js
8
+ import { ProtonDriveClient, MemoryCache, OpenPGPCryptoWithCryptoProxy } from 'proton-drive-sdk';
9
+
10
+ const sdk = new ProtonDriveClient({
11
+ httpClient,
12
+ entitiesCache: new MemoryCache(),
13
+ cryptoCache: new MemoryCache(),
14
+ account,
15
+ openPGPCryptoModule: new OpenPGPCryptoWithCryptoProxy(cryptoProxy),
16
+ });
17
+ ```
@@ -0,0 +1,2 @@
1
+ export type { ProtonDriveCache, EntityResult } from './interface';
2
+ export { MemoryCache } from './memoryCache';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryCache = void 0;
4
+ var memoryCache_1 = require("./memoryCache");
5
+ Object.defineProperty(exports, "MemoryCache", { enumerable: true, get: function () { return memoryCache_1.MemoryCache; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA"}
@@ -0,0 +1,105 @@
1
+ export interface ProtonDriveCacheConstructor<T> {
2
+ /**
3
+ * Initialize the cache.
4
+ *
5
+ * The local database should follow document-based structure. The SDK does
6
+ * serialisation and data is not intended to be read by 3rd party. The SDK,
7
+ * however, provides also clear fields in form of tags that is used for
8
+ * search. Local database should have index or other structure for easier
9
+ * look-up.
10
+ *
11
+ * See {@link setEntity} for more details how tags are used.
12
+ */
13
+ new (): ProtonDriveCache<T>;
14
+ }
15
+ export interface ProtonDriveCache<T> {
16
+ /**
17
+ * Re-creates the whole persistent cache.
18
+ *
19
+ * The SDK can call this when there is some inconsistency and it is better
20
+ * to start from scratch rather than fix it.
21
+ */
22
+ clear(): Promise<void>;
23
+ /**
24
+ * Adds or updates entity in the local database.
25
+ *
26
+ * The `tags` is a list of strings that should be stored properly for fast
27
+ * look-up.
28
+ *
29
+ * @example Usage by the SDK
30
+ * ```ts
31
+ * await cache.setEntity("node-abc42", "{ node abc42 serialised data }", ["parentUid:abc123", "sharedWithMe"] });
32
+ * await Array.fromAsync(cache.iterateEntitiesByTag("parentUid:abc123")); // returns ["node-abc42"]
33
+ * await cache.getEntity("node-abc42"); // returns "{ node abc42 serialised data }"
34
+ * await Array.fromAsync(cache.iterateEntities(["node-abc42"])); // returns ["{ node abc42 serialised data }"]
35
+ * ```
36
+ *
37
+ * @example Stored data
38
+ * ```json
39
+ * {
40
+ * type: "node",
41
+ * version: 1,
42
+ * internal: {
43
+ * isStale,
44
+ * claimedDigests,
45
+ * // ...
46
+ * }
47
+ * node: {
48
+ * // same as node entity, here some example
49
+ * uid,
50
+ * parentUid,
51
+ * // ...
52
+ * }
53
+ * }
54
+ * ```
55
+ *
56
+ * @param key - Key is internal ID controlled by the SDK. It combines type and ID of the entity.
57
+ * @param value - Serialised JSON object controlled by the SDK. It is not intended for use outside of the SDK.
58
+ * @param tags - Clear metadata about the entity used for filtering. It is intended to store efficiently for fast look-up.
59
+ * @throws Exception if `key` from `tags` is not one of the tag keys provided from `usedTagKeysBySDK` in constructor.
60
+ */
61
+ setEntity(key: string, value: T, tags?: string[]): Promise<void>;
62
+ /**
63
+ * Returns the data of the entity stored locally.
64
+ *
65
+ * @throws Exception if entity is not present.
66
+ */
67
+ getEntity(key: string): Promise<T>;
68
+ /**
69
+ * Generator providing the data of the entities stored locally for given
70
+ * list of keys.
71
+ *
72
+ * No exception is thrown when data is missing.
73
+ */
74
+ iterateEntities(keys: string[]): AsyncGenerator<EntityResult<T>>;
75
+ /**
76
+ * Generator providing the data of the entities stored locally for given
77
+ * filter option.
78
+ *
79
+ * No exception is thrown when data is missing.
80
+ *
81
+ * @example Usage by the SDK
82
+ * ```ts
83
+ * await cache.setEntity("node-abc42", "{ node abc42 serialised data }", { "parentUid": "abc123", "shared": "withMe" });
84
+ * await Array.fromAsync(cache.iterateEntitiesByTag("parentUid", "abc123")); // returns ["node-abc42"]
85
+ * ```
86
+ *
87
+ * @param tag - The tag, for example `parentUid:abc123`
88
+ */
89
+ iterateEntitiesByTag(tag: string): AsyncGenerator<EntityResult<T>>;
90
+ /**
91
+ * Removes completely the entity stored locally from the database.
92
+ *
93
+ * It is no-op if entity is not present.
94
+ */
95
+ removeEntities(keys: string[]): Promise<void>;
96
+ }
97
+ export type EntityResult<T> = {
98
+ key: string;
99
+ ok: true;
100
+ value: T;
101
+ } | {
102
+ key: string;
103
+ ok: false;
104
+ error: string;
105
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/cache/interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import type { ProtonDriveCache, EntityResult } from './interface';
2
+ /**
3
+ * In-memory cache implementation for Proton Drive SDK.
4
+ *
5
+ * This cache is not persistent and is intended for mostly for testing or
6
+ * development only. It is not recommended to use this cache in production
7
+ * environments.
8
+ */
9
+ export declare class MemoryCache<T> implements ProtonDriveCache<T> {
10
+ private entities;
11
+ private entitiesByTag;
12
+ clear(): Promise<void>;
13
+ setEntity(key: string, value: T, tags?: string[]): Promise<void>;
14
+ getEntity(key: string): Promise<NonNullable<T>>;
15
+ iterateEntities(keys: string[]): AsyncGenerator<EntityResult<T>>;
16
+ iterateEntitiesByTag(tag: string): AsyncGenerator<EntityResult<T>>;
17
+ removeEntities(keys: string[]): Promise<void>;
18
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryCache = void 0;
4
+ /**
5
+ * In-memory cache implementation for Proton Drive SDK.
6
+ *
7
+ * This cache is not persistent and is intended for mostly for testing or
8
+ * development only. It is not recommended to use this cache in production
9
+ * environments.
10
+ */
11
+ class MemoryCache {
12
+ entities = {};
13
+ entitiesByTag = {};
14
+ async clear() {
15
+ this.entities = {};
16
+ }
17
+ async setEntity(key, value, tags) {
18
+ this.entities[key] = value;
19
+ for (const tag of Object.keys(this.entitiesByTag)) {
20
+ const index = this.entitiesByTag[tag].indexOf(key);
21
+ if (index !== -1) {
22
+ this.entitiesByTag[tag].splice(index, 1);
23
+ if (this.entitiesByTag[tag].length === 0) {
24
+ delete this.entitiesByTag[tag];
25
+ }
26
+ }
27
+ }
28
+ if (tags) {
29
+ for (const tag of tags) {
30
+ if (!this.entitiesByTag[tag]) {
31
+ this.entitiesByTag[tag] = [];
32
+ }
33
+ this.entitiesByTag[tag].push(key);
34
+ }
35
+ }
36
+ }
37
+ async getEntity(key) {
38
+ const value = this.entities[key];
39
+ if (!value) {
40
+ throw Error('Entity not found');
41
+ }
42
+ return value;
43
+ }
44
+ async *iterateEntities(keys) {
45
+ for (const key of keys) {
46
+ try {
47
+ const value = await this.getEntity(key);
48
+ yield { key, ok: true, value };
49
+ }
50
+ catch (error) {
51
+ yield { key, ok: false, error: `${error}` };
52
+ }
53
+ }
54
+ }
55
+ async *iterateEntitiesByTag(tag) {
56
+ const keys = this.entitiesByTag[tag];
57
+ if (!keys) {
58
+ return;
59
+ }
60
+ // Pass copy of keys so concurrent changes to the cache do not affect
61
+ // results from iterating entities.
62
+ yield* this.iterateEntities([...keys]);
63
+ }
64
+ async removeEntities(keys) {
65
+ for (const key of keys) {
66
+ delete this.entities[key];
67
+ Object.values(this.entitiesByTag).forEach((tagKeys) => {
68
+ const index = tagKeys.indexOf(key);
69
+ if (index !== -1) {
70
+ tagKeys.splice(index, 1);
71
+ }
72
+ });
73
+ }
74
+ }
75
+ }
76
+ exports.MemoryCache = MemoryCache;
77
+ ;
78
+ //# sourceMappingURL=memoryCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryCache.js","sourceRoot":"","sources":["../../src/cache/memoryCache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const memoryCache_1 = require("./memoryCache");
4
+ describe('MemoryCache', () => {
5
+ let cache;
6
+ beforeEach(async () => {
7
+ cache = new memoryCache_1.MemoryCache();
8
+ await cache.setEntity('key1', 'value1', ['tag1:hello', 'tag2:world']);
9
+ await cache.setEntity('key2', 'value2', ['tag2:world']);
10
+ await cache.setEntity('key3', 'value3');
11
+ });
12
+ it('should store and retrieve an entity', async () => {
13
+ const key = 'newkey';
14
+ const value = 'newvalue';
15
+ await cache.setEntity(key, value);
16
+ const result = await cache.getEntity(key);
17
+ expect(result).toBe(value);
18
+ });
19
+ it('should update an entity with tags - remove old and add new tags', async () => {
20
+ const key = 'newkey';
21
+ await cache.setEntity(key, 'value1', ['tag1', 'tag2']);
22
+ await cache.setEntity(key, 'value2', ['tag2', 'tag3']);
23
+ const result = await cache.getEntity(key);
24
+ expect(result).toBe('value2');
25
+ const tag1 = await Array.fromAsync(cache.iterateEntitiesByTag('tag1'));
26
+ expect(tag1).toEqual([]);
27
+ const tag2 = await Array.fromAsync(cache.iterateEntitiesByTag('tag2'));
28
+ expect(tag2).toEqual([{ key, ok: true, value: 'value2' }]);
29
+ const tag3 = await Array.fromAsync(cache.iterateEntitiesByTag('tag3'));
30
+ expect(tag3).toEqual([{ key, ok: true, value: 'value2' }]);
31
+ });
32
+ it('should throw an error when retrieving a non-existing entity', async () => {
33
+ const key = 'newkey';
34
+ try {
35
+ await cache.getEntity(key);
36
+ fail('Should have thrown an error');
37
+ }
38
+ catch (error) {
39
+ expect(`${error}`).toBe('Error: Entity not found');
40
+ }
41
+ });
42
+ it('should iterate over entities', async () => {
43
+ const results = [];
44
+ for await (const result of cache.iterateEntities(['key1', 'key2', 'key100'])) {
45
+ results.push(result);
46
+ }
47
+ expect(results).toEqual([
48
+ { key: 'key1', ok: true, value: 'value1' },
49
+ { key: 'key2', ok: true, value: 'value2' },
50
+ { key: 'key100', ok: false, error: 'Error: Entity not found' },
51
+ ]);
52
+ });
53
+ it('should iterate over entities by tag', async () => {
54
+ const results = [];
55
+ for await (const result of cache.iterateEntitiesByTag('tag2:world')) {
56
+ results.push(result);
57
+ }
58
+ expect(results).toEqual([
59
+ { key: 'key1', ok: true, value: 'value1' },
60
+ { key: 'key2', ok: true, value: 'value2' },
61
+ ]);
62
+ });
63
+ it('should iterate over entities with multiple tags by tag', async () => {
64
+ const results = [];
65
+ for await (const result of cache.iterateEntitiesByTag('tag1:hello')) {
66
+ results.push(result);
67
+ }
68
+ expect(results).toEqual([
69
+ { key: 'key1', ok: true, value: 'value1' },
70
+ ]);
71
+ });
72
+ it('should iterate over entities by empty tag', async () => {
73
+ const results = [];
74
+ for await (const result of cache.iterateEntitiesByTag('nonexistent')) {
75
+ results.push(result);
76
+ }
77
+ expect(results).toEqual([]);
78
+ });
79
+ it('should iterate over entities with concurrent changes to the same set', async () => {
80
+ const iterator = cache.iterateEntities(['key1', 'key2', 'key3']);
81
+ const results = [];
82
+ const { value: { key: key1 } } = await iterator.next();
83
+ results.push(key1);
84
+ await cache.removeEntities([key1]);
85
+ let value = await iterator.next(); // key2
86
+ results.push(value.value.key);
87
+ value = await iterator.next(); // key3
88
+ results.push(value.value.key);
89
+ expect(results).toEqual(['key1', 'key2', 'key3']);
90
+ });
91
+ it('should remove entities', async () => {
92
+ await cache.removeEntities(['key1', 'key3']);
93
+ const results = [];
94
+ for await (const result of cache.iterateEntities(['key1', 'key2', 'key3'])) {
95
+ results.push(result);
96
+ }
97
+ expect(results).toEqual([
98
+ { key: 'key1', ok: false, error: 'Error: Entity not found' },
99
+ { key: 'key2', ok: true, value: 'value2' },
100
+ { key: 'key3', ok: false, error: 'Error: Entity not found' },
101
+ ]);
102
+ const results2 = [];
103
+ for await (const result of cache.iterateEntitiesByTag('tag1:hello')) {
104
+ results2.push(result);
105
+ }
106
+ expect(results2).toEqual([]);
107
+ });
108
+ it('should clear the cache', async () => {
109
+ await cache.clear();
110
+ const results = [];
111
+ for await (const result of cache.iterateEntities(['key1', 'key2', 'key3'])) {
112
+ results.push(result);
113
+ }
114
+ expect(results).toEqual([
115
+ { key: 'key1', ok: false, error: 'Error: Entity not found' },
116
+ { key: 'key2', ok: false, error: 'Error: Entity not found' },
117
+ { key: 'key3', ok: false, error: 'Error: Entity not found' },
118
+ ]);
119
+ });
120
+ });
121
+ //# sourceMappingURL=memoryCache.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryCache.test.js","sourceRoot":"","sources":["../../src/cache/memoryCache.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { ProtonDriveConfig } from './interface';
2
+ export declare function getConfig(config?: ProtonDriveConfig): Required<ProtonDriveConfig>;
package/dist/config.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getConfig = getConfig;
4
+ function getConfig(config) {
5
+ return {
6
+ ...config,
7
+ baseUrl: config?.baseUrl ? `https://${config.baseUrl}` : 'https://drive-api.proton.me',
8
+ language: config?.language || 'en',
9
+ };
10
+ }
11
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;AAEA,8BAMC;AAND,SAAgB,SAAS,CAAC,MAA0B;IAChD,OAAO;QACH,GAAG,MAAM;QACT,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,6BAA6B;QACtF,QAAQ,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI;KACrC,CAAC;AACN,CAAC"}
@@ -0,0 +1,209 @@
1
+ import { OpenPGPCrypto, PrivateKey, PublicKey, SessionKey, SRPModule, SRPVerifier, VERIFICATION_STATUS } from './interface';
2
+ /**
3
+ * Drive crypto layer to provide general operations for Drive crypto.
4
+ *
5
+ * This layer focuses on providing general Drive crypto functions. Only
6
+ * high-level functions that are required on multiple places should be
7
+ * peresent. E.g., no specific implementation how keys are encrypted,
8
+ * but we do share same key generation across shares and nodes modules,
9
+ * for example, which we can generelise here and in each module just
10
+ * call with specific arguments.
11
+ */
12
+ export declare class DriveCrypto {
13
+ private openPGPCrypto;
14
+ private srpModule;
15
+ constructor(openPGPCrypto: OpenPGPCrypto, srpModule: SRPModule);
16
+ /**
17
+ * It generates passphrase and key that is encrypted with the
18
+ * generated passphrase.
19
+ *
20
+ * `encrpytionKeys` are used to generate session key, which is
21
+ * also used to encrypt the passphrase. The encrypted passphrase
22
+ * is signed with `signingKey`.
23
+ *
24
+ * @returns Object with:
25
+ * - encrypted (armored) data (key, passphrase and passphrase
26
+ * signature) for sending to the server
27
+ * - decrypted data (key, sessionKey) for crypto usage
28
+ */
29
+ generateKey(encryptionKeys: PrivateKey[], signingKey: PrivateKey): Promise<{
30
+ encrypted: {
31
+ armoredKey: string;
32
+ armoredPassphrase: string;
33
+ armoredPassphraseSignature: string;
34
+ };
35
+ decrypted: {
36
+ passphrase: string;
37
+ key: PrivateKey;
38
+ passphraseSessionKey: SessionKey;
39
+ };
40
+ }>;
41
+ /**
42
+ * It generates content key from node key for encrypting file blocks.
43
+ *
44
+ * @param encryptionKey - Its own node key.
45
+ * @returns Object with serialised key packet and decrypted session key.
46
+ */
47
+ generateContentKey(encryptionKey: PrivateKey): Promise<{
48
+ encrypted: {
49
+ base64ContentKeyPacket: string;
50
+ armoredContentKeyPacketSignature: string;
51
+ };
52
+ decrypted: {
53
+ contentKeyPacketSessionKey: SessionKey;
54
+ };
55
+ }>;
56
+ /**
57
+ * It encrypts passphrase with provided session and encryption keys.
58
+ * This should be used only for re-encrypting the passphrase with
59
+ * different key (e.g., moving the node to different parent).
60
+ *
61
+ * @returns Object with armored passphrase and passphrase signature.
62
+ */
63
+ encryptPassphrase(passphrase: string, sessionKey: SessionKey, encryptionKeys: PrivateKey[], signingKey: PrivateKey): Promise<{
64
+ armoredPassphrase: string;
65
+ armoredPassphraseSignature: string;
66
+ }>;
67
+ /**
68
+ * It decrypts key generated via `generateKey`.
69
+ *
70
+ * Armored data are passed from the server. `decryptionKeys` are used
71
+ * to decrypt the session key from the `armoredPassphrase`. Then the
72
+ * session key is used with `verificationKeys` to decrypt and verify
73
+ * the passphrase. Finally, the armored key is decrypted.
74
+ *
75
+ * Note: The function doesn't throw in case of verification issue.
76
+ * You have to read `verified` result and act based on that.
77
+ *
78
+ * @returns key and sessionKey for crypto usage, and verification status
79
+ */
80
+ decryptKey(armoredKey: string, armoredPassphrase: string, armoredPassphraseSignature: string, decryptionKeys: PrivateKey[], verificationKeys: PublicKey[]): Promise<{
81
+ passphrase: string;
82
+ key: PrivateKey;
83
+ passphraseSessionKey: SessionKey;
84
+ verified: VERIFICATION_STATUS;
85
+ }>;
86
+ /**
87
+ * It encrypts session key with provided encryption key.
88
+ */
89
+ encryptSessionKey(sessionKey: SessionKey, encryptionKey: PublicKey): Promise<{
90
+ base64KeyPacket: string;
91
+ }>;
92
+ /**
93
+ * It encrypts password with provided address key that can be used to
94
+ * manage the public link, encrypts share passphrase session key using
95
+ * provided bcrypt passphrase and generates SRP verifier.
96
+ */
97
+ encryptPublicLinkPasswordAndSessionKey(password: string, addressKey: PrivateKey, bcryptPassphrase: string, sharePassphraseSessionKey: SessionKey): Promise<{
98
+ armoredPassword: string;
99
+ base64SharePassphraseKeyPacket: string;
100
+ srp: SRPVerifier;
101
+ }>;
102
+ /**
103
+ * It decrypts session key from armored data.
104
+ *
105
+ * `decryptionKeys` are used to decrypt the session key from the `armoredData`.
106
+ */
107
+ decryptSessionKey(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<SessionKey>;
108
+ decryptAndVerifySessionKey(base64data: string, armoredSignature: string | undefined, decryptionKeys: PrivateKey | PrivateKey[], verificationKeys: PublicKey[]): Promise<{
109
+ sessionKey: SessionKey;
110
+ verified?: VERIFICATION_STATUS;
111
+ }>;
112
+ /**
113
+ * It decrypts key similarly like `decryptKey`, but without signature
114
+ * verification. This is used for invitations.
115
+ */
116
+ decryptUnsignedKey(armoredKey: string, armoredPassphrase: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<PrivateKey>;
117
+ /**
118
+ * It encrypts and armors signature with provided session and encryption keys.
119
+ */
120
+ encryptSignature(signature: Uint8Array, encryptionKey: PrivateKey, sessionKey: SessionKey): Promise<{
121
+ armoredSignature: string;
122
+ }>;
123
+ /**
124
+ * It generates random 32 bytes that are encrypted and signed with
125
+ * the provided key.
126
+ */
127
+ generateHashKey(encryptionAndSigningKey: PrivateKey): Promise<{
128
+ armoredHashKey: string;
129
+ hashKey: Uint8Array;
130
+ }>;
131
+ generateLookupHash(newName: string, parentHashKey: Uint8Array): Promise<string>;
132
+ /**
133
+ * It converts node name into bytes array and encrypts and signs
134
+ * with provided keys.
135
+ *
136
+ * The function accepts either encryption or session key. Use encryption
137
+ * key if you want to encrypt the name for the new node. Use session key
138
+ * if you want to encrypt the new name for the existing node.
139
+ */
140
+ encryptNodeName(nodeName: string, sessionKey: SessionKey | undefined, encryptionKey: PrivateKey | undefined, signingKey: PrivateKey): Promise<{
141
+ armoredNodeName: string;
142
+ }>;
143
+ /**
144
+ * It decrypts armored node name and verifies embeded signature.
145
+ *
146
+ * Note: The function doesn't throw in case of verification issue.
147
+ * You have to read `verified` result and act based on that.
148
+ */
149
+ decryptNodeName(armoredNodeName: string, decryptionKey: PrivateKey, verificationKeys: PublicKey[]): Promise<{
150
+ name: string;
151
+ verified: VERIFICATION_STATUS;
152
+ }>;
153
+ /**
154
+ * It decrypts armored node hash key and verifies embeded signature.
155
+ *
156
+ * Note: The function doesn't throw in case of verification issue.
157
+ * You have to read `verified` result and act based on that.
158
+ */
159
+ decryptNodeHashKey(armoredHashKey: string, decryptionAndVerificationKey: PrivateKey, extraVerificationKeys: PublicKey[]): Promise<{
160
+ hashKey: Uint8Array;
161
+ verified: VERIFICATION_STATUS;
162
+ }>;
163
+ encryptExtendedAttributes(extendedAttributes: string, encryptionKey: PrivateKey, signingKey: PrivateKey): Promise<{
164
+ armoredExtendedAttributes: string;
165
+ }>;
166
+ decryptExtendedAttributes(armoreExtendedAttributes: string, decryptionKey: PrivateKey, verificationKeys: PublicKey[]): Promise<{
167
+ extendedAttributes: string;
168
+ verified: VERIFICATION_STATUS;
169
+ }>;
170
+ encryptInvitation(shareSessionKey: SessionKey, encryptionKey: PublicKey, signingKey: PrivateKey): Promise<{
171
+ base64KeyPacket: string;
172
+ base64KeyPacketSignature: string;
173
+ }>;
174
+ acceptInvitation(base64KeyPacket: string, signingKey: PrivateKey): Promise<{
175
+ base64SessionKeySignature: string;
176
+ }>;
177
+ encryptExternalInvitation(shareSessionKey: SessionKey, signingKey: PrivateKey, inviteeEmail: string): Promise<{
178
+ base64ExternalInvitationSignature: string;
179
+ }>;
180
+ encryptThumbnailBlock(thumbnailData: Uint8Array, sessionKey: SessionKey, signingKey: PrivateKey): Promise<{
181
+ encryptedData: Uint8Array;
182
+ }>;
183
+ decryptThumbnailBlock(encryptedThumbnail: Uint8Array, sessionKey: SessionKey, verificationKeys: PublicKey[]): Promise<{
184
+ decryptedThumbnail: Uint8Array;
185
+ verified: VERIFICATION_STATUS;
186
+ }>;
187
+ encryptBlock(blockData: Uint8Array, encryptionKey: PrivateKey, sessionKey: SessionKey, signingKey: PrivateKey): Promise<{
188
+ encryptedData: Uint8Array;
189
+ armoredSignature: string;
190
+ }>;
191
+ decryptBlock(encryptedBlock: Uint8Array, armoredSignature: string | undefined, decryptionKey: PrivateKey, sessionKey: SessionKey, verificationKeys?: PublicKey[]): Promise<{
192
+ decryptedBlock: Uint8Array;
193
+ verified: VERIFICATION_STATUS;
194
+ }>;
195
+ signManifest(manifest: Uint8Array, signingKey: PrivateKey): Promise<{
196
+ armoredManifestSignature: string;
197
+ }>;
198
+ verifyManifest(manifest: Uint8Array, armoredSignature: string, verificationKeys: PublicKey | PublicKey[]): Promise<{
199
+ verified: VERIFICATION_STATUS;
200
+ }>;
201
+ decryptShareUrlPassword(armoredPassword: string, decryptionKeys: PrivateKey[]): Promise<string>;
202
+ }
203
+ export declare function uint8ArrayToUtf8(input: Uint8Array): string;
204
+ /**
205
+ * Convert an array of 8-bit integers to a hex string
206
+ * @param bytes - Array of 8-bit integers to convert
207
+ * @returns Hexadecimal representation of the array
208
+ */
209
+ export declare const arrayToHexString: (bytes: Uint8Array) => string;