@backblaze-labs/b2-sdk 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/README.md +20 -2
  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/backup/client.cjs +206 -0
  7. package/dist/backup/client.cjs.map +1 -0
  8. package/dist/backup/client.d.cts +238 -0
  9. package/dist/backup/client.d.cts.map +1 -0
  10. package/dist/backup/client.d.ts +238 -0
  11. package/dist/backup/client.d.ts.map +1 -0
  12. package/dist/backup/client.js +206 -0
  13. package/dist/backup/client.js.map +1 -0
  14. package/dist/backup/index.cjs +15 -0
  15. package/dist/backup/index.d.cts +22 -0
  16. package/dist/backup/index.d.cts.map +1 -0
  17. package/dist/backup/index.d.ts +22 -0
  18. package/dist/backup/index.d.ts.map +1 -0
  19. package/dist/backup/index.js +7 -0
  20. package/dist/backup/raw.cjs +146 -0
  21. package/dist/backup/raw.cjs.map +1 -0
  22. package/dist/backup/raw.d.cts +122 -0
  23. package/dist/backup/raw.d.cts.map +1 -0
  24. package/dist/backup/raw.d.ts +122 -0
  25. package/dist/backup/raw.d.ts.map +1 -0
  26. package/dist/backup/raw.js +146 -0
  27. package/dist/backup/raw.js.map +1 -0
  28. package/dist/bucket.cjs +2 -1
  29. package/dist/bucket.cjs.map +1 -1
  30. package/dist/bucket.js +2 -1
  31. package/dist/bucket.js.map +1 -1
  32. package/dist/copy/large.cjs +5 -3
  33. package/dist/copy/large.cjs.map +1 -1
  34. package/dist/copy/large.d.cts.map +1 -1
  35. package/dist/copy/large.d.ts.map +1 -1
  36. package/dist/copy/large.js +5 -3
  37. package/dist/copy/large.js.map +1 -1
  38. package/dist/download/checksum.cjs +6 -2
  39. package/dist/download/checksum.cjs.map +1 -1
  40. package/dist/download/checksum.js +6 -2
  41. package/dist/download/checksum.js.map +1 -1
  42. package/dist/download/parallel.cjs +52 -15
  43. package/dist/download/parallel.cjs.map +1 -1
  44. package/dist/download/parallel.d.cts +8 -1
  45. package/dist/download/parallel.d.cts.map +1 -1
  46. package/dist/download/parallel.d.ts +8 -1
  47. package/dist/download/parallel.d.ts.map +1 -1
  48. package/dist/download/parallel.js +52 -15
  49. package/dist/download/parallel.js.map +1 -1
  50. package/dist/download/single.cjs +141 -6
  51. package/dist/download/single.cjs.map +1 -1
  52. package/dist/download/single.d.cts.map +1 -1
  53. package/dist/download/single.d.ts.map +1 -1
  54. package/dist/download/single.js +141 -6
  55. package/dist/download/single.js.map +1 -1
  56. package/dist/errors/index.cjs +173 -3
  57. package/dist/errors/index.cjs.map +1 -1
  58. package/dist/errors/index.d.cts +119 -0
  59. package/dist/errors/index.d.cts.map +1 -1
  60. package/dist/errors/index.d.ts +119 -0
  61. package/dist/errors/index.d.ts.map +1 -1
  62. package/dist/errors/index.js +161 -4
  63. package/dist/errors/index.js.map +1 -1
  64. package/dist/http/retry.cjs +1 -1
  65. package/dist/http/retry.cjs.map +1 -1
  66. package/dist/http/retry.js +1 -1
  67. package/dist/http/retry.js.map +1 -1
  68. package/dist/http/transport.cjs +61 -23
  69. package/dist/http/transport.cjs.map +1 -1
  70. package/dist/http/transport.d.cts +25 -3
  71. package/dist/http/transport.d.cts.map +1 -1
  72. package/dist/http/transport.d.ts +25 -3
  73. package/dist/http/transport.d.ts.map +1 -1
  74. package/dist/http/transport.js +59 -22
  75. package/dist/http/transport.js.map +1 -1
  76. package/dist/index.cjs +25 -2
  77. package/dist/index.d.cts +6 -4
  78. package/dist/index.d.cts.map +1 -1
  79. package/dist/index.d.ts +6 -4
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +8 -6
  82. package/dist/object.cjs +1 -1
  83. package/dist/object.cjs.map +1 -1
  84. package/dist/object.d.cts +4 -2
  85. package/dist/object.d.cts.map +1 -1
  86. package/dist/object.d.ts +4 -2
  87. package/dist/object.d.ts.map +1 -1
  88. package/dist/object.js +1 -1
  89. package/dist/object.js.map +1 -1
  90. package/dist/partner/account-info.d.cts +43 -0
  91. package/dist/partner/account-info.d.cts.map +1 -0
  92. package/dist/partner/account-info.d.ts +43 -0
  93. package/dist/partner/account-info.d.ts.map +1 -0
  94. package/dist/partner/auth-clone.cjs +64 -0
  95. package/dist/partner/auth-clone.cjs.map +1 -0
  96. package/dist/partner/auth-clone.d.cts +27 -0
  97. package/dist/partner/auth-clone.d.cts.map +1 -0
  98. package/dist/partner/auth-clone.d.ts +27 -0
  99. package/dist/partner/auth-clone.d.ts.map +1 -0
  100. package/dist/partner/auth-clone.js +63 -0
  101. package/dist/partner/auth-clone.js.map +1 -0
  102. package/dist/partner/auth-core.cjs +175 -0
  103. package/dist/partner/auth-core.cjs.map +1 -0
  104. package/dist/partner/auth-core.d.cts +111 -0
  105. package/dist/partner/auth-core.d.cts.map +1 -0
  106. package/dist/partner/auth-core.d.ts +111 -0
  107. package/dist/partner/auth-core.d.ts.map +1 -0
  108. package/dist/partner/auth-core.js +175 -0
  109. package/dist/partner/auth-core.js.map +1 -0
  110. package/dist/partner/auth-shape.cjs +36 -0
  111. package/dist/partner/auth-shape.cjs.map +1 -0
  112. package/dist/partner/auth-shape.d.cts +12 -0
  113. package/dist/partner/auth-shape.d.cts.map +1 -0
  114. package/dist/partner/auth-shape.d.ts +12 -0
  115. package/dist/partner/auth-shape.d.ts.map +1 -0
  116. package/dist/partner/auth-shape.js +36 -0
  117. package/dist/partner/auth-shape.js.map +1 -0
  118. package/dist/partner/client.cjs +255 -0
  119. package/dist/partner/client.cjs.map +1 -0
  120. package/dist/partner/client.d.cts +335 -0
  121. package/dist/partner/client.d.cts.map +1 -0
  122. package/dist/partner/client.d.ts +335 -0
  123. package/dist/partner/client.d.ts.map +1 -0
  124. package/dist/partner/client.js +255 -0
  125. package/dist/partner/client.js.map +1 -0
  126. package/dist/partner/endpoint-url.cjs +108 -0
  127. package/dist/partner/endpoint-url.cjs.map +1 -0
  128. package/dist/partner/endpoint-url.d.cts +72 -0
  129. package/dist/partner/endpoint-url.d.cts.map +1 -0
  130. package/dist/partner/endpoint-url.d.ts +72 -0
  131. package/dist/partner/endpoint-url.d.ts.map +1 -0
  132. package/dist/partner/endpoint-url.js +105 -0
  133. package/dist/partner/endpoint-url.js.map +1 -0
  134. package/dist/partner/in-memory.cjs +135 -0
  135. package/dist/partner/in-memory.cjs.map +1 -0
  136. package/dist/partner/in-memory.d.cts +99 -0
  137. package/dist/partner/in-memory.d.cts.map +1 -0
  138. package/dist/partner/in-memory.d.ts +99 -0
  139. package/dist/partner/in-memory.d.ts.map +1 -0
  140. package/dist/partner/in-memory.js +135 -0
  141. package/dist/partner/in-memory.js.map +1 -0
  142. package/dist/partner/index.cjs +18 -0
  143. package/dist/partner/index.d.cts +23 -0
  144. package/dist/partner/index.d.cts.map +1 -0
  145. package/dist/partner/index.d.ts +23 -0
  146. package/dist/partner/index.d.ts.map +1 -0
  147. package/dist/partner/index.js +7 -0
  148. package/dist/partner/raw.cjs +392 -0
  149. package/dist/partner/raw.cjs.map +1 -0
  150. package/dist/partner/raw.d.cts +223 -0
  151. package/dist/partner/raw.d.cts.map +1 -0
  152. package/dist/partner/raw.d.ts +223 -0
  153. package/dist/partner/raw.d.ts.map +1 -0
  154. package/dist/partner/raw.js +390 -0
  155. package/dist/partner/raw.js.map +1 -0
  156. package/dist/partner/redaction-placeholders.cjs +10 -0
  157. package/dist/partner/redaction-placeholders.cjs.map +1 -0
  158. package/dist/partner/redaction-placeholders.d.cts +5 -0
  159. package/dist/partner/redaction-placeholders.d.cts.map +1 -0
  160. package/dist/partner/redaction-placeholders.d.ts +5 -0
  161. package/dist/partner/redaction-placeholders.d.ts.map +1 -0
  162. package/dist/partner/redaction-placeholders.js +9 -0
  163. package/dist/partner/redaction-placeholders.js.map +1 -0
  164. package/dist/partner/redaction.cjs +267 -0
  165. package/dist/partner/redaction.cjs.map +1 -0
  166. package/dist/partner/redaction.d.cts +124 -0
  167. package/dist/partner/redaction.d.cts.map +1 -0
  168. package/dist/partner/redaction.d.ts +124 -0
  169. package/dist/partner/redaction.d.ts.map +1 -0
  170. package/dist/partner/redaction.js +257 -0
  171. package/dist/partner/redaction.js.map +1 -0
  172. package/dist/raw/index.cjs +81 -19
  173. package/dist/raw/index.cjs.map +1 -1
  174. package/dist/raw/index.d.cts +6 -2
  175. package/dist/raw/index.d.cts.map +1 -1
  176. package/dist/raw/index.d.ts +6 -2
  177. package/dist/raw/index.d.ts.map +1 -1
  178. package/dist/raw/index.js +81 -19
  179. package/dist/raw/index.js.map +1 -1
  180. package/dist/raw/url.cjs +111 -0
  181. package/dist/raw/url.cjs.map +1 -0
  182. package/dist/raw/url.d.cts +41 -0
  183. package/dist/raw/url.d.cts.map +1 -0
  184. package/dist/raw/url.d.ts +41 -0
  185. package/dist/raw/url.d.ts.map +1 -0
  186. package/dist/raw/url.js +110 -0
  187. package/dist/raw/url.js.map +1 -0
  188. package/dist/s3/sigv4.cjs +15 -10
  189. package/dist/s3/sigv4.cjs.map +1 -1
  190. package/dist/s3/sigv4.js +15 -10
  191. package/dist/s3/sigv4.js.map +1 -1
  192. package/dist/simulator/index.cjs +1197 -206
  193. package/dist/simulator/index.cjs.map +1 -1
  194. package/dist/simulator/index.d.cts +109 -11
  195. package/dist/simulator/index.d.cts.map +1 -1
  196. package/dist/simulator/index.d.ts +109 -11
  197. package/dist/simulator/index.d.ts.map +1 -1
  198. package/dist/simulator/index.js +1196 -209
  199. package/dist/simulator/index.js.map +1 -1
  200. package/dist/simulator/partner.cjs +719 -0
  201. package/dist/simulator/partner.cjs.map +1 -0
  202. package/dist/simulator/partner.d.cts +183 -0
  203. package/dist/simulator/partner.d.cts.map +1 -0
  204. package/dist/simulator/partner.d.ts +183 -0
  205. package/dist/simulator/partner.d.ts.map +1 -0
  206. package/dist/simulator/partner.js +718 -0
  207. package/dist/simulator/partner.js.map +1 -0
  208. package/dist/simulator/validation.cjs +577 -0
  209. package/dist/simulator/validation.cjs.map +1 -1
  210. package/dist/simulator/validation.d.cts +117 -0
  211. package/dist/simulator/validation.d.cts.map +1 -1
  212. package/dist/simulator/validation.d.ts +117 -0
  213. package/dist/simulator/validation.d.ts.map +1 -1
  214. package/dist/simulator/validation.js +563 -1
  215. package/dist/simulator/validation.js.map +1 -1
  216. package/dist/streams/file-source.cjs +1 -1
  217. package/dist/streams/file-source.cjs.map +1 -1
  218. package/dist/streams/file-source.js +1 -1
  219. package/dist/streams/file-source.js.map +1 -1
  220. package/dist/streams/index.cjs +1 -1
  221. package/dist/streams/index.js +1 -1
  222. package/dist/streams/source.cjs +2 -1
  223. package/dist/streams/source.cjs.map +1 -1
  224. package/dist/streams/source.js +2 -1
  225. package/dist/streams/source.js.map +1 -1
  226. package/dist/sync/b2-sha1-reader.cjs +6 -2
  227. package/dist/sync/b2-sha1-reader.cjs.map +1 -1
  228. package/dist/sync/b2-sha1-reader.d.cts.map +1 -1
  229. package/dist/sync/b2-sha1-reader.d.ts.map +1 -1
  230. package/dist/sync/b2-sha1-reader.js +6 -2
  231. package/dist/sync/b2-sha1-reader.js.map +1 -1
  232. package/dist/sync/download-staging.cjs +11 -10
  233. package/dist/sync/download-staging.cjs.map +1 -1
  234. package/dist/sync/download-staging.d.cts +2 -1
  235. package/dist/sync/download-staging.d.cts.map +1 -1
  236. package/dist/sync/download-staging.d.ts +2 -1
  237. package/dist/sync/download-staging.d.ts.map +1 -1
  238. package/dist/sync/download-staging.js +11 -10
  239. package/dist/sync/download-staging.js.map +1 -1
  240. package/dist/sync/filters.cjs.map +1 -1
  241. package/dist/sync/filters.js.map +1 -1
  242. package/dist/sync/local-file-io.cjs +11 -6
  243. package/dist/sync/local-file-io.cjs.map +1 -1
  244. package/dist/sync/local-file-io.d.cts +1 -0
  245. package/dist/sync/local-file-io.d.cts.map +1 -1
  246. package/dist/sync/local-file-io.d.ts +1 -0
  247. package/dist/sync/local-file-io.d.ts.map +1 -1
  248. package/dist/sync/local-file-io.js +11 -6
  249. package/dist/sync/local-file-io.js.map +1 -1
  250. package/dist/sync/local-sha1.cjs +6 -15
  251. package/dist/sync/local-sha1.cjs.map +1 -1
  252. package/dist/sync/local-sha1.d.cts +0 -8
  253. package/dist/sync/local-sha1.d.cts.map +1 -1
  254. package/dist/sync/local-sha1.d.ts +0 -8
  255. package/dist/sync/local-sha1.d.ts.map +1 -1
  256. package/dist/sync/local-sha1.js +7 -15
  257. package/dist/sync/local-sha1.js.map +1 -1
  258. package/dist/sync/policies/compare.cjs +5 -3
  259. package/dist/sync/policies/compare.cjs.map +1 -1
  260. package/dist/sync/policies/compare.d.cts.map +1 -1
  261. package/dist/sync/policies/compare.d.ts.map +1 -1
  262. package/dist/sync/policies/compare.js +6 -4
  263. package/dist/sync/policies/compare.js.map +1 -1
  264. package/dist/sync/policies/index.cjs +4 -10
  265. package/dist/sync/policies/index.cjs.map +1 -1
  266. package/dist/sync/policies/index.js +4 -10
  267. package/dist/sync/policies/index.js.map +1 -1
  268. package/dist/sync/scanners/b2.cjs +2 -2
  269. package/dist/sync/scanners/b2.cjs.map +1 -1
  270. package/dist/sync/scanners/b2.js +2 -2
  271. package/dist/sync/scanners/b2.js.map +1 -1
  272. package/dist/sync/scanners/local.cjs.map +1 -1
  273. package/dist/sync/scanners/local.js.map +1 -1
  274. package/dist/sync/synchronizer.cjs +3 -2
  275. package/dist/sync/synchronizer.cjs.map +1 -1
  276. package/dist/sync/synchronizer.js +3 -2
  277. package/dist/sync/synchronizer.js.map +1 -1
  278. package/dist/types/auth.cjs +4 -0
  279. package/dist/types/auth.cjs.map +1 -1
  280. package/dist/types/auth.d.cts +4 -0
  281. package/dist/types/auth.d.cts.map +1 -1
  282. package/dist/types/auth.d.ts +4 -0
  283. package/dist/types/auth.d.ts.map +1 -1
  284. package/dist/types/auth.js +4 -0
  285. package/dist/types/auth.js.map +1 -1
  286. package/dist/types/backup.d.cts +80 -0
  287. package/dist/types/backup.d.cts.map +1 -0
  288. package/dist/types/backup.d.ts +80 -0
  289. package/dist/types/backup.d.ts.map +1 -0
  290. package/dist/types/bucket.cjs.map +1 -1
  291. package/dist/types/bucket.d.cts +4 -2
  292. package/dist/types/bucket.d.cts.map +1 -1
  293. package/dist/types/bucket.d.ts +4 -2
  294. package/dist/types/bucket.d.ts.map +1 -1
  295. package/dist/types/bucket.js.map +1 -1
  296. package/dist/types/download.cjs +62 -0
  297. package/dist/types/download.cjs.map +1 -0
  298. package/dist/types/download.d.cts +98 -0
  299. package/dist/types/download.d.cts.map +1 -1
  300. package/dist/types/download.d.ts +98 -0
  301. package/dist/types/download.d.ts.map +1 -1
  302. package/dist/types/download.js +61 -0
  303. package/dist/types/download.js.map +1 -0
  304. package/dist/types/encryption.cjs +58 -229
  305. package/dist/types/encryption.cjs.map +1 -1
  306. package/dist/types/encryption.d.cts +32 -0
  307. package/dist/types/encryption.d.cts.map +1 -1
  308. package/dist/types/encryption.d.ts +32 -0
  309. package/dist/types/encryption.d.ts.map +1 -1
  310. package/dist/types/encryption.js +56 -229
  311. package/dist/types/encryption.js.map +1 -1
  312. package/dist/types/errors.cjs +9 -0
  313. package/dist/types/errors.cjs.map +1 -1
  314. package/dist/types/errors.d.cts +1 -1
  315. package/dist/types/errors.d.cts.map +1 -1
  316. package/dist/types/errors.d.ts +1 -1
  317. package/dist/types/errors.d.ts.map +1 -1
  318. package/dist/types/errors.js +9 -0
  319. package/dist/types/errors.js.map +1 -1
  320. package/dist/types/file.cjs.map +1 -1
  321. package/dist/types/file.d.cts +15 -2
  322. package/dist/types/file.d.cts.map +1 -1
  323. package/dist/types/file.d.ts +15 -2
  324. package/dist/types/file.d.ts.map +1 -1
  325. package/dist/types/file.js.map +1 -1
  326. package/dist/types/ids.cjs +30 -0
  327. package/dist/types/ids.cjs.map +1 -1
  328. package/dist/types/ids.d.cts +32 -0
  329. package/dist/types/ids.d.cts.map +1 -1
  330. package/dist/types/ids.d.ts +32 -0
  331. package/dist/types/ids.d.ts.map +1 -1
  332. package/dist/types/ids.js +28 -1
  333. package/dist/types/ids.js.map +1 -1
  334. package/dist/types/index.d.cts +10 -6
  335. package/dist/types/index.d.cts.map +1 -1
  336. package/dist/types/index.d.ts +10 -6
  337. package/dist/types/index.d.ts.map +1 -1
  338. package/dist/types/lock.cjs.map +1 -1
  339. package/dist/types/lock.d.cts +14 -0
  340. package/dist/types/lock.d.cts.map +1 -1
  341. package/dist/types/lock.d.ts +14 -0
  342. package/dist/types/lock.d.ts.map +1 -1
  343. package/dist/types/lock.js.map +1 -1
  344. package/dist/types/notifications.cjs +1 -1
  345. package/dist/types/notifications.cjs.map +1 -1
  346. package/dist/types/notifications.d.cts +5 -3
  347. package/dist/types/notifications.d.cts.map +1 -1
  348. package/dist/types/notifications.d.ts +5 -3
  349. package/dist/types/notifications.d.ts.map +1 -1
  350. package/dist/types/notifications.js +1 -1
  351. package/dist/types/notifications.js.map +1 -1
  352. package/dist/types/partner.cjs +32 -0
  353. package/dist/types/partner.cjs.map +1 -0
  354. package/dist/types/partner.d.cts +394 -0
  355. package/dist/types/partner.d.cts.map +1 -0
  356. package/dist/types/partner.d.ts +394 -0
  357. package/dist/types/partner.d.ts.map +1 -0
  358. package/dist/types/partner.js +29 -0
  359. package/dist/types/partner.js.map +1 -0
  360. package/dist/types/upload.d.cts +31 -18
  361. package/dist/types/upload.d.cts.map +1 -1
  362. package/dist/types/upload.d.ts +31 -18
  363. package/dist/types/upload.d.ts.map +1 -1
  364. package/dist/upload/abort-scope.cjs +0 -45
  365. package/dist/upload/abort-scope.cjs.map +1 -1
  366. package/dist/upload/abort-scope.d.cts +0 -22
  367. package/dist/upload/abort-scope.d.cts.map +1 -1
  368. package/dist/upload/abort-scope.d.ts +0 -22
  369. package/dist/upload/abort-scope.d.ts.map +1 -1
  370. package/dist/upload/abort-scope.js +1 -44
  371. package/dist/upload/abort-scope.js.map +1 -1
  372. package/dist/upload/finish.cjs +3 -8
  373. package/dist/upload/finish.cjs.map +1 -1
  374. package/dist/upload/finish.d.cts.map +1 -1
  375. package/dist/upload/finish.d.ts.map +1 -1
  376. package/dist/upload/finish.js +1 -6
  377. package/dist/upload/finish.js.map +1 -1
  378. package/dist/upload/large.cjs +5 -1
  379. package/dist/upload/large.cjs.map +1 -1
  380. package/dist/upload/large.d.cts +16 -2
  381. package/dist/upload/large.d.cts.map +1 -1
  382. package/dist/upload/large.d.ts +16 -2
  383. package/dist/upload/large.d.ts.map +1 -1
  384. package/dist/upload/large.js +5 -1
  385. package/dist/upload/large.js.map +1 -1
  386. package/dist/upload/options.cjs.map +1 -1
  387. package/dist/upload/options.d.cts +12 -0
  388. package/dist/upload/options.d.cts.map +1 -1
  389. package/dist/upload/options.d.ts +12 -0
  390. package/dist/upload/options.d.ts.map +1 -1
  391. package/dist/upload/options.js.map +1 -1
  392. package/dist/upload/resume.cjs +2 -1
  393. package/dist/upload/resume.cjs.map +1 -1
  394. package/dist/upload/resume.d.cts +3 -1
  395. package/dist/upload/resume.d.cts.map +1 -1
  396. package/dist/upload/resume.d.ts +3 -1
  397. package/dist/upload/resume.d.ts.map +1 -1
  398. package/dist/upload/resume.js +2 -1
  399. package/dist/upload/resume.js.map +1 -1
  400. package/dist/upload/retry.cjs +8 -3
  401. package/dist/upload/retry.cjs.map +1 -1
  402. package/dist/upload/retry.js +8 -3
  403. package/dist/upload/retry.js.map +1 -1
  404. package/dist/upload/single.cjs +2 -1
  405. package/dist/upload/single.cjs.map +1 -1
  406. package/dist/upload/single.d.cts +6 -0
  407. package/dist/upload/single.d.cts.map +1 -1
  408. package/dist/upload/single.d.ts +6 -0
  409. package/dist/upload/single.d.ts.map +1 -1
  410. package/dist/upload/single.js +2 -1
  411. package/dist/upload/single.js.map +1 -1
  412. package/dist/upload/stream.cjs +6 -4
  413. package/dist/upload/stream.cjs.map +1 -1
  414. package/dist/upload/stream.d.cts +6 -0
  415. package/dist/upload/stream.d.cts.map +1 -1
  416. package/dist/upload/stream.d.ts +6 -0
  417. package/dist/upload/stream.d.ts.map +1 -1
  418. package/dist/upload/stream.js +3 -1
  419. package/dist/upload/stream.js.map +1 -1
  420. package/dist/util/abort.cjs +114 -0
  421. package/dist/util/abort.cjs.map +1 -0
  422. package/dist/util/abort.d.cts +65 -0
  423. package/dist/util/abort.d.cts.map +1 -0
  424. package/dist/util/abort.d.ts +65 -0
  425. package/dist/util/abort.d.ts.map +1 -0
  426. package/dist/util/abort.js +109 -0
  427. package/dist/util/abort.js.map +1 -0
  428. package/dist/util/defaults.cjs +3 -0
  429. package/dist/util/defaults.cjs.map +1 -1
  430. package/dist/util/defaults.d.cts +2 -0
  431. package/dist/util/defaults.d.cts.map +1 -1
  432. package/dist/util/defaults.d.ts +2 -0
  433. package/dist/util/defaults.d.ts.map +1 -1
  434. package/dist/util/defaults.js +3 -1
  435. package/dist/util/defaults.js.map +1 -1
  436. package/dist/util/md5.cjs +211 -0
  437. package/dist/util/md5.cjs.map +1 -0
  438. package/dist/util/md5.d.cts +43 -0
  439. package/dist/util/md5.d.cts.map +1 -0
  440. package/dist/util/md5.d.ts +43 -0
  441. package/dist/util/md5.d.ts.map +1 -0
  442. package/dist/util/md5.js +209 -0
  443. package/dist/util/md5.js.map +1 -0
  444. package/dist/util/normalize.cjs +5 -5
  445. package/dist/util/normalize.cjs.map +1 -1
  446. package/dist/util/normalize.d.cts +7 -7
  447. package/dist/util/normalize.d.cts.map +1 -1
  448. package/dist/util/normalize.d.ts +7 -7
  449. package/dist/util/normalize.d.ts.map +1 -1
  450. package/dist/util/normalize.js +5 -5
  451. package/dist/util/normalize.js.map +1 -1
  452. package/dist/util/paginator.cjs +7 -1
  453. package/dist/util/paginator.cjs.map +1 -1
  454. package/dist/util/paginator.d.cts +3 -1
  455. package/dist/util/paginator.d.cts.map +1 -1
  456. package/dist/util/paginator.d.ts +3 -1
  457. package/dist/util/paginator.d.ts.map +1 -1
  458. package/dist/util/paginator.js +7 -1
  459. package/dist/util/paginator.js.map +1 -1
  460. package/package.json +38 -16
