@protontech/drive-sdk 0.0.13 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (496) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/memoryCache.js +0 -1
  6. package/dist/cache/memoryCache.js.map +1 -1
  7. package/dist/cache/memoryCache.test.js +2 -4
  8. package/dist/cache/memoryCache.test.js.map +1 -1
  9. package/dist/cache/nullCache.d.ts +14 -0
  10. package/dist/cache/nullCache.js +36 -0
  11. package/dist/cache/nullCache.js.map +1 -0
  12. package/dist/config.d.ts +16 -1
  13. package/dist/config.js +1 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/crypto/driveCrypto.d.ts +2 -5
  16. package/dist/crypto/driveCrypto.js +7 -12
  17. package/dist/crypto/driveCrypto.js.map +1 -1
  18. package/dist/crypto/driveCrypto.test.js +14 -14
  19. package/dist/crypto/openPGPCrypto.js +5 -3
  20. package/dist/crypto/openPGPCrypto.js.map +1 -1
  21. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  22. package/dist/diagnostic/eventsGenerator.js +49 -0
  23. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  24. package/dist/diagnostic/httpClient.d.ts +16 -0
  25. package/dist/diagnostic/httpClient.js +81 -0
  26. package/dist/diagnostic/httpClient.js.map +1 -0
  27. package/dist/diagnostic/index.d.ts +10 -0
  28. package/dist/diagnostic/index.js +35 -0
  29. package/dist/diagnostic/index.js.map +1 -0
  30. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  31. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  32. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  33. package/dist/diagnostic/interface.d.ts +102 -0
  34. package/dist/diagnostic/interface.js +3 -0
  35. package/dist/diagnostic/interface.js.map +1 -0
  36. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  37. package/dist/diagnostic/sdkDiagnostic.js +222 -0
  38. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  39. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  40. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  41. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  42. package/dist/diagnostic/telemetry.d.ts +25 -0
  43. package/dist/diagnostic/telemetry.js +70 -0
  44. package/dist/diagnostic/telemetry.js.map +1 -0
  45. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  46. package/dist/diagnostic/zipGenerators.js +64 -0
  47. package/dist/diagnostic/zipGenerators.js.map +1 -0
  48. package/dist/diagnostic/zipGenerators.test.js +144 -0
  49. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  50. package/dist/errors.d.ts +2 -1
  51. package/dist/errors.js +3 -1
  52. package/dist/errors.js.map +1 -1
  53. package/dist/interface/config.d.ts +26 -0
  54. package/dist/interface/config.js +3 -0
  55. package/dist/interface/config.js.map +1 -0
  56. package/dist/interface/download.d.ts +2 -2
  57. package/dist/interface/events.d.ts +58 -20
  58. package/dist/interface/events.js +11 -1
  59. package/dist/interface/events.js.map +1 -1
  60. package/dist/interface/httpClient.d.ts +0 -14
  61. package/dist/interface/index.d.ts +11 -7
  62. package/dist/interface/index.js +2 -2
  63. package/dist/interface/index.js.map +1 -1
  64. package/dist/interface/nodes.d.ts +9 -0
  65. package/dist/interface/nodes.js.map +1 -1
  66. package/dist/interface/result.js.map +1 -1
  67. package/dist/interface/sharing.d.ts +2 -0
  68. package/dist/interface/sharing.js.map +1 -1
  69. package/dist/interface/telemetry.js +0 -8
  70. package/dist/interface/telemetry.js.map +1 -1
  71. package/dist/interface/thumbnail.js.map +1 -1
  72. package/dist/interface/upload.d.ts +7 -1
  73. package/dist/internal/apiService/apiService.d.ts +1 -1
  74. package/dist/internal/apiService/apiService.js +7 -11
  75. package/dist/internal/apiService/apiService.js.map +1 -1
  76. package/dist/internal/apiService/apiService.test.js +55 -48
  77. package/dist/internal/apiService/apiService.test.js.map +1 -1
  78. package/dist/internal/apiService/coreTypes.d.ts +2356 -2356
  79. package/dist/internal/apiService/driveTypes.d.ts +1680 -1680
  80. package/dist/internal/apiService/errors.js +14 -8
  81. package/dist/internal/apiService/errors.js.map +1 -1
  82. package/dist/internal/apiService/errors.test.js +17 -12
  83. package/dist/internal/apiService/errors.test.js.map +1 -1
  84. package/dist/internal/apiService/transformers.d.ts +1 -1
  85. package/dist/internal/apiService/transformers.js +1 -1
  86. package/dist/internal/asyncIteratorMap.test.js +2 -2
  87. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  88. package/dist/internal/asyncIteratorRace.d.ts +13 -0
  89. package/dist/internal/asyncIteratorRace.js +59 -0
  90. package/dist/internal/asyncIteratorRace.js.map +1 -0
  91. package/dist/internal/asyncIteratorRace.test.d.ts +1 -0
  92. package/dist/internal/asyncIteratorRace.test.js +119 -0
  93. package/dist/internal/asyncIteratorRace.test.js.map +1 -0
  94. package/dist/internal/batch.d.ts +1 -0
  95. package/dist/internal/batch.js +12 -0
  96. package/dist/internal/batch.js.map +1 -0
  97. package/dist/internal/batch.test.d.ts +1 -0
  98. package/dist/internal/batch.test.js +41 -0
  99. package/dist/internal/batch.test.js.map +1 -0
  100. package/dist/internal/batchLoading.js.map +1 -1
  101. package/dist/internal/batchLoading.test.js +13 -13
  102. package/dist/internal/batchLoading.test.js.map +1 -1
  103. package/dist/internal/devices/apiService.d.ts +3 -3
  104. package/dist/internal/devices/apiService.js +2 -2
  105. package/dist/internal/devices/apiService.js.map +1 -1
  106. package/dist/internal/devices/cryptoService.js +1 -2
  107. package/dist/internal/devices/cryptoService.js.map +1 -1
  108. package/dist/internal/devices/index.d.ts +5 -5
  109. package/dist/internal/devices/index.js.map +1 -1
  110. package/dist/internal/devices/interface.d.ts +3 -3
  111. package/dist/internal/devices/manager.js +2 -2
  112. package/dist/internal/devices/manager.js.map +1 -1
  113. package/dist/internal/devices/manager.test.js +38 -7
  114. package/dist/internal/devices/manager.test.js.map +1 -1
  115. package/dist/internal/download/apiService.d.ts +4 -4
  116. package/dist/internal/download/apiService.js +32 -32
  117. package/dist/internal/download/apiService.js.map +1 -1
  118. package/dist/internal/download/cryptoService.d.ts +4 -4
  119. package/dist/internal/download/cryptoService.js +6 -5
  120. package/dist/internal/download/cryptoService.js.map +1 -1
  121. package/dist/internal/download/fileDownloader.d.ts +6 -6
  122. package/dist/internal/download/fileDownloader.js +3 -2
  123. package/dist/internal/download/fileDownloader.js.map +1 -1
  124. package/dist/internal/download/fileDownloader.test.js +1 -1
  125. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  126. package/dist/internal/download/index.d.ts +5 -5
  127. package/dist/internal/download/index.js +5 -5
  128. package/dist/internal/download/index.js.map +1 -1
  129. package/dist/internal/download/interface.d.ts +3 -4
  130. package/dist/internal/download/telemetry.d.ts +3 -3
  131. package/dist/internal/download/telemetry.js +4 -2
  132. package/dist/internal/download/telemetry.js.map +1 -1
  133. package/dist/internal/download/telemetry.test.js +8 -8
  134. package/dist/internal/download/telemetry.test.js.map +1 -1
  135. package/dist/internal/download/thumbnailDownloader.d.ts +4 -4
  136. package/dist/internal/download/thumbnailDownloader.js +6 -6
  137. package/dist/internal/download/thumbnailDownloader.js.map +1 -1
  138. package/dist/internal/download/thumbnailDownloader.test.js.map +1 -1
  139. package/dist/internal/errors.d.ts +1 -1
  140. package/dist/internal/errors.js +1 -3
  141. package/dist/internal/errors.js.map +1 -1
  142. package/dist/internal/events/apiService.d.ts +5 -7
  143. package/dist/internal/events/apiService.js +19 -22
  144. package/dist/internal/events/apiService.js.map +1 -1
  145. package/dist/internal/events/coreEventManager.d.ts +9 -12
  146. package/dist/internal/events/coreEventManager.js +19 -36
  147. package/dist/internal/events/coreEventManager.js.map +1 -1
  148. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  149. package/dist/internal/events/coreEventManager.test.js +87 -0
  150. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  151. package/dist/internal/events/eventManager.d.ts +11 -36
  152. package/dist/internal/events/eventManager.js +59 -106
  153. package/dist/internal/events/eventManager.js.map +1 -1
  154. package/dist/internal/events/eventManager.test.js +177 -83
  155. package/dist/internal/events/eventManager.test.js.map +1 -1
  156. package/dist/internal/events/index.d.ts +16 -36
  157. package/dist/internal/events/index.js +56 -72
  158. package/dist/internal/events/index.js.map +1 -1
  159. package/dist/internal/events/interface.d.ts +59 -14
  160. package/dist/internal/events/interface.js +12 -3
  161. package/dist/internal/events/interface.js.map +1 -1
  162. package/dist/internal/events/volumeEventManager.d.ts +9 -19
  163. package/dist/internal/events/volumeEventManager.js +58 -45
  164. package/dist/internal/events/volumeEventManager.js.map +1 -1
  165. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  166. package/dist/internal/events/volumeEventManager.test.js +203 -0
  167. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  168. package/dist/internal/nodes/apiService.d.ts +4 -3
  169. package/dist/internal/nodes/apiService.js +36 -15
  170. package/dist/internal/nodes/apiService.js.map +1 -1
  171. package/dist/internal/nodes/apiService.test.js +60 -41
  172. package/dist/internal/nodes/apiService.test.js.map +1 -1
  173. package/dist/internal/nodes/cache.d.ts +14 -5
  174. package/dist/internal/nodes/cache.js +31 -7
  175. package/dist/internal/nodes/cache.js.map +1 -1
  176. package/dist/internal/nodes/cache.test.js +31 -9
  177. package/dist/internal/nodes/cache.test.js.map +1 -1
  178. package/dist/internal/nodes/cryptoCache.d.ts +2 -2
  179. package/dist/internal/nodes/cryptoCache.js.map +1 -1
  180. package/dist/internal/nodes/cryptoCache.test.js +24 -4
  181. package/dist/internal/nodes/cryptoCache.test.js.map +1 -1
  182. package/dist/internal/nodes/cryptoService.d.ts +4 -4
  183. package/dist/internal/nodes/cryptoService.js +11 -17
  184. package/dist/internal/nodes/cryptoService.js.map +1 -1
  185. package/dist/internal/nodes/cryptoService.test.js +320 -241
  186. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  187. package/dist/internal/nodes/events.d.ts +8 -84
  188. package/dist/internal/nodes/events.js +43 -217
  189. package/dist/internal/nodes/events.js.map +1 -1
  190. package/dist/internal/nodes/events.test.js +35 -279
  191. package/dist/internal/nodes/events.test.js.map +1 -1
  192. package/dist/internal/nodes/extendedAttributes.d.ts +1 -1
  193. package/dist/internal/nodes/extendedAttributes.js +3 -1
  194. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  195. package/dist/internal/nodes/extendedAttributes.test.js +7 -10
  196. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  197. package/dist/internal/nodes/index.d.ts +12 -13
  198. package/dist/internal/nodes/index.js +5 -5
  199. package/dist/internal/nodes/index.js.map +1 -1
  200. package/dist/internal/nodes/index.test.js +24 -32
  201. package/dist/internal/nodes/index.test.js.map +1 -1
  202. package/dist/internal/nodes/interface.d.ts +2 -2
  203. package/dist/internal/nodes/nodesAccess.d.ts +22 -7
  204. package/dist/internal/nodes/nodesAccess.js +65 -16
  205. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  206. package/dist/internal/nodes/nodesAccess.test.js +165 -101
  207. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  208. package/dist/internal/nodes/nodesManagement.d.ts +7 -9
  209. package/dist/internal/nodes/nodesManagement.js +21 -33
  210. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  211. package/dist/internal/nodes/nodesManagement.test.js +42 -21
  212. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  213. package/dist/internal/nodes/nodesRevisions.d.ts +4 -4
  214. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  215. package/dist/internal/photos/albums.d.ts +3 -3
  216. package/dist/internal/photos/albums.js.map +1 -1
  217. package/dist/internal/photos/apiService.d.ts +1 -1
  218. package/dist/internal/photos/apiService.js +3 -6
  219. package/dist/internal/photos/apiService.js.map +1 -1
  220. package/dist/internal/photos/cache.d.ts +1 -1
  221. package/dist/internal/photos/index.d.ts +5 -5
  222. package/dist/internal/photos/index.js.map +1 -1
  223. package/dist/internal/photos/interface.d.ts +2 -2
  224. package/dist/internal/photos/photosTimeline.d.ts +3 -3
  225. package/dist/internal/photos/photosTimeline.js +1 -2
  226. package/dist/internal/photos/photosTimeline.js.map +1 -1
  227. package/dist/internal/sdkEvents.d.ts +1 -1
  228. package/dist/internal/sdkEvents.js +2 -7
  229. package/dist/internal/sdkEvents.js.map +1 -1
  230. package/dist/internal/sdkEvents.test.js +8 -8
  231. package/dist/internal/shares/apiService.d.ts +2 -2
  232. package/dist/internal/shares/apiService.js +5 -3
  233. package/dist/internal/shares/apiService.js.map +1 -1
  234. package/dist/internal/shares/cache.d.ts +4 -2
  235. package/dist/internal/shares/cache.js +14 -6
  236. package/dist/internal/shares/cache.js.map +1 -1
  237. package/dist/internal/shares/cache.test.js.map +1 -1
  238. package/dist/internal/shares/cryptoCache.d.ts +2 -2
  239. package/dist/internal/shares/cryptoCache.test.js +8 -2
  240. package/dist/internal/shares/cryptoCache.test.js.map +1 -1
  241. package/dist/internal/shares/cryptoService.d.ts +3 -3
  242. package/dist/internal/shares/cryptoService.js.map +1 -1
  243. package/dist/internal/shares/cryptoService.test.js +42 -42
  244. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  245. package/dist/internal/shares/index.d.ts +4 -4
  246. package/dist/internal/shares/index.js.map +1 -1
  247. package/dist/internal/shares/interface.d.ts +2 -2
  248. package/dist/internal/shares/manager.d.ts +8 -7
  249. package/dist/internal/shares/manager.js +3 -0
  250. package/dist/internal/shares/manager.js.map +1 -1
  251. package/dist/internal/shares/manager.test.js +71 -63
  252. package/dist/internal/shares/manager.test.js.map +1 -1
  253. package/dist/internal/sharing/apiService.d.ts +4 -4
  254. package/dist/internal/sharing/apiService.js +5 -3
  255. package/dist/internal/sharing/apiService.js.map +1 -1
  256. package/dist/internal/sharing/cache.d.ts +1 -1
  257. package/dist/internal/sharing/cache.test.js +33 -33
  258. package/dist/internal/sharing/cryptoService.d.ts +3 -3
  259. package/dist/internal/sharing/cryptoService.js +3 -4
  260. package/dist/internal/sharing/cryptoService.js.map +1 -1
  261. package/dist/internal/sharing/cryptoService.test.js +39 -39
  262. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  263. package/dist/internal/sharing/events.d.ts +24 -56
  264. package/dist/internal/sharing/events.js +45 -138
  265. package/dist/internal/sharing/events.js.map +1 -1
  266. package/dist/internal/sharing/events.test.js +85 -189
  267. package/dist/internal/sharing/events.test.js.map +1 -1
  268. package/dist/internal/sharing/index.d.ts +8 -9
  269. package/dist/internal/sharing/index.js +5 -5
  270. package/dist/internal/sharing/index.js.map +1 -1
  271. package/dist/internal/sharing/interface.d.ts +8 -4
  272. package/dist/internal/sharing/sharingAccess.d.ts +6 -6
  273. package/dist/internal/sharing/sharingAccess.js +8 -4
  274. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  275. package/dist/internal/sharing/sharingAccess.test.js +45 -39
  276. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  277. package/dist/internal/sharing/sharingManagement.d.ts +5 -6
  278. package/dist/internal/sharing/sharingManagement.js +12 -16
  279. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  280. package/dist/internal/sharing/sharingManagement.test.js +305 -286
  281. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  282. package/dist/internal/uids.js.map +1 -1
  283. package/dist/internal/upload/apiService.d.ts +5 -6
  284. package/dist/internal/upload/apiService.js +8 -5
  285. package/dist/internal/upload/apiService.js.map +1 -1
  286. package/dist/internal/upload/blockVerifier.d.ts +3 -3
  287. package/dist/internal/upload/blockVerifier.js +1 -1
  288. package/dist/internal/upload/blockVerifier.js.map +1 -1
  289. package/dist/internal/upload/chunkStreamReader.test.js +6 -6
  290. package/dist/internal/upload/cryptoService.d.ts +4 -4
  291. package/dist/internal/upload/cryptoService.js +4 -4
  292. package/dist/internal/upload/cryptoService.js.map +1 -1
  293. package/dist/internal/upload/digests.js.map +1 -1
  294. package/dist/internal/upload/fileUploader.d.ts +6 -6
  295. package/dist/internal/upload/fileUploader.js.map +1 -1
  296. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  297. package/dist/internal/upload/index.d.ts +6 -6
  298. package/dist/internal/upload/index.js +3 -3
  299. package/dist/internal/upload/index.js.map +1 -1
  300. package/dist/internal/upload/interface.d.ts +5 -3
  301. package/dist/internal/upload/manager.d.ts +8 -8
  302. package/dist/internal/upload/manager.js +23 -52
  303. package/dist/internal/upload/manager.js.map +1 -1
  304. package/dist/internal/upload/manager.test.js +185 -147
  305. package/dist/internal/upload/manager.test.js.map +1 -1
  306. package/dist/internal/upload/streamUploader.d.ts +6 -6
  307. package/dist/internal/upload/streamUploader.js +9 -8
  308. package/dist/internal/upload/streamUploader.js.map +1 -1
  309. package/dist/internal/upload/streamUploader.test.js +17 -12
  310. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  311. package/dist/internal/upload/telemetry.d.ts +3 -3
  312. package/dist/internal/upload/telemetry.js +5 -3
  313. package/dist/internal/upload/telemetry.js.map +1 -1
  314. package/dist/internal/upload/telemetry.test.js +8 -8
  315. package/dist/internal/upload/telemetry.test.js.map +1 -1
  316. package/dist/protonDriveClient.d.ts +27 -170
  317. package/dist/protonDriveClient.js +37 -198
  318. package/dist/protonDriveClient.js.map +1 -1
  319. package/dist/protonDrivePhotosClient.js +3 -2
  320. package/dist/protonDrivePhotosClient.js.map +1 -1
  321. package/dist/telemetry.js +18 -15
  322. package/dist/telemetry.js.map +1 -1
  323. package/dist/tests/logger.js.map +1 -1
  324. package/dist/tests/telemetry.d.ts +1 -1
  325. package/dist/transformers.js +4 -2
  326. package/dist/transformers.js.map +1 -1
  327. package/package.json +3 -3
  328. package/src/cache/index.ts +1 -0
  329. package/src/cache/interface.ts +22 -22
  330. package/src/cache/memoryCache.test.ts +7 -7
  331. package/src/cache/memoryCache.ts +5 -5
  332. package/src/cache/nullCache.ts +38 -0
  333. package/src/config.ts +17 -2
  334. package/src/crypto/driveCrypto.test.ts +15 -15
  335. package/src/crypto/driveCrypto.ts +120 -156
  336. package/src/crypto/hmac.ts +1 -1
  337. package/src/crypto/interface.ts +63 -72
  338. package/src/crypto/openPGPCrypto.ts +76 -94
  339. package/src/crypto/utils.ts +1 -1
  340. package/src/diagnostic/eventsGenerator.ts +48 -0
  341. package/src/diagnostic/httpClient.ts +84 -0
  342. package/src/diagnostic/index.ts +40 -0
  343. package/src/diagnostic/integrityVerificationStream.ts +55 -0
  344. package/src/diagnostic/interface.ts +158 -0
  345. package/src/diagnostic/sdkDiagnostic.ts +249 -0
  346. package/src/diagnostic/sdkDiagnosticFull.ts +37 -0
  347. package/src/diagnostic/telemetry.ts +74 -0
  348. package/src/diagnostic/zipGenerators.test.ts +177 -0
  349. package/src/diagnostic/zipGenerators.ts +70 -0
  350. package/src/errors.ts +25 -22
  351. package/src/index.ts +3 -3
  352. package/src/interface/account.ts +10 -10
  353. package/src/interface/author.ts +6 -6
  354. package/src/interface/config.ts +28 -0
  355. package/src/interface/devices.ts +6 -6
  356. package/src/interface/download.ts +12 -9
  357. package/src/interface/events.ts +76 -25
  358. package/src/interface/httpClient.ts +11 -27
  359. package/src/interface/index.ts +81 -20
  360. package/src/interface/nodes.ts +67 -60
  361. package/src/interface/result.ts +1 -3
  362. package/src/interface/sharing.ts +60 -56
  363. package/src/interface/telemetry.ts +74 -74
  364. package/src/interface/thumbnail.ts +5 -6
  365. package/src/interface/upload.ts +25 -11
  366. package/src/internal/apiService/apiService.test.ts +109 -76
  367. package/src/internal/apiService/apiService.ts +40 -26
  368. package/src/internal/apiService/coreTypes.ts +2474 -2463
  369. package/src/internal/apiService/driveTypes.ts +1868 -1822
  370. package/src/internal/apiService/errorCodes.ts +4 -4
  371. package/src/internal/apiService/errors.test.ts +25 -23
  372. package/src/internal/apiService/errors.ts +15 -9
  373. package/src/internal/apiService/index.ts +1 -1
  374. package/src/internal/apiService/transformers.ts +2 -2
  375. package/src/internal/asyncIteratorMap.test.ts +4 -4
  376. package/src/internal/asyncIteratorMap.ts +1 -1
  377. package/src/internal/asyncIteratorRace.test.ts +149 -0
  378. package/src/internal/asyncIteratorRace.ts +79 -0
  379. package/src/internal/batch.test.ts +50 -0
  380. package/src/internal/batch.ts +9 -0
  381. package/src/internal/batchLoading.test.ts +13 -14
  382. package/src/internal/batchLoading.ts +8 -8
  383. package/src/internal/devices/apiService.ts +58 -51
  384. package/src/internal/devices/cryptoService.ts +22 -17
  385. package/src/internal/devices/index.ts +17 -10
  386. package/src/internal/devices/interface.ts +21 -12
  387. package/src/internal/devices/manager.test.ts +40 -9
  388. package/src/internal/devices/manager.ts +3 -3
  389. package/src/internal/download/apiService.ts +72 -52
  390. package/src/internal/download/cryptoService.ts +34 -18
  391. package/src/internal/download/fileDownloader.test.ts +25 -9
  392. package/src/internal/download/fileDownloader.ts +38 -20
  393. package/src/internal/download/index.ts +19 -19
  394. package/src/internal/download/interface.ts +19 -20
  395. package/src/internal/download/queue.ts +3 -3
  396. package/src/internal/download/telemetry.test.ts +11 -11
  397. package/src/internal/download/telemetry.ts +24 -14
  398. package/src/internal/download/thumbnailDownloader.test.ts +11 -6
  399. package/src/internal/download/thumbnailDownloader.ts +43 -32
  400. package/src/internal/errors.ts +7 -5
  401. package/src/internal/events/apiService.ts +46 -36
  402. package/src/internal/events/coreEventManager.test.ts +101 -0
  403. package/src/internal/events/coreEventManager.ts +26 -48
  404. package/src/internal/events/eventManager.test.ts +211 -93
  405. package/src/internal/events/eventManager.ts +72 -117
  406. package/src/internal/events/index.ts +71 -91
  407. package/src/internal/events/interface.ts +92 -29
  408. package/src/internal/events/volumeEventManager.test.ts +239 -0
  409. package/src/internal/events/volumeEventManager.ts +68 -57
  410. package/src/internal/nodes/apiService.test.ts +197 -147
  411. package/src/internal/nodes/apiService.ts +288 -174
  412. package/src/internal/nodes/cache.test.ts +48 -20
  413. package/src/internal/nodes/cache.ts +79 -45
  414. package/src/internal/nodes/cryptoCache.test.ts +34 -14
  415. package/src/internal/nodes/cryptoCache.ts +10 -5
  416. package/src/internal/nodes/cryptoService.test.ts +492 -351
  417. package/src/internal/nodes/cryptoService.ts +171 -89
  418. package/src/internal/nodes/events.test.ts +48 -344
  419. package/src/internal/nodes/events.ts +48 -254
  420. package/src/internal/nodes/extendedAttributes.test.ts +28 -24
  421. package/src/internal/nodes/extendedAttributes.ts +20 -15
  422. package/src/internal/nodes/index.test.ts +51 -55
  423. package/src/internal/nodes/index.ts +32 -22
  424. package/src/internal/nodes/interface.ts +44 -31
  425. package/src/internal/nodes/nodesAccess.test.ts +237 -130
  426. package/src/internal/nodes/nodesAccess.ts +113 -50
  427. package/src/internal/nodes/nodesManagement.test.ts +64 -39
  428. package/src/internal/nodes/nodesManagement.ts +51 -62
  429. package/src/internal/nodes/nodesRevisions.ts +7 -7
  430. package/src/internal/nodes/validations.ts +2 -2
  431. package/src/internal/photos/albums.ts +5 -5
  432. package/src/internal/photos/apiService.ts +4 -7
  433. package/src/internal/photos/cache.ts +1 -1
  434. package/src/internal/photos/index.ts +8 -8
  435. package/src/internal/photos/interface.ts +2 -2
  436. package/src/internal/photos/photosTimeline.ts +4 -5
  437. package/src/internal/sdkEvents.test.ts +10 -10
  438. package/src/internal/sdkEvents.ts +5 -13
  439. package/src/internal/shares/apiService.ts +44 -33
  440. package/src/internal/shares/cache.test.ts +6 -4
  441. package/src/internal/shares/cache.ts +25 -14
  442. package/src/internal/shares/cryptoCache.test.ts +17 -11
  443. package/src/internal/shares/cryptoCache.ts +4 -4
  444. package/src/internal/shares/cryptoService.test.ts +72 -74
  445. package/src/internal/shares/cryptoService.ts +48 -23
  446. package/src/internal/shares/index.ts +23 -11
  447. package/src/internal/shares/interface.ts +8 -8
  448. package/src/internal/shares/manager.test.ts +88 -80
  449. package/src/internal/shares/manager.ts +27 -23
  450. package/src/internal/sharing/apiService.ts +283 -175
  451. package/src/internal/sharing/cache.test.ts +35 -35
  452. package/src/internal/sharing/cache.ts +3 -3
  453. package/src/internal/sharing/cryptoService.test.ts +58 -46
  454. package/src/internal/sharing/cryptoService.ts +121 -83
  455. package/src/internal/sharing/events.test.ts +97 -207
  456. package/src/internal/sharing/events.ts +46 -157
  457. package/src/internal/sharing/index.ts +24 -16
  458. package/src/internal/sharing/interface.ts +46 -42
  459. package/src/internal/sharing/sharingAccess.test.ts +71 -65
  460. package/src/internal/sharing/sharingAccess.ts +39 -21
  461. package/src/internal/sharing/sharingManagement.test.ts +405 -335
  462. package/src/internal/sharing/sharingManagement.ts +144 -75
  463. package/src/internal/uids.ts +1 -1
  464. package/src/internal/upload/apiService.ts +168 -119
  465. package/src/internal/upload/blockVerifier.ts +8 -6
  466. package/src/internal/upload/chunkStreamReader.test.ts +7 -7
  467. package/src/internal/upload/cryptoService.ts +42 -36
  468. package/src/internal/upload/digests.ts +2 -2
  469. package/src/internal/upload/fileUploader.test.ts +15 -3
  470. package/src/internal/upload/fileUploader.ts +39 -17
  471. package/src/internal/upload/index.ts +17 -18
  472. package/src/internal/upload/interface.ts +79 -77
  473. package/src/internal/upload/manager.test.ts +222 -175
  474. package/src/internal/upload/manager.ts +74 -80
  475. package/src/internal/upload/queue.ts +3 -3
  476. package/src/internal/upload/streamUploader.test.ts +40 -27
  477. package/src/internal/upload/streamUploader.ts +87 -71
  478. package/src/internal/upload/telemetry.test.ts +11 -11
  479. package/src/internal/upload/telemetry.ts +25 -15
  480. package/src/internal/wait.test.ts +1 -1
  481. package/src/internal/wait.ts +3 -3
  482. package/src/protonDriveClient.ts +189 -276
  483. package/src/protonDrivePhotosClient.ts +20 -13
  484. package/src/telemetry.ts +60 -52
  485. package/src/tests/logger.ts +1 -1
  486. package/src/tests/telemetry.ts +2 -2
  487. package/src/transformers.ts +27 -21
  488. package/src/version.ts +0 -1
  489. package/dist/internal/events/cache.d.ts +0 -28
  490. package/dist/internal/events/cache.js +0 -67
  491. package/dist/internal/events/cache.js.map +0 -1
  492. package/dist/internal/events/cache.test.js +0 -43
  493. package/dist/internal/events/cache.test.js.map +0 -1
  494. package/src/internal/events/cache.test.ts +0 -47
  495. package/src/internal/events/cache.ts +0 -80
  496. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  export interface Telemetry<MetricEvent> {
2
- getLogger: (name: string) => Logger,
3
- logEvent: (event: MetricEvent) => void,
2
+ getLogger: (name: string) => Logger;
3
+ logEvent: (event: MetricEvent) => void;
4
4
  }
