@backblaze-labs/b2-sdk 0.3.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 (393) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/README.md +18 -5
  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/reauth-coalescer.cjs +65 -0
  6. package/dist/auth/reauth-coalescer.cjs.map +1 -0
  7. package/dist/auth/reauth-coalescer.d.cts +34 -0
  8. package/dist/auth/reauth-coalescer.d.cts.map +1 -0
  9. package/dist/auth/reauth-coalescer.d.ts +34 -0
  10. package/dist/auth/reauth-coalescer.d.ts.map +1 -0
  11. package/dist/auth/reauth-coalescer.js +65 -0
  12. package/dist/auth/reauth-coalescer.js.map +1 -0
  13. package/dist/backup/raw.cjs +37 -15
  14. package/dist/backup/raw.cjs.map +1 -1
  15. package/dist/backup/raw.d.cts +2 -2
  16. package/dist/backup/raw.d.cts.map +1 -1
  17. package/dist/backup/raw.d.ts +2 -2
  18. package/dist/backup/raw.d.ts.map +1 -1
  19. package/dist/backup/raw.js +37 -15
  20. package/dist/backup/raw.js.map +1 -1
  21. package/dist/bucket-validation.cjs +111 -0
  22. package/dist/bucket-validation.cjs.map +1 -0
  23. package/dist/bucket-validation.d.cts +27 -0
  24. package/dist/bucket-validation.d.cts.map +1 -0
  25. package/dist/bucket-validation.d.ts +27 -0
  26. package/dist/bucket-validation.d.ts.map +1 -0
  27. package/dist/bucket-validation.js +109 -0
  28. package/dist/bucket-validation.js.map +1 -0
  29. package/dist/bucket.cjs +123 -73
  30. package/dist/bucket.cjs.map +1 -1
  31. package/dist/bucket.d.cts +156 -61
  32. package/dist/bucket.d.cts.map +1 -1
  33. package/dist/bucket.d.ts +156 -61
  34. package/dist/bucket.d.ts.map +1 -1
  35. package/dist/bucket.js +123 -73
  36. package/dist/bucket.js.map +1 -1
  37. package/dist/client.cjs +29 -8
  38. package/dist/client.cjs.map +1 -1
  39. package/dist/client.d.cts +30 -9
  40. package/dist/client.d.cts.map +1 -1
  41. package/dist/client.d.ts +30 -9
  42. package/dist/client.d.ts.map +1 -1
  43. package/dist/client.js +29 -8
  44. package/dist/client.js.map +1 -1
  45. package/dist/download/single.cjs +38 -13
  46. package/dist/download/single.cjs.map +1 -1
  47. package/dist/download/single.d.cts +10 -4
  48. package/dist/download/single.d.cts.map +1 -1
  49. package/dist/download/single.d.ts +10 -4
  50. package/dist/download/single.d.ts.map +1 -1
  51. package/dist/download/single.js +38 -13
  52. package/dist/download/single.js.map +1 -1
  53. package/dist/errors/index.cjs +27 -4
  54. package/dist/errors/index.cjs.map +1 -1
  55. package/dist/errors/index.d.cts +15 -0
  56. package/dist/errors/index.d.cts.map +1 -1
  57. package/dist/errors/index.d.ts +15 -0
  58. package/dist/errors/index.d.ts.map +1 -1
  59. package/dist/errors/index.js +27 -5
  60. package/dist/errors/index.js.map +1 -1
  61. package/dist/http/non-idempotent-mutations.cjs +38 -0
  62. package/dist/http/non-idempotent-mutations.cjs.map +1 -0
  63. package/dist/http/non-idempotent-mutations.d.cts +25 -0
  64. package/dist/http/non-idempotent-mutations.d.cts.map +1 -0
  65. package/dist/http/non-idempotent-mutations.d.ts +25 -0
  66. package/dist/http/non-idempotent-mutations.d.ts.map +1 -0
  67. package/dist/http/non-idempotent-mutations.js +35 -0
  68. package/dist/http/non-idempotent-mutations.js.map +1 -0
  69. package/dist/http/transport.cjs +9 -8
  70. package/dist/http/transport.cjs.map +1 -1
  71. package/dist/http/transport.d.cts +5 -0
  72. package/dist/http/transport.d.cts.map +1 -1
  73. package/dist/http/transport.d.ts +5 -0
  74. package/dist/http/transport.d.ts.map +1 -1
  75. package/dist/http/transport.js +9 -8
  76. package/dist/http/transport.js.map +1 -1
  77. package/dist/http/user-agent.cjs +12 -1
  78. package/dist/http/user-agent.cjs.map +1 -1
  79. package/dist/http/user-agent.d.cts +8 -0
  80. package/dist/http/user-agent.d.cts.map +1 -1
  81. package/dist/http/user-agent.d.ts +8 -0
  82. package/dist/http/user-agent.d.ts.map +1 -1
  83. package/dist/http/user-agent.js +13 -3
  84. package/dist/http/user-agent.js.map +1 -1
  85. package/dist/index.cjs +25 -0
  86. package/dist/index.d.cts +10 -9
  87. package/dist/index.d.cts.map +1 -1
  88. package/dist/index.d.ts +10 -9
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +7 -6
  91. package/dist/notifications/index.cjs +3 -0
  92. package/dist/notifications/index.d.cts +2 -0
  93. package/dist/notifications/index.d.cts.map +1 -1
  94. package/dist/notifications/index.d.ts +2 -0
  95. package/dist/notifications/index.d.ts.map +1 -1
  96. package/dist/notifications/index.js +2 -1
  97. package/dist/object.cjs +12 -1
  98. package/dist/object.cjs.map +1 -1
  99. package/dist/object.d.cts +7 -1
  100. package/dist/object.d.cts.map +1 -1
  101. package/dist/object.d.ts +7 -1
  102. package/dist/object.d.ts.map +1 -1
  103. package/dist/object.js +12 -1
  104. package/dist/object.js.map +1 -1
  105. package/dist/partner/auth-core.cjs +4 -23
  106. package/dist/partner/auth-core.cjs.map +1 -1
  107. package/dist/partner/auth-core.d.cts +1 -1
  108. package/dist/partner/auth-core.d.cts.map +1 -1
  109. package/dist/partner/auth-core.d.ts +1 -1
  110. package/dist/partner/auth-core.d.ts.map +1 -1
  111. package/dist/partner/auth-core.js +5 -24
  112. package/dist/partner/auth-core.js.map +1 -1
  113. package/dist/partner/client.cjs +25 -10
  114. package/dist/partner/client.cjs.map +1 -1
  115. package/dist/partner/client.d.cts +32 -10
  116. package/dist/partner/client.d.cts.map +1 -1
  117. package/dist/partner/client.d.ts +32 -10
  118. package/dist/partner/client.d.ts.map +1 -1
  119. package/dist/partner/client.js +25 -10
  120. package/dist/partner/client.js.map +1 -1
  121. package/dist/partner/endpoint-url.cjs +1 -0
  122. package/dist/partner/endpoint-url.cjs.map +1 -1
  123. package/dist/partner/endpoint-url.d.cts +2 -0
  124. package/dist/partner/endpoint-url.d.cts.map +1 -1
  125. package/dist/partner/endpoint-url.d.ts +2 -0
  126. package/dist/partner/endpoint-url.d.ts.map +1 -1
  127. package/dist/partner/endpoint-url.js +1 -0
  128. package/dist/partner/endpoint-url.js.map +1 -1
  129. package/dist/partner/in-memory.cjs.map +1 -1
  130. package/dist/partner/in-memory.js.map +1 -1
  131. package/dist/partner/index.cjs +9 -0
  132. package/dist/partner/index.d.cts +11 -2
  133. package/dist/partner/index.d.cts.map +1 -1
  134. package/dist/partner/index.d.ts +11 -2
  135. package/dist/partner/index.d.ts.map +1 -1
  136. package/dist/partner/index.js +3 -1
  137. package/dist/partner/raw.cjs +52 -44
  138. package/dist/partner/raw.cjs.map +1 -1
  139. package/dist/partner/raw.d.cts +16 -19
  140. package/dist/partner/raw.d.cts.map +1 -1
  141. package/dist/partner/raw.d.ts +16 -19
  142. package/dist/partner/raw.d.ts.map +1 -1
  143. package/dist/partner/raw.js +52 -44
  144. package/dist/partner/raw.js.map +1 -1
  145. package/dist/partner/redaction.cjs +133 -108
  146. package/dist/partner/redaction.cjs.map +1 -1
  147. package/dist/partner/redaction.d.cts +47 -13
  148. package/dist/partner/redaction.d.cts.map +1 -1
  149. package/dist/partner/redaction.d.ts +47 -13
  150. package/dist/partner/redaction.d.ts.map +1 -1
  151. package/dist/partner/redaction.js +133 -109
  152. package/dist/partner/redaction.js.map +1 -1
  153. package/dist/raw/encoding.cjs +29 -10
  154. package/dist/raw/encoding.cjs.map +1 -1
  155. package/dist/raw/encoding.d.cts +3 -2
  156. package/dist/raw/encoding.d.cts.map +1 -1
  157. package/dist/raw/encoding.d.ts +3 -2
  158. package/dist/raw/encoding.d.ts.map +1 -1
  159. package/dist/raw/encoding.js +29 -10
  160. package/dist/raw/encoding.js.map +1 -1
  161. package/dist/raw/index.cjs +64 -39
  162. package/dist/raw/index.cjs.map +1 -1
  163. package/dist/raw/index.d.cts +21 -19
  164. package/dist/raw/index.d.cts.map +1 -1
  165. package/dist/raw/index.d.ts +21 -19
  166. package/dist/raw/index.d.ts.map +1 -1
  167. package/dist/raw/index.js +47 -40
  168. package/dist/raw/index.js.map +1 -1
  169. package/dist/raw/url.cjs.map +1 -1
  170. package/dist/raw/url.d.cts +3 -3
  171. package/dist/raw/url.d.ts +3 -3
  172. package/dist/raw/url.js.map +1 -1
  173. package/dist/simulator/index.cjs +456 -125
  174. package/dist/simulator/index.cjs.map +1 -1
  175. package/dist/simulator/index.d.cts +16 -1
  176. package/dist/simulator/index.d.cts.map +1 -1
  177. package/dist/simulator/index.d.ts +16 -1
  178. package/dist/simulator/index.d.ts.map +1 -1
  179. package/dist/simulator/index.js +449 -130
  180. package/dist/simulator/index.js.map +1 -1
  181. package/dist/simulator/partner-capabilities.cjs +77 -0
  182. package/dist/simulator/partner-capabilities.cjs.map +1 -0
  183. package/dist/simulator/partner-capabilities.d.cts +53 -0
  184. package/dist/simulator/partner-capabilities.d.cts.map +1 -0
  185. package/dist/simulator/partner-capabilities.d.ts +53 -0
  186. package/dist/simulator/partner-capabilities.d.ts.map +1 -0
  187. package/dist/simulator/partner-capabilities.js +73 -0
  188. package/dist/simulator/partner-capabilities.js.map +1 -0
  189. package/dist/simulator/partner.cjs +55 -61
  190. package/dist/simulator/partner.cjs.map +1 -1
  191. package/dist/simulator/partner.d.cts +5 -2
  192. package/dist/simulator/partner.d.cts.map +1 -1
  193. package/dist/simulator/partner.d.ts +5 -2
  194. package/dist/simulator/partner.d.ts.map +1 -1
  195. package/dist/simulator/partner.js +56 -61
  196. package/dist/simulator/partner.js.map +1 -1
  197. package/dist/simulator/validation.cjs +160 -30
  198. package/dist/simulator/validation.cjs.map +1 -1
  199. package/dist/simulator/validation.d.cts +28 -6
  200. package/dist/simulator/validation.d.cts.map +1 -1
  201. package/dist/simulator/validation.d.ts +28 -6
  202. package/dist/simulator/validation.d.ts.map +1 -1
  203. package/dist/simulator/validation.js +148 -31
  204. package/dist/simulator/validation.js.map +1 -1
  205. package/dist/streams/file-source.cjs +1 -1
  206. package/dist/streams/file-source.cjs.map +1 -1
  207. package/dist/streams/file-source.js +1 -1
  208. package/dist/streams/file-source.js.map +1 -1
  209. package/dist/streams/hash.cjs +246 -13
  210. package/dist/streams/hash.cjs.map +1 -1
  211. package/dist/streams/hash.d.cts +37 -12
  212. package/dist/streams/hash.d.cts.map +1 -1
  213. package/dist/streams/hash.d.ts +37 -12
  214. package/dist/streams/hash.d.ts.map +1 -1
  215. package/dist/streams/hash.js +246 -15
  216. package/dist/streams/hash.js.map +1 -1
  217. package/dist/streams/index.cjs +2 -0
  218. package/dist/streams/index.d.cts +1 -1
  219. package/dist/streams/index.d.cts.map +1 -1
  220. package/dist/streams/index.d.ts +1 -1
  221. package/dist/streams/index.d.ts.map +1 -1
  222. package/dist/streams/index.js +2 -2
  223. package/dist/streams/progress.cjs +63 -4
  224. package/dist/streams/progress.cjs.map +1 -1
  225. package/dist/streams/progress.d.cts +28 -2
  226. package/dist/streams/progress.d.cts.map +1 -1
  227. package/dist/streams/progress.d.ts +28 -2
  228. package/dist/streams/progress.d.ts.map +1 -1
  229. package/dist/streams/progress.js +63 -4
  230. package/dist/streams/progress.js.map +1 -1
  231. package/dist/sync/download-staging.cjs +147 -35
  232. package/dist/sync/download-staging.cjs.map +1 -1
  233. package/dist/sync/download-staging.d.cts +25 -2
  234. package/dist/sync/download-staging.d.cts.map +1 -1
  235. package/dist/sync/download-staging.d.ts +25 -2
  236. package/dist/sync/download-staging.d.ts.map +1 -1
  237. package/dist/sync/download-staging.js +146 -36
  238. package/dist/sync/download-staging.js.map +1 -1
  239. package/dist/sync/index.d.cts +1 -1
  240. package/dist/sync/index.d.cts.map +1 -1
  241. package/dist/sync/index.d.ts +1 -1
  242. package/dist/sync/index.d.ts.map +1 -1
  243. package/dist/sync/local-file-io.cjs +5 -1
  244. package/dist/sync/local-file-io.cjs.map +1 -1
  245. package/dist/sync/local-file-io.d.cts +2 -0
  246. package/dist/sync/local-file-io.d.cts.map +1 -1
  247. package/dist/sync/local-file-io.d.ts +2 -0
  248. package/dist/sync/local-file-io.d.ts.map +1 -1
  249. package/dist/sync/local-file-io.js +5 -1
  250. package/dist/sync/local-file-io.js.map +1 -1
  251. package/dist/sync/pairing.cjs +1 -0
  252. package/dist/sync/pairing.cjs.map +1 -1
  253. package/dist/sync/pairing.js +1 -0
  254. package/dist/sync/pairing.js.map +1 -1
  255. package/dist/sync/scanners/b2.cjs +2 -0
  256. package/dist/sync/scanners/b2.cjs.map +1 -1
  257. package/dist/sync/scanners/b2.d.cts.map +1 -1
  258. package/dist/sync/scanners/b2.d.ts.map +1 -1
  259. package/dist/sync/scanners/b2.js +2 -0
  260. package/dist/sync/scanners/b2.js.map +1 -1
  261. package/dist/sync/scanners/local.cjs +150 -33
  262. package/dist/sync/scanners/local.cjs.map +1 -1
  263. package/dist/sync/scanners/local.d.cts +6 -0
  264. package/dist/sync/scanners/local.d.cts.map +1 -1
  265. package/dist/sync/scanners/local.d.ts +6 -0
  266. package/dist/sync/scanners/local.d.ts.map +1 -1
  267. package/dist/sync/scanners/local.js +150 -33
  268. package/dist/sync/scanners/local.js.map +1 -1
  269. package/dist/sync/synchronizer.cjs +76 -29
  270. package/dist/sync/synchronizer.cjs.map +1 -1
  271. package/dist/sync/synchronizer.d.cts +1 -0
  272. package/dist/sync/synchronizer.d.cts.map +1 -1
  273. package/dist/sync/synchronizer.d.ts +1 -0
  274. package/dist/sync/synchronizer.d.ts.map +1 -1
  275. package/dist/sync/synchronizer.js +76 -29
  276. package/dist/sync/synchronizer.js.map +1 -1
  277. package/dist/sync/types.d.cts +19 -3
  278. package/dist/sync/types.d.cts.map +1 -1
  279. package/dist/sync/types.d.ts +19 -3
  280. package/dist/sync/types.d.ts.map +1 -1
  281. package/dist/types/backup.d.cts +6 -1
  282. package/dist/types/backup.d.cts.map +1 -1
  283. package/dist/types/backup.d.ts +6 -1
  284. package/dist/types/backup.d.ts.map +1 -1
  285. package/dist/types/bucket.cjs +81 -11
  286. package/dist/types/bucket.cjs.map +1 -1
  287. package/dist/types/bucket.d.cts +190 -39
  288. package/dist/types/bucket.d.cts.map +1 -1
  289. package/dist/types/bucket.d.ts +190 -39
  290. package/dist/types/bucket.d.ts.map +1 -1
  291. package/dist/types/bucket.js +67 -12
  292. package/dist/types/bucket.js.map +1 -1
  293. package/dist/types/download.cjs.map +1 -1
  294. package/dist/types/download.d.cts +3 -17
  295. package/dist/types/download.d.cts.map +1 -1
  296. package/dist/types/download.d.ts +3 -17
  297. package/dist/types/download.d.ts.map +1 -1
  298. package/dist/types/download.js.map +1 -1
  299. package/dist/types/encryption.cjs +18 -0
  300. package/dist/types/encryption.cjs.map +1 -1
  301. package/dist/types/encryption.d.cts +21 -11
  302. package/dist/types/encryption.d.cts.map +1 -1
  303. package/dist/types/encryption.d.ts +21 -11
  304. package/dist/types/encryption.d.ts.map +1 -1
  305. package/dist/types/encryption.js +18 -0
  306. package/dist/types/encryption.js.map +1 -1
  307. package/dist/types/file.cjs +3 -0
  308. package/dist/types/file.cjs.map +1 -1
  309. package/dist/types/file.d.cts +125 -16
  310. package/dist/types/file.d.cts.map +1 -1
  311. package/dist/types/file.d.ts +125 -16
  312. package/dist/types/file.d.ts.map +1 -1
  313. package/dist/types/file.js +3 -1
  314. package/dist/types/file.js.map +1 -1
  315. package/dist/types/index.d.cts +7 -7
  316. package/dist/types/index.d.cts.map +1 -1
  317. package/dist/types/index.d.ts +7 -7
  318. package/dist/types/index.d.ts.map +1 -1
  319. package/dist/types/key.d.cts +4 -3
  320. package/dist/types/key.d.cts.map +1 -1
  321. package/dist/types/key.d.ts +4 -3
  322. package/dist/types/key.d.ts.map +1 -1
  323. package/dist/types/notifications.cjs +30 -0
  324. package/dist/types/notifications.cjs.map +1 -1
  325. package/dist/types/notifications.d.cts +26 -1
  326. package/dist/types/notifications.d.cts.map +1 -1
  327. package/dist/types/notifications.d.ts +26 -1
  328. package/dist/types/notifications.d.ts.map +1 -1
  329. package/dist/types/notifications.js +29 -1
  330. package/dist/types/notifications.js.map +1 -1
  331. package/dist/types/partner.cjs.map +1 -1
  332. package/dist/types/partner.d.cts +28 -36
  333. package/dist/types/partner.d.cts.map +1 -1
  334. package/dist/types/partner.d.ts +28 -36
  335. package/dist/types/partner.d.ts.map +1 -1
  336. package/dist/types/partner.js.map +1 -1
  337. package/dist/types/upload.d.cts +4 -0
  338. package/dist/types/upload.d.cts.map +1 -1
  339. package/dist/types/upload.d.ts +4 -0
  340. package/dist/types/upload.d.ts.map +1 -1
  341. package/dist/upload/large.cjs +10 -7
  342. package/dist/upload/large.cjs.map +1 -1
  343. package/dist/upload/large.d.cts +15 -6
  344. package/dist/upload/large.d.cts.map +1 -1
  345. package/dist/upload/large.d.ts +15 -6
  346. package/dist/upload/large.d.ts.map +1 -1
  347. package/dist/upload/large.js +10 -7
  348. package/dist/upload/large.js.map +1 -1
  349. package/dist/upload/options.cjs.map +1 -1
  350. package/dist/upload/options.d.cts +12 -0
  351. package/dist/upload/options.d.cts.map +1 -1
  352. package/dist/upload/options.d.ts +12 -0
  353. package/dist/upload/options.d.ts.map +1 -1
  354. package/dist/upload/options.js.map +1 -1
  355. package/dist/upload/resume.cjs +4 -3
  356. package/dist/upload/resume.cjs.map +1 -1
  357. package/dist/upload/resume.d.cts +6 -4
  358. package/dist/upload/resume.d.cts.map +1 -1
  359. package/dist/upload/resume.d.ts +6 -4
  360. package/dist/upload/resume.d.ts.map +1 -1
  361. package/dist/upload/resume.js +4 -3
  362. package/dist/upload/resume.js.map +1 -1
  363. package/dist/upload/retry.cjs +17 -10
  364. package/dist/upload/retry.cjs.map +1 -1
  365. package/dist/upload/retry.d.cts.map +1 -1
  366. package/dist/upload/retry.d.ts.map +1 -1
  367. package/dist/upload/retry.js +17 -10
  368. package/dist/upload/retry.js.map +1 -1
  369. package/dist/upload/single.cjs +35 -31
  370. package/dist/upload/single.cjs.map +1 -1
  371. package/dist/upload/single.d.cts +6 -0
  372. package/dist/upload/single.d.cts.map +1 -1
  373. package/dist/upload/single.d.ts +6 -0
  374. package/dist/upload/single.d.ts.map +1 -1
  375. package/dist/upload/single.js +35 -31
  376. package/dist/upload/single.js.map +1 -1
  377. package/dist/upload/stream.cjs +12 -1
  378. package/dist/upload/stream.cjs.map +1 -1
  379. package/dist/upload/stream.d.cts +6 -0
  380. package/dist/upload/stream.d.cts.map +1 -1
  381. package/dist/upload/stream.d.ts +6 -0
  382. package/dist/upload/stream.d.ts.map +1 -1
  383. package/dist/upload/stream.js +12 -1
  384. package/dist/upload/stream.js.map +1 -1
  385. package/dist/version.cjs +56 -4
  386. package/dist/version.cjs.map +1 -1
  387. package/dist/version.d.cts +53 -4
  388. package/dist/version.d.cts.map +1 -1
  389. package/dist/version.d.ts +53 -4
  390. package/dist/version.d.ts.map +1 -1
  391. package/dist/version.js +52 -5
  392. package/dist/version.js.map +1 -1
  393. package/package.json +11 -4