@@ -0,0 +1,257 @@
1
+ import { B2PartnerAuthorizationError } from "../errors/index.js";
2
+ import { APPLICATION_KEY_REDACTED, PARTNER_TOKEN_REDACTED } from "./redaction-placeholders.js";
3
+ //#region src/partner/redaction.ts
4
+ var inspectSymbol = Symbol.for("nodejs.util.inspect.custom");
5
+ function installPortableJsonHook(target, toJson) {
6
+ const originalPrototype = Object.getPrototypeOf(target);
7
+ const redactionPrototype = Object.create(originalPrototype);
8
+ Object.defineProperty(redactionPrototype, "toJSON", {
9
+ value: toJson,
10
+ enumerable: false,
11
+ configurable: true
12
+ });
13
+ Object.setPrototypeOf(target, redactionPrototype);
14
+ Object.defineProperty(target, "toJSON", {
15
+ value: toJson,
16
+ enumerable: false,
17
+ configurable: true
18
+ });
19
+ }
20
+ /**
21
+ * Returns a redacted copy for log serializers that intentionally hide tokens.
22
+ *
23
+ * @param auth - Partner authorization response to render safely.
24
+ *
25
+ * @returns A plain object with the Partner token replaced by a placeholder.
26
+ */
27
+ function partnerAuthorizeResponseToRedactedJson(auth) {
28
+ return {
29
+ ...auth,
30
+ authorizationToken: PARTNER_TOKEN_REDACTED
31
+ };
32
+ }
33
+ /**
34
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
35
+ *
36
+ * @param result - Create group member result to render safely.
37
+ *
38
+ * @returns A plain object with the application key secret replaced by a placeholder.
39
+ */
40
+ function createGroupMemberResultToRedactedJson(result) {
41
+ return {
42
+ ...result,
43
+ applicationKey: APPLICATION_KEY_REDACTED
44
+ };
45
+ }
46
+ /**
47
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
48
+ *
49
+ * @param response - Create group member response to render safely.
50
+ *
51
+ * @returns A plain array with every application key secret replaced by a placeholder.
52
+ */
53
+ function createGroupMemberResponseToRedactedJson(response) {
54
+ return response.map((result) => createGroupMemberResultToRedactedJson(result));
55
+ }
56
+ /**
57
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
58
+ *
59
+ * @param result - Reserve trial account result to render safely.
60
+ *
61
+ * @returns A plain object with the application key secret replaced by a placeholder.
62
+ */
63
+ function reserveTrialCreateAccountResultToRedactedJson(result) {
64
+ return {
65
+ ...result,
66
+ applicationKey: APPLICATION_KEY_REDACTED
67
+ };
68
+ }
69
+ /**
70
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
71
+ *
72
+ * @param response - Reserve trial account response to render safely.
73
+ *
74
+ * @returns A plain array with every application key secret replaced by a placeholder.
75
+ */
76
+ function reserveTrialCreateAccountResponseToRedactedJson(response) {
77
+ return response.map((result) => reserveTrialCreateAccountResultToRedactedJson(result));
78
+ }
79
+ /**
80
+ * Adds non-enumerable serialization and inspection hooks that redact the
81
+ * Partner token through `JSON.stringify`, `toString`, and Node `util.inspect`
82
+ * while preserving direct property access.
83
+ *
84
+ * `JSON.stringify` no longer round-trips `authorizationToken` from protected
85
+ * authorize responses. Persist trusted auth caches with
86
+ * `partnerAuthorizeResponseForPersistence(auth)` only into encrypted or
87
+ * otherwise credential-grade storage, or read `authorizationToken` directly
88
+ * into secure storage before serializing.
89
+ *
90
+ * This does not make the object universally log-safe: object spread,
91
+ * `Object.assign`, `Object.entries`, `structuredClone`, and serializers that
92
+ * walk enumerable properties can still expose the raw token.
93
+ *
94
+ * @param auth - Partner authorization response to protect from accidental inspection.
95
+ *
96
+ * @returns The same auth object with inspection hooks installed when possible.
97
+ */
98
+ function redactPartnerAuthorizeResponse(auth) {
99
+ const target = Object.isExtensible(auth) ? auth : { ...auth };
100
+ const toRedactedJson = () => partnerAuthorizeResponseToRedactedJson(target);
101
+ const toRedactedString = () => `[PartnerAuthorizeResponse ${PARTNER_TOKEN_REDACTED}]`;
102
+ installPortableJsonHook(target, toRedactedJson);
103
+ Object.defineProperties(target, {
104
+ toString: {
105
+ value: toRedactedString,
106
+ enumerable: false,
107
+ configurable: true
108
+ },
109
+ [inspectSymbol]: {
110
+ value: toRedactedJson,
111
+ enumerable: false,
112
+ configurable: true
113
+ }
114
+ });
115
+ return target;
116
+ }
117
+ /**
118
+ * Adds non-enumerable serialization and inspection hooks that redact the
119
+ * application key secret while preserving direct property access.
120
+ *
121
+ * @param result - Create group member result to protect from accidental logging.
122
+ *
123
+ * @returns The same result object with redaction hooks installed when possible.
124
+ */
125
+ function redactCreateGroupMemberResult(result) {
126
+ const target = Object.isExtensible(result) ? result : { ...result };
127
+ const toRedactedJson = () => createGroupMemberResultToRedactedJson(target);
128
+ const toRedactedString = () => `[CreateGroupMemberResult ${APPLICATION_KEY_REDACTED}]`;
129
+ installPortableJsonHook(target, toRedactedJson);
130
+ Object.defineProperties(target, {
131
+ toString: {
132
+ value: toRedactedString,
133
+ enumerable: false,
134
+ configurable: true
135
+ },
136
+ [inspectSymbol]: {
137
+ value: toRedactedJson,
138
+ enumerable: false,
139
+ configurable: true
140
+ }
141
+ });
142
+ return target;
143
+ }
144
+ /**
145
+ * Adds non-enumerable serialization and inspection hooks that redact all
146
+ * create-group-member application key secrets while preserving direct access.
147
+ *
148
+ * @param response - Create group member response to protect from accidental logging.
149
+ *
150
+ * @returns The same response array with redaction hooks installed when possible.
151
+ *
152
+ * @throws B2PartnerAuthorizationError if the response is not an array.
153
+ */
154
+ function redactCreateGroupMemberResponse(response) {
155
+ if (!Array.isArray(response)) throw new B2PartnerAuthorizationError("b2_create_group_member response was not a JSON array");
156
+ const target = Object.isExtensible(response) ? response : [...response];
157
+ const writableTarget = target;
158
+ for (let i = 0; i < writableTarget.length; i++) {
159
+ const result = writableTarget[i];
160
+ if (result !== void 0) writableTarget[i] = redactCreateGroupMemberResult(result);
161
+ }
162
+ const toRedactedJson = () => createGroupMemberResponseToRedactedJson(target);
163
+ const toRedactedString = () => `[CreateGroupMemberResponse ${APPLICATION_KEY_REDACTED}]`;
164
+ Object.defineProperties(target, {
165
+ toJSON: {
166
+ value: toRedactedJson,
167
+ enumerable: false,
168
+ configurable: true
169
+ },
170
+ toString: {
171
+ value: toRedactedString,
172
+ enumerable: false,
173
+ configurable: true
174
+ },
175
+ [inspectSymbol]: {
176
+ value: toRedactedJson,
177
+ enumerable: false,
178
+ configurable: true
179
+ }
180
+ });
181
+ return target;
182
+ }
183
+ /**
184
+ * Adds non-enumerable serialization and inspection hooks that redact the
185
+ * application key secret while preserving direct property access.
186
+ *
187
+ * `JSON.stringify` redacts because the response contains newly minted
188
+ * application key secrets that are commonly logged as batch results. Callers
189
+ * that need to persist the key should read `applicationKey` directly into
190
+ * secure storage before serializing the object.
191
+ *
192
+ * @param result - Reserve trial account result to protect from accidental logging.
193
+ *
194
+ * @returns The same result object with redaction hooks installed when possible.
195
+ */
196
+ function redactReserveTrialCreateAccountResult(result) {
197
+ const target = Object.isExtensible(result) ? result : { ...result };
198
+ const toRedactedJson = () => reserveTrialCreateAccountResultToRedactedJson(target);
199
+ const toRedactedString = () => `[ReserveTrialCreateAccountResult ${APPLICATION_KEY_REDACTED}]`;
200
+ installPortableJsonHook(target, toRedactedJson);
201
+ Object.defineProperties(target, {
202
+ toString: {
203
+ value: toRedactedString,
204
+ enumerable: false,
205
+ configurable: true
206
+ },
207
+ [inspectSymbol]: {
208
+ value: toRedactedJson,
209
+ enumerable: false,
210
+ configurable: true
211
+ }
212
+ });
213
+ return target;
214
+ }
215
+ /**
216
+ * Adds non-enumerable serialization and inspection hooks that redact all
217
+ * reserve-trial application key secrets while preserving direct property access.
218
+ *
219
+ * @param response - Reserve trial account response to protect from accidental logging.
220
+ *
221
+ * @returns The same response array with redaction hooks installed when possible.
222
+ *
223
+ * @throws B2PartnerAuthorizationError if the response is not an array.
224
+ */
225
+ function redactReserveTrialCreateAccountResponse(response) {
226
+ if (!Array.isArray(response)) throw new B2PartnerAuthorizationError("b2_reserve_trial_create_account response was not a JSON array");
227
+ const target = Object.isExtensible(response) ? response : [...response];
228
+ const writableTarget = target;
229
+ for (let i = 0; i < writableTarget.length; i++) {
230
+ const result = writableTarget[i];
231
+ if (result !== void 0) writableTarget[i] = redactReserveTrialCreateAccountResult(result);
232
+ }
233
+ const toRedactedJson = () => reserveTrialCreateAccountResponseToRedactedJson(target);
234
+ const toRedactedString = () => `[ReserveTrialCreateAccountResponse ${APPLICATION_KEY_REDACTED}]`;
235
+ Object.defineProperties(target, {
236
+ toJSON: {
237
+ value: toRedactedJson,
238
+ enumerable: false,
239
+ configurable: true
240
+ },
241
+ toString: {
242
+ value: toRedactedString,
243
+ enumerable: false,
244
+ configurable: true
245
+ },
246
+ [inspectSymbol]: {
247
+ value: toRedactedJson,
248
+ enumerable: false,
249
+ configurable: true
250
+ }
251
+ });
252
+ return target;
253
+ }
254
+ //#endregion
255
+ export { PARTNER_TOKEN_REDACTED, createGroupMemberResponseToRedactedJson, createGroupMemberResultToRedactedJson, partnerAuthorizeResponseToRedactedJson, redactCreateGroupMemberResponse, redactCreateGroupMemberResult, redactPartnerAuthorizeResponse, redactReserveTrialCreateAccountResponse, redactReserveTrialCreateAccountResult, reserveTrialCreateAccountResponseToRedactedJson, reserveTrialCreateAccountResultToRedactedJson };
256
+
257
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","names":[],"sources":["../../src/partner/redaction.ts"],"sourcesContent":["import { B2PartnerAuthorizationError } from '../errors/index.ts'\nimport type {\n CreateGroupMemberResponse,\n CreateGroupMemberResult,\n PartnerAuthorizeResponse,\n ReserveTrialCreateAccountResponse,\n ReserveTrialCreateAccountResult,\n} from '../types/partner.ts'\nimport { APPLICATION_KEY_REDACTED, PARTNER_TOKEN_REDACTED } from './redaction-placeholders.ts'\n\nexport {\n APPLICATION_KEY_REDACTED,\n PARTNER_TOKEN_REDACTED,\n} from './redaction-placeholders.ts'\n\n/**\n * JSON-safe Partner authorize response with the Partner token replaced by a\n * placeholder string.\n */\nexport interface RedactedPartnerAuthorizeResponseJson\n extends Omit<PartnerAuthorizeResponse, 'authorizationToken'> {\n /** Redacted Partner authorization token placeholder. */\n readonly authorizationToken: string\n}\n\nexport type RedactedCreateGroupMemberResultJson = Omit<\n CreateGroupMemberResult,\n 'applicationKey'\n> & {\n readonly applicationKey: string\n}\n\nexport type RedactedCreateGroupMemberResponseJson = readonly RedactedCreateGroupMemberResultJson[]\n\nexport type RedactedReserveTrialCreateAccountResultJson = Omit<\n ReserveTrialCreateAccountResult,\n 'applicationKey'\n> & {\n readonly applicationKey: string\n}\n\nexport type RedactedReserveTrialCreateAccountResponseJson =\n readonly RedactedReserveTrialCreateAccountResultJson[]\n\nconst inspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\n// Bun/WebKit only honor object toJSON hooks when they are inherited, while Node\n// honors own hooks. Install both shapes so SDK safe serialization is portable.\nfunction installPortableJsonHook<T extends object>(target: T, toJson: () => unknown): void {\n const originalPrototype = Object.getPrototypeOf(target)\n const redactionPrototype = Object.create(originalPrototype) as object\n Object.defineProperty(redactionPrototype, 'toJSON', {\n value: toJson,\n enumerable: false,\n configurable: true,\n })\n Object.setPrototypeOf(target, redactionPrototype)\n Object.defineProperty(target, 'toJSON', {\n value: toJson,\n enumerable: false,\n configurable: true,\n })\n}\n\n/**\n * Returns a redacted copy for log serializers that intentionally hide tokens.\n *\n * @param auth - Partner authorization response to render safely.\n *\n * @returns A plain object with the Partner token replaced by a placeholder.\n */\nexport function partnerAuthorizeResponseToRedactedJson(\n auth: PartnerAuthorizeResponse,\n): RedactedPartnerAuthorizeResponseJson {\n return {\n ...auth,\n authorizationToken: PARTNER_TOKEN_REDACTED,\n }\n}\n\n/**\n * Returns a redacted copy for log serializers that intentionally hide group-member keys.\n *\n * @param result - Create group member result to render safely.\n *\n * @returns A plain object with the application key secret replaced by a placeholder.\n */\nexport function createGroupMemberResultToRedactedJson(\n result: CreateGroupMemberResult,\n): RedactedCreateGroupMemberResultJson {\n return {\n ...result,\n applicationKey: APPLICATION_KEY_REDACTED,\n }\n}\n\n/**\n * Returns a redacted copy for log serializers that intentionally hide group-member keys.\n *\n * @param response - Create group member response to render safely.\n *\n * @returns A plain array with every application key secret replaced by a placeholder.\n */\nexport function createGroupMemberResponseToRedactedJson(\n response: CreateGroupMemberResponse,\n): RedactedCreateGroupMemberResponseJson {\n return response.map((result) => createGroupMemberResultToRedactedJson(result))\n}\n\n/**\n * Returns a redacted copy for log serializers that intentionally hide trial account keys.\n *\n * @param result - Reserve trial account result to render safely.\n *\n * @returns A plain object with the application key secret replaced by a placeholder.\n */\nexport function reserveTrialCreateAccountResultToRedactedJson(\n result: ReserveTrialCreateAccountResult,\n): RedactedReserveTrialCreateAccountResultJson {\n return {\n ...result,\n applicationKey: APPLICATION_KEY_REDACTED,\n }\n}\n\n/**\n * Returns a redacted copy for log serializers that intentionally hide trial account keys.\n *\n * @param response - Reserve trial account response to render safely.\n *\n * @returns A plain array with every application key secret replaced by a placeholder.\n */\nexport function reserveTrialCreateAccountResponseToRedactedJson(\n response: ReserveTrialCreateAccountResponse,\n): RedactedReserveTrialCreateAccountResponseJson {\n return response.map((result) => reserveTrialCreateAccountResultToRedactedJson(result))\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact the\n * Partner token through `JSON.stringify`, `toString`, and Node `util.inspect`\n * while preserving direct property access.\n *\n * `JSON.stringify` no longer round-trips `authorizationToken` from protected\n * authorize responses. Persist trusted auth caches with\n * `partnerAuthorizeResponseForPersistence(auth)` only into encrypted or\n * otherwise credential-grade storage, or read `authorizationToken` directly\n * into secure storage before serializing.\n *\n * This does not make the object universally log-safe: object spread,\n * `Object.assign`, `Object.entries`, `structuredClone`, and serializers that\n * walk enumerable properties can still expose the raw token.\n *\n * @param auth - Partner authorization response to protect from accidental inspection.\n *\n * @returns The same auth object with inspection hooks installed when possible.\n */\nexport function redactPartnerAuthorizeResponse(\n auth: PartnerAuthorizeResponse,\n): PartnerAuthorizeResponse {\n const target = Object.isExtensible(auth) ? auth : { ...auth }\n const toRedactedJson = (): RedactedPartnerAuthorizeResponseJson =>\n partnerAuthorizeResponseToRedactedJson(target)\n const toRedactedString = (): string => `[PartnerAuthorizeResponse ${PARTNER_TOKEN_REDACTED}]`\n\n installPortableJsonHook(target, toRedactedJson)\n Object.defineProperties(target, {\n toString: {\n value: toRedactedString,\n enumerable: false,\n configurable: true,\n },\n [inspectSymbol]: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n })\n\n return target\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact the\n * application key secret while preserving direct property access.\n *\n * @param result - Create group member result to protect from accidental logging.\n *\n * @returns The same result object with redaction hooks installed when possible.\n */\nexport function redactCreateGroupMemberResult(\n result: CreateGroupMemberResult,\n): CreateGroupMemberResult {\n const target = Object.isExtensible(result) ? result : { ...result }\n const toRedactedJson = (): RedactedCreateGroupMemberResultJson =>\n createGroupMemberResultToRedactedJson(target)\n const toRedactedString = (): string => `[CreateGroupMemberResult ${APPLICATION_KEY_REDACTED}]`\n\n installPortableJsonHook(target, toRedactedJson)\n Object.defineProperties(target, {\n toString: {\n value: toRedactedString,\n enumerable: false,\n configurable: true,\n },\n [inspectSymbol]: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n })\n\n return target\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact all\n * create-group-member application key secrets while preserving direct access.\n *\n * @param response - Create group member response to protect from accidental logging.\n *\n * @returns The same response array with redaction hooks installed when possible.\n *\n * @throws B2PartnerAuthorizationError if the response is not an array.\n */\nexport function redactCreateGroupMemberResponse(\n response: CreateGroupMemberResponse,\n): CreateGroupMemberResponse {\n if (!Array.isArray(response)) {\n throw new B2PartnerAuthorizationError('b2_create_group_member response was not a JSON array')\n }\n\n const target = Object.isExtensible(response) ? response : [...response]\n const writableTarget = target as CreateGroupMemberResult[]\n for (let i = 0; i < writableTarget.length; i++) {\n const result = writableTarget[i]\n if (result !== undefined) writableTarget[i] = redactCreateGroupMemberResult(result)\n }\n\n const toRedactedJson = (): RedactedCreateGroupMemberResponseJson =>\n createGroupMemberResponseToRedactedJson(target)\n const toRedactedString = (): string => `[CreateGroupMemberResponse ${APPLICATION_KEY_REDACTED}]`\n\n Object.defineProperties(target, {\n toJSON: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n toString: {\n value: toRedactedString,\n enumerable: false,\n configurable: true,\n },\n [inspectSymbol]: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n })\n\n return target\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact the\n * application key secret while preserving direct property access.\n *\n * `JSON.stringify` redacts because the response contains newly minted\n * application key secrets that are commonly logged as batch results. Callers\n * that need to persist the key should read `applicationKey` directly into\n * secure storage before serializing the object.\n *\n * @param result - Reserve trial account result to protect from accidental logging.\n *\n * @returns The same result object with redaction hooks installed when possible.\n */\nexport function redactReserveTrialCreateAccountResult(\n result: ReserveTrialCreateAccountResult,\n): ReserveTrialCreateAccountResult {\n const target = Object.isExtensible(result) ? result : { ...result }\n const toRedactedJson = (): RedactedReserveTrialCreateAccountResultJson =>\n reserveTrialCreateAccountResultToRedactedJson(target)\n const toRedactedString = (): string =>\n `[ReserveTrialCreateAccountResult ${APPLICATION_KEY_REDACTED}]`\n\n installPortableJsonHook(target, toRedactedJson)\n Object.defineProperties(target, {\n toString: {\n value: toRedactedString,\n enumerable: false,\n configurable: true,\n },\n [inspectSymbol]: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n })\n\n return target\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact all\n * reserve-trial application key secrets while preserving direct property access.\n *\n * @param response - Reserve trial account response to protect from accidental logging.\n *\n * @returns The same response array with redaction hooks installed when possible.\n *\n * @throws B2PartnerAuthorizationError if the response is not an array.\n */\nexport function redactReserveTrialCreateAccountResponse(\n response: ReserveTrialCreateAccountResponse,\n): ReserveTrialCreateAccountResponse {\n if (!Array.isArray(response)) {\n throw new B2PartnerAuthorizationError(\n 'b2_reserve_trial_create_account response was not a JSON array',\n )\n }\n\n const target = Object.isExtensible(response) ? response : [...response]\n const writableTarget = target as ReserveTrialCreateAccountResult[]\n for (let i = 0; i < writableTarget.length; i++) {\n const result = writableTarget[i]\n if (result !== undefined) writableTarget[i] = redactReserveTrialCreateAccountResult(result)\n }\n\n const toRedactedJson = (): RedactedReserveTrialCreateAccountResponseJson =>\n reserveTrialCreateAccountResponseToRedactedJson(target)\n const toRedactedString = (): string =>\n `[ReserveTrialCreateAccountResponse ${APPLICATION_KEY_REDACTED}]`\n\n Object.defineProperties(target, {\n toJSON: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n toString: {\n value: toRedactedString,\n enumerable: false,\n configurable: true,\n },\n [inspectSymbol]: {\n value: toRedactedJson,\n enumerable: false,\n configurable: true,\n },\n })\n\n return target\n}\n"],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_errors_index = require("../errors/index.cjs");
3
3
  const require_encoding = require("./encoding.cjs");
