@backblaze-labs/b2-sdk 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (885) hide show
  1. package/CHANGELOG.md +151 -5
  2. package/README.md +163 -34
  3. package/dist/_virtual/_b2-sdk-version-json.cjs +4 -0
  4. package/dist/_virtual/_b2-sdk-version-json.js +4 -0
  5. package/dist/auth/account-info.d.cts +32 -0
  6. package/dist/auth/account-info.d.cts.map +1 -1
  7. package/dist/auth/account-info.d.ts +32 -0
  8. package/dist/auth/account-info.d.ts.map +1 -1
  9. package/dist/auth/file.cjs +408 -207
  10. package/dist/auth/file.cjs.map +1 -1
  11. package/dist/auth/file.d.cts +77 -3
  12. package/dist/auth/file.d.cts.map +1 -1
  13. package/dist/auth/file.d.ts +77 -3
  14. package/dist/auth/file.d.ts.map +1 -1
  15. package/dist/auth/file.js +407 -207
  16. package/dist/auth/file.js.map +1 -1
  17. package/dist/auth/in-memory.cjs +212 -183
  18. package/dist/auth/in-memory.cjs.map +1 -1
  19. package/dist/auth/in-memory.d.cts +8 -0
  20. package/dist/auth/in-memory.d.cts.map +1 -1
  21. package/dist/auth/in-memory.d.ts +8 -0
  22. package/dist/auth/in-memory.d.ts.map +1 -1
  23. package/dist/auth/in-memory.js +211 -182
  24. package/dist/auth/in-memory.js.map +1 -1
  25. package/dist/auth/index.cjs +7 -9
  26. package/dist/auth/index.d.cts +3 -2
  27. package/dist/auth/index.d.cts.map +1 -1
  28. package/dist/auth/index.d.ts +3 -2
  29. package/dist/auth/index.d.ts.map +1 -1
  30. package/dist/auth/index.js +2 -8
  31. package/dist/auth/realms.cjs +80 -7
  32. package/dist/auth/realms.cjs.map +1 -1
  33. package/dist/auth/realms.d.cts +27 -4
  34. package/dist/auth/realms.d.cts.map +1 -1
  35. package/dist/auth/realms.d.ts +27 -4
  36. package/dist/auth/realms.d.ts.map +1 -1
  37. package/dist/auth/realms.js +80 -9
  38. package/dist/auth/realms.js.map +1 -1
  39. package/dist/auth/upload-url-pool.cjs +55 -51
  40. package/dist/auth/upload-url-pool.cjs.map +1 -1
  41. package/dist/auth/upload-url-pool.js +55 -51
  42. package/dist/auth/upload-url-pool.js.map +1 -1
  43. package/dist/backup/client.cjs +206 -0
  44. package/dist/backup/client.cjs.map +1 -0
  45. package/dist/backup/client.d.cts +238 -0
  46. package/dist/backup/client.d.cts.map +1 -0
  47. package/dist/backup/client.d.ts +238 -0
  48. package/dist/backup/client.d.ts.map +1 -0
  49. package/dist/backup/client.js +206 -0
  50. package/dist/backup/client.js.map +1 -0
  51. package/dist/backup/index.cjs +15 -0
  52. package/dist/backup/index.d.cts +22 -0
  53. package/dist/backup/index.d.cts.map +1 -0
  54. package/dist/backup/index.d.ts +22 -0
  55. package/dist/backup/index.d.ts.map +1 -0
  56. package/dist/backup/index.js +7 -0
  57. package/dist/backup/raw.cjs +146 -0
  58. package/dist/backup/raw.cjs.map +1 -0
  59. package/dist/backup/raw.d.cts +122 -0
  60. package/dist/backup/raw.d.cts.map +1 -0
  61. package/dist/backup/raw.d.ts +122 -0
  62. package/dist/backup/raw.d.ts.map +1 -0
  63. package/dist/backup/raw.js +146 -0
  64. package/dist/backup/raw.js.map +1 -0
  65. package/dist/bucket.cjs +786 -787
  66. package/dist/bucket.cjs.map +1 -1
  67. package/dist/bucket.d.cts +35 -47
  68. package/dist/bucket.d.cts.map +1 -1
  69. package/dist/bucket.d.ts +35 -47
  70. package/dist/bucket.d.ts.map +1 -1
  71. package/dist/bucket.js +781 -782
  72. package/dist/bucket.js.map +1 -1
  73. package/dist/client.cjs +246 -228
  74. package/dist/client.cjs.map +1 -1
  75. package/dist/client.d.cts +25 -17
  76. package/dist/client.d.cts.map +1 -1
  77. package/dist/client.d.ts +25 -17
  78. package/dist/client.d.ts.map +1 -1
  79. package/dist/client.js +243 -225
  80. package/dist/client.js.map +1 -1
  81. package/dist/copy/large.cjs +116 -71
  82. package/dist/copy/large.cjs.map +1 -1
  83. package/dist/copy/large.d.cts +6 -0
  84. package/dist/copy/large.d.cts.map +1 -1
  85. package/dist/copy/large.d.ts +6 -0
  86. package/dist/copy/large.d.ts.map +1 -1
  87. package/dist/copy/large.js +114 -69
  88. package/dist/copy/large.js.map +1 -1
  89. package/dist/download/checksum.cjs +93 -0
  90. package/dist/download/checksum.cjs.map +1 -0
  91. package/dist/download/checksum.d.cts +40 -0
  92. package/dist/download/checksum.d.cts.map +1 -0
  93. package/dist/download/checksum.d.ts +40 -0
  94. package/dist/download/checksum.d.ts.map +1 -0
  95. package/dist/download/checksum.js +91 -0
  96. package/dist/download/checksum.js.map +1 -0
  97. package/dist/download/parallel.cjs +251 -118
  98. package/dist/download/parallel.cjs.map +1 -1
  99. package/dist/download/parallel.d.cts +13 -2
  100. package/dist/download/parallel.d.cts.map +1 -1
  101. package/dist/download/parallel.d.ts +13 -2
  102. package/dist/download/parallel.d.ts.map +1 -1
  103. package/dist/download/parallel.js +249 -116
  104. package/dist/download/parallel.js.map +1 -1
  105. package/dist/download/single.cjs +323 -97
  106. package/dist/download/single.cjs.map +1 -1
  107. package/dist/download/single.d.cts +6 -1
  108. package/dist/download/single.d.cts.map +1 -1
  109. package/dist/download/single.d.ts +6 -1
  110. package/dist/download/single.d.ts.map +1 -1
  111. package/dist/download/single.js +322 -99
  112. package/dist/download/single.js.map +1 -1
  113. package/dist/errors/index.cjs +869 -243
  114. package/dist/errors/index.cjs.map +1 -1
  115. package/dist/errors/index.d.cts +404 -82
  116. package/dist/errors/index.d.cts.map +1 -1
  117. package/dist/errors/index.d.ts +404 -82
  118. package/dist/errors/index.d.ts.map +1 -1
  119. package/dist/errors/index.js +835 -261
  120. package/dist/errors/index.js.map +1 -1
  121. package/dist/http/retry.cjs +45 -28
  122. package/dist/http/retry.cjs.map +1 -1
  123. package/dist/http/retry.d.cts +15 -2
  124. package/dist/http/retry.d.cts.map +1 -1
  125. package/dist/http/retry.d.ts +15 -2
  126. package/dist/http/retry.d.ts.map +1 -1
  127. package/dist/http/retry.js +46 -31
  128. package/dist/http/retry.js.map +1 -1
  129. package/dist/http/transport.cjs +476 -140
  130. package/dist/http/transport.cjs.map +1 -1
  131. package/dist/http/transport.d.cts +46 -5
  132. package/dist/http/transport.d.cts.map +1 -1
  133. package/dist/http/transport.d.ts +46 -5
  134. package/dist/http/transport.d.ts.map +1 -1
  135. package/dist/http/transport.js +474 -140
  136. package/dist/http/transport.js.map +1 -1
  137. package/dist/http/url-guard.cjs +154 -89
  138. package/dist/http/url-guard.cjs.map +1 -1
  139. package/dist/http/url-guard.d.cts +25 -3
  140. package/dist/http/url-guard.d.cts.map +1 -1
  141. package/dist/http/url-guard.d.ts +25 -3
  142. package/dist/http/url-guard.d.ts.map +1 -1
  143. package/dist/http/url-guard.js +152 -90
  144. package/dist/http/url-guard.js.map +1 -1
  145. package/dist/http/user-agent.cjs +84 -44
  146. package/dist/http/user-agent.cjs.map +1 -1
  147. package/dist/http/user-agent.js +84 -46
  148. package/dist/http/user-agent.js.map +1 -1
  149. package/dist/index.cjs +124 -77
  150. package/dist/index.d.cts +29 -21
  151. package/dist/index.d.cts.map +1 -1
  152. package/dist/index.d.ts +29 -21
  153. package/dist/index.d.ts.map +1 -1
  154. package/dist/index.js +18 -72
  155. package/dist/internal/b2-naming.cjs +66 -0
  156. package/dist/internal/b2-naming.cjs.map +1 -0
  157. package/dist/internal/b2-naming.d.cts +43 -0
  158. package/dist/internal/b2-naming.d.cts.map +1 -0
  159. package/dist/internal/b2-naming.d.ts +43 -0
  160. package/dist/internal/b2-naming.d.ts.map +1 -0
  161. package/dist/internal/b2-naming.js +60 -0
  162. package/dist/internal/b2-naming.js.map +1 -0
  163. package/dist/internal/upload-retry-options.cjs +21 -0
  164. package/dist/internal/upload-retry-options.cjs.map +1 -0
  165. package/dist/internal/upload-retry-options.d.cts +12 -0
  166. package/dist/internal/upload-retry-options.d.cts.map +1 -0
  167. package/dist/internal/upload-retry-options.d.ts +12 -0
  168. package/dist/internal/upload-retry-options.d.ts.map +1 -0
  169. package/dist/internal/upload-retry-options.js +21 -0
  170. package/dist/internal/upload-retry-options.js.map +1 -0
  171. package/dist/internal/url-redaction.cjs +31 -0
  172. package/dist/internal/url-redaction.cjs.map +1 -0
  173. package/dist/internal/url-redaction.d.cts +17 -0
  174. package/dist/internal/url-redaction.d.cts.map +1 -0
  175. package/dist/internal/url-redaction.d.ts +17 -0
  176. package/dist/internal/url-redaction.d.ts.map +1 -0
  177. package/dist/internal/url-redaction.js +31 -0
  178. package/dist/internal/url-redaction.js.map +1 -0
  179. package/dist/notifications/index.cjs +4 -6
  180. package/dist/notifications/index.d.cts +1 -1
  181. package/dist/notifications/index.d.cts.map +1 -1
  182. package/dist/notifications/index.d.ts +1 -1
  183. package/dist/notifications/index.d.ts.map +1 -1
  184. package/dist/notifications/index.js +1 -6
  185. package/dist/notifications/webhook.cjs +195 -85
  186. package/dist/notifications/webhook.cjs.map +1 -1
  187. package/dist/notifications/webhook.d.cts.map +1 -1
  188. package/dist/notifications/webhook.d.ts.map +1 -1
  189. package/dist/notifications/webhook.js +195 -87
  190. package/dist/notifications/webhook.js.map +1 -1
  191. package/dist/object.cjs +253 -210
  192. package/dist/object.cjs.map +1 -1
  193. package/dist/object.d.cts +13 -57
  194. package/dist/object.d.cts.map +1 -1
  195. package/dist/object.d.ts +13 -57
  196. package/dist/object.d.ts.map +1 -1
  197. package/dist/object.js +249 -206
  198. package/dist/object.js.map +1 -1
  199. package/dist/partner/account-info.d.cts +43 -0
  200. package/dist/partner/account-info.d.cts.map +1 -0
  201. package/dist/partner/account-info.d.ts +43 -0
  202. package/dist/partner/account-info.d.ts.map +1 -0
  203. package/dist/partner/auth-clone.cjs +64 -0
  204. package/dist/partner/auth-clone.cjs.map +1 -0
  205. package/dist/partner/auth-clone.d.cts +27 -0
  206. package/dist/partner/auth-clone.d.cts.map +1 -0
  207. package/dist/partner/auth-clone.d.ts +27 -0
  208. package/dist/partner/auth-clone.d.ts.map +1 -0
  209. package/dist/partner/auth-clone.js +63 -0
  210. package/dist/partner/auth-clone.js.map +1 -0
  211. package/dist/partner/auth-core.cjs +175 -0
  212. package/dist/partner/auth-core.cjs.map +1 -0
  213. package/dist/partner/auth-core.d.cts +111 -0
  214. package/dist/partner/auth-core.d.cts.map +1 -0
  215. package/dist/partner/auth-core.d.ts +111 -0
  216. package/dist/partner/auth-core.d.ts.map +1 -0
  217. package/dist/partner/auth-core.js +175 -0
  218. package/dist/partner/auth-core.js.map +1 -0
  219. package/dist/partner/auth-shape.cjs +36 -0
  220. package/dist/partner/auth-shape.cjs.map +1 -0
  221. package/dist/partner/auth-shape.d.cts +12 -0
  222. package/dist/partner/auth-shape.d.cts.map +1 -0
  223. package/dist/partner/auth-shape.d.ts +12 -0
  224. package/dist/partner/auth-shape.d.ts.map +1 -0
  225. package/dist/partner/auth-shape.js +36 -0
  226. package/dist/partner/auth-shape.js.map +1 -0
  227. package/dist/partner/client.cjs +255 -0
  228. package/dist/partner/client.cjs.map +1 -0
  229. package/dist/partner/client.d.cts +335 -0
  230. package/dist/partner/client.d.cts.map +1 -0
  231. package/dist/partner/client.d.ts +335 -0
  232. package/dist/partner/client.d.ts.map +1 -0
  233. package/dist/partner/client.js +255 -0
  234. package/dist/partner/client.js.map +1 -0
  235. package/dist/partner/endpoint-url.cjs +108 -0
  236. package/dist/partner/endpoint-url.cjs.map +1 -0
  237. package/dist/partner/endpoint-url.d.cts +72 -0
  238. package/dist/partner/endpoint-url.d.cts.map +1 -0
  239. package/dist/partner/endpoint-url.d.ts +72 -0
  240. package/dist/partner/endpoint-url.d.ts.map +1 -0
  241. package/dist/partner/endpoint-url.js +105 -0
  242. package/dist/partner/endpoint-url.js.map +1 -0
  243. package/dist/partner/in-memory.cjs +135 -0
  244. package/dist/partner/in-memory.cjs.map +1 -0
  245. package/dist/partner/in-memory.d.cts +99 -0
  246. package/dist/partner/in-memory.d.cts.map +1 -0
  247. package/dist/partner/in-memory.d.ts +99 -0
  248. package/dist/partner/in-memory.d.ts.map +1 -0
  249. package/dist/partner/in-memory.js +135 -0
  250. package/dist/partner/in-memory.js.map +1 -0
  251. package/dist/partner/index.cjs +18 -0
  252. package/dist/partner/index.d.cts +23 -0
  253. package/dist/partner/index.d.cts.map +1 -0
  254. package/dist/partner/index.d.ts +23 -0
  255. package/dist/partner/index.d.ts.map +1 -0
  256. package/dist/partner/index.js +7 -0
  257. package/dist/partner/raw.cjs +392 -0
  258. package/dist/partner/raw.cjs.map +1 -0
  259. package/dist/partner/raw.d.cts +223 -0
  260. package/dist/partner/raw.d.cts.map +1 -0
  261. package/dist/partner/raw.d.ts +223 -0
  262. package/dist/partner/raw.d.ts.map +1 -0
  263. package/dist/partner/raw.js +390 -0
  264. package/dist/partner/raw.js.map +1 -0
  265. package/dist/partner/redaction-placeholders.cjs +10 -0
  266. package/dist/partner/redaction-placeholders.cjs.map +1 -0
  267. package/dist/partner/redaction-placeholders.d.cts +5 -0
  268. package/dist/partner/redaction-placeholders.d.cts.map +1 -0
  269. package/dist/partner/redaction-placeholders.d.ts +5 -0
  270. package/dist/partner/redaction-placeholders.d.ts.map +1 -0
  271. package/dist/partner/redaction-placeholders.js +9 -0
  272. package/dist/partner/redaction-placeholders.js.map +1 -0
  273. package/dist/partner/redaction.cjs +267 -0
  274. package/dist/partner/redaction.cjs.map +1 -0
  275. package/dist/partner/redaction.d.cts +124 -0
  276. package/dist/partner/redaction.d.cts.map +1 -0
  277. package/dist/partner/redaction.d.ts +124 -0
  278. package/dist/partner/redaction.d.ts.map +1 -0
  279. package/dist/partner/redaction.js +257 -0
  280. package/dist/partner/redaction.js.map +1 -0
  281. package/dist/raw/encoding.cjs +74 -35
  282. package/dist/raw/encoding.cjs.map +1 -1
  283. package/dist/raw/encoding.js +74 -38
  284. package/dist/raw/encoding.js.map +1 -1
  285. package/dist/raw/index.cjs +740 -587
  286. package/dist/raw/index.cjs.map +1 -1
  287. package/dist/raw/index.d.cts +126 -19
  288. package/dist/raw/index.d.cts.map +1 -1
  289. package/dist/raw/index.d.ts +126 -19
  290. package/dist/raw/index.d.ts.map +1 -1
  291. package/dist/raw/index.js +736 -589
  292. package/dist/raw/index.js.map +1 -1
  293. package/dist/raw/url.cjs +111 -0
  294. package/dist/raw/url.cjs.map +1 -0
  295. package/dist/raw/url.d.cts +41 -0
  296. package/dist/raw/url.d.cts.map +1 -0
  297. package/dist/raw/url.d.ts +41 -0
  298. package/dist/raw/url.d.ts.map +1 -0
  299. package/dist/raw/url.js +110 -0
  300. package/dist/raw/url.js.map +1 -0
  301. package/dist/s3/index.cjs +355 -18
  302. package/dist/s3/index.cjs.map +1 -1
  303. package/dist/s3/index.d.cts +233 -5
  304. package/dist/s3/index.d.cts.map +1 -1
  305. package/dist/s3/index.d.ts +233 -5
  306. package/dist/s3/index.d.ts.map +1 -1
  307. package/dist/s3/index.js +351 -22
  308. package/dist/s3/index.js.map +1 -1
  309. package/dist/s3/sigv4.cjs +154 -0
  310. package/dist/s3/sigv4.cjs.map +1 -0
  311. package/dist/s3/sigv4.d.cts +43 -0
  312. package/dist/s3/sigv4.d.cts.map +1 -0
  313. package/dist/s3/sigv4.d.ts +43 -0
  314. package/dist/s3/sigv4.d.ts.map +1 -0
  315. package/dist/s3/sigv4.js +153 -0
  316. package/dist/s3/sigv4.js.map +1 -0
  317. package/dist/s3/validation.cjs +69 -0
  318. package/dist/s3/validation.cjs.map +1 -0
  319. package/dist/s3/validation.d.cts +43 -0
  320. package/dist/s3/validation.d.cts.map +1 -0
  321. package/dist/s3/validation.d.ts +43 -0
  322. package/dist/s3/validation.d.ts.map +1 -0
  323. package/dist/s3/validation.js +66 -0
  324. package/dist/s3/validation.js.map +1 -0
  325. package/dist/simulator/capabilities.cjs +63 -48
  326. package/dist/simulator/capabilities.cjs.map +1 -1
  327. package/dist/simulator/capabilities.js +63 -49
  328. package/dist/simulator/capabilities.js.map +1 -1
  329. package/dist/simulator/index.cjs +3114 -1547
  330. package/dist/simulator/index.cjs.map +1 -1
  331. package/dist/simulator/index.d.cts +186 -20
  332. package/dist/simulator/index.d.cts.map +1 -1
  333. package/dist/simulator/index.d.ts +186 -20
  334. package/dist/simulator/index.d.ts.map +1 -1
  335. package/dist/simulator/index.js +3098 -1545
  336. package/dist/simulator/index.js.map +1 -1
  337. package/dist/simulator/partner.cjs +719 -0
  338. package/dist/simulator/partner.cjs.map +1 -0
  339. package/dist/simulator/partner.d.cts +183 -0
  340. package/dist/simulator/partner.d.cts.map +1 -0
  341. package/dist/simulator/partner.d.ts +183 -0
  342. package/dist/simulator/partner.d.ts.map +1 -0
  343. package/dist/simulator/partner.js +718 -0
  344. package/dist/simulator/partner.js.map +1 -0
  345. package/dist/simulator/validation.cjs +772 -157
  346. package/dist/simulator/validation.cjs.map +1 -1
  347. package/dist/simulator/validation.d.cts +120 -21
  348. package/dist/simulator/validation.d.cts.map +1 -1
  349. package/dist/simulator/validation.d.ts +120 -21
  350. package/dist/simulator/validation.d.ts.map +1 -1
  351. package/dist/simulator/validation.js +755 -167
  352. package/dist/simulator/validation.js.map +1 -1
  353. package/dist/streams/collect.cjs +74 -24
  354. package/dist/streams/collect.cjs.map +1 -1
  355. package/dist/streams/collect.d.cts +14 -1
  356. package/dist/streams/collect.d.cts.map +1 -1
  357. package/dist/streams/collect.d.ts +14 -1
  358. package/dist/streams/collect.d.ts.map +1 -1
  359. package/dist/streams/collect.js +74 -25
  360. package/dist/streams/collect.js.map +1 -1
  361. package/dist/streams/file-source.cjs +287 -0
  362. package/dist/streams/file-source.cjs.map +1 -0
  363. package/dist/streams/file-source.d.cts +96 -0
  364. package/dist/streams/file-source.d.cts.map +1 -0
  365. package/dist/streams/file-source.d.ts +96 -0
  366. package/dist/streams/file-source.d.ts.map +1 -0
  367. package/dist/streams/file-source.js +286 -0
  368. package/dist/streams/file-source.js.map +1 -0
  369. package/dist/streams/hash.cjs +207 -115
  370. package/dist/streams/hash.cjs.map +1 -1
  371. package/dist/streams/hash.d.cts +5 -4
  372. package/dist/streams/hash.d.cts.map +1 -1
  373. package/dist/streams/hash.d.ts +5 -4
  374. package/dist/streams/hash.d.ts.map +1 -1
  375. package/dist/streams/hash.js +208 -95
  376. package/dist/streams/hash.js.map +1 -1
  377. package/dist/streams/index.cjs +12 -12
  378. package/dist/streams/index.d.cts +3 -3
  379. package/dist/streams/index.d.cts.map +1 -1
  380. package/dist/streams/index.d.ts +3 -3
  381. package/dist/streams/index.d.ts.map +1 -1
  382. package/dist/streams/index.js +3 -11
  383. package/dist/streams/progress.cjs +60 -46
  384. package/dist/streams/progress.cjs.map +1 -1
  385. package/dist/streams/progress.js +60 -46
  386. package/dist/streams/progress.js.map +1 -1
  387. package/dist/streams/source.cjs +317 -146
  388. package/dist/streams/source.cjs.map +1 -1
  389. package/dist/streams/source.d.cts +56 -18
  390. package/dist/streams/source.d.cts.map +1 -1
  391. package/dist/streams/source.d.ts +56 -18
  392. package/dist/streams/source.d.ts.map +1 -1
  393. package/dist/streams/source.js +313 -149
  394. package/dist/streams/source.js.map +1 -1
  395. package/dist/sync/actions/index.cjs +236 -184
  396. package/dist/sync/actions/index.cjs.map +1 -1
  397. package/dist/sync/actions/index.d.cts +29 -21
  398. package/dist/sync/actions/index.d.cts.map +1 -1
  399. package/dist/sync/actions/index.d.ts +29 -21
  400. package/dist/sync/actions/index.d.ts.map +1 -1
  401. package/dist/sync/actions/index.js +236 -190
  402. package/dist/sync/actions/index.js.map +1 -1
  403. package/dist/sync/b2-sha1-reader.cjs +152 -0
  404. package/dist/sync/b2-sha1-reader.cjs.map +1 -0
  405. package/dist/sync/b2-sha1-reader.d.cts +58 -0
  406. package/dist/sync/b2-sha1-reader.d.cts.map +1 -0
  407. package/dist/sync/b2-sha1-reader.d.ts +58 -0
  408. package/dist/sync/b2-sha1-reader.d.ts.map +1 -0
  409. package/dist/sync/b2-sha1-reader.js +149 -0
  410. package/dist/sync/b2-sha1-reader.js.map +1 -0
  411. package/dist/sync/download-staging.cjs +266 -0
  412. package/dist/sync/download-staging.cjs.map +1 -0
  413. package/dist/sync/download-staging.d.cts +55 -0
  414. package/dist/sync/download-staging.d.cts.map +1 -0
  415. package/dist/sync/download-staging.d.ts +55 -0
  416. package/dist/sync/download-staging.d.ts.map +1 -0
  417. package/dist/sync/download-staging.js +260 -0
  418. package/dist/sync/download-staging.js.map +1 -0
  419. package/dist/sync/filesystem-errors.cjs +32 -0
  420. package/dist/sync/filesystem-errors.cjs.map +1 -0
  421. package/dist/sync/filesystem-errors.d.cts +8 -0
  422. package/dist/sync/filesystem-errors.d.cts.map +1 -0
  423. package/dist/sync/filesystem-errors.d.ts +8 -0
  424. package/dist/sync/filesystem-errors.d.ts.map +1 -0
  425. package/dist/sync/filesystem-errors.js +32 -0
  426. package/dist/sync/filesystem-errors.js.map +1 -0
  427. package/dist/sync/filters.cjs +217 -0
  428. package/dist/sync/filters.cjs.map +1 -0
  429. package/dist/sync/filters.d.cts +51 -0
  430. package/dist/sync/filters.d.cts.map +1 -0
  431. package/dist/sync/filters.d.ts +51 -0
  432. package/dist/sync/filters.d.ts.map +1 -0
  433. package/dist/sync/filters.js +213 -0
  434. package/dist/sync/filters.js.map +1 -0
  435. package/dist/sync/index.cjs +39 -22
  436. package/dist/sync/index.d.cts +14 -9
  437. package/dist/sync/index.d.cts.map +1 -1
  438. package/dist/sync/index.d.ts +14 -9
  439. package/dist/sync/index.d.ts.map +1 -1
  440. package/dist/sync/index.js +9 -20
  441. package/dist/sync/local-file-identity.cjs +61 -0
  442. package/dist/sync/local-file-identity.cjs.map +1 -0
  443. package/dist/sync/local-file-identity.d.cts +37 -0
  444. package/dist/sync/local-file-identity.d.cts.map +1 -0
  445. package/dist/sync/local-file-identity.d.ts +37 -0
  446. package/dist/sync/local-file-identity.d.ts.map +1 -0
  447. package/dist/sync/local-file-identity.js +60 -0
  448. package/dist/sync/local-file-identity.js.map +1 -0
  449. package/dist/sync/local-file-io.cjs +369 -0
  450. package/dist/sync/local-file-io.cjs.map +1 -0
  451. package/dist/sync/local-file-io.d.cts +76 -0
  452. package/dist/sync/local-file-io.d.cts.map +1 -0
  453. package/dist/sync/local-file-io.d.ts +76 -0
  454. package/dist/sync/local-file-io.d.ts.map +1 -0
  455. package/dist/sync/local-file-io.js +365 -0
  456. package/dist/sync/local-file-io.js.map +1 -0
  457. package/dist/sync/local-filesystem-root.cjs +27 -0
  458. package/dist/sync/local-filesystem-root.cjs.map +1 -0
  459. package/dist/sync/local-filesystem-root.d.cts +18 -0
  460. package/dist/sync/local-filesystem-root.d.cts.map +1 -0
  461. package/dist/sync/local-filesystem-root.d.ts +18 -0
  462. package/dist/sync/local-filesystem-root.d.ts.map +1 -0
  463. package/dist/sync/local-filesystem-root.js +26 -0
  464. package/dist/sync/local-filesystem-root.js.map +1 -0
  465. package/dist/sync/local-sha1.cjs +110 -0
  466. package/dist/sync/local-sha1.cjs.map +1 -0
  467. package/dist/sync/local-sha1.d.cts +31 -0
  468. package/dist/sync/local-sha1.d.cts.map +1 -0
  469. package/dist/sync/local-sha1.d.ts +31 -0
  470. package/dist/sync/local-sha1.d.ts.map +1 -0
  471. package/dist/sync/local-sha1.js +109 -0
  472. package/dist/sync/local-sha1.js.map +1 -0
  473. package/dist/sync/pairing.cjs +118 -29
  474. package/dist/sync/pairing.cjs.map +1 -1
  475. package/dist/sync/pairing.d.cts +7 -2
  476. package/dist/sync/pairing.d.cts.map +1 -1
  477. package/dist/sync/pairing.d.ts +7 -2
  478. package/dist/sync/pairing.d.ts.map +1 -1
  479. package/dist/sync/pairing.js +120 -31
  480. package/dist/sync/pairing.js.map +1 -1
  481. package/dist/sync/path-order.cjs +30 -0
  482. package/dist/sync/path-order.cjs.map +1 -0
  483. package/dist/sync/path-order.d.cts +28 -0
  484. package/dist/sync/path-order.d.cts.map +1 -0
  485. package/dist/sync/path-order.d.ts +28 -0
  486. package/dist/sync/path-order.d.ts.map +1 -0
  487. package/dist/sync/path-order.js +29 -0
  488. package/dist/sync/path-order.js.map +1 -0
  489. package/dist/sync/path-safety.cjs +111 -0
  490. package/dist/sync/path-safety.cjs.map +1 -0
  491. package/dist/sync/path-safety.d.cts +78 -0
  492. package/dist/sync/path-safety.d.cts.map +1 -0
  493. package/dist/sync/path-safety.d.ts +78 -0
  494. package/dist/sync/path-safety.d.ts.map +1 -0
  495. package/dist/sync/path-safety.js +105 -0
  496. package/dist/sync/path-safety.js.map +1 -0
  497. package/dist/sync/paths.d.cts +19 -0
  498. package/dist/sync/paths.d.cts.map +1 -0
  499. package/dist/sync/paths.d.ts +19 -0
  500. package/dist/sync/paths.d.ts.map +1 -0
  501. package/dist/sync/policies/compare.cjs +391 -11
  502. package/dist/sync/policies/compare.cjs.map +1 -1
  503. package/dist/sync/policies/compare.d.cts +100 -2
  504. package/dist/sync/policies/compare.d.cts.map +1 -1
  505. package/dist/sync/policies/compare.d.ts +100 -2
  506. package/dist/sync/policies/compare.d.ts.map +1 -1
  507. package/dist/sync/policies/compare.js +389 -13
  508. package/dist/sync/policies/compare.js.map +1 -1
  509. package/dist/sync/policies/index.cjs +70 -65
  510. package/dist/sync/policies/index.cjs.map +1 -1
  511. package/dist/sync/policies/index.d.cts +35 -6
  512. package/dist/sync/policies/index.d.cts.map +1 -1
  513. package/dist/sync/policies/index.d.ts +35 -6
  514. package/dist/sync/policies/index.d.ts.map +1 -1
  515. package/dist/sync/policies/index.js +70 -65
  516. package/dist/sync/policies/index.js.map +1 -1
  517. package/dist/sync/prefix.cjs +96 -0
  518. package/dist/sync/prefix.cjs.map +1 -0
  519. package/dist/sync/prefix.d.cts +55 -0
  520. package/dist/sync/prefix.d.cts.map +1 -0
  521. package/dist/sync/prefix.d.ts +55 -0
  522. package/dist/sync/prefix.d.ts.map +1 -0
  523. package/dist/sync/prefix.js +92 -0
  524. package/dist/sync/prefix.js.map +1 -0
  525. package/dist/sync/regexp-safety.cjs +192 -0
  526. package/dist/sync/regexp-safety.cjs.map +1 -0
  527. package/dist/sync/regexp-safety.d.cts +29 -0
  528. package/dist/sync/regexp-safety.d.cts.map +1 -0
  529. package/dist/sync/regexp-safety.d.ts +29 -0
  530. package/dist/sync/regexp-safety.d.ts.map +1 -0
  531. package/dist/sync/regexp-safety.js +190 -0
  532. package/dist/sync/regexp-safety.js.map +1 -0
  533. package/dist/sync/scan-events.cjs +33 -0
  534. package/dist/sync/scan-events.cjs.map +1 -0
  535. package/dist/sync/scan-events.d.cts +17 -0
  536. package/dist/sync/scan-events.d.cts.map +1 -0
  537. package/dist/sync/scan-events.d.ts +17 -0
  538. package/dist/sync/scan-events.d.ts.map +1 -0
  539. package/dist/sync/scan-events.js +32 -0
  540. package/dist/sync/scan-events.js.map +1 -0
  541. package/dist/sync/scan-limit.cjs +33 -0
  542. package/dist/sync/scan-limit.cjs.map +1 -0
  543. package/dist/sync/scan-limit.d.cts +21 -0
  544. package/dist/sync/scan-limit.d.cts.map +1 -0
  545. package/dist/sync/scan-limit.d.ts +21 -0
  546. package/dist/sync/scan-limit.d.ts.map +1 -0
  547. package/dist/sync/scan-limit.js +31 -0
  548. package/dist/sync/scan-limit.js.map +1 -0
  549. package/dist/sync/scanners/b2.cjs +239 -55
  550. package/dist/sync/scanners/b2.cjs.map +1 -1
  551. package/dist/sync/scanners/b2.d.cts +26 -7
  552. package/dist/sync/scanners/b2.d.cts.map +1 -1
  553. package/dist/sync/scanners/b2.d.ts +26 -7
  554. package/dist/sync/scanners/b2.d.ts.map +1 -1
  555. package/dist/sync/scanners/b2.js +239 -55
  556. package/dist/sync/scanners/b2.js.map +1 -1
  557. package/dist/sync/scanners/local.cjs +215 -56
  558. package/dist/sync/scanners/local.cjs.map +1 -1
  559. package/dist/sync/scanners/local.d.cts +22 -7
  560. package/dist/sync/scanners/local.d.cts.map +1 -1
  561. package/dist/sync/scanners/local.d.ts +22 -7
  562. package/dist/sync/scanners/local.d.ts.map +1 -1
  563. package/dist/sync/scanners/local.js +216 -57
  564. package/dist/sync/scanners/local.js.map +1 -1
  565. package/dist/sync/sha1-metadata.cjs +94 -0
  566. package/dist/sync/sha1-metadata.cjs.map +1 -0
  567. package/dist/sync/sha1-metadata.d.cts +82 -0
  568. package/dist/sync/sha1-metadata.d.cts.map +1 -0
  569. package/dist/sync/sha1-metadata.d.ts +82 -0
  570. package/dist/sync/sha1-metadata.d.ts.map +1 -0
  571. package/dist/sync/sha1-metadata.js +89 -0
  572. package/dist/sync/sha1-metadata.js.map +1 -0
  573. package/dist/sync/sha1-options.cjs +23 -0
  574. package/dist/sync/sha1-options.cjs.map +1 -0
  575. package/dist/sync/sha1-options.d.cts +14 -0
  576. package/dist/sync/sha1-options.d.cts.map +1 -0
  577. package/dist/sync/sha1-options.d.ts +14 -0
  578. package/dist/sync/sha1-options.d.ts.map +1 -0
  579. package/dist/sync/sha1-options.js +21 -0
  580. package/dist/sync/sha1-options.js.map +1 -0
  581. package/dist/sync/synchronizer.cjs +783 -197
  582. package/dist/sync/synchronizer.cjs.map +1 -1
  583. package/dist/sync/synchronizer.d.cts +47 -1
  584. package/dist/sync/synchronizer.d.cts.map +1 -1
  585. package/dist/sync/synchronizer.d.ts +47 -1
  586. package/dist/sync/synchronizer.d.ts.map +1 -1
  587. package/dist/sync/synchronizer.js +780 -173
  588. package/dist/sync/synchronizer.js.map +1 -1
  589. package/dist/sync/types.d.cts +208 -16
  590. package/dist/sync/types.d.cts.map +1 -1
  591. package/dist/sync/types.d.ts +208 -16
  592. package/dist/sync/types.d.ts.map +1 -1
  593. package/dist/types/auth.cjs +80 -56
  594. package/dist/types/auth.cjs.map +1 -1
  595. package/dist/types/auth.d.cts +71 -9
  596. package/dist/types/auth.d.cts.map +1 -1
  597. package/dist/types/auth.d.ts +71 -9
  598. package/dist/types/auth.d.ts.map +1 -1
  599. package/dist/types/auth.js +81 -57
  600. package/dist/types/auth.js.map +1 -1
  601. package/dist/types/backup.d.cts +80 -0
  602. package/dist/types/backup.d.cts.map +1 -0
  603. package/dist/types/backup.d.ts +80 -0
  604. package/dist/types/backup.d.ts.map +1 -0
  605. package/dist/types/bucket.cjs +74 -38
  606. package/dist/types/bucket.cjs.map +1 -1
  607. package/dist/types/bucket.d.cts +4 -2
  608. package/dist/types/bucket.d.cts.map +1 -1
  609. package/dist/types/bucket.d.ts +4 -2
  610. package/dist/types/bucket.d.ts.map +1 -1
  611. package/dist/types/bucket.js +75 -41
  612. package/dist/types/bucket.js.map +1 -1
  613. package/dist/types/download.cjs +62 -0
  614. package/dist/types/download.cjs.map +1 -0
  615. package/dist/types/download.d.cts +98 -0
  616. package/dist/types/download.d.cts.map +1 -1
  617. package/dist/types/download.d.ts +98 -0
  618. package/dist/types/download.d.ts.map +1 -1
  619. package/dist/types/download.js +61 -0
  620. package/dist/types/download.js.map +1 -0
  621. package/dist/types/encryption.cjs +194 -328
  622. package/dist/types/encryption.cjs.map +1 -1
  623. package/dist/types/encryption.d.cts +48 -0
  624. package/dist/types/encryption.d.cts.map +1 -1
  625. package/dist/types/encryption.d.ts +48 -0
  626. package/dist/types/encryption.d.ts.map +1 -1
  627. package/dist/types/encryption.js +192 -311
  628. package/dist/types/encryption.js.map +1 -1
  629. package/dist/types/errors.cjs +56 -0
  630. package/dist/types/errors.cjs.map +1 -0
  631. package/dist/types/errors.d.cts +13 -4
  632. package/dist/types/errors.d.cts.map +1 -1
  633. package/dist/types/errors.d.ts +13 -4
  634. package/dist/types/errors.d.ts.map +1 -1
  635. package/dist/types/errors.js +56 -0
  636. package/dist/types/errors.js.map +1 -0
  637. package/dist/types/file.cjs +36 -19
  638. package/dist/types/file.cjs.map +1 -1
  639. package/dist/types/file.d.cts +17 -4
  640. package/dist/types/file.d.cts.map +1 -1
  641. package/dist/types/file.d.ts +17 -4
  642. package/dist/types/file.d.ts.map +1 -1
  643. package/dist/types/file.js +37 -21
  644. package/dist/types/file.js.map +1 -1
  645. package/dist/types/ids.cjs +83 -9
  646. package/dist/types/ids.cjs.map +1 -1
  647. package/dist/types/ids.d.cts +32 -0
  648. package/dist/types/ids.d.cts.map +1 -1
  649. package/dist/types/ids.d.ts +32 -0
  650. package/dist/types/ids.d.ts.map +1 -1
  651. package/dist/types/ids.js +82 -16
  652. package/dist/types/ids.js.map +1 -1
  653. package/dist/types/index.d.cts +18 -13
  654. package/dist/types/index.d.cts.map +1 -1
  655. package/dist/types/index.d.ts +18 -13
  656. package/dist/types/index.d.ts.map +1 -1
  657. package/dist/types/key.d.cts +44 -8
  658. package/dist/types/key.d.cts.map +1 -1
  659. package/dist/types/key.d.ts +44 -8
  660. package/dist/types/key.d.ts.map +1 -1
  661. package/dist/types/lock.cjs +33 -13
  662. package/dist/types/lock.cjs.map +1 -1
  663. package/dist/types/lock.d.cts +14 -0
  664. package/dist/types/lock.d.cts.map +1 -1
  665. package/dist/types/lock.d.ts +14 -0
  666. package/dist/types/lock.d.ts.map +1 -1
  667. package/dist/types/lock.js +34 -15
  668. package/dist/types/lock.js.map +1 -1
  669. package/dist/types/notifications.cjs +44 -22
  670. package/dist/types/notifications.cjs.map +1 -1
  671. package/dist/types/notifications.d.cts +5 -3
  672. package/dist/types/notifications.d.cts.map +1 -1
  673. package/dist/types/notifications.d.ts +5 -3
  674. package/dist/types/notifications.d.ts.map +1 -1
  675. package/dist/types/notifications.js +45 -23
  676. package/dist/types/notifications.js.map +1 -1
  677. package/dist/types/partner.cjs +32 -0
  678. package/dist/types/partner.cjs.map +1 -0
  679. package/dist/types/partner.d.cts +394 -0
  680. package/dist/types/partner.d.cts.map +1 -0
  681. package/dist/types/partner.d.ts +394 -0
  682. package/dist/types/partner.d.ts.map +1 -0
  683. package/dist/types/partner.js +29 -0
  684. package/dist/types/partner.js.map +1 -0
  685. package/dist/types/upload.d.cts +53 -6
  686. package/dist/types/upload.d.cts.map +1 -1
  687. package/dist/types/upload.d.ts +53 -6
  688. package/dist/types/upload.d.ts.map +1 -1
  689. package/dist/upload/abort-scope.cjs +46 -0
  690. package/dist/upload/abort-scope.cjs.map +1 -0
  691. package/dist/upload/abort-scope.d.cts +26 -0
  692. package/dist/upload/abort-scope.d.cts.map +1 -0
  693. package/dist/upload/abort-scope.d.ts +26 -0
  694. package/dist/upload/abort-scope.d.ts.map +1 -0
  695. package/dist/upload/abort-scope.js +45 -0
  696. package/dist/upload/abort-scope.js.map +1 -0
  697. package/dist/upload/cancel.cjs +183 -8
  698. package/dist/upload/cancel.cjs.map +1 -1
  699. package/dist/upload/cancel.d.cts +110 -2
  700. package/dist/upload/cancel.d.cts.map +1 -1
  701. package/dist/upload/cancel.d.ts +110 -2
  702. package/dist/upload/cancel.d.ts.map +1 -1
  703. package/dist/upload/cancel.js +178 -9
  704. package/dist/upload/cancel.js.map +1 -1
  705. package/dist/upload/concurrency.cjs +79 -52
  706. package/dist/upload/concurrency.cjs.map +1 -1
  707. package/dist/upload/concurrency.js +79 -53
  708. package/dist/upload/concurrency.js.map +1 -1
  709. package/dist/upload/finish.cjs +54 -0
  710. package/dist/upload/finish.cjs.map +1 -0
  711. package/dist/upload/finish.d.cts +26 -0
  712. package/dist/upload/finish.d.cts.map +1 -0
  713. package/dist/upload/finish.d.ts +26 -0
  714. package/dist/upload/finish.d.ts.map +1 -0
  715. package/dist/upload/finish.js +54 -0
  716. package/dist/upload/finish.js.map +1 -0
  717. package/dist/upload/large.cjs +305 -218
  718. package/dist/upload/large.cjs.map +1 -1
  719. package/dist/upload/large.d.cts +90 -9
  720. package/dist/upload/large.d.cts.map +1 -1
  721. package/dist/upload/large.d.ts +90 -9
  722. package/dist/upload/large.d.ts.map +1 -1
  723. package/dist/upload/large.js +305 -218
  724. package/dist/upload/large.js.map +1 -1
  725. package/dist/upload/options.cjs +28 -0
  726. package/dist/upload/options.cjs.map +1 -0
  727. package/dist/upload/options.d.cts +116 -0
  728. package/dist/upload/options.d.cts.map +1 -0
  729. package/dist/upload/options.d.ts +116 -0
  730. package/dist/upload/options.d.ts.map +1 -0
  731. package/dist/upload/options.js +27 -0
  732. package/dist/upload/options.js.map +1 -0
  733. package/dist/upload/resume.cjs +334 -33
  734. package/dist/upload/resume.cjs.map +1 -1
  735. package/dist/upload/resume.d.cts +84 -12
  736. package/dist/upload/resume.d.cts.map +1 -1
  737. package/dist/upload/resume.d.ts +84 -12
  738. package/dist/upload/resume.d.ts.map +1 -1
  739. package/dist/upload/resume.js +331 -33
  740. package/dist/upload/resume.js.map +1 -1
  741. package/dist/upload/retry.cjs +191 -0
  742. package/dist/upload/retry.cjs.map +1 -0
  743. package/dist/upload/retry.d.cts +127 -0
  744. package/dist/upload/retry.d.cts.map +1 -0
  745. package/dist/upload/retry.d.ts +127 -0
  746. package/dist/upload/retry.d.ts.map +1 -0
  747. package/dist/upload/retry.js +187 -0
  748. package/dist/upload/retry.js.map +1 -0
  749. package/dist/upload/single.cjs +69 -44
  750. package/dist/upload/single.cjs.map +1 -1
  751. package/dist/upload/single.d.cts +8 -1
  752. package/dist/upload/single.d.cts.map +1 -1
  753. package/dist/upload/single.d.ts +8 -1
  754. package/dist/upload/single.d.ts.map +1 -1
  755. package/dist/upload/single.js +69 -44
  756. package/dist/upload/single.js.map +1 -1
  757. package/dist/upload/stream.cjs +319 -193
  758. package/dist/upload/stream.cjs.map +1 -1
  759. package/dist/upload/stream.d.cts +9 -1
  760. package/dist/upload/stream.d.cts.map +1 -1
  761. package/dist/upload/stream.d.ts +9 -1
  762. package/dist/upload/stream.d.ts.map +1 -1
  763. package/dist/upload/stream.js +318 -192
  764. package/dist/upload/stream.js.map +1 -1
  765. package/dist/util/abort.cjs +114 -0
  766. package/dist/util/abort.cjs.map +1 -0
  767. package/dist/util/abort.d.cts +65 -0
  768. package/dist/util/abort.d.cts.map +1 -0
  769. package/dist/util/abort.d.ts +65 -0
  770. package/dist/util/abort.d.ts.map +1 -0
  771. package/dist/util/abort.js +109 -0
  772. package/dist/util/abort.js.map +1 -0
  773. package/dist/util/best-effort.cjs +42 -8
  774. package/dist/util/best-effort.cjs.map +1 -1
  775. package/dist/util/best-effort.d.cts +2 -1
  776. package/dist/util/best-effort.d.cts.map +1 -1
  777. package/dist/util/best-effort.d.ts +2 -1
  778. package/dist/util/best-effort.d.ts.map +1 -1
  779. package/dist/util/best-effort.js +43 -9
  780. package/dist/util/best-effort.js.map +1 -1
  781. package/dist/util/bytes.cjs +23 -0
  782. package/dist/util/bytes.cjs.map +1 -0
  783. package/dist/util/bytes.d.cts +15 -0
  784. package/dist/util/bytes.d.cts.map +1 -0
  785. package/dist/util/bytes.d.ts +15 -0
  786. package/dist/util/bytes.d.ts.map +1 -0
  787. package/dist/util/bytes.js +23 -0
  788. package/dist/util/bytes.js.map +1 -0
  789. package/dist/util/crypto.cjs +68 -0
  790. package/dist/util/crypto.cjs.map +1 -0
  791. package/dist/util/crypto.d.cts +26 -0
  792. package/dist/util/crypto.d.cts.map +1 -0
  793. package/dist/util/crypto.d.ts +26 -0
  794. package/dist/util/crypto.d.ts.map +1 -0
  795. package/dist/util/crypto.js +66 -0
  796. package/dist/util/crypto.js.map +1 -0
  797. package/dist/util/defaults.cjs +28 -9
  798. package/dist/util/defaults.cjs.map +1 -1
  799. package/dist/util/defaults.d.cts +2 -0
  800. package/dist/util/defaults.d.cts.map +1 -1
  801. package/dist/util/defaults.d.ts +2 -0
  802. package/dist/util/defaults.d.ts.map +1 -1
  803. package/dist/util/defaults.js +28 -11
  804. package/dist/util/defaults.js.map +1 -1
  805. package/dist/util/error-reason.cjs +41 -0
  806. package/dist/util/error-reason.cjs.map +1 -0
  807. package/dist/util/error-reason.d.cts +9 -0
  808. package/dist/util/error-reason.d.cts.map +1 -0
  809. package/dist/util/error-reason.d.ts +9 -0
  810. package/dist/util/error-reason.d.ts.map +1 -0
  811. package/dist/util/error-reason.js +41 -0
  812. package/dist/util/error-reason.js.map +1 -0
  813. package/dist/util/http.cjs +23 -0
  814. package/dist/util/http.cjs.map +1 -0
  815. package/dist/util/http.d.cts +13 -0
  816. package/dist/util/http.d.cts.map +1 -0
  817. package/dist/util/http.d.ts +13 -0
  818. package/dist/util/http.d.ts.map +1 -0
  819. package/dist/util/http.js +23 -0
  820. package/dist/util/http.js.map +1 -0
  821. package/dist/util/md5.cjs +211 -0
  822. package/dist/util/md5.cjs.map +1 -0
  823. package/dist/util/md5.d.cts +43 -0
  824. package/dist/util/md5.d.cts.map +1 -0
  825. package/dist/util/md5.d.ts +43 -0
  826. package/dist/util/md5.d.ts.map +1 -0
  827. package/dist/util/md5.js +209 -0
  828. package/dist/util/md5.js.map +1 -0
  829. package/dist/util/normalize.cjs +66 -7
  830. package/dist/util/normalize.cjs.map +1 -1
  831. package/dist/util/normalize.d.cts +7 -7
  832. package/dist/util/normalize.d.cts.map +1 -1
  833. package/dist/util/normalize.d.ts +7 -7
  834. package/dist/util/normalize.d.ts.map +1 -1
  835. package/dist/util/normalize.js +67 -10
  836. package/dist/util/normalize.js.map +1 -1
  837. package/dist/util/paginator.cjs +69 -14
  838. package/dist/util/paginator.cjs.map +1 -1
  839. package/dist/util/paginator.d.cts +3 -1
  840. package/dist/util/paginator.d.cts.map +1 -1
  841. package/dist/util/paginator.d.ts +3 -1
  842. package/dist/util/paginator.d.ts.map +1 -1
  843. package/dist/util/paginator.js +70 -16
  844. package/dist/util/paginator.js.map +1 -1
  845. package/dist/util/plan-ranges.cjs +47 -22
  846. package/dist/util/plan-ranges.cjs.map +1 -1
  847. package/dist/util/plan-ranges.js +48 -24
  848. package/dist/util/plan-ranges.js.map +1 -1
  849. package/dist/util/sha1.cjs +27 -0
  850. package/dist/util/sha1.cjs.map +1 -0
  851. package/dist/util/sha1.d.cts +17 -0
  852. package/dist/util/sha1.d.cts.map +1 -0
  853. package/dist/util/sha1.d.ts +17 -0
  854. package/dist/util/sha1.d.ts.map +1 -0
  855. package/dist/util/sha1.js +26 -0
  856. package/dist/util/sha1.js.map +1 -0
  857. package/dist/util/text-codec.cjs +29 -5
  858. package/dist/util/text-codec.cjs.map +1 -1
  859. package/dist/util/text-codec.js +30 -7
  860. package/dist/util/text-codec.js.map +1 -1
  861. package/dist/util/to-error.cjs +18 -4
  862. package/dist/util/to-error.cjs.map +1 -1
  863. package/dist/util/to-error.js +19 -5
  864. package/dist/util/to-error.js.map +1 -1
  865. package/dist/version.cjs +17 -5
  866. package/dist/version.cjs.map +1 -1
  867. package/dist/version.d.cts +3 -3
  868. package/dist/version.d.ts +3 -3
  869. package/dist/version.js +19 -6
  870. package/dist/version.js.map +1 -1
  871. package/package.json +45 -20
  872. package/dist/auth/index.cjs.map +0 -1
  873. package/dist/auth/index.js.map +0 -1
  874. package/dist/index.cjs.map +0 -1
  875. package/dist/index.js.map +0 -1
  876. package/dist/notifications/index.cjs.map +0 -1
  877. package/dist/notifications/index.js.map +0 -1
  878. package/dist/package.json.cjs +0 -9
  879. package/dist/package.json.cjs.map +0 -1
  880. package/dist/package.json.js +0 -9
  881. package/dist/package.json.js.map +0 -1
  882. package/dist/streams/index.cjs.map +0 -1
  883. package/dist/streams/index.js.map +0 -1
  884. package/dist/sync/index.cjs.map +0 -1
  885. package/dist/sync/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"pairing.js","sources":["../../src/sync/pairing.ts"],"sourcesContent":["import type { SyncFolder, SyncPath } from './types.ts'\n\n/** A paired tuple of source and destination files. Either side may be null if the file is absent. */\nexport type SyncPair = readonly [SyncPath | null, SyncPath | null]\n\n/**\n * Merge-joins two sorted folder scans by relative path, yielding paired tuples.\n * Files present only in source yield `[source, null]`, only in dest yield `[null, dest]`,\n * and files in both yield `[source, dest]`.\n *\n * @param source - The source folder to scan.\n * @param dest - The destination folder to scan.\n */\nexport async function* zipFolders(source: SyncFolder, dest: SyncFolder): AsyncGenerator<SyncPair> {\n const sourceIter = source.scan()[Symbol.asyncIterator]()\n const destIter = dest.scan()[Symbol.asyncIterator]()\n\n let sourceResult = await sourceIter.next()\n let destResult = await destIter.next()\n\n while (!sourceResult.done || !destResult.done) {\n const s = sourceResult.done ? null : sourceResult.value\n const d = destResult.done ? null : destResult.value\n\n if (s === null) {\n yield [null, d]\n destResult = await destIter.next()\n } else if (d === null) {\n yield [s, null]\n sourceResult = await sourceIter.next()\n } else if (s.relativePath < d.relativePath) {\n yield [s, null]\n sourceResult = await sourceIter.next()\n } else if (d.relativePath < s.relativePath) {\n yield [null, d]\n destResult = await destIter.next()\n } else {\n yield [s, d]\n sourceResult = await sourceIter.next()\n destResult = await destIter.next()\n }\n }\n}\n"],"names":[],"mappings":"AAaA,gBAAuB,WAAW,QAAoB,MAA4C;AAChG,QAAM,aAAa,OAAO,KAAA,EAAO,OAAO,aAAa,EAAA;AACrD,QAAM,WAAW,KAAK,KAAA,EAAO,OAAO,aAAa,EAAA;AAEjD,MAAI,eAAe,MAAM,WAAW,KAAA;AACpC,MAAI,aAAa,MAAM,SAAS,KAAA;AAEhC,SAAO,CAAC,aAAa,QAAQ,CAAC,WAAW,MAAM;AAC7C,UAAM,IAAI,aAAa,OAAO,OAAO,aAAa;AAClD,UAAM,IAAI,WAAW,OAAO,OAAO,WAAW;AAE9C,QAAI,MAAM,MAAM;AACd,YAAM,CAAC,MAAM,CAAC;AACd,mBAAa,MAAM,SAAS,KAAA;AAAA,IAC9B,WAAW,MAAM,MAAM;AACrB,YAAM,CAAC,GAAG,IAAI;AACd,qBAAe,MAAM,WAAW,KAAA;AAAA,IAClC,WAAW,EAAE,eAAe,EAAE,cAAc;AAC1C,YAAM,CAAC,GAAG,IAAI;AACd,qBAAe,MAAM,WAAW,KAAA;AAAA,IAClC,WAAW,EAAE,eAAe,EAAE,cAAc;AAC1C,YAAM,CAAC,MAAM,CAAC;AACd,mBAAa,MAAM,SAAS,KAAA;AAAA,IAC9B,OAAO;AACL,YAAM,CAAC,GAAG,CAAC;AACX,qBAAe,MAAM,WAAW,KAAA;AAChC,mBAAa,MAAM,SAAS,KAAA;AAAA,IAC9B;AAAA,EACF;AACF;"}
