@backblaze-labs/b2-sdk 0.1.0 → 0.3.0

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 (885) hide show
  1. package/CHANGELOG.md +151 -5
  2. package/README.md +163 -34
  3. package/dist/_virtual/_b2-sdk-version-json.cjs +4 -0
  4. package/dist/_virtual/_b2-sdk-version-json.js +4 -0
  5. package/dist/auth/account-info.d.cts +32 -0
  6. package/dist/auth/account-info.d.cts.map +1 -1
  7. package/dist/auth/account-info.d.ts +32 -0
  8. package/dist/auth/account-info.d.ts.map +1 -1
  9. package/dist/auth/file.cjs +408 -207
  10. package/dist/auth/file.cjs.map +1 -1
  11. package/dist/auth/file.d.cts +77 -3
  12. package/dist/auth/file.d.cts.map +1 -1
  13. package/dist/auth/file.d.ts +77 -3
  14. package/dist/auth/file.d.ts.map +1 -1
  15. package/dist/auth/file.js +407 -207
  16. package/dist/auth/file.js.map +1 -1
  17. package/dist/auth/in-memory.cjs +212 -183
  18. package/dist/auth/in-memory.cjs.map +1 -1
  19. package/dist/auth/in-memory.d.cts +8 -0
  20. package/dist/auth/in-memory.d.cts.map +1 -1
  21. package/dist/auth/in-memory.d.ts +8 -0
  22. package/dist/auth/in-memory.d.ts.map +1 -1
  23. package/dist/auth/in-memory.js +211 -182
  24. package/dist/auth/in-memory.js.map +1 -1
  25. package/dist/auth/index.cjs +7 -9
  26. package/dist/auth/index.d.cts +3 -2
  27. package/dist/auth/index.d.cts.map +1 -1
  28. package/dist/auth/index.d.ts +3 -2
  29. package/dist/auth/index.d.ts.map +1 -1
  30. package/dist/auth/index.js +2 -8
  31. package/dist/auth/realms.cjs +80 -7
  32. package/dist/auth/realms.cjs.map +1 -1
  33. package/dist/auth/realms.d.cts +27 -4
  34. package/dist/auth/realms.d.cts.map +1 -1
  35. package/dist/auth/realms.d.ts +27 -4
  36. package/dist/auth/realms.d.ts.map +1 -1
  37. package/dist/auth/realms.js +80 -9
  38. package/dist/auth/realms.js.map +1 -1
  39. package/dist/auth/upload-url-pool.cjs +55 -51
  40. package/dist/auth/upload-url-pool.cjs.map +1 -1
  41. package/dist/auth/upload-url-pool.js +55 -51
  42. package/dist/auth/upload-url-pool.js.map +1 -1
  43. package/dist/backup/client.cjs +206 -0
  44. package/dist/backup/client.cjs.map +1 -0
  45. package/dist/backup/client.d.cts +238 -0
  46. package/dist/backup/client.d.cts.map +1 -0
  47. package/dist/backup/client.d.ts +238 -0
  48. package/dist/backup/client.d.ts.map +1 -0
  49. package/dist/backup/client.js +206 -0
  50. package/dist/backup/client.js.map +1 -0
  51. package/dist/backup/index.cjs +15 -0
  52. package/dist/backup/index.d.cts +22 -0
  53. package/dist/backup/index.d.cts.map +1 -0
  54. package/dist/backup/index.d.ts +22 -0
  55. package/dist/backup/index.d.ts.map +1 -0
  56. package/dist/backup/index.js +7 -0
  57. package/dist/backup/raw.cjs +146 -0
  58. package/dist/backup/raw.cjs.map +1 -0
  59. package/dist/backup/raw.d.cts +122 -0
  60. package/dist/backup/raw.d.cts.map +1 -0
  61. package/dist/backup/raw.d.ts +122 -0
  62. package/dist/backup/raw.d.ts.map +1 -0
  63. package/dist/backup/raw.js +146 -0
  64. package/dist/backup/raw.js.map +1 -0
  65. package/dist/bucket.cjs +786 -787
  66. package/dist/bucket.cjs.map +1 -1
  67. package/dist/bucket.d.cts +35 -47
  68. package/dist/bucket.d.cts.map +1 -1
  69. package/dist/bucket.d.ts +35 -47
  70. package/dist/bucket.d.ts.map +1 -1
  71. package/dist/bucket.js +781 -782
  72. package/dist/bucket.js.map +1 -1
  73. package/dist/client.cjs +246 -228
  74. package/dist/client.cjs.map +1 -1
  75. package/dist/client.d.cts +25 -17
  76. package/dist/client.d.cts.map +1 -1
  77. package/dist/client.d.ts +25 -17
  78. package/dist/client.d.ts.map +1 -1
  79. package/dist/client.js +243 -225
  80. package/dist/client.js.map +1 -1
  81. package/dist/copy/large.cjs +116 -71
  82. package/dist/copy/large.cjs.map +1 -1
  83. package/dist/copy/large.d.cts +6 -0
  84. package/dist/copy/large.d.cts.map +1 -1
  85. package/dist/copy/large.d.ts +6 -0
  86. package/dist/copy/large.d.ts.map +1 -1
  87. package/dist/copy/large.js +114 -69
  88. package/dist/copy/large.js.map +1 -1
  89. package/dist/download/checksum.cjs +93 -0
  90. package/dist/download/checksum.cjs.map +1 -0
  91. package/dist/download/checksum.d.cts +40 -0
  92. package/dist/download/checksum.d.cts.map +1 -0
  93. package/dist/download/checksum.d.ts +40 -0
  94. package/dist/download/checksum.d.ts.map +1 -0
  95. package/dist/download/checksum.js +91 -0
  96. package/dist/download/checksum.js.map +1 -0
  97. package/dist/download/parallel.cjs +251 -118
  98. package/dist/download/parallel.cjs.map +1 -1
  99. package/dist/download/parallel.d.cts +13 -2
  100. package/dist/download/parallel.d.cts.map +1 -1
  101. package/dist/download/parallel.d.ts +13 -2
  102. package/dist/download/parallel.d.ts.map +1 -1
  103. package/dist/download/parallel.js +249 -116
  104. package/dist/download/parallel.js.map +1 -1
  105. package/dist/download/single.cjs +323 -97
  106. package/dist/download/single.cjs.map +1 -1
  107. package/dist/download/single.d.cts +6 -1
  108. package/dist/download/single.d.cts.map +1 -1
  109. package/dist/download/single.d.ts +6 -1
  110. package/dist/download/single.d.ts.map +1 -1
  111. package/dist/download/single.js +322 -99
  112. package/dist/download/single.js.map +1 -1
  113. package/dist/errors/index.cjs +869 -243
  114. package/dist/errors/index.cjs.map +1 -1
  115. package/dist/errors/index.d.cts +404 -82
  116. package/dist/errors/index.d.cts.map +1 -1
  117. package/dist/errors/index.d.ts +404 -82
  118. package/dist/errors/index.d.ts.map +1 -1
  119. package/dist/errors/index.js +835 -261
  120. package/dist/errors/index.js.map +1 -1
  121. package/dist/http/retry.cjs +45 -28
  122. package/dist/http/retry.cjs.map +1 -1
  123. package/dist/http/retry.d.cts +15 -2
  124. package/dist/http/retry.d.cts.map +1 -1
  125. package/dist/http/retry.d.ts +15 -2
  126. package/dist/http/retry.d.ts.map +1 -1
  127. package/dist/http/retry.js +46 -31
  128. package/dist/http/retry.js.map +1 -1
  129. package/dist/http/transport.cjs +476 -140
  130. package/dist/http/transport.cjs.map +1 -1
  131. package/dist/http/transport.d.cts +46 -5
  132. package/dist/http/transport.d.cts.map +1 -1
  133. package/dist/http/transport.d.ts +46 -5
  134. package/dist/http/transport.d.ts.map +1 -1
  135. package/dist/http/transport.js +474 -140
  136. package/dist/http/transport.js.map +1 -1
  137. package/dist/http/url-guard.cjs +154 -89
  138. package/dist/http/url-guard.cjs.map +1 -1
  139. package/dist/http/url-guard.d.cts +25 -3
  140. package/dist/http/url-guard.d.cts.map +1 -1
  141. package/dist/http/url-guard.d.ts +25 -3
  142. package/dist/http/url-guard.d.ts.map +1 -1
  143. package/dist/http/url-guard.js +152 -90
  144. package/dist/http/url-guard.js.map +1 -1
  145. package/dist/http/user-agent.cjs +84 -44
  146. package/dist/http/user-agent.cjs.map +1 -1
  147. package/dist/http/user-agent.js +84 -46
  148. package/dist/http/user-agent.js.map +1 -1
  149. package/dist/index.cjs +124 -77
  150. package/dist/index.d.cts +29 -21
  151. package/dist/index.d.cts.map +1 -1
  152. package/dist/index.d.ts +29 -21
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +18 -72
  155. package/dist/internal/b2-naming.cjs +66 -0
  156. package/dist/internal/b2-naming.cjs.map +1 -0
  157. package/dist/internal/b2-naming.d.cts +43 -0
  158. package/dist/internal/b2-naming.d.cts.map +1 -0
  159. package/dist/internal/b2-naming.d.ts +43 -0
  160. package/dist/internal/b2-naming.d.ts.map +1 -0
  161. package/dist/internal/b2-naming.js +60 -0
  162. package/dist/internal/b2-naming.js.map +1 -0
  163. package/dist/internal/upload-retry-options.cjs +21 -0
  164. package/dist/internal/upload-retry-options.cjs.map +1 -0
  165. package/dist/internal/upload-retry-options.d.cts +12 -0
  166. package/dist/internal/upload-retry-options.d.cts.map +1 -0
  167. package/dist/internal/upload-retry-options.d.ts +12 -0
  168. package/dist/internal/upload-retry-options.d.ts.map +1 -0
  169. package/dist/internal/upload-retry-options.js +21 -0
  170. package/dist/internal/upload-retry-options.js.map +1 -0
  171. package/dist/internal/url-redaction.cjs +31 -0
  172. package/dist/internal/url-redaction.cjs.map +1 -0
  173. package/dist/internal/url-redaction.d.cts +17 -0
  174. package/dist/internal/url-redaction.d.cts.map +1 -0
  175. package/dist/internal/url-redaction.d.ts +17 -0
  176. package/dist/internal/url-redaction.d.ts.map +1 -0
  177. package/dist/internal/url-redaction.js +31 -0
  178. package/dist/internal/url-redaction.js.map +1 -0
  179. package/dist/notifications/index.cjs +4 -6
  180. package/dist/notifications/index.d.cts +1 -1
  181. package/dist/notifications/index.d.cts.map +1 -1
  182. package/dist/notifications/index.d.ts +1 -1
  183. package/dist/notifications/index.d.ts.map +1 -1
  184. package/dist/notifications/index.js +1 -6
  185. package/dist/notifications/webhook.cjs +195 -85
  186. package/dist/notifications/webhook.cjs.map +1 -1
  187. package/dist/notifications/webhook.d.cts.map +1 -1
  188. package/dist/notifications/webhook.d.ts.map +1 -1
  189. package/dist/notifications/webhook.js +195 -87
  190. package/dist/notifications/webhook.js.map +1 -1
  191. package/dist/object.cjs +253 -210
  192. package/dist/object.cjs.map +1 -1
  193. package/dist/object.d.cts +13 -57
  194. package/dist/object.d.cts.map +1 -1
  195. package/dist/object.d.ts +13 -57
  196. package/dist/object.d.ts.map +1 -1
  197. package/dist/object.js +249 -206
  198. package/dist/object.js.map +1 -1
  199. package/dist/partner/account-info.d.cts +43 -0
  200. package/dist/partner/account-info.d.cts.map +1 -0
  201. package/dist/partner/account-info.d.ts +43 -0
  202. package/dist/partner/account-info.d.ts.map +1 -0
  203. package/dist/partner/auth-clone.cjs +64 -0
  204. package/dist/partner/auth-clone.cjs.map +1 -0
  205. package/dist/partner/auth-clone.d.cts +27 -0
  206. package/dist/partner/auth-clone.d.cts.map +1 -0
  207. package/dist/partner/auth-clone.d.ts +27 -0
  208. package/dist/partner/auth-clone.d.ts.map +1 -0
  209. package/dist/partner/auth-clone.js +63 -0
  210. package/dist/partner/auth-clone.js.map +1 -0
  211. package/dist/partner/auth-core.cjs +175 -0
  212. package/dist/partner/auth-core.cjs.map +1 -0
  213. package/dist/partner/auth-core.d.cts +111 -0
  214. package/dist/partner/auth-core.d.cts.map +1 -0
  215. package/dist/partner/auth-core.d.ts +111 -0
  216. package/dist/partner/auth-core.d.ts.map +1 -0
  217. package/dist/partner/auth-core.js +175 -0
  218. package/dist/partner/auth-core.js.map +1 -0
  219. package/dist/partner/auth-shape.cjs +36 -0
  220. package/dist/partner/auth-shape.cjs.map +1 -0
  221. package/dist/partner/auth-shape.d.cts +12 -0
  222. package/dist/partner/auth-shape.d.cts.map +1 -0
  223. package/dist/partner/auth-shape.d.ts +12 -0
  224. package/dist/partner/auth-shape.d.ts.map +1 -0
  225. package/dist/partner/auth-shape.js +36 -0
  226. package/dist/partner/auth-shape.js.map +1 -0
  227. package/dist/partner/client.cjs +255 -0
  228. package/dist/partner/client.cjs.map +1 -0
  229. package/dist/partner/client.d.cts +335 -0
  230. package/dist/partner/client.d.cts.map +1 -0
  231. package/dist/partner/client.d.ts +335 -0
  232. package/dist/partner/client.d.ts.map +1 -0
  233. package/dist/partner/client.js +255 -0
  234. package/dist/partner/client.js.map +1 -0
  235. package/dist/partner/endpoint-url.cjs +108 -0
  236. package/dist/partner/endpoint-url.cjs.map +1 -0
  237. package/dist/partner/endpoint-url.d.cts +72 -0
  238. package/dist/partner/endpoint-url.d.cts.map +1 -0
  239. package/dist/partner/endpoint-url.d.ts +72 -0
  240. package/dist/partner/endpoint-url.d.ts.map +1 -0
  241. package/dist/partner/endpoint-url.js +105 -0
  242. package/dist/partner/endpoint-url.js.map +1 -0
  243. package/dist/partner/in-memory.cjs +135 -0
  244. package/dist/partner/in-memory.cjs.map +1 -0
  245. package/dist/partner/in-memory.d.cts +99 -0
  246. package/dist/partner/in-memory.d.cts.map +1 -0
  247. package/dist/partner/in-memory.d.ts +99 -0
  248. package/dist/partner/in-memory.d.ts.map +1 -0
  249. package/dist/partner/in-memory.js +135 -0
  250. package/dist/partner/in-memory.js.map +1 -0
  251. package/dist/partner/index.cjs +18 -0
  252. package/dist/partner/index.d.cts +23 -0
  253. package/dist/partner/index.d.cts.map +1 -0
  254. package/dist/partner/index.d.ts +23 -0
  255. package/dist/partner/index.d.ts.map +1 -0
  256. package/dist/partner/index.js +7 -0
  257. package/dist/partner/raw.cjs +392 -0
  258. package/dist/partner/raw.cjs.map +1 -0
  259. package/dist/partner/raw.d.cts +223 -0
  260. package/dist/partner/raw.d.cts.map +1 -0
  261. package/dist/partner/raw.d.ts +223 -0
  262. package/dist/partner/raw.d.ts.map +1 -0
  263. package/dist/partner/raw.js +390 -0
  264. package/dist/partner/raw.js.map +1 -0
  265. package/dist/partner/redaction-placeholders.cjs +10 -0
  266. package/dist/partner/redaction-placeholders.cjs.map +1 -0
  267. package/dist/partner/redaction-placeholders.d.cts +5 -0
  268. package/dist/partner/redaction-placeholders.d.cts.map +1 -0
  269. package/dist/partner/redaction-placeholders.d.ts +5 -0
  270. package/dist/partner/redaction-placeholders.d.ts.map +1 -0
  271. package/dist/partner/redaction-placeholders.js +9 -0
  272. package/dist/partner/redaction-placeholders.js.map +1 -0
  273. package/dist/partner/redaction.cjs +267 -0
  274. package/dist/partner/redaction.cjs.map +1 -0
  275. package/dist/partner/redaction.d.cts +124 -0
  276. package/dist/partner/redaction.d.cts.map +1 -0
  277. package/dist/partner/redaction.d.ts +124 -0
  278. package/dist/partner/redaction.d.ts.map +1 -0
  279. package/dist/partner/redaction.js +257 -0
  280. package/dist/partner/redaction.js.map +1 -0
  281. package/dist/raw/encoding.cjs +74 -35
  282. package/dist/raw/encoding.cjs.map +1 -1
  283. package/dist/raw/encoding.js +74 -38
  284. package/dist/raw/encoding.js.map +1 -1
  285. package/dist/raw/index.cjs +740 -587
  286. package/dist/raw/index.cjs.map +1 -1
  287. package/dist/raw/index.d.cts +126 -19
  288. package/dist/raw/index.d.cts.map +1 -1
  289. package/dist/raw/index.d.ts +126 -19
  290. package/dist/raw/index.d.ts.map +1 -1
  291. package/dist/raw/index.js +736 -589
  292. package/dist/raw/index.js.map +1 -1
  293. package/dist/raw/url.cjs +111 -0
  294. package/dist/raw/url.cjs.map +1 -0
  295. package/dist/raw/url.d.cts +41 -0
  296. package/dist/raw/url.d.cts.map +1 -0
  297. package/dist/raw/url.d.ts +41 -0
  298. package/dist/raw/url.d.ts.map +1 -0
  299. package/dist/raw/url.js +110 -0
  300. package/dist/raw/url.js.map +1 -0
  301. package/dist/s3/index.cjs +355 -18
  302. package/dist/s3/index.cjs.map +1 -1
  303. package/dist/s3/index.d.cts +233 -5
  304. package/dist/s3/index.d.cts.map +1 -1
  305. package/dist/s3/index.d.ts +233 -5
  306. package/dist/s3/index.d.ts.map +1 -1
  307. package/dist/s3/index.js +351 -22
  308. package/dist/s3/index.js.map +1 -1
  309. package/dist/s3/sigv4.cjs +154 -0
  310. package/dist/s3/sigv4.cjs.map +1 -0
  311. package/dist/s3/sigv4.d.cts +43 -0
  312. package/dist/s3/sigv4.d.cts.map +1 -0
  313. package/dist/s3/sigv4.d.ts +43 -0
  314. package/dist/s3/sigv4.d.ts.map +1 -0
  315. package/dist/s3/sigv4.js +153 -0
  316. package/dist/s3/sigv4.js.map +1 -0
  317. package/dist/s3/validation.cjs +69 -0
  318. package/dist/s3/validation.cjs.map +1 -0
  319. package/dist/s3/validation.d.cts +43 -0
  320. package/dist/s3/validation.d.cts.map +1 -0
  321. package/dist/s3/validation.d.ts +43 -0
  322. package/dist/s3/validation.d.ts.map +1 -0
  323. package/dist/s3/validation.js +66 -0
  324. package/dist/s3/validation.js.map +1 -0
  325. package/dist/simulator/capabilities.cjs +63 -48
  326. package/dist/simulator/capabilities.cjs.map +1 -1
  327. package/dist/simulator/capabilities.js +63 -49
  328. package/dist/simulator/capabilities.js.map +1 -1
  329. package/dist/simulator/index.cjs +3114 -1547
  330. package/dist/simulator/index.cjs.map +1 -1
  331. package/dist/simulator/index.d.cts +186 -20
  332. package/dist/simulator/index.d.cts.map +1 -1
  333. package/dist/simulator/index.d.ts +186 -20
  334. package/dist/simulator/index.d.ts.map +1 -1
  335. package/dist/simulator/index.js +3098 -1545
  336. package/dist/simulator/index.js.map +1 -1
  337. package/dist/simulator/partner.cjs +719 -0
  338. package/dist/simulator/partner.cjs.map +1 -0
  339. package/dist/simulator/partner.d.cts +183 -0
  340. package/dist/simulator/partner.d.cts.map +1 -0
  341. package/dist/simulator/partner.d.ts +183 -0
  342. package/dist/simulator/partner.d.ts.map +1 -0
  343. package/dist/simulator/partner.js +718 -0
  344. package/dist/simulator/partner.js.map +1 -0
  345. package/dist/simulator/validation.cjs +772 -157
  346. package/dist/simulator/validation.cjs.map +1 -1
  347. package/dist/simulator/validation.d.cts +120 -21
  348. package/dist/simulator/validation.d.cts.map +1 -1
  349. package/dist/simulator/validation.d.ts +120 -21
  350. package/dist/simulator/validation.d.ts.map +1 -1
  351. package/dist/simulator/validation.js +755 -167
  352. package/dist/simulator/validation.js.map +1 -1
  353. package/dist/streams/collect.cjs +74 -24
  354. package/dist/streams/collect.cjs.map +1 -1
  355. package/dist/streams/collect.d.cts +14 -1
  356. package/dist/streams/collect.d.cts.map +1 -1
  357. package/dist/streams/collect.d.ts +14 -1
  358. package/dist/streams/collect.d.ts.map +1 -1
  359. package/dist/streams/collect.js +74 -25
  360. package/dist/streams/collect.js.map +1 -1
  361. package/dist/streams/file-source.cjs +287 -0
  362. package/dist/streams/file-source.cjs.map +1 -0
  363. package/dist/streams/file-source.d.cts +96 -0
  364. package/dist/streams/file-source.d.cts.map +1 -0
  365. package/dist/streams/file-source.d.ts +96 -0
  366. package/dist/streams/file-source.d.ts.map +1 -0
  367. package/dist/streams/file-source.js +286 -0
  368. package/dist/streams/file-source.js.map +1 -0
  369. package/dist/streams/hash.cjs +207 -115
  370. package/dist/streams/hash.cjs.map +1 -1
  371. package/dist/streams/hash.d.cts +5 -4
  372. package/dist/streams/hash.d.cts.map +1 -1
  373. package/dist/streams/hash.d.ts +5 -4
  374. package/dist/streams/hash.d.ts.map +1 -1
  375. package/dist/streams/hash.js +208 -95
  376. package/dist/streams/hash.js.map +1 -1
  377. package/dist/streams/index.cjs +12 -12
  378. package/dist/streams/index.d.cts +3 -3
  379. package/dist/streams/index.d.cts.map +1 -1
  380. package/dist/streams/index.d.ts +3 -3
  381. package/dist/streams/index.d.ts.map +1 -1
  382. package/dist/streams/index.js +3 -11
  383. package/dist/streams/progress.cjs +60 -46
  384. package/dist/streams/progress.cjs.map +1 -1
  385. package/dist/streams/progress.js +60 -46
  386. package/dist/streams/progress.js.map +1 -1
  387. package/dist/streams/source.cjs +317 -146
  388. package/dist/streams/source.cjs.map +1 -1
  389. package/dist/streams/source.d.cts +56 -18
  390. package/dist/streams/source.d.cts.map +1 -1
  391. package/dist/streams/source.d.ts +56 -18
  392. package/dist/streams/source.d.ts.map +1 -1
  393. package/dist/streams/source.js +313 -149
  394. package/dist/streams/source.js.map +1 -1
  395. package/dist/sync/actions/index.cjs +236 -184
  396. package/dist/sync/actions/index.cjs.map +1 -1
  397. package/dist/sync/actions/index.d.cts +29 -21
  398. package/dist/sync/actions/index.d.cts.map +1 -1
  399. package/dist/sync/actions/index.d.ts +29 -21
  400. package/dist/sync/actions/index.d.ts.map +1 -1
  401. package/dist/sync/actions/index.js +236 -190
  402. package/dist/sync/actions/index.js.map +1 -1
  403. package/dist/sync/b2-sha1-reader.cjs +152 -0
  404. package/dist/sync/b2-sha1-reader.cjs.map +1 -0
  405. package/dist/sync/b2-sha1-reader.d.cts +58 -0
  406. package/dist/sync/b2-sha1-reader.d.cts.map +1 -0
  407. package/dist/sync/b2-sha1-reader.d.ts +58 -0
  408. package/dist/sync/b2-sha1-reader.d.ts.map +1 -0
  409. package/dist/sync/b2-sha1-reader.js +149 -0
  410. package/dist/sync/b2-sha1-reader.js.map +1 -0
  411. package/dist/sync/download-staging.cjs +266 -0
  412. package/dist/sync/download-staging.cjs.map +1 -0
  413. package/dist/sync/download-staging.d.cts +55 -0
  414. package/dist/sync/download-staging.d.cts.map +1 -0
  415. package/dist/sync/download-staging.d.ts +55 -0
  416. package/dist/sync/download-staging.d.ts.map +1 -0
  417. package/dist/sync/download-staging.js +260 -0
  418. package/dist/sync/download-staging.js.map +1 -0
  419. package/dist/sync/filesystem-errors.cjs +32 -0
  420. package/dist/sync/filesystem-errors.cjs.map +1 -0
  421. package/dist/sync/filesystem-errors.d.cts +8 -0
  422. package/dist/sync/filesystem-errors.d.cts.map +1 -0
  423. package/dist/sync/filesystem-errors.d.ts +8 -0
  424. package/dist/sync/filesystem-errors.d.ts.map +1 -0
  425. package/dist/sync/filesystem-errors.js +32 -0
  426. package/dist/sync/filesystem-errors.js.map +1 -0
  427. package/dist/sync/filters.cjs +217 -0
  428. package/dist/sync/filters.cjs.map +1 -0
  429. package/dist/sync/filters.d.cts +51 -0
  430. package/dist/sync/filters.d.cts.map +1 -0
  431. package/dist/sync/filters.d.ts +51 -0
  432. package/dist/sync/filters.d.ts.map +1 -0
  433. package/dist/sync/filters.js +213 -0
  434. package/dist/sync/filters.js.map +1 -0
  435. package/dist/sync/index.cjs +39 -22
  436. package/dist/sync/index.d.cts +14 -9
  437. package/dist/sync/index.d.cts.map +1 -1
  438. package/dist/sync/index.d.ts +14 -9
  439. package/dist/sync/index.d.ts.map +1 -1
  440. package/dist/sync/index.js +9 -20
  441. package/dist/sync/local-file-identity.cjs +61 -0
  442. package/dist/sync/local-file-identity.cjs.map +1 -0
  443. package/dist/sync/local-file-identity.d.cts +37 -0
  444. package/dist/sync/local-file-identity.d.cts.map +1 -0
  445. package/dist/sync/local-file-identity.d.ts +37 -0
  446. package/dist/sync/local-file-identity.d.ts.map +1 -0
  447. package/dist/sync/local-file-identity.js +60 -0
  448. package/dist/sync/local-file-identity.js.map +1 -0
  449. package/dist/sync/local-file-io.cjs +369 -0
  450. package/dist/sync/local-file-io.cjs.map +1 -0
  451. package/dist/sync/local-file-io.d.cts +76 -0
  452. package/dist/sync/local-file-io.d.cts.map +1 -0
  453. package/dist/sync/local-file-io.d.ts +76 -0
  454. package/dist/sync/local-file-io.d.ts.map +1 -0
  455. package/dist/sync/local-file-io.js +365 -0
  456. package/dist/sync/local-file-io.js.map +1 -0
  457. package/dist/sync/local-filesystem-root.cjs +27 -0
  458. package/dist/sync/local-filesystem-root.cjs.map +1 -0
  459. package/dist/sync/local-filesystem-root.d.cts +18 -0
  460. package/dist/sync/local-filesystem-root.d.cts.map +1 -0
  461. package/dist/sync/local-filesystem-root.d.ts +18 -0
  462. package/dist/sync/local-filesystem-root.d.ts.map +1 -0
  463. package/dist/sync/local-filesystem-root.js +26 -0
  464. package/dist/sync/local-filesystem-root.js.map +1 -0
  465. package/dist/sync/local-sha1.cjs +110 -0
  466. package/dist/sync/local-sha1.cjs.map +1 -0
  467. package/dist/sync/local-sha1.d.cts +31 -0
  468. package/dist/sync/local-sha1.d.cts.map +1 -0
  469. package/dist/sync/local-sha1.d.ts +31 -0
  470. package/dist/sync/local-sha1.d.ts.map +1 -0
  471. package/dist/sync/local-sha1.js +109 -0
  472. package/dist/sync/local-sha1.js.map +1 -0
  473. package/dist/sync/pairing.cjs +118 -29
  474. package/dist/sync/pairing.cjs.map +1 -1
  475. package/dist/sync/pairing.d.cts +7 -2
  476. package/dist/sync/pairing.d.cts.map +1 -1
  477. package/dist/sync/pairing.d.ts +7 -2
  478. package/dist/sync/pairing.d.ts.map +1 -1
  479. package/dist/sync/pairing.js +120 -31
  480. package/dist/sync/pairing.js.map +1 -1
  481. package/dist/sync/path-order.cjs +30 -0
  482. package/dist/sync/path-order.cjs.map +1 -0
  483. package/dist/sync/path-order.d.cts +28 -0
  484. package/dist/sync/path-order.d.cts.map +1 -0
  485. package/dist/sync/path-order.d.ts +28 -0
  486. package/dist/sync/path-order.d.ts.map +1 -0
  487. package/dist/sync/path-order.js +29 -0
  488. package/dist/sync/path-order.js.map +1 -0
  489. package/dist/sync/path-safety.cjs +111 -0
  490. package/dist/sync/path-safety.cjs.map +1 -0
  491. package/dist/sync/path-safety.d.cts +78 -0
  492. package/dist/sync/path-safety.d.cts.map +1 -0
  493. package/dist/sync/path-safety.d.ts +78 -0
  494. package/dist/sync/path-safety.d.ts.map +1 -0
  495. package/dist/sync/path-safety.js +105 -0
  496. package/dist/sync/path-safety.js.map +1 -0
  497. package/dist/sync/paths.d.cts +19 -0
  498. package/dist/sync/paths.d.cts.map +1 -0
  499. package/dist/sync/paths.d.ts +19 -0
  500. package/dist/sync/paths.d.ts.map +1 -0
  501. package/dist/sync/policies/compare.cjs +391 -11
  502. package/dist/sync/policies/compare.cjs.map +1 -1
  503. package/dist/sync/policies/compare.d.cts +100 -2
  504. package/dist/sync/policies/compare.d.cts.map +1 -1
  505. package/dist/sync/policies/compare.d.ts +100 -2
  506. package/dist/sync/policies/compare.d.ts.map +1 -1
  507. package/dist/sync/policies/compare.js +389 -13
  508. package/dist/sync/policies/compare.js.map +1 -1
  509. package/dist/sync/policies/index.cjs +70 -65
  510. package/dist/sync/policies/index.cjs.map +1 -1
  511. package/dist/sync/policies/index.d.cts +35 -6
  512. package/dist/sync/policies/index.d.cts.map +1 -1
  513. package/dist/sync/policies/index.d.ts +35 -6
  514. package/dist/sync/policies/index.d.ts.map +1 -1
  515. package/dist/sync/policies/index.js +70 -65
  516. package/dist/sync/policies/index.js.map +1 -1
  517. package/dist/sync/prefix.cjs +96 -0
  518. package/dist/sync/prefix.cjs.map +1 -0
  519. package/dist/sync/prefix.d.cts +55 -0
  520. package/dist/sync/prefix.d.cts.map +1 -0
  521. package/dist/sync/prefix.d.ts +55 -0
  522. package/dist/sync/prefix.d.ts.map +1 -0
  523. package/dist/sync/prefix.js +92 -0
  524. package/dist/sync/prefix.js.map +1 -0
  525. package/dist/sync/regexp-safety.cjs +192 -0
  526. package/dist/sync/regexp-safety.cjs.map +1 -0
  527. package/dist/sync/regexp-safety.d.cts +29 -0
  528. package/dist/sync/regexp-safety.d.cts.map +1 -0
  529. package/dist/sync/regexp-safety.d.ts +29 -0
  530. package/dist/sync/regexp-safety.d.ts.map +1 -0
  531. package/dist/sync/regexp-safety.js +190 -0
  532. package/dist/sync/regexp-safety.js.map +1 -0
  533. package/dist/sync/scan-events.cjs +33 -0
  534. package/dist/sync/scan-events.cjs.map +1 -0
  535. package/dist/sync/scan-events.d.cts +17 -0
  536. package/dist/sync/scan-events.d.cts.map +1 -0
  537. package/dist/sync/scan-events.d.ts +17 -0
  538. package/dist/sync/scan-events.d.ts.map +1 -0
  539. package/dist/sync/scan-events.js +32 -0
  540. package/dist/sync/scan-events.js.map +1 -0
  541. package/dist/sync/scan-limit.cjs +33 -0
  542. package/dist/sync/scan-limit.cjs.map +1 -0
  543. package/dist/sync/scan-limit.d.cts +21 -0
  544. package/dist/sync/scan-limit.d.cts.map +1 -0
  545. package/dist/sync/scan-limit.d.ts +21 -0
  546. package/dist/sync/scan-limit.d.ts.map +1 -0
  547. package/dist/sync/scan-limit.js +31 -0
  548. package/dist/sync/scan-limit.js.map +1 -0
  549. package/dist/sync/scanners/b2.cjs +239 -55
  550. package/dist/sync/scanners/b2.cjs.map +1 -1
  551. package/dist/sync/scanners/b2.d.cts +26 -7
  552. package/dist/sync/scanners/b2.d.cts.map +1 -1
  553. package/dist/sync/scanners/b2.d.ts +26 -7
  554. package/dist/sync/scanners/b2.d.ts.map +1 -1
  555. package/dist/sync/scanners/b2.js +239 -55
  556. package/dist/sync/scanners/b2.js.map +1 -1
  557. package/dist/sync/scanners/local.cjs +215 -56
  558. package/dist/sync/scanners/local.cjs.map +1 -1
  559. package/dist/sync/scanners/local.d.cts +22 -7
  560. package/dist/sync/scanners/local.d.cts.map +1 -1
  561. package/dist/sync/scanners/local.d.ts +22 -7
  562. package/dist/sync/scanners/local.d.ts.map +1 -1
  563. package/dist/sync/scanners/local.js +216 -57
  564. package/dist/sync/scanners/local.js.map +1 -1
  565. package/dist/sync/sha1-metadata.cjs +94 -0
  566. package/dist/sync/sha1-metadata.cjs.map +1 -0
  567. package/dist/sync/sha1-metadata.d.cts +82 -0
  568. package/dist/sync/sha1-metadata.d.cts.map +1 -0
  569. package/dist/sync/sha1-metadata.d.ts +82 -0
  570. package/dist/sync/sha1-metadata.d.ts.map +1 -0
  571. package/dist/sync/sha1-metadata.js +89 -0
  572. package/dist/sync/sha1-metadata.js.map +1 -0
  573. package/dist/sync/sha1-options.cjs +23 -0
  574. package/dist/sync/sha1-options.cjs.map +1 -0
  575. package/dist/sync/sha1-options.d.cts +14 -0
  576. package/dist/sync/sha1-options.d.cts.map +1 -0
  577. package/dist/sync/sha1-options.d.ts +14 -0
  578. package/dist/sync/sha1-options.d.ts.map +1 -0
  579. package/dist/sync/sha1-options.js +21 -0
  580. package/dist/sync/sha1-options.js.map +1 -0
  581. package/dist/sync/synchronizer.cjs +783 -197
  582. package/dist/sync/synchronizer.cjs.map +1 -1
  583. package/dist/sync/synchronizer.d.cts +47 -1
  584. package/dist/sync/synchronizer.d.cts.map +1 -1
  585. package/dist/sync/synchronizer.d.ts +47 -1
  586. package/dist/sync/synchronizer.d.ts.map +1 -1
  587. package/dist/sync/synchronizer.js +780 -173
  588. package/dist/sync/synchronizer.js.map +1 -1
  589. package/dist/sync/types.d.cts +208 -16
  590. package/dist/sync/types.d.cts.map +1 -1
  591. package/dist/sync/types.d.ts +208 -16
  592. package/dist/sync/types.d.ts.map +1 -1
  593. package/dist/types/auth.cjs +80 -56
  594. package/dist/types/auth.cjs.map +1 -1
  595. package/dist/types/auth.d.cts +71 -9
  596. package/dist/types/auth.d.cts.map +1 -1
  597. package/dist/types/auth.d.ts +71 -9
  598. package/dist/types/auth.d.ts.map +1 -1
  599. package/dist/types/auth.js +81 -57
  600. package/dist/types/auth.js.map +1 -1
  601. package/dist/types/backup.d.cts +80 -0
  602. package/dist/types/backup.d.cts.map +1 -0
  603. package/dist/types/backup.d.ts +80 -0
  604. package/dist/types/backup.d.ts.map +1 -0
  605. package/dist/types/bucket.cjs +74 -38
  606. package/dist/types/bucket.cjs.map +1 -1
  607. package/dist/types/bucket.d.cts +4 -2
  608. package/dist/types/bucket.d.cts.map +1 -1
  609. package/dist/types/bucket.d.ts +4 -2
  610. package/dist/types/bucket.d.ts.map +1 -1
  611. package/dist/types/bucket.js +75 -41
  612. package/dist/types/bucket.js.map +1 -1
  613. package/dist/types/download.cjs +62 -0
  614. package/dist/types/download.cjs.map +1 -0
  615. package/dist/types/download.d.cts +98 -0
  616. package/dist/types/download.d.cts.map +1 -1
  617. package/dist/types/download.d.ts +98 -0
  618. package/dist/types/download.d.ts.map +1 -1
  619. package/dist/types/download.js +61 -0
  620. package/dist/types/download.js.map +1 -0
  621. package/dist/types/encryption.cjs +194 -328
  622. package/dist/types/encryption.cjs.map +1 -1
  623. package/dist/types/encryption.d.cts +48 -0
  624. package/dist/types/encryption.d.cts.map +1 -1
  625. package/dist/types/encryption.d.ts +48 -0
  626. package/dist/types/encryption.d.ts.map +1 -1
  627. package/dist/types/encryption.js +192 -311
  628. package/dist/types/encryption.js.map +1 -1
  629. package/dist/types/errors.cjs +56 -0
  630. package/dist/types/errors.cjs.map +1 -0
  631. package/dist/types/errors.d.cts +13 -4
  632. package/dist/types/errors.d.cts.map +1 -1
  633. package/dist/types/errors.d.ts +13 -4
  634. package/dist/types/errors.d.ts.map +1 -1
  635. package/dist/types/errors.js +56 -0
  636. package/dist/types/errors.js.map +1 -0
  637. package/dist/types/file.cjs +36 -19
  638. package/dist/types/file.cjs.map +1 -1
  639. package/dist/types/file.d.cts +17 -4
  640. package/dist/types/file.d.cts.map +1 -1
  641. package/dist/types/file.d.ts +17 -4
  642. package/dist/types/file.d.ts.map +1 -1
  643. package/dist/types/file.js +37 -21
  644. package/dist/types/file.js.map +1 -1
  645. package/dist/types/ids.cjs +83 -9
  646. package/dist/types/ids.cjs.map +1 -1
  647. package/dist/types/ids.d.cts +32 -0
  648. package/dist/types/ids.d.cts.map +1 -1
  649. package/dist/types/ids.d.ts +32 -0
  650. package/dist/types/ids.d.ts.map +1 -1
  651. package/dist/types/ids.js +82 -16
  652. package/dist/types/ids.js.map +1 -1
  653. package/dist/types/index.d.cts +18 -13
  654. package/dist/types/index.d.cts.map +1 -1
  655. package/dist/types/index.d.ts +18 -13
  656. package/dist/types/index.d.ts.map +1 -1
  657. package/dist/types/key.d.cts +44 -8
  658. package/dist/types/key.d.cts.map +1 -1
  659. package/dist/types/key.d.ts +44 -8
  660. package/dist/types/key.d.ts.map +1 -1
  661. package/dist/types/lock.cjs +33 -13
  662. package/dist/types/lock.cjs.map +1 -1
  663. package/dist/types/lock.d.cts +14 -0
  664. package/dist/types/lock.d.cts.map +1 -1
  665. package/dist/types/lock.d.ts +14 -0
  666. package/dist/types/lock.d.ts.map +1 -1
  667. package/dist/types/lock.js +34 -15
  668. package/dist/types/lock.js.map +1 -1
  669. package/dist/types/notifications.cjs +44 -22
  670. package/dist/types/notifications.cjs.map +1 -1
  671. package/dist/types/notifications.d.cts +5 -3
  672. package/dist/types/notifications.d.cts.map +1 -1
  673. package/dist/types/notifications.d.ts +5 -3
  674. package/dist/types/notifications.d.ts.map +1 -1
  675. package/dist/types/notifications.js +45 -23
  676. package/dist/types/notifications.js.map +1 -1
  677. package/dist/types/partner.cjs +32 -0
  678. package/dist/types/partner.cjs.map +1 -0
  679. package/dist/types/partner.d.cts +394 -0
  680. package/dist/types/partner.d.cts.map +1 -0
  681. package/dist/types/partner.d.ts +394 -0
  682. package/dist/types/partner.d.ts.map +1 -0
  683. package/dist/types/partner.js +29 -0
  684. package/dist/types/partner.js.map +1 -0
  685. package/dist/types/upload.d.cts +53 -6
  686. package/dist/types/upload.d.cts.map +1 -1
  687. package/dist/types/upload.d.ts +53 -6
  688. package/dist/types/upload.d.ts.map +1 -1
  689. package/dist/upload/abort-scope.cjs +46 -0
  690. package/dist/upload/abort-scope.cjs.map +1 -0
  691. package/dist/upload/abort-scope.d.cts +26 -0
  692. package/dist/upload/abort-scope.d.cts.map +1 -0
  693. package/dist/upload/abort-scope.d.ts +26 -0
  694. package/dist/upload/abort-scope.d.ts.map +1 -0
  695. package/dist/upload/abort-scope.js +45 -0
  696. package/dist/upload/abort-scope.js.map +1 -0
  697. package/dist/upload/cancel.cjs +183 -8
  698. package/dist/upload/cancel.cjs.map +1 -1
  699. package/dist/upload/cancel.d.cts +110 -2
  700. package/dist/upload/cancel.d.cts.map +1 -1
  701. package/dist/upload/cancel.d.ts +110 -2
  702. package/dist/upload/cancel.d.ts.map +1 -1
  703. package/dist/upload/cancel.js +178 -9
  704. package/dist/upload/cancel.js.map +1 -1
  705. package/dist/upload/concurrency.cjs +79 -52
  706. package/dist/upload/concurrency.cjs.map +1 -1
  707. package/dist/upload/concurrency.js +79 -53
  708. package/dist/upload/concurrency.js.map +1 -1
  709. package/dist/upload/finish.cjs +54 -0
  710. package/dist/upload/finish.cjs.map +1 -0
  711. package/dist/upload/finish.d.cts +26 -0
  712. package/dist/upload/finish.d.cts.map +1 -0
  713. package/dist/upload/finish.d.ts +26 -0
  714. package/dist/upload/finish.d.ts.map +1 -0
  715. package/dist/upload/finish.js +54 -0
  716. package/dist/upload/finish.js.map +1 -0
  717. package/dist/upload/large.cjs +305 -218
  718. package/dist/upload/large.cjs.map +1 -1
  719. package/dist/upload/large.d.cts +90 -9
  720. package/dist/upload/large.d.cts.map +1 -1
  721. package/dist/upload/large.d.ts +90 -9
  722. package/dist/upload/large.d.ts.map +1 -1
  723. package/dist/upload/large.js +305 -218
  724. package/dist/upload/large.js.map +1 -1
  725. package/dist/upload/options.cjs +28 -0
  726. package/dist/upload/options.cjs.map +1 -0
  727. package/dist/upload/options.d.cts +116 -0
  728. package/dist/upload/options.d.cts.map +1 -0
  729. package/dist/upload/options.d.ts +116 -0
  730. package/dist/upload/options.d.ts.map +1 -0
  731. package/dist/upload/options.js +27 -0
  732. package/dist/upload/options.js.map +1 -0
  733. package/dist/upload/resume.cjs +334 -33
  734. package/dist/upload/resume.cjs.map +1 -1
  735. package/dist/upload/resume.d.cts +84 -12
  736. package/dist/upload/resume.d.cts.map +1 -1
  737. package/dist/upload/resume.d.ts +84 -12
  738. package/dist/upload/resume.d.ts.map +1 -1
  739. package/dist/upload/resume.js +331 -33
  740. package/dist/upload/resume.js.map +1 -1
  741. package/dist/upload/retry.cjs +191 -0
  742. package/dist/upload/retry.cjs.map +1 -0
  743. package/dist/upload/retry.d.cts +127 -0
  744. package/dist/upload/retry.d.cts.map +1 -0
  745. package/dist/upload/retry.d.ts +127 -0
  746. package/dist/upload/retry.d.ts.map +1 -0
  747. package/dist/upload/retry.js +187 -0
  748. package/dist/upload/retry.js.map +1 -0
  749. package/dist/upload/single.cjs +69 -44
  750. package/dist/upload/single.cjs.map +1 -1
  751. package/dist/upload/single.d.cts +8 -1
  752. package/dist/upload/single.d.cts.map +1 -1
  753. package/dist/upload/single.d.ts +8 -1
  754. package/dist/upload/single.d.ts.map +1 -1
  755. package/dist/upload/single.js +69 -44
  756. package/dist/upload/single.js.map +1 -1
  757. package/dist/upload/stream.cjs +319 -193
  758. package/dist/upload/stream.cjs.map +1 -1
  759. package/dist/upload/stream.d.cts +9 -1
  760. package/dist/upload/stream.d.cts.map +1 -1
  761. package/dist/upload/stream.d.ts +9 -1
  762. package/dist/upload/stream.d.ts.map +1 -1
  763. package/dist/upload/stream.js +318 -192
  764. package/dist/upload/stream.js.map +1 -1
  765. package/dist/util/abort.cjs +114 -0
  766. package/dist/util/abort.cjs.map +1 -0
  767. package/dist/util/abort.d.cts +65 -0
  768. package/dist/util/abort.d.cts.map +1 -0
  769. package/dist/util/abort.d.ts +65 -0
  770. package/dist/util/abort.d.ts.map +1 -0
  771. package/dist/util/abort.js +109 -0
  772. package/dist/util/abort.js.map +1 -0
  773. package/dist/util/best-effort.cjs +42 -8
  774. package/dist/util/best-effort.cjs.map +1 -1
  775. package/dist/util/best-effort.d.cts +2 -1
  776. package/dist/util/best-effort.d.cts.map +1 -1
  777. package/dist/util/best-effort.d.ts +2 -1
  778. package/dist/util/best-effort.d.ts.map +1 -1
  779. package/dist/util/best-effort.js +43 -9
  780. package/dist/util/best-effort.js.map +1 -1
  781. package/dist/util/bytes.cjs +23 -0
  782. package/dist/util/bytes.cjs.map +1 -0
  783. package/dist/util/bytes.d.cts +15 -0
  784. package/dist/util/bytes.d.cts.map +1 -0
  785. package/dist/util/bytes.d.ts +15 -0
  786. package/dist/util/bytes.d.ts.map +1 -0
  787. package/dist/util/bytes.js +23 -0
  788. package/dist/util/bytes.js.map +1 -0
  789. package/dist/util/crypto.cjs +68 -0
  790. package/dist/util/crypto.cjs.map +1 -0
  791. package/dist/util/crypto.d.cts +26 -0
  792. package/dist/util/crypto.d.cts.map +1 -0
  793. package/dist/util/crypto.d.ts +26 -0
  794. package/dist/util/crypto.d.ts.map +1 -0
  795. package/dist/util/crypto.js +66 -0
  796. package/dist/util/crypto.js.map +1 -0
  797. package/dist/util/defaults.cjs +28 -9
  798. package/dist/util/defaults.cjs.map +1 -1
  799. package/dist/util/defaults.d.cts +2 -0
  800. package/dist/util/defaults.d.cts.map +1 -1
  801. package/dist/util/defaults.d.ts +2 -0
  802. package/dist/util/defaults.d.ts.map +1 -1
  803. package/dist/util/defaults.js +28 -11
  804. package/dist/util/defaults.js.map +1 -1
  805. package/dist/util/error-reason.cjs +41 -0
  806. package/dist/util/error-reason.cjs.map +1 -0
  807. package/dist/util/error-reason.d.cts +9 -0
  808. package/dist/util/error-reason.d.cts.map +1 -0
  809. package/dist/util/error-reason.d.ts +9 -0
  810. package/dist/util/error-reason.d.ts.map +1 -0
  811. package/dist/util/error-reason.js +41 -0
  812. package/dist/util/error-reason.js.map +1 -0
  813. package/dist/util/http.cjs +23 -0
  814. package/dist/util/http.cjs.map +1 -0
  815. package/dist/util/http.d.cts +13 -0
  816. package/dist/util/http.d.cts.map +1 -0
  817. package/dist/util/http.d.ts +13 -0
  818. package/dist/util/http.d.ts.map +1 -0
  819. package/dist/util/http.js +23 -0
  820. package/dist/util/http.js.map +1 -0
  821. package/dist/util/md5.cjs +211 -0
  822. package/dist/util/md5.cjs.map +1 -0
  823. package/dist/util/md5.d.cts +43 -0
  824. package/dist/util/md5.d.cts.map +1 -0
  825. package/dist/util/md5.d.ts +43 -0
  826. package/dist/util/md5.d.ts.map +1 -0
  827. package/dist/util/md5.js +209 -0
  828. package/dist/util/md5.js.map +1 -0
  829. package/dist/util/normalize.cjs +66 -7
  830. package/dist/util/normalize.cjs.map +1 -1
  831. package/dist/util/normalize.d.cts +7 -7
  832. package/dist/util/normalize.d.cts.map +1 -1
  833. package/dist/util/normalize.d.ts +7 -7
  834. package/dist/util/normalize.d.ts.map +1 -1
  835. package/dist/util/normalize.js +67 -10
  836. package/dist/util/normalize.js.map +1 -1
  837. package/dist/util/paginator.cjs +69 -14
  838. package/dist/util/paginator.cjs.map +1 -1
  839. package/dist/util/paginator.d.cts +3 -1
  840. package/dist/util/paginator.d.cts.map +1 -1
  841. package/dist/util/paginator.d.ts +3 -1
  842. package/dist/util/paginator.d.ts.map +1 -1
  843. package/dist/util/paginator.js +70 -16
  844. package/dist/util/paginator.js.map +1 -1
  845. package/dist/util/plan-ranges.cjs +47 -22
  846. package/dist/util/plan-ranges.cjs.map +1 -1
  847. package/dist/util/plan-ranges.js +48 -24
  848. package/dist/util/plan-ranges.js.map +1 -1
  849. package/dist/util/sha1.cjs +27 -0
  850. package/dist/util/sha1.cjs.map +1 -0
  851. package/dist/util/sha1.d.cts +17 -0
  852. package/dist/util/sha1.d.cts.map +1 -0
  853. package/dist/util/sha1.d.ts +17 -0
  854. package/dist/util/sha1.d.ts.map +1 -0
  855. package/dist/util/sha1.js +26 -0
  856. package/dist/util/sha1.js.map +1 -0
  857. package/dist/util/text-codec.cjs +29 -5
  858. package/dist/util/text-codec.cjs.map +1 -1
  859. package/dist/util/text-codec.js +30 -7
  860. package/dist/util/text-codec.js.map +1 -1
  861. package/dist/util/to-error.cjs +18 -4
  862. package/dist/util/to-error.cjs.map +1 -1
  863. package/dist/util/to-error.js +19 -5
  864. package/dist/util/to-error.js.map +1 -1
  865. package/dist/version.cjs +17 -5
  866. package/dist/version.cjs.map +1 -1
  867. package/dist/version.d.cts +3 -3
  868. package/dist/version.d.ts +3 -3
  869. package/dist/version.js +19 -6
  870. package/dist/version.js.map +1 -1
  871. package/package.json +45 -20
  872. package/dist/auth/index.cjs.map +0 -1
  873. package/dist/auth/index.js.map +0 -1
  874. package/dist/index.cjs.map +0 -1
  875. package/dist/index.js.map +0 -1
  876. package/dist/notifications/index.cjs.map +0 -1
  877. package/dist/notifications/index.js.map +0 -1
  878. package/dist/package.json.cjs +0 -9
  879. package/dist/package.json.cjs.map +0 -1
  880. package/dist/package.json.js +0 -9
  881. package/dist/package.json.js.map +0 -1
  882. package/dist/streams/index.cjs.map +0 -1
  883. package/dist/streams/index.js.map +0 -1
  884. package/dist/sync/index.cjs.map +0 -1
  885. package/dist/sync/index.js.map +0 -1