5
5
 
6
6
  export interface Logger {
@@ -11,98 +11,98 @@ export interface Logger {
11
11
  }
12
12
 
13
13
  export type MetricEvent =
14
- MetricAPIRetrySucceededEvent |
15
- MetricUploadEvent |
16
- MetricDownloadEvent |
17
- MetricDecryptionErrorEvent |
18
- MetricVerificationErrorEvent |
19
- MetricBlockVerificationErrorEvent |
20
- MetricVolumeEventsSubscriptionsChangedEvent;
14
+ | MetricAPIRetrySucceededEvent
15
+ | MetricUploadEvent
16
+ | MetricDownloadEvent
17
+ | MetricDecryptionErrorEvent
18
+ | MetricVerificationErrorEvent
19
+ | MetricBlockVerificationErrorEvent
20
+ | MetricVolumeEventsSubscriptionsChangedEvent;
21
21
 
22
22
  export interface MetricAPIRetrySucceededEvent {
23
- eventName: 'apiRetrySucceeded',
24
- url: string,
25
- failedAttempts: number,
26
- };
23
+ eventName: 'apiRetrySucceeded';
24
+ url: string;
25
+ failedAttempts: number;
26
+ }
27
27
 
28
28
  export interface MetricUploadEvent {
29
- eventName: 'upload',
30
- volumeType?: MetricVolumeType,
31
- uploadedSize: number,
32
- expectedSize: number,
33
- error?: MetricsUploadErrorType,
34
- originalError?: unknown,
35
- };
29
+ eventName: 'upload';
30
+ volumeType?: MetricVolumeType;
31
+ uploadedSize: number;
32
+ expectedSize: number;
33
+ error?: MetricsUploadErrorType;
34
+ originalError?: unknown;
35
+ }
36
36
  export type MetricsUploadErrorType =