1
+ {"version":3,"file":"pairing.js","names":[],"sources":["../../src/sync/pairing.ts"],"sourcesContent":["import { filterSyncPaths } from './filters.ts'\nimport { compareSyncRelativePaths } from './path-order.ts'\nimport { validateSyncFilters } from './regexp-safety.ts'\nimport { assertScanEntryLimit, scanEntryLimit } from './scan-limit.ts'\nimport type {\n SyncFilterPattern,\n SyncFolder,\n SyncPath,\n SyncScanOptions,\n SyncSkipEvent,\n} from './types.ts'\n\n/** A paired tuple of source and destination files. Either side may be null if the file is absent. */\nexport type SyncPair = readonly [SyncPath | null, SyncPath | null]\n\n/**\n * Merge-joins two sorted folder scans by relative path, yielding paired tuples.\n * Files present only in source yield `[source, null]`, only in dest yield `[null, dest]`,\n * and files in both yield `[source, dest]`.\n *\n * @param source - The source folder to scan.\n * @param dest - The destination folder to scan.\n * @param options - Optional scan controls and filters shared by both folders.\n * @param scanCallbacks - Optional internal source/destination skip callbacks.\n */\nexport async function* zipFolders(\n source: SyncFolder,\n dest: SyncFolder,\n options: SyncScanOptions = {},\n scanCallbacks: {\n readonly onSourceSkip?: (event: SyncSkipEvent) => void\n readonly onDestSkip?: (event: SyncSkipEvent) => void\n } = {},\n): AsyncGenerator<SyncPair> {\n validateSyncFilters(options)\n const sourceOptions = scanOptionsSnapshot(options, scanCallbacks.onSourceSkip)\n const destOptions = scanOptionsSnapshot(options, scanCallbacks.onDestSkip)\n const sourceIter = scanWithFilters(source, sourceOptions)[Symbol.asyncIterator]()\n const destIter = scanWithFilters(dest, destOptions)[Symbol.asyncIterator]()\n let sourceDone = false\n let destDone = false\n\n try {\n let [sourceResult, destResult] = await Promise.all([sourceIter.next(), destIter.next()])\n sourceDone = sourceResult.done === true\n destDone = destResult.done === true\n\n while (!sourceResult.done || !destResult.done) {\n const s = sourceResult.done ? null : sourceResult.value\n const d = destResult.done ? null : destResult.value\n\n if (s === null) {\n yield [null, d]\n destResult = await destIter.next()\n destDone = destResult.done === true\n } else if (d === null) {\n yield [s, null]\n sourceResult = await sourceIter.next()\n sourceDone = sourceResult.done === true\n } else {\n const comparison = compareSyncRelativePaths(s.relativePath, d.relativePath)\n if (comparison < 0) {\n yield [s, null]\n sourceResult = await sourceIter.next()\n sourceDone = sourceResult.done === true\n } else if (comparison > 0) {\n yield [null, d]\n destResult = await destIter.next()\n destDone = destResult.done === true\n } else {\n yield [s, d]\n sourceResult = await sourceIter.next()\n destResult = await destIter.next()\n sourceDone = sourceResult.done === true\n destDone = destResult.done === true\n }\n }\n }\n } finally {\n await closeScanIterator(sourceIter, sourceDone)\n await closeScanIterator(destIter, destDone)\n }\n}\n\nasync function closeScanIterator(\n iterator: AsyncIterator<SyncPath>,\n alreadyDone: boolean,\n): Promise<void> {\n if (alreadyDone || iterator.return === undefined) return\n try {\n await iterator.return()\n } catch {\n // Best-effort scanner cleanup should not mask the original stop reason.\n }\n}\n\nfunction scanWithFilters(\n folder: SyncFolder,\n options: { readonly scanner: SyncScanOptions; readonly sdk: SyncScanOptions },\n): AsyncIterable<SyncPath> {\n const scanned = filterSyncPaths(folder.scan(options.scanner), options.sdk)\n if (folder.appliesScanSorting === true) return limitSyncPaths(scanned, options.sdk)\n return sortSyncPaths(scanned, options.sdk)\n}\n\nasync function* limitSyncPaths(\n paths: AsyncIterable<SyncPath>,\n filters: SyncScanOptions | undefined,\n): AsyncGenerator<SyncPath> {\n const maxScanEntries = scanEntryLimit(filters)\n let count = 0\n for await (const path of paths) {\n count++\n assertScanEntryLimit(count, maxScanEntries)\n yield path\n }\n}\n\nasync function* sortSyncPaths(\n paths: AsyncIterable<SyncPath>,\n filters: SyncScanOptions | undefined,\n): AsyncGenerator<SyncPath> {\n const maxScanEntries = scanEntryLimit(filters)\n const collected: SyncPath[] = []\n for await (const path of paths) {\n collected.push(path)\n assertScanEntryLimit(collected.length, maxScanEntries)\n }\n collected.sort((a, b) => compareSyncRelativePaths(a.relativePath, b.relativePath))\n yield* collected\n}\n\nfunction scanOptionsSnapshot(\n options: SyncScanOptions,\n onSkip: ((event: SyncSkipEvent) => void) | undefined,\n): { readonly scanner: SyncScanOptions; readonly sdk: SyncScanOptions } {\n const onSkipSnapshot =\n options.onSkip === undefined && onSkip === undefined\n ? undefined\n : (event: SyncSkipEvent): void => {\n options.onSkip?.(event)\n onSkip?.(event)\n }\n\n return {\n scanner: frozenScanOptions(\n options,\n frozenPatterns(options.include),\n frozenPatterns(options.exclude),\n onSkipSnapshot,\n ),\n sdk: frozenScanOptions(\n options,\n frozenPatterns(options.include),\n frozenPatterns(options.exclude),\n onSkipSnapshot,\n ),\n }\n}\n\nfunction frozenScanOptions(\n options: SyncScanOptions,\n include: readonly SyncFilterPattern[] | undefined,\n exclude: readonly SyncFilterPattern[] | undefined,\n onSkip: ((event: SyncSkipEvent) => void) | undefined,\n): SyncScanOptions {\n return Object.freeze({\n ...(include !== undefined ? { include } : {}),\n ...(exclude !== undefined ? { exclude } : {}),\n ...(options.signal !== undefined ? { signal: options.signal } : {}),\n ...(options.onError !== undefined ? { onError: options.onError } : {}),\n ...(onSkip !== undefined ? { onSkip } : {}),\n ...(options.requireLocalSafePaths !== undefined\n ? { requireLocalSafePaths: options.requireLocalSafePaths }\n : {}),\n ...(options.maxScanEntries !== undefined ? { maxScanEntries: options.maxScanEntries } : {}),\n })\n}\n\nfunction frozenPatterns(\n patterns: readonly SyncFilterPattern[] | undefined,\n): readonly SyncFilterPattern[] | undefined {\n return patterns === undefined ? undefined : Object.freeze([...patterns])\n}\n"],"mappings":";;;;;;;;;;;;;;;AAyBA,gBAAuB,WACrB,QACA,MACA,UAA2B,CAAC,GAC5B,gBAGI,CAAC,GACqB;CAC1B,oBAAoB,OAAO;CAC3B,MAAM,gBAAgB,oBAAoB,SAAS,cAAc,YAAY;CAC7E,MAAM,cAAc,oBAAoB,SAAS,cAAc,UAAU;CACzE,MAAM,aAAa,gBAAgB,QAAQ,aAAa,CAAC,CAAC,OAAO,cAAc,CAAC;CAChF,MAAM,WAAW,gBAAgB,MAAM,WAAW,CAAC,CAAC,OAAO,cAAc,CAAC;CAC1E,IAAI,aAAa;CACjB,IAAI,WAAW;CAEf,IAAI;EACF,IAAI,CAAC,cAAc,cAAc,MAAM,QAAQ,IAAI,CAAC,WAAW,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC;EACvF,aAAa,aAAa,SAAS;EACnC,WAAW,WAAW,SAAS;EAE/B,OAAO,CAAC,aAAa,QAAQ,CAAC,WAAW,MAAM;GAC7C,MAAM,IAAI,aAAa,OAAO,OAAO,aAAa;GAClD,MAAM,IAAI,WAAW,OAAO,OAAO,WAAW;GAE9C,IAAI,MAAM,MAAM;IACd,MAAM,CAAC,MAAM,CAAC;IACd,aAAa,MAAM,SAAS,KAAK;IACjC,WAAW,WAAW,SAAS;GACjC,OAAO,IAAI,MAAM,MAAM;IACrB,MAAM,CAAC,GAAG,IAAI;IACd,eAAe,MAAM,WAAW,KAAK;IACrC,aAAa,aAAa,SAAS;GACrC,OAAO;IACL,MAAM,aAAa,yBAAyB,EAAE,cAAc,EAAE,YAAY;IAC1E,IAAI,aAAa,GAAG;KAClB,MAAM,CAAC,GAAG,IAAI;KACd,eAAe,MAAM,WAAW,KAAK;KACrC,aAAa,aAAa,SAAS;IACrC,OAAO,IAAI,aAAa,GAAG;KACzB,MAAM,CAAC,MAAM,CAAC;KACd,aAAa,MAAM,SAAS,KAAK;KACjC,WAAW,WAAW,SAAS;IACjC,OAAO;KACL,MAAM,CAAC,GAAG,CAAC;KACX,eAAe,MAAM,WAAW,KAAK;KACrC,aAAa,MAAM,SAAS,KAAK;KACjC,aAAa,aAAa,SAAS;KACnC,WAAW,WAAW,SAAS;IACjC;GACF;EACF;CACF,UAAU;EACR,MAAM,kBAAkB,YAAY,UAAU;EAC9C,MAAM,kBAAkB,UAAU,QAAQ;CAC5C;AACF;AAEA,eAAe,kBACb,UACA,aACe;CACf,IAAI,eAAe,SAAS,WAAW,KAAA,GAAW;CAClD,IAAI;EACF,MAAM,SAAS,OAAO;CACxB,QAAQ,CAER;AACF;AAEA,SAAS,gBACP,QACA,SACyB;CACzB,MAAM,UAAU,gBAAgB,OAAO,KAAK,QAAQ,OAAO,GAAG,QAAQ,GAAG;CACzE,IAAI,OAAO,uBAAuB,MAAM,OAAO,eAAe,SAAS,QAAQ,GAAG;CAClF,OAAO,cAAc,SAAS,QAAQ,GAAG;AAC3C;AAEA,gBAAgB,eACd,OACA,SAC0B;CAC1B,MAAM,iBAAiB,eAAe,OAAO;CAC7C,IAAI,QAAQ;CACZ,WAAW,MAAM,QAAQ,OAAO;EAC9B;EACA,qBAAqB,OAAO,cAAc;EAC1C,MAAM;CACR;AACF;AAEA,gBAAgB,cACd,OACA,SAC0B;CAC1B,MAAM,iBAAiB,eAAe,OAAO;CAC7C,MAAM,YAAwB,CAAC;CAC/B,WAAW,MAAM,QAAQ,OAAO;EAC9B,UAAU,KAAK,IAAI;EACnB,qBAAqB,UAAU,QAAQ,cAAc;CACvD;CACA,UAAU,MAAM,GAAG,MAAM,yBAAyB,EAAE,cAAc,EAAE,YAAY,CAAC;CACjF,OAAO;AACT;AAEA,SAAS,oBACP,SACA,QACsE;CACtE,MAAM,iBACJ,QAAQ,WAAW,KAAA,KAAa,WAAW,KAAA,IACvC,KAAA,KACC,UAA+B;EAC9B,QAAQ,SAAS,KAAK;EACtB,SAAS,KAAK;CAChB;CAEN,OAAO;EACL,SAAS,kBACP,SACA,eAAe,QAAQ,OAAO,GAC9B,eAAe,QAAQ,OAAO,GAC9B,cACF;EACA,KAAK,kBACH,SACA,eAAe,QAAQ,OAAO,GAC9B,eAAe,QAAQ,OAAO,GAC9B,cACF;CACF;AACF;AAEA,SAAS,kBACP,SACA,SACA,SACA,QACiB;CACjB,OAAO,OAAO,OAAO;EACnB,GAAI,YAAY,KAAA,IAAY,EAAE,QAAQ,IAAI,CAAC;EAC3C,GAAI,YAAY,KAAA,IAAY,EAAE,QAAQ,IAAI,CAAC;EAC3C,GAAI,QAAQ,WAAW,KAAA,IAAY,EAAE,QAAQ,QAAQ,OAAO,IAAI,CAAC;EACjE,GAAI,QAAQ,YAAY,KAAA,IAAY,EAAE,SAAS,QAAQ,QAAQ,IAAI,CAAC;EACpE,GAAI,WAAW,KAAA,IAAY,EAAE,OAAO,IAAI,CAAC;EACzC,GAAI,QAAQ,0BAA0B,KAAA,IAClC,EAAE,uBAAuB,QAAQ,sBAAsB,IACvD,CAAC;EACL,GAAI,QAAQ,mBAAmB,KAAA,IAAY,EAAE,gBAAgB,QAAQ,eAAe,IAAI,CAAC;CAC3F,CAAC;AACH;AAEA,SAAS,eACP,UAC0C;CAC1C,OAAO,aAAa,KAAA,IAAY,KAAA,IAAY,OAAO,OAAO,CAAC,GAAG,QAAQ,CAAC;AACzE"}
@@ -0,0 +1,30 @@
1
+ //#region src/sync/path-order.ts
2
+ /**
3
+ * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.
4
+ *
5
+ * @param left - First sync-relative path.
6
+ * @param right - Second sync-relative path.
7
+ *
8
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
9
+ */
10
+ function compareSyncRelativePaths(left, right) {
11
+ return compareCodeUnits(left, right);
12
+ }
13
+ /**
14
+ * Compares strings by JavaScript code-unit order.
15
+ *
16
+ * @param left - First string.
17
+ * @param right - Second string.
18
+ *
19
+ * @returns Negative, zero, or positive using code-unit order.
20
+ */
21
+ function compareCodeUnits(left, right) {
22
+ if (left < right) return -1;
23
+ if (left > right) return 1;
24
+ return 0;
25
+ }
26
+ //#endregion
27
+ exports.compareCodeUnits = compareCodeUnits;
28
+ exports.compareSyncRelativePaths = compareSyncRelativePaths;
29
+
30
+ //# sourceMappingURL=path-order.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-order.cjs","names":[],"sources":["../../src/sync/path-order.ts"],"sourcesContent":["/**\n * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.\n *\n * @param left - First sync-relative path.\n * @param right - Second sync-relative path.\n *\n * @returns Negative, zero, or positive using JavaScript code-unit order.\n */\nexport function compareSyncRelativePaths(left: string, right: string): number {\n return compareCodeUnits(left, right)\n}\n\n/**\n * Backwards-compatible alias for the SDK scan ordering.\n *\n * @param a - First sync-relative path.\n * @param b - Second sync-relative path.\n *\n * @returns Negative, zero, or positive using JavaScript code-unit order.\n */\nexport function compareSyncPathNames(a: string, b: string): number {\n return compareSyncRelativePaths(a, b)\n}\n\n/**\n * Compares strings by JavaScript code-unit order.\n *\n * @param left - First string.\n * @param right - Second string.\n *\n * @returns Negative, zero, or positive using code-unit order.\n */\nexport function compareCodeUnits(left: string, right: string): number {\n if (left < right) return -1\n if (left > right) return 1\n return 0\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,yBAAyB,MAAc,OAAuB;CAC5E,OAAO,iBAAiB,MAAM,KAAK;AACrC;;;;;;;;;AAsBA,SAAgB,iBAAiB,MAAc,OAAuB;CACpE,IAAI,OAAO,OAAO,OAAO;CACzB,IAAI,OAAO,OAAO,OAAO;CACzB,OAAO;AACT"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.
3
+ *
4
+ * @param left - First sync-relative path.
5
+ * @param right - Second sync-relative path.
6
+ *
7
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
8
+ */
9
+ export declare function compareSyncRelativePaths(left: string, right: string): number;
10
+ /**
11
+ * Backwards-compatible alias for the SDK scan ordering.
12
+ *
13
+ * @param a - First sync-relative path.
14
+ * @param b - Second sync-relative path.
15
+ *
16
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
17
+ */
18
+ export declare function compareSyncPathNames(a: string, b: string): number;
19
+ /**
20
+ * Compares strings by JavaScript code-unit order.
21
+ *
22
+ * @param left - First string.
23
+ * @param right - Second string.
24
+ *
25
+ * @returns Negative, zero, or positive using code-unit order.
26
+ */
27
+ export declare function compareCodeUnits(left: string, right: string): number;
28
+ //# sourceMappingURL=path-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-order.d.ts","sourceRoot":"","sources":["../../src/sync/path-order.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.
3
+ *
4
+ * @param left - First sync-relative path.
5
+ * @param right - Second sync-relative path.
6
+ *
7
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
8
+ */
9
+ export declare function compareSyncRelativePaths(left: string, right: string): number;
10
+ /**
11
+ * Backwards-compatible alias for the SDK scan ordering.
12
+ *
13
+ * @param a - First sync-relative path.
14
+ * @param b - Second sync-relative path.
15
+ *
16
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
17
+ */
18
+ export declare function compareSyncPathNames(a: string, b: string): number;
19
+ /**
20
+ * Compares strings by JavaScript code-unit order.
21
+ *
22
+ * @param left - First string.
23
+ * @param right - Second string.
24
+ *
25
+ * @returns Negative, zero, or positive using code-unit order.
26
+ */
27
+ export declare function compareCodeUnits(left: string, right: string): number;
28
+ //# sourceMappingURL=path-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-order.d.ts","sourceRoot":"","sources":["../../src/sync/path-order.js"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE"}
@@ -0,0 +1,29 @@
1
+ //#region src/sync/path-order.ts
2
+ /**
3
+ * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.
4
+ *
5
+ * @param left - First sync-relative path.
6
+ * @param right - Second sync-relative path.
7
+ *
8
+ * @returns Negative, zero, or positive using JavaScript code-unit order.
9
+ */
10
+ function compareSyncRelativePaths(left, right) {
11
+ return compareCodeUnits(left, right);
12
+ }
13
+ /**
14
+ * Compares strings by JavaScript code-unit order.
15
+ *
16
+ * @param left - First string.
17
+ * @param right - Second string.
18
+ *
19
+ * @returns Negative, zero, or positive using code-unit order.
20
+ */
21
+ function compareCodeUnits(left, right) {
22
+ if (left < right) return -1;
23
+ if (left > right) return 1;
24
+ return 0;
25
+ }
26
+ //#endregion
27
+ export { compareCodeUnits, compareSyncRelativePaths };
28
+
29
+ //# sourceMappingURL=path-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-order.js","names":[],"sources":["../../src/sync/path-order.ts"],"sourcesContent":["/**\n * Compares sync-relative paths using the same code-unit order everywhere sorted scans are consumed.\n *\n * @param left - First sync-relative path.\n * @param right - Second sync-relative path.\n *\n * @returns Negative, zero, or positive using JavaScript code-unit order.\n */\nexport function compareSyncRelativePaths(left: string, right: string): number {\n return compareCodeUnits(left, right)\n}\n\n/**\n * Backwards-compatible alias for the SDK scan ordering.\n *\n * @param a - First sync-relative path.\n * @param b - Second sync-relative path.\n *\n * @returns Negative, zero, or positive using JavaScript code-unit order.\n */\nexport function compareSyncPathNames(a: string, b: string): number {\n return compareSyncRelativePaths(a, b)\n}\n\n/**\n * Compares strings by JavaScript code-unit order.\n *\n * @param left - First string.\n * @param right - Second string.\n *\n * @returns Negative, zero, or positive using code-unit order.\n */\nexport function compareCodeUnits(left: string, right: string): number {\n if (left < right) return -1\n if (left > right) return 1\n return 0\n}\n"],"mappings":";;;;;;;;;AAQA,SAAgB,yBAAyB,MAAc,OAAuB;CAC5E,OAAO,iBAAiB,MAAM,KAAK;AACrC;;;;;;;;;AAsBA,SAAgB,iBAAiB,MAAc,OAAuB;CACpE,IAAI,OAAO,OAAO,OAAO;CACzB,IAAI,OAAO,OAAO,OAAO;CACzB,OAAO;AACT"}
@@ -0,0 +1,111 @@
1
+ //#region src/sync/path-safety.ts
2
+ var RESERVED_SYNC_TEMP_FILE_RE = /^\.b2sdk-[0-9a-f]{24}-[^/\\]+-[0-9a-f]{32}\.partial$/i;
3
+ var UUID_HEX_RE = /^[0-9a-f]{32}$/i;
4
+ /**
5
+ * Checks whether a basename is reserved for SDK-owned sync partial files.
6
+ * @param name - Basename to inspect.
7
+ *
8
+ * @returns Whether the basename matches the SDK reserved partial-file pattern.
9
+ *
10
+ * @internal
11
+ */
12
+ function isReservedSyncTempFileName(name) {
13
+ return RESERVED_SYNC_TEMP_FILE_RE.test(name);
14
+ }
15
+ /**
16
+ * Rejects sync paths whose basename is reserved for SDK-owned temporary files.
17
+ * @param relativePath - Sync-relative path using slash separators.
18
+ *
19
+ * @throws If any path segment uses the SDK's reserved temporary-file pattern.
20
+ *
21
+ * @internal
22
+ */
23
+ function assertSyncPathAllowed(relativePath) {
24
+ if (relativePath.split(/[\\/]+/).filter(Boolean).some((part) => isReservedSyncTempFileName(part))) throw new Error(`Sync path uses reserved SDK temporary-file name: ${relativePath}`);
25
+ }
26
+ /**
27
+ * Creates a download staging basename inside the SDK-reserved temp namespace.
28
+ * @param finalName - Final destination basename.
29
+ * @param uuid - UUID used to make the temp basename unique.
30
+ *
31
+ * @returns A basename that local and B2 scanners reject as SDK-owned temp data.
32
+ *
33
+ * @throws If the provided UUID cannot be normalized to 32 hex characters.
34
+ *
35
+ * @internal
36
+ */
37
+ function makeReservedSyncTempFileName(finalName, uuid) {
38
+ if (finalName.length === 0 || /[\\/]/.test(finalName)) throw new Error("invalid sync temporary-file basename");
39
+ const hex = uuid.replaceAll("-", "").toLowerCase();
40
+ if (!UUID_HEX_RE.test(hex)) throw new Error("invalid sync temporary-file nonce");
41
+ return `.b2sdk-${hex.slice(0, 24)}-${finalName}-${hex}.partial`;
42
+ }
43
+ /**
44
+ * Validates B2 relative names before they are materialized on a local filesystem.
45
+ *
46
+ * @param relPath - B2-style relative path.
47
+ *
48
+ * @returns Validated path segments.
49
+ *
50
+ * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.
51
+ *
52
+ * @internal
53
+ */
54
+ function safeRelativePathSegments(relPath) {
55
+ assertSyncPathAllowed(relPath);
56
+ if (relPath.length === 0 || relPath.includes("\0") || relPath.includes("\\") || relPath.startsWith("/") || /^[A-Za-z]:/.test(relPath)) throw new Error("unsafe local destination path");
57
+ const segments = relPath.split("/");
58
+ if (segments.some((segment) => segment.length === 0 || segment === "." || segment === ".." || segment.includes(":") || segment.endsWith(".") || segment.endsWith(" ") || WINDOWS_RESERVED_NAME.test(segment))) throw new Error("unsafe local destination path");
59
+ return segments;
60
+ }
61
+ var WINDOWS_RESERVED_NAME = /^(con|prn|aux|nul|conin\$|conout\$|com[0-9\u00b9\u00b2\u00b3]|lpt[0-9\u00b9\u00b2\u00b3])(?:\..*)?$/i;
62
+ /**
63
+ * Throws if {@link target} is outside {@link root} or names the root itself.
64
+ *
65
+ * @param root - Resolved filesystem root.
66
+ * @param target - Candidate path to validate.
67
+ * @param path - Node path module.
68
+ *
69
+ * @throws When the target is outside the root or equal to the root.
70
+ *
71
+ * @internal
72
+ */
73
+ function assertPathInsideRoot(root, target, path) {
74
+ const relative = path.relative(root, target);
75
+ if (relative.length === 0 || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) throw new Error("unsafe local destination path");
76
+ }
77
+ /**
78
+ * Returns the platform's no-follow open flag when available.
79
+ *
80
+ * @param constants - Node filesystem constants.
81
+ *
82
+ * @returns The `O_NOFOLLOW` bit or `0`.
83
+ *
84
+ * @internal
85
+ */
86
+ function noFollowFlag(constants) {
87
+ return constants.O_NOFOLLOW ?? 0;
88
+ }
89
+ /**
90
+ * Checks whether an unknown thrown value has a specific Node error code.
91
+ *
92
+ * @param err - Unknown thrown value.
93
+ * @param code - Expected Node error code.
94
+ *
95
+ * @returns True when the value exposes the expected code.
96
+ *
97
+ * @internal
98
+ */
99
+ function hasErrorCode(err, code) {
100
+ return err.code === code;
101
+ }
102
+ //#endregion
103
+ exports.assertPathInsideRoot = assertPathInsideRoot;
104
+ exports.assertSyncPathAllowed = assertSyncPathAllowed;
105
+ exports.hasErrorCode = hasErrorCode;
106
+ exports.isReservedSyncTempFileName = isReservedSyncTempFileName;
107
+ exports.makeReservedSyncTempFileName = makeReservedSyncTempFileName;
108
+ exports.noFollowFlag = noFollowFlag;
109
+ exports.safeRelativePathSegments = safeRelativePathSegments;
110
+
111
+ //# sourceMappingURL=path-safety.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-safety.cjs","names":[],"sources":["../../src/sync/path-safety.ts"],"sourcesContent":["const RESERVED_SYNC_TEMP_FILE_RE = /^\\.b2sdk-[0-9a-f]{24}-[^/\\\\]+-[0-9a-f]{32}\\.partial$/i\nconst UUID_HEX_RE = /^[0-9a-f]{32}$/i\n\n/**\n * Checks whether a basename is reserved for SDK-owned sync partial files.\n * @param name - Basename to inspect.\n *\n * @returns Whether the basename matches the SDK reserved partial-file pattern.\n *\n * @internal\n */\nexport function isReservedSyncTempFileName(name: string): boolean {\n return RESERVED_SYNC_TEMP_FILE_RE.test(name)\n}\n\n/**\n * Rejects sync paths whose basename is reserved for SDK-owned temporary files.\n * @param relativePath - Sync-relative path using slash separators.\n *\n * @throws If any path segment uses the SDK's reserved temporary-file pattern.\n *\n * @internal\n */\nexport function assertSyncPathAllowed(relativePath: string): void {\n const parts = relativePath.split(/[\\\\/]+/).filter(Boolean)\n if (parts.some((part) => isReservedSyncTempFileName(part))) {\n throw new Error(`Sync path uses reserved SDK temporary-file name: ${relativePath}`)\n }\n}\n\n/**\n * Creates a download staging basename inside the SDK-reserved temp namespace.\n * @param finalName - Final destination basename.\n * @param uuid - UUID used to make the temp basename unique.\n *\n * @returns A basename that local and B2 scanners reject as SDK-owned temp data.\n *\n * @throws If the provided UUID cannot be normalized to 32 hex characters.\n *\n * @internal\n */\nexport function makeReservedSyncTempFileName(finalName: string, uuid: string): string {\n if (finalName.length === 0 || /[\\\\/]/.test(finalName)) {\n throw new Error('invalid sync temporary-file basename')\n }\n const hex = uuid.replaceAll('-', '').toLowerCase()\n if (!UUID_HEX_RE.test(hex)) {\n throw new Error('invalid sync temporary-file nonce')\n }\n return `.b2sdk-${hex.slice(0, 24)}-${finalName}-${hex}.partial`\n}\n\n/**\n * Validates B2 relative names before they are materialized on a local filesystem.\n *\n * @param relPath - B2-style relative path.\n *\n * @returns Validated path segments.\n *\n * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.\n *\n * @internal\n */\nexport function safeRelativePathSegments(relPath: string): string[] {\n assertSyncPathAllowed(relPath)\n if (\n relPath.length === 0 ||\n relPath.includes('\\0') ||\n relPath.includes('\\\\') ||\n relPath.startsWith('/') ||\n /^[A-Za-z]:/.test(relPath)\n ) {\n throw new Error('unsafe local destination path')\n }\n\n const segments = relPath.split('/')\n if (\n segments.some(\n (segment) =>\n segment.length === 0 ||\n segment === '.' ||\n segment === '..' ||\n segment.includes(':') ||\n segment.endsWith('.') ||\n segment.endsWith(' ') ||\n WINDOWS_RESERVED_NAME.test(segment),\n )\n ) {\n throw new Error('unsafe local destination path')\n }\n return segments\n}\n\nconst WINDOWS_RESERVED_NAME =\n /^(con|prn|aux|nul|conin\\$|conout\\$|com[0-9\\u00b9\\u00b2\\u00b3]|lpt[0-9\\u00b9\\u00b2\\u00b3])(?:\\..*)?$/i\n\n/**\n * Throws if {@link target} is outside {@link root} or names the root itself.\n *\n * @param root - Resolved filesystem root.\n * @param target - Candidate path to validate.\n * @param path - Node path module.\n *\n * @throws When the target is outside the root or equal to the root.\n *\n * @internal\n */\nexport function assertPathInsideRoot(\n root: string,\n target: string,\n path: typeof import('node:path'),\n): void {\n const relative = path.relative(root, target)\n if (\n relative.length === 0 ||\n relative === '..' ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n ) {\n throw new Error('unsafe local destination path')\n }\n}\n\n/**\n * Returns the platform's no-follow open flag when available.\n *\n * @param constants - Node filesystem constants.\n *\n * @returns The `O_NOFOLLOW` bit or `0`.\n *\n * @internal\n */\nexport function noFollowFlag(constants: { readonly O_NOFOLLOW?: number }): number {\n return constants.O_NOFOLLOW ?? 0\n}\n\n/**\n * Checks whether an unknown thrown value has a specific Node error code.\n *\n * @param err - Unknown thrown value.\n * @param code - Expected Node error code.\n *\n * @returns True when the value exposes the expected code.\n *\n * @internal\n */\nexport function hasErrorCode(err: unknown, code: string): boolean {\n return (err as { readonly code?: unknown }).code === code\n}\n"],"mappings":";AAAA,IAAM,6BAA6B;AACnC,IAAM,cAAc;;;;;;;;;AAUpB,SAAgB,2BAA2B,MAAuB;CAChE,OAAO,2BAA2B,KAAK,IAAI;AAC7C;;;;;;;;;AAUA,SAAgB,sBAAsB,cAA4B;CAEhE,IADc,aAAa,MAAM,QAAQ,CAAC,CAAC,OAAO,OAC9C,CAAA,CAAM,MAAM,SAAS,2BAA2B,IAAI,CAAC,GACvD,MAAM,IAAI,MAAM,oDAAoD,cAAc;AAEtF;;;;;;;;;;;;AAaA,SAAgB,6BAA6B,WAAmB,MAAsB;CACpF,IAAI,UAAU,WAAW,KAAK,QAAQ,KAAK,SAAS,GAClD,MAAM,IAAI,MAAM,sCAAsC;CAExD,MAAM,MAAM,KAAK,WAAW,KAAK,EAAE,CAAC,CAAC,YAAY;CACjD,IAAI,CAAC,YAAY,KAAK,GAAG,GACvB,MAAM,IAAI,MAAM,mCAAmC;CAErD,OAAO,UAAU,IAAI,MAAM,GAAG,EAAE,EAAE,GAAG,UAAU,GAAG,IAAI;AACxD;;;;;;;;;;;;AAaA,SAAgB,yBAAyB,SAA2B;CAClE,sBAAsB,OAAO;CAC7B,IACE,QAAQ,WAAW,KACnB,QAAQ,SAAS,IAAI,KACrB,QAAQ,SAAS,IAAI,KACrB,QAAQ,WAAW,GAAG,KACtB,aAAa,KAAK,OAAO,GAEzB,MAAM,IAAI,MAAM,+BAA+B;CAGjD,MAAM,WAAW,QAAQ,MAAM,GAAG;CAClC,IACE,SAAS,MACN,YACC,QAAQ,WAAW,KACnB,YAAY,OACZ,YAAY,QACZ,QAAQ,SAAS,GAAG,KACpB,QAAQ,SAAS,GAAG,KACpB,QAAQ,SAAS,GAAG,KACpB,sBAAsB,KAAK,OAAO,CACtC,GAEA,MAAM,IAAI,MAAM,+BAA+B;CAEjD,OAAO;AACT;AAEA,IAAM,wBACJ;;;;;;;;;;;;AAaF,SAAgB,qBACd,MACA,QACA,MACM;CACN,MAAM,WAAW,KAAK,SAAS,MAAM,MAAM;CAC3C,IACE,SAAS,WAAW,KACpB,aAAa,QACb,SAAS,WAAW,KAAK,KAAK,KAAK,KACnC,KAAK,WAAW,QAAQ,GAExB,MAAM,IAAI,MAAM,+BAA+B;AAEnD;;;;;;;;;;AAWA,SAAgB,aAAa,WAAqD;CAChF,OAAO,UAAU,cAAc;AACjC;;;;;;;;;;;AAYA,SAAgB,aAAa,KAAc,MAAuB;CAChE,OAAQ,IAAoC,SAAS;AACvD"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Checks whether a basename is reserved for SDK-owned sync partial files.
3
+ * @param name - Basename to inspect.
4
+ *
5
+ * @returns Whether the basename matches the SDK reserved partial-file pattern.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare function isReservedSyncTempFileName(name: string): boolean;
10
+ /**
11
+ * Rejects sync paths whose basename is reserved for SDK-owned temporary files.
12
+ * @param relativePath - Sync-relative path using slash separators.
13
+ *
14
+ * @throws If any path segment uses the SDK's reserved temporary-file pattern.
15
+ *
16
+ * @internal
17
+ */
18
+ export declare function assertSyncPathAllowed(relativePath: string): void;
19
+ /**
20
+ * Creates a download staging basename inside the SDK-reserved temp namespace.
21
+ * @param finalName - Final destination basename.
22
+ * @param uuid - UUID used to make the temp basename unique.
23
+ *
24
+ * @returns A basename that local and B2 scanners reject as SDK-owned temp data.
25
+ *
26
+ * @throws If the provided UUID cannot be normalized to 32 hex characters.
27
+ *
28
+ * @internal
29
+ */
30
+ export declare function makeReservedSyncTempFileName(finalName: string, uuid: string): string;
31
+ /**
32
+ * Validates B2 relative names before they are materialized on a local filesystem.
33
+ *
34
+ * @param relPath - B2-style relative path.
35
+ *
36
+ * @returns Validated path segments.
37
+ *
38
+ * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.
39
+ *
40
+ * @internal
41
+ */
42
+ export declare function safeRelativePathSegments(relPath: string): string[];
43
+ /**
44
+ * Throws if {@link target} is outside {@link root} or names the root itself.
45
+ *
46
+ * @param root - Resolved filesystem root.
47
+ * @param target - Candidate path to validate.
48
+ * @param path - Node path module.
49
+ *
50
+ * @throws When the target is outside the root or equal to the root.
51
+ *
52
+ * @internal
53
+ */
54
+ export declare function assertPathInsideRoot(root: string, target: string, path: typeof import('node:path')): void;
55
+ /**
56
+ * Returns the platform's no-follow open flag when available.
57
+ *
58
+ * @param constants - Node filesystem constants.
59
+ *
60
+ * @returns The `O_NOFOLLOW` bit or `0`.
61
+ *
62
+ * @internal
63
+ */
64
+ export declare function noFollowFlag(constants: {
65
+ readonly O_NOFOLLOW?: number;
66
+ }): number;
67
+ /**
68
+ * Checks whether an unknown thrown value has a specific Node error code.
69
+ *
70
+ * @param err - Unknown thrown value.
71
+ * @param code - Expected Node error code.
72
+ *
73
+ * @returns True when the value exposes the expected code.
74
+ *
75
+ * @internal
76
+ */
77
+ export declare function hasErrorCode(err: unknown, code: string): boolean;
78
+ //# sourceMappingURL=path-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-safety.d.ts","sourceRoot":"","sources":["../../src/sync/path-safety.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA4BlE;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,WAAW,CAAC,GAC/B,IAAI,CAUN;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Checks whether a basename is reserved for SDK-owned sync partial files.
3
+ * @param name - Basename to inspect.
4
+ *
5
+ * @returns Whether the basename matches the SDK reserved partial-file pattern.
6
+ *
7
+ * @internal
8
+ */
9
+ export declare function isReservedSyncTempFileName(name: string): boolean;
10
+ /**
11
+ * Rejects sync paths whose basename is reserved for SDK-owned temporary files.
12
+ * @param relativePath - Sync-relative path using slash separators.
13
+ *
14
+ * @throws If any path segment uses the SDK's reserved temporary-file pattern.
15
+ *
16
+ * @internal
17
+ */
18
+ export declare function assertSyncPathAllowed(relativePath: string): void;
19
+ /**
20
+ * Creates a download staging basename inside the SDK-reserved temp namespace.
21
+ * @param finalName - Final destination basename.
22
+ * @param uuid - UUID used to make the temp basename unique.
23
+ *
24
+ * @returns A basename that local and B2 scanners reject as SDK-owned temp data.
25
+ *
26
+ * @throws If the provided UUID cannot be normalized to 32 hex characters.
27
+ *
28
+ * @internal
29
+ */
30
+ export declare function makeReservedSyncTempFileName(finalName: string, uuid: string): string;
31
+ /**
32
+ * Validates B2 relative names before they are materialized on a local filesystem.
33
+ *
34
+ * @param relPath - B2-style relative path.
35
+ *
36
+ * @returns Validated path segments.
37
+ *
38
+ * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.
39
+ *
40
+ * @internal
41
+ */
42
+ export declare function safeRelativePathSegments(relPath: string): string[];
43
+ /**
44
+ * Throws if {@link target} is outside {@link root} or names the root itself.
45
+ *
46
+ * @param root - Resolved filesystem root.
47
+ * @param target - Candidate path to validate.
48
+ * @param path - Node path module.
49
+ *
50
+ * @throws When the target is outside the root or equal to the root.
51
+ *
52
+ * @internal
53
+ */
54
+ export declare function assertPathInsideRoot(root: string, target: string, path: typeof import('node:path')): void;
55
+ /**
56
+ * Returns the platform's no-follow open flag when available.
57
+ *
58
+ * @param constants - Node filesystem constants.
59
+ *
60
+ * @returns The `O_NOFOLLOW` bit or `0`.
61
+ *
62
+ * @internal
63
+ */
64
+ export declare function noFollowFlag(constants: {
65
+ readonly O_NOFOLLOW?: number;
66
+ }): number;
67
+ /**
68
+ * Checks whether an unknown thrown value has a specific Node error code.
69
+ *
70
+ * @param err - Unknown thrown value.
71
+ * @param code - Expected Node error code.
72
+ *
73
+ * @returns True when the value exposes the expected code.
74
+ *
75
+ * @internal
76
+ */
77
+ export declare function hasErrorCode(err: unknown, code: string): boolean;
78
+ //# sourceMappingURL=path-safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-safety.d.ts","sourceRoot":"","sources":["../../src/sync/path-safety.js"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAKhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASpF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA4BlE;AAKD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,cAAc,WAAW,CAAC,GAC/B,IAAI,CAUN;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAEhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE"}
@@ -0,0 +1,105 @@
1
+ //#region src/sync/path-safety.ts
2
+ var RESERVED_SYNC_TEMP_FILE_RE = /^\.b2sdk-[0-9a-f]{24}-[^/\\]+-[0-9a-f]{32}\.partial$/i;
3
+ var UUID_HEX_RE = /^[0-9a-f]{32}$/i;
4
+ /**
5
+ * Checks whether a basename is reserved for SDK-owned sync partial files.
6
+ * @param name - Basename to inspect.
7
+ *
8
+ * @returns Whether the basename matches the SDK reserved partial-file pattern.
9
+ *
10
+ * @internal
11
+ */
12
+ function isReservedSyncTempFileName(name) {
13
+ return RESERVED_SYNC_TEMP_FILE_RE.test(name);
14
+ }
15
+ /**
16
+ * Rejects sync paths whose basename is reserved for SDK-owned temporary files.
17
+ * @param relativePath - Sync-relative path using slash separators.
18
+ *
19
+ * @throws If any path segment uses the SDK's reserved temporary-file pattern.
20
+ *
21
+ * @internal
22
+ */
23
+ function assertSyncPathAllowed(relativePath) {
24
+ if (relativePath.split(/[\\/]+/).filter(Boolean).some((part) => isReservedSyncTempFileName(part))) throw new Error(`Sync path uses reserved SDK temporary-file name: ${relativePath}`);
25
+ }
26
+ /**
27
+ * Creates a download staging basename inside the SDK-reserved temp namespace.
28
+ * @param finalName - Final destination basename.
29
+ * @param uuid - UUID used to make the temp basename unique.
30
+ *
31
+ * @returns A basename that local and B2 scanners reject as SDK-owned temp data.
32
+ *
33
+ * @throws If the provided UUID cannot be normalized to 32 hex characters.
34
+ *
35
+ * @internal
36
+ */
37
+ function makeReservedSyncTempFileName(finalName, uuid) {
38
+ if (finalName.length === 0 || /[\\/]/.test(finalName)) throw new Error("invalid sync temporary-file basename");
39
+ const hex = uuid.replaceAll("-", "").toLowerCase();
40
+ if (!UUID_HEX_RE.test(hex)) throw new Error("invalid sync temporary-file nonce");
41
+ return `.b2sdk-${hex.slice(0, 24)}-${finalName}-${hex}.partial`;
42
+ }
43
+ /**
44
+ * Validates B2 relative names before they are materialized on a local filesystem.
45
+ *
46
+ * @param relPath - B2-style relative path.
47
+ *
48
+ * @returns Validated path segments.
49
+ *
50
+ * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.
51
+ *
52
+ * @internal
53
+ */
54
+ function safeRelativePathSegments(relPath) {
55
+ assertSyncPathAllowed(relPath);
56
+ if (relPath.length === 0 || relPath.includes("\0") || relPath.includes("\\") || relPath.startsWith("/") || /^[A-Za-z]:/.test(relPath)) throw new Error("unsafe local destination path");
57
+ const segments = relPath.split("/");
58
+ if (segments.some((segment) => segment.length === 0 || segment === "." || segment === ".." || segment.includes(":") || segment.endsWith(".") || segment.endsWith(" ") || WINDOWS_RESERVED_NAME.test(segment))) throw new Error("unsafe local destination path");
59
+ return segments;
60
+ }
61
+ var WINDOWS_RESERVED_NAME = /^(con|prn|aux|nul|conin\$|conout\$|com[0-9\u00b9\u00b2\u00b3]|lpt[0-9\u00b9\u00b2\u00b3])(?:\..*)?$/i;
62
+ /**
63
+ * Throws if {@link target} is outside {@link root} or names the root itself.
64
+ *
65
+ * @param root - Resolved filesystem root.
66
+ * @param target - Candidate path to validate.
67
+ * @param path - Node path module.
68
+ *
69
+ * @throws When the target is outside the root or equal to the root.
70
+ *
71
+ * @internal
72
+ */
73
+ function assertPathInsideRoot(root, target, path) {
74
+ const relative = path.relative(root, target);
75
+ if (relative.length === 0 || relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative)) throw new Error("unsafe local destination path");
76
+ }
77
+ /**
78
+ * Returns the platform's no-follow open flag when available.
79
+ *
80
+ * @param constants - Node filesystem constants.
81
+ *
82
+ * @returns The `O_NOFOLLOW` bit or `0`.
83
+ *
84
+ * @internal
85
+ */
86
+ function noFollowFlag(constants) {
87
+ return constants.O_NOFOLLOW ?? 0;
88
+ }
89
+ /**
90
+ * Checks whether an unknown thrown value has a specific Node error code.
91
+ *
92
+ * @param err - Unknown thrown value.
93
+ * @param code - Expected Node error code.
94
+ *
95
+ * @returns True when the value exposes the expected code.
96
+ *
97
+ * @internal
98
+ */
99
+ function hasErrorCode(err, code) {
100
+ return err.code === code;
101
+ }
102
+ //#endregion
103
+ export { assertPathInsideRoot, assertSyncPathAllowed, hasErrorCode, isReservedSyncTempFileName, makeReservedSyncTempFileName, noFollowFlag, safeRelativePathSegments };
104
+
105
+ //# sourceMappingURL=path-safety.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path-safety.js","names":[],"sources":["../../src/sync/path-safety.ts"],"sourcesContent":["const RESERVED_SYNC_TEMP_FILE_RE = /^\\.b2sdk-[0-9a-f]{24}-[^/\\\\]+-[0-9a-f]{32}\\.partial$/i\nconst UUID_HEX_RE = /^[0-9a-f]{32}$/i\n\n/**\n * Checks whether a basename is reserved for SDK-owned sync partial files.\n * @param name - Basename to inspect.\n *\n * @returns Whether the basename matches the SDK reserved partial-file pattern.\n *\n * @internal\n */\nexport function isReservedSyncTempFileName(name: string): boolean {\n return RESERVED_SYNC_TEMP_FILE_RE.test(name)\n}\n\n/**\n * Rejects sync paths whose basename is reserved for SDK-owned temporary files.\n * @param relativePath - Sync-relative path using slash separators.\n *\n * @throws If any path segment uses the SDK's reserved temporary-file pattern.\n *\n * @internal\n */\nexport function assertSyncPathAllowed(relativePath: string): void {\n const parts = relativePath.split(/[\\\\/]+/).filter(Boolean)\n if (parts.some((part) => isReservedSyncTempFileName(part))) {\n throw new Error(`Sync path uses reserved SDK temporary-file name: ${relativePath}`)\n }\n}\n\n/**\n * Creates a download staging basename inside the SDK-reserved temp namespace.\n * @param finalName - Final destination basename.\n * @param uuid - UUID used to make the temp basename unique.\n *\n * @returns A basename that local and B2 scanners reject as SDK-owned temp data.\n *\n * @throws If the provided UUID cannot be normalized to 32 hex characters.\n *\n * @internal\n */\nexport function makeReservedSyncTempFileName(finalName: string, uuid: string): string {\n if (finalName.length === 0 || /[\\\\/]/.test(finalName)) {\n throw new Error('invalid sync temporary-file basename')\n }\n const hex = uuid.replaceAll('-', '').toLowerCase()\n if (!UUID_HEX_RE.test(hex)) {\n throw new Error('invalid sync temporary-file nonce')\n }\n return `.b2sdk-${hex.slice(0, 24)}-${finalName}-${hex}.partial`\n}\n\n/**\n * Validates B2 relative names before they are materialized on a local filesystem.\n *\n * @param relPath - B2-style relative path.\n *\n * @returns Validated path segments.\n *\n * @throws When the path is empty, absolute, platform-ambiguous, or contains traversal.\n *\n * @internal\n */\nexport function safeRelativePathSegments(relPath: string): string[] {\n assertSyncPathAllowed(relPath)\n if (\n relPath.length === 0 ||\n relPath.includes('\\0') ||\n relPath.includes('\\\\') ||\n relPath.startsWith('/') ||\n /^[A-Za-z]:/.test(relPath)\n ) {\n throw new Error('unsafe local destination path')\n }\n\n const segments = relPath.split('/')\n if (\n segments.some(\n (segment) =>\n segment.length === 0 ||\n segment === '.' ||\n segment === '..' ||\n segment.includes(':') ||\n segment.endsWith('.') ||\n segment.endsWith(' ') ||\n WINDOWS_RESERVED_NAME.test(segment),\n )\n ) {\n throw new Error('unsafe local destination path')\n }\n return segments\n}\n\nconst WINDOWS_RESERVED_NAME =\n /^(con|prn|aux|nul|conin\\$|conout\\$|com[0-9\\u00b9\\u00b2\\u00b3]|lpt[0-9\\u00b9\\u00b2\\u00b3])(?:\\..*)?$/i\n\n/**\n * Throws if {@link target} is outside {@link root} or names the root itself.\n *\n * @param root - Resolved filesystem root.\n * @param target - Candidate path to validate.\n * @param path - Node path module.\n *\n * @throws When the target is outside the root or equal to the root.\n *\n * @internal\n */\nexport function assertPathInsideRoot(\n root: string,\n target: string,\n path: typeof import('node:path'),\n): void {\n const relative = path.relative(root, target)\n if (\n relative.length === 0 ||\n relative === '..' ||\n relative.startsWith(`..${path.sep}`) ||\n path.isAbsolute(relative)\n ) {\n throw new Error('unsafe local destination path')\n }\n}\n\n/**\n * Returns the platform's no-follow open flag when available.\n *\n * @param constants - Node filesystem constants.\n *\n * @returns The `O_NOFOLLOW` bit or `0`.\n *\n * @internal\n */\nexport function noFollowFlag(constants: { readonly O_NOFOLLOW?: number }): number {\n return constants.O_NOFOLLOW ?? 0\n}\n\n/**\n * Checks whether an unknown thrown value has a specific Node error code.\n *\n * @param err - Unknown thrown value.\n * @param code - Expected Node error code.\n *\n * @returns True when the value exposes the expected code.\n *\n * @internal\n */\nexport function hasErrorCode(err: unknown, code: string): boolean {\n return (err as { readonly code?: unknown }).code === code\n}\n"],"mappings":";AAAA,IAAM,6BAA6B;AACnC,IAAM,cAAc;;;;;;;;;AAUpB,SAAgB,2BAA2B,MAAuB;CAChE,OAAO,2BAA2B,KAAK,IAAI;AAC7C;;;;;;;;;AAUA,SAAgB,sBAAsB,cAA4B;CAEhE,IADc,aAAa,MAAM,QAAQ,CAAC,CAAC,OAAO,OAC9C,CAAA,CAAM,MAAM,SAAS,2BAA2B,IAAI,CAAC,GACvD,MAAM,IAAI,MAAM,oDAAoD,cAAc;AAEtF;;;;;;;;;;;;AAaA,SAAgB,6BAA6B,WAAmB,MAAsB;CACpF,IAAI,UAAU,WAAW,KAAK,QAAQ,KAAK,SAAS,GAClD,MAAM,IAAI,MAAM,sCAAsC;CAExD,MAAM,MAAM,KAAK,WAAW,KAAK,EAAE,CAAC,CAAC,YAAY;CACjD,IAAI,CAAC,YAAY,KAAK,GAAG,GACvB,MAAM,IAAI,MAAM,mCAAmC;CAErD,OAAO,UAAU,IAAI,MAAM,GAAG,EAAE,EAAE,GAAG,UAAU,GAAG,IAAI;AACxD;;;;;;;;;;;;AAaA,SAAgB,yBAAyB,SAA2B;CAClE,sBAAsB,OAAO;CAC7B,IACE,QAAQ,WAAW,KACnB,QAAQ,SAAS,IAAI,KACrB,QAAQ,SAAS,IAAI,KACrB,QAAQ,WAAW,GAAG,KACtB,aAAa,KAAK,OAAO,GAEzB,MAAM,IAAI,MAAM,+BAA+B;CAGjD,MAAM,WAAW,QAAQ,MAAM,GAAG;CAClC,IACE,SAAS,MACN,YACC,QAAQ,WAAW,KACnB,YAAY,OACZ,YAAY,QACZ,QAAQ,SAAS,GAAG,KACpB,QAAQ,SAAS,GAAG,KACpB,QAAQ,SAAS,GAAG,KACpB,sBAAsB,KAAK,OAAO,CACtC,GAEA,MAAM,IAAI,MAAM,+BAA+B;CAEjD,OAAO;AACT;AAEA,IAAM,wBACJ;;;;;;;;;;;;AAaF,SAAgB,qBACd,MACA,QACA,MACM;CACN,MAAM,WAAW,KAAK,SAAS,MAAM,MAAM;CAC3C,IACE,SAAS,WAAW,KACpB,aAAa,QACb,SAAS,WAAW,KAAK,KAAK,KAAK,KACnC,KAAK,WAAW,QAAQ,GAExB,MAAM,IAAI,MAAM,+BAA+B;AAEnD;;;;;;;;;;AAWA,SAAgB,aAAa,WAAqD;CAChF,OAAO,UAAU,cAAc;AACjC;;;;;;;;;;;AAYA,SAAgB,aAAa,KAAc,MAAuB;CAChE,OAAQ,IAAoC,SAAS;AACvD"}
@@ -0,0 +1,19 @@
1
+ export { assertSyncPathAllowed } from './path-safety.js';
2
+ interface PathOperations {
3
+ isAbsolute(path: string): boolean;
4
+ resolve(...paths: string[]): string;
5
+ readonly sep: string;
6
+ }
7
+ /**
8
+ * Resolves a sync-relative path under a local root without allowing traversal
9
+ * or SDK-reserved temporary-file names.
10
+ * @param root - Absolute local sync root.
11
+ * @param relativePath - Sync-relative path to resolve.
12
+ * @param path - Node path operations for the local platform.
13
+ *
14
+ * @returns The absolute local filesystem path.
15
+ *
16
+ * @throws If the path is absolute, escapes the root, or uses a reserved basename.
17
+ */
18
+ export declare function resolveSafeLocalPath(root: string, relativePath: string, path: PathOperations): string;
19
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/sync/paths.js"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,UAAU,cAAc;IACtB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACjC,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,GACnB,MAAM,CAYR"}
@@ -0,0 +1,19 @@
1
+ export { assertSyncPathAllowed } from './path-safety.js';
2
+ interface PathOperations {
3
+ isAbsolute(path: string): boolean;
4
+ resolve(...paths: string[]): string;
5
+ readonly sep: string;
6
+ }
7
+ /**
8
+ * Resolves a sync-relative path under a local root without allowing traversal
9
+ * or SDK-reserved temporary-file names.
10
+ * @param root - Absolute local sync root.
11
+ * @param relativePath - Sync-relative path to resolve.
12
+ * @param path - Node path operations for the local platform.
13
+ *
14
+ * @returns The absolute local filesystem path.
15
+ *
16
+ * @throws If the path is absolute, escapes the root, or uses a reserved basename.
17
+ */
18
+ export declare function resolveSafeLocalPath(root: string, relativePath: string, path: PathOperations): string;
19
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/sync/paths.js"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,UAAU,cAAc;IACtB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IACjC,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,cAAc,GACnB,MAAM,CAYR"}