@@ -1,143 +1,477 @@
1
- import { classifyError, ExpiredAuthTokenError, B2Error, NetworkError } from "../errors/index.js";
2
- import { DEFAULT_RETRY_OPTIONS, sleep, computeBackoff } from "./retry.js";
1
+ import { B2Error, B2RedirectError, B2SsrfError, ExpiredAuthTokenError, NetworkError, classifyError } from "../errors/index.js";
2
+ import { abortReason, raceWithAbort, throwIfSignalAborted } from "../util/abort.js";
3
+ import { DEFAULT_RETRY_OPTIONS, computeBackoff, sleep } from "./retry.js";
3
4
  import { UrlGuard } from "./url-guard.js";
4
5
  import { getUserAgent } from "./user-agent.js";
5
- class FetchTransport {
6
- /** User-Agent string sent with every request. */
7
- userAgent;
8
- /** SSRF allow-list applied to every outgoing URL. Mutable so `B2Client.authorize()` can lock it down post-auth. */
9
- urlGuard;
10
- /**
11
- * Creates a new FetchTransport.
12
- * @param options - Optional configuration: custom User-Agent prefix and SSRF guard.
13
- */
14
- constructor(options) {
15
- this.userAgent = getUserAgent(options?.userAgent);
16
- this.urlGuard = options?.urlGuard ?? new UrlGuard();
17
- }
18
- /**
19
- * Sends the request using the global `fetch` function.
20
- * @param request - The HTTP request to execute.
21
- *
22
- * @returns The HTTP response.
23
- *
24
- * @throws B2SsrfError when the URL fails the configured SSRF guard.
25
- */
26
- async send(request) {
27
- this.urlGuard.check(request.url);
28
- const headers = new Headers(request.headers);
29
- if (!headers.has("User-Agent")) {
30
- headers.set("User-Agent", this.userAgent);
31
- }
32
- const response = await fetch(request.url, {
33
- method: request.method,
34
- headers,
35
- body: request.body ?? null,
36
- ...request.signal !== void 0 ? { signal: request.signal } : {}
37
- });
38
- return {
39
- status: response.status,
40
- headers: response.headers,
41
- body: response.body,
42
- json: () => response.json(),
43
- text: () => response.text(),
44
- arrayBuffer: () => response.arrayBuffer()
45
- };
46
- }
47
- }
48
- class RetryTransport {
49
- /** The wrapped transport that performs actual HTTP requests. */
50
- inner;
51
- /** Resolved retry options (defaults merged with user overrides). */
52
- options;
53
- /** Optional callback to refresh auth credentials on 401 — returns the fresh token. */
54
- onReauth;
55
- /** Sleep implementation used between retries; injectable for tests. */
56
- sleepImpl;
57
- /**
58
- * Creates a new RetryTransport.
59
- * @param opts - Retry transport configuration.
60
- */
61
- constructor(opts) {
62
- this.inner = opts.transport;
63
- this.options = { ...DEFAULT_RETRY_OPTIONS, ...opts.retry };
64
- if (opts.onReauth !== void 0) this.onReauth = opts.onReauth;
65
- this.sleepImpl = opts.sleepImpl ?? sleep;
66
- }
67
- /**
68
- * Sends the request with automatic retry on transient failures.
69
- * On expired auth tokens, calls {@link RetryTransportOptions.onReauth} and retries.
70
- * @param originalRequest - The HTTP request to execute. The caller's
71
- * reference is not mutated; on reauth, a copy with a refreshed
72
- * Authorization header is sent.
73
- *
74
- * @returns The HTTP response.
75
- */
76
- async send(originalRequest) {
77
- let request = originalRequest;
78
- let lastError;
79
- for (let attempt = 0; attempt <= this.options.maxRetries; attempt++) {
80
- if (attempt > 0 && lastError) {
81
- const retryAfter = lastError instanceof NetworkError ? void 0 : lastError.retryAfter;
82
- const delay = computeBackoff(attempt - 1, this.options, retryAfter);
83
- await this.sleepImpl(delay, request.signal);
84
- }
85
- try {
86
- const response = await this.inner.send(request);
87
- if (response.status >= 200 && response.status < 300) {
88
- return response;
89
- }
90
- let errorBody;
91
- try {
92
- errorBody = await response.json();
93
- } catch {
94
- errorBody = {
95
- status: response.status,
96
- code: "internal_error",
97
- message: `HTTP ${response.status}`
98
- };
99
- }
100
- const retryAfterHeader = response.headers.get("Retry-After");
101
- const retryAfterSec = retryAfterHeader ? Number.parseInt(retryAfterHeader, 10) : void 0;
102
- const requestId = response.headers.get("X-Bz-Request-Id") ?? void 0;
103
- const error = classifyError(errorBody, {
104
- ...retryAfterSec !== void 0 ? { retryAfter: retryAfterSec } : {},
105
- ...requestId !== void 0 ? { requestId } : {}
106
- });
107
- if (error instanceof ExpiredAuthTokenError && this.onReauth) {
108
- const freshToken = await this.onReauth();
109
- request = {
110
- ...request,
111
- headers: { ...request.headers ?? {}, Authorization: freshToken }
112
- };
113
- continue;
114
- }
115
- if (!error.retryable || attempt === this.options.maxRetries) {
116
- throw error;
117
- }
118
- lastError = error;
119
- } catch (err) {
120
- if (err instanceof B2Error || err instanceof NetworkError) {
121
- throw err;
122
- }
123
- if (err instanceof DOMException && err.name === "AbortError") {
124
- throw err;
125
- }
126
- const networkErr = new NetworkError(
127
- err instanceof Error ? err.message : "Network error",
128
- err
129
- );
130
- if (attempt === this.options.maxRetries) {
131
- throw networkErr;
132
- }
133
- lastError = networkErr;
134
- }
135
- }
136
- throw lastError ?? new NetworkError("Max retries exceeded");
137
- }
138
- }
139
- export {
140
- FetchTransport,
141
- RetryTransport
6
+ //#region src/http/transport.ts
7
+ var REDIRECT_STATUSES = /* @__PURE__ */ new Set([
8
+ 301,
9
+ 302,
10
+ 303,
11
+ 307,
12
+ 308
13
+ ]);
14
+ var MAX_SAME_ORIGIN_REDIRECTS = 5;
15
+ /**
16
+ * Returns the URL guard exposed by `transport`, if it implements
17
+ * {@link UrlGuardedTransport}.
18
+ *
19
+ * @param transport - Transport to inspect.
20
+ *
21
+ * @returns The exposed URL guard, or undefined for unguarded transports.
22
+ */
23
+ function getTransportUrlGuard(transport) {
24
+ const candidate = transport;
25
+ return candidate.urlGuard instanceof UrlGuard ? candidate.urlGuard : void 0;
26
+ }
27
+ /**
28
+ * Default transport implementation using the global `fetch` API.
29
+ * Automatically sets the User-Agent header on each request and applies the
30
+ * SSRF {@link UrlGuard} (if configured) before opening the connection.
31
+ * Redirect following is disabled so redirected URLs cannot bypass the guard or
32
+ * receive credential-bearing headers without an explicit checked request.
33
+ */
34
+ var FetchTransport = class {
35
+ /** User-Agent string sent with every request. */
36
+ userAgent;
37
+ /** Whether same-origin GET/HEAD redirects should be followed after guard checks. */
38
+ followSameOriginRedirects;
39
+ /** SSRF allow-list applied to every outgoing URL. Mutable so `B2Client.authorize()` can lock it down post-auth. */
40
+ urlGuard;
41
+ /**
42
+ * Creates a new FetchTransport.
43
+ * @param options - Optional configuration: custom User-Agent prefix and SSRF guard.
44
+ */
45
+ constructor(options) {
46
+ this.userAgent = getUserAgent(options?.userAgent);
47
+ this.followSameOriginRedirects = options?.followSameOriginRedirects ?? true;
48
+ this.urlGuard = options?.urlGuard ?? new UrlGuard();
49
+ }
50
+ /**
51
+ * Sends the request using the global `fetch` function.
52
+ * @param request - The HTTP request to execute.
53
+ *
54
+ * @returns The HTTP response.
55
+ *
56
+ * @throws B2SsrfError when the URL fails the configured SSRF guard.
57
+ * @throws B2RedirectError when a response attempts to redirect.
58
+ */
59
+ async send(request) {
60
+ let currentRequest = request;
61
+ let redirectCount = 0;
62
+ while (true) {
63
+ this.urlGuard.check(currentRequest.url);
64
+ const headers = new Headers(currentRequest.headers);
65
+ if (!headers.has("User-Agent")) headers.set("User-Agent", this.userAgent);
66
+ const timeoutScope = createRequestTimeoutScope(currentRequest);
67
+ let response;
68
+ try {
69
+ response = await fetch(currentRequest.url, {
70
+ method: currentRequest.method,
71
+ headers,
72
+ body: currentRequest.body ?? null,
73
+ redirect: "manual",
74
+ ...timeoutScope.signal !== void 0 ? { signal: timeoutScope.signal } : {}
75
+ });
76
+ } catch (err) {
77
+ timeoutScope.dispose();
78
+ if (timeoutScope.timedOut) throw createRequestTimeoutError(timeoutScope);
79
+ throw err;
80
+ }
81
+ if (isBlockedRedirect(response)) {
82
+ const location = response.headers.get("Location");
83
+ if (this.followSameOriginRedirects && location !== null && redirectCount < MAX_SAME_ORIGIN_REDIRECTS && canFollowSameOriginRedirect(currentRequest, location)) {
84
+ const nextUrl = new URL(location, currentRequest.url).toString();
85
+ await cancelResponseBody(response);
86
+ timeoutScope.dispose();
87
+ this.urlGuard.check(nextUrl);
88
+ currentRequest = {
89
+ ...currentRequest,
90
+ url: nextUrl
91
+ };
92
+ redirectCount += 1;
93
+ continue;
94
+ }
95
+ await cancelResponseBody(response);
96
+ timeoutScope.dispose();
97
+ throw new B2RedirectError(currentRequest.url, response.status, location);
98
+ }
99
+ return createTimedHttpResponse(response, timeoutScope);
100
+ }
101
+ }
142
102
  };
143
- //# sourceMappingURL=transport.js.map
103
+ function createRequestTimeoutScope(request) {
104
+ const timeoutMs = request.retry?.requestTimeoutMs ?? DEFAULT_RETRY_OPTIONS.requestTimeoutMs;
105
+ if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
106
+ const scope = {
107
+ timeoutMs: 0,
108
+ timedOut: false,
109
+ reset() {},
110
+ dispose() {}
111
+ };
112
+ if (request.signal !== void 0) return {
113
+ ...scope,
114
+ signal: request.signal
115
+ };
116
+ return scope;
117
+ }
118
+ const controller = new AbortController();
119
+ let timedOut = false;
120
+ let timer;
121
+ const abortFromUpstream = () => {
122
+ clearTimeout(timer);
123
+ controller.abort(request.signal?.reason ?? new DOMException("Aborted", "AbortError"));
124
+ };
125
+ const armTimer = () => {
126
+ const nextTimer = setTimeout(() => {
127
+ timedOut = true;
128
+ controller.abort(new DOMException("HTTP request timed out", "TimeoutError"));
129
+ }, timeoutMs);
130
+ unrefTimer(nextTimer);
131
+ return nextTimer;
132
+ };
133
+ timer = armTimer();
134
+ const reset = () => {
135
+ if (timedOut || controller.signal.aborted) return;
136
+ clearTimeout(timer);
137
+ timer = armTimer();
138
+ };
139
+ if (request.signal?.aborted === true) {
140
+ clearTimeout(timer);
141
+ abortFromUpstream();
142
+ } else request.signal?.addEventListener("abort", abortFromUpstream, { once: true });
143
+ return {
144
+ signal: controller.signal,
145
+ timeoutMs,
146
+ get timedOut() {
147
+ return timedOut;
148
+ },
149
+ reset,
150
+ dispose() {
151
+ clearTimeout(timer);
152
+ request.signal?.removeEventListener("abort", abortFromUpstream);
153
+ }
154
+ };
155
+ }
156
+ function unrefTimer(timer) {
157
+ const maybeUnref = timer.unref;
158
+ if (typeof maybeUnref === "function") maybeUnref.call(timer);
159
+ }
160
+ function createRequestTimeoutError(scope) {
161
+ return new DOMException(`HTTP request timed out after ${scope.timeoutMs} ms`, "TimeoutError");
162
+ }
163
+ function createTimedHttpResponse(response, timeoutScope) {
164
+ const body = response.body;
165
+ if (body === null) timeoutScope.dispose();
166
+ let timedBody;
167
+ return {
168
+ status: response.status,
169
+ headers: response.headers,
170
+ get body() {
171
+ if (body === null) return null;
172
+ timedBody ??= createTimedResponseBody(body, timeoutScope);
173
+ return timedBody;
174
+ },
175
+ json: () => readTimedResponseBody(timeoutScope, response, () => response.json()),
176
+ text: () => readTimedResponseBody(timeoutScope, response, () => response.text()),
177
+ arrayBuffer: () => readTimedResponseBody(timeoutScope, response, () => response.arrayBuffer())
178
+ };
179
+ }
180
+ async function readTimedResponseBody(timeoutScope, response, read) {
181
+ try {
182
+ return await raceBodyReadWithAbort(timeoutScope, read(), (reason) => cancelResponseBody(response, reason));
183
+ } catch (err) {
184
+ if (timeoutScope.timedOut) throw createRequestTimeoutError(timeoutScope);
185
+ throw err;
186
+ } finally {
187
+ timeoutScope.dispose();
188
+ }
189
+ }
190
+ function createTimedResponseBody(body, timeoutScope) {
191
+ let reader;
192
+ let disposed = false;
193
+ const dispose = () => {
194
+ if (disposed) return;
195
+ disposed = true;
196
+ timeoutScope.dispose();
197
+ };
198
+ return new ReadableStream({
199
+ async pull(controller) {
200
+ reader ??= body.getReader();
201
+ try {
202
+ const result = await raceBodyReadWithAbort(timeoutScope, reader.read(), (reason) => reader?.cancel(reason));
203
+ if (result.done) {
204
+ dispose();
205
+ controller.close();
206
+ return;
207
+ }
208
+ timeoutScope.reset();
209
+ controller.enqueue(result.value);
210
+ } catch (err) {
211
+ dispose();
212
+ if (timeoutScope.timedOut) {
213
+ controller.error(createRequestTimeoutError(timeoutScope));
214
+ return;
215
+ }
216
+ controller.error(err);
217
+ }
218
+ },
219
+ async cancel(reason) {
220
+ dispose();
221
+ try {
222
+ if (reader !== void 0) {
223
+ await reader.cancel(reason);
224
+ return;
225
+ }
226
+ await body.cancel(reason);
227
+ } catch {}
228
+ }
229
+ });
230
+ }
231
+ async function raceBodyReadWithAbort(timeoutScope, read, abortCleanup) {
232
+ const signal = timeoutScope.signal;
233
+ if (signal === void 0) return read;
234
+ if (signal.aborted) {
235
+ read.catch(() => {});
236
+ const reason = abortReason(signal);
237
+ await runAbortCleanup(abortCleanup, reason);
238
+ throw reason;
239
+ }
240
+ let removeAbortListener;
241
+ const abort = new Promise((_, reject) => {
242
+ const onAbort = () => {
243
+ const reason = abortReason(signal);
244
+ read.catch(() => {});
245
+ reject(reason);
246
+ runAbortCleanup(abortCleanup, reason);
247
+ };
248
+ signal.addEventListener("abort", onAbort, { once: true });
249
+ removeAbortListener = () => signal.removeEventListener("abort", onAbort);
250
+ });
251
+ try {
252
+ return await Promise.race([read, abort]);
253
+ } finally {
254
+ removeAbortListener?.();
255
+ }
256
+ }
257
+ async function runAbortCleanup(abortCleanup, reason) {
258
+ try {
259
+ await abortCleanup?.(reason);
260
+ } catch {}
261
+ }
262
+ function isBlockedRedirect(response) {
263
+ return response.type === "opaqueredirect" || REDIRECT_STATUSES.has(response.status);
264
+ }
265
+ function canFollowSameOriginRedirect(request, location) {
266
+ if (request.method !== "GET" && request.method !== "HEAD") return false;
267
+ try {
268
+ return new URL(request.url).origin === new URL(location, request.url).origin;
269
+ } catch {
270
+ return false;
271
+ }
272
+ }
273
+ async function cancelResponseBody(response, reason) {
274
+ try {
275
+ await response.body?.cancel(reason);
276
+ } catch {}
277
+ }
278
+ /**
279
+ * Decide whether `url` points at a URL-pinned upload POST endpoint.
280
+ *
281
+ * @param url - Request URL to inspect.
282
+ *
283
+ * @returns Whether the request is a direct upload endpoint.
284
+ */
285
+ function isUploadEndpoint(url) {
286
+ const endpoint = b2ApiEndpointName(url);
287
+ return endpoint === "b2_upload_file" || endpoint === "b2_upload_part";
288
+ }
289
+ function isFinishLargeFileEndpoint(url) {
290
+ return b2ApiEndpointName(url) === "b2_finish_large_file";
291
+ }
292
+ function isAuthorizeEndpoint(url) {
293
+ return b2ApiEndpointName(url) === "b2_authorize_account";
294
+ }
295
+ function isStartLargeFileEndpoint(url) {
296
+ return b2ApiEndpointName(url) === "b2_start_large_file";
297
+ }
298
+ function isPartnerMutationEndpoint(url) {
299
+ const endpoint = b2ApiEndpointName(url);
300
+ return endpoint === "b2_create_group_member" || endpoint === "b2_eject_group_member" || endpoint === "b2_reserve_trial_create_account";
301
+ }
302
+ function isBackupMutationEndpoint(url) {
303
+ return backupApiEndpointName(url) === "bz_delete_computer";
304
+ }
305
+ function isNonIdempotentMutationRequest(request) {
306
+ return request.method === "POST" && (isPartnerMutationEndpoint(request.url) || isBackupMutationEndpoint(request.url));
307
+ }
308
+ function b2ApiEndpointName(url) {
309
+ const segments = new URL(url).pathname.split("/").filter((segment) => segment.length > 0);
310
+ const apiRootIndex = segments.lastIndexOf("b2api");
311
+ if (apiRootIndex === -1) return void 0;
312
+ return segments[apiRootIndex + 2];
313
+ }
314
+ function backupApiEndpointName(url) {
315
+ const segments = new URL(url).pathname.split("/").filter((segment) => segment.length > 0);
316
+ const apiRootIndex = segments.lastIndexOf("api");
317
+ if (apiRootIndex === -1 || segments[apiRootIndex + 1] !== "backup") return void 0;
318
+ if (!/^v\d+$/.test(segments[apiRootIndex + 2] ?? "")) return void 0;
319
+ return segments[apiRootIndex + 3];
320
+ }
321
+ function isReplayUnsafePostRequest(request) {
322
+ if (request.method !== "POST") return false;
323
+ return isUploadEndpoint(request.url) || isStartLargeFileEndpoint(request.url) || isFinishLargeFileEndpoint(request.url) || isNonIdempotentMutationRequest(request);
324
+ }
325
+ /**
326
+ * Decide whether a classified error should be retried in place for `url`.
327
+ * Transient errors normally retry; upload endpoints bubble to the upload layer
328
+ * for fresh-URL retry except account-level 429 throttling, where fetching a new
329
+ * upload URL only amplifies the rate limit.
330
+ *
331
+ * @param error - The classified, retryability-tagged error.
332
+ * @param request - The request being considered for in-place retry.
333
+ *
334
+ * @returns Whether to retry the request in place.
335
+ */
336
+ function shouldRetryInPlace(error, request) {
337
+ if (!error.retryable) return false;
338
+ if (isAuthorizeEndpoint(request.url) && error instanceof ExpiredAuthTokenError) return false;
339
+ if (isNonIdempotentMutationRequest(request)) return false;
340
+ if (isStartLargeFileEndpoint(request.url) || isFinishLargeFileEndpoint(request.url)) return false;
341
+ if (isUploadEndpoint(request.url) && error.status === 429) return true;
342
+ if (isUploadEndpoint(request.url)) return false;
343
+ return true;
344
+ }
345
+ function isRequestTimeoutError(err) {
346
+ return err instanceof DOMException && err.name === "TimeoutError";
347
+ }
348
+ function isTerminalTransportError(err) {
349
+ return err instanceof B2Error || err instanceof B2RedirectError || err instanceof NetworkError || err instanceof B2SsrfError || err instanceof DOMException && err.name === "AbortError";
350
+ }
351
+ /**
352
+ * Transport wrapper that adds automatic retry with exponential backoff.
353
+ * Handles transient errors (408, 429, and the transient 5xx set 500/502/503/504),
354
+ * expired auth tokens, and network failures. Delegates to an inner
355
+ * {@link HttpTransport}.
356
+ *
357
+ * Upload endpoints (`b2_upload_file` / `b2_upload_part`) are URL-pinned. Their
358
+ * retryable pod failures bubble to the upload layer, which evicts the failed
359
+ * URL, fetches a fresh one, and retries there. HTTP 429 remains an in-place
360
+ * retry so account-level throttling does not trigger extra upload URL fetches.
361
+ */
362
+ var RetryTransport = class {
363
+ /** URL guard from the wrapped transport, when the transport exposes one. */
364
+ urlGuard;
365
+ /** The wrapped transport that performs actual HTTP requests. */
366
+ inner;
367
+ /** Resolved retry options (defaults merged with user overrides). */
368
+ options;
369
+ /** Optional callback to refresh auth credentials on 401 — returns the fresh token. */
370
+ onReauth;
371
+ /** Sleep implementation used between retries; injectable for tests. */
372
+ sleepImpl;
373
+ /**
374
+ * Creates a new RetryTransport.
375
+ * @param opts - Retry transport configuration.
376
+ */
377
+ constructor(opts) {
378
+ this.inner = opts.transport;
379
+ this.urlGuard = getTransportUrlGuard(opts.transport);
380
+ this.options = {
381
+ ...DEFAULT_RETRY_OPTIONS,
382
+ ...opts.retry
383
+ };
384
+ if (opts.onReauth !== void 0) this.onReauth = opts.onReauth;
385
+ this.sleepImpl = opts.sleepImpl ?? sleep;
386
+ }
387
+ /**
388
+ * Sends the request with automatic retry on transient failures.
389
+ * On expired auth tokens, calls {@link RetryTransportOptions.onReauth} and retries.
390
+ * @param originalRequest - The HTTP request to execute. The caller's
391
+ * reference is not mutated; on reauth, a copy with a refreshed
392
+ * Authorization header is sent.
393
+ *
394
+ * @returns The HTTP response.
395
+ */
396
+ async send(originalRequest) {
397
+ let request = originalRequest;
398
+ const retryOptions = {
399
+ ...this.options,
400
+ ...originalRequest.retry
401
+ };
402
+ let lastError;
403
+ let didReauth = false;
404
+ let attempt = 0;
405
+ while (attempt <= retryOptions.maxRetries) {
406
+ throwIfSignalAborted(request.signal);
407
+ if (attempt > 0 && lastError) {
408
+ const retryAfter = lastError instanceof NetworkError ? void 0 : lastError.retryAfter;
409
+ const delay = computeBackoff(attempt - 1, retryOptions, retryAfter);
410
+ await this.sleepImpl(delay, request.signal);
411
+ }
412
+ try {
413
+ const response = await this.inner.send({
414
+ ...request,
415
+ retry: retryOptions
416
+ });
417
+ await throwIfSignalAbortedAfterResponse(request.signal, response);
418
+ if (response.status >= 200 && response.status < 300) return response;
419
+ let errorBody;
420
+ try {
421
+ errorBody = await response.json();
422
+ } catch (err) {
423
+ if (isRequestTimeoutError(err)) throw err;
424
+ errorBody = {
425
+ status: response.status,
426
+ code: "internal_error",
427
+ message: `HTTP ${response.status}`
428
+ };
429
+ }
430
+ const retryAfterHeader = response.headers.get("Retry-After");
431
+ const retryAfterSec = retryAfterHeader ? Number.parseInt(retryAfterHeader, 10) : void 0;
432
+ const requestId = response.headers.get("X-Bz-Request-Id") ?? void 0;
433
+ const error = classifyError(errorBody, {
434
+ ...retryAfterSec !== void 0 ? { retryAfter: retryAfterSec } : {},
435
+ ...requestId !== void 0 ? { requestId } : {}
436
+ });
437
+ if (error instanceof ExpiredAuthTokenError && this.onReauth && !isAuthorizeEndpoint(request.url) && !isUploadEndpoint(request.url) && !isNonIdempotentMutationRequest(request) && !didReauth) {
438
+ const freshToken = await raceWithAbort(this.onReauth(request.signal), request.signal);
439
+ throwIfSignalAborted(request.signal);
440
+ request = {
441
+ ...request,
442
+ headers: {
443
+ ...request.headers ?? {},
444
+ Authorization: freshToken
445
+ }
446
+ };
447
+ didReauth = true;
448
+ lastError = void 0;
449
+ continue;
450
+ }
451
+ if (!shouldRetryInPlace(error, request) || attempt === retryOptions.maxRetries) throw error;
452
+ lastError = error;
453
+ attempt += 1;
454
+ } catch (err) {
455
+ throwIfSignalAborted(request.signal);
456
+ if (isTerminalTransportError(err)) throw err;
457
+ const networkErr = new NetworkError(err instanceof Error ? err.message : "Network error", err);
458
+ if (isReplayUnsafePostRequest(request) || attempt === retryOptions.maxRetries) throw networkErr;
459
+ lastError = networkErr;
460
+ attempt += 1;
461
+ }
462
+ }
463
+ throw lastError ?? new NetworkError("Max retries exceeded");
464
+ }
465
+ };
466
+ async function throwIfSignalAbortedAfterResponse(signal, response) {
467
+ if (signal?.aborted !== true) return;
468
+ const reason = abortReason(signal);
469
+ try {
470
+ await response.body?.cancel(reason);
471
+ } catch {}
472
+ throw reason;
473
+ }
474
+ //#endregion
475
+ export { FetchTransport, RetryTransport, getTransportUrlGuard };
476
+
477
+ //# sourceMappingURL=transport.js.map