37
- 'server_error' |
38
- 'network_error' |
39
- 'integrity_error' |
40
- 'rate_limited' |
41
- '4xx' |
42
- 'unknown';
37
+ | 'server_error'
38
+ | 'network_error'
39
+ | 'integrity_error'
40
+ | 'rate_limited'
41
+ | '4xx'
42
+ | 'unknown';
43
43
 
44
44
  export interface MetricDownloadEvent {
45
- eventName: 'download',
46
- volumeType?: MetricVolumeType,
47
- downloadedSize: number,
48
- claimedFileSize?: number,
49
- error?: MetricsDownloadErrorType,
50
- originalError?: unknown,
51
- };
45
+ eventName: 'download';
46
+ volumeType?: MetricVolumeType;
47
+ downloadedSize: number;
48
+ claimedFileSize?: number;
49
+ error?: MetricsDownloadErrorType;
50
+ originalError?: unknown;
51
+ }
52
52
  export type MetricsDownloadErrorType =
53
- 'server_error' |
54
- 'network_error' |
55
- 'decryption_error' |
56
- 'integrity_error' |
57
- 'rate_limited' |
58
- '4xx' |
59
- 'unknown';
53
+ | 'server_error'
54
+ | 'network_error'
55
+ | 'decryption_error'
56
+ | 'integrity_error'
57
+ | 'rate_limited'
58
+ | '4xx'
59
+ | 'unknown';
60
60
 
