@backblaze-labs/b2-sdk 0.2.0 → 0.4.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 (590) hide show
  1. package/CHANGELOG.md +86 -1
  2. package/README.md +38 -7
  3. package/dist/_virtual/_b2-sdk-version-json.cjs +1 -1
  4. package/dist/_virtual/_b2-sdk-version-json.js +1 -1
  5. package/dist/auth/file.cjs.map +1 -1
  6. package/dist/auth/reauth-coalescer.cjs +65 -0
  7. package/dist/auth/reauth-coalescer.cjs.map +1 -0
  8. package/dist/auth/reauth-coalescer.d.cts +34 -0
  9. package/dist/auth/reauth-coalescer.d.cts.map +1 -0
  10. package/dist/auth/reauth-coalescer.d.ts +34 -0
  11. package/dist/auth/reauth-coalescer.d.ts.map +1 -0
  12. package/dist/auth/reauth-coalescer.js +65 -0
  13. package/dist/auth/reauth-coalescer.js.map +1 -0
  14. package/dist/backup/client.cjs +206 -0
  15. package/dist/backup/client.cjs.map +1 -0
  16. package/dist/backup/client.d.cts +238 -0
  17. package/dist/backup/client.d.cts.map +1 -0
  18. package/dist/backup/client.d.ts +238 -0
  19. package/dist/backup/client.d.ts.map +1 -0
  20. package/dist/backup/client.js +206 -0
  21. package/dist/backup/client.js.map +1 -0
  22. package/dist/backup/index.cjs +15 -0
  23. package/dist/backup/index.d.cts +22 -0
  24. package/dist/backup/index.d.cts.map +1 -0
  25. package/dist/backup/index.d.ts +22 -0
  26. package/dist/backup/index.d.ts.map +1 -0
  27. package/dist/backup/index.js +7 -0
  28. package/dist/backup/raw.cjs +168 -0
  29. package/dist/backup/raw.cjs.map +1 -0
  30. package/dist/backup/raw.d.cts +122 -0
  31. package/dist/backup/raw.d.cts.map +1 -0
  32. package/dist/backup/raw.d.ts +122 -0
  33. package/dist/backup/raw.d.ts.map +1 -0
  34. package/dist/backup/raw.js +168 -0
  35. package/dist/backup/raw.js.map +1 -0
  36. package/dist/bucket-validation.cjs +111 -0
  37. package/dist/bucket-validation.cjs.map +1 -0
  38. package/dist/bucket-validation.d.cts +27 -0
  39. package/dist/bucket-validation.d.cts.map +1 -0
  40. package/dist/bucket-validation.d.ts +27 -0
  41. package/dist/bucket-validation.d.ts.map +1 -0
  42. package/dist/bucket-validation.js +109 -0
  43. package/dist/bucket-validation.js.map +1 -0
  44. package/dist/bucket.cjs +125 -74
  45. package/dist/bucket.cjs.map +1 -1
  46. package/dist/bucket.d.cts +156 -61
  47. package/dist/bucket.d.cts.map +1 -1
  48. package/dist/bucket.d.ts +156 -61
  49. package/dist/bucket.d.ts.map +1 -1
  50. package/dist/bucket.js +125 -74
  51. package/dist/bucket.js.map +1 -1
  52. package/dist/client.cjs +29 -8
  53. package/dist/client.cjs.map +1 -1
  54. package/dist/client.d.cts +30 -9
  55. package/dist/client.d.cts.map +1 -1
  56. package/dist/client.d.ts +30 -9
  57. package/dist/client.d.ts.map +1 -1
  58. package/dist/client.js +29 -8
  59. package/dist/client.js.map +1 -1
  60. package/dist/copy/large.cjs +5 -3
  61. package/dist/copy/large.cjs.map +1 -1
  62. package/dist/copy/large.d.cts.map +1 -1
  63. package/dist/copy/large.d.ts.map +1 -1
  64. package/dist/copy/large.js +5 -3
  65. package/dist/copy/large.js.map +1 -1
  66. package/dist/download/checksum.cjs +6 -2
  67. package/dist/download/checksum.cjs.map +1 -1
  68. package/dist/download/checksum.js +6 -2
  69. package/dist/download/checksum.js.map +1 -1
  70. package/dist/download/parallel.cjs +52 -15
  71. package/dist/download/parallel.cjs.map +1 -1
  72. package/dist/download/parallel.d.cts +8 -1
  73. package/dist/download/parallel.d.cts.map +1 -1
  74. package/dist/download/parallel.d.ts +8 -1
  75. package/dist/download/parallel.d.ts.map +1 -1
  76. package/dist/download/parallel.js +52 -15
  77. package/dist/download/parallel.js.map +1 -1
  78. package/dist/download/single.cjs +179 -19
  79. package/dist/download/single.cjs.map +1 -1
  80. package/dist/download/single.d.cts +10 -4
  81. package/dist/download/single.d.cts.map +1 -1
  82. package/dist/download/single.d.ts +10 -4
  83. package/dist/download/single.d.ts.map +1 -1
  84. package/dist/download/single.js +179 -19
  85. package/dist/download/single.js.map +1 -1
  86. package/dist/errors/index.cjs +196 -3
  87. package/dist/errors/index.cjs.map +1 -1
  88. package/dist/errors/index.d.cts +134 -0
  89. package/dist/errors/index.d.cts.map +1 -1
  90. package/dist/errors/index.d.ts +134 -0
  91. package/dist/errors/index.d.ts.map +1 -1
  92. package/dist/errors/index.js +183 -4
  93. package/dist/errors/index.js.map +1 -1
  94. package/dist/http/non-idempotent-mutations.cjs +38 -0
  95. package/dist/http/non-idempotent-mutations.cjs.map +1 -0
  96. package/dist/http/non-idempotent-mutations.d.cts +25 -0
  97. package/dist/http/non-idempotent-mutations.d.cts.map +1 -0
  98. package/dist/http/non-idempotent-mutations.d.ts +25 -0
  99. package/dist/http/non-idempotent-mutations.d.ts.map +1 -0
  100. package/dist/http/non-idempotent-mutations.js +35 -0
  101. package/dist/http/non-idempotent-mutations.js.map +1 -0
  102. package/dist/http/retry.cjs +1 -1
  103. package/dist/http/retry.cjs.map +1 -1
  104. package/dist/http/retry.js +1 -1
  105. package/dist/http/retry.js.map +1 -1
  106. package/dist/http/transport.cjs +62 -23
  107. package/dist/http/transport.cjs.map +1 -1
  108. package/dist/http/transport.d.cts +30 -3
  109. package/dist/http/transport.d.cts.map +1 -1
  110. package/dist/http/transport.d.ts +30 -3
  111. package/dist/http/transport.d.ts.map +1 -1
  112. package/dist/http/transport.js +60 -22
  113. package/dist/http/transport.js.map +1 -1
  114. package/dist/http/user-agent.cjs +12 -1
  115. package/dist/http/user-agent.cjs.map +1 -1
  116. package/dist/http/user-agent.d.cts +8 -0
  117. package/dist/http/user-agent.d.cts.map +1 -1
  118. package/dist/http/user-agent.d.ts +8 -0
  119. package/dist/http/user-agent.d.ts.map +1 -1
  120. package/dist/http/user-agent.js +13 -3
  121. package/dist/http/user-agent.js.map +1 -1
  122. package/dist/index.cjs +50 -2
  123. package/dist/index.d.cts +15 -12
  124. package/dist/index.d.cts.map +1 -1
  125. package/dist/index.d.ts +15 -12
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +13 -10
  128. package/dist/notifications/index.cjs +3 -0
  129. package/dist/notifications/index.d.cts +2 -0
  130. package/dist/notifications/index.d.cts.map +1 -1
  131. package/dist/notifications/index.d.ts +2 -0
  132. package/dist/notifications/index.d.ts.map +1 -1
  133. package/dist/notifications/index.js +2 -1
  134. package/dist/object.cjs +13 -2
  135. package/dist/object.cjs.map +1 -1
  136. package/dist/object.d.cts +11 -3
  137. package/dist/object.d.cts.map +1 -1
  138. package/dist/object.d.ts +11 -3
  139. package/dist/object.d.ts.map +1 -1
  140. package/dist/object.js +13 -2
  141. package/dist/object.js.map +1 -1
  142. package/dist/partner/account-info.d.cts +43 -0
  143. package/dist/partner/account-info.d.cts.map +1 -0
  144. package/dist/partner/account-info.d.ts +43 -0
  145. package/dist/partner/account-info.d.ts.map +1 -0
  146. package/dist/partner/auth-clone.cjs +64 -0
  147. package/dist/partner/auth-clone.cjs.map +1 -0
  148. package/dist/partner/auth-clone.d.cts +27 -0
  149. package/dist/partner/auth-clone.d.cts.map +1 -0
  150. package/dist/partner/auth-clone.d.ts +27 -0
  151. package/dist/partner/auth-clone.d.ts.map +1 -0
  152. package/dist/partner/auth-clone.js +63 -0
  153. package/dist/partner/auth-clone.js.map +1 -0
  154. package/dist/partner/auth-core.cjs +156 -0
  155. package/dist/partner/auth-core.cjs.map +1 -0
  156. package/dist/partner/auth-core.d.cts +111 -0
  157. package/dist/partner/auth-core.d.cts.map +1 -0
  158. package/dist/partner/auth-core.d.ts +111 -0
  159. package/dist/partner/auth-core.d.ts.map +1 -0
  160. package/dist/partner/auth-core.js +156 -0
  161. package/dist/partner/auth-core.js.map +1 -0
  162. package/dist/partner/auth-shape.cjs +36 -0
  163. package/dist/partner/auth-shape.cjs.map +1 -0
  164. package/dist/partner/auth-shape.d.cts +12 -0
  165. package/dist/partner/auth-shape.d.cts.map +1 -0
  166. package/dist/partner/auth-shape.d.ts +12 -0
  167. package/dist/partner/auth-shape.d.ts.map +1 -0
  168. package/dist/partner/auth-shape.js +36 -0
  169. package/dist/partner/auth-shape.js.map +1 -0
  170. package/dist/partner/client.cjs +270 -0
  171. package/dist/partner/client.cjs.map +1 -0
  172. package/dist/partner/client.d.cts +357 -0
  173. package/dist/partner/client.d.cts.map +1 -0
  174. package/dist/partner/client.d.ts +357 -0
  175. package/dist/partner/client.d.ts.map +1 -0
  176. package/dist/partner/client.js +270 -0
  177. package/dist/partner/client.js.map +1 -0
  178. package/dist/partner/endpoint-url.cjs +109 -0
  179. package/dist/partner/endpoint-url.cjs.map +1 -0
  180. package/dist/partner/endpoint-url.d.cts +74 -0
  181. package/dist/partner/endpoint-url.d.cts.map +1 -0
  182. package/dist/partner/endpoint-url.d.ts +74 -0
  183. package/dist/partner/endpoint-url.d.ts.map +1 -0
  184. package/dist/partner/endpoint-url.js +106 -0
  185. package/dist/partner/endpoint-url.js.map +1 -0
  186. package/dist/partner/in-memory.cjs +135 -0
  187. package/dist/partner/in-memory.cjs.map +1 -0
  188. package/dist/partner/in-memory.d.cts +99 -0
  189. package/dist/partner/in-memory.d.cts.map +1 -0
  190. package/dist/partner/in-memory.d.ts +99 -0
  191. package/dist/partner/in-memory.d.ts.map +1 -0
  192. package/dist/partner/in-memory.js +135 -0
  193. package/dist/partner/in-memory.js.map +1 -0
  194. package/dist/partner/index.cjs +27 -0
  195. package/dist/partner/index.d.cts +32 -0
  196. package/dist/partner/index.d.cts.map +1 -0
  197. package/dist/partner/index.d.ts +32 -0
  198. package/dist/partner/index.d.ts.map +1 -0
  199. package/dist/partner/index.js +9 -0
  200. package/dist/partner/raw.cjs +400 -0
  201. package/dist/partner/raw.cjs.map +1 -0
  202. package/dist/partner/raw.d.cts +220 -0
  203. package/dist/partner/raw.d.cts.map +1 -0
  204. package/dist/partner/raw.d.ts +220 -0
  205. package/dist/partner/raw.d.ts.map +1 -0
  206. package/dist/partner/raw.js +398 -0
  207. package/dist/partner/raw.js.map +1 -0
  208. package/dist/partner/redaction-placeholders.cjs +10 -0
  209. package/dist/partner/redaction-placeholders.cjs.map +1 -0
  210. package/dist/partner/redaction-placeholders.d.cts +5 -0
  211. package/dist/partner/redaction-placeholders.d.cts.map +1 -0
  212. package/dist/partner/redaction-placeholders.d.ts +5 -0
  213. package/dist/partner/redaction-placeholders.d.ts.map +1 -0
  214. package/dist/partner/redaction-placeholders.js +9 -0
  215. package/dist/partner/redaction-placeholders.js.map +1 -0
  216. package/dist/partner/redaction.cjs +292 -0
  217. package/dist/partner/redaction.cjs.map +1 -0
  218. package/dist/partner/redaction.d.cts +158 -0
  219. package/dist/partner/redaction.d.cts.map +1 -0
  220. package/dist/partner/redaction.d.ts +158 -0
  221. package/dist/partner/redaction.d.ts.map +1 -0
  222. package/dist/partner/redaction.js +281 -0
  223. package/dist/partner/redaction.js.map +1 -0
  224. package/dist/raw/encoding.cjs +29 -10
  225. package/dist/raw/encoding.cjs.map +1 -1
  226. package/dist/raw/encoding.d.cts +3 -2
  227. package/dist/raw/encoding.d.cts.map +1 -1
  228. package/dist/raw/encoding.d.ts +3 -2
  229. package/dist/raw/encoding.d.ts.map +1 -1
  230. package/dist/raw/encoding.js +29 -10
  231. package/dist/raw/encoding.js.map +1 -1
  232. package/dist/raw/index.cjs +131 -44
  233. package/dist/raw/index.cjs.map +1 -1
  234. package/dist/raw/index.d.cts +21 -15
  235. package/dist/raw/index.d.cts.map +1 -1
  236. package/dist/raw/index.d.ts +21 -15
  237. package/dist/raw/index.d.ts.map +1 -1
  238. package/dist/raw/index.js +114 -45
  239. package/dist/raw/index.js.map +1 -1
  240. package/dist/raw/url.cjs +111 -0
  241. package/dist/raw/url.cjs.map +1 -0
  242. package/dist/raw/url.d.cts +41 -0
  243. package/dist/raw/url.d.cts.map +1 -0
  244. package/dist/raw/url.d.ts +41 -0
  245. package/dist/raw/url.d.ts.map +1 -0
  246. package/dist/raw/url.js +110 -0
  247. package/dist/raw/url.js.map +1 -0
  248. package/dist/s3/sigv4.cjs +15 -10
  249. package/dist/s3/sigv4.cjs.map +1 -1
  250. package/dist/s3/sigv4.js +15 -10
  251. package/dist/s3/sigv4.js.map +1 -1
  252. package/dist/simulator/index.cjs +1579 -257
  253. package/dist/simulator/index.cjs.map +1 -1
  254. package/dist/simulator/index.d.cts +124 -11
  255. package/dist/simulator/index.d.cts.map +1 -1
  256. package/dist/simulator/index.d.ts +124 -11
  257. package/dist/simulator/index.d.ts.map +1 -1
  258. package/dist/simulator/index.js +1568 -262
  259. package/dist/simulator/index.js.map +1 -1
  260. package/dist/simulator/partner-capabilities.cjs +77 -0
  261. package/dist/simulator/partner-capabilities.cjs.map +1 -0
  262. package/dist/simulator/partner-capabilities.d.cts +53 -0
  263. package/dist/simulator/partner-capabilities.d.cts.map +1 -0
  264. package/dist/simulator/partner-capabilities.d.ts +53 -0
  265. package/dist/simulator/partner-capabilities.d.ts.map +1 -0
  266. package/dist/simulator/partner-capabilities.js +73 -0
  267. package/dist/simulator/partner-capabilities.js.map +1 -0
  268. package/dist/simulator/partner.cjs +713 -0
  269. package/dist/simulator/partner.cjs.map +1 -0
  270. package/dist/simulator/partner.d.cts +186 -0
  271. package/dist/simulator/partner.d.cts.map +1 -0
  272. package/dist/simulator/partner.d.ts +186 -0
  273. package/dist/simulator/partner.d.ts.map +1 -0
  274. package/dist/simulator/partner.js +713 -0
  275. package/dist/simulator/partner.js.map +1 -0
  276. package/dist/simulator/validation.cjs +732 -25
  277. package/dist/simulator/validation.cjs.map +1 -1
  278. package/dist/simulator/validation.d.cts +145 -6
  279. package/dist/simulator/validation.d.cts.map +1 -1
  280. package/dist/simulator/validation.d.ts +145 -6
  281. package/dist/simulator/validation.d.ts.map +1 -1
  282. package/dist/simulator/validation.js +705 -26
  283. package/dist/simulator/validation.js.map +1 -1
  284. package/dist/streams/file-source.cjs +2 -2
  285. package/dist/streams/file-source.cjs.map +1 -1
  286. package/dist/streams/file-source.js +2 -2
  287. package/dist/streams/file-source.js.map +1 -1
  288. package/dist/streams/hash.cjs +246 -13
  289. package/dist/streams/hash.cjs.map +1 -1
  290. package/dist/streams/hash.d.cts +37 -12
  291. package/dist/streams/hash.d.cts.map +1 -1
  292. package/dist/streams/hash.d.ts +37 -12
  293. package/dist/streams/hash.d.ts.map +1 -1
  294. package/dist/streams/hash.js +246 -15
  295. package/dist/streams/hash.js.map +1 -1
  296. package/dist/streams/index.cjs +3 -1
  297. package/dist/streams/index.d.cts +1 -1
  298. package/dist/streams/index.d.cts.map +1 -1
  299. package/dist/streams/index.d.ts +1 -1
  300. package/dist/streams/index.d.ts.map +1 -1
  301. package/dist/streams/index.js +3 -3
  302. package/dist/streams/progress.cjs +63 -4
  303. package/dist/streams/progress.cjs.map +1 -1
  304. package/dist/streams/progress.d.cts +28 -2
  305. package/dist/streams/progress.d.cts.map +1 -1
  306. package/dist/streams/progress.d.ts +28 -2
  307. package/dist/streams/progress.d.ts.map +1 -1
  308. package/dist/streams/progress.js +63 -4
  309. package/dist/streams/progress.js.map +1 -1
  310. package/dist/streams/source.cjs +2 -1
  311. package/dist/streams/source.cjs.map +1 -1
  312. package/dist/streams/source.js +2 -1
  313. package/dist/streams/source.js.map +1 -1
  314. package/dist/sync/b2-sha1-reader.cjs +6 -2
  315. package/dist/sync/b2-sha1-reader.cjs.map +1 -1
  316. package/dist/sync/b2-sha1-reader.d.cts.map +1 -1
  317. package/dist/sync/b2-sha1-reader.d.ts.map +1 -1
  318. package/dist/sync/b2-sha1-reader.js +6 -2
  319. package/dist/sync/b2-sha1-reader.js.map +1 -1
  320. package/dist/sync/download-staging.cjs +156 -43
  321. package/dist/sync/download-staging.cjs.map +1 -1
  322. package/dist/sync/download-staging.d.cts +26 -2
  323. package/dist/sync/download-staging.d.cts.map +1 -1
  324. package/dist/sync/download-staging.d.ts +26 -2
  325. package/dist/sync/download-staging.d.ts.map +1 -1
  326. package/dist/sync/download-staging.js +155 -44
  327. package/dist/sync/download-staging.js.map +1 -1
  328. package/dist/sync/filters.cjs.map +1 -1
  329. package/dist/sync/filters.js.map +1 -1
  330. package/dist/sync/index.d.cts +1 -1
  331. package/dist/sync/index.d.cts.map +1 -1
  332. package/dist/sync/index.d.ts +1 -1
  333. package/dist/sync/index.d.ts.map +1 -1
  334. package/dist/sync/local-file-io.cjs +15 -6
  335. package/dist/sync/local-file-io.cjs.map +1 -1
  336. package/dist/sync/local-file-io.d.cts +3 -0
  337. package/dist/sync/local-file-io.d.cts.map +1 -1
  338. package/dist/sync/local-file-io.d.ts +3 -0
  339. package/dist/sync/local-file-io.d.ts.map +1 -1
  340. package/dist/sync/local-file-io.js +15 -6
  341. package/dist/sync/local-file-io.js.map +1 -1
  342. package/dist/sync/local-sha1.cjs +6 -15
  343. package/dist/sync/local-sha1.cjs.map +1 -1
  344. package/dist/sync/local-sha1.d.cts +0 -8
  345. package/dist/sync/local-sha1.d.cts.map +1 -1
  346. package/dist/sync/local-sha1.d.ts +0 -8
  347. package/dist/sync/local-sha1.d.ts.map +1 -1
  348. package/dist/sync/local-sha1.js +7 -15
  349. package/dist/sync/local-sha1.js.map +1 -1
  350. package/dist/sync/pairing.cjs +1 -0
  351. package/dist/sync/pairing.cjs.map +1 -1
  352. package/dist/sync/pairing.js +1 -0
  353. package/dist/sync/pairing.js.map +1 -1
  354. package/dist/sync/policies/compare.cjs +5 -3
  355. package/dist/sync/policies/compare.cjs.map +1 -1
  356. package/dist/sync/policies/compare.d.cts.map +1 -1
  357. package/dist/sync/policies/compare.d.ts.map +1 -1
  358. package/dist/sync/policies/compare.js +6 -4
  359. package/dist/sync/policies/compare.js.map +1 -1
  360. package/dist/sync/policies/index.cjs +4 -10
  361. package/dist/sync/policies/index.cjs.map +1 -1
  362. package/dist/sync/policies/index.js +4 -10
  363. package/dist/sync/policies/index.js.map +1 -1
  364. package/dist/sync/scanners/b2.cjs +4 -2
  365. package/dist/sync/scanners/b2.cjs.map +1 -1
  366. package/dist/sync/scanners/b2.d.cts.map +1 -1
  367. package/dist/sync/scanners/b2.d.ts.map +1 -1
  368. package/dist/sync/scanners/b2.js +4 -2
  369. package/dist/sync/scanners/b2.js.map +1 -1
  370. package/dist/sync/scanners/local.cjs +150 -33
  371. package/dist/sync/scanners/local.cjs.map +1 -1
  372. package/dist/sync/scanners/local.d.cts +6 -0
  373. package/dist/sync/scanners/local.d.cts.map +1 -1
  374. package/dist/sync/scanners/local.d.ts +6 -0
  375. package/dist/sync/scanners/local.d.ts.map +1 -1
  376. package/dist/sync/scanners/local.js +150 -33
  377. package/dist/sync/scanners/local.js.map +1 -1
  378. package/dist/sync/synchronizer.cjs +79 -31
  379. package/dist/sync/synchronizer.cjs.map +1 -1
  380. package/dist/sync/synchronizer.d.cts +1 -0
  381. package/dist/sync/synchronizer.d.cts.map +1 -1
  382. package/dist/sync/synchronizer.d.ts +1 -0
  383. package/dist/sync/synchronizer.d.ts.map +1 -1
  384. package/dist/sync/synchronizer.js +79 -31
  385. package/dist/sync/synchronizer.js.map +1 -1
  386. package/dist/sync/types.d.cts +19 -3
  387. package/dist/sync/types.d.cts.map +1 -1
  388. package/dist/sync/types.d.ts +19 -3
  389. package/dist/sync/types.d.ts.map +1 -1
  390. package/dist/types/auth.cjs +4 -0
  391. package/dist/types/auth.cjs.map +1 -1
  392. package/dist/types/auth.d.cts +4 -0
  393. package/dist/types/auth.d.cts.map +1 -1
  394. package/dist/types/auth.d.ts +4 -0
  395. package/dist/types/auth.d.ts.map +1 -1
  396. package/dist/types/auth.js +4 -0
  397. package/dist/types/auth.js.map +1 -1
  398. package/dist/types/backup.d.cts +85 -0
  399. package/dist/types/backup.d.cts.map +1 -0
  400. package/dist/types/backup.d.ts +85 -0
  401. package/dist/types/backup.d.ts.map +1 -0
  402. package/dist/types/bucket.cjs +81 -11
  403. package/dist/types/bucket.cjs.map +1 -1
  404. package/dist/types/bucket.d.cts +194 -41
  405. package/dist/types/bucket.d.cts.map +1 -1
  406. package/dist/types/bucket.d.ts +194 -41
  407. package/dist/types/bucket.d.ts.map +1 -1
  408. package/dist/types/bucket.js +67 -12
  409. package/dist/types/bucket.js.map +1 -1
  410. package/dist/types/download.cjs +62 -0
  411. package/dist/types/download.cjs.map +1 -0
  412. package/dist/types/download.d.cts +100 -16
  413. package/dist/types/download.d.cts.map +1 -1
  414. package/dist/types/download.d.ts +100 -16
  415. package/dist/types/download.d.ts.map +1 -1
  416. package/dist/types/download.js +61 -0
  417. package/dist/types/download.js.map +1 -0
  418. package/dist/types/encryption.cjs +76 -229
  419. package/dist/types/encryption.cjs.map +1 -1
  420. package/dist/types/encryption.d.cts +48 -6
  421. package/dist/types/encryption.d.cts.map +1 -1
  422. package/dist/types/encryption.d.ts +48 -6
  423. package/dist/types/encryption.d.ts.map +1 -1
  424. package/dist/types/encryption.js +74 -229
  425. package/dist/types/encryption.js.map +1 -1
  426. package/dist/types/errors.cjs +9 -0
  427. package/dist/types/errors.cjs.map +1 -1
  428. package/dist/types/errors.d.cts +1 -1
  429. package/dist/types/errors.d.cts.map +1 -1
  430. package/dist/types/errors.d.ts +1 -1
  431. package/dist/types/errors.d.ts.map +1 -1
  432. package/dist/types/errors.js +9 -0
  433. package/dist/types/errors.js.map +1 -1
  434. package/dist/types/file.cjs +3 -0
  435. package/dist/types/file.cjs.map +1 -1
  436. package/dist/types/file.d.cts +140 -18
  437. package/dist/types/file.d.cts.map +1 -1
  438. package/dist/types/file.d.ts +140 -18
  439. package/dist/types/file.d.ts.map +1 -1
  440. package/dist/types/file.js +3 -1
  441. package/dist/types/file.js.map +1 -1
  442. package/dist/types/ids.cjs +30 -0
  443. package/dist/types/ids.cjs.map +1 -1
  444. package/dist/types/ids.d.cts +32 -0
  445. package/dist/types/ids.d.cts.map +1 -1
  446. package/dist/types/ids.d.ts +32 -0
  447. package/dist/types/ids.d.ts.map +1 -1
  448. package/dist/types/ids.js +28 -1
  449. package/dist/types/ids.js.map +1 -1
  450. package/dist/types/index.d.cts +16 -12
  451. package/dist/types/index.d.cts.map +1 -1
  452. package/dist/types/index.d.ts +16 -12
  453. package/dist/types/index.d.ts.map +1 -1
  454. package/dist/types/key.d.cts +4 -3
  455. package/dist/types/key.d.cts.map +1 -1
  456. package/dist/types/key.d.ts +4 -3
  457. package/dist/types/key.d.ts.map +1 -1
  458. package/dist/types/lock.cjs.map +1 -1
  459. package/dist/types/lock.d.cts +14 -0
  460. package/dist/types/lock.d.cts.map +1 -1
  461. package/dist/types/lock.d.ts +14 -0
  462. package/dist/types/lock.d.ts.map +1 -1
  463. package/dist/types/lock.js.map +1 -1
  464. package/dist/types/notifications.cjs +31 -1
  465. package/dist/types/notifications.cjs.map +1 -1
  466. package/dist/types/notifications.d.cts +31 -4
  467. package/dist/types/notifications.d.cts.map +1 -1
  468. package/dist/types/notifications.d.ts +31 -4
  469. package/dist/types/notifications.d.ts.map +1 -1
  470. package/dist/types/notifications.js +30 -2
  471. package/dist/types/notifications.js.map +1 -1
  472. package/dist/types/partner.cjs +32 -0
  473. package/dist/types/partner.cjs.map +1 -0
  474. package/dist/types/partner.d.cts +386 -0
  475. package/dist/types/partner.d.cts.map +1 -0
  476. package/dist/types/partner.d.ts +386 -0
  477. package/dist/types/partner.d.ts.map +1 -0
  478. package/dist/types/partner.js +29 -0
  479. package/dist/types/partner.js.map +1 -0
  480. package/dist/types/upload.d.cts +35 -18
  481. package/dist/types/upload.d.cts.map +1 -1
  482. package/dist/types/upload.d.ts +35 -18
  483. package/dist/types/upload.d.ts.map +1 -1
  484. package/dist/upload/abort-scope.cjs +0 -45
  485. package/dist/upload/abort-scope.cjs.map +1 -1
  486. package/dist/upload/abort-scope.d.cts +0 -22
  487. package/dist/upload/abort-scope.d.cts.map +1 -1
  488. package/dist/upload/abort-scope.d.ts +0 -22
  489. package/dist/upload/abort-scope.d.ts.map +1 -1
  490. package/dist/upload/abort-scope.js +1 -44
  491. package/dist/upload/abort-scope.js.map +1 -1
  492. package/dist/upload/finish.cjs +3 -8
  493. package/dist/upload/finish.cjs.map +1 -1
  494. package/dist/upload/finish.d.cts.map +1 -1
  495. package/dist/upload/finish.d.ts.map +1 -1
  496. package/dist/upload/finish.js +1 -6
  497. package/dist/upload/finish.js.map +1 -1
  498. package/dist/upload/large.cjs +15 -8
  499. package/dist/upload/large.cjs.map +1 -1
  500. package/dist/upload/large.d.cts +31 -8
  501. package/dist/upload/large.d.cts.map +1 -1
  502. package/dist/upload/large.d.ts +31 -8
  503. package/dist/upload/large.d.ts.map +1 -1
  504. package/dist/upload/large.js +15 -8
  505. package/dist/upload/large.js.map +1 -1
  506. package/dist/upload/options.cjs.map +1 -1
  507. package/dist/upload/options.d.cts +24 -0
  508. package/dist/upload/options.d.cts.map +1 -1
  509. package/dist/upload/options.d.ts +24 -0
  510. package/dist/upload/options.d.ts.map +1 -1
  511. package/dist/upload/options.js.map +1 -1
  512. package/dist/upload/resume.cjs +6 -4
  513. package/dist/upload/resume.cjs.map +1 -1
  514. package/dist/upload/resume.d.cts +9 -5
  515. package/dist/upload/resume.d.cts.map +1 -1
  516. package/dist/upload/resume.d.ts +9 -5
  517. package/dist/upload/resume.d.ts.map +1 -1
  518. package/dist/upload/resume.js +6 -4
  519. package/dist/upload/resume.js.map +1 -1
  520. package/dist/upload/retry.cjs +25 -13
  521. package/dist/upload/retry.cjs.map +1 -1
  522. package/dist/upload/retry.d.cts.map +1 -1
  523. package/dist/upload/retry.d.ts.map +1 -1
  524. package/dist/upload/retry.js +25 -13
  525. package/dist/upload/retry.js.map +1 -1
  526. package/dist/upload/single.cjs +35 -30
  527. package/dist/upload/single.cjs.map +1 -1
  528. package/dist/upload/single.d.cts +12 -0
  529. package/dist/upload/single.d.cts.map +1 -1
  530. package/dist/upload/single.d.ts +12 -0
  531. package/dist/upload/single.d.ts.map +1 -1
  532. package/dist/upload/single.js +35 -30
  533. package/dist/upload/single.js.map +1 -1
  534. package/dist/upload/stream.cjs +18 -5
  535. package/dist/upload/stream.cjs.map +1 -1
  536. package/dist/upload/stream.d.cts +12 -0
  537. package/dist/upload/stream.d.cts.map +1 -1
  538. package/dist/upload/stream.d.ts +12 -0
  539. package/dist/upload/stream.d.ts.map +1 -1
  540. package/dist/upload/stream.js +15 -2
  541. package/dist/upload/stream.js.map +1 -1
  542. package/dist/util/abort.cjs +114 -0
  543. package/dist/util/abort.cjs.map +1 -0
  544. package/dist/util/abort.d.cts +65 -0
  545. package/dist/util/abort.d.cts.map +1 -0
  546. package/dist/util/abort.d.ts +65 -0
  547. package/dist/util/abort.d.ts.map +1 -0
  548. package/dist/util/abort.js +109 -0
  549. package/dist/util/abort.js.map +1 -0
  550. package/dist/util/defaults.cjs +3 -0
  551. package/dist/util/defaults.cjs.map +1 -1
  552. package/dist/util/defaults.d.cts +2 -0
  553. package/dist/util/defaults.d.cts.map +1 -1
  554. package/dist/util/defaults.d.ts +2 -0
  555. package/dist/util/defaults.d.ts.map +1 -1
  556. package/dist/util/defaults.js +3 -1
  557. package/dist/util/defaults.js.map +1 -1
  558. package/dist/util/md5.cjs +211 -0
  559. package/dist/util/md5.cjs.map +1 -0
  560. package/dist/util/md5.d.cts +43 -0
  561. package/dist/util/md5.d.cts.map +1 -0
  562. package/dist/util/md5.d.ts +43 -0
  563. package/dist/util/md5.d.ts.map +1 -0
  564. package/dist/util/md5.js +209 -0
  565. package/dist/util/md5.js.map +1 -0
  566. package/dist/util/normalize.cjs +5 -5
  567. package/dist/util/normalize.cjs.map +1 -1
  568. package/dist/util/normalize.d.cts +7 -7
  569. package/dist/util/normalize.d.cts.map +1 -1
  570. package/dist/util/normalize.d.ts +7 -7
  571. package/dist/util/normalize.d.ts.map +1 -1
  572. package/dist/util/normalize.js +5 -5
  573. package/dist/util/normalize.js.map +1 -1
  574. package/dist/util/paginator.cjs +7 -1
  575. package/dist/util/paginator.cjs.map +1 -1
  576. package/dist/util/paginator.d.cts +3 -1
  577. package/dist/util/paginator.d.cts.map +1 -1
  578. package/dist/util/paginator.d.ts +3 -1
  579. package/dist/util/paginator.d.ts.map +1 -1
  580. package/dist/util/paginator.js +7 -1
  581. package/dist/util/paginator.js.map +1 -1
  582. package/dist/version.cjs +56 -4
  583. package/dist/version.cjs.map +1 -1
  584. package/dist/version.d.cts +53 -4
  585. package/dist/version.d.cts.map +1 -1
  586. package/dist/version.d.ts +53 -4
  587. package/dist/version.d.ts.map +1 -1
  588. package/dist/version.js +52 -5
  589. package/dist/version.js.map +1 -1
  590. package/package.json +47 -18
@@ -1,7 +1,8 @@
1
1
  import { EncryptionSetting, PublicEncryptionSetting } from './encryption.js';
2
- import { FileAction } from './file.js';
2
+ import { FileAction, ReplicationStatus } from './file.js';
3
3
  import { BucketId, LargeFileId } from './ids.js';
4
- import { FileRetentionValue, LegalHoldValue } from './lock.js';
4
+ import { FileRetentionValue, LegalHoldValue, ReadableFileRetention, ReadableLegalHold } from './lock.js';
5
+ export type { ReadableFileRetention, ReadableLegalHold } from './lock.js';
5
6
  /** Request parameters for the `b2_get_upload_url` API call. */
6
7
  export interface GetUploadUrlRequest {
7
8
  /** Bucket to get an upload URL for. */
@@ -19,6 +20,10 @@ export interface GetUploadUrlResponse {
19
20
  /**
20
21
  * Headers required when uploading a file via `b2_upload_file`.
21
22
  * Sent as HTTP headers on the upload POST request.
23
+ *
24
+ * Pass `contentDisposition`, `contentLanguage`, `expires`, `cacheControl`, and
25
+ * `contentEncoding` as raw (unencoded) download-header values. The SDK
26
+ * percent-encodes them as B2 file-info metadata when uploading.
22
27
  */
23
28
  export interface UploadFileHeaders {
24
29
  /** Authorization token from `b2_get_upload_url`. */
@@ -41,6 +46,12 @@ export interface UploadFileHeaders {
41
46
  readonly legalHold?: LegalHoldValue;
42
47
  /** Optional last-modified timestamp in milliseconds (stored as `src_last_modified_millis` in file info). */
43
48
  readonly lastModifiedMillis?: number;
49
+ /**
50
+ * Optional B2 upload timestamp override in milliseconds since epoch.
51
+ * Sets the file version `uploadTimestamp`; distinct from `lastModifiedMillis` metadata.
52
+ * Requires B2 account enablement for Custom Upload Timestamp.
53
+ */
54
+ readonly customUploadTimestamp?: number;
44
55
  /** Optional Content-Disposition header value for downloads. */
45
56
  readonly contentDisposition?: string;
46
57
  /** Optional Content-Language header value for downloads. */
@@ -62,6 +73,13 @@ export interface StartLargeFileRequest {
62
73
  readonly contentType: string;
63
74
  /** Optional user-defined key-value metadata for the file. */
64
75
  readonly fileInfo?: Record<string, string>;
76
+ /**
77
+ * Optional B2 upload timestamp override in milliseconds since epoch, as a decimal string.
78
+ * `null` is accepted and ignored by B2.
79
+ * Sets the file version `uploadTimestamp`; distinct from `src_last_modified_millis` metadata.
80
+ * Requires B2 account enablement for Custom Upload Timestamp.
81
+ */
82
+ readonly customUploadTimestamp?: string | null;
65
83
  /** Optional server-side encryption setting. */
66
84
  readonly serverSideEncryption?: EncryptionSetting;
67
85
  /** Optional Object Lock retention for the file. */
@@ -69,34 +87,27 @@ export interface StartLargeFileRequest {
69
87
  /** Optional legal hold for the file. */
70
88
  readonly legalHold?: LegalHoldValue;
71
89
  }
72
- /** Object Lock retention settings as returned by B2 response objects. */
73
- export interface ReadableFileRetention {
74
- /** Whether the caller is authorized to read retention settings. */
75
- readonly isClientAuthorizedToRead: boolean;
76
- /** Retention settings, or null when none are set or unreadable. */
77
- readonly value: FileRetentionValue | null;
78
- }
79
- /** Legal hold status as returned by B2 response objects. */
80
- export interface ReadableLegalHold {
81
- /** Whether the caller is authorized to read legal hold status. */
82
- readonly isClientAuthorizedToRead: boolean;
83
- /** Legal hold value, or null when none is set or unreadable. */
84
- readonly value: LegalHoldValue | null;
85
- }
86
90
  /** Optional metadata fields B2 may return for unfinished large-file records. */
87
91
  export interface UnfinishedLargeFileMetadata {
88
92
  /** Action that created this unfinished file version. */
89
93
  readonly action?: FileAction;
90
94
  /** When present, always 0 for unfinished large files. */
91
95
  readonly contentLength?: number;
92
- /** When present, always `'none'` for unfinished large files. */
93
- readonly contentSha1?: string;
96
+ /**
97
+ * When present for documented B2 unfinished large files, this is `null`:
98
+ * B2's `'none'` wire sentinel is normalized to `null`. If B2 omits the
99
+ * field, it remains `undefined`; the `string` arm is retained for
100
+ * forward-compatible or non-standard response values.
101
+ */
102
+ readonly contentSha1?: string | null;
94
103
  /** When present, always null for unfinished large files. */
95
104
  readonly contentMd5?: string | null;
96
105
  /** Object Lock retention settings for this unfinished file, when readable. */
97
106
  readonly fileRetention?: ReadableFileRetention;
98
107
  /** Legal hold status for this unfinished file, when readable. */
99
108
  readonly legalHold?: ReadableLegalHold;
109
+ /** Uppercase B2 replication status when this unfinished file is covered by a replication rule. */
110
+ readonly replicationStatus?: ReplicationStatus;
100
111
  /** Server-side encryption applied to this unfinished file. */
101
112
  readonly serverSideEncryption?: PublicEncryptionSetting;
102
113
  /** UTC timestamp (milliseconds) when this unfinished upload was started. */
@@ -157,6 +168,8 @@ export interface UploadPartResponse {
157
168
  readonly contentLength: number;
158
169
  /** SHA-1 checksum of the uploaded part content. */
159
170
  readonly contentSha1: string;
171
+ /** MD5 checksum of the uploaded part content, or null if not available. */
172
+ readonly contentMd5: string | null;
160
173
  /** Server-side encryption applied to this part. */
161
174
  readonly serverSideEncryption: PublicEncryptionSetting;
162
175
  /** UTC timestamp (milliseconds) when this part was uploaded. */
@@ -240,6 +253,10 @@ export interface PartInfo {
240
253
  readonly contentLength: number;
241
254
  /** SHA-1 checksum of this part's content. */
242
255
  readonly contentSha1: string;
256
+ /** MD5 checksum of this part's content, or null if not available. */
257
+ readonly contentMd5: string | null;
258
+ /** Server-side encryption applied to this part. */
259
+ readonly serverSideEncryption: PublicEncryptionSetting;
243
260
  /** UTC timestamp (milliseconds) when this part was uploaded. */
244
261
  readonly uploadTimestamp: number;
245
262
  }
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/types/upload.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/types/upload.js"],"names":[],"mappings":"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"}
@@ -39,53 +39,8 @@ function throwRejectedOrAbortReason(settled, abortScope) {
39
39
  /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */
40
40
  throw rejected.reason;
41
41
  }
42
- /**
43
- * Returns the observable reason for an aborted signal.
44
- * @param signal - Aborted signal to inspect.
45
- *
46
- * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.
47
- */
48
- function abortReason(signal) {
49
- return signal.reason ?? new DOMException("Aborted", "AbortError");
50
- }
51
- /**
52
- * Races a request promise against an abort signal.
53
- *
54
- * The underlying request must still receive the same signal so transports can
55
- * cancel their network work. This helper makes callers stop waiting promptly
56
- * even when a test double or custom transport ignores the signal.
57
- *
58
- * @param promise - Request promise to observe.
59
- * @param signal - Signal that should stop waiting for the request.
60
- *
61
- * @returns The request result if it settles before the signal aborts.
62
- *
63
- * @throws The abort reason if the signal aborts first, or the request rejection.
64
- */
65
- async function raceWithAbort(promise, signal) {
66
- if (signal.aborted) {
67
- promise.catch(() => {});
68
- throw abortReason(signal);
69
- }
70
- let removeAbortListener;
71
- const abort = new Promise((_, reject) => {
72
- const onAbort = () => reject(abortReason(signal));
73
- signal.addEventListener("abort", onAbort, { once: true });
74
- removeAbortListener = () => signal.removeEventListener("abort", onAbort);
75
- });
76
- try {
77
- return await Promise.race([promise, abort]);
78
- } catch (err) {
79
- if (signal.aborted) promise.catch(() => {});
80
- throw err;
81
- } finally {
82
- removeAbortListener?.();
83
- }
84
- }
85
42
  //#endregion
86
- exports.abortReason = abortReason;
87
43
  exports.createAbortScope = createAbortScope;
88
- exports.raceWithAbort = raceWithAbort;
89
44
  exports.throwRejectedOrAbortReason = throwRejectedOrAbortReason;
90
45
 
91
46
  //# sourceMappingURL=abort-scope.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort-scope.cjs","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n\n/**\n * Returns the observable reason for an aborted signal.\n * @param signal - Aborted signal to inspect.\n *\n * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.\n */\nexport function abortReason(signal: AbortSignal): unknown {\n return signal.reason ?? new DOMException('Aborted', 'AbortError')\n}\n\n/**\n * Races a request promise against an abort signal.\n *\n * The underlying request must still receive the same signal so transports can\n * cancel their network work. This helper makes callers stop waiting promptly\n * even when a test double or custom transport ignores the signal.\n *\n * @param promise - Request promise to observe.\n * @param signal - Signal that should stop waiting for the request.\n *\n * @returns The request result if it settles before the signal aborts.\n *\n * @throws The abort reason if the signal aborts first, or the request rejection.\n */\nexport async function raceWithAbort<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n if (signal.aborted) {\n promise.catch(() => {})\n throw abortReason(signal)\n }\n\n let removeAbortListener: (() => void) | undefined\n const abort = new Promise<never>((_, reject) => {\n const onAbort = (): void => reject(abortReason(signal))\n signal.addEventListener('abort', onAbort, { once: true })\n removeAbortListener = () => signal.removeEventListener('abort', onAbort)\n })\n\n try {\n return await Promise.race([promise, abort])\n } catch (err) {\n if (signal.aborted) promise.catch(() => {})\n throw err\n } finally {\n removeAbortListener?.()\n }\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB;;;;;;;AAQA,SAAgB,YAAY,QAA8B;CACxD,OAAO,OAAO,UAAU,IAAI,aAAa,WAAW,YAAY;AAClE;;;;;;;;;;;;;;;AAgBA,eAAsB,cAAiB,SAAqB,QAAiC;CAC3F,IAAI,OAAO,SAAS;EAClB,QAAQ,YAAY,CAAC,CAAC;EACtB,MAAM,YAAY,MAAM;CAC1B;CAEA,IAAI;CACJ,MAAM,QAAQ,IAAI,SAAgB,GAAG,WAAW;EAC9C,MAAM,gBAAsB,OAAO,YAAY,MAAM,CAAC;EACtD,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;EACxD,4BAA4B,OAAO,oBAAoB,SAAS,OAAO;CACzE,CAAC;CAED,IAAI;EACF,OAAO,MAAM,QAAQ,KAAK,CAAC,SAAS,KAAK,CAAC;CAC5C,SAAS,KAAK;EACZ,IAAI,OAAO,SAAS,QAAQ,YAAY,CAAC,CAAC;EAC1C,MAAM;CACR,UAAU;EACR,sBAAsB;CACxB;AACF"}
1
+ {"version":3,"file":"abort-scope.cjs","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB"}
@@ -23,26 +23,4 @@ export declare function createAbortScope(upstream: AbortSignal | undefined): Abo
23
23
  * @throws The abort reason or first rejected task reason.
24
24
  */
25
25
  export declare function throwRejectedOrAbortReason(settled: readonly PromiseSettledResult<unknown>[], abortScope: AbortScope): void;
26
- /**
27
- * Returns the observable reason for an aborted signal.
28
- * @param signal - Aborted signal to inspect.
29
- *
30
- * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.
31
- */
32
- export declare function abortReason(signal: AbortSignal): unknown;
33
- /**
34
- * Races a request promise against an abort signal.
35
- *
36
- * The underlying request must still receive the same signal so transports can
37
- * cancel their network work. This helper makes callers stop waiting promptly
38
- * even when a test double or custom transport ignores the signal.
39
- *
40
- * @param promise - Request promise to observe.
41
- * @param signal - Signal that should stop waiting for the request.
42
- *
43
- * @returns The request result if it settles before the signal aborts.
44
- *
45
- * @throws The abort reason if the signal aborts first, or the request rejection.
46
- */
47
- export declare function raceWithAbort<T>(promise: Promise<T>, signal: AbortSignal): Promise<T>;
48
26
  //# sourceMappingURL=abort-scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAqB3F"}
1
+ {"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN"}
@@ -23,26 +23,4 @@ export declare function createAbortScope(upstream: AbortSignal | undefined): Abo
23
23
  * @throws The abort reason or first rejected task reason.
24
24
  */
25
25
  export declare function throwRejectedOrAbortReason(settled: readonly PromiseSettledResult<unknown>[], abortScope: AbortScope): void;
26
- /**
27
- * Returns the observable reason for an aborted signal.
28
- * @param signal - Aborted signal to inspect.
29
- *
30
- * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.
31
- */
32
- export declare function abortReason(signal: AbortSignal): unknown;
33
- /**
34
- * Races a request promise against an abort signal.
35
- *
36
- * The underlying request must still receive the same signal so transports can
37
- * cancel their network work. This helper makes callers stop waiting promptly
38
- * even when a test double or custom transport ignores the signal.
39
- *
40
- * @param promise - Request promise to observe.
41
- * @param signal - Signal that should stop waiting for the request.
42
- *
43
- * @returns The request result if it settles before the signal aborts.
44
- *
45
- * @throws The abort reason if the signal aborts first, or the request rejection.
46
- */
47
- export declare function raceWithAbort<T>(promise: Promise<T>, signal: AbortSignal): Promise<T>;
48
26
  //# sourceMappingURL=abort-scope.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAExD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAqB3F"}
1
+ {"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN"}
@@ -39,50 +39,7 @@ function throwRejectedOrAbortReason(settled, abortScope) {
39
39
  /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */
40
40
  throw rejected.reason;
41
41
  }
42
- /**
43
- * Returns the observable reason for an aborted signal.
44
- * @param signal - Aborted signal to inspect.
45
- *
46
- * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.
47
- */
48
- function abortReason(signal) {
49
- return signal.reason ?? new DOMException("Aborted", "AbortError");
50
- }
51
- /**
52
- * Races a request promise against an abort signal.
53
- *
54
- * The underlying request must still receive the same signal so transports can
55
- * cancel their network work. This helper makes callers stop waiting promptly
56
- * even when a test double or custom transport ignores the signal.
57
- *
58
- * @param promise - Request promise to observe.
59
- * @param signal - Signal that should stop waiting for the request.
60
- *
61
- * @returns The request result if it settles before the signal aborts.
62
- *
63
- * @throws The abort reason if the signal aborts first, or the request rejection.
64
- */
65
- async function raceWithAbort(promise, signal) {
66
- if (signal.aborted) {
67
- promise.catch(() => {});
68
- throw abortReason(signal);
69
- }
70
- let removeAbortListener;
71
- const abort = new Promise((_, reject) => {
72
- const onAbort = () => reject(abortReason(signal));
73
- signal.addEventListener("abort", onAbort, { once: true });
74
- removeAbortListener = () => signal.removeEventListener("abort", onAbort);
75
- });
76
- try {
77
- return await Promise.race([promise, abort]);
78
- } catch (err) {
79
- if (signal.aborted) promise.catch(() => {});
80
- throw err;
81
- } finally {
82
- removeAbortListener?.();
83
- }
84
- }
85
42
  //#endregion
86
- export { abortReason, createAbortScope, raceWithAbort, throwRejectedOrAbortReason };
43
+ export { createAbortScope, throwRejectedOrAbortReason };
87
44
 
88
45
  //# sourceMappingURL=abort-scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abort-scope.js","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n\n/**\n * Returns the observable reason for an aborted signal.\n * @param signal - Aborted signal to inspect.\n *\n * @returns The signal's reason, or a standard AbortError when the runtime did not provide one.\n */\nexport function abortReason(signal: AbortSignal): unknown {\n return signal.reason ?? new DOMException('Aborted', 'AbortError')\n}\n\n/**\n * Races a request promise against an abort signal.\n *\n * The underlying request must still receive the same signal so transports can\n * cancel their network work. This helper makes callers stop waiting promptly\n * even when a test double or custom transport ignores the signal.\n *\n * @param promise - Request promise to observe.\n * @param signal - Signal that should stop waiting for the request.\n *\n * @returns The request result if it settles before the signal aborts.\n *\n * @throws The abort reason if the signal aborts first, or the request rejection.\n */\nexport async function raceWithAbort<T>(promise: Promise<T>, signal: AbortSignal): Promise<T> {\n if (signal.aborted) {\n promise.catch(() => {})\n throw abortReason(signal)\n }\n\n let removeAbortListener: (() => void) | undefined\n const abort = new Promise<never>((_, reject) => {\n const onAbort = (): void => reject(abortReason(signal))\n signal.addEventListener('abort', onAbort, { once: true })\n removeAbortListener = () => signal.removeEventListener('abort', onAbort)\n })\n\n try {\n return await Promise.race([promise, abort])\n } catch (err) {\n if (signal.aborted) promise.catch(() => {})\n throw err\n } finally {\n removeAbortListener?.()\n }\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB;;;;;;;AAQA,SAAgB,YAAY,QAA8B;CACxD,OAAO,OAAO,UAAU,IAAI,aAAa,WAAW,YAAY;AAClE;;;;;;;;;;;;;;;AAgBA,eAAsB,cAAiB,SAAqB,QAAiC;CAC3F,IAAI,OAAO,SAAS;EAClB,QAAQ,YAAY,CAAC,CAAC;EACtB,MAAM,YAAY,MAAM;CAC1B;CAEA,IAAI;CACJ,MAAM,QAAQ,IAAI,SAAgB,GAAG,WAAW;EAC9C,MAAM,gBAAsB,OAAO,YAAY,MAAM,CAAC;EACtD,OAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;EACxD,4BAA4B,OAAO,oBAAoB,SAAS,OAAO;CACzE,CAAC;CAED,IAAI;EACF,OAAO,MAAM,QAAQ,KAAK,CAAC,SAAS,KAAK,CAAC;CAC5C,SAAS,KAAK;EACZ,IAAI,OAAO,SAAS,QAAQ,YAAY,CAAC,CAAC;EAC1C,MAAM;CACR,UAAU;EACR,sBAAsB;CACxB;AACF"}
1
+ {"version":3,"file":"abort-scope.js","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB"}
@@ -1,4 +1,5 @@
1
1
  const require_errors_index = require("../errors/index.cjs");
2
+ const require_abort = require("../util/abort.cjs");
2
3
  //#region src/upload/finish.ts
3
4
  /**
4
5
  * Calls `b2_finish_large_file` and classifies failures after dispatch that can
@@ -42,16 +43,10 @@ function finishLargeFileResponseBodyErrorWithContext(err, context) {
42
43
  }
43
44
  function isAmbiguousFinishDispatchFailure(err, signal) {
44
45
  if (err instanceof require_errors_index.NetworkError) return true;
45
- if (isTimeoutError(err)) return true;
46
+ if (require_abort.isTimeoutError(err)) return true;
46
47
  if (signal?.aborted !== true) return false;
47
48
  if (signal.reason !== void 0 && Object.is(err, signal.reason)) return true;
48
- return isAbortError(err);
49
- }
50
- function isAbortError(err) {
51
- return err instanceof DOMException && err.name === "AbortError" || err instanceof Error && err.name === "AbortError";
52
- }
53
- function isTimeoutError(err) {
54
- return err instanceof DOMException && err.name === "TimeoutError" || err instanceof Error && err.name === "TimeoutError";
49
+ return require_abort.isAbortError(err);
55
50
  }
56
51
  //#endregion
57
52
  exports.finishLargeFileWithAbortReconciliation = finishLargeFileWithAbortReconciliation;
@@ -1 +1 @@
1
- {"version":3,"file":"finish.cjs","names":[],"sources":["../../src/upload/finish.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport { FinishLargeFileResponseBodyError, NetworkError } from '../errors/index.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { FileVersion } from '../types/file.ts'\nimport type { BucketId, LargeFileId } from '../types/ids.ts'\n\n/** Context for safely finalizing a large file. */\nexport interface FinishLargeFileContext {\n readonly fileId: LargeFileId\n readonly bucketId: BucketId\n readonly fileName: string\n readonly partSha1s: readonly string[]\n readonly signal?: AbortSignal\n readonly retry?: Partial<RetryOptions>\n}\n\n/**\n * Calls `b2_finish_large_file` and classifies failures after dispatch that can\n * hide an already-committed file as ambiguous finish failures.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Finish request data and reconciliation metadata.\n *\n * @returns The completed file version metadata.\n */\nexport async function finishLargeFileWithAbortReconciliation(\n raw: RawClient,\n accountInfo: AccountInfo,\n context: FinishLargeFileContext,\n): Promise<FileVersion> {\n context.signal?.throwIfAborted()\n try {\n return await raw.finishLargeFile(\n accountInfo.getApiUrl(),\n accountInfo.getAuthToken(),\n {\n fileId: context.fileId,\n partSha1Array: context.partSha1s,\n },\n context.signal === undefined && context.retry === undefined\n ? undefined\n : {\n ...(context.signal !== undefined ? { signal: context.signal } : {}),\n ...(context.retry !== undefined ? { retry: context.retry } : {}),\n },\n )\n } catch (err) {\n if (err instanceof FinishLargeFileResponseBodyError) {\n throw finishLargeFileResponseBodyErrorWithContext(err, context)\n }\n if (isAmbiguousFinishDispatchFailure(err, context.signal)) {\n throw new FinishLargeFileResponseBodyError(\n 'b2_finish_large_file failed after dispatch; final file state is ambiguous.',\n {\n cause: err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n },\n )\n }\n throw err\n }\n}\n\nfunction finishLargeFileResponseBodyErrorWithContext(\n err: FinishLargeFileResponseBodyError,\n context: FinishLargeFileContext,\n): FinishLargeFileResponseBodyError {\n if (\n err.fileId === context.fileId &&\n err.bucketId === context.bucketId &&\n err.fileName === context.fileName\n ) {\n return err\n }\n return new FinishLargeFileResponseBodyError(err.message, {\n cause: err.cause ?? err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n })\n}\n\nfunction isAmbiguousFinishDispatchFailure(err: unknown, signal: AbortSignal | undefined): boolean {\n if (err instanceof NetworkError) return true\n if (isTimeoutError(err)) return true\n if (signal?.aborted !== true) return false\n if (signal.reason !== undefined && Object.is(err, signal.reason)) return true\n return isAbortError(err)\n}\n\nfunction isAbortError(err: unknown): boolean {\n return (\n (err instanceof DOMException && err.name === 'AbortError') ||\n (err instanceof Error && err.name === 'AbortError')\n )\n}\n\nfunction isTimeoutError(err: unknown): boolean {\n return (\n (err instanceof DOMException && err.name === 'TimeoutError') ||\n (err instanceof Error && err.name === 'TimeoutError')\n )\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,eAAsB,uCACpB,KACA,aACA,SACsB;CACtB,QAAQ,QAAQ,eAAe;CAC/B,IAAI;EACF,OAAO,MAAM,IAAI,gBACf,YAAY,UAAU,GACtB,YAAY,aAAa,GACzB;GACE,QAAQ,QAAQ;GAChB,eAAe,QAAQ;EACzB,GACA,QAAQ,WAAW,KAAA,KAAa,QAAQ,UAAU,KAAA,IAC9C,KAAA,IACA;GACE,GAAI,QAAQ,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE,CACN;CACF,SAAS,KAAK;EACZ,IAAI,eAAe,qBAAA,kCACjB,MAAM,4CAA4C,KAAK,OAAO;EAEhE,IAAI,iCAAiC,KAAK,QAAQ,MAAM,GACtD,MAAM,IAAI,qBAAA,iCACR,8EACA;GACE,OAAO;GACP,QAAQ,QAAQ;GAChB,UAAU,QAAQ;GAClB,UAAU,QAAQ;EACpB,CACF;EAEF,MAAM;CACR;AACF;AAEA,SAAS,4CACP,KACA,SACkC;CAClC,IACE,IAAI,WAAW,QAAQ,UACvB,IAAI,aAAa,QAAQ,YACzB,IAAI,aAAa,QAAQ,UAEzB,OAAO;CAET,OAAO,IAAI,qBAAA,iCAAiC,IAAI,SAAS;EACvD,OAAO,IAAI,SAAS;EACpB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,UAAU,QAAQ;CACpB,CAAC;AACH;AAEA,SAAS,iCAAiC,KAAc,QAA0C;CAChG,IAAI,eAAe,qBAAA,cAAc,OAAO;CACxC,IAAI,eAAe,GAAG,GAAG,OAAO;CAChC,IAAI,QAAQ,YAAY,MAAM,OAAO;CACrC,IAAI,OAAO,WAAW,KAAA,KAAa,OAAO,GAAG,KAAK,OAAO,MAAM,GAAG,OAAO;CACzE,OAAO,aAAa,GAAG;AACzB;AAEA,SAAS,aAAa,KAAuB;CAC3C,OACG,eAAe,gBAAgB,IAAI,SAAS,gBAC5C,eAAe,SAAS,IAAI,SAAS;AAE1C;AAEA,SAAS,eAAe,KAAuB;CAC7C,OACG,eAAe,gBAAgB,IAAI,SAAS,kBAC5C,eAAe,SAAS,IAAI,SAAS;AAE1C"}
1
+ {"version":3,"file":"finish.cjs","names":[],"sources":["../../src/upload/finish.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport { FinishLargeFileResponseBodyError, NetworkError } from '../errors/index.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { FileVersion } from '../types/file.ts'\nimport type { BucketId, LargeFileId } from '../types/ids.ts'\nimport { isAbortError, isTimeoutError } from '../util/abort.ts'\n\n/** Context for safely finalizing a large file. */\nexport interface FinishLargeFileContext {\n readonly fileId: LargeFileId\n readonly bucketId: BucketId\n readonly fileName: string\n readonly partSha1s: readonly string[]\n readonly signal?: AbortSignal\n readonly retry?: Partial<RetryOptions>\n}\n\n/**\n * Calls `b2_finish_large_file` and classifies failures after dispatch that can\n * hide an already-committed file as ambiguous finish failures.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Finish request data and reconciliation metadata.\n *\n * @returns The completed file version metadata.\n */\nexport async function finishLargeFileWithAbortReconciliation(\n raw: RawClient,\n accountInfo: AccountInfo,\n context: FinishLargeFileContext,\n): Promise<FileVersion> {\n context.signal?.throwIfAborted()\n try {\n return await raw.finishLargeFile(\n accountInfo.getApiUrl(),\n accountInfo.getAuthToken(),\n {\n fileId: context.fileId,\n partSha1Array: context.partSha1s,\n },\n context.signal === undefined && context.retry === undefined\n ? undefined\n : {\n ...(context.signal !== undefined ? { signal: context.signal } : {}),\n ...(context.retry !== undefined ? { retry: context.retry } : {}),\n },\n )\n } catch (err) {\n if (err instanceof FinishLargeFileResponseBodyError) {\n throw finishLargeFileResponseBodyErrorWithContext(err, context)\n }\n if (isAmbiguousFinishDispatchFailure(err, context.signal)) {\n throw new FinishLargeFileResponseBodyError(\n 'b2_finish_large_file failed after dispatch; final file state is ambiguous.',\n {\n cause: err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n },\n )\n }\n throw err\n }\n}\n\nfunction finishLargeFileResponseBodyErrorWithContext(\n err: FinishLargeFileResponseBodyError,\n context: FinishLargeFileContext,\n): FinishLargeFileResponseBodyError {\n if (\n err.fileId === context.fileId &&\n err.bucketId === context.bucketId &&\n err.fileName === context.fileName\n ) {\n return err\n }\n return new FinishLargeFileResponseBodyError(err.message, {\n cause: err.cause ?? err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n })\n}\n\nfunction isAmbiguousFinishDispatchFailure(err: unknown, signal: AbortSignal | undefined): boolean {\n if (err instanceof NetworkError) return true\n if (isTimeoutError(err)) return true\n if (signal?.aborted !== true) return false\n if (signal.reason !== undefined && Object.is(err, signal.reason)) return true\n return isAbortError(err)\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,eAAsB,uCACpB,KACA,aACA,SACsB;CACtB,QAAQ,QAAQ,eAAe;CAC/B,IAAI;EACF,OAAO,MAAM,IAAI,gBACf,YAAY,UAAU,GACtB,YAAY,aAAa,GACzB;GACE,QAAQ,QAAQ;GAChB,eAAe,QAAQ;EACzB,GACA,QAAQ,WAAW,KAAA,KAAa,QAAQ,UAAU,KAAA,IAC9C,KAAA,IACA;GACE,GAAI,QAAQ,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE,CACN;CACF,SAAS,KAAK;EACZ,IAAI,eAAe,qBAAA,kCACjB,MAAM,4CAA4C,KAAK,OAAO;EAEhE,IAAI,iCAAiC,KAAK,QAAQ,MAAM,GACtD,MAAM,IAAI,qBAAA,iCACR,8EACA;GACE,OAAO;GACP,QAAQ,QAAQ;GAChB,UAAU,QAAQ;GAClB,UAAU,QAAQ;EACpB,CACF;EAEF,MAAM;CACR;AACF;AAEA,SAAS,4CACP,KACA,SACkC;CAClC,IACE,IAAI,WAAW,QAAQ,UACvB,IAAI,aAAa,QAAQ,YACzB,IAAI,aAAa,QAAQ,UAEzB,OAAO;CAET,OAAO,IAAI,qBAAA,iCAAiC,IAAI,SAAS;EACvD,OAAO,IAAI,SAAS;EACpB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,UAAU,QAAQ;CACpB,CAAC;AACH;AAEA,SAAS,iCAAiC,KAAc,QAA0C;CAChG,IAAI,eAAe,qBAAA,cAAc,OAAO;CACxC,IAAI,cAAA,eAAe,GAAG,GAAG,OAAO;CAChC,IAAI,QAAQ,YAAY,MAAM,OAAO;CACrC,IAAI,OAAO,WAAW,KAAA,KAAa,OAAO,GAAG,KAAK,OAAO,MAAM,GAAG,OAAO;CACzE,OAAO,cAAA,aAAa,GAAG;AACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"finish.d.ts","sourceRoot":"","sources":["../../src/upload/finish.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE5D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
1
+ {"version":3,"file":"finish.d.ts","sourceRoot":"","sources":["../../src/upload/finish.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG5D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"finish.d.ts","sourceRoot":"","sources":["../../src/upload/finish.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE5D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
1
+ {"version":3,"file":"finish.d.ts","sourceRoot":"","sources":["../../src/upload/finish.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAG5D,kDAAkD;AAClD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,GAAG,EAAE,SAAS,EACd,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAkCtB"}
@@ -1,4 +1,5 @@
1
1
  import { FinishLargeFileResponseBodyError, NetworkError } from "../errors/index.js";
2
+ import { isAbortError, isTimeoutError } from "../util/abort.js";
2
3
  //#region src/upload/finish.ts
3
4
  /**
4
5
  * Calls `b2_finish_large_file` and classifies failures after dispatch that can
@@ -47,12 +48,6 @@ function isAmbiguousFinishDispatchFailure(err, signal) {
47
48
  if (signal.reason !== void 0 && Object.is(err, signal.reason)) return true;
48
49
  return isAbortError(err);
49
50
  }
50
- function isAbortError(err) {
51
- return err instanceof DOMException && err.name === "AbortError" || err instanceof Error && err.name === "AbortError";
52
- }
53
- function isTimeoutError(err) {
54
- return err instanceof DOMException && err.name === "TimeoutError" || err instanceof Error && err.name === "TimeoutError";
55
- }
56
51
  //#endregion
57
52
  export { finishLargeFileWithAbortReconciliation };
58
53
 
@@ -1 +1 @@
1
- {"version":3,"file":"finish.js","names":[],"sources":["../../src/upload/finish.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport { FinishLargeFileResponseBodyError, NetworkError } from '../errors/index.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { FileVersion } from '../types/file.ts'\nimport type { BucketId, LargeFileId } from '../types/ids.ts'\n\n/** Context for safely finalizing a large file. */\nexport interface FinishLargeFileContext {\n readonly fileId: LargeFileId\n readonly bucketId: BucketId\n readonly fileName: string\n readonly partSha1s: readonly string[]\n readonly signal?: AbortSignal\n readonly retry?: Partial<RetryOptions>\n}\n\n/**\n * Calls `b2_finish_large_file` and classifies failures after dispatch that can\n * hide an already-committed file as ambiguous finish failures.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Finish request data and reconciliation metadata.\n *\n * @returns The completed file version metadata.\n */\nexport async function finishLargeFileWithAbortReconciliation(\n raw: RawClient,\n accountInfo: AccountInfo,\n context: FinishLargeFileContext,\n): Promise<FileVersion> {\n context.signal?.throwIfAborted()\n try {\n return await raw.finishLargeFile(\n accountInfo.getApiUrl(),\n accountInfo.getAuthToken(),\n {\n fileId: context.fileId,\n partSha1Array: context.partSha1s,\n },\n context.signal === undefined && context.retry === undefined\n ? undefined\n : {\n ...(context.signal !== undefined ? { signal: context.signal } : {}),\n ...(context.retry !== undefined ? { retry: context.retry } : {}),\n },\n )\n } catch (err) {\n if (err instanceof FinishLargeFileResponseBodyError) {\n throw finishLargeFileResponseBodyErrorWithContext(err, context)\n }\n if (isAmbiguousFinishDispatchFailure(err, context.signal)) {\n throw new FinishLargeFileResponseBodyError(\n 'b2_finish_large_file failed after dispatch; final file state is ambiguous.',\n {\n cause: err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n },\n )\n }\n throw err\n }\n}\n\nfunction finishLargeFileResponseBodyErrorWithContext(\n err: FinishLargeFileResponseBodyError,\n context: FinishLargeFileContext,\n): FinishLargeFileResponseBodyError {\n if (\n err.fileId === context.fileId &&\n err.bucketId === context.bucketId &&\n err.fileName === context.fileName\n ) {\n return err\n }\n return new FinishLargeFileResponseBodyError(err.message, {\n cause: err.cause ?? err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n })\n}\n\nfunction isAmbiguousFinishDispatchFailure(err: unknown, signal: AbortSignal | undefined): boolean {\n if (err instanceof NetworkError) return true\n if (isTimeoutError(err)) return true\n if (signal?.aborted !== true) return false\n if (signal.reason !== undefined && Object.is(err, signal.reason)) return true\n return isAbortError(err)\n}\n\nfunction isAbortError(err: unknown): boolean {\n return (\n (err instanceof DOMException && err.name === 'AbortError') ||\n (err instanceof Error && err.name === 'AbortError')\n )\n}\n\nfunction isTimeoutError(err: unknown): boolean {\n return (\n (err instanceof DOMException && err.name === 'TimeoutError') ||\n (err instanceof Error && err.name === 'TimeoutError')\n )\n}\n"],"mappings":";;;;;;;;;;;;AA2BA,eAAsB,uCACpB,KACA,aACA,SACsB;CACtB,QAAQ,QAAQ,eAAe;CAC/B,IAAI;EACF,OAAO,MAAM,IAAI,gBACf,YAAY,UAAU,GACtB,YAAY,aAAa,GACzB;GACE,QAAQ,QAAQ;GAChB,eAAe,QAAQ;EACzB,GACA,QAAQ,WAAW,KAAA,KAAa,QAAQ,UAAU,KAAA,IAC9C,KAAA,IACA;GACE,GAAI,QAAQ,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE,CACN;CACF,SAAS,KAAK;EACZ,IAAI,eAAe,kCACjB,MAAM,4CAA4C,KAAK,OAAO;EAEhE,IAAI,iCAAiC,KAAK,QAAQ,MAAM,GACtD,MAAM,IAAI,iCACR,8EACA;GACE,OAAO;GACP,QAAQ,QAAQ;GAChB,UAAU,QAAQ;GAClB,UAAU,QAAQ;EACpB,CACF;EAEF,MAAM;CACR;AACF;AAEA,SAAS,4CACP,KACA,SACkC;CAClC,IACE,IAAI,WAAW,QAAQ,UACvB,IAAI,aAAa,QAAQ,YACzB,IAAI,aAAa,QAAQ,UAEzB,OAAO;CAET,OAAO,IAAI,iCAAiC,IAAI,SAAS;EACvD,OAAO,IAAI,SAAS;EACpB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,UAAU,QAAQ;CACpB,CAAC;AACH;AAEA,SAAS,iCAAiC,KAAc,QAA0C;CAChG,IAAI,eAAe,cAAc,OAAO;CACxC,IAAI,eAAe,GAAG,GAAG,OAAO;CAChC,IAAI,QAAQ,YAAY,MAAM,OAAO;CACrC,IAAI,OAAO,WAAW,KAAA,KAAa,OAAO,GAAG,KAAK,OAAO,MAAM,GAAG,OAAO;CACzE,OAAO,aAAa,GAAG;AACzB;AAEA,SAAS,aAAa,KAAuB;CAC3C,OACG,eAAe,gBAAgB,IAAI,SAAS,gBAC5C,eAAe,SAAS,IAAI,SAAS;AAE1C;AAEA,SAAS,eAAe,KAAuB;CAC7C,OACG,eAAe,gBAAgB,IAAI,SAAS,kBAC5C,eAAe,SAAS,IAAI,SAAS;AAE1C"}
1
+ {"version":3,"file":"finish.js","names":[],"sources":["../../src/upload/finish.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport { FinishLargeFileResponseBodyError, NetworkError } from '../errors/index.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { FileVersion } from '../types/file.ts'\nimport type { BucketId, LargeFileId } from '../types/ids.ts'\nimport { isAbortError, isTimeoutError } from '../util/abort.ts'\n\n/** Context for safely finalizing a large file. */\nexport interface FinishLargeFileContext {\n readonly fileId: LargeFileId\n readonly bucketId: BucketId\n readonly fileName: string\n readonly partSha1s: readonly string[]\n readonly signal?: AbortSignal\n readonly retry?: Partial<RetryOptions>\n}\n\n/**\n * Calls `b2_finish_large_file` and classifies failures after dispatch that can\n * hide an already-committed file as ambiguous finish failures.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Finish request data and reconciliation metadata.\n *\n * @returns The completed file version metadata.\n */\nexport async function finishLargeFileWithAbortReconciliation(\n raw: RawClient,\n accountInfo: AccountInfo,\n context: FinishLargeFileContext,\n): Promise<FileVersion> {\n context.signal?.throwIfAborted()\n try {\n return await raw.finishLargeFile(\n accountInfo.getApiUrl(),\n accountInfo.getAuthToken(),\n {\n fileId: context.fileId,\n partSha1Array: context.partSha1s,\n },\n context.signal === undefined && context.retry === undefined\n ? undefined\n : {\n ...(context.signal !== undefined ? { signal: context.signal } : {}),\n ...(context.retry !== undefined ? { retry: context.retry } : {}),\n },\n )\n } catch (err) {\n if (err instanceof FinishLargeFileResponseBodyError) {\n throw finishLargeFileResponseBodyErrorWithContext(err, context)\n }\n if (isAmbiguousFinishDispatchFailure(err, context.signal)) {\n throw new FinishLargeFileResponseBodyError(\n 'b2_finish_large_file failed after dispatch; final file state is ambiguous.',\n {\n cause: err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n },\n )\n }\n throw err\n }\n}\n\nfunction finishLargeFileResponseBodyErrorWithContext(\n err: FinishLargeFileResponseBodyError,\n context: FinishLargeFileContext,\n): FinishLargeFileResponseBodyError {\n if (\n err.fileId === context.fileId &&\n err.bucketId === context.bucketId &&\n err.fileName === context.fileName\n ) {\n return err\n }\n return new FinishLargeFileResponseBodyError(err.message, {\n cause: err.cause ?? err,\n fileId: context.fileId,\n bucketId: context.bucketId,\n fileName: context.fileName,\n })\n}\n\nfunction isAmbiguousFinishDispatchFailure(err: unknown, signal: AbortSignal | undefined): boolean {\n if (err instanceof NetworkError) return true\n if (isTimeoutError(err)) return true\n if (signal?.aborted !== true) return false\n if (signal.reason !== undefined && Object.is(err, signal.reason)) return true\n return isAbortError(err)\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,eAAsB,uCACpB,KACA,aACA,SACsB;CACtB,QAAQ,QAAQ,eAAe;CAC/B,IAAI;EACF,OAAO,MAAM,IAAI,gBACf,YAAY,UAAU,GACtB,YAAY,aAAa,GACzB;GACE,QAAQ,QAAQ;GAChB,eAAe,QAAQ;EACzB,GACA,QAAQ,WAAW,KAAA,KAAa,QAAQ,UAAU,KAAA,IAC9C,KAAA,IACA;GACE,GAAI,QAAQ,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GACjE,GAAI,QAAQ,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EAChE,CACN;CACF,SAAS,KAAK;EACZ,IAAI,eAAe,kCACjB,MAAM,4CAA4C,KAAK,OAAO;EAEhE,IAAI,iCAAiC,KAAK,QAAQ,MAAM,GACtD,MAAM,IAAI,iCACR,8EACA;GACE,OAAO;GACP,QAAQ,QAAQ;GAChB,UAAU,QAAQ;GAClB,UAAU,QAAQ;EACpB,CACF;EAEF,MAAM;CACR;AACF;AAEA,SAAS,4CACP,KACA,SACkC;CAClC,IACE,IAAI,WAAW,QAAQ,UACvB,IAAI,aAAa,QAAQ,YACzB,IAAI,aAAa,QAAQ,UAEzB,OAAO;CAET,OAAO,IAAI,iCAAiC,IAAI,SAAS;EACvD,OAAO,IAAI,SAAS;EACpB,QAAQ,QAAQ;EAChB,UAAU,QAAQ;EAClB,UAAU,QAAQ;CACpB,CAAC;AACH;AAEA,SAAS,iCAAiC,KAAc,QAA0C;CAChG,IAAI,eAAe,cAAc,OAAO;CACxC,IAAI,eAAe,GAAG,GAAG,OAAO;CAChC,IAAI,QAAQ,YAAY,MAAM,OAAO;CACrC,IAAI,OAAO,WAAW,KAAA,KAAa,OAAO,GAAG,KAAK,OAAO,MAAM,GAAG,OAAO;CACzE,OAAO,aAAa,GAAG;AACzB"}
@@ -2,6 +2,7 @@ const require_abort_scope = require("./abort-scope.cjs");
2
2
  const require_errors_index = require("../errors/index.cjs");
3
3
  const require_cancel = require("./cancel.cjs");
4
4
  const require_concurrency = require("./concurrency.cjs");
5
+ const require_abort = require("../util/abort.cjs");
5
6
  const require_finish = require("./finish.cjs");
6
7
  require("../util/defaults.cjs");
7
8
  const require_plan_ranges = require("../util/plan-ranges.cjs");
@@ -19,8 +20,9 @@ function createResumeCandidateCriteria(options, request, totalSize, partSize, pa
19
20
  sourceSize: totalSize,
20
21
  partSize,
21
22
  parts,
23
+ ...options.customUploadTimestamp !== void 0 ? { customUploadTimestamp: options.customUploadTimestamp } : {},
22
24
  ...options.signal !== void 0 ? { signal: options.signal } : {},
23
- ...request.serverSideEncryption !== void 0 ? { serverSideEncryption: request.serverSideEncryption } : options.bucketDefaultServerSideEncryption !== void 0 ? { serverSideEncryption: options.bucketDefaultServerSideEncryption } : {},
25
+ ...request.serverSideEncryption !== void 0 ? { serverSideEncryption: request.serverSideEncryption } : options.bucketDefaultServerSideEncryption !== void 0 ? { serverSideEncryption: options.bucketDefaultServerSideEncryption } : options.bucketDefaultServerSideEncryptionUnreadable === true ? { defaultServerSideEncryptionUnreadable: true } : {},
24
26
  ...request.fileRetention !== void 0 ? { fileRetention: request.fileRetention } : options.bucketDefaultRetention !== void 0 ? { defaultFileRetention: options.bucketDefaultRetention } : options.bucketDefaultRetentionUnreadable === true ? { defaultFileRetentionUnreadable: true } : {},
25
27
  ...request.legalHold !== void 0 ? { legalHold: request.legalHold } : {},
26
28
  ...options.resumeDiscoveryTimeoutMs !== void 0 ? { discoveryTimeoutMs: options.resumeDiscoveryTimeoutMs } : {},
@@ -55,11 +57,13 @@ async function uploadLargeFile(raw, accountInfo, options) {
55
57
  const parts = require_plan_ranges.planRanges(totalSize, partSize);
56
58
  const fileInfo = Object.create(null);
57
59
  if (options.fileInfo !== void 0) for (const [key, value] of Object.entries(options.fileInfo)) fileInfo[key] = value;
60
+ if (options.lastModifiedMillis !== void 0) fileInfo["src_last_modified_millis"] = String(options.lastModifiedMillis);
58
61
  const startLargeFileRequest = {
59
62
  bucketId: options.bucketId,
60
63
  fileName: options.fileName,
61
64
  contentType: options.contentType ?? "b2/x-auto",
62
65
  fileInfo,
66
+ ...options.customUploadTimestamp !== void 0 ? { customUploadTimestamp: String(options.customUploadTimestamp) } : {},
63
67
  ...options.serverSideEncryption !== void 0 ? { serverSideEncryption: options.serverSideEncryption } : {},
64
68
  ...options.fileRetention !== void 0 ? { fileRetention: options.fileRetention } : {},
65
69
  ...options.legalHold !== void 0 ? { legalHold: options.legalHold } : {}
@@ -69,6 +73,7 @@ async function uploadLargeFile(raw, accountInfo, options) {
69
73
  let largeFileId;
70
74
  let preUploaded = /* @__PURE__ */ new Map();
71
75
  let createdLargeFile = false;
76
+ let tracker;
72
77
  const abortScope = require_abort_scope.createAbortScope(options.signal);
73
78
  const startFreshLargeFile = async () => {
74
79
  if (abortScope.signal.aborted && !options.source.canSlice) await cancelForwardOnlySource(options.source, abortScope.signal.reason);
@@ -78,7 +83,7 @@ async function uploadLargeFile(raw, accountInfo, options) {
78
83
  ...options.retry !== void 0 ? { retry: options.retry } : {}
79
84
  });
80
85
  try {
81
- largeFileId = (await require_abort_scope.raceWithAbort(startPromise, abortScope.signal)).fileId;
86
+ largeFileId = (await require_abort.raceWithAbort(startPromise, abortScope.signal)).fileId;
82
87
  } catch (err) {
83
88
  if (abortScope.signal.aborted) {
84
89
  if (!options.source.canSlice) await cancelForwardOnlySource(options.source, abortScope.signal.reason).catch(() => {});
@@ -110,10 +115,11 @@ async function uploadLargeFile(raw, accountInfo, options) {
110
115
  const activeLargeFileId = largeFileId;
111
116
  if (activeLargeFileId === void 0) throw new Error("uploadLargeFile: start did not return a large file ID.");
112
117
  const partSha1s = new Array(parts.length);
113
- const tracker = new require_progress.ProgressTracker(options.onProgress, totalSize, parts.length);
118
+ const uploadTracker = new require_progress.ProgressTracker(options.onProgress, totalSize, parts.length, { ...options.progressIntervalMillis !== void 0 ? { minIntervalMs: options.progressIntervalMillis } : {} });
119
+ tracker = uploadTracker;
114
120
  const sem = new require_concurrency.Semaphore(concurrency);
115
121
  if (!options.source.canSlice) {
116
- await uploadPartsSequentially(raw, accountInfo, options, activeLargeFileId, parts, partSha1s, tracker, abortScope.signal);
122
+ await uploadPartsSequentially(raw, accountInfo, options, activeLargeFileId, parts, partSha1s, uploadTracker, abortScope.signal);
117
123
  return await require_finish.finishLargeFileWithAbortReconciliation(raw, accountInfo, {
118
124
  fileId: activeLargeFileId,
119
125
  bucketId: options.bucketId,
@@ -144,8 +150,8 @@ async function uploadLargeFile(raw, accountInfo, options) {
144
150
  contentSha1: serverSha1
145
151
  });
146
152
  partSha1s[part.partNumber - 1] = serverSha1;
147
- tracker.addBytes(data.byteLength);
148
- tracker.completePart();
153
+ uploadTracker.addBytes(data.byteLength);
154
+ uploadTracker.completePart();
149
155
  return;
150
156
  }
151
157
  const result = await require_retry.uploadPartWithFreshUrl(raw, accountInfo, activeLargeFileId, {
@@ -161,8 +167,8 @@ async function uploadLargeFile(raw, accountInfo, options) {
161
167
  ...options.serverSideEncryption !== void 0 ? { serverSideEncryption: options.serverSideEncryption } : {}
162
168
  });
163
169
  partSha1s[part.partNumber - 1] = result.contentSha1;
164
- tracker.addBytes(data.byteLength);
165
- tracker.completePart();
170
+ uploadTracker.addBytes(data.byteLength);
171
+ uploadTracker.completePart();
166
172
  } catch (err) {
167
173
  abortScope.abort(err);
168
174
  throw err;
@@ -184,6 +190,7 @@ async function uploadLargeFile(raw, accountInfo, options) {
184
190
  if (largeFileId === void 0) throw err;
185
191
  return await cleanupAfterUploadLargeFileError(err, raw, accountInfo, options, largeFileId, createdLargeFile);
186
192
  } finally {
193
+ tracker?.dispose();
187
194
  abortScope.dispose();
188
195
  }
189
196
  }