@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
package/dist/bucket.cjs CHANGED
@@ -1,3 +1,4 @@
1
+ const require_file = require("./types/file.cjs");
1
2
  const require_ids = require("./types/ids.cjs");
2
3
  const require_concurrency = require("./upload/concurrency.cjs");
3
4
  require("./util/defaults.cjs");
@@ -11,6 +12,14 @@ const require_to_error = require("./util/to-error.cjs");
11
12
  const require_object = require("./object.cjs");
12
13
  const require_paginator = require("./util/paginator.cjs");
13
14
  //#region src/bucket.ts
15
+ var EMPTY_REPLICATION_CONFIGURATION = {
16
+ asReplicationSource: null,
17
+ asReplicationDestination: null
18
+ };
19
+ function readableReplicationConfigurationOrEmpty(response, operation) {
20
+ if (!response.isClientAuthorizedToRead) throw new Error(`${operation}: replication configuration is not readable; grant readBucketReplications before composing replication updates`);
21
+ return response.value ?? EMPTY_REPLICATION_CONFIGURATION;
22
+ }
14
23
  function bucketDefaultRetentionSnapshot(info) {
15
24
  const fileLock = info.fileLockConfiguration;
16
25
  if (!fileLock.isClientAuthorizedToRead) return { unreadable: true };
@@ -20,9 +29,69 @@ function bucketDefaultRetentionSnapshot(info) {
20
29
  unreadable: false
21
30
  };
22
31
  }
32
+ function bucketDefaultServerSideEncryptionSnapshot(info) {
33
+ const encryption = info.defaultServerSideEncryption;
34
+ if (!encryption.isClientAuthorizedToRead) return { unreadable: true };
35
+ if (encryption.value === null) return { unreadable: false };
36
+ return {
37
+ encryption: encryption.value,
38
+ unreadable: false
39
+ };
40
+ }
23
41
  function resumeNeedsFreshBucketDefaults(options) {
24
42
  return (options.resume === true || options.resumeFileId !== void 0) && (options.serverSideEncryption === void 0 || options.fileRetention === void 0);
25
43
  }