61
61
  export interface MetricDecryptionErrorEvent {
62
- eventName: 'decryptionError',
63
- volumeType?: MetricVolumeType,
64
- field: MetricsDecryptionErrorField,
65
- fromBefore2024?: boolean,
66
- error?: unknown,
67
- };
62
+ eventName: 'decryptionError';
63
+ volumeType?: MetricVolumeType;
64
+ field: MetricsDecryptionErrorField;
65
+ fromBefore2024?: boolean;
66
+ error?: unknown;
67
+ }
68
68
  export type MetricsDecryptionErrorField =
69
- 'shareKey' |
70
- 'shareUrlPassword' |
71
- 'nodeKey' |
72
- 'nodeName' |
73
- 'nodeHashKey' |
74
- 'nodeExtendedAttributes' |
75
- 'nodeContentKey' |
76
- 'content';
69
+ | 'shareKey'
70
+ | 'shareUrlPassword'
71
+ | 'nodeKey'
72
+ | 'nodeName'
73
+ | 'nodeHashKey'
74
+ | 'nodeExtendedAttributes'
75
+ | 'nodeContentKey'
76
+ | 'content';
77
77
 
78
78
  export interface MetricVerificationErrorEvent {
79
- eventName: 'verificationError',
80
- volumeType?: MetricVolumeType,
81
- field: MetricVerificationErrorField,
82
- addressMatchingDefaultShare?: boolean,
83
- fromBefore2024?: boolean,
84
- };
79
+ eventName: 'verificationError';
80
+ volumeType?: MetricVolumeType;
81
+ field: MetricVerificationErrorField;
82
+ addressMatchingDefaultShare?: boolean;
83
+ fromBefore2024?: boolean;
84
+ }
85
85
  export type MetricVerificationErrorField =
