@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
@@ -0,0 +1,292 @@
1
+ const require_errors_index = require("../errors/index.cjs");
2
+ const require_redaction_placeholders = require("./redaction-placeholders.cjs");
3
+ //#region src/partner/redaction.ts
4
+ var inspectSymbol = Symbol.for("nodejs.util.inspect.custom");
5
+ function partnerGroupsApiInfoToRedactedJson(info) {
6
+ return {
7
+ capabilities: [...info.capabilities],
8
+ groupsApiUrl: info.groupsApiUrl,
9
+ infoType: info.infoType
10
+ };
11
+ }
12
+ function partnerBackupApiInfoToRedactedJson(info) {
13
+ return {
14
+ capabilities: [...info.capabilities],
15
+ backupApiUrl: info.backupApiUrl,
16
+ infoType: info.infoType
17
+ };
18
+ }
19
+ function partnerStorageApiInfoToRedactedJson(info) {
20
+ return {
21
+ absoluteMinimumPartSize: info.absoluteMinimumPartSize,
22
+ apiUrl: info.apiUrl,
23
+ bucketId: info.bucketId,
24
+ bucketName: info.bucketName,
25
+ capabilities: [...info.capabilities],
26
+ downloadUrl: info.downloadUrl,
27
+ infoType: info.infoType,
28
+ namePrefix: info.namePrefix,
29
+ recommendedPartSize: info.recommendedPartSize,
30
+ s3ApiUrl: info.s3ApiUrl
31
+ };
32
+ }
33
+ function partnerApiInfoToRedactedJson(apiInfo) {
34
+ const redacted = {};
35
+ if (apiInfo.storageApi !== void 0) redacted.storageApi = partnerStorageApiInfoToRedactedJson(apiInfo.storageApi);
36
+ if (apiInfo.groupsApi !== void 0) redacted.groupsApi = partnerGroupsApiInfoToRedactedJson(apiInfo.groupsApi);
37
+ if (apiInfo.backupApi !== void 0) redacted.backupApi = partnerBackupApiInfoToRedactedJson(apiInfo.backupApi);
38
+ return redacted;
39
+ }
40
+ function partnerGroupMemberToRedactedJson(groupMember) {
41
+ return {
42
+ accountId: groupMember.accountId,
43
+ email: groupMember.email,
44
+ groupId: groupMember.groupId,
45
+ groupName: groupMember.groupName,
46
+ region: groupMember.region,
47
+ s3Endpoint: groupMember.s3Endpoint
48
+ };
49
+ }
50
+ function isSingleJsonObject(value) {
51
+ return typeof value === "object" && value !== null && !Array.isArray(value);
52
+ }
53
+ function isCredentialBearing(response) {
54
+ return isSingleJsonObject(response) && typeof response["applicationKey"] === "string" && typeof response["applicationKeyId"] === "string";
55
+ }
56
+ function matchesGroupMemberShape(groupMember) {
57
+ return isSingleJsonObject(groupMember) && typeof groupMember["accountId"] === "string" && typeof groupMember["email"] === "string" && typeof groupMember["groupId"] === "string" && typeof groupMember["groupName"] === "string" && typeof groupMember["region"] === "string" && typeof groupMember["s3Endpoint"] === "string";
58
+ }
59
+ function matchesReserveTrialAccountShape(response) {
60
+ return typeof response.accountId === "string" && typeof response.s3Endpoint === "string" && typeof response.startDate === "string" && typeof response.endDate === "string" && typeof response.email === "string" && typeof response.bucketName === "string" && typeof response.bucketId === "string";
61
+ }
62
+ function redactApplicationKeyShallow(target) {
63
+ return {
64
+ ...target,
65
+ applicationKey: require_redaction_placeholders.APPLICATION_KEY_REDACTED
66
+ };
67
+ }
68
+ function installPortableJsonHook(target, toJson) {
69
+ const originalPrototype = Object.getPrototypeOf(target);
70
+ const redactionPrototype = Object.create(originalPrototype);
71
+ Object.defineProperty(redactionPrototype, "toJSON", {
72
+ value: toJson,
73
+ enumerable: false,
74
+ configurable: true
75
+ });
76
+ Object.setPrototypeOf(target, redactionPrototype);
77
+ Object.defineProperty(target, "toJSON", {
78
+ value: toJson,
79
+ enumerable: false,
80
+ configurable: true
81
+ });
82
+ }
83
+ function redactWithHooks(value, toRedactedJsonForTarget, toRedactedString) {
84
+ const target = Object.isExtensible(value) ? value : { ...value };
85
+ const toRedactedJson = () => toRedactedJsonForTarget(target);
86
+ installPortableJsonHook(target, toRedactedJson);
87
+ Object.defineProperties(target, {
88
+ toString: {
89
+ value: toRedactedString,
90
+ enumerable: false,
91
+ configurable: true
92
+ },
93
+ [inspectSymbol]: {
94
+ value: toRedactedJson,
95
+ enumerable: false,
96
+ configurable: true
97
+ }
98
+ });
99
+ return target;
100
+ }
101
+ /**
102
+ * Returns a redacted copy for log serializers that intentionally hide tokens.
103
+ *
104
+ * @param auth - Partner authorization response to render safely.
105
+ *
106
+ * @returns A plain object with the Partner token replaced by a placeholder.
107
+ */
108
+ function partnerAuthorizeResponseToRedactedJson(auth) {
109
+ const redacted = {
110
+ accountId: auth.accountId,
111
+ authorizationToken: require_redaction_placeholders.PARTNER_TOKEN_REDACTED,
112
+ apiInfo: partnerApiInfoToRedactedJson(auth.apiInfo),
113
+ applicationKeyExpirationTimestamp: auth.applicationKeyExpirationTimestamp
114
+ };
115
+ if (auth.groupsApiUrl !== void 0) redacted.groupsApiUrl = auth.groupsApiUrl;
116
+ if (auth.backupApiUrl !== void 0) redacted.backupApiUrl = auth.backupApiUrl;
117
+ if (auth.groupsCapabilities !== void 0) redacted.groupsCapabilities = [...auth.groupsCapabilities];
118
+ if (auth.backupCapabilities !== void 0) redacted.backupCapabilities = [...auth.backupCapabilities];
119
+ return redacted;
120
+ }
121
+ /**
122
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
123
+ *
124
+ * @param result - Create group member result to render safely.
125
+ *
126
+ * @returns A plain object with the application key secret replaced by a placeholder.
127
+ *
128
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
129
+ */
130
+ function createGroupMemberResultToRedactedJson(result) {
131
+ return {
132
+ applicationKeyId: result.applicationKeyId,
133
+ applicationKey: require_redaction_placeholders.APPLICATION_KEY_REDACTED,
134
+ groupMember: partnerGroupMemberToRedactedJson(result.groupMember)
135
+ };
136
+ }
137
+ /**
138
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
139
+ *
140
+ * @param response - Create group member response to render safely.
141
+ *
142
+ * @returns A plain object with the application key secret replaced by a placeholder.
143
+ *
144
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
145
+ */
146
+ function createGroupMemberResponseToRedactedJson(response) {
147
+ return createGroupMemberResultToRedactedJson(response);
148
+ }
149
+ /**
150
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
151
+ *
152
+ * @param result - Reserve trial account result to render safely.
153
+ *
154
+ * @returns A plain object with the application key secret replaced by a placeholder.
155
+ *
156
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
157
+ */
158
+ function reserveTrialCreateAccountResultToRedactedJson(result) {
159
+ return {
160
+ accountId: result.accountId,
161
+ applicationKey: require_redaction_placeholders.APPLICATION_KEY_REDACTED,
162
+ applicationKeyId: result.applicationKeyId,
163
+ s3Endpoint: result.s3Endpoint,
164
+ startDate: result.startDate,
165
+ endDate: result.endDate,
166
+ email: result.email,
167
+ bucketName: result.bucketName,
168
+ bucketId: result.bucketId
169
+ };
170
+ }
171
+ /**
172
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
173
+ *
174
+ * @param response - Reserve trial account response to render safely.
175
+ *
176
+ * @returns A plain object with the application key secret replaced by a placeholder.
177
+ *
178
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
179
+ */
180
+ function reserveTrialCreateAccountResponseToRedactedJson(response) {
181
+ return reserveTrialCreateAccountResultToRedactedJson(response);
182
+ }
183
+ /**
184
+ * Adds non-enumerable serialization and inspection hooks that redact the
185
+ * Partner token through `JSON.stringify`, `toString`, and Node `util.inspect`
186
+ * while preserving direct property access.
187
+ *
188
+ * `JSON.stringify` no longer round-trips `authorizationToken` from protected
189
+ * authorize responses. Persist trusted auth caches with
190
+ * `partnerAuthorizeResponseForPersistence(auth)` only into encrypted or
191
+ * otherwise credential-grade storage, or read `authorizationToken` directly
192
+ * into secure storage before serializing.
193
+ *
194
+ * This does not make the object universally log-safe: object spread,
195
+ * `Object.assign`, `Object.entries`, `structuredClone`, and serializers that
196
+ * walk enumerable properties can still expose the raw token.
197
+ *
198
+ * @param auth - Partner authorization response to protect from accidental inspection.
199
+ *
200
+ * @returns The same auth object with inspection hooks installed when possible.
201
+ */
202
+ function redactPartnerAuthorizeResponse(auth) {
203
+ const target = Object.isExtensible(auth) ? auth : { ...auth };
204
+ const toRedactedJson = () => partnerAuthorizeResponseToRedactedJson(target);
205
+ const toRedactedString = () => `[PartnerAuthorizeResponse ${require_redaction_placeholders.PARTNER_TOKEN_REDACTED}]`;
206
+ installPortableJsonHook(target, toRedactedJson);
207
+ Object.defineProperties(target, {
208
+ toString: {
209
+ value: toRedactedString,
210
+ enumerable: false,
211
+ configurable: true
212
+ },
213
+ [inspectSymbol]: {
214
+ value: toRedactedJson,
215
+ enumerable: false,
216
+ configurable: true
217
+ }
218
+ });
219
+ return target;
220
+ }
221
+ /**
222
+ * Adds non-enumerable serialization and inspection hooks that redact the
223
+ * application key secret while preserving direct property access.
224
+ *
225
+ * @param result - Create group member result to protect from accidental logging.
226
+ *
227
+ * @returns The same result object with redaction hooks installed when possible.
228
+ */
229
+ function redactCreateGroupMemberResult(result) {
230
+ return redactWithHooks(result, createGroupMemberResultToRedactedJson, () => `[CreateGroupMemberResult ${require_redaction_placeholders.APPLICATION_KEY_REDACTED}]`);
231
+ }
232
+ /**
233
+ * Adds non-enumerable serialization and inspection hooks that redact the
234
+ * create-group-member application key secret while preserving direct access.
235
+ *
236
+ * @param response - Create group member response to protect from accidental logging.
237
+ *
238
+ * @returns The same response object with redaction hooks installed when possible.
239
+ *
240
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
241
+ */
242
+ function redactCreateGroupMemberResponse(response) {
243
+ if (!isCredentialBearing(response)) throw new require_errors_index.B2PartnerAuthorizationError("b2_create_group_member response did not contain a usable application key");
244
+ if (matchesGroupMemberShape(response.groupMember)) return redactCreateGroupMemberResult(response);
245
+ return redactWithHooks(response, redactApplicationKeyShallow, () => `[CreateGroupMemberResponse ${require_redaction_placeholders.APPLICATION_KEY_REDACTED}]`);
246
+ }
247
+ /**
248
+ * Adds non-enumerable serialization and inspection hooks that redact the
249
+ * application key secret while preserving direct property access.
250
+ *
251
+ * `JSON.stringify` redacts because the response contains newly minted
252
+ * application key secrets that are commonly logged with responses. Callers
253
+ * that need to persist the key should read `applicationKey` directly into
254
+ * secure storage before serializing the object.
255
+ *
256
+ * @param result - Reserve trial account result to protect from accidental logging.
257
+ *
258
+ * @returns The same result object with redaction hooks installed when possible.
259
+ */
260
+ function redactReserveTrialCreateAccountResult(result) {
261
+ return redactWithHooks(result, reserveTrialCreateAccountResultToRedactedJson, () => `[ReserveTrialCreateAccountResult ${require_redaction_placeholders.APPLICATION_KEY_REDACTED}]`);
262
+ }
263
+ /**
264
+ * Adds non-enumerable serialization and inspection hooks that redact the
265
+ * reserve-trial application key secret while preserving direct property access.
266
+ *
267
+ * @param response - Reserve trial account response to protect from accidental logging.
268
+ *
269
+ * @returns The same response object with redaction hooks installed when possible.
270
+ *
271
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
272
+ */
273
+ function redactReserveTrialCreateAccountResponse(response) {
274
+ if (!isCredentialBearing(response)) throw new require_errors_index.B2PartnerAuthorizationError("b2_reserve_trial_create_account response did not contain a usable application key");
275
+ if (matchesReserveTrialAccountShape(response)) return redactReserveTrialCreateAccountResult(response);
276
+ return redactWithHooks(response, redactApplicationKeyShallow, () => `[ReserveTrialCreateAccountResponse ${require_redaction_placeholders.APPLICATION_KEY_REDACTED}]`);
277
+ }
278
+ //#endregion
279
+ exports.APPLICATION_KEY_REDACTED = require_redaction_placeholders.APPLICATION_KEY_REDACTED;
280
+ exports.PARTNER_TOKEN_REDACTED = require_redaction_placeholders.PARTNER_TOKEN_REDACTED;
281
+ exports.createGroupMemberResponseToRedactedJson = createGroupMemberResponseToRedactedJson;
282
+ exports.createGroupMemberResultToRedactedJson = createGroupMemberResultToRedactedJson;
283
+ exports.partnerAuthorizeResponseToRedactedJson = partnerAuthorizeResponseToRedactedJson;
284
+ exports.redactCreateGroupMemberResponse = redactCreateGroupMemberResponse;
285
+ exports.redactCreateGroupMemberResult = redactCreateGroupMemberResult;
286
+ exports.redactPartnerAuthorizeResponse = redactPartnerAuthorizeResponse;
287
+ exports.redactReserveTrialCreateAccountResponse = redactReserveTrialCreateAccountResponse;
288
+ exports.redactReserveTrialCreateAccountResult = redactReserveTrialCreateAccountResult;
289
+ exports.reserveTrialCreateAccountResponseToRedactedJson = reserveTrialCreateAccountResponseToRedactedJson;
290
+ exports.reserveTrialCreateAccountResultToRedactedJson = reserveTrialCreateAccountResultToRedactedJson;
291
+
292
+ //# sourceMappingURL=redaction.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.cjs","names":[],"sources":["../../src/partner/redaction.ts"],"sourcesContent":["import { B2PartnerAuthorizationError } from '../errors/index.ts'\nimport type {\n CreateGroupMemberResponse,\n CreateGroupMemberResult,\n PartnerApiInfo,\n PartnerAuthorizeResponse,\n PartnerBackupApiInfo,\n PartnerGroupMember,\n PartnerGroupsApiInfo,\n PartnerStorageApiInfo,\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\n/**\n * JSON-safe create-group-member result with the one-time application key\n * secret replaced by a placeholder string.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport type RedactedCreateGroupMemberResultJson = Omit<\n CreateGroupMemberResult,\n 'applicationKey'\n> & {\n /** Redacted application key secret placeholder. */\n readonly applicationKey: string\n}\n\n/**\n * JSON-safe create-group-member response with the one-time application key\n * secret replaced by a placeholder string.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport type RedactedCreateGroupMemberResponseJson = RedactedCreateGroupMemberResultJson\n\n/**\n * JSON-safe reserve-trial account result with the one-time application key\n * secret replaced by a placeholder string.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport type RedactedReserveTrialCreateAccountResultJson = Omit<\n ReserveTrialCreateAccountResult,\n 'applicationKey'\n> & {\n /** Redacted application key secret placeholder. */\n readonly applicationKey: string\n}\n\n/**\n * JSON-safe reserve-trial account response with the one-time application key\n * secret replaced by a placeholder string.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport type RedactedReserveTrialCreateAccountResponseJson =\n RedactedReserveTrialCreateAccountResultJson\n\nconst inspectSymbol = Symbol.for('nodejs.util.inspect.custom')\n\ntype Writable<T> = { -readonly [K in keyof T]: T[K] }\n\nfunction partnerGroupsApiInfoToRedactedJson(info: PartnerGroupsApiInfo): PartnerGroupsApiInfo {\n return {\n capabilities: [...info.capabilities],\n groupsApiUrl: info.groupsApiUrl,\n infoType: info.infoType,\n }\n}\n\nfunction partnerBackupApiInfoToRedactedJson(info: PartnerBackupApiInfo): PartnerBackupApiInfo {\n return {\n capabilities: [...info.capabilities],\n backupApiUrl: info.backupApiUrl,\n infoType: info.infoType,\n }\n}\n\nfunction partnerStorageApiInfoToRedactedJson(info: PartnerStorageApiInfo): PartnerStorageApiInfo {\n return {\n absoluteMinimumPartSize: info.absoluteMinimumPartSize,\n apiUrl: info.apiUrl,\n bucketId: info.bucketId,\n bucketName: info.bucketName,\n capabilities: [...info.capabilities],\n downloadUrl: info.downloadUrl,\n infoType: info.infoType,\n namePrefix: info.namePrefix,\n recommendedPartSize: info.recommendedPartSize,\n s3ApiUrl: info.s3ApiUrl,\n }\n}\n\nfunction partnerApiInfoToRedactedJson(apiInfo: PartnerApiInfo): PartnerApiInfo {\n const redacted: Writable<PartnerApiInfo> = {}\n if (apiInfo.storageApi !== undefined) {\n redacted.storageApi = partnerStorageApiInfoToRedactedJson(apiInfo.storageApi)\n }\n if (apiInfo.groupsApi !== undefined) {\n redacted.groupsApi = partnerGroupsApiInfoToRedactedJson(apiInfo.groupsApi)\n }\n if (apiInfo.backupApi !== undefined) {\n redacted.backupApi = partnerBackupApiInfoToRedactedJson(apiInfo.backupApi)\n }\n return redacted\n}\n\nfunction partnerGroupMemberToRedactedJson(groupMember: PartnerGroupMember): PartnerGroupMember {\n return {\n accountId: groupMember.accountId,\n email: groupMember.email,\n groupId: groupMember.groupId,\n groupName: groupMember.groupName,\n region: groupMember.region,\n s3Endpoint: groupMember.s3Endpoint,\n }\n}\n\nfunction isSingleJsonObject(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n// The one invariant a create/reserve redaction wrapper must never violate: a\n// usable one-time credential must survive. B2 mints the application key exactly\n// once, after the (non-deletable) account already exists, so throwing the\n// response away over an unexpected *non-credential* field would destroy an\n// unrecoverable secret — the core hazard of #280. We hard-fail only when there\n// is no usable credential to preserve (nothing is lost in that case).\nfunction isCredentialBearing(\n response: unknown,\n): response is { applicationKey: string; applicationKeyId: string } {\n return (\n isSingleJsonObject(response) &&\n typeof response['applicationKey'] === 'string' &&\n typeof response['applicationKeyId'] === 'string'\n )\n}\n\n// True when `groupMember` matches every documented field type, so the\n// field-specific (allowlist) redaction copies the full shape without dropping\n// unexpected fields. A partial/variant object falls back to shallow redaction.\nfunction matchesGroupMemberShape(groupMember: unknown): groupMember is PartnerGroupMember {\n return (\n isSingleJsonObject(groupMember) &&\n typeof groupMember['accountId'] === 'string' &&\n typeof groupMember['email'] === 'string' &&\n typeof groupMember['groupId'] === 'string' &&\n typeof groupMember['groupName'] === 'string' &&\n typeof groupMember['region'] === 'string' &&\n typeof groupMember['s3Endpoint'] === 'string'\n )\n}\n\n// True when the reserve-trial response also matches every documented\n// non-credential field, so the field-specific (allowlist) redaction is exact.\nfunction matchesReserveTrialAccountShape(response: ReserveTrialCreateAccountResponse): boolean {\n return (\n typeof response.accountId === 'string' &&\n typeof response.s3Endpoint === 'string' &&\n typeof response.startDate === 'string' &&\n typeof response.endDate === 'string' &&\n typeof response.email === 'string' &&\n typeof response.bucketName === 'string' &&\n typeof response.bucketId === 'string'\n )\n}\n\n// Redaction hook for a credential-bearing response whose surrounding shape is\n// unexpected: shallow-copy every field the server sent and redact only the\n// one-time secret, so the response is never discarded and never logs the key.\nfunction redactApplicationKeyShallow<T extends object>(target: T): unknown {\n return { ...target, applicationKey: APPLICATION_KEY_REDACTED }\n}\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\nfunction redactWithHooks<T extends object>(\n value: T,\n toRedactedJsonForTarget: (target: T) => unknown,\n toRedactedString: () => string,\n): T {\n const target = Object.isExtensible(value) ? value : ({ ...value } as T)\n const toRedactedJson = (): unknown => toRedactedJsonForTarget(target)\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 * 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 const redacted: Writable<RedactedPartnerAuthorizeResponseJson> = {\n accountId: auth.accountId,\n authorizationToken: PARTNER_TOKEN_REDACTED,\n apiInfo: partnerApiInfoToRedactedJson(auth.apiInfo),\n applicationKeyExpirationTimestamp: auth.applicationKeyExpirationTimestamp,\n }\n if (auth.groupsApiUrl !== undefined) redacted.groupsApiUrl = auth.groupsApiUrl\n if (auth.backupApiUrl !== undefined) redacted.backupApiUrl = auth.backupApiUrl\n if (auth.groupsCapabilities !== undefined) {\n redacted.groupsCapabilities = [...auth.groupsCapabilities]\n }\n if (auth.backupCapabilities !== undefined) {\n redacted.backupCapabilities = [...auth.backupCapabilities]\n }\n return redacted\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 *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport function createGroupMemberResultToRedactedJson(\n result: CreateGroupMemberResult,\n): RedactedCreateGroupMemberResultJson {\n return {\n applicationKeyId: result.applicationKeyId,\n applicationKey: APPLICATION_KEY_REDACTED,\n groupMember: partnerGroupMemberToRedactedJson(result.groupMember),\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 object with the application key secret replaced by a placeholder.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport function createGroupMemberResponseToRedactedJson(\n response: CreateGroupMemberResponse,\n): RedactedCreateGroupMemberResponseJson {\n return createGroupMemberResultToRedactedJson(response)\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 *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport function reserveTrialCreateAccountResultToRedactedJson(\n result: ReserveTrialCreateAccountResult,\n): RedactedReserveTrialCreateAccountResultJson {\n return {\n accountId: result.accountId,\n applicationKey: APPLICATION_KEY_REDACTED,\n applicationKeyId: result.applicationKeyId,\n s3Endpoint: result.s3Endpoint,\n startDate: result.startDate,\n endDate: result.endDate,\n email: result.email,\n bucketName: result.bucketName,\n bucketId: result.bucketId,\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 object with the application key secret replaced by a placeholder.\n *\n * @experimental Partner API surface; shape may change as the Partner API docs evolve.\n */\nexport function reserveTrialCreateAccountResponseToRedactedJson(\n response: ReserveTrialCreateAccountResponse,\n): RedactedReserveTrialCreateAccountResponseJson {\n return reserveTrialCreateAccountResultToRedactedJson(response)\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 return redactWithHooks(\n result,\n createGroupMemberResultToRedactedJson,\n () => `[CreateGroupMemberResult ${APPLICATION_KEY_REDACTED}]`,\n )\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact the\n * create-group-member application key secret while preserving direct access.\n *\n * @param response - Create group member response to protect from accidental logging.\n *\n * @returns The same response object with redaction hooks installed when possible.\n *\n * @throws B2PartnerAuthorizationError if the response carries no usable application key.\n */\nexport function redactCreateGroupMemberResponse(\n response: CreateGroupMemberResponse,\n): CreateGroupMemberResponse {\n if (!isCredentialBearing(response)) {\n throw new B2PartnerAuthorizationError(\n 'b2_create_group_member response did not contain a usable application key',\n )\n }\n // Full documented shape → field-specific (allowlist) redaction.\n if (matchesGroupMemberShape(response.groupMember)) {\n return redactCreateGroupMemberResult(response)\n }\n // Credential present but the surrounding shape is unexpected: never discard a\n // provisioned one-time key. Return it with only the secret redacted for logs.\n return redactWithHooks(\n response,\n redactApplicationKeyShallow,\n () => `[CreateGroupMemberResponse ${APPLICATION_KEY_REDACTED}]`,\n )\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 with responses. 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 return redactWithHooks(\n result,\n reserveTrialCreateAccountResultToRedactedJson,\n () => `[ReserveTrialCreateAccountResult ${APPLICATION_KEY_REDACTED}]`,\n )\n}\n\n/**\n * Adds non-enumerable serialization and inspection hooks that redact the\n * reserve-trial application key secret while preserving direct property access.\n *\n * @param response - Reserve trial account response to protect from accidental logging.\n *\n * @returns The same response object with redaction hooks installed when possible.\n *\n * @throws B2PartnerAuthorizationError if the response carries no usable application key.\n */\nexport function redactReserveTrialCreateAccountResponse(\n response: ReserveTrialCreateAccountResponse,\n): ReserveTrialCreateAccountResponse {\n if (!isCredentialBearing(response)) {\n throw new B2PartnerAuthorizationError(\n 'b2_reserve_trial_create_account response did not contain a usable application key',\n )\n }\n // Full documented shape → field-specific (allowlist) redaction.\n if (matchesReserveTrialAccountShape(response)) {\n return redactReserveTrialCreateAccountResult(response)\n }\n // Credential present but the surrounding shape is unexpected: never discard a\n // provisioned one-time key. Return it with only the secret redacted for logs.\n return redactWithHooks(\n response,\n redactApplicationKeyShallow,\n () => `[ReserveTrialCreateAccountResponse ${APPLICATION_KEY_REDACTED}]`,\n )\n}\n"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { CreateGroupMemberResponse, CreateGroupMemberResult, PartnerAuthorizeResponse, ReserveTrialCreateAccountResponse, ReserveTrialCreateAccountResult } from '../types/partner.js';
2
+ export { APPLICATION_KEY_REDACTED, PARTNER_TOKEN_REDACTED, } from './redaction-placeholders.js';
3
+ /**
4
+ * JSON-safe Partner authorize response with the Partner token replaced by a
5
+ * placeholder string.
6
+ */
7
+ export interface RedactedPartnerAuthorizeResponseJson extends Omit<PartnerAuthorizeResponse, 'authorizationToken'> {
8
+ /** Redacted Partner authorization token placeholder. */
9
+ readonly authorizationToken: string;
10
+ }
11
+ /**
12
+ * JSON-safe create-group-member result with the one-time application key
13
+ * secret replaced by a placeholder string.
14
+ *
15
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
16
+ */
17
+ export type RedactedCreateGroupMemberResultJson = Omit<CreateGroupMemberResult, 'applicationKey'> & {
18
+ /** Redacted application key secret placeholder. */
19
+ readonly applicationKey: string;
20
+ };
21
+ /**
22
+ * JSON-safe create-group-member response with the one-time application key
23
+ * secret replaced by a placeholder string.
24
+ *
25
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
26
+ */
27
+ export type RedactedCreateGroupMemberResponseJson = RedactedCreateGroupMemberResultJson;
28
+ /**
29
+ * JSON-safe reserve-trial account result with the one-time application key
30
+ * secret replaced by a placeholder string.
31
+ *
32
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
33
+ */
34
+ export type RedactedReserveTrialCreateAccountResultJson = Omit<ReserveTrialCreateAccountResult, 'applicationKey'> & {
35
+ /** Redacted application key secret placeholder. */
36
+ readonly applicationKey: string;
37
+ };
38
+ /**
39
+ * JSON-safe reserve-trial account response with the one-time application key
40
+ * secret replaced by a placeholder string.
41
+ *
42
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
43
+ */
44
+ export type RedactedReserveTrialCreateAccountResponseJson = RedactedReserveTrialCreateAccountResultJson;
45
+ /**
46
+ * Returns a redacted copy for log serializers that intentionally hide tokens.
47
+ *
48
+ * @param auth - Partner authorization response to render safely.
49
+ *
50
+ * @returns A plain object with the Partner token replaced by a placeholder.
51
+ */
52
+ export declare function partnerAuthorizeResponseToRedactedJson(auth: PartnerAuthorizeResponse): RedactedPartnerAuthorizeResponseJson;
53
+ /**
54
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
55
+ *
56
+ * @param result - Create group member result to render safely.
57
+ *
58
+ * @returns A plain object with the application key secret replaced by a placeholder.
59
+ *
60
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
61
+ */
62
+ export declare function createGroupMemberResultToRedactedJson(result: CreateGroupMemberResult): RedactedCreateGroupMemberResultJson;
63
+ /**
64
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
65
+ *
66
+ * @param response - Create group member response to render safely.
67
+ *
68
+ * @returns A plain object with the application key secret replaced by a placeholder.
69
+ *
70
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
71
+ */
72
+ export declare function createGroupMemberResponseToRedactedJson(response: CreateGroupMemberResponse): RedactedCreateGroupMemberResponseJson;
73
+ /**
74
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
75
+ *
76
+ * @param result - Reserve trial account result to render safely.
77
+ *
78
+ * @returns A plain object with the application key secret replaced by a placeholder.
79
+ *
80
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
81
+ */
82
+ export declare function reserveTrialCreateAccountResultToRedactedJson(result: ReserveTrialCreateAccountResult): RedactedReserveTrialCreateAccountResultJson;
83
+ /**
84
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
85
+ *
86
+ * @param response - Reserve trial account response to render safely.
87
+ *
88
+ * @returns A plain object with the application key secret replaced by a placeholder.
89
+ *
90
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
91
+ */
92
+ export declare function reserveTrialCreateAccountResponseToRedactedJson(response: ReserveTrialCreateAccountResponse): RedactedReserveTrialCreateAccountResponseJson;
93
+ /**
94
+ * Adds non-enumerable serialization and inspection hooks that redact the
95
+ * Partner token through `JSON.stringify`, `toString`, and Node `util.inspect`
96
+ * while preserving direct property access.
97
+ *
98
+ * `JSON.stringify` no longer round-trips `authorizationToken` from protected
99
+ * authorize responses. Persist trusted auth caches with
100
+ * `partnerAuthorizeResponseForPersistence(auth)` only into encrypted or
101
+ * otherwise credential-grade storage, or read `authorizationToken` directly
102
+ * into secure storage before serializing.
103
+ *
104
+ * This does not make the object universally log-safe: object spread,
105
+ * `Object.assign`, `Object.entries`, `structuredClone`, and serializers that
106
+ * walk enumerable properties can still expose the raw token.
107
+ *
108
+ * @param auth - Partner authorization response to protect from accidental inspection.
109
+ *
110
+ * @returns The same auth object with inspection hooks installed when possible.
111
+ */
112
+ export declare function redactPartnerAuthorizeResponse(auth: PartnerAuthorizeResponse): PartnerAuthorizeResponse;
113
+ /**
114
+ * Adds non-enumerable serialization and inspection hooks that redact the
115
+ * application key secret while preserving direct property access.
116
+ *
117
+ * @param result - Create group member result to protect from accidental logging.
118
+ *
119
+ * @returns The same result object with redaction hooks installed when possible.
120
+ */
121
+ export declare function redactCreateGroupMemberResult(result: CreateGroupMemberResult): CreateGroupMemberResult;
122
+ /**
123
+ * Adds non-enumerable serialization and inspection hooks that redact the
124
+ * create-group-member application key secret while preserving direct access.
125
+ *
126
+ * @param response - Create group member response to protect from accidental logging.
127
+ *
128
+ * @returns The same response object with redaction hooks installed when possible.
129
+ *
130
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
131
+ */
132
+ export declare function redactCreateGroupMemberResponse(response: CreateGroupMemberResponse): CreateGroupMemberResponse;
133
+ /**
134
+ * Adds non-enumerable serialization and inspection hooks that redact the
135
+ * application key secret while preserving direct property access.
136
+ *
137
+ * `JSON.stringify` redacts because the response contains newly minted
138
+ * application key secrets that are commonly logged with responses. Callers
139
+ * that need to persist the key should read `applicationKey` directly into
140
+ * secure storage before serializing the object.
141
+ *
142
+ * @param result - Reserve trial account result to protect from accidental logging.
143
+ *
144
+ * @returns The same result object with redaction hooks installed when possible.
145
+ */
146
+ export declare function redactReserveTrialCreateAccountResult(result: ReserveTrialCreateAccountResult): ReserveTrialCreateAccountResult;
147
+ /**
148
+ * Adds non-enumerable serialization and inspection hooks that redact the
149
+ * reserve-trial application key secret while preserving direct property access.
150
+ *
151
+ * @param response - Reserve trial account response to protect from accidental logging.
152
+ *
153
+ * @returns The same response object with redaction hooks installed when possible.
154
+ *
155
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
156
+ */
157
+ export declare function redactReserveTrialCreateAccountResponse(response: ReserveTrialCreateAccountResponse): ReserveTrialCreateAccountResponse;
158
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/partner/redaction.js"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,yBAAyB,EACzB,uBAAuB,EAEvB,wBAAwB,EAKxB,iCAAiC,EACjC,+BAA+B,EAChC,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EACL,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,6BAA6B,CAAA;AAEpC;;;GAGG;AACH,MAAM,WAAW,oCACf,SAAQ,IAAI,CAAC,wBAAwB,EAAE,oBAAoB,CAAC;IAC5D,wDAAwD;IACxD,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;CACpC;AAED;;;;;GAKG;AACH,MAAM,MAAM,mCAAmC,GAAG,IAAI,CACpD,uBAAuB,EACvB,gBAAgB,CACjB,GAAG;IACF,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,qCAAqC,GAAG,mCAAmC,CAAA;AAEvF;;;;;GAKG;AACH,MAAM,MAAM,2CAA2C,GAAG,IAAI,CAC5D,+BAA+B,EAC/B,gBAAgB,CACjB,GAAG;IACF,mDAAmD;IACnD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC,CAAA;AAED;;;;;GAKG;AACH,MAAM,MAAM,6CAA6C,GACvD,2CAA2C,CAAA;AAiK7C;;;;;;GAMG;AACH,wBAAgB,sCAAsC,CACpD,IAAI,EAAE,wBAAwB,GAC7B,oCAAoC,CAgBtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,uBAAuB,GAC9B,mCAAmC,CAMrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,yBAAyB,GAClC,qCAAqC,CAEvC;AAED;;;;;;;;GAQG;AACH,wBAAgB,6CAA6C,CAC3D,MAAM,EAAE,+BAA+B,GACtC,2CAA2C,CAY7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,+CAA+C,CAC7D,QAAQ,EAAE,iCAAiC,GAC1C,6CAA6C,CAE/C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,wBAAwB,GAC7B,wBAAwB,CAqB1B;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,uBAAuB,GAC9B,uBAAuB,CAMzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,yBAAyB,GAClC,yBAAyB,CAiB3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qCAAqC,CACnD,MAAM,EAAE,+BAA+B,GACtC,+BAA+B,CAMjC;AAED;;;;;;;;;GASG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,iCAAiC,GAC1C,iCAAiC,CAiBnC"}
@@ -0,0 +1,158 @@
1
+ import { CreateGroupMemberResponse, CreateGroupMemberResult, PartnerAuthorizeResponse, ReserveTrialCreateAccountResponse, ReserveTrialCreateAccountResult } from '../types/partner.js';
2
+ export { APPLICATION_KEY_REDACTED, PARTNER_TOKEN_REDACTED, } from './redaction-placeholders.js';
3
+ /**
4
+ * JSON-safe Partner authorize response with the Partner token replaced by a
5
+ * placeholder string.
6
+ */
7
+ export interface RedactedPartnerAuthorizeResponseJson extends Omit<PartnerAuthorizeResponse, 'authorizationToken'> {
8
+ /** Redacted Partner authorization token placeholder. */
9
+ readonly authorizationToken: string;
10
+ }
11
+ /**
12
+ * JSON-safe create-group-member result with the one-time application key
13
+ * secret replaced by a placeholder string.
14
+ *
15
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
16
+ */
17
+ export type RedactedCreateGroupMemberResultJson = Omit<CreateGroupMemberResult, 'applicationKey'> & {
18
+ /** Redacted application key secret placeholder. */
19
+ readonly applicationKey: string;
20
+ };
21
+ /**
22
+ * JSON-safe create-group-member response with the one-time application key
23
+ * secret replaced by a placeholder string.
24
+ *
25
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
26
+ */
27
+ export type RedactedCreateGroupMemberResponseJson = RedactedCreateGroupMemberResultJson;
28
+ /**
29
+ * JSON-safe reserve-trial account result with the one-time application key
30
+ * secret replaced by a placeholder string.
31
+ *
32
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
33
+ */
34
+ export type RedactedReserveTrialCreateAccountResultJson = Omit<ReserveTrialCreateAccountResult, 'applicationKey'> & {
35
+ /** Redacted application key secret placeholder. */
36
+ readonly applicationKey: string;
37
+ };
38
+ /**
39
+ * JSON-safe reserve-trial account response with the one-time application key
40
+ * secret replaced by a placeholder string.
41
+ *
42
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
43
+ */
44
+ export type RedactedReserveTrialCreateAccountResponseJson = RedactedReserveTrialCreateAccountResultJson;
45
+ /**
46
+ * Returns a redacted copy for log serializers that intentionally hide tokens.
47
+ *
48
+ * @param auth - Partner authorization response to render safely.
49
+ *
50
+ * @returns A plain object with the Partner token replaced by a placeholder.
51
+ */
52
+ export declare function partnerAuthorizeResponseToRedactedJson(auth: PartnerAuthorizeResponse): RedactedPartnerAuthorizeResponseJson;
53
+ /**
54
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
55
+ *
56
+ * @param result - Create group member result to render safely.
57
+ *
58
+ * @returns A plain object with the application key secret replaced by a placeholder.
59
+ *
60
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
61
+ */
62
+ export declare function createGroupMemberResultToRedactedJson(result: CreateGroupMemberResult): RedactedCreateGroupMemberResultJson;
63
+ /**
64
+ * Returns a redacted copy for log serializers that intentionally hide group-member keys.
65
+ *
66
+ * @param response - Create group member response to render safely.
67
+ *
68
+ * @returns A plain object with the application key secret replaced by a placeholder.
69
+ *
70
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
71
+ */
72
+ export declare function createGroupMemberResponseToRedactedJson(response: CreateGroupMemberResponse): RedactedCreateGroupMemberResponseJson;
73
+ /**
74
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
75
+ *
76
+ * @param result - Reserve trial account result to render safely.
77
+ *
78
+ * @returns A plain object with the application key secret replaced by a placeholder.
79
+ *
80
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
81
+ */
82
+ export declare function reserveTrialCreateAccountResultToRedactedJson(result: ReserveTrialCreateAccountResult): RedactedReserveTrialCreateAccountResultJson;
83
+ /**
84
+ * Returns a redacted copy for log serializers that intentionally hide trial account keys.
85
+ *
86
+ * @param response - Reserve trial account response to render safely.
87
+ *
88
+ * @returns A plain object with the application key secret replaced by a placeholder.
89
+ *
90
+ * @experimental Partner API surface; shape may change as the Partner API docs evolve.
91
+ */
92
+ export declare function reserveTrialCreateAccountResponseToRedactedJson(response: ReserveTrialCreateAccountResponse): RedactedReserveTrialCreateAccountResponseJson;
93
+ /**
94
+ * Adds non-enumerable serialization and inspection hooks that redact the
95
+ * Partner token through `JSON.stringify`, `toString`, and Node `util.inspect`
96
+ * while preserving direct property access.
97
+ *
98
+ * `JSON.stringify` no longer round-trips `authorizationToken` from protected
99
+ * authorize responses. Persist trusted auth caches with
100
+ * `partnerAuthorizeResponseForPersistence(auth)` only into encrypted or
101
+ * otherwise credential-grade storage, or read `authorizationToken` directly
102
+ * into secure storage before serializing.
103
+ *
104
+ * This does not make the object universally log-safe: object spread,
105
+ * `Object.assign`, `Object.entries`, `structuredClone`, and serializers that
106
+ * walk enumerable properties can still expose the raw token.
107
+ *
108
+ * @param auth - Partner authorization response to protect from accidental inspection.
109
+ *
110
+ * @returns The same auth object with inspection hooks installed when possible.
111
+ */
112
+ export declare function redactPartnerAuthorizeResponse(auth: PartnerAuthorizeResponse): PartnerAuthorizeResponse;
113
+ /**
114
+ * Adds non-enumerable serialization and inspection hooks that redact the
115
+ * application key secret while preserving direct property access.
116
+ *
117
+ * @param result - Create group member result to protect from accidental logging.
118
+ *
119
+ * @returns The same result object with redaction hooks installed when possible.
120
+ */
121
+ export declare function redactCreateGroupMemberResult(result: CreateGroupMemberResult): CreateGroupMemberResult;
122
+ /**
123
+ * Adds non-enumerable serialization and inspection hooks that redact the
124
+ * create-group-member application key secret while preserving direct access.
125
+ *
126
+ * @param response - Create group member response to protect from accidental logging.
127
+ *
128
+ * @returns The same response object with redaction hooks installed when possible.
129
+ *
130
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
131
+ */
132
+ export declare function redactCreateGroupMemberResponse(response: CreateGroupMemberResponse): CreateGroupMemberResponse;
133
+ /**
134
+ * Adds non-enumerable serialization and inspection hooks that redact the
135
+ * application key secret while preserving direct property access.
136
+ *
137
+ * `JSON.stringify` redacts because the response contains newly minted
138
+ * application key secrets that are commonly logged with responses. Callers
139
+ * that need to persist the key should read `applicationKey` directly into
140
+ * secure storage before serializing the object.
141
+ *
142
+ * @param result - Reserve trial account result to protect from accidental logging.
143
+ *
144
+ * @returns The same result object with redaction hooks installed when possible.
145
+ */
146
+ export declare function redactReserveTrialCreateAccountResult(result: ReserveTrialCreateAccountResult): ReserveTrialCreateAccountResult;
147
+ /**
148
+ * Adds non-enumerable serialization and inspection hooks that redact the
149
+ * reserve-trial application key secret while preserving direct property access.
150
+ *
151
+ * @param response - Reserve trial account response to protect from accidental logging.
152
+ *
153
+ * @returns The same response object with redaction hooks installed when possible.
154
+ *
155
+ * @throws B2PartnerAuthorizationError if the response carries no usable application key.
156
+ */
157
+ export declare function redactReserveTrialCreateAccountResponse(response: ReserveTrialCreateAccountResponse): ReserveTrialCreateAccountResponse;
158
+ //# sourceMappingURL=redaction.d.ts.map