4
- const require_normalize = require("../util/normalize.cjs");
5
4
  const require_encryption = require("../types/encryption.cjs");
5
+ const require_normalize = require("../util/normalize.cjs");
6
6
  const require_realms = require("../auth/realms.cjs");
7
+ const require_url = require("./url.cjs");
7
8
  //#region src/raw/index.ts
8
9
  /**
9
10
  * Low-level 1:1 bindings for every B2 native API endpoint.
@@ -15,6 +16,14 @@ const require_realms = require("../auth/realms.cjs");
15
16
  *
16
17
  * @packageDocumentation
17
18
  */
19
+ var B2_NATIVE_API_V3 = {
20
+ prefix: "b2api",
21
+ version: "v3"
22
+ };
23
+ var B2_NATIVE_API_V4 = {
24
+ prefix: "b2api",
25
+ version: "v4"
26
+ };
18
27
  function normalizeRawRequestOptions(optionsOrSignal, retry) {
19
28
  if (optionsOrSignal === void 0) return retry === void 0 ? void 0 : { retry };
20
29
  if (isAbortSignal(optionsOrSignal)) return {
@@ -29,6 +38,19 @@ function normalizeRawRequestOptions(optionsOrSignal, retry) {
29
38
  function isAbortSignal(value) {
30
39
  return typeof value === "object" && value !== null && "aborted" in value && typeof value.addEventListener === "function";
31
40
  }
41
+ function assertCustomUploadTimestamp(value) {
42
+ if (value === void 0) return;
43
+ if (typeof value === "number" && Number.isSafeInteger(value) && value >= 0) return;
44
+ throw new TypeError("customUploadTimestamp must be a non-negative safe integer");
45
+ }
46
+ function assertRawCustomUploadTimestamp(value) {
47
+ if (value === void 0 || value === null) return;
48
+ if (typeof value === "string" && /^\d+$/.test(value)) {
49
+ const timestamp = Number(value);
50
+ if (Number.isSafeInteger(timestamp)) return;
51
+ }
52
+ throw new TypeError("customUploadTimestamp must be a non-negative safe integer string or null");
53
+ }
32
54
  function normalizeCreateKeyRequest(request) {
33
55
  const { bucketId, ...withoutDeprecatedBucketId } = request;
34
56
  if (bucketId !== void 0 && withoutDeprecatedBucketId.bucketIds !== void 0) throw new TypeError("createKey accepts either bucketIds or deprecated bucketId, not both");
@@ -92,7 +114,8 @@ function normalizeAuthorizeAccountResponse(response) {
92
114
  }
93
115
  function uploadResponseBodyError(err, signal) {
94
116
  if (signal?.aborted === true) throw signal.reason ?? new DOMException("Aborted", "AbortError");
95
- return new require_errors_index.UploadResponseBodyError(err instanceof Error ? err.message : "Upload response body could not be read", { cause: err });
117
+ const message = err instanceof Error ? err.message : "Upload response body could not be read";
118
+ return new require_errors_index.UploadResponseBodyError(message, { cause: err });
96
119
  }
97
120
  /**
98
121
  * Low-level client providing 1:1 bindings to all B2 native API endpoints.
@@ -122,7 +145,10 @@ var RawClient = class {
122
145
  async authorizeAccount(applicationKeyId, applicationKey, realmUrl = "https://api.backblazeb2.com") {
123
146
  require_realms.assertSecureRealmUrl(realmUrl);
124
147
  return normalizeAuthorizeAccountResponse(await (await this.transport.send({
125
- url: `${realmUrl}/b2api/v4/b2_authorize_account`,
148
+ url: require_url.b2Url(realmUrl, {
149
+ ...B2_NATIVE_API_V4,
150
+ endpoint: "b2_authorize_account"
151
+ }),
126
152
  method: "GET",
127
153
  headers: { Authorization: `Basic ${btoa(`${applicationKeyId}:${applicationKey}`)}` }
128
154
  })).json());
@@ -205,6 +231,10 @@ var RawClient = class {
205
231
  ...require_encoding.buildFileInfoHeaders(headers.fileInfo)
206
232
  };
207
233
  if (headers.lastModifiedMillis !== void 0) reqHeaders["X-Bz-Info-src_last_modified_millis"] = String(headers.lastModifiedMillis);
234
+ if (headers.customUploadTimestamp !== void 0) {
235
+ assertCustomUploadTimestamp(headers.customUploadTimestamp);
236
+ reqHeaders["X-Bz-Custom-Upload-Timestamp"] = String(headers.customUploadTimestamp);
237
+ }
208
238
  if (headers.contentDisposition) reqHeaders["X-Bz-Info-b2-content-disposition"] = headers.contentDisposition;
209
239
  if (headers.contentLanguage) reqHeaders["X-Bz-Info-b2-content-language"] = headers.contentLanguage;
210
240
  if (headers.expires) reqHeaders["X-Bz-Info-b2-expires"] = headers.expires;
@@ -296,7 +326,7 @@ var RawClient = class {
296
326
  * @returns The copied file version metadata.
297
327
  */
298
328
  async copyFile(apiUrl, authToken, request, options) {
299
- return require_normalize.normalizeFileVersionSha1(await this.postJson(apiUrl, authToken, "b2_copy_file", request, options));
329
+ return require_normalize.normalizeFileVersionSha1(await this.postJson(apiUrl, authToken, "b2_copy_file", withJsonBodyWireSseC(request), options));
300
330
  }
301
331
  /**
302
332
  * Calls {@link https://www.backblaze.com/apidocs/b2-copy-part | b2_copy_part}.
@@ -308,7 +338,7 @@ var RawClient = class {
308
338
  * @returns The copied part metadata.
309
339
  */
310
340
  async copyPart(apiUrl, authToken, request, options) {
311
- return this.postJson(apiUrl, authToken, "b2_copy_part", request, options);
341
+ return this.postJson(apiUrl, authToken, "b2_copy_part", withJsonBodyWireSseC(request), options);
312
342
  }
313
343
  /**
314
344
  * Calls {@link https://www.backblaze.com/apidocs/b2-start-large-file | b2_start_large_file}.
@@ -320,7 +350,8 @@ var RawClient = class {
320
350
  * @returns The started large file metadata with file ID.
321
351
  */
322
352
  async startLargeFile(apiUrl, authToken, request, options) {
323
- return this.postJson(apiUrl, authToken, "b2_start_large_file", request, options);
353
+ assertRawCustomUploadTimestamp(request.customUploadTimestamp);
354
+ return require_normalize.normalizeFileVersionSha1(await this.postJson(apiUrl, authToken, "b2_start_large_file", withJsonBodyWireSseC(request), options));
324
355
  }
325
356
  /**
326
357
  * Implementation for both upload part URL request-control signatures.
@@ -379,7 +410,10 @@ var RawClient = class {
379
410
  */
380
411
  async finishLargeFile(apiUrl, authToken, request, options) {
381
412
  const response = await this.transport.send({
382
- url: `${apiUrl}/b2api/v3/b2_finish_large_file`,
413
+ url: require_url.b2Url(apiUrl, {
414
+ ...B2_NATIVE_API_V3,
415
+ endpoint: "b2_finish_large_file"
416
+ }),
383
417
  method: "POST",
384
418
  headers: {
385
419
  Authorization: authToken,
@@ -422,7 +456,7 @@ var RawClient = class {
422
456
  * @returns The list of unfinished large files and optional continuation token.
423
457
  */
424
458
  async listUnfinishedLargeFiles(apiUrl, authToken, request, options) {
425
- return this.postJson(apiUrl, authToken, "b2_list_unfinished_large_files", request, options);
459
+ return require_normalize.normalizeFileVersionListSha1(await this.postJson(apiUrl, authToken, "b2_list_unfinished_large_files", request, options));
426
460
  }
427
461
  /**
428
462
  * Calls {@link https://www.backblaze.com/apidocs/b2-list-parts | b2_list_parts}.
@@ -447,7 +481,10 @@ var RawClient = class {
447
481
  */
448
482
  async downloadFileById(downloadUrl, authToken, fileId, options) {
449
483
  const headers = buildDownloadRequestHeaders(authToken, options);
450
- const url = appendDownloadOverrides(`${downloadUrl}/b2api/v3/b2_download_file_by_id?fileId=${encodeURIComponent(fileId)}`, options);
484
+ const url = appendDownloadOverrides(`${require_url.b2Url(downloadUrl, {
485
+ ...B2_NATIVE_API_V3,
486
+ endpoint: "b2_download_file_by_id"
487
+ })}?fileId=${encodeURIComponent(fileId)}`, options);
451
488
  const response = await this.transport.send({
452
489
  url,
453
490
  method: options?.method ?? "GET",
@@ -505,7 +542,7 @@ var RawClient = class {
505
542
  * @returns The newly created application key with secret.
506
543
  */
507
544
  async createKey(apiUrl, authToken, request) {
508
- return normalizeKeyResponse(await this.postJson(apiUrl, authToken, "b2_create_key", normalizeCreateKeyRequest(request), void 0, "v4"));
545
+ return normalizeKeyResponse(await this.postJson(apiUrl, authToken, "b2_create_key", normalizeCreateKeyRequest(request), void 0, B2_NATIVE_API_V4));
509
546
  }
510
547
  /**
511
548
  * Calls {@link https://www.backblaze.com/apidocs/b2-list-keys | b2_list_keys}.
@@ -516,7 +553,7 @@ var RawClient = class {
516
553
  * @returns The list of application keys and optional continuation token.
517
554
  */
518
555
  async listKeys(apiUrl, authToken, request) {
519
- const response = await this.postJson(apiUrl, authToken, "b2_list_keys", request, void 0, "v4");
556
+ const response = await this.postJson(apiUrl, authToken, "b2_list_keys", request, void 0, B2_NATIVE_API_V4);
520
557
  return {
521
558
  ...response,
522
559
  keys: response.keys.map((key) => normalizeKeyResponse(key))
@@ -531,7 +568,7 @@ var RawClient = class {
531
568
  * @returns The deleted application key metadata.
532
569
  */
533
570
  async deleteKey(apiUrl, authToken, request) {
534
- return normalizeKeyResponse(await this.postJson(apiUrl, authToken, "b2_delete_key", request, void 0, "v4"));
571
+ return normalizeKeyResponse(await this.postJson(apiUrl, authToken, "b2_delete_key", request, void 0, B2_NATIVE_API_V4));
535
572
  }
536
573
  /**
537
574
  * Calls {@link https://www.backblaze.com/apidocs/b2-update-file-retention | b2_update_file_retention}.
@@ -584,13 +621,16 @@ var RawClient = class {
584
621
  * @param endpoint - The B2 API endpoint name.
585
622
  * @param body - The JSON request body.
586
623
  * @param options - Optional abort and per-request retry settings.
587
- * @param apiVersion - B2 Native API version segment for this endpoint.
624
+ * @param urlOptions - B2 endpoint path prefix and version settings.
588
625
  *
589
626
  * @returns The parsed JSON response.
590
627
  */
591
- async postJson(apiUrl, authToken, endpoint, body, options, apiVersion = "v3") {
628
+ async postJson(apiUrl, authToken, endpoint, body, options, urlOptions = B2_NATIVE_API_V3) {
592
629
  return (await this.transport.send({
593
- url: `${apiUrl}/b2api/${apiVersion}/${endpoint}`,
630
+ url: require_url.b2Url(apiUrl, {
631
+ ...urlOptions,
632
+ endpoint
633
+ }),
594
634
  method: "POST",
595
635
  headers: {
596
636
  Authorization: authToken,
@@ -602,6 +642,23 @@ var RawClient = class {
602
642
  })).json();
603
643
  }
604
644
  };
645
+ function withJsonBodyWireSseC(request) {
646
+ return {
647
+ ...request,
648
+ ...request.serverSideEncryption !== void 0 ? { serverSideEncryption: toWireSseC(request.serverSideEncryption) } : {},
649
+ ...request.sourceServerSideEncryption !== void 0 ? { sourceServerSideEncryption: toWireSseC(request.sourceServerSideEncryption) } : {},
650
+ ...request.destinationServerSideEncryption !== void 0 ? { destinationServerSideEncryption: toWireSseC(request.destinationServerSideEncryption) } : {}
651
+ };
652
+ }
653
+ function toWireSseC(setting) {
654
+ if (setting.mode !== require_encryption.EncryptionMode.SseC) return setting;
655
+ return {
656
+ mode: require_encryption.EncryptionMode.SseC,
657
+ algorithm: setting.algorithm,
658
+ customerKey: setting.customerKey,
659
+ customerKeyMd5: setting.customerKeyMd5
660
+ };
661
+ }
605
662
  /**
606
663
  * Applies server-side encryption headers to the request.
607
664
  * @param headers - The mutable headers object to populate.
@@ -636,10 +693,15 @@ var DOWNLOAD_OVERRIDE_PARAMS = [
636
693
  function buildDownloadRequestHeaders(authToken, options) {
637
694
  const headers = { Authorization: authToken };
638
695
  if (options?.range) headers["Range"] = options.range;
639
- if (options?.serverSideEncryption) applyEncryptionHeaders(headers, {
640
- mode: require_encryption.EncryptionMode.SseC,
641
- ...options.serverSideEncryption
642
- });
696
+ if (options?.serverSideEncryption) {
697
+ const encryption = options.serverSideEncryption;
698
+ applyEncryptionHeaders(headers, {
699
+ mode: require_encryption.EncryptionMode.SseC,
700
+ algorithm: encryption.algorithm,
701
+ customerKey: encryption.customerKey,
702
+ customerKeyMd5: encryption.customerKeyMd5
703
+ });
704
+ }
643
705
  return headers;
644
706
  }
645
707
  /**