86
- 'shareKey' |
87
- 'nodeKey' |
88
- 'nodeName' |
89
- 'nodeHashKey' |
90
- 'nodeExtendedAttributes' |
91
- 'nodeContentKey' |
92
- 'content';
86
+ | 'shareKey'
87
+ | 'nodeKey'
88
+ | 'nodeName'
89
+ | 'nodeHashKey'
90
+ | 'nodeExtendedAttributes'
91
+ | 'nodeContentKey'
92
+ | 'content';
93
93
 
94
94
  export interface MetricBlockVerificationErrorEvent {
95
- eventName: 'blockVerificationError',
96
- retryHelped: boolean,
97
- };
95
+ eventName: 'blockVerificationError';
96
+ retryHelped: boolean;
97
+ }
98
98
 
99
99
  export interface MetricVolumeEventsSubscriptionsChangedEvent {
100
- eventName: 'volumeEventsSubscriptionsChanged',
101
- numberOfVolumeSubscriptions: number,
102
- };
100
+ eventName: 'volumeEventsSubscriptionsChanged';
101
+ numberOfVolumeSubscriptions: number;
102
+ }
103
103
 
104
104
  export enum MetricVolumeType {
105
105
  OwnVolume = 'own_volume',
106
106
  Shared = 'shared',
107
107
  SharedPublic = 'shared_public',
108
- };
108
+ }
@@ -1,8 +1,7 @@
1
-
2
1
  export type Thumbnail = {
3
- type: ThumbnailType,
4
- thumbnail: Uint8Array,
5
- }
2
+ type: ThumbnailType;
3
+ thumbnail: Uint8Array;
4
+ };
6
5
 
