@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,168 @@
1
+ const require_url = require("../raw/url.cjs");
2
+ const require_endpoint_url = require("../partner/endpoint-url.cjs");
3
+ //#region src/backup/raw.ts
4
+ var BACKUP_API = {
5
+ prefix: "api/backup",
6
+ version: "v1"
7
+ };
8
+ /**
9
+ * Normalizes the `bz_delete_computer` wire response to the array-shaped schema.
10
+ *
11
+ * The Backblaze apidocs response *schema* declares a JSON array, but the
12
+ * accompanying *example* shows a single bare object. This tolerates both: an
13
+ * array passes through unchanged, and a lone object is wrapped in a
14
+ * single-element array, so callers always receive a {@link DeleteComputerResponse}
15
+ * regardless of which shape live B2 returns.
16
+ *
17
+ * @param raw - The parsed `bz_delete_computer` JSON body.
18
+ *
19
+ * @returns The response as the canonical array shape.
20
+ *
21
+ * @throws TypeError When the body is neither an array nor an object.
22
+ */
23
+ function normalizeDeleteComputerResponse(raw) {
24
+ if (Array.isArray(raw)) return raw;
25
+ if (raw !== null && typeof raw === "object") return [raw];
26
+ throw new TypeError("bz_delete_computer returned an unexpected response body shape");
27
+ }
28
+ function backupEndpointAllowedSuffixes(transport, authorizedSuffixes) {
29
+ return require_endpoint_url.endpointAllowedSuffixes(transport, authorizedSuffixes, {
30
+ missingGuard: "Computer Backup endpoint requests require BackupClient.authorize() or a locked URL guard before sending Partner tokens",
31
+ unlockedGuard: "Computer Backup endpoint requests require a locked URL guard before sending Partner tokens"
32
+ });
33
+ }
34
+ function backupEndpointUrl(backupApiUrl, endpoint) {
35
+ return require_url.b2Url(backupApiUrl, {
36
+ ...BACKUP_API,
37
+ endpoint
38
+ });
39
+ }
40
+ /**
41
+ * Low-level client for Computer Backup API endpoint bindings.
42
+ *
43
+ * Each method maps directly to one `bz_*` HTTP call under the
44
+ * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner
45
+ * authorization.
46
+ *
47
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
48
+ */
49
+ var BackupRawClient = class {
50
+ /** @internal */
51
+ transport;
52
+ authorizedEndpointSuffixes;
53
+ /**
54
+ * Creates a new BackupRawClient with the given transport.
55
+ *
56
+ * @param options - The constructor configuration.
57
+ */
58
+ constructor(options) {
59
+ this.transport = options.transport;
60
+ this.authorizedEndpointSuffixes = Array.from(options.authorizedBackupEndpointSuffixes ?? []);
61
+ }
62
+ /**
63
+ * Replaces the validated Computer Backup endpoint host suffixes.
64
+ *
65
+ * @param suffixes - Host suffixes derived from Partner authorization.
66
+ *
67
+ * @internal
68
+ */
69
+ setAuthorizedEndpointSuffixes(suffixes) {
70
+ this.authorizedEndpointSuffixes = Array.from(suffixes);
71
+ }
72
+ /**
73
+ * Calls `bz_list_computers`.
74
+ *
75
+ * Uses the documented GET form. The wire response is a single JSON object
76
+ * with a `nextComputerId` cursor and active computer backup records.
77
+ *
78
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
79
+ * @param authToken - The Partner authorization token.
80
+ * @param request - The computer listing query parameters.
81
+ * @param options - Optional abort and per-request retry settings.
82
+ *
83
+ * @returns The single-object computer backup wire response.
84
+ *
85
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
86
+ */
87
+ async listComputers(backupApiUrl, authToken, request, options) {
88
+ return this.getJson(backupApiUrl, authToken, "bz_list_computers", {
89
+ accountId: request.accountId,
90
+ ...request.startComputerId !== void 0 ? { startComputerId: request.startComputerId } : {},
91
+ ...request.maxComputerCount !== void 0 ? { maxComputerCount: request.maxComputerCount } : {}
92
+ }, options);
93
+ }
94
+ /**
95
+ * Calls `bz_delete_computer`.
96
+ *
97
+ * The documented wire response is a JSON array of deletion records. This
98
+ * destructive mutation is not automatically retried or reauthorized in place.
99
+ *
100
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
101
+ * @param authToken - The Partner authorization token.
102
+ * @param request - The computer deletion request body.
103
+ * @param options - Optional abort and per-request retry settings.
104
+ *
105
+ * @returns The deleted computer backup record array.
106
+ *
107
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
108
+ */
109
+ async deleteComputer(backupApiUrl, authToken, request, options) {
110
+ return normalizeDeleteComputerResponse(await this.postNonRetryingMutationJson(backupApiUrl, authToken, "bz_delete_computer", {
111
+ accountId: request.accountId,
112
+ computerId: request.computerId
113
+ }, options));
114
+ }
115
+ safeBackupApiUrl(backupApiUrl) {
116
+ return require_endpoint_url.validatePartnerEndpointUrl(backupApiUrl, "backupApiUrl", backupEndpointAllowedSuffixes(this.transport, this.authorizedEndpointSuffixes));
117
+ }
118
+ /**
119
+ * Sends a JSON GET request to the specified Computer Backup API endpoint.
120
+ *
121
+ * @param backupApiUrl - The Computer Backup API base URL.
122
+ * @param authToken - The Partner authorization token.
123
+ * @param endpoint - The Computer Backup API endpoint name.
124
+ * @param query - The query-string parameters.
125
+ * @param options - Optional abort and per-request retry settings.
126
+ *
127
+ * @returns The parsed JSON response.
128
+ */
129
+ async getJson(backupApiUrl, authToken, endpoint, query, options) {
130
+ return (await this.transport.send({
131
+ url: require_endpoint_url.withQueryString(backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint), query),
132
+ method: "GET",
133
+ headers: { Authorization: authToken },
134
+ ...options?.signal !== void 0 ? { signal: options.signal } : {},
135
+ ...options?.retry !== void 0 ? { retry: options.retry } : {}
136
+ })).json();
137
+ }
138
+ /**
139
+ * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.
140
+ *
141
+ * @param backupApiUrl - The Computer Backup API base URL.
142
+ * @param authToken - The Partner authorization token.
143
+ * @param endpoint - The Computer Backup API endpoint name.
144
+ * @param body - The JSON request body.
145
+ * @param options - Optional abort and per-request retry settings.
146
+ *
147
+ * @returns The parsed JSON response.
148
+ */
149
+ async postNonRetryingMutationJson(backupApiUrl, authToken, endpoint, body, options) {
150
+ const requestOptions = require_endpoint_url.nonRetryingMutationRequestOptions(options);
151
+ return (await this.transport.send({
152
+ url: backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint),
153
+ method: "POST",
154
+ headers: {
155
+ Authorization: authToken,
156
+ "Content-Type": "application/json"
157
+ },
158
+ body: JSON.stringify(body),
159
+ ...requestOptions.signal !== void 0 ? { signal: requestOptions.signal } : {},
160
+ ...requestOptions.idempotent !== void 0 ? { idempotent: requestOptions.idempotent } : {},
161
+ ...requestOptions.retry !== void 0 ? { retry: requestOptions.retry } : {}
162
+ })).json();
163
+ }
164
+ };
165
+ //#endregion
166
+ exports.BackupRawClient = BackupRawClient;
167
+
168
+ //# sourceMappingURL=raw.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.cjs","names":[],"sources":["../../src/backup/raw.ts"],"sourcesContent":["import type { BackupNonIdempotentMutationEndpoint } from '../http/non-idempotent-mutations.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { HttpTransport } from '../http/transport.ts'\nimport {\n endpointAllowedSuffixes,\n nonRetryingMutationRequestOptions,\n type QueryParams,\n validatePartnerEndpointUrl,\n withQueryString,\n} from '../partner/endpoint-url.ts'\nimport { type B2EndpointUrlOptions, b2Url } from '../raw/url.ts'\nimport type {\n DeleteComputerRequest,\n DeleteComputerResponse,\n DeleteComputerResult,\n ListComputersRequest,\n ListComputersResponse,\n} from '../types/backup.ts'\n\nconst BACKUP_API: B2EndpointUrlOptions = { prefix: 'api/backup', version: 'v1' }\n\n/**\n * Normalizes the `bz_delete_computer` wire response to the array-shaped schema.\n *\n * The Backblaze apidocs response *schema* declares a JSON array, but the\n * accompanying *example* shows a single bare object. This tolerates both: an\n * array passes through unchanged, and a lone object is wrapped in a\n * single-element array, so callers always receive a {@link DeleteComputerResponse}\n * regardless of which shape live B2 returns.\n *\n * @param raw - The parsed `bz_delete_computer` JSON body.\n *\n * @returns The response as the canonical array shape.\n *\n * @throws TypeError When the body is neither an array nor an object.\n */\nfunction normalizeDeleteComputerResponse(raw: unknown): DeleteComputerResponse {\n if (Array.isArray(raw)) return raw as DeleteComputerResponse\n if (raw !== null && typeof raw === 'object') return [raw as DeleteComputerResult]\n throw new TypeError('bz_delete_computer returned an unexpected response body shape')\n}\n\n/** Configuration for constructing a {@link BackupRawClient}. */\nexport interface BackupRawClientOptions {\n /**\n * The HTTP transport used to send requests.\n *\n * Computer Backup endpoint calls validate URLs against suffixes recorded by\n * Partner authorization. A rehydrated client that skips authorization must\n * use `authorizedBackupEndpointSuffixes` or a transport with a locked\n * `urlGuard`. Because Partner authorize responses redact\n * `authorizationToken` under `JSON.stringify`, durable caches should persist\n * `partnerAuthorizeResponseForPersistence(auth)` only to encrypted or\n * otherwise credential-grade storage, or use another secure token-preserving\n * representation.\n */\n readonly transport: HttpTransport\n /**\n * Validated Computer Backup endpoint host suffixes restored from cached\n * Partner authorization. Facades normally manage this after authorization;\n * direct raw clients can pass trusted suffixes derived from\n * `derivePartnerAllowedSuffixes()`. Do not derive this cache with\n * `JSON.stringify(authorizePartner())`, which intentionally stores a redacted\n * token placeholder instead of a usable Partner token. Rehydrating that\n * placeholder fails fast.\n */\n readonly authorizedBackupEndpointSuffixes?: readonly string[]\n}\n\n/** Optional controls for raw Computer Backup API requests. */\nexport interface BackupRawRequestOptions {\n /** Abort signal for cancelling the request. */\n readonly signal?: AbortSignal\n /** Per-request retry override. */\n readonly retry?: Partial<RetryOptions>\n}\n\nfunction backupEndpointAllowedSuffixes(\n transport: HttpTransport,\n authorizedSuffixes: readonly string[],\n): readonly string[] {\n return endpointAllowedSuffixes(transport, authorizedSuffixes, {\n missingGuard:\n 'Computer Backup endpoint requests require BackupClient.authorize() or a locked URL guard before sending Partner tokens',\n unlockedGuard:\n 'Computer Backup endpoint requests require a locked URL guard before sending Partner tokens',\n })\n}\n\nfunction backupEndpointUrl(backupApiUrl: string, endpoint: string): string {\n return b2Url(backupApiUrl, { ...BACKUP_API, endpoint })\n}\n\n/**\n * Low-level client for Computer Backup API endpoint bindings.\n *\n * Each method maps directly to one `bz_*` HTTP call under the\n * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner\n * authorization.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\nexport class BackupRawClient {\n /** @internal */\n private readonly transport: HttpTransport\n private authorizedEndpointSuffixes: readonly string[]\n\n /**\n * Creates a new BackupRawClient with the given transport.\n *\n * @param options - The constructor configuration.\n */\n constructor(options: BackupRawClientOptions) {\n this.transport = options.transport\n this.authorizedEndpointSuffixes = Array.from(options.authorizedBackupEndpointSuffixes ?? [])\n }\n\n /**\n * Replaces the validated Computer Backup endpoint host suffixes.\n *\n * @param suffixes - Host suffixes derived from Partner authorization.\n *\n * @internal\n */\n setAuthorizedEndpointSuffixes(suffixes: readonly string[]): void {\n this.authorizedEndpointSuffixes = Array.from(suffixes)\n }\n\n /**\n * Calls `bz_list_computers`.\n *\n * Uses the documented GET form. The wire response is a single JSON object\n * with a `nextComputerId` cursor and active computer backup records.\n *\n * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.\n * @param authToken - The Partner authorization token.\n * @param request - The computer listing query parameters.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The single-object computer backup wire response.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\n async listComputers(\n backupApiUrl: string,\n authToken: string,\n request: ListComputersRequest,\n options?: BackupRawRequestOptions,\n ): Promise<ListComputersResponse> {\n return this.getJson<ListComputersResponse>(\n backupApiUrl,\n authToken,\n 'bz_list_computers',\n {\n accountId: request.accountId,\n ...(request.startComputerId !== undefined\n ? { startComputerId: request.startComputerId }\n : {}),\n ...(request.maxComputerCount !== undefined\n ? { maxComputerCount: request.maxComputerCount }\n : {}),\n },\n options,\n )\n }\n\n /**\n * Calls `bz_delete_computer`.\n *\n * The documented wire response is a JSON array of deletion records. This\n * destructive mutation is not automatically retried or reauthorized in place.\n *\n * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.\n * @param authToken - The Partner authorization token.\n * @param request - The computer deletion request body.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The deleted computer backup record array.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\n async deleteComputer(\n backupApiUrl: string,\n authToken: string,\n request: DeleteComputerRequest,\n options?: BackupRawRequestOptions,\n ): Promise<DeleteComputerResponse> {\n const response = await this.postNonRetryingMutationJson<unknown>(\n backupApiUrl,\n authToken,\n 'bz_delete_computer',\n {\n accountId: request.accountId,\n computerId: request.computerId,\n },\n options,\n )\n return normalizeDeleteComputerResponse(response)\n }\n\n private safeBackupApiUrl(backupApiUrl: string): string {\n return validatePartnerEndpointUrl(\n backupApiUrl,\n 'backupApiUrl',\n backupEndpointAllowedSuffixes(this.transport, this.authorizedEndpointSuffixes),\n )\n }\n\n /**\n * Sends a JSON GET request to the specified Computer Backup API endpoint.\n *\n * @param backupApiUrl - The Computer Backup API base URL.\n * @param authToken - The Partner authorization token.\n * @param endpoint - The Computer Backup API endpoint name.\n * @param query - The query-string parameters.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The parsed JSON response.\n */\n private async getJson<T>(\n backupApiUrl: string,\n authToken: string,\n endpoint: string,\n query: QueryParams,\n options?: BackupRawRequestOptions,\n ): Promise<T> {\n const response = await this.transport.send({\n url: withQueryString(backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint), query),\n method: 'GET',\n headers: {\n Authorization: authToken,\n },\n ...(options?.signal !== undefined ? { signal: options.signal } : {}),\n ...(options?.retry !== undefined ? { retry: options.retry } : {}),\n })\n return response.json<T>()\n }\n\n /**\n * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.\n *\n * @param backupApiUrl - The Computer Backup API base URL.\n * @param authToken - The Partner authorization token.\n * @param endpoint - The Computer Backup API endpoint name.\n * @param body - The JSON request body.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The parsed JSON response.\n */\n private async postNonRetryingMutationJson<T>(\n backupApiUrl: string,\n authToken: string,\n endpoint: BackupNonIdempotentMutationEndpoint,\n body: unknown,\n options?: BackupRawRequestOptions,\n ): Promise<T> {\n const requestOptions = nonRetryingMutationRequestOptions(options)\n const response = await this.transport.send({\n url: backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint),\n method: 'POST',\n headers: {\n Authorization: authToken,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n ...(requestOptions.signal !== undefined ? { signal: requestOptions.signal } : {}),\n ...(requestOptions.idempotent !== undefined ? { idempotent: requestOptions.idempotent } : {}),\n ...(requestOptions.retry !== undefined ? { retry: requestOptions.retry } : {}),\n })\n return response.json<T>()\n }\n}\n"],"mappings":";;;AAmBA,IAAM,aAAmC;CAAE,QAAQ;CAAc,SAAS;AAAK;;;;;;;;;;;;;;;;AAiB/E,SAAS,gCAAgC,KAAsC;CAC7E,IAAI,MAAM,QAAQ,GAAG,GAAG,OAAO;CAC/B,IAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU,OAAO,CAAC,GAA2B;CAChF,MAAM,IAAI,UAAU,+DAA+D;AACrF;AAqCA,SAAS,8BACP,WACA,oBACmB;CACnB,OAAO,qBAAA,wBAAwB,WAAW,oBAAoB;EAC5D,cACE;EACF,eACE;CACJ,CAAC;AACH;AAEA,SAAS,kBAAkB,cAAsB,UAA0B;CACzE,OAAO,YAAA,MAAM,cAAc;EAAE,GAAG;EAAY;CAAS,CAAC;AACxD;;;;;;;;;;AAWA,IAAa,kBAAb,MAA6B;;CAE3B;CACA;;;;;;CAOA,YAAY,SAAiC;EAC3C,KAAK,YAAY,QAAQ;EACzB,KAAK,6BAA6B,MAAM,KAAK,QAAQ,oCAAoC,CAAC,CAAC;CAC7F;;;;;;;;CASA,8BAA8B,UAAmC;EAC/D,KAAK,6BAA6B,MAAM,KAAK,QAAQ;CACvD;;;;;;;;;;;;;;;;CAiBA,MAAM,cACJ,cACA,WACA,SACA,SACgC;EAChC,OAAO,KAAK,QACV,cACA,WACA,qBACA;GACE,WAAW,QAAQ;GACnB,GAAI,QAAQ,oBAAoB,KAAA,IAC5B,EAAE,iBAAiB,QAAQ,gBAAgB,IAC3C,CAAC;GACL,GAAI,QAAQ,qBAAqB,KAAA,IAC7B,EAAE,kBAAkB,QAAQ,iBAAiB,IAC7C,CAAC;EACP,GACA,OACF;CACF;;;;;;;;;;;;;;;;CAiBA,MAAM,eACJ,cACA,WACA,SACA,SACiC;EAWjC,OAAO,gCAAgC,MAVhB,KAAK,4BAC1B,cACA,WACA,sBACA;GACE,WAAW,QAAQ;GACnB,YAAY,QAAQ;EACtB,GACA,OACF,CAC+C;CACjD;CAEA,iBAAyB,cAA8B;EACrD,OAAO,qBAAA,2BACL,cACA,gBACA,8BAA8B,KAAK,WAAW,KAAK,0BAA0B,CAC/E;CACF;;;;;;;;;;;;CAaA,MAAc,QACZ,cACA,WACA,UACA,OACA,SACY;EAUZ,QAAO,MATgB,KAAK,UAAU,KAAK;GACzC,KAAK,qBAAA,gBAAgB,kBAAkB,KAAK,iBAAiB,YAAY,GAAG,QAAQ,GAAG,KAAK;GAC5F,QAAQ;GACR,SAAS,EACP,eAAe,UACjB;GACA,GAAI,SAAS,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GAClE,GAAI,SAAS,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EACjE,CAAC,EAAA,CACe,KAAQ;CAC1B;;;;;;;;;;;;CAaA,MAAc,4BACZ,cACA,WACA,UACA,MACA,SACY;EACZ,MAAM,iBAAiB,qBAAA,kCAAkC,OAAO;EAahE,QAAO,MAZgB,KAAK,UAAU,KAAK;GACzC,KAAK,kBAAkB,KAAK,iBAAiB,YAAY,GAAG,QAAQ;GACpE,QAAQ;GACR,SAAS;IACP,eAAe;IACf,gBAAgB;GAClB;GACA,MAAM,KAAK,UAAU,IAAI;GACzB,GAAI,eAAe,WAAW,KAAA,IAAY,EAAE,QAAQ,eAAe,OAAO,IAAI,CAAC;GAC/E,GAAI,eAAe,eAAe,KAAA,IAAY,EAAE,YAAY,eAAe,WAAW,IAAI,CAAC;GAC3F,GAAI,eAAe,UAAU,KAAA,IAAY,EAAE,OAAO,eAAe,MAAM,IAAI,CAAC;EAC9E,CAAC,EAAA,CACe,KAAQ;CAC1B;AACF"}
@@ -0,0 +1,122 @@
1
+ import { RetryOptions } from '../http/retry.js';
2
+ import { HttpTransport } from '../http/transport.js';
3
+ import { DeleteComputerRequest, DeleteComputerResponse, ListComputersRequest, ListComputersResponse } from '../types/backup.js';
4
+ /** Configuration for constructing a {@link BackupRawClient}. */
5
+ export interface BackupRawClientOptions {
6
+ /**
7
+ * The HTTP transport used to send requests.
8
+ *
9
+ * Computer Backup endpoint calls validate URLs against suffixes recorded by
10
+ * Partner authorization. A rehydrated client that skips authorization must
11
+ * use `authorizedBackupEndpointSuffixes` or a transport with a locked
12
+ * `urlGuard`. Because Partner authorize responses redact
13
+ * `authorizationToken` under `JSON.stringify`, durable caches should persist
14
+ * `partnerAuthorizeResponseForPersistence(auth)` only to encrypted or
15
+ * otherwise credential-grade storage, or use another secure token-preserving
16
+ * representation.
17
+ */
18
+ readonly transport: HttpTransport;
19
+ /**
20
+ * Validated Computer Backup endpoint host suffixes restored from cached
21
+ * Partner authorization. Facades normally manage this after authorization;
22
+ * direct raw clients can pass trusted suffixes derived from
23
+ * `derivePartnerAllowedSuffixes()`. Do not derive this cache with
24
+ * `JSON.stringify(authorizePartner())`, which intentionally stores a redacted
25
+ * token placeholder instead of a usable Partner token. Rehydrating that
26
+ * placeholder fails fast.
27
+ */
28
+ readonly authorizedBackupEndpointSuffixes?: readonly string[];
29
+ }
30
+ /** Optional controls for raw Computer Backup API requests. */
31
+ export interface BackupRawRequestOptions {
32
+ /** Abort signal for cancelling the request. */
33
+ readonly signal?: AbortSignal;
34
+ /** Per-request retry override. */
35
+ readonly retry?: Partial<RetryOptions>;
36
+ }
37
+ /**
38
+ * Low-level client for Computer Backup API endpoint bindings.
39
+ *
40
+ * Each method maps directly to one `bz_*` HTTP call under the
41
+ * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner
42
+ * authorization.
43
+ *
44
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
45
+ */
46
+ export declare class BackupRawClient {
47
+ /** @internal */
48
+ private readonly transport;
49
+ private authorizedEndpointSuffixes;
50
+ /**
51
+ * Creates a new BackupRawClient with the given transport.
52
+ *
53
+ * @param options - The constructor configuration.
54
+ */
55
+ constructor(options: BackupRawClientOptions);
56
+ /**
57
+ * Replaces the validated Computer Backup endpoint host suffixes.
58
+ *
59
+ * @param suffixes - Host suffixes derived from Partner authorization.
60
+ *
61
+ * @internal
62
+ */
63
+ setAuthorizedEndpointSuffixes(suffixes: readonly string[]): void;
64
+ /**
65
+ * Calls `bz_list_computers`.
66
+ *
67
+ * Uses the documented GET form. The wire response is a single JSON object
68
+ * with a `nextComputerId` cursor and active computer backup records.
69
+ *
70
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
71
+ * @param authToken - The Partner authorization token.
72
+ * @param request - The computer listing query parameters.
73
+ * @param options - Optional abort and per-request retry settings.
74
+ *
75
+ * @returns The single-object computer backup wire response.
76
+ *
77
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
78
+ */
79
+ listComputers(backupApiUrl: string, authToken: string, request: ListComputersRequest, options?: BackupRawRequestOptions): Promise<ListComputersResponse>;
80
+ /**
81
+ * Calls `bz_delete_computer`.
82
+ *
83
+ * The documented wire response is a JSON array of deletion records. This
84
+ * destructive mutation is not automatically retried or reauthorized in place.
85
+ *
86
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
87
+ * @param authToken - The Partner authorization token.
88
+ * @param request - The computer deletion request body.
89
+ * @param options - Optional abort and per-request retry settings.
90
+ *
91
+ * @returns The deleted computer backup record array.
92
+ *
93
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
94
+ */
95
+ deleteComputer(backupApiUrl: string, authToken: string, request: DeleteComputerRequest, options?: BackupRawRequestOptions): Promise<DeleteComputerResponse>;
96
+ private safeBackupApiUrl;
97
+ /**
98
+ * Sends a JSON GET request to the specified Computer Backup API endpoint.
99
+ *
100
+ * @param backupApiUrl - The Computer Backup API base URL.
101
+ * @param authToken - The Partner authorization token.
102
+ * @param endpoint - The Computer Backup API endpoint name.
103
+ * @param query - The query-string parameters.
104
+ * @param options - Optional abort and per-request retry settings.
105
+ *
106
+ * @returns The parsed JSON response.
107
+ */
108
+ private getJson;
109
+ /**
110
+ * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.
111
+ *
112
+ * @param backupApiUrl - The Computer Backup API base URL.
113
+ * @param authToken - The Partner authorization token.
114
+ * @param endpoint - The Computer Backup API endpoint name.
115
+ * @param body - The JSON request body.
116
+ * @param options - Optional abort and per-request retry settings.
117
+ *
118
+ * @returns The parsed JSON response.
119
+ */
120
+ private postNonRetryingMutationJson;
121
+ }
122
+ //# sourceMappingURL=raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/backup/raw.js"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AASzD,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EAEtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAyB3B,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,gCAAgC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9D;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAkBD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,0BAA0B,CAAmB;IAErD;;;;OAIG;gBACS,OAAO,EAAE,sBAAsB;IAK3C;;;;;;OAMG;IACH,6BAA6B,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIhE;;;;;;;;;;;;;;OAcG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAclC,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;OAUG;YACW,OAAO;IAmBrB;;;;;;;;;;OAUG;YACW,2BAA2B;CAsB1C"}
@@ -0,0 +1,122 @@
1
+ import { RetryOptions } from '../http/retry.js';
2
+ import { HttpTransport } from '../http/transport.js';
3
+ import { DeleteComputerRequest, DeleteComputerResponse, ListComputersRequest, ListComputersResponse } from '../types/backup.js';
4
+ /** Configuration for constructing a {@link BackupRawClient}. */
5
+ export interface BackupRawClientOptions {
6
+ /**
7
+ * The HTTP transport used to send requests.
8
+ *
9
+ * Computer Backup endpoint calls validate URLs against suffixes recorded by
10
+ * Partner authorization. A rehydrated client that skips authorization must
11
+ * use `authorizedBackupEndpointSuffixes` or a transport with a locked
12
+ * `urlGuard`. Because Partner authorize responses redact
13
+ * `authorizationToken` under `JSON.stringify`, durable caches should persist
14
+ * `partnerAuthorizeResponseForPersistence(auth)` only to encrypted or
15
+ * otherwise credential-grade storage, or use another secure token-preserving
16
+ * representation.
17
+ */
18
+ readonly transport: HttpTransport;
19
+ /**
20
+ * Validated Computer Backup endpoint host suffixes restored from cached
21
+ * Partner authorization. Facades normally manage this after authorization;
22
+ * direct raw clients can pass trusted suffixes derived from
23
+ * `derivePartnerAllowedSuffixes()`. Do not derive this cache with
24
+ * `JSON.stringify(authorizePartner())`, which intentionally stores a redacted
25
+ * token placeholder instead of a usable Partner token. Rehydrating that
26
+ * placeholder fails fast.
27
+ */
28
+ readonly authorizedBackupEndpointSuffixes?: readonly string[];
29
+ }
30
+ /** Optional controls for raw Computer Backup API requests. */
31
+ export interface BackupRawRequestOptions {
32
+ /** Abort signal for cancelling the request. */
33
+ readonly signal?: AbortSignal;
34
+ /** Per-request retry override. */
35
+ readonly retry?: Partial<RetryOptions>;
36
+ }
37
+ /**
38
+ * Low-level client for Computer Backup API endpoint bindings.
39
+ *
40
+ * Each method maps directly to one `bz_*` HTTP call under the
41
+ * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner
42
+ * authorization.
43
+ *
44
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
45
+ */
46
+ export declare class BackupRawClient {
47
+ /** @internal */
48
+ private readonly transport;
49
+ private authorizedEndpointSuffixes;
50
+ /**
51
+ * Creates a new BackupRawClient with the given transport.
52
+ *
53
+ * @param options - The constructor configuration.
54
+ */
55
+ constructor(options: BackupRawClientOptions);
56
+ /**
57
+ * Replaces the validated Computer Backup endpoint host suffixes.
58
+ *
59
+ * @param suffixes - Host suffixes derived from Partner authorization.
60
+ *
61
+ * @internal
62
+ */
63
+ setAuthorizedEndpointSuffixes(suffixes: readonly string[]): void;
64
+ /**
65
+ * Calls `bz_list_computers`.
66
+ *
67
+ * Uses the documented GET form. The wire response is a single JSON object
68
+ * with a `nextComputerId` cursor and active computer backup records.
69
+ *
70
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
71
+ * @param authToken - The Partner authorization token.
72
+ * @param request - The computer listing query parameters.
73
+ * @param options - Optional abort and per-request retry settings.
74
+ *
75
+ * @returns The single-object computer backup wire response.
76
+ *
77
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
78
+ */
79
+ listComputers(backupApiUrl: string, authToken: string, request: ListComputersRequest, options?: BackupRawRequestOptions): Promise<ListComputersResponse>;
80
+ /**
81
+ * Calls `bz_delete_computer`.
82
+ *
83
+ * The documented wire response is a JSON array of deletion records. This
84
+ * destructive mutation is not automatically retried or reauthorized in place.
85
+ *
86
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
87
+ * @param authToken - The Partner authorization token.
88
+ * @param request - The computer deletion request body.
89
+ * @param options - Optional abort and per-request retry settings.
90
+ *
91
+ * @returns The deleted computer backup record array.
92
+ *
93
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
94
+ */
95
+ deleteComputer(backupApiUrl: string, authToken: string, request: DeleteComputerRequest, options?: BackupRawRequestOptions): Promise<DeleteComputerResponse>;
96
+ private safeBackupApiUrl;
97
+ /**
98
+ * Sends a JSON GET request to the specified Computer Backup API endpoint.
99
+ *
100
+ * @param backupApiUrl - The Computer Backup API base URL.
101
+ * @param authToken - The Partner authorization token.
102
+ * @param endpoint - The Computer Backup API endpoint name.
103
+ * @param query - The query-string parameters.
104
+ * @param options - Optional abort and per-request retry settings.
105
+ *
106
+ * @returns The parsed JSON response.
107
+ */
108
+ private getJson;
109
+ /**
110
+ * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.
111
+ *
112
+ * @param backupApiUrl - The Computer Backup API base URL.
113
+ * @param authToken - The Partner authorization token.
114
+ * @param endpoint - The Computer Backup API endpoint name.
115
+ * @param body - The JSON request body.
116
+ * @param options - Optional abort and per-request retry settings.
117
+ *
118
+ * @returns The parsed JSON response.
119
+ */
120
+ private postNonRetryingMutationJson;
121
+ }
122
+ //# sourceMappingURL=raw.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.d.ts","sourceRoot":"","sources":["../../src/backup/raw.js"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AASzD,OAAO,KAAK,EACV,qBAAqB,EACrB,sBAAsB,EAEtB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAyB3B,gEAAgE;AAChE,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,gCAAgC,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC9D;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACvC;AAkBD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,0BAA0B,CAAmB;IAErD;;;;OAIG;gBACS,OAAO,EAAE,sBAAsB;IAK3C;;;;;;OAMG;IACH,6BAA6B,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIhE;;;;;;;;;;;;;;OAcG;IACG,aAAa,CACjB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,qBAAqB,CAAC;IAkBjC;;;;;;;;;;;;;;OAcG;IACG,cAAc,CAClB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAclC,OAAO,CAAC,gBAAgB;IAQxB;;;;;;;;;;OAUG;YACW,OAAO;IAmBrB;;;;;;;;;;OAUG;YACW,2BAA2B;CAsB1C"}
@@ -0,0 +1,168 @@
1
+ import { b2Url } from "../raw/url.js";
2
+ import { endpointAllowedSuffixes, nonRetryingMutationRequestOptions, validatePartnerEndpointUrl, withQueryString } from "../partner/endpoint-url.js";
3
+ //#region src/backup/raw.ts
4
+ var BACKUP_API = {
5
+ prefix: "api/backup",
6
+ version: "v1"
7
+ };
8
+ /**
9
+ * Normalizes the `bz_delete_computer` wire response to the array-shaped schema.
10
+ *
11
+ * The Backblaze apidocs response *schema* declares a JSON array, but the
12
+ * accompanying *example* shows a single bare object. This tolerates both: an
13
+ * array passes through unchanged, and a lone object is wrapped in a
14
+ * single-element array, so callers always receive a {@link DeleteComputerResponse}
15
+ * regardless of which shape live B2 returns.
16
+ *
17
+ * @param raw - The parsed `bz_delete_computer` JSON body.
18
+ *
19
+ * @returns The response as the canonical array shape.
20
+ *
21
+ * @throws TypeError When the body is neither an array nor an object.
22
+ */
23
+ function normalizeDeleteComputerResponse(raw) {
24
+ if (Array.isArray(raw)) return raw;
25
+ if (raw !== null && typeof raw === "object") return [raw];
26
+ throw new TypeError("bz_delete_computer returned an unexpected response body shape");
27
+ }
28
+ function backupEndpointAllowedSuffixes(transport, authorizedSuffixes) {
29
+ return endpointAllowedSuffixes(transport, authorizedSuffixes, {
30
+ missingGuard: "Computer Backup endpoint requests require BackupClient.authorize() or a locked URL guard before sending Partner tokens",
31
+ unlockedGuard: "Computer Backup endpoint requests require a locked URL guard before sending Partner tokens"
32
+ });
33
+ }
34
+ function backupEndpointUrl(backupApiUrl, endpoint) {
35
+ return b2Url(backupApiUrl, {
36
+ ...BACKUP_API,
37
+ endpoint
38
+ });
39
+ }
40
+ /**
41
+ * Low-level client for Computer Backup API endpoint bindings.
42
+ *
43
+ * Each method maps directly to one `bz_*` HTTP call under the
44
+ * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner
45
+ * authorization.
46
+ *
47
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
48
+ */
49
+ var BackupRawClient = class {
50
+ /** @internal */
51
+ transport;
52
+ authorizedEndpointSuffixes;
53
+ /**
54
+ * Creates a new BackupRawClient with the given transport.
55
+ *
56
+ * @param options - The constructor configuration.
57
+ */
58
+ constructor(options) {
59
+ this.transport = options.transport;
60
+ this.authorizedEndpointSuffixes = Array.from(options.authorizedBackupEndpointSuffixes ?? []);
61
+ }
62
+ /**
63
+ * Replaces the validated Computer Backup endpoint host suffixes.
64
+ *
65
+ * @param suffixes - Host suffixes derived from Partner authorization.
66
+ *
67
+ * @internal
68
+ */
69
+ setAuthorizedEndpointSuffixes(suffixes) {
70
+ this.authorizedEndpointSuffixes = Array.from(suffixes);
71
+ }
72
+ /**
73
+ * Calls `bz_list_computers`.
74
+ *
75
+ * Uses the documented GET form. The wire response is a single JSON object
76
+ * with a `nextComputerId` cursor and active computer backup records.
77
+ *
78
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
79
+ * @param authToken - The Partner authorization token.
80
+ * @param request - The computer listing query parameters.
81
+ * @param options - Optional abort and per-request retry settings.
82
+ *
83
+ * @returns The single-object computer backup wire response.
84
+ *
85
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
86
+ */
87
+ async listComputers(backupApiUrl, authToken, request, options) {
88
+ return this.getJson(backupApiUrl, authToken, "bz_list_computers", {
89
+ accountId: request.accountId,
90
+ ...request.startComputerId !== void 0 ? { startComputerId: request.startComputerId } : {},
91
+ ...request.maxComputerCount !== void 0 ? { maxComputerCount: request.maxComputerCount } : {}
92
+ }, options);
93
+ }
94
+ /**
95
+ * Calls `bz_delete_computer`.
96
+ *
97
+ * The documented wire response is a JSON array of deletion records. This
98
+ * destructive mutation is not automatically retried or reauthorized in place.
99
+ *
100
+ * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.
101
+ * @param authToken - The Partner authorization token.
102
+ * @param request - The computer deletion request body.
103
+ * @param options - Optional abort and per-request retry settings.
104
+ *
105
+ * @returns The deleted computer backup record array.
106
+ *
107
+ * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.
108
+ */
109
+ async deleteComputer(backupApiUrl, authToken, request, options) {
110
+ return normalizeDeleteComputerResponse(await this.postNonRetryingMutationJson(backupApiUrl, authToken, "bz_delete_computer", {
111
+ accountId: request.accountId,
112
+ computerId: request.computerId
113
+ }, options));
114
+ }
115
+ safeBackupApiUrl(backupApiUrl) {
116
+ return validatePartnerEndpointUrl(backupApiUrl, "backupApiUrl", backupEndpointAllowedSuffixes(this.transport, this.authorizedEndpointSuffixes));
117
+ }
118
+ /**
119
+ * Sends a JSON GET request to the specified Computer Backup API endpoint.
120
+ *
121
+ * @param backupApiUrl - The Computer Backup API base URL.
122
+ * @param authToken - The Partner authorization token.
123
+ * @param endpoint - The Computer Backup API endpoint name.
124
+ * @param query - The query-string parameters.
125
+ * @param options - Optional abort and per-request retry settings.
126
+ *
127
+ * @returns The parsed JSON response.
128
+ */
129
+ async getJson(backupApiUrl, authToken, endpoint, query, options) {
130
+ return (await this.transport.send({
131
+ url: withQueryString(backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint), query),
132
+ method: "GET",
133
+ headers: { Authorization: authToken },
134
+ ...options?.signal !== void 0 ? { signal: options.signal } : {},
135
+ ...options?.retry !== void 0 ? { retry: options.retry } : {}
136
+ })).json();
137
+ }
138
+ /**
139
+ * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.
140
+ *
141
+ * @param backupApiUrl - The Computer Backup API base URL.
142
+ * @param authToken - The Partner authorization token.
143
+ * @param endpoint - The Computer Backup API endpoint name.
144
+ * @param body - The JSON request body.
145
+ * @param options - Optional abort and per-request retry settings.
146
+ *
147
+ * @returns The parsed JSON response.
148
+ */
149
+ async postNonRetryingMutationJson(backupApiUrl, authToken, endpoint, body, options) {
150
+ const requestOptions = nonRetryingMutationRequestOptions(options);
151
+ return (await this.transport.send({
152
+ url: backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint),
153
+ method: "POST",
154
+ headers: {
155
+ Authorization: authToken,
156
+ "Content-Type": "application/json"
157
+ },
158
+ body: JSON.stringify(body),
159
+ ...requestOptions.signal !== void 0 ? { signal: requestOptions.signal } : {},
160
+ ...requestOptions.idempotent !== void 0 ? { idempotent: requestOptions.idempotent } : {},
161
+ ...requestOptions.retry !== void 0 ? { retry: requestOptions.retry } : {}
162
+ })).json();
163
+ }
164
+ };
165
+ //#endregion
166
+ export { BackupRawClient };
167
+
168
+ //# sourceMappingURL=raw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw.js","names":[],"sources":["../../src/backup/raw.ts"],"sourcesContent":["import type { BackupNonIdempotentMutationEndpoint } from '../http/non-idempotent-mutations.ts'\nimport type { RetryOptions } from '../http/retry.ts'\nimport type { HttpTransport } from '../http/transport.ts'\nimport {\n endpointAllowedSuffixes,\n nonRetryingMutationRequestOptions,\n type QueryParams,\n validatePartnerEndpointUrl,\n withQueryString,\n} from '../partner/endpoint-url.ts'\nimport { type B2EndpointUrlOptions, b2Url } from '../raw/url.ts'\nimport type {\n DeleteComputerRequest,\n DeleteComputerResponse,\n DeleteComputerResult,\n ListComputersRequest,\n ListComputersResponse,\n} from '../types/backup.ts'\n\nconst BACKUP_API: B2EndpointUrlOptions = { prefix: 'api/backup', version: 'v1' }\n\n/**\n * Normalizes the `bz_delete_computer` wire response to the array-shaped schema.\n *\n * The Backblaze apidocs response *schema* declares a JSON array, but the\n * accompanying *example* shows a single bare object. This tolerates both: an\n * array passes through unchanged, and a lone object is wrapped in a\n * single-element array, so callers always receive a {@link DeleteComputerResponse}\n * regardless of which shape live B2 returns.\n *\n * @param raw - The parsed `bz_delete_computer` JSON body.\n *\n * @returns The response as the canonical array shape.\n *\n * @throws TypeError When the body is neither an array nor an object.\n */\nfunction normalizeDeleteComputerResponse(raw: unknown): DeleteComputerResponse {\n if (Array.isArray(raw)) return raw as DeleteComputerResponse\n if (raw !== null && typeof raw === 'object') return [raw as DeleteComputerResult]\n throw new TypeError('bz_delete_computer returned an unexpected response body shape')\n}\n\n/** Configuration for constructing a {@link BackupRawClient}. */\nexport interface BackupRawClientOptions {\n /**\n * The HTTP transport used to send requests.\n *\n * Computer Backup endpoint calls validate URLs against suffixes recorded by\n * Partner authorization. A rehydrated client that skips authorization must\n * use `authorizedBackupEndpointSuffixes` or a transport with a locked\n * `urlGuard`. Because Partner authorize responses redact\n * `authorizationToken` under `JSON.stringify`, durable caches should persist\n * `partnerAuthorizeResponseForPersistence(auth)` only to encrypted or\n * otherwise credential-grade storage, or use another secure token-preserving\n * representation.\n */\n readonly transport: HttpTransport\n /**\n * Validated Computer Backup endpoint host suffixes restored from cached\n * Partner authorization. Facades normally manage this after authorization;\n * direct raw clients can pass trusted suffixes derived from\n * `derivePartnerAllowedSuffixes()`. Do not derive this cache with\n * `JSON.stringify(authorizePartner())`, which intentionally stores a redacted\n * token placeholder instead of a usable Partner token. Rehydrating that\n * placeholder fails fast.\n */\n readonly authorizedBackupEndpointSuffixes?: readonly string[]\n}\n\n/** Optional controls for raw Computer Backup API requests. */\nexport interface BackupRawRequestOptions {\n /** Abort signal for cancelling the request. */\n readonly signal?: AbortSignal\n /** Per-request retry override. */\n readonly retry?: Partial<RetryOptions>\n}\n\nfunction backupEndpointAllowedSuffixes(\n transport: HttpTransport,\n authorizedSuffixes: readonly string[],\n): readonly string[] {\n return endpointAllowedSuffixes(transport, authorizedSuffixes, {\n missingGuard:\n 'Computer Backup endpoint requests require BackupClient.authorize() or a locked URL guard before sending Partner tokens',\n unlockedGuard:\n 'Computer Backup endpoint requests require a locked URL guard before sending Partner tokens',\n })\n}\n\nfunction backupEndpointUrl(backupApiUrl: string, endpoint: string): string {\n return b2Url(backupApiUrl, { ...BACKUP_API, endpoint })\n}\n\n/**\n * Low-level client for Computer Backup API endpoint bindings.\n *\n * Each method maps directly to one `bz_*` HTTP call under the\n * `/api/backup/v1/` route using the `backupApiUrl` returned by Partner\n * authorization.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\nexport class BackupRawClient {\n /** @internal */\n private readonly transport: HttpTransport\n private authorizedEndpointSuffixes: readonly string[]\n\n /**\n * Creates a new BackupRawClient with the given transport.\n *\n * @param options - The constructor configuration.\n */\n constructor(options: BackupRawClientOptions) {\n this.transport = options.transport\n this.authorizedEndpointSuffixes = Array.from(options.authorizedBackupEndpointSuffixes ?? [])\n }\n\n /**\n * Replaces the validated Computer Backup endpoint host suffixes.\n *\n * @param suffixes - Host suffixes derived from Partner authorization.\n *\n * @internal\n */\n setAuthorizedEndpointSuffixes(suffixes: readonly string[]): void {\n this.authorizedEndpointSuffixes = Array.from(suffixes)\n }\n\n /**\n * Calls `bz_list_computers`.\n *\n * Uses the documented GET form. The wire response is a single JSON object\n * with a `nextComputerId` cursor and active computer backup records.\n *\n * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.\n * @param authToken - The Partner authorization token.\n * @param request - The computer listing query parameters.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The single-object computer backup wire response.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\n async listComputers(\n backupApiUrl: string,\n authToken: string,\n request: ListComputersRequest,\n options?: BackupRawRequestOptions,\n ): Promise<ListComputersResponse> {\n return this.getJson<ListComputersResponse>(\n backupApiUrl,\n authToken,\n 'bz_list_computers',\n {\n accountId: request.accountId,\n ...(request.startComputerId !== undefined\n ? { startComputerId: request.startComputerId }\n : {}),\n ...(request.maxComputerCount !== undefined\n ? { maxComputerCount: request.maxComputerCount }\n : {}),\n },\n options,\n )\n }\n\n /**\n * Calls `bz_delete_computer`.\n *\n * The documented wire response is a JSON array of deletion records. This\n * destructive mutation is not automatically retried or reauthorized in place.\n *\n * @param backupApiUrl - The Computer Backup API base URL from `authorizePartner`.\n * @param authToken - The Partner authorization token.\n * @param request - The computer deletion request body.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The deleted computer backup record array.\n *\n * @experimental Computer Backup API surface; shape may change as the Backup API docs evolve.\n */\n async deleteComputer(\n backupApiUrl: string,\n authToken: string,\n request: DeleteComputerRequest,\n options?: BackupRawRequestOptions,\n ): Promise<DeleteComputerResponse> {\n const response = await this.postNonRetryingMutationJson<unknown>(\n backupApiUrl,\n authToken,\n 'bz_delete_computer',\n {\n accountId: request.accountId,\n computerId: request.computerId,\n },\n options,\n )\n return normalizeDeleteComputerResponse(response)\n }\n\n private safeBackupApiUrl(backupApiUrl: string): string {\n return validatePartnerEndpointUrl(\n backupApiUrl,\n 'backupApiUrl',\n backupEndpointAllowedSuffixes(this.transport, this.authorizedEndpointSuffixes),\n )\n }\n\n /**\n * Sends a JSON GET request to the specified Computer Backup API endpoint.\n *\n * @param backupApiUrl - The Computer Backup API base URL.\n * @param authToken - The Partner authorization token.\n * @param endpoint - The Computer Backup API endpoint name.\n * @param query - The query-string parameters.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The parsed JSON response.\n */\n private async getJson<T>(\n backupApiUrl: string,\n authToken: string,\n endpoint: string,\n query: QueryParams,\n options?: BackupRawRequestOptions,\n ): Promise<T> {\n const response = await this.transport.send({\n url: withQueryString(backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint), query),\n method: 'GET',\n headers: {\n Authorization: authToken,\n },\n ...(options?.signal !== undefined ? { signal: options.signal } : {}),\n ...(options?.retry !== undefined ? { retry: options.retry } : {}),\n })\n return response.json<T>()\n }\n\n /**\n * Sends a non-retrying JSON mutation POST request to the specified Computer Backup API endpoint.\n *\n * @param backupApiUrl - The Computer Backup API base URL.\n * @param authToken - The Partner authorization token.\n * @param endpoint - The Computer Backup API endpoint name.\n * @param body - The JSON request body.\n * @param options - Optional abort and per-request retry settings.\n *\n * @returns The parsed JSON response.\n */\n private async postNonRetryingMutationJson<T>(\n backupApiUrl: string,\n authToken: string,\n endpoint: BackupNonIdempotentMutationEndpoint,\n body: unknown,\n options?: BackupRawRequestOptions,\n ): Promise<T> {\n const requestOptions = nonRetryingMutationRequestOptions(options)\n const response = await this.transport.send({\n url: backupEndpointUrl(this.safeBackupApiUrl(backupApiUrl), endpoint),\n method: 'POST',\n headers: {\n Authorization: authToken,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n ...(requestOptions.signal !== undefined ? { signal: requestOptions.signal } : {}),\n ...(requestOptions.idempotent !== undefined ? { idempotent: requestOptions.idempotent } : {}),\n ...(requestOptions.retry !== undefined ? { retry: requestOptions.retry } : {}),\n })\n return response.json<T>()\n }\n}\n"],"mappings":";;;AAmBA,IAAM,aAAmC;CAAE,QAAQ;CAAc,SAAS;AAAK;;;;;;;;;;;;;;;;AAiB/E,SAAS,gCAAgC,KAAsC;CAC7E,IAAI,MAAM,QAAQ,GAAG,GAAG,OAAO;CAC/B,IAAI,QAAQ,QAAQ,OAAO,QAAQ,UAAU,OAAO,CAAC,GAA2B;CAChF,MAAM,IAAI,UAAU,+DAA+D;AACrF;AAqCA,SAAS,8BACP,WACA,oBACmB;CACnB,OAAO,wBAAwB,WAAW,oBAAoB;EAC5D,cACE;EACF,eACE;CACJ,CAAC;AACH;AAEA,SAAS,kBAAkB,cAAsB,UAA0B;CACzE,OAAO,MAAM,cAAc;EAAE,GAAG;EAAY;CAAS,CAAC;AACxD;;;;;;;;;;AAWA,IAAa,kBAAb,MAA6B;;CAE3B;CACA;;;;;;CAOA,YAAY,SAAiC;EAC3C,KAAK,YAAY,QAAQ;EACzB,KAAK,6BAA6B,MAAM,KAAK,QAAQ,oCAAoC,CAAC,CAAC;CAC7F;;;;;;;;CASA,8BAA8B,UAAmC;EAC/D,KAAK,6BAA6B,MAAM,KAAK,QAAQ;CACvD;;;;;;;;;;;;;;;;CAiBA,MAAM,cACJ,cACA,WACA,SACA,SACgC;EAChC,OAAO,KAAK,QACV,cACA,WACA,qBACA;GACE,WAAW,QAAQ;GACnB,GAAI,QAAQ,oBAAoB,KAAA,IAC5B,EAAE,iBAAiB,QAAQ,gBAAgB,IAC3C,CAAC;GACL,GAAI,QAAQ,qBAAqB,KAAA,IAC7B,EAAE,kBAAkB,QAAQ,iBAAiB,IAC7C,CAAC;EACP,GACA,OACF;CACF;;;;;;;;;;;;;;;;CAiBA,MAAM,eACJ,cACA,WACA,SACA,SACiC;EAWjC,OAAO,gCAAgC,MAVhB,KAAK,4BAC1B,cACA,WACA,sBACA;GACE,WAAW,QAAQ;GACnB,YAAY,QAAQ;EACtB,GACA,OACF,CAC+C;CACjD;CAEA,iBAAyB,cAA8B;EACrD,OAAO,2BACL,cACA,gBACA,8BAA8B,KAAK,WAAW,KAAK,0BAA0B,CAC/E;CACF;;;;;;;;;;;;CAaA,MAAc,QACZ,cACA,WACA,UACA,OACA,SACY;EAUZ,QAAO,MATgB,KAAK,UAAU,KAAK;GACzC,KAAK,gBAAgB,kBAAkB,KAAK,iBAAiB,YAAY,GAAG,QAAQ,GAAG,KAAK;GAC5F,QAAQ;GACR,SAAS,EACP,eAAe,UACjB;GACA,GAAI,SAAS,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;GAClE,GAAI,SAAS,UAAU,KAAA,IAAY,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;EACjE,CAAC,EAAA,CACe,KAAQ;CAC1B;;;;;;;;;;;;CAaA,MAAc,4BACZ,cACA,WACA,UACA,MACA,SACY;EACZ,MAAM,iBAAiB,kCAAkC,OAAO;EAahE,QAAO,MAZgB,KAAK,UAAU,KAAK;GACzC,KAAK,kBAAkB,KAAK,iBAAiB,YAAY,GAAG,QAAQ;GACpE,QAAQ;GACR,SAAS;IACP,eAAe;IACf,gBAAgB;GAClB;GACA,MAAM,KAAK,UAAU,IAAI;GACzB,GAAI,eAAe,WAAW,KAAA,IAAY,EAAE,QAAQ,eAAe,OAAO,IAAI,CAAC;GAC/E,GAAI,eAAe,eAAe,KAAA,IAAY,EAAE,YAAY,eAAe,WAAW,IAAI,CAAC;GAC3F,GAAI,eAAe,UAAU,KAAA,IAAY,EAAE,OAAO,eAAe,MAAM,IAAI,CAAC;EAC9E,CAAC,EAAA,CACe,KAAQ;CAC1B;AACF"}