@@ -1 +1 @@
1
- {"version":3,"file":"url.js","names":[],"sources":["../../src/raw/url.ts"],"sourcesContent":["/**\n * B2-style API version segment, such as `v1`, `v3`, or `v4`.\n *\n * The template-literal type documents the compile-time shape; use\n * {@link isB2ApiVersion} when accepting untyped runtime input.\n */\nexport type B2ApiVersion = `v${number}`\n\nconst SLASH = '/'\nconst BACKSLASH = '\\\\'\nconst VERSION_PREFIX = 'v'\nconst VERSION_DIGITS = '0123456789'\nconst URL_DELIMITERS = ['?', '#'] as const\n\n/** URL path options for a B2 API endpoint. */\nexport interface B2UrlOptions {\n /** Base path prefix before the optional version segment. Defaults to `b2api`. */\n readonly prefix?: string\n /**\n * Optional API version segment. SDK storage endpoints use `v3` and `v4`;\n * Computer Backup endpoints use the same `vN` segment shape under a\n * different prefix, such as `api/backup/v1`.\n */\n readonly version?: B2ApiVersion\n /** Endpoint name appended after the prefix and optional version. */\n readonly endpoint: string\n}\n\n/** URL path options for a B2 API surface before the endpoint is selected. */\nexport type B2EndpointUrlOptions = Omit<B2UrlOptions, 'endpoint'>\n\n/**\n * Returns true when `value` is a B2 API version segment of the form `vN`.\n *\n * @param value - Candidate API version segment.\n *\n * @returns Whether the value is a valid B2 API version segment.\n */\nexport function isB2ApiVersion(value: string): value is B2ApiVersion {\n if (!value.startsWith(VERSION_PREFIX) || value.length === VERSION_PREFIX.length) return false\n\n for (let index = VERSION_PREFIX.length; index < value.length; index += 1) {\n const digit = value[index]\n if (digit === undefined || !VERSION_DIGITS.includes(digit)) return false\n }\n\n return true\n}\n\nfunction assertB2ApiVersion(value: string): asserts value is B2ApiVersion {\n if (!isB2ApiVersion(value)) {\n throw new TypeError('Invalid version: expected a B2 API version segment like \"v3\"')\n }\n}\n\nfunction trimSlashes(\n value: string,\n { leading, trailing }: { readonly leading: boolean; readonly trailing: boolean },\n): string {\n let start = 0\n let end = value.length\n\n while (leading && start < end && value[start] === SLASH) {\n start += 1\n }\n while (trailing && end > start && value[end - 1] === SLASH) {\n end -= 1\n }\n\n return start === 0 && end === value.length ? value : value.slice(start, end)\n}\n\nfunction hasUrlDelimiter(value: string): boolean {\n return URL_DELIMITERS.some((delimiter) => value.includes(delimiter))\n}\n\nfunction hasEncodedPathDelimiter(value: string): boolean {\n const lowerValue = value.toLowerCase()\n return (\n lowerValue.includes('%2f') ||\n lowerValue.includes('%3f') ||\n lowerValue.includes('%23') ||\n lowerValue.includes('%5c')\n )\n}\n\nfunction withDotEscapesDecoded(value: string): string {\n let decoded = ''\n let index = 0\n\n while (index < value.length) {\n if (value.slice(index, index + 3).toLowerCase() === '%2e') {\n decoded += '.'\n index += 3\n } else {\n decoded += value[index]\n index += 1\n }\n }\n\n return decoded\n}\n\nfunction isTraversalComponent(value: string): boolean {\n const decoded = withDotEscapesDecoded(value)\n return decoded === '.' || decoded === '..'\n}\n\nfunction validatePathComponent(component: string, optionName: string): void {\n if (component.length === 0) {\n throw new TypeError(`Invalid ${optionName}: path components must not be empty`)\n }\n if (hasUrlDelimiter(component)) {\n throw new TypeError(`Invalid ${optionName}: path components must not contain \"?\" or \"#\"`)\n }\n if (component.includes(BACKSLASH)) {\n throw new TypeError(`Invalid ${optionName}: path components must not contain \"\\\\\"`)\n }\n if (hasEncodedPathDelimiter(component)) {\n throw new TypeError(\n `Invalid ${optionName}: path components must not contain encoded \"/\", \"\\\\\", \"?\", or \"#\"`,\n )\n }\n if (isTraversalComponent(component)) {\n throw new TypeError(`Invalid ${optionName}: path components must not be \".\" or \"..\"`)\n }\n}\n\nfunction preparePathPrefix(prefix: string): string {\n const trimmed = trimSlashes(prefix, { leading: true, trailing: true })\n if (trimmed.length === 0) return ''\n\n for (const component of trimmed.split(SLASH)) {\n validatePathComponent(component, 'prefix')\n }\n\n return trimmed\n}\n\nfunction preparePathSegment(segment: string, optionName: string): string {\n const trimmed = trimSlashes(segment, { leading: true, trailing: true })\n if (trimmed.length === 0) return ''\n if (trimmed.includes(SLASH)) {\n throw new TypeError(`Invalid ${optionName}: expected a single path segment`)\n }\n\n validatePathComponent(trimmed, optionName)\n return trimmed\n}\n\nfunction prepareVersionSegment(version: B2ApiVersion): B2ApiVersion {\n const trimmed = preparePathSegment(version, 'version')\n assertB2ApiVersion(trimmed)\n return trimmed\n}\n\n/**\n * Builds a B2 API endpoint URL from a base URL, path prefix, optional version,\n * and endpoint name.\n *\n * @param baseUrl - API or download base URL.\n * @param options - Path prefix, optional version, and endpoint name.\n *\n * @returns The absolute endpoint URL.\n */\nexport function b2Url(\n baseUrl: string,\n { prefix = 'b2api', version, endpoint }: B2UrlOptions,\n): string {\n const base = trimSlashes(baseUrl, { leading: false, trailing: true })\n const path = [\n preparePathPrefix(prefix),\n version === undefined ? undefined : prepareVersionSegment(version),\n preparePathSegment(endpoint, 'endpoint'),\n ]\n .filter((segment): segment is string => segment !== undefined)\n .filter((segment) => segment.length > 0)\n .join(SLASH)\n\n return path.length === 0 ? base : `${base}/${path}`\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"url.js","names":[],"sources":["../../src/raw/url.ts"],"sourcesContent":["/**\n * B2-style API version segment, such as `v1`, `v3`, or `v4`.\n *\n * The template-literal type documents the compile-time shape; use\n * {@link isB2ApiVersion} when accepting untyped runtime input.\n */\nexport type B2ApiVersion = `v${number}`\n\nconst SLASH = '/'\nconst BACKSLASH = '\\\\'\nconst VERSION_PREFIX = 'v'\nconst VERSION_DIGITS = '0123456789'\nconst URL_DELIMITERS = ['?', '#'] as const\n\n/** URL path options for a B2 API endpoint. */\nexport interface B2UrlOptions {\n /** Base path prefix before the optional version segment. Defaults to `b2api`. */\n readonly prefix?: string\n /**\n * Optional API version segment. SDK-built B2 native storage endpoints use\n * the current published `v4` segment; Computer Backup endpoints use the same\n * `vN` segment shape under a different prefix, such as `api/backup/v1`.\n */\n readonly version?: B2ApiVersion\n /** Endpoint name appended after the prefix and optional version. */\n readonly endpoint: string\n}\n\n/** URL path options for a B2 API surface before the endpoint is selected. */\nexport type B2EndpointUrlOptions = Omit<B2UrlOptions, 'endpoint'>\n\n/**\n * Returns true when `value` is a B2 API version segment of the form `vN`.\n *\n * @param value - Candidate API version segment.\n *\n * @returns Whether the value is a valid B2 API version segment.\n */\nexport function isB2ApiVersion(value: string): value is B2ApiVersion {\n if (!value.startsWith(VERSION_PREFIX) || value.length === VERSION_PREFIX.length) return false\n\n for (let index = VERSION_PREFIX.length; index < value.length; index += 1) {\n const digit = value[index]\n if (digit === undefined || !VERSION_DIGITS.includes(digit)) return false\n }\n\n return true\n}\n\nfunction assertB2ApiVersion(value: string): asserts value is B2ApiVersion {\n if (!isB2ApiVersion(value)) {\n throw new TypeError('Invalid version: expected a B2 API version segment like \"v3\"')\n }\n}\n\nfunction trimSlashes(\n value: string,\n { leading, trailing }: { readonly leading: boolean; readonly trailing: boolean },\n): string {\n let start = 0\n let end = value.length\n\n while (leading && start < end && value[start] === SLASH) {\n start += 1\n }\n while (trailing && end > start && value[end - 1] === SLASH) {\n end -= 1\n }\n\n return start === 0 && end === value.length ? value : value.slice(start, end)\n}\n\nfunction hasUrlDelimiter(value: string): boolean {\n return URL_DELIMITERS.some((delimiter) => value.includes(delimiter))\n}\n\nfunction hasEncodedPathDelimiter(value: string): boolean {\n const lowerValue = value.toLowerCase()\n return (\n lowerValue.includes('%2f') ||\n lowerValue.includes('%3f') ||\n lowerValue.includes('%23') ||\n lowerValue.includes('%5c')\n )\n}\n\nfunction withDotEscapesDecoded(value: string): string {\n let decoded = ''\n let index = 0\n\n while (index < value.length) {\n if (value.slice(index, index + 3).toLowerCase() === '%2e') {\n decoded += '.'\n index += 3\n } else {\n decoded += value[index]\n index += 1\n }\n }\n\n return decoded\n}\n\nfunction isTraversalComponent(value: string): boolean {\n const decoded = withDotEscapesDecoded(value)\n return decoded === '.' || decoded === '..'\n}\n\nfunction validatePathComponent(component: string, optionName: string): void {\n if (component.length === 0) {\n throw new TypeError(`Invalid ${optionName}: path components must not be empty`)\n }\n if (hasUrlDelimiter(component)) {\n throw new TypeError(`Invalid ${optionName}: path components must not contain \"?\" or \"#\"`)\n }\n if (component.includes(BACKSLASH)) {\n throw new TypeError(`Invalid ${optionName}: path components must not contain \"\\\\\"`)\n }\n if (hasEncodedPathDelimiter(component)) {\n throw new TypeError(\n `Invalid ${optionName}: path components must not contain encoded \"/\", \"\\\\\", \"?\", or \"#\"`,\n )\n }\n if (isTraversalComponent(component)) {\n throw new TypeError(`Invalid ${optionName}: path components must not be \".\" or \"..\"`)\n }\n}\n\nfunction preparePathPrefix(prefix: string): string {\n const trimmed = trimSlashes(prefix, { leading: true, trailing: true })\n if (trimmed.length === 0) return ''\n\n for (const component of trimmed.split(SLASH)) {\n validatePathComponent(component, 'prefix')\n }\n\n return trimmed\n}\n\nfunction preparePathSegment(segment: string, optionName: string): string {\n const trimmed = trimSlashes(segment, { leading: true, trailing: true })\n if (trimmed.length === 0) return ''\n if (trimmed.includes(SLASH)) {\n throw new TypeError(`Invalid ${optionName}: expected a single path segment`)\n }\n\n validatePathComponent(trimmed, optionName)\n return trimmed\n}\n\nfunction prepareVersionSegment(version: B2ApiVersion): B2ApiVersion {\n const trimmed = preparePathSegment(version, 'version')\n assertB2ApiVersion(trimmed)\n return trimmed\n}\n\n/**\n * Builds a B2 API endpoint URL from a base URL, path prefix, optional version,\n * and endpoint name.\n *\n * @param baseUrl - API or download base URL.\n * @param options - Path prefix, optional version, and endpoint name.\n *\n * @returns The absolute endpoint URL.\n */\nexport function b2Url(\n baseUrl: string,\n { prefix = 'b2api', version, endpoint }: B2UrlOptions,\n): string {\n const base = trimSlashes(baseUrl, { leading: false, trailing: true })\n const path = [\n preparePathPrefix(prefix),\n version === undefined ? undefined : prepareVersionSegment(version),\n preparePathSegment(endpoint, 'endpoint'),\n ]\n .filter((segment): segment is string => segment !== undefined)\n .filter((segment) => segment.length > 0)\n .join(SLASH)\n\n return path.length === 0 ? base : `${base}/${path}`\n}\n"],"mappings":"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"}