7
6
  export enum ThumbnailType {
8
7
  Type1 = 1,
@@ -10,5 +9,5 @@ export enum ThumbnailType {
10
9
  }
11
10
 
12
11
  export type ThumbnailResult =
13
- {nodeUid: string, ok: true, thumbnail: Uint8Array } |
14
- {nodeUid: string, ok: false, error: string};
12
+ | { nodeUid: string; ok: true; thumbnail: Uint8Array }
13
+ | { nodeUid: string; ok: false; error: string };
@@ -1,7 +1,7 @@
1
- import { Thumbnail } from "./thumbnail";
1
+ import { Thumbnail } from './thumbnail';
2
2
 
3
3
  export type UploadMetadata = {
4
- mediaType: string,
4
+ mediaType: string;
5
5
  /**
6
6
  * Expected size of the file.
7
7
  *
@@ -9,13 +9,13 @@ export type UploadMetadata = {
9
9
  * If the expected size does not match the actual size, the upload will
10
10
  * fail.
11
11
  */
12
- expectedSize: number,
12
+ expectedSize: number;
13
13
  /**
14
14
  * Modification time of the file.
15
15
  *
16
16
  * The modification time will be encrypted and stored with the file.
17
17
  */
18
- modificationTime?: Date,
18
+ modificationTime?: Date;
19
19
  /**
20
20
  * Additional metadata to be stored with the file.
21
21
  *
@@ -23,7 +23,13 @@ export type UploadMetadata = {
23
23
  *
24
24
  * The metadata will be encrypted and stored with the file.
25
25
  */
26
- additionalMetadata?: object,
26
+ additionalMetadata?: object;
27
+ /**
28
+ * If there is an existing draft by another client, the upload will be
29
+ * rejected. If user decides to override the existing draft and continue
30
+ * with the upload, set this to true.
31
+ */
32
+ overrideExistingDraftByOtherClient?: boolean;
27
33
  };
28
34
 
29
35
  export interface FileRevisionUploader {
@@ -35,7 +41,11 @@ export interface FileRevisionUploader {
35
41
  *
36
42
  * The function will reject if the node with the given name already exists.
37
43
  */
38
- writeStream(stream: ReadableStream, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>,
44
+ writeStream(
45
+ stream: ReadableStream,
46
+ thumnbails: Thumbnail[],
47
+ onProgress?: (uploadedBytes: number) => void,
48
+ ): Promise<UploadController>;
39
49
 
40
50
  /**
41
51
  * Uploads a file from a file object. It is convenient to use this method
@@ -47,7 +57,11 @@ export interface FileRevisionUploader {
47
57
  *
48
58
  * The function will reject if the node with the given name already exists.
49
59
  */
50
- writeFile(fileObject: File, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>,
60
+ writeFile(
61
+ fileObject: File,
62
+ thumnbails: Thumbnail[],
63
+ onProgress?: (uploadedBytes: number) => void,
64
+ ): Promise<UploadController>;
51
65
  }
52
66
 
53
67
  export interface FileUploader extends FileRevisionUploader {
@@ -59,11 +73,11 @@ export interface FileUploader extends FileRevisionUploader {
59
73
  *
60
74
  * Example new name: `file (2).txt`.
61
75
  */
62
- getAvailableName(): Promise<string>,
76
+ getAvailableName(): Promise<string>;
63
77
  }
64
78
 
65
79
  export interface UploadController {
66
- pause(): void,
67
- resume(): void,
68
- completion(): Promise<string>,
80
+ pause(): void;
81
+ resume(): void;
82
+ completion(): Promise<string>;
69
83
  }
@@ -1,6 +1,6 @@
1
- import { ProtonDriveHTTPClient, SDKEvent } from "../../interface";
2
- import { getMockTelemetry } from "../../tests/telemetry";
3
- import { SDKEvents } from "../sdkEvents";
1
+ import { ProtonDriveHTTPClient, SDKEvent } from '../../interface';
2
+ import { getMockTelemetry } from '../../tests/telemetry';
3
+ import { SDKEvents } from '../sdkEvents';
4
4
  import { DriveAPIService } from './apiService';
5
5
  import { HTTPErrorCode, ErrorCode } from './errorCodes';
6
6
 
@@ -10,7 +10,7 @@ function generateOkResponse() {
10
10
  return new Response(JSON.stringify({ Code: ErrorCode.OK }), { status: HTTPErrorCode.OK });
11
11
  }
12
12
 
13
- describe("DriveAPIService", () => {
13
+ describe('DriveAPIService', () => {
14
14
  let sdkEvents: SDKEvents;
15
15
  let httpClient: ProtonDriveHTTPClient;
16
16
  let api: DriveAPIService;
@@ -24,7 +24,7 @@ describe("DriveAPIService", () => {
24
24
  transfersResumed: jest.fn(),
25
25
  requestsThrottled: jest.fn(),
26
26
  requestsUnthrottled: jest.fn(),
27
- }
27
+ };
28
28
  httpClient = {
29
29
  fetchJson: jest.fn(() => Promise.resolve(generateOkResponse())),
30
30
  fetchBlob: jest.fn(() => Promise.resolve(new Response(new Uint8Array([1, 2, 3])))),
@@ -36,23 +36,25 @@ describe("DriveAPIService", () => {
36
36
  expect(sdkEvents.transfersPaused).toHaveBeenCalledTimes(events.includes(SDKEvent.TransfersPaused) ? 1 : 0);
37
37
  expect(sdkEvents.transfersResumed).toHaveBeenCalledTimes(events.includes(SDKEvent.TransfersResumed) ? 1 : 0);
38
38
  expect(sdkEvents.requestsThrottled).toHaveBeenCalledTimes(events.includes(SDKEvent.RequestsThrottled) ? 1 : 0);
39
- expect(sdkEvents.requestsUnthrottled).toHaveBeenCalledTimes(events.includes(SDKEvent.RequestsUnthrottled) ? 1 : 0);
39
+ expect(sdkEvents.requestsUnthrottled).toHaveBeenCalledTimes(
40
+ events.includes(SDKEvent.RequestsUnthrottled) ? 1 : 0,
41
+ );
40
42
  }
41
43
 
42
- describe("should make", () => {
43
- it("GET request", async () => {
44
+ describe('should make', () => {
45
+ it('GET request', async () => {
44
46
  const result = await api.get('test');
45
47
  expect(result).toEqual({ Code: ErrorCode.OK });
46
48
  await expectFetchJsonToBeCalledWith('GET');
47
49
  });
48
50
 
49
- it("POST request", async () => {
51
+ it('POST request', async () => {
50
52
  const result = await api.post('test', { data: 'test' });
51
53
  expect(result).toEqual({ Code: ErrorCode.OK });
52
54
  await expectFetchJsonToBeCalledWith('POST', { data: 'test' });
53
55
  });
54
56
 
55
- it("PUT request", async () => {
57
+ it('PUT request', async () => {
56
58
  const result = await api.put('test', { data: 'test' });
57
59
  expect(result).toEqual({ Code: ErrorCode.OK });
58
60
  await expectFetchJsonToBeCalledWith('PUT', { data: 'test' });
@@ -63,24 +65,28 @@ describe("DriveAPIService", () => {
63
65
  const request = httpClient.fetchJson.mock.calls[0][0];
64
66
  expect(request.method).toEqual(method);
65
67
  expect(request.timeoutMs).toEqual(30000);
66
- expect(Array.from(request.headers.entries())).toEqual(Array.from(new Headers({
67
- "Accept": "application/vnd.protonmail.v1+json",
68
- "Content-Type": "application/json",
69
- "Language": 'en',
70
- "x-pm-drive-sdk-version": `js@${process.env.npm_package_version}`,
71
- }).entries()));
68
+ expect(Array.from(request.headers.entries())).toEqual(
69
+ Array.from(
70
+ new Headers({
71
+ Accept: 'application/vnd.protonmail.v1+json',
72
+ 'Content-Type': 'application/json',
73
+ Language: 'en',
74
+ 'x-pm-drive-sdk-version': `js@${process.env.npm_package_version}`,
75
+ }).entries(),
76
+ ),
77
+ );
72
78
  expect(await request.json).toEqual(data);
73
79
  expectSDKEvents();
74
80
  }
75
81
 
76
- it("storage GET request", async () => {
82
+ it('storage GET request', async () => {
77
83
  const stream = await api.getBlockStream('test', 'token');
78
84
  const result = await Array.fromAsync(stream);
79
85
  expect(result).toEqual([new Uint8Array([1, 2, 3])]);
80
86
  await expectFetchBlobToBeCalledWith('GET');
81
87
  });
82
88
 
83
- it("storage POST request", async () => {
89
+ it('storage POST request', async () => {
84
90
  const data = new Blob();
85
91
  await api.postBlockStream('test', 'token', data);
86
92
  await expectFetchBlobToBeCalledWith('POST', data);
@@ -91,35 +97,44 @@ describe("DriveAPIService", () => {
91
97
  const request = httpClient.fetchBlob.mock.calls[0][0];
92
98
  expect(request.method).toEqual(method);
93
99
  expect(request.timeoutMs).toEqual(90000);
94
- expect(Array.from(request.headers.entries())).toEqual(Array.from(new Headers({
95
- "pm-storage-token": 'token',
96
- "Language": 'en',
97
- "x-pm-drive-sdk-version": `js@${process.env.npm_package_version}`,
98
- }).entries()));
100
+ expect(Array.from(request.headers.entries())).toEqual(
101
+ Array.from(
102
+ new Headers({
103
+ 'pm-storage-token': 'token',
104
+ Language: 'en',
105
+ 'x-pm-drive-sdk-version': `js@${process.env.npm_package_version}`,
106
+ }).entries(),
107
+ ),
108
+ );
99
109
  expect(request.body).toEqual(data);
100
110
  expectSDKEvents();
101
111
  }
102
112
  });
103
113
 
104
- describe("should throw", () => {
105
- it("APIHTTPError on 4xx response without JSON body", async () => {
106
- httpClient.fetchJson = jest.fn(() => Promise.resolve(new Response('Not found', { status: 404, statusText: 'Not found' })));
114
+ describe('should throw', () => {
115
+ it('APIHTTPError on 4xx response without JSON body', async () => {
116
+ httpClient.fetchJson = jest.fn(() =>
117
+ Promise.resolve(new Response('Not found', { status: 404, statusText: 'Not found' })),
118
+ );
107
119
  await expect(api.get('test')).rejects.toThrow(new Error('Not found'));
108
120
  expectSDKEvents();
109
121
  });
110
122
 
111
- it("APIError on 4xx response with JSON body", async () => {
112
- httpClient.fetchJson = jest.fn(() => Promise.resolve(new Response(JSON.stringify({ Code: 42, Error: 'General error' }), { status: 422 })));
123
+ it('APIError on 4xx response with JSON body', async () => {
124
+ httpClient.fetchJson = jest.fn(() =>
125
+ Promise.resolve(new Response(JSON.stringify({ Code: 42, Error: 'General error' }), { status: 422 })),
126
+ );
113
127
  await expect(api.get('test')).rejects.toThrow('General error');
114
128
  expectSDKEvents();
115
129
  });
116
130
  });
117
131
 
118
- describe("should retry", () => {
119
- it("on offline error", async () => {
132
+ describe('should retry', () => {
133
+ it('on offline error', async () => {
120
134
  const error = new Error('Network offline');
121
135
  error.name = 'OfflineError';
122
- httpClient.fetchJson = jest.fn()
136
+ httpClient.fetchJson = jest
137
+ .fn()
123
138
  .mockRejectedValueOnce(error)
124
139
  .mockRejectedValueOnce(error)
125
140
  .mockResolvedValueOnce(generateOkResponse());
@@ -131,10 +146,11 @@ describe("DriveAPIService", () => {
131
146
  expectSDKEvents();
132
147
  });
133
148
 
134
- it("on timeout error", async () => {
149
+ it('on timeout error', async () => {
135
150
  const error = new Error('Timeouted');
136
151
  error.name = 'TimeoutError';
137
- httpClient.fetchJson = jest.fn()
152
+ httpClient.fetchJson = jest
153
+ .fn()
138
154
  .mockRejectedValueOnce(error)
139
155
  .mockRejectedValueOnce(error)
140
156
  .mockResolvedValueOnce(generateOkResponse());
@@ -146,8 +162,9 @@ describe("DriveAPIService", () => {
146
162
  expectSDKEvents();
147
163
  });
148
164
 
149
- it("on general error", async () => {
150
- httpClient.fetchJson = jest.fn()
165
+ it('on general error', async () => {
166
+ httpClient.fetchJson = jest
167
+ .fn()
151
168
  .mockRejectedValueOnce(new Error('Error'))
152
169
  .mockResolvedValueOnce(generateOkResponse());
153
170
 
@@ -158,23 +175,29 @@ describe("DriveAPIService", () => {
158
175
  expectSDKEvents();
159
176
  });
160
177
 
161
- it("only once on general error", async () => {
162
- httpClient.fetchJson = jest.fn()
178
+ it('only once on general error', async () => {
179
+ httpClient.fetchJson = jest
180
+ .fn()
163
181
  .mockRejectedValueOnce(new Error('First error'))
164
182
  .mockRejectedValueOnce(new Error('Second error'))
165
183
  .mockResolvedValueOnce(generateOkResponse());
166
184
 
167
185
  const result = api.get('test');
168
186
 
169
- await expect(result).rejects.toThrow("Second error");
187
+ await expect(result).rejects.toThrow('Second error');
170
188
  expect(httpClient.fetchJson).toHaveBeenCalledTimes(2);
171
189
  expectSDKEvents();
172
190
  });
173
191
 
174
- it("on 429 response", async () => {
175
- httpClient.fetchJson = jest.fn()
176
- .mockResolvedValueOnce(new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }))
177
- .mockResolvedValueOnce(new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }))
192
+ it('on 429 response', async () => {
193
+ httpClient.fetchJson = jest
194
+ .fn()
195
+ .mockResolvedValueOnce(
196
+ new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }),
197
+ )
198
+ .mockResolvedValueOnce(
199
+ new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }),
200
+ )
178
201
  .mockResolvedValueOnce(generateOkResponse());
179
202
 
180
203
  const result = api.get('test');
@@ -185,9 +208,12 @@ describe("DriveAPIService", () => {
185
208
  expectSDKEvents();
186
209
  });
187
210
 
188
- it("on 5xx response", async () => {
189
- httpClient.fetchJson = jest.fn()
190
- .mockResolvedValueOnce(new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }))
211
+ it('on 5xx response', async () => {
212
+ httpClient.fetchJson = jest
213
+ .fn()
214
+ .mockResolvedValueOnce(
215
+ new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }),
216
+ )
191
217
  .mockResolvedValueOnce(generateOkResponse());
192
218
 
193
219
  const result = api.get('test');
@@ -197,28 +223,34 @@ describe("DriveAPIService", () => {
197
223
  expectSDKEvents();
198
224
  });
199
225
 
200
- it("only once on 5xx response", async () => {
201
- httpClient.fetchJson = jest.fn()
202
- .mockResolvedValue(new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }));
226
+ it('only once on 5xx response', async () => {
227
+ httpClient.fetchJson = jest
228
+ .fn()
229
+ .mockResolvedValue(
230
+ new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }),
231
+ );
203
232
 
204
233
  const result = api.get('test');
205
234
 
206
- await expect(result).rejects.toThrow("Some error");
235
+ await expect(result).rejects.toThrow('Some error');
207
236
  expect(httpClient.fetchJson).toHaveBeenCalledTimes(2);
208
237
  expectSDKEvents();
209
238
  });
210
239
  });
211
240
 
212
- describe("should handle subsequent errors", () => {
213
- it("limit 429 errors", async () => {
214
- httpClient.fetchJson = jest.fn()
215
- .mockResolvedValue(new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }));
241
+ describe('should handle subsequent errors', () => {
242
+ it('limit 429 errors', async () => {
243
+ httpClient.fetchJson = jest
244
+ .fn()
245
+ .mockResolvedValue(
246
+ new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' }),
247
+ );
216
248
 
217
249
  for (let i = 0; i < 20; i++) {
218
250
  await api.get('test').catch(() => {});
219
251
  }
220
252
 
221
- await expect(api.get('test')).rejects.toThrow("Too many server requests, please try again later");
253
+ await expect(api.get('test')).rejects.toThrow('Too many server requests, please try again later');
222
254
  expect(httpClient.fetchJson).toHaveBeenCalledTimes(50);
223
255
  expectSDKEvents(SDKEvent.RequestsThrottled);
224
256
 
@@ -229,15 +261,14 @@ describe("DriveAPIService", () => {
229
261
  expect(sdkEvents.requestsThrottled).toHaveBeenCalledTimes(1);
230
262
  });
231
263
 
232
- it("do not limit 429s when some pass", async () => {
264
+ it('do not limit 429s when some pass', async () => {
233
265
  let attempt = 0;
234
- httpClient.fetchJson = jest.fn()
235
- .mockImplementation(() => {
236
- if (attempt++ % 5 === 0) {
237
- return generateOkResponse();
238
- }
239
- return new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' });
240
- });
266
+ httpClient.fetchJson = jest.fn().mockImplementation(() => {
267
+ if (attempt++ % 5 === 0) {
268
+ return generateOkResponse();
269
+ }
270
+ return new Response('', { status: HTTPErrorCode.TOO_MANY_REQUESTS, statusText: 'Some error' });
271
+ });
241
272
 
242
273
  for (let i = 0; i < 20; i++) {
243
274
  await api.get('test').catch(() => {});
@@ -249,34 +280,36 @@ describe("DriveAPIService", () => {
249
280
  expectSDKEvents();
250
281
  });
251
282
 
252
- it("limit server errors", async () => {
253
- httpClient.fetchJson = jest.fn()
254
- .mockResolvedValue(new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }));
283
+ it('limit server errors', async () => {
284
+ httpClient.fetchJson = jest
285
+ .fn()
286
+ .mockResolvedValue(
287
+ new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' }),
288
+ );
255
289
 
256
290
  for (let i = 0; i < 20; i++) {
257
291
  await api.get('test').catch(() => {});
258
292
  }
259
293
 
260
- await expect(api.get('test')).rejects.toThrow("Too many server errors, please try again later");
294
+ await expect(api.get('test')).rejects.toThrow('Too many server errors, please try again later');
261
295
  expect(httpClient.fetchJson).toHaveBeenCalledTimes(10);
262
296
  expectSDKEvents();
263
297
  });
264
298
 
265
- it("do not limit server errors when some pass", async () => {
299
+ it('do not limit server errors when some pass', async () => {
266
300
  let attempt = 0;
267
- httpClient.fetchJson = jest.fn()
268
- .mockImplementation(() => {
269
- if (attempt++ % 5 === 0) {
270
- return generateOkResponse();
271
- }
272
- return new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' });
273
- });
274
-
301
+ httpClient.fetchJson = jest.fn().mockImplementation(() => {
302
+ if (attempt++ % 5 === 0) {
303
+ return generateOkResponse();
304
+ }
305
+ return new Response('', { status: HTTPErrorCode.INTERNAL_SERVER_ERROR, statusText: 'Some error' });
306
+ });
307
+
275
308
  for (let i = 0; i < 20; i++) {
276
309
  await api.get('test').catch(() => {});
277
310
  }
278
311
 
279
- await expect(api.get('test')).rejects.toThrow("Some error");
312
+ await expect(api.get('test')).rejects.toThrow('Some error');
280
313
  // 15 erroring calls * 2 attempts + 5 successful calls
281
314
  expect(httpClient.fetchJson).toHaveBeenCalledTimes(35);
282
315
  expectSDKEvents();