44
+ function listedVersionFileIdOrThrow(version) {
45
+ const fileId = version.fileId;
46
+ if (typeof fileId === "string") return fileId;
47
+ throw new Error(`deleteAll: listFileVersions returned a row without a fileId for ${JSON.stringify(version.fileName)}; delimiter folder rows are invalid because deleteAll does not request delimiter grouping`);
48
+ }
49
+ function listedFileIdOrThrow(version, operation) {
50
+ if (typeof version.fileId === "string") return version.fileId;
51
+ throw new Error(`${operation}: list response returned a row without a string fileId for ${JSON.stringify(version.fileName)}`);
52
+ }
53
+ function assertNotFolderListEntry(version, operation) {
54
+ if (version.action !== require_file.FileAction.Folder) return;
55
+ throw new Error(`${operation}: list response returned a delimiter folder row for ${JSON.stringify(version.fileName)} without requesting delimiter grouping`);
56
+ }
57
+ function validateListedConcreteEntry(version, operation) {
58
+ assertNotFolderListEntry(version, operation);
59
+ listedFileIdOrThrow(version, operation);
60
+ return version;
61
+ }
62
+ function validateListedNameEntry(version, operation, options) {
63
+ if (version.action === require_file.FileAction.Folder) {
64
+ if (options.allowFolder) return version;
65
+ throw new Error(`${operation}: list response returned a delimiter folder row for ${JSON.stringify(version.fileName)} without requesting delimiter grouping`);
66
+ }
67
+ if (version.action === require_file.FileAction.Hide) throw new Error(`${operation}: list response returned a hide marker for ${JSON.stringify(version.fileName)}; b2_list_file_names only returns visible file versions`);
68
+ listedFileIdOrThrow(version, operation);
69
+ return version;
70
+ }
71
+ function validateListFileNamesResponse(response, options) {
72
+ const files = response.files.map((version) => validateListedNameEntry(version, "listFileNames", options));
73
+ return {
74
+ ...response,
75
+ files
76
+ };
77
+ }
78
+ function validateListFileVersionsResponse(response, options) {
79
+ if (options.allowFolder) {
80
+ const files = response.files.map((version) => {
81
+ if (version.action === require_file.FileAction.Folder) return version;
82
+ return validateListedConcreteEntry(version, "listFileVersions");
83
+ });
84
+ return {
85
+ ...response,
86
+ files
87
+ };
88
+ }
89
+ const files = response.files.map((version) => validateListedConcreteEntry(version, "listFileVersions"));
90
+ return {
91
+ ...response,
92
+ files
93
+ };
94
+ }
26
95
  /**
27
96
  * Handle to a B2 bucket providing upload, download, listing, and management operations.
28
97
  *
@@ -80,11 +149,13 @@ var Bucket = class {
80
149
  if (isLarge) {
81
150
  const bucketInfo = resumeNeedsFreshBucketDefaults(options) ? await this.refresh() : this.info;
82
151
  const bucketDefaultRetention = bucketDefaultRetentionSnapshot(bucketInfo);
152
+ const bucketDefaultSse = bucketDefaultServerSideEncryptionSnapshot(bucketInfo);
83
153
  return require_large$1.uploadLargeFile(this.client.raw, this.client.accountInfo, {
84
154
  ...options,
85
155
  bucketId: this.id,
86
156
  retry: uploadRetryOptions,
87
- bucketDefaultServerSideEncryption: bucketInfo.defaultServerSideEncryption,
157
+ ...bucketDefaultSse.encryption !== void 0 ? { bucketDefaultServerSideEncryption: bucketDefaultSse.encryption } : {},
158
+ ...bucketDefaultSse.unreadable ? { bucketDefaultServerSideEncryptionUnreadable: true } : {},
88
159
  ...bucketDefaultRetention.retention !== void 0 ? { bucketDefaultRetention: bucketDefaultRetention.retention } : {},
89
160
  ...bucketDefaultRetention.unreadable ? { bucketDefaultRetentionUnreadable: true } : {}
90
161
  });
@@ -142,29 +213,18 @@ var Bucket = class {
142
213
  ...options
143
214
  });
144
215
  }
145
- /**
146
- * Lists file names in this bucket (most recent versions only).
147
- * @param options - Optional filtering and pagination settings.
148
- *
149
- * @returns A page of file versions with an optional continuation token.
150
- */
151
216
  async listFileNames(options) {
152
- return this.client.raw.listFileNames(this.client.accountInfo.getApiUrl(), this.client.accountInfo.getAuthToken(), {
217
+ const response = await this.client.raw.listFileNames(this.client.accountInfo.getApiUrl(), this.client.accountInfo.getAuthToken(), {
153
218
  bucketId: this.id,
154
219
  ...options?.startFileName !== void 0 ? { startFileName: options.startFileName } : {},
155
220
  ...options?.pageSize !== void 0 ? { maxFileCount: options.pageSize } : {},
156
221
  ...options?.prefix !== void 0 ? { prefix: options.prefix } : {},
157
222
  ...options?.delimiter !== void 0 ? { delimiter: options.delimiter } : {}
158
223
  }, { ...options?.signal !== void 0 ? { signal: options.signal } : {} });
224
+ return options?.delimiter !== void 0 ? validateListFileNamesResponse(response, { allowFolder: true }) : validateListFileNamesResponse(response, { allowFolder: false });
159
225
  }
160
- /**
161
- * Lists all file versions in this bucket, including hidden files.
162
- * @param options - Optional filtering and pagination settings.
163
- *
164
- * @returns A page of file versions with an optional continuation token.
165
- */
166
226
  async listFileVersions(options) {
167
- return this.client.raw.listFileVersions(this.client.accountInfo.getApiUrl(), this.client.accountInfo.getAuthToken(), {
227
+ const response = await this.client.raw.listFileVersions(this.client.accountInfo.getApiUrl(), this.client.accountInfo.getAuthToken(), {
168
228
  bucketId: this.id,
169
229
  ...options?.startFileName !== void 0 ? { startFileName: options.startFileName } : {},
170
230
  ...options?.startFileId !== void 0 ? { startFileId: options.startFileId } : {},
@@ -172,65 +232,39 @@ var Bucket = class {
172
232
  ...options?.prefix !== void 0 ? { prefix: options.prefix } : {},
173
233
  ...options?.delimiter !== void 0 ? { delimiter: options.delimiter } : {}
174
234
  }, { ...options?.signal !== void 0 ? { signal: options.signal } : {} });
235
+ return options?.delimiter !== void 0 ? validateListFileVersionsResponse(response, { allowFolder: true }) : validateListFileVersionsResponse(response, { allowFolder: false });
175
236
  }
176
- /**
177
- * Async iterator that yields the latest visible version of every file in
178
- * the bucket, automatically handling pagination via `listFileNames`.
179
- *
180
- * Hidden files (those whose latest version is a hide marker) are NOT
181
- * yielded by this iterator. Use {@link paginateFileVersions} when you
182
- * need full version history.
183
- *
184
- * @param options - Filter + pagination + abort options. `pageSize` is
185
- * forwarded to `b2_list_file_names`'s `maxFileCount` (default 1000,
186
- * B2-capped at 10000).
187
- *
188
- * @returns An async iterable of {@link FileVersion} entries.
189
- *
190
- * @example
191
- * ```ts
192
- * for await (const file of bucket.paginateFileNames({ prefix: 'photos/' })) {
193
- * console.log(file.fileName, file.contentLength)
194
- * }
195
- * ```
196
- */
197
237
  paginateFileNames(options) {
198
238
  return require_paginator.paginateItems(async (cursor) => {
199
- const resp = await this.listFileNames({
239
+ const request = {
200
240
  pageSize: options?.pageSize ?? 1e3,
201
241
  ...cursor !== void 0 ? { startFileName: cursor } : {},
202
242
  ...options?.prefix !== void 0 ? { prefix: options.prefix } : {},
203
- ...options?.delimiter !== void 0 ? { delimiter: options.delimiter } : {},
204
243
  ...options?.signal !== void 0 ? { signal: options.signal } : {}
205
- });
244
+ };
245
+ const resp = options?.delimiter !== void 0 ? await this.listFileNames({
246
+ ...request,
247
+ delimiter: options.delimiter
248
+ }) : await this.listFileNames(request);
206
249
  return {
207
250
  page: resp,
208
251
  nextCursor: resp.nextFileName ?? void 0
209
252
  };
210
- }, (page) => page.files.filter((f) => f.action !== "hide"), options?.signal);
253
+ }, (page) => page.files, options?.signal);
211
254
  }
212
- /**
213
- * Async iterator that yields every version of every file in the bucket,
214
- * including hidden files and historical versions, automatically handling
215
- * pagination via `listFileVersions`.
216
- *
217
- * The two-cursor `(nextFileName, nextFileId)` continuation that the raw
218
- * endpoint exposes is threaded internally; callers iterate flat.
219
- *
220
- * @param options - Filter + pagination + abort options.
221
- *
222
- * @returns An async iterable of {@link FileVersion} entries.
223
- */
224
255
  paginateFileVersions(options) {
225
256
  return require_paginator.paginateItems(async (cursor) => {
226
- const resp = await this.listFileVersions({
257
+ const request = {
227
258
  pageSize: options?.pageSize ?? 1e3,
228
259
  ...cursor !== void 0 ? { startFileName: cursor.fileName } : {},
229
260
  ...cursor?.fileId !== void 0 ? { startFileId: cursor.fileId } : {},
230
261
  ...options?.prefix !== void 0 ? { prefix: options.prefix } : {},
231
- ...options?.delimiter !== void 0 ? { delimiter: options.delimiter } : {},
232
262
  ...options?.signal !== void 0 ? { signal: options.signal } : {}
233
- });
263
+ };
264
+ const resp = options?.delimiter !== void 0 ? await this.listFileVersions({
265
+ ...request,
266
+ delimiter: options.delimiter
267
+ }) : await this.listFileVersions(request);
234
268
  return {
235
269
  page: resp,
236
270
  nextCursor: resp.nextFileName !== null ? {
@@ -293,7 +327,7 @@ var Bucket = class {
293
327
  /**
294
328
  * Looks up the latest visible version of a file by name.
295
329
  * Uses `listFileNames` under the hood; returns `null` when the file does not
296
- * exist or its latest version is a hide marker.
330
+ * exist or is hidden.
297
331
  * @param fileName - The exact file path to look up.
298
332
  *
299
333
  * @returns The latest {@link FileVersion}, or `null` if not found.
@@ -303,7 +337,7 @@ var Bucket = class {
303
337
  prefix: fileName,
304
338
  pageSize: 1
305
339
  })).files.find((f) => f.fileName === fileName);
306
- if (!match || match.action === "hide") return null;
340
+ if (!match) return null;
307
341
  return match;
308
342
  }
309
343
  /**
@@ -312,7 +346,7 @@ var Bucket = class {
312
346
  * no hide marker to remove (file is already visible or does not exist).
313
347
  * @param fileName - The file path to unhide.
314
348
  *
315
- * @returns The deleted hide marker version, or `null` if nothing was hidden.
349
+ * @returns The deleted listed hide-marker row, or `null` if nothing was hidden.
316
350
  */
317
351
  async unhideFile(fileName) {
318
352
  const versions = (await this.listFileVersions({
@@ -321,8 +355,10 @@ var Bucket = class {
321
355
  })).files.filter((f) => f.fileName === fileName);
322
356
  if (versions.length === 0) return null;
323
357
  const latest = versions[0];
324
- if (latest?.action !== "hide") return null;
325
- await this.deleteFileVersion(fileName, latest.fileId);
358
+ if (latest?.action !== require_file.FileAction.Hide) return null;
359
+ const latestFileId = latest.fileId;
360
+ if (typeof latestFileId !== "string") throw new Error(`unhideFile: listFileVersions returned a hide marker without a fileId for ${JSON.stringify(fileName)}`);
361
+ await this.deleteFileVersion(fileName, latestFileId);
326
362
  return latest;
327
363
  }
328
364
  /**
@@ -402,7 +438,8 @@ var Bucket = class {
402
438
  * @returns A summary of successes and per-target errors.
403
439
  */
404
440
  async deleteMany(targets, options) {
405
- const sem = new require_concurrency.Semaphore(options?.concurrency ?? 10);
441
+ const concurrency = options?.concurrency ?? 10;
442
+ const sem = new require_concurrency.Semaphore(concurrency);
406
443
  const signal = options?.signal;
407
444
  let deleted = 0;
408
445
  const errors = [];
@@ -454,26 +491,27 @@ var Bucket = class {
454
491
  ...startFileId !== void 0 ? { startFileId } : {}
455
492
  });
456
493
  for (const version of page.files) {
494
+ const fileId = listedVersionFileIdOrThrow(version);
457
495
  if (dryRun) {
458
496
  yield {
459
497
  type: "skip",
460
498
  fileName: version.fileName,
461
- fileId: version.fileId
499
+ fileId
462
500
  };
463
501
  continue;
464
502
  }
465
503
  try {
466
- await this.deleteFileVersion(version.fileName, version.fileId);
504
+ await this.deleteFileVersion(version.fileName, fileId);
467
505
  yield {
468
506
  type: "delete",
469
507
  fileName: version.fileName,
470
- fileId: version.fileId
508
+ fileId
471
509
  };
472
510
  } catch (err) {
473
511
  yield {
474
512
  type: "error",
475
513
  fileName: version.fileName,
476
- fileId: version.fileId,
514
+ fileId,
477
515
  message: require_to_error.toError(err).message
478
516
  };
479
517
  }
@@ -527,10 +565,18 @@ var Bucket = class {
527
565
  * @returns Updated bucket metadata.
528
566
  */
529
567
  async update(options) {
568
+ const { bucketInfo, bucketType, corsRules, defaultRetention, defaultServerSideEncryption, ifRevisionIs, lifecycleRules, replicationConfiguration } = options;
530
569
  return this.client.raw.updateBucket(this.client.accountInfo.getApiUrl(), this.client.accountInfo.getAuthToken(), {
570
+ ...bucketType !== void 0 ? { bucketType } : {},
571
+ ...bucketInfo !== void 0 ? { bucketInfo } : {},
572
+ ...corsRules !== void 0 ? { corsRules } : {},
573
+ ...defaultServerSideEncryption !== void 0 ? { defaultServerSideEncryption } : {},
574
+ ...defaultRetention !== void 0 ? { defaultRetention } : {},
575
+ ...lifecycleRules !== void 0 ? { lifecycleRules } : {},
576
+ ...replicationConfiguration !== void 0 ? { replicationConfiguration } : {},
577
+ ...ifRevisionIs !== void 0 ? { ifRevisionIs } : {},
531
578
  accountId: require_ids.accountId(this.client.accountInfo.getAccountId()),
532
- bucketId: this.id,
533
- ...options
579
+ bucketId: this.id
534
580
  });
535
581
  }
536
582
  /**
@@ -637,7 +683,9 @@ var Bucket = class {
637
683
  * write. For add/remove flows the helper methods below handle the
638
684
  * refresh-then-set sequence for you.
639
685
  *
640
- * @returns The current {@link ReplicationConfiguration}.
686
+ * @returns The current readable replication wrapper. Its `value` is null
687
+ * when no replication is configured or when the caller is not authorized
688
+ * to read replication settings.
641
689
  */
642
690
  async getReplication() {
643
691
  return (await this.refresh()).replicationConfiguration;
@@ -671,9 +719,10 @@ var Bucket = class {
671
719
  *
672
720
  * @throws If no source-side replication exists yet and the caller did
673
721
  * not supply `sourceApplicationKeyId`.
722
+ * @throws If the caller is not authorized to read current replication settings.
674
723
  */
675
724
  async addReplicationRule(rule, options) {
676
- const current = (await this.refresh()).replicationConfiguration;
725
+ const current = readableReplicationConfigurationOrEmpty((await this.refresh()).replicationConfiguration, "addReplicationRule");
677
726
  const existingSource = current.asReplicationSource;
678
727
  const sourceKey = options?.sourceApplicationKeyId ?? existingSource?.sourceApplicationKeyId;
679
728
  if (!sourceKey) throw new Error("addReplicationRule: no existing source-side replication; pass options.sourceApplicationKeyId");
@@ -693,9 +742,11 @@ var Bucket = class {
693
742
  * @param replicationRuleName - Name of the rule to remove.
694
743
  *
695
744
  * @returns The updated bucket metadata.
745
+ *
746
+ * @throws If the caller is not authorized to read current replication settings.
696
747
  */
697
748
  async removeReplicationRule(replicationRuleName) {
698
- const current = (await this.refresh()).replicationConfiguration;
749
+ const current = readableReplicationConfigurationOrEmpty((await this.refresh()).replicationConfiguration, "removeReplicationRule");
699
750
  const existingSource = current.asReplicationSource;
700
751
  if (!existingSource) return this.setReplication(current);
701
752
  const filtered = existingSource.replicationRules.filter((r) => r.replicationRuleName !== replicationRuleName);
@@ -758,12 +809,12 @@ var Bucket = class {
758
809
  * Returns the current default Object Lock retention policy for new
759
810
  * uploads to this bucket, refetched from B2.
760
811
  *
761
- * @returns The default {@link BucketRetentionPolicy} (which may be
762
- * `{ mode: 'none', period: null }` when Object Lock is enabled on the
763
- * bucket but no default is set).
812
+ * @returns The default {@link BucketDefaultRetention}, or `undefined` if
813
+ * the file lock configuration is not readable. B2 represents no bucket
814
+ * default retention as `{ mode: null, period: null }`.
764
815
  */
765
816
  async getDefaultRetention() {
766
- return (await this.refresh()).defaultRetention;
817
+ return bucketDefaultRetentionSnapshot(await this.refresh()).retention;
767
818
  }
768
819
  /**
769
820
  * Sets (or clears, by passing `{ mode: 'none', period: null }`) the