@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.
- package/CHANGELOG.md +151 -5
- package/README.md +163 -34
- package/dist/_virtual/_b2-sdk-version-json.cjs +4 -0
- package/dist/_virtual/_b2-sdk-version-json.js +4 -0
- package/dist/auth/account-info.d.cts +32 -0
- package/dist/auth/account-info.d.cts.map +1 -1
- package/dist/auth/account-info.d.ts +32 -0
- package/dist/auth/account-info.d.ts.map +1 -1
- package/dist/auth/file.cjs +408 -207
- package/dist/auth/file.cjs.map +1 -1
- package/dist/auth/file.d.cts +77 -3
- package/dist/auth/file.d.cts.map +1 -1
- package/dist/auth/file.d.ts +77 -3
- package/dist/auth/file.d.ts.map +1 -1
- package/dist/auth/file.js +407 -207
- package/dist/auth/file.js.map +1 -1
- package/dist/auth/in-memory.cjs +212 -183
- package/dist/auth/in-memory.cjs.map +1 -1
- package/dist/auth/in-memory.d.cts +8 -0
- package/dist/auth/in-memory.d.cts.map +1 -1
- package/dist/auth/in-memory.d.ts +8 -0
- package/dist/auth/in-memory.d.ts.map +1 -1
- package/dist/auth/in-memory.js +211 -182
- package/dist/auth/in-memory.js.map +1 -1
- package/dist/auth/index.cjs +7 -9
- package/dist/auth/index.d.cts +3 -2
- package/dist/auth/index.d.cts.map +1 -1
- package/dist/auth/index.d.ts +3 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -8
- package/dist/auth/realms.cjs +80 -7
- package/dist/auth/realms.cjs.map +1 -1
- package/dist/auth/realms.d.cts +27 -4
- package/dist/auth/realms.d.cts.map +1 -1
- package/dist/auth/realms.d.ts +27 -4
- package/dist/auth/realms.d.ts.map +1 -1
- package/dist/auth/realms.js +80 -9
- package/dist/auth/realms.js.map +1 -1
- package/dist/auth/upload-url-pool.cjs +55 -51
- package/dist/auth/upload-url-pool.cjs.map +1 -1
- package/dist/auth/upload-url-pool.js +55 -51
- package/dist/auth/upload-url-pool.js.map +1 -1
- package/dist/backup/client.cjs +206 -0
- package/dist/backup/client.cjs.map +1 -0
- package/dist/backup/client.d.cts +238 -0
- package/dist/backup/client.d.cts.map +1 -0
- package/dist/backup/client.d.ts +238 -0
- package/dist/backup/client.d.ts.map +1 -0
- package/dist/backup/client.js +206 -0
- package/dist/backup/client.js.map +1 -0
- package/dist/backup/index.cjs +15 -0
- package/dist/backup/index.d.cts +22 -0
- package/dist/backup/index.d.cts.map +1 -0
- package/dist/backup/index.d.ts +22 -0
- package/dist/backup/index.d.ts.map +1 -0
- package/dist/backup/index.js +7 -0
- package/dist/backup/raw.cjs +146 -0
- package/dist/backup/raw.cjs.map +1 -0
- package/dist/backup/raw.d.cts +122 -0
- package/dist/backup/raw.d.cts.map +1 -0
- package/dist/backup/raw.d.ts +122 -0
- package/dist/backup/raw.d.ts.map +1 -0
- package/dist/backup/raw.js +146 -0
- package/dist/backup/raw.js.map +1 -0
- package/dist/bucket.cjs +786 -787
- package/dist/bucket.cjs.map +1 -1
- package/dist/bucket.d.cts +35 -47
- package/dist/bucket.d.cts.map +1 -1
- package/dist/bucket.d.ts +35 -47
- package/dist/bucket.d.ts.map +1 -1
- package/dist/bucket.js +781 -782
- package/dist/bucket.js.map +1 -1
- package/dist/client.cjs +246 -228
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +25 -17
- package/dist/client.d.cts.map +1 -1
- package/dist/client.d.ts +25 -17
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +243 -225
- package/dist/client.js.map +1 -1
- package/dist/copy/large.cjs +116 -71
- package/dist/copy/large.cjs.map +1 -1
- package/dist/copy/large.d.cts +6 -0
- package/dist/copy/large.d.cts.map +1 -1
- package/dist/copy/large.d.ts +6 -0
- package/dist/copy/large.d.ts.map +1 -1
- package/dist/copy/large.js +114 -69
- package/dist/copy/large.js.map +1 -1
- package/dist/download/checksum.cjs +93 -0
- package/dist/download/checksum.cjs.map +1 -0
- package/dist/download/checksum.d.cts +40 -0
- package/dist/download/checksum.d.cts.map +1 -0
- package/dist/download/checksum.d.ts +40 -0
- package/dist/download/checksum.d.ts.map +1 -0
- package/dist/download/checksum.js +91 -0
- package/dist/download/checksum.js.map +1 -0
- package/dist/download/parallel.cjs +251 -118
- package/dist/download/parallel.cjs.map +1 -1
- package/dist/download/parallel.d.cts +13 -2
- package/dist/download/parallel.d.cts.map +1 -1
- package/dist/download/parallel.d.ts +13 -2
- package/dist/download/parallel.d.ts.map +1 -1
- package/dist/download/parallel.js +249 -116
- package/dist/download/parallel.js.map +1 -1
- package/dist/download/single.cjs +323 -97
- package/dist/download/single.cjs.map +1 -1
- package/dist/download/single.d.cts +6 -1
- package/dist/download/single.d.cts.map +1 -1
- package/dist/download/single.d.ts +6 -1
- package/dist/download/single.d.ts.map +1 -1
- package/dist/download/single.js +322 -99
- package/dist/download/single.js.map +1 -1
- package/dist/errors/index.cjs +869 -243
- package/dist/errors/index.cjs.map +1 -1
- package/dist/errors/index.d.cts +404 -82
- package/dist/errors/index.d.cts.map +1 -1
- package/dist/errors/index.d.ts +404 -82
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +835 -261
- package/dist/errors/index.js.map +1 -1
- package/dist/http/retry.cjs +45 -28
- package/dist/http/retry.cjs.map +1 -1
- package/dist/http/retry.d.cts +15 -2
- package/dist/http/retry.d.cts.map +1 -1
- package/dist/http/retry.d.ts +15 -2
- package/dist/http/retry.d.ts.map +1 -1
- package/dist/http/retry.js +46 -31
- package/dist/http/retry.js.map +1 -1
- package/dist/http/transport.cjs +476 -140
- package/dist/http/transport.cjs.map +1 -1
- package/dist/http/transport.d.cts +46 -5
- package/dist/http/transport.d.cts.map +1 -1
- package/dist/http/transport.d.ts +46 -5
- package/dist/http/transport.d.ts.map +1 -1
- package/dist/http/transport.js +474 -140
- package/dist/http/transport.js.map +1 -1
- package/dist/http/url-guard.cjs +154 -89
- package/dist/http/url-guard.cjs.map +1 -1
- package/dist/http/url-guard.d.cts +25 -3
- package/dist/http/url-guard.d.cts.map +1 -1
- package/dist/http/url-guard.d.ts +25 -3
- package/dist/http/url-guard.d.ts.map +1 -1
- package/dist/http/url-guard.js +152 -90
- package/dist/http/url-guard.js.map +1 -1
- package/dist/http/user-agent.cjs +84 -44
- package/dist/http/user-agent.cjs.map +1 -1
- package/dist/http/user-agent.js +84 -46
- package/dist/http/user-agent.js.map +1 -1
- package/dist/index.cjs +124 -77
- package/dist/index.d.cts +29 -21
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +29 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -72
- package/dist/internal/b2-naming.cjs +66 -0
- package/dist/internal/b2-naming.cjs.map +1 -0
- package/dist/internal/b2-naming.d.cts +43 -0
- package/dist/internal/b2-naming.d.cts.map +1 -0
- package/dist/internal/b2-naming.d.ts +43 -0
- package/dist/internal/b2-naming.d.ts.map +1 -0
- package/dist/internal/b2-naming.js +60 -0
- package/dist/internal/b2-naming.js.map +1 -0
- package/dist/internal/upload-retry-options.cjs +21 -0
- package/dist/internal/upload-retry-options.cjs.map +1 -0
- package/dist/internal/upload-retry-options.d.cts +12 -0
- package/dist/internal/upload-retry-options.d.cts.map +1 -0
- package/dist/internal/upload-retry-options.d.ts +12 -0
- package/dist/internal/upload-retry-options.d.ts.map +1 -0
- package/dist/internal/upload-retry-options.js +21 -0
- package/dist/internal/upload-retry-options.js.map +1 -0
- package/dist/internal/url-redaction.cjs +31 -0
- package/dist/internal/url-redaction.cjs.map +1 -0
- package/dist/internal/url-redaction.d.cts +17 -0
- package/dist/internal/url-redaction.d.cts.map +1 -0
- package/dist/internal/url-redaction.d.ts +17 -0
- package/dist/internal/url-redaction.d.ts.map +1 -0
- package/dist/internal/url-redaction.js +31 -0
- package/dist/internal/url-redaction.js.map +1 -0
- package/dist/notifications/index.cjs +4 -6
- package/dist/notifications/index.d.cts +1 -1
- package/dist/notifications/index.d.cts.map +1 -1
- package/dist/notifications/index.d.ts +1 -1
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +1 -6
- package/dist/notifications/webhook.cjs +195 -85
- package/dist/notifications/webhook.cjs.map +1 -1
- package/dist/notifications/webhook.d.cts.map +1 -1
- package/dist/notifications/webhook.d.ts.map +1 -1
- package/dist/notifications/webhook.js +195 -87
- package/dist/notifications/webhook.js.map +1 -1
- package/dist/object.cjs +253 -210
- package/dist/object.cjs.map +1 -1
- package/dist/object.d.cts +13 -57
- package/dist/object.d.cts.map +1 -1
- package/dist/object.d.ts +13 -57
- package/dist/object.d.ts.map +1 -1
- package/dist/object.js +249 -206
- package/dist/object.js.map +1 -1
- package/dist/partner/account-info.d.cts +43 -0
- package/dist/partner/account-info.d.cts.map +1 -0
- package/dist/partner/account-info.d.ts +43 -0
- package/dist/partner/account-info.d.ts.map +1 -0
- package/dist/partner/auth-clone.cjs +64 -0
- package/dist/partner/auth-clone.cjs.map +1 -0
- package/dist/partner/auth-clone.d.cts +27 -0
- package/dist/partner/auth-clone.d.cts.map +1 -0
- package/dist/partner/auth-clone.d.ts +27 -0
- package/dist/partner/auth-clone.d.ts.map +1 -0
- package/dist/partner/auth-clone.js +63 -0
- package/dist/partner/auth-clone.js.map +1 -0
- package/dist/partner/auth-core.cjs +175 -0
- package/dist/partner/auth-core.cjs.map +1 -0
- package/dist/partner/auth-core.d.cts +111 -0
- package/dist/partner/auth-core.d.cts.map +1 -0
- package/dist/partner/auth-core.d.ts +111 -0
- package/dist/partner/auth-core.d.ts.map +1 -0
- package/dist/partner/auth-core.js +175 -0
- package/dist/partner/auth-core.js.map +1 -0
- package/dist/partner/auth-shape.cjs +36 -0
- package/dist/partner/auth-shape.cjs.map +1 -0
- package/dist/partner/auth-shape.d.cts +12 -0
- package/dist/partner/auth-shape.d.cts.map +1 -0
- package/dist/partner/auth-shape.d.ts +12 -0
- package/dist/partner/auth-shape.d.ts.map +1 -0
- package/dist/partner/auth-shape.js +36 -0
- package/dist/partner/auth-shape.js.map +1 -0
- package/dist/partner/client.cjs +255 -0
- package/dist/partner/client.cjs.map +1 -0
- package/dist/partner/client.d.cts +335 -0
- package/dist/partner/client.d.cts.map +1 -0
- package/dist/partner/client.d.ts +335 -0
- package/dist/partner/client.d.ts.map +1 -0
- package/dist/partner/client.js +255 -0
- package/dist/partner/client.js.map +1 -0
- package/dist/partner/endpoint-url.cjs +108 -0
- package/dist/partner/endpoint-url.cjs.map +1 -0
- package/dist/partner/endpoint-url.d.cts +72 -0
- package/dist/partner/endpoint-url.d.cts.map +1 -0
- package/dist/partner/endpoint-url.d.ts +72 -0
- package/dist/partner/endpoint-url.d.ts.map +1 -0
- package/dist/partner/endpoint-url.js +105 -0
- package/dist/partner/endpoint-url.js.map +1 -0
- package/dist/partner/in-memory.cjs +135 -0
- package/dist/partner/in-memory.cjs.map +1 -0
- package/dist/partner/in-memory.d.cts +99 -0
- package/dist/partner/in-memory.d.cts.map +1 -0
- package/dist/partner/in-memory.d.ts +99 -0
- package/dist/partner/in-memory.d.ts.map +1 -0
- package/dist/partner/in-memory.js +135 -0
- package/dist/partner/in-memory.js.map +1 -0
- package/dist/partner/index.cjs +18 -0
- package/dist/partner/index.d.cts +23 -0
- package/dist/partner/index.d.cts.map +1 -0
- package/dist/partner/index.d.ts +23 -0
- package/dist/partner/index.d.ts.map +1 -0
- package/dist/partner/index.js +7 -0
- package/dist/partner/raw.cjs +392 -0
- package/dist/partner/raw.cjs.map +1 -0
- package/dist/partner/raw.d.cts +223 -0
- package/dist/partner/raw.d.cts.map +1 -0
- package/dist/partner/raw.d.ts +223 -0
- package/dist/partner/raw.d.ts.map +1 -0
- package/dist/partner/raw.js +390 -0
- package/dist/partner/raw.js.map +1 -0
- package/dist/partner/redaction-placeholders.cjs +10 -0
- package/dist/partner/redaction-placeholders.cjs.map +1 -0
- package/dist/partner/redaction-placeholders.d.cts +5 -0
- package/dist/partner/redaction-placeholders.d.cts.map +1 -0
- package/dist/partner/redaction-placeholders.d.ts +5 -0
- package/dist/partner/redaction-placeholders.d.ts.map +1 -0
- package/dist/partner/redaction-placeholders.js +9 -0
- package/dist/partner/redaction-placeholders.js.map +1 -0
- package/dist/partner/redaction.cjs +267 -0
- package/dist/partner/redaction.cjs.map +1 -0
- package/dist/partner/redaction.d.cts +124 -0
- package/dist/partner/redaction.d.cts.map +1 -0
- package/dist/partner/redaction.d.ts +124 -0
- package/dist/partner/redaction.d.ts.map +1 -0
- package/dist/partner/redaction.js +257 -0
- package/dist/partner/redaction.js.map +1 -0
- package/dist/raw/encoding.cjs +74 -35
- package/dist/raw/encoding.cjs.map +1 -1
- package/dist/raw/encoding.js +74 -38
- package/dist/raw/encoding.js.map +1 -1
- package/dist/raw/index.cjs +740 -587
- package/dist/raw/index.cjs.map +1 -1
- package/dist/raw/index.d.cts +126 -19
- package/dist/raw/index.d.cts.map +1 -1
- package/dist/raw/index.d.ts +126 -19
- package/dist/raw/index.d.ts.map +1 -1
- package/dist/raw/index.js +736 -589
- package/dist/raw/index.js.map +1 -1
- package/dist/raw/url.cjs +111 -0
- package/dist/raw/url.cjs.map +1 -0
- package/dist/raw/url.d.cts +41 -0
- package/dist/raw/url.d.cts.map +1 -0
- package/dist/raw/url.d.ts +41 -0
- package/dist/raw/url.d.ts.map +1 -0
- package/dist/raw/url.js +110 -0
- package/dist/raw/url.js.map +1 -0
- package/dist/s3/index.cjs +355 -18
- package/dist/s3/index.cjs.map +1 -1
- package/dist/s3/index.d.cts +233 -5
- package/dist/s3/index.d.cts.map +1 -1
- package/dist/s3/index.d.ts +233 -5
- package/dist/s3/index.d.ts.map +1 -1
- package/dist/s3/index.js +351 -22
- package/dist/s3/index.js.map +1 -1
- package/dist/s3/sigv4.cjs +154 -0
- package/dist/s3/sigv4.cjs.map +1 -0
- package/dist/s3/sigv4.d.cts +43 -0
- package/dist/s3/sigv4.d.cts.map +1 -0
- package/dist/s3/sigv4.d.ts +43 -0
- package/dist/s3/sigv4.d.ts.map +1 -0
- package/dist/s3/sigv4.js +153 -0
- package/dist/s3/sigv4.js.map +1 -0
- package/dist/s3/validation.cjs +69 -0
- package/dist/s3/validation.cjs.map +1 -0
- package/dist/s3/validation.d.cts +43 -0
- package/dist/s3/validation.d.cts.map +1 -0
- package/dist/s3/validation.d.ts +43 -0
- package/dist/s3/validation.d.ts.map +1 -0
- package/dist/s3/validation.js +66 -0
- package/dist/s3/validation.js.map +1 -0
- package/dist/simulator/capabilities.cjs +63 -48
- package/dist/simulator/capabilities.cjs.map +1 -1
- package/dist/simulator/capabilities.js +63 -49
- package/dist/simulator/capabilities.js.map +1 -1
- package/dist/simulator/index.cjs +3114 -1547
- package/dist/simulator/index.cjs.map +1 -1
- package/dist/simulator/index.d.cts +186 -20
- package/dist/simulator/index.d.cts.map +1 -1
- package/dist/simulator/index.d.ts +186 -20
- package/dist/simulator/index.d.ts.map +1 -1
- package/dist/simulator/index.js +3098 -1545
- package/dist/simulator/index.js.map +1 -1
- package/dist/simulator/partner.cjs +719 -0
- package/dist/simulator/partner.cjs.map +1 -0
- package/dist/simulator/partner.d.cts +183 -0
- package/dist/simulator/partner.d.cts.map +1 -0
- package/dist/simulator/partner.d.ts +183 -0
- package/dist/simulator/partner.d.ts.map +1 -0
- package/dist/simulator/partner.js +718 -0
- package/dist/simulator/partner.js.map +1 -0
- package/dist/simulator/validation.cjs +772 -157
- package/dist/simulator/validation.cjs.map +1 -1
- package/dist/simulator/validation.d.cts +120 -21
- package/dist/simulator/validation.d.cts.map +1 -1
- package/dist/simulator/validation.d.ts +120 -21
- package/dist/simulator/validation.d.ts.map +1 -1
- package/dist/simulator/validation.js +755 -167
- package/dist/simulator/validation.js.map +1 -1
- package/dist/streams/collect.cjs +74 -24
- package/dist/streams/collect.cjs.map +1 -1
- package/dist/streams/collect.d.cts +14 -1
- package/dist/streams/collect.d.cts.map +1 -1
- package/dist/streams/collect.d.ts +14 -1
- package/dist/streams/collect.d.ts.map +1 -1
- package/dist/streams/collect.js +74 -25
- package/dist/streams/collect.js.map +1 -1
- package/dist/streams/file-source.cjs +287 -0
- package/dist/streams/file-source.cjs.map +1 -0
- package/dist/streams/file-source.d.cts +96 -0
- package/dist/streams/file-source.d.cts.map +1 -0
- package/dist/streams/file-source.d.ts +96 -0
- package/dist/streams/file-source.d.ts.map +1 -0
- package/dist/streams/file-source.js +286 -0
- package/dist/streams/file-source.js.map +1 -0
- package/dist/streams/hash.cjs +207 -115
- package/dist/streams/hash.cjs.map +1 -1
- package/dist/streams/hash.d.cts +5 -4
- package/dist/streams/hash.d.cts.map +1 -1
- package/dist/streams/hash.d.ts +5 -4
- package/dist/streams/hash.d.ts.map +1 -1
- package/dist/streams/hash.js +208 -95
- package/dist/streams/hash.js.map +1 -1
- package/dist/streams/index.cjs +12 -12
- package/dist/streams/index.d.cts +3 -3
- package/dist/streams/index.d.cts.map +1 -1
- package/dist/streams/index.d.ts +3 -3
- package/dist/streams/index.d.ts.map +1 -1
- package/dist/streams/index.js +3 -11
- package/dist/streams/progress.cjs +60 -46
- package/dist/streams/progress.cjs.map +1 -1
- package/dist/streams/progress.js +60 -46
- package/dist/streams/progress.js.map +1 -1
- package/dist/streams/source.cjs +317 -146
- package/dist/streams/source.cjs.map +1 -1
- package/dist/streams/source.d.cts +56 -18
- package/dist/streams/source.d.cts.map +1 -1
- package/dist/streams/source.d.ts +56 -18
- package/dist/streams/source.d.ts.map +1 -1
- package/dist/streams/source.js +313 -149
- package/dist/streams/source.js.map +1 -1
- package/dist/sync/actions/index.cjs +236 -184
- package/dist/sync/actions/index.cjs.map +1 -1
- package/dist/sync/actions/index.d.cts +29 -21
- package/dist/sync/actions/index.d.cts.map +1 -1
- package/dist/sync/actions/index.d.ts +29 -21
- package/dist/sync/actions/index.d.ts.map +1 -1
- package/dist/sync/actions/index.js +236 -190
- package/dist/sync/actions/index.js.map +1 -1
- package/dist/sync/b2-sha1-reader.cjs +152 -0
- package/dist/sync/b2-sha1-reader.cjs.map +1 -0
- package/dist/sync/b2-sha1-reader.d.cts +58 -0
- package/dist/sync/b2-sha1-reader.d.cts.map +1 -0
- package/dist/sync/b2-sha1-reader.d.ts +58 -0
- package/dist/sync/b2-sha1-reader.d.ts.map +1 -0
- package/dist/sync/b2-sha1-reader.js +149 -0
- package/dist/sync/b2-sha1-reader.js.map +1 -0
- package/dist/sync/download-staging.cjs +266 -0
- package/dist/sync/download-staging.cjs.map +1 -0
- package/dist/sync/download-staging.d.cts +55 -0
- package/dist/sync/download-staging.d.cts.map +1 -0
- package/dist/sync/download-staging.d.ts +55 -0
- package/dist/sync/download-staging.d.ts.map +1 -0
- package/dist/sync/download-staging.js +260 -0
- package/dist/sync/download-staging.js.map +1 -0
- package/dist/sync/filesystem-errors.cjs +32 -0
- package/dist/sync/filesystem-errors.cjs.map +1 -0
- package/dist/sync/filesystem-errors.d.cts +8 -0
- package/dist/sync/filesystem-errors.d.cts.map +1 -0
- package/dist/sync/filesystem-errors.d.ts +8 -0
- package/dist/sync/filesystem-errors.d.ts.map +1 -0
- package/dist/sync/filesystem-errors.js +32 -0
- package/dist/sync/filesystem-errors.js.map +1 -0
- package/dist/sync/filters.cjs +217 -0
- package/dist/sync/filters.cjs.map +1 -0
- package/dist/sync/filters.d.cts +51 -0
- package/dist/sync/filters.d.cts.map +1 -0
- package/dist/sync/filters.d.ts +51 -0
- package/dist/sync/filters.d.ts.map +1 -0
- package/dist/sync/filters.js +213 -0
- package/dist/sync/filters.js.map +1 -0
- package/dist/sync/index.cjs +39 -22
- package/dist/sync/index.d.cts +14 -9
- package/dist/sync/index.d.cts.map +1 -1
- package/dist/sync/index.d.ts +14 -9
- package/dist/sync/index.d.ts.map +1 -1
- package/dist/sync/index.js +9 -20
- package/dist/sync/local-file-identity.cjs +61 -0
- package/dist/sync/local-file-identity.cjs.map +1 -0
- package/dist/sync/local-file-identity.d.cts +37 -0
- package/dist/sync/local-file-identity.d.cts.map +1 -0
- package/dist/sync/local-file-identity.d.ts +37 -0
- package/dist/sync/local-file-identity.d.ts.map +1 -0
- package/dist/sync/local-file-identity.js +60 -0
- package/dist/sync/local-file-identity.js.map +1 -0
- package/dist/sync/local-file-io.cjs +369 -0
- package/dist/sync/local-file-io.cjs.map +1 -0
- package/dist/sync/local-file-io.d.cts +76 -0
- package/dist/sync/local-file-io.d.cts.map +1 -0
- package/dist/sync/local-file-io.d.ts +76 -0
- package/dist/sync/local-file-io.d.ts.map +1 -0
- package/dist/sync/local-file-io.js +365 -0
- package/dist/sync/local-file-io.js.map +1 -0
- package/dist/sync/local-filesystem-root.cjs +27 -0
- package/dist/sync/local-filesystem-root.cjs.map +1 -0
- package/dist/sync/local-filesystem-root.d.cts +18 -0
- package/dist/sync/local-filesystem-root.d.cts.map +1 -0
- package/dist/sync/local-filesystem-root.d.ts +18 -0
- package/dist/sync/local-filesystem-root.d.ts.map +1 -0
- package/dist/sync/local-filesystem-root.js +26 -0
- package/dist/sync/local-filesystem-root.js.map +1 -0
- package/dist/sync/local-sha1.cjs +110 -0
- package/dist/sync/local-sha1.cjs.map +1 -0
- package/dist/sync/local-sha1.d.cts +31 -0
- package/dist/sync/local-sha1.d.cts.map +1 -0
- package/dist/sync/local-sha1.d.ts +31 -0
- package/dist/sync/local-sha1.d.ts.map +1 -0
- package/dist/sync/local-sha1.js +109 -0
- package/dist/sync/local-sha1.js.map +1 -0
- package/dist/sync/pairing.cjs +118 -29
- package/dist/sync/pairing.cjs.map +1 -1
- package/dist/sync/pairing.d.cts +7 -2
- package/dist/sync/pairing.d.cts.map +1 -1
- package/dist/sync/pairing.d.ts +7 -2
- package/dist/sync/pairing.d.ts.map +1 -1
- package/dist/sync/pairing.js +120 -31
- package/dist/sync/pairing.js.map +1 -1
- package/dist/sync/path-order.cjs +30 -0
- package/dist/sync/path-order.cjs.map +1 -0
- package/dist/sync/path-order.d.cts +28 -0
- package/dist/sync/path-order.d.cts.map +1 -0
- package/dist/sync/path-order.d.ts +28 -0
- package/dist/sync/path-order.d.ts.map +1 -0
- package/dist/sync/path-order.js +29 -0
- package/dist/sync/path-order.js.map +1 -0
- package/dist/sync/path-safety.cjs +111 -0
- package/dist/sync/path-safety.cjs.map +1 -0
- package/dist/sync/path-safety.d.cts +78 -0
- package/dist/sync/path-safety.d.cts.map +1 -0
- package/dist/sync/path-safety.d.ts +78 -0
- package/dist/sync/path-safety.d.ts.map +1 -0
- package/dist/sync/path-safety.js +105 -0
- package/dist/sync/path-safety.js.map +1 -0
- package/dist/sync/paths.d.cts +19 -0
- package/dist/sync/paths.d.cts.map +1 -0
- package/dist/sync/paths.d.ts +19 -0
- package/dist/sync/paths.d.ts.map +1 -0
- package/dist/sync/policies/compare.cjs +391 -11
- package/dist/sync/policies/compare.cjs.map +1 -1
- package/dist/sync/policies/compare.d.cts +100 -2
- package/dist/sync/policies/compare.d.cts.map +1 -1
- package/dist/sync/policies/compare.d.ts +100 -2
- package/dist/sync/policies/compare.d.ts.map +1 -1
- package/dist/sync/policies/compare.js +389 -13
- package/dist/sync/policies/compare.js.map +1 -1
- package/dist/sync/policies/index.cjs +70 -65
- package/dist/sync/policies/index.cjs.map +1 -1
- package/dist/sync/policies/index.d.cts +35 -6
- package/dist/sync/policies/index.d.cts.map +1 -1
- package/dist/sync/policies/index.d.ts +35 -6
- package/dist/sync/policies/index.d.ts.map +1 -1
- package/dist/sync/policies/index.js +70 -65
- package/dist/sync/policies/index.js.map +1 -1
- package/dist/sync/prefix.cjs +96 -0
- package/dist/sync/prefix.cjs.map +1 -0
- package/dist/sync/prefix.d.cts +55 -0
- package/dist/sync/prefix.d.cts.map +1 -0
- package/dist/sync/prefix.d.ts +55 -0
- package/dist/sync/prefix.d.ts.map +1 -0
- package/dist/sync/prefix.js +92 -0
- package/dist/sync/prefix.js.map +1 -0
- package/dist/sync/regexp-safety.cjs +192 -0
- package/dist/sync/regexp-safety.cjs.map +1 -0
- package/dist/sync/regexp-safety.d.cts +29 -0
- package/dist/sync/regexp-safety.d.cts.map +1 -0
- package/dist/sync/regexp-safety.d.ts +29 -0
- package/dist/sync/regexp-safety.d.ts.map +1 -0
- package/dist/sync/regexp-safety.js +190 -0
- package/dist/sync/regexp-safety.js.map +1 -0
- package/dist/sync/scan-events.cjs +33 -0
- package/dist/sync/scan-events.cjs.map +1 -0
- package/dist/sync/scan-events.d.cts +17 -0
- package/dist/sync/scan-events.d.cts.map +1 -0
- package/dist/sync/scan-events.d.ts +17 -0
- package/dist/sync/scan-events.d.ts.map +1 -0
- package/dist/sync/scan-events.js +32 -0
- package/dist/sync/scan-events.js.map +1 -0
- package/dist/sync/scan-limit.cjs +33 -0
- package/dist/sync/scan-limit.cjs.map +1 -0
- package/dist/sync/scan-limit.d.cts +21 -0
- package/dist/sync/scan-limit.d.cts.map +1 -0
- package/dist/sync/scan-limit.d.ts +21 -0
- package/dist/sync/scan-limit.d.ts.map +1 -0
- package/dist/sync/scan-limit.js +31 -0
- package/dist/sync/scan-limit.js.map +1 -0
- package/dist/sync/scanners/b2.cjs +239 -55
- package/dist/sync/scanners/b2.cjs.map +1 -1
- package/dist/sync/scanners/b2.d.cts +26 -7
- package/dist/sync/scanners/b2.d.cts.map +1 -1
- package/dist/sync/scanners/b2.d.ts +26 -7
- package/dist/sync/scanners/b2.d.ts.map +1 -1
- package/dist/sync/scanners/b2.js +239 -55
- package/dist/sync/scanners/b2.js.map +1 -1
- package/dist/sync/scanners/local.cjs +215 -56
- package/dist/sync/scanners/local.cjs.map +1 -1
- package/dist/sync/scanners/local.d.cts +22 -7
- package/dist/sync/scanners/local.d.cts.map +1 -1
- package/dist/sync/scanners/local.d.ts +22 -7
- package/dist/sync/scanners/local.d.ts.map +1 -1
- package/dist/sync/scanners/local.js +216 -57
- package/dist/sync/scanners/local.js.map +1 -1
- package/dist/sync/sha1-metadata.cjs +94 -0
- package/dist/sync/sha1-metadata.cjs.map +1 -0
- package/dist/sync/sha1-metadata.d.cts +82 -0
- package/dist/sync/sha1-metadata.d.cts.map +1 -0
- package/dist/sync/sha1-metadata.d.ts +82 -0
- package/dist/sync/sha1-metadata.d.ts.map +1 -0
- package/dist/sync/sha1-metadata.js +89 -0
- package/dist/sync/sha1-metadata.js.map +1 -0
- package/dist/sync/sha1-options.cjs +23 -0
- package/dist/sync/sha1-options.cjs.map +1 -0
- package/dist/sync/sha1-options.d.cts +14 -0
- package/dist/sync/sha1-options.d.cts.map +1 -0
- package/dist/sync/sha1-options.d.ts +14 -0
- package/dist/sync/sha1-options.d.ts.map +1 -0
- package/dist/sync/sha1-options.js +21 -0
- package/dist/sync/sha1-options.js.map +1 -0
- package/dist/sync/synchronizer.cjs +783 -197
- package/dist/sync/synchronizer.cjs.map +1 -1
- package/dist/sync/synchronizer.d.cts +47 -1
- package/dist/sync/synchronizer.d.cts.map +1 -1
- package/dist/sync/synchronizer.d.ts +47 -1
- package/dist/sync/synchronizer.d.ts.map +1 -1
- package/dist/sync/synchronizer.js +780 -173
- package/dist/sync/synchronizer.js.map +1 -1
- package/dist/sync/types.d.cts +208 -16
- package/dist/sync/types.d.cts.map +1 -1
- package/dist/sync/types.d.ts +208 -16
- package/dist/sync/types.d.ts.map +1 -1
- package/dist/types/auth.cjs +80 -56
- package/dist/types/auth.cjs.map +1 -1
- package/dist/types/auth.d.cts +71 -9
- package/dist/types/auth.d.cts.map +1 -1
- package/dist/types/auth.d.ts +71 -9
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/auth.js +81 -57
- package/dist/types/auth.js.map +1 -1
- package/dist/types/backup.d.cts +80 -0
- package/dist/types/backup.d.cts.map +1 -0
- package/dist/types/backup.d.ts +80 -0
- package/dist/types/backup.d.ts.map +1 -0
- package/dist/types/bucket.cjs +74 -38
- package/dist/types/bucket.cjs.map +1 -1
- package/dist/types/bucket.d.cts +4 -2
- package/dist/types/bucket.d.cts.map +1 -1
- package/dist/types/bucket.d.ts +4 -2
- package/dist/types/bucket.d.ts.map +1 -1
- package/dist/types/bucket.js +75 -41
- package/dist/types/bucket.js.map +1 -1
- package/dist/types/download.cjs +62 -0
- package/dist/types/download.cjs.map +1 -0
- package/dist/types/download.d.cts +98 -0
- package/dist/types/download.d.cts.map +1 -1
- package/dist/types/download.d.ts +98 -0
- package/dist/types/download.d.ts.map +1 -1
- package/dist/types/download.js +61 -0
- package/dist/types/download.js.map +1 -0
- package/dist/types/encryption.cjs +194 -328
- package/dist/types/encryption.cjs.map +1 -1
- package/dist/types/encryption.d.cts +48 -0
- package/dist/types/encryption.d.cts.map +1 -1
- package/dist/types/encryption.d.ts +48 -0
- package/dist/types/encryption.d.ts.map +1 -1
- package/dist/types/encryption.js +192 -311
- package/dist/types/encryption.js.map +1 -1
- package/dist/types/errors.cjs +56 -0
- package/dist/types/errors.cjs.map +1 -0
- package/dist/types/errors.d.cts +13 -4
- package/dist/types/errors.d.cts.map +1 -1
- package/dist/types/errors.d.ts +13 -4
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +56 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/file.cjs +36 -19
- package/dist/types/file.cjs.map +1 -1
- package/dist/types/file.d.cts +17 -4
- package/dist/types/file.d.cts.map +1 -1
- package/dist/types/file.d.ts +17 -4
- package/dist/types/file.d.ts.map +1 -1
- package/dist/types/file.js +37 -21
- package/dist/types/file.js.map +1 -1
- package/dist/types/ids.cjs +83 -9
- package/dist/types/ids.cjs.map +1 -1
- package/dist/types/ids.d.cts +32 -0
- package/dist/types/ids.d.cts.map +1 -1
- package/dist/types/ids.d.ts +32 -0
- package/dist/types/ids.d.ts.map +1 -1
- package/dist/types/ids.js +82 -16
- package/dist/types/ids.js.map +1 -1
- package/dist/types/index.d.cts +18 -13
- package/dist/types/index.d.cts.map +1 -1
- package/dist/types/index.d.ts +18 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/key.d.cts +44 -8
- package/dist/types/key.d.cts.map +1 -1
- package/dist/types/key.d.ts +44 -8
- package/dist/types/key.d.ts.map +1 -1
- package/dist/types/lock.cjs +33 -13
- package/dist/types/lock.cjs.map +1 -1
- package/dist/types/lock.d.cts +14 -0
- package/dist/types/lock.d.cts.map +1 -1
- package/dist/types/lock.d.ts +14 -0
- package/dist/types/lock.d.ts.map +1 -1
- package/dist/types/lock.js +34 -15
- package/dist/types/lock.js.map +1 -1
- package/dist/types/notifications.cjs +44 -22
- package/dist/types/notifications.cjs.map +1 -1
- package/dist/types/notifications.d.cts +5 -3
- package/dist/types/notifications.d.cts.map +1 -1
- package/dist/types/notifications.d.ts +5 -3
- package/dist/types/notifications.d.ts.map +1 -1
- package/dist/types/notifications.js +45 -23
- package/dist/types/notifications.js.map +1 -1
- package/dist/types/partner.cjs +32 -0
- package/dist/types/partner.cjs.map +1 -0
- package/dist/types/partner.d.cts +394 -0
- package/dist/types/partner.d.cts.map +1 -0
- package/dist/types/partner.d.ts +394 -0
- package/dist/types/partner.d.ts.map +1 -0
- package/dist/types/partner.js +29 -0
- package/dist/types/partner.js.map +1 -0
- package/dist/types/upload.d.cts +53 -6
- package/dist/types/upload.d.cts.map +1 -1
- package/dist/types/upload.d.ts +53 -6
- package/dist/types/upload.d.ts.map +1 -1
- package/dist/upload/abort-scope.cjs +46 -0
- package/dist/upload/abort-scope.cjs.map +1 -0
- package/dist/upload/abort-scope.d.cts +26 -0
- package/dist/upload/abort-scope.d.cts.map +1 -0
- package/dist/upload/abort-scope.d.ts +26 -0
- package/dist/upload/abort-scope.d.ts.map +1 -0
- package/dist/upload/abort-scope.js +45 -0
- package/dist/upload/abort-scope.js.map +1 -0
- package/dist/upload/cancel.cjs +183 -8
- package/dist/upload/cancel.cjs.map +1 -1
- package/dist/upload/cancel.d.cts +110 -2
- package/dist/upload/cancel.d.cts.map +1 -1
- package/dist/upload/cancel.d.ts +110 -2
- package/dist/upload/cancel.d.ts.map +1 -1
- package/dist/upload/cancel.js +178 -9
- package/dist/upload/cancel.js.map +1 -1
- package/dist/upload/concurrency.cjs +79 -52
- package/dist/upload/concurrency.cjs.map +1 -1
- package/dist/upload/concurrency.js +79 -53
- package/dist/upload/concurrency.js.map +1 -1
- package/dist/upload/finish.cjs +54 -0
- package/dist/upload/finish.cjs.map +1 -0
- package/dist/upload/finish.d.cts +26 -0
- package/dist/upload/finish.d.cts.map +1 -0
- package/dist/upload/finish.d.ts +26 -0
- package/dist/upload/finish.d.ts.map +1 -0
- package/dist/upload/finish.js +54 -0
- package/dist/upload/finish.js.map +1 -0
- package/dist/upload/large.cjs +305 -218
- package/dist/upload/large.cjs.map +1 -1
- package/dist/upload/large.d.cts +90 -9
- package/dist/upload/large.d.cts.map +1 -1
- package/dist/upload/large.d.ts +90 -9
- package/dist/upload/large.d.ts.map +1 -1
- package/dist/upload/large.js +305 -218
- package/dist/upload/large.js.map +1 -1
- package/dist/upload/options.cjs +28 -0
- package/dist/upload/options.cjs.map +1 -0
- package/dist/upload/options.d.cts +116 -0
- package/dist/upload/options.d.cts.map +1 -0
- package/dist/upload/options.d.ts +116 -0
- package/dist/upload/options.d.ts.map +1 -0
- package/dist/upload/options.js +27 -0
- package/dist/upload/options.js.map +1 -0
- package/dist/upload/resume.cjs +334 -33
- package/dist/upload/resume.cjs.map +1 -1
- package/dist/upload/resume.d.cts +84 -12
- package/dist/upload/resume.d.cts.map +1 -1
- package/dist/upload/resume.d.ts +84 -12
- package/dist/upload/resume.d.ts.map +1 -1
- package/dist/upload/resume.js +331 -33
- package/dist/upload/resume.js.map +1 -1
- package/dist/upload/retry.cjs +191 -0
- package/dist/upload/retry.cjs.map +1 -0
- package/dist/upload/retry.d.cts +127 -0
- package/dist/upload/retry.d.cts.map +1 -0
- package/dist/upload/retry.d.ts +127 -0
- package/dist/upload/retry.d.ts.map +1 -0
- package/dist/upload/retry.js +187 -0
- package/dist/upload/retry.js.map +1 -0
- package/dist/upload/single.cjs +69 -44
- package/dist/upload/single.cjs.map +1 -1
- package/dist/upload/single.d.cts +8 -1
- package/dist/upload/single.d.cts.map +1 -1
- package/dist/upload/single.d.ts +8 -1
- package/dist/upload/single.d.ts.map +1 -1
- package/dist/upload/single.js +69 -44
- package/dist/upload/single.js.map +1 -1
- package/dist/upload/stream.cjs +319 -193
- package/dist/upload/stream.cjs.map +1 -1
- package/dist/upload/stream.d.cts +9 -1
- package/dist/upload/stream.d.cts.map +1 -1
- package/dist/upload/stream.d.ts +9 -1
- package/dist/upload/stream.d.ts.map +1 -1
- package/dist/upload/stream.js +318 -192
- package/dist/upload/stream.js.map +1 -1
- package/dist/util/abort.cjs +114 -0
- package/dist/util/abort.cjs.map +1 -0
- package/dist/util/abort.d.cts +65 -0
- package/dist/util/abort.d.cts.map +1 -0
- package/dist/util/abort.d.ts +65 -0
- package/dist/util/abort.d.ts.map +1 -0
- package/dist/util/abort.js +109 -0
- package/dist/util/abort.js.map +1 -0
- package/dist/util/best-effort.cjs +42 -8
- package/dist/util/best-effort.cjs.map +1 -1
- package/dist/util/best-effort.d.cts +2 -1
- package/dist/util/best-effort.d.cts.map +1 -1
- package/dist/util/best-effort.d.ts +2 -1
- package/dist/util/best-effort.d.ts.map +1 -1
- package/dist/util/best-effort.js +43 -9
- package/dist/util/best-effort.js.map +1 -1
- package/dist/util/bytes.cjs +23 -0
- package/dist/util/bytes.cjs.map +1 -0
- package/dist/util/bytes.d.cts +15 -0
- package/dist/util/bytes.d.cts.map +1 -0
- package/dist/util/bytes.d.ts +15 -0
- package/dist/util/bytes.d.ts.map +1 -0
- package/dist/util/bytes.js +23 -0
- package/dist/util/bytes.js.map +1 -0
- package/dist/util/crypto.cjs +68 -0
- package/dist/util/crypto.cjs.map +1 -0
- package/dist/util/crypto.d.cts +26 -0
- package/dist/util/crypto.d.cts.map +1 -0
- package/dist/util/crypto.d.ts +26 -0
- package/dist/util/crypto.d.ts.map +1 -0
- package/dist/util/crypto.js +66 -0
- package/dist/util/crypto.js.map +1 -0
- package/dist/util/defaults.cjs +28 -9
- package/dist/util/defaults.cjs.map +1 -1
- package/dist/util/defaults.d.cts +2 -0
- package/dist/util/defaults.d.cts.map +1 -1
- package/dist/util/defaults.d.ts +2 -0
- package/dist/util/defaults.d.ts.map +1 -1
- package/dist/util/defaults.js +28 -11
- package/dist/util/defaults.js.map +1 -1
- package/dist/util/error-reason.cjs +41 -0
- package/dist/util/error-reason.cjs.map +1 -0
- package/dist/util/error-reason.d.cts +9 -0
- package/dist/util/error-reason.d.cts.map +1 -0
- package/dist/util/error-reason.d.ts +9 -0
- package/dist/util/error-reason.d.ts.map +1 -0
- package/dist/util/error-reason.js +41 -0
- package/dist/util/error-reason.js.map +1 -0
- package/dist/util/http.cjs +23 -0
- package/dist/util/http.cjs.map +1 -0
- package/dist/util/http.d.cts +13 -0
- package/dist/util/http.d.cts.map +1 -0
- package/dist/util/http.d.ts +13 -0
- package/dist/util/http.d.ts.map +1 -0
- package/dist/util/http.js +23 -0
- package/dist/util/http.js.map +1 -0
- package/dist/util/md5.cjs +211 -0
- package/dist/util/md5.cjs.map +1 -0
- package/dist/util/md5.d.cts +43 -0
- package/dist/util/md5.d.cts.map +1 -0
- package/dist/util/md5.d.ts +43 -0
- package/dist/util/md5.d.ts.map +1 -0
- package/dist/util/md5.js +209 -0
- package/dist/util/md5.js.map +1 -0
- package/dist/util/normalize.cjs +66 -7
- package/dist/util/normalize.cjs.map +1 -1
- package/dist/util/normalize.d.cts +7 -7
- package/dist/util/normalize.d.cts.map +1 -1
- package/dist/util/normalize.d.ts +7 -7
- package/dist/util/normalize.d.ts.map +1 -1
- package/dist/util/normalize.js +67 -10
- package/dist/util/normalize.js.map +1 -1
- package/dist/util/paginator.cjs +69 -14
- package/dist/util/paginator.cjs.map +1 -1
- package/dist/util/paginator.d.cts +3 -1
- package/dist/util/paginator.d.cts.map +1 -1
- package/dist/util/paginator.d.ts +3 -1
- package/dist/util/paginator.d.ts.map +1 -1
- package/dist/util/paginator.js +70 -16
- package/dist/util/paginator.js.map +1 -1
- package/dist/util/plan-ranges.cjs +47 -22
- package/dist/util/plan-ranges.cjs.map +1 -1
- package/dist/util/plan-ranges.js +48 -24
- package/dist/util/plan-ranges.js.map +1 -1
- package/dist/util/sha1.cjs +27 -0
- package/dist/util/sha1.cjs.map +1 -0
- package/dist/util/sha1.d.cts +17 -0
- package/dist/util/sha1.d.cts.map +1 -0
- package/dist/util/sha1.d.ts +17 -0
- package/dist/util/sha1.d.ts.map +1 -0
- package/dist/util/sha1.js +26 -0
- package/dist/util/sha1.js.map +1 -0
- package/dist/util/text-codec.cjs +29 -5
- package/dist/util/text-codec.cjs.map +1 -1
- package/dist/util/text-codec.js +30 -7
- package/dist/util/text-codec.js.map +1 -1
- package/dist/util/to-error.cjs +18 -4
- package/dist/util/to-error.cjs.map +1 -1
- package/dist/util/to-error.js +19 -5
- package/dist/util/to-error.js.map +1 -1
- package/dist/version.cjs +17 -5
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +3 -3
- package/dist/version.d.ts +3 -3
- package/dist/version.js +19 -6
- package/dist/version.js.map +1 -1
- package/package.json +45 -20
- package/dist/auth/index.cjs.map +0 -1
- package/dist/auth/index.js.map +0 -1
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/notifications/index.cjs.map +0 -1
- package/dist/notifications/index.js.map +0 -1
- package/dist/package.json.cjs +0 -9
- package/dist/package.json.cjs.map +0 -1
- package/dist/package.json.js +0 -9
- package/dist/package.json.js.map +0 -1
- package/dist/streams/index.cjs.map +0 -1
- package/dist/streams/index.js.map +0 -1
- package/dist/sync/index.cjs.map +0 -1
- package/dist/sync/index.js.map +0 -1
package/dist/types/upload.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import { EncryptionSetting } from './encryption.js';
|
|
1
|
+
import { EncryptionSetting, PublicEncryptionSetting } from './encryption.js';
|
|
2
|
+
import { FileAction, ReplicationStatus } from './file.js';
|
|
2
3
|
import { BucketId, LargeFileId } from './ids.js';
|
|
3
|
-
import { FileRetentionValue, LegalHoldValue } from './lock.js';
|
|
4
|
+
import { FileRetentionValue, LegalHoldValue, ReadableFileRetention, ReadableLegalHold } from './lock.js';
|
|
5
|
+
export type { ReadableFileRetention, ReadableLegalHold } from './lock.js';
|
|
4
6
|
/** Request parameters for the `b2_get_upload_url` API call. */
|
|
5
7
|
export interface GetUploadUrlRequest {
|
|
6
8
|
/** Bucket to get an upload URL for. */
|
|
@@ -40,6 +42,12 @@ export interface UploadFileHeaders {
|
|
|
40
42
|
readonly legalHold?: LegalHoldValue;
|
|
41
43
|
/** Optional last-modified timestamp in milliseconds (stored as `src_last_modified_millis` in file info). */
|
|
42
44
|
readonly lastModifiedMillis?: number;
|
|
45
|
+
/**
|
|
46
|
+
* Optional B2 upload timestamp override in milliseconds since epoch.
|
|
47
|
+
* Sets the file version `uploadTimestamp`; distinct from `lastModifiedMillis` metadata.
|
|
48
|
+
* Requires B2 account enablement for Custom Upload Timestamp.
|
|
49
|
+
*/
|
|
50
|
+
readonly customUploadTimestamp?: number;
|
|
43
51
|
/** Optional Content-Disposition header value for downloads. */
|
|
44
52
|
readonly contentDisposition?: string;
|
|
45
53
|
/** Optional Content-Language header value for downloads. */
|
|
@@ -61,6 +69,13 @@ export interface StartLargeFileRequest {
|
|
|
61
69
|
readonly contentType: string;
|
|
62
70
|
/** Optional user-defined key-value metadata for the file. */
|
|
63
71
|
readonly fileInfo?: Record<string, string>;
|
|
72
|
+
/**
|
|
73
|
+
* Optional B2 upload timestamp override in milliseconds since epoch, as a decimal string.
|
|
74
|
+
* `null` is accepted and ignored by B2.
|
|
75
|
+
* Sets the file version `uploadTimestamp`; distinct from `src_last_modified_millis` metadata.
|
|
76
|
+
* Requires B2 account enablement for Custom Upload Timestamp.
|
|
77
|
+
*/
|
|
78
|
+
readonly customUploadTimestamp?: string | null;
|
|
64
79
|
/** Optional server-side encryption setting. */
|
|
65
80
|
readonly serverSideEncryption?: EncryptionSetting;
|
|
66
81
|
/** Optional Object Lock retention for the file. */
|
|
@@ -68,8 +83,34 @@ export interface StartLargeFileRequest {
|
|
|
68
83
|
/** Optional legal hold for the file. */
|
|
69
84
|
readonly legalHold?: LegalHoldValue;
|
|
70
85
|
}
|
|
86
|
+
/** Optional metadata fields B2 may return for unfinished large-file records. */
|
|
87
|
+
export interface UnfinishedLargeFileMetadata {
|
|
88
|
+
/** Action that created this unfinished file version. */
|
|
89
|
+
readonly action?: FileAction;
|
|
90
|
+
/** When present, always 0 for unfinished large files. */
|
|
91
|
+
readonly contentLength?: number;
|
|
92
|
+
/**
|
|
93
|
+
* When present for documented B2 unfinished large files, this is `null`:
|
|
94
|
+
* B2's `'none'` wire sentinel is normalized to `null`. If B2 omits the
|
|
95
|
+
* field, it remains `undefined`; the `string` arm is retained for
|
|
96
|
+
* forward-compatible or non-standard response values.
|
|
97
|
+
*/
|
|
98
|
+
readonly contentSha1?: string | null;
|
|
99
|
+
/** When present, always null for unfinished large files. */
|
|
100
|
+
readonly contentMd5?: string | null;
|
|
101
|
+
/** Object Lock retention settings for this unfinished file, when readable. */
|
|
102
|
+
readonly fileRetention?: ReadableFileRetention;
|
|
103
|
+
/** Legal hold status for this unfinished file, when readable. */
|
|
104
|
+
readonly legalHold?: ReadableLegalHold;
|
|
105
|
+
/** Uppercase B2 replication status when this unfinished file is covered by a replication rule. */
|
|
106
|
+
readonly replicationStatus?: ReplicationStatus;
|
|
107
|
+
/** Server-side encryption applied to this unfinished file. */
|
|
108
|
+
readonly serverSideEncryption?: PublicEncryptionSetting;
|
|
109
|
+
/** UTC timestamp (milliseconds) when this unfinished upload was started. */
|
|
110
|
+
readonly uploadTimestamp?: number;
|
|
111
|
+
}
|
|
71
112
|
/** Response from the `b2_start_large_file` API call. */
|
|
72
|
-
export interface StartLargeFileResponse {
|
|
113
|
+
export interface StartLargeFileResponse extends UnfinishedLargeFileMetadata {
|
|
73
114
|
/** ID assigned to this large file upload. Use this to upload parts and finish the file. */
|
|
74
115
|
readonly fileId: LargeFileId;
|
|
75
116
|
/** Name of the file being uploaded. */
|
|
@@ -123,8 +164,10 @@ export interface UploadPartResponse {
|
|
|
123
164
|
readonly contentLength: number;
|
|
124
165
|
/** SHA-1 checksum of the uploaded part content. */
|
|
125
166
|
readonly contentSha1: string;
|
|
167
|
+
/** MD5 checksum of the uploaded part content, or null if not available. */
|
|
168
|
+
readonly contentMd5: string | null;
|
|
126
169
|
/** Server-side encryption applied to this part. */
|
|
127
|
-
readonly serverSideEncryption:
|
|
170
|
+
readonly serverSideEncryption: PublicEncryptionSetting;
|
|
128
171
|
/** UTC timestamp (milliseconds) when this part was uploaded. */
|
|
129
172
|
readonly uploadTimestamp: number;
|
|
130
173
|
}
|
|
@@ -160,13 +203,13 @@ export interface ListUnfinishedLargeFilesRequest {
|
|
|
160
203
|
readonly bucketId: BucketId;
|
|
161
204
|
/** Only return files whose names start with this prefix. */
|
|
162
205
|
readonly namePrefix?: string;
|
|
163
|
-
/** File ID to start listing from (
|
|
206
|
+
/** File ID to start listing from (inclusive). Used for pagination. */
|
|
164
207
|
readonly startFileId?: LargeFileId;
|
|
165
208
|
/** Maximum number of files to return. */
|
|
166
209
|
readonly maxFileCount?: number;
|
|
167
210
|
}
|
|
168
211
|
/** Metadata for an in-progress large file upload that has not yet been finished or cancelled. */
|
|
169
|
-
export interface UnfinishedLargeFile {
|
|
212
|
+
export interface UnfinishedLargeFile extends UnfinishedLargeFileMetadata {
|
|
170
213
|
/** ID of the large file. */
|
|
171
214
|
readonly fileId: LargeFileId;
|
|
172
215
|
/** Name of the file. */
|
|
@@ -206,6 +249,10 @@ export interface PartInfo {
|
|
|
206
249
|
readonly contentLength: number;
|
|
207
250
|
/** SHA-1 checksum of this part's content. */
|
|
208
251
|
readonly contentSha1: string;
|
|
252
|
+
/** MD5 checksum of this part's content, or null if not available. */
|
|
253
|
+
readonly contentMd5: string | null;
|
|
254
|
+
/** Server-side encryption applied to this part. */
|
|
255
|
+
readonly serverSideEncryption: PublicEncryptionSetting;
|
|
209
256
|
/** UTC timestamp (milliseconds) when this part was uploaded. */
|
|
210
257
|
readonly uploadTimestamp: number;
|
|
211
258
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/types/upload.js"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/types/upload.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//#region src/upload/abort-scope.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates an abort scope linked to an optional upstream signal.
|
|
4
|
+
* Task failures can abort the same scope so sibling tasks stop promptly.
|
|
5
|
+
* @param upstream - Caller-provided abort signal, if any.
|
|
6
|
+
*
|
|
7
|
+
* @returns A linked abort scope.
|
|
8
|
+
*/
|
|
9
|
+
function createAbortScope(upstream) {
|
|
10
|
+
const controller = new AbortController();
|
|
11
|
+
let upstreamAbort;
|
|
12
|
+
const abort = (reason) => {
|
|
13
|
+
if (!controller.signal.aborted) controller.abort(reason);
|
|
14
|
+
};
|
|
15
|
+
if (upstream?.aborted === true) abort(upstream.reason);
|
|
16
|
+
else if (upstream !== void 0) {
|
|
17
|
+
upstreamAbort = () => abort(upstream.reason);
|
|
18
|
+
upstream.addEventListener("abort", upstreamAbort, { once: true });
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
signal: controller.signal,
|
|
22
|
+
abort,
|
|
23
|
+
dispose() {
|
|
24
|
+
if (upstreamAbort !== void 0) upstream?.removeEventListener("abort", upstreamAbort);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Throws the abort reason or first task rejection from a settled task set.
|
|
30
|
+
* @param settled - Results from `Promise.allSettled`.
|
|
31
|
+
* @param abortScope - Scope that coordinated the tasks.
|
|
32
|
+
*
|
|
33
|
+
* @throws The abort reason or first rejected task reason.
|
|
34
|
+
*/
|
|
35
|
+
function throwRejectedOrAbortReason(settled, abortScope) {
|
|
36
|
+
const rejected = settled.find((result) => result.status === "rejected");
|
|
37
|
+
if (rejected === void 0) return;
|
|
38
|
+
if (abortScope.signal.aborted && abortScope.signal.reason !== void 0) throw abortScope.signal.reason;
|
|
39
|
+
/* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */
|
|
40
|
+
throw rejected.reason;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
exports.createAbortScope = createAbortScope;
|
|
44
|
+
exports.throwRejectedOrAbortReason = throwRejectedOrAbortReason;
|
|
45
|
+
|
|
46
|
+
//# sourceMappingURL=abort-scope.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-scope.cjs","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Shared abort scope for multipart work that fans out into concurrent tasks. */
|
|
2
|
+
export interface AbortScope {
|
|
3
|
+
/** Signal linked to the caller signal and to task-level failures. */
|
|
4
|
+
readonly signal: AbortSignal;
|
|
5
|
+
/** Abort the scope if it has not already been aborted. */
|
|
6
|
+
abort(reason: unknown): void;
|
|
7
|
+
/** Detach any upstream abort listener. */
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates an abort scope linked to an optional upstream signal.
|
|
12
|
+
* Task failures can abort the same scope so sibling tasks stop promptly.
|
|
13
|
+
* @param upstream - Caller-provided abort signal, if any.
|
|
14
|
+
*
|
|
15
|
+
* @returns A linked abort scope.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createAbortScope(upstream: AbortSignal | undefined): AbortScope;
|
|
18
|
+
/**
|
|
19
|
+
* Throws the abort reason or first task rejection from a settled task set.
|
|
20
|
+
* @param settled - Results from `Promise.allSettled`.
|
|
21
|
+
* @param abortScope - Scope that coordinated the tasks.
|
|
22
|
+
*
|
|
23
|
+
* @throws The abort reason or first rejected task reason.
|
|
24
|
+
*/
|
|
25
|
+
export declare function throwRejectedOrAbortReason(settled: readonly PromiseSettledResult<unknown>[], abortScope: AbortScope): void;
|
|
26
|
+
//# sourceMappingURL=abort-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Shared abort scope for multipart work that fans out into concurrent tasks. */
|
|
2
|
+
export interface AbortScope {
|
|
3
|
+
/** Signal linked to the caller signal and to task-level failures. */
|
|
4
|
+
readonly signal: AbortSignal;
|
|
5
|
+
/** Abort the scope if it has not already been aborted. */
|
|
6
|
+
abort(reason: unknown): void;
|
|
7
|
+
/** Detach any upstream abort listener. */
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Creates an abort scope linked to an optional upstream signal.
|
|
12
|
+
* Task failures can abort the same scope so sibling tasks stop promptly.
|
|
13
|
+
* @param upstream - Caller-provided abort signal, if any.
|
|
14
|
+
*
|
|
15
|
+
* @returns A linked abort scope.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createAbortScope(upstream: AbortSignal | undefined): AbortScope;
|
|
18
|
+
/**
|
|
19
|
+
* Throws the abort reason or first task rejection from a settled task set.
|
|
20
|
+
* @param settled - Results from `Promise.allSettled`.
|
|
21
|
+
* @param abortScope - Scope that coordinated the tasks.
|
|
22
|
+
*
|
|
23
|
+
* @throws The abort reason or first rejected task reason.
|
|
24
|
+
*/
|
|
25
|
+
export declare function throwRejectedOrAbortReason(settled: readonly PromiseSettledResult<unknown>[], abortScope: AbortScope): void;
|
|
26
|
+
//# sourceMappingURL=abort-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-scope.d.ts","sourceRoot":"","sources":["../../src/upload/abort-scope.js"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,MAAM,WAAW,UAAU;IACzB,qEAAqE;IACrE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B,0DAA0D;IAC1D,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC5B,0CAA0C;IAC1C,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,CAqB9E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,SAAS,oBAAoB,CAAC,OAAO,CAAC,EAAE,EACjD,UAAU,EAAE,UAAU,GACrB,IAAI,CAUN"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/upload/abort-scope.ts
|
|
2
|
+
/**
|
|
3
|
+
* Creates an abort scope linked to an optional upstream signal.
|
|
4
|
+
* Task failures can abort the same scope so sibling tasks stop promptly.
|
|
5
|
+
* @param upstream - Caller-provided abort signal, if any.
|
|
6
|
+
*
|
|
7
|
+
* @returns A linked abort scope.
|
|
8
|
+
*/
|
|
9
|
+
function createAbortScope(upstream) {
|
|
10
|
+
const controller = new AbortController();
|
|
11
|
+
let upstreamAbort;
|
|
12
|
+
const abort = (reason) => {
|
|
13
|
+
if (!controller.signal.aborted) controller.abort(reason);
|
|
14
|
+
};
|
|
15
|
+
if (upstream?.aborted === true) abort(upstream.reason);
|
|
16
|
+
else if (upstream !== void 0) {
|
|
17
|
+
upstreamAbort = () => abort(upstream.reason);
|
|
18
|
+
upstream.addEventListener("abort", upstreamAbort, { once: true });
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
signal: controller.signal,
|
|
22
|
+
abort,
|
|
23
|
+
dispose() {
|
|
24
|
+
if (upstreamAbort !== void 0) upstream?.removeEventListener("abort", upstreamAbort);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Throws the abort reason or first task rejection from a settled task set.
|
|
30
|
+
* @param settled - Results from `Promise.allSettled`.
|
|
31
|
+
* @param abortScope - Scope that coordinated the tasks.
|
|
32
|
+
*
|
|
33
|
+
* @throws The abort reason or first rejected task reason.
|
|
34
|
+
*/
|
|
35
|
+
function throwRejectedOrAbortReason(settled, abortScope) {
|
|
36
|
+
const rejected = settled.find((result) => result.status === "rejected");
|
|
37
|
+
if (rejected === void 0) return;
|
|
38
|
+
if (abortScope.signal.aborted && abortScope.signal.reason !== void 0) throw abortScope.signal.reason;
|
|
39
|
+
/* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */
|
|
40
|
+
throw rejected.reason;
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { createAbortScope, throwRejectedOrAbortReason };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=abort-scope.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-scope.js","names":[],"sources":["../../src/upload/abort-scope.ts"],"sourcesContent":["/** Shared abort scope for multipart work that fans out into concurrent tasks. */\nexport interface AbortScope {\n /** Signal linked to the caller signal and to task-level failures. */\n readonly signal: AbortSignal\n /** Abort the scope if it has not already been aborted. */\n abort(reason: unknown): void\n /** Detach any upstream abort listener. */\n dispose(): void\n}\n\n/**\n * Creates an abort scope linked to an optional upstream signal.\n * Task failures can abort the same scope so sibling tasks stop promptly.\n * @param upstream - Caller-provided abort signal, if any.\n *\n * @returns A linked abort scope.\n */\nexport function createAbortScope(upstream: AbortSignal | undefined): AbortScope {\n const controller = new AbortController()\n let upstreamAbort: (() => void) | undefined\n const abort = (reason: unknown): void => {\n if (!controller.signal.aborted) controller.abort(reason)\n }\n\n if (upstream?.aborted === true) {\n abort(upstream.reason)\n } else if (upstream !== undefined) {\n upstreamAbort = () => abort(upstream.reason)\n upstream.addEventListener('abort', upstreamAbort, { once: true })\n }\n\n return {\n signal: controller.signal,\n abort,\n dispose() {\n if (upstreamAbort !== undefined) upstream?.removeEventListener('abort', upstreamAbort)\n },\n }\n}\n\n/**\n * Throws the abort reason or first task rejection from a settled task set.\n * @param settled - Results from `Promise.allSettled`.\n * @param abortScope - Scope that coordinated the tasks.\n *\n * @throws The abort reason or first rejected task reason.\n */\nexport function throwRejectedOrAbortReason(\n settled: readonly PromiseSettledResult<unknown>[],\n abortScope: AbortScope,\n): void {\n const rejected = settled.find(\n (result): result is PromiseRejectedResult => result.status === 'rejected',\n )\n if (rejected === undefined) return\n if (abortScope.signal.aborted && abortScope.signal.reason !== undefined) {\n throw abortScope.signal.reason\n }\n /* v8 ignore next -- Defensive fallback for unexpected task rejections outside the abort scope. */\n throw rejected.reason\n}\n"],"mappings":";;;;;;;;AAiBA,SAAgB,iBAAiB,UAA+C;CAC9E,MAAM,aAAa,IAAI,gBAAgB;CACvC,IAAI;CACJ,MAAM,SAAS,WAA0B;EACvC,IAAI,CAAC,WAAW,OAAO,SAAS,WAAW,MAAM,MAAM;CACzD;CAEA,IAAI,UAAU,YAAY,MACxB,MAAM,SAAS,MAAM;MAChB,IAAI,aAAa,KAAA,GAAW;EACjC,sBAAsB,MAAM,SAAS,MAAM;EAC3C,SAAS,iBAAiB,SAAS,eAAe,EAAE,MAAM,KAAK,CAAC;CAClE;CAEA,OAAO;EACL,QAAQ,WAAW;EACnB;EACA,UAAU;GACR,IAAI,kBAAkB,KAAA,GAAW,UAAU,oBAAoB,SAAS,aAAa;EACvF;CACF;AACF;;;;;;;;AASA,SAAgB,2BACd,SACA,YACM;CACN,MAAM,WAAW,QAAQ,MACtB,WAA4C,OAAO,WAAW,UACjE;CACA,IAAI,aAAa,KAAA,GAAW;CAC5B,IAAI,WAAW,OAAO,WAAW,WAAW,OAAO,WAAW,KAAA,GAC5D,MAAM,WAAW,OAAO;;CAG1B,MAAM,SAAS;AACjB"}
|
package/dist/upload/cancel.cjs
CHANGED
|
@@ -1,10 +1,185 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
const require_errors_index = require("../errors/index.cjs");
|
|
2
|
+
const require_best_effort = require("../util/best-effort.cjs");
|
|
3
|
+
//#region src/upload/cancel.ts
|
|
4
|
+
/** Default wall-clock bound for best-effort cleanup calls after upload failure. */
|
|
5
|
+
var DEFAULT_CLEANUP_TIMEOUT_MS = 3e4;
|
|
6
|
+
var fallbackCleanupDisposers = /* @__PURE__ */ new WeakMap();
|
|
7
|
+
/**
|
|
8
|
+
* Cancels an unfinished large file on a best-effort basis. Used at every
|
|
9
|
+
* error-handling boundary in the multipart upload, write-stream, and
|
|
10
|
+
* server-side copy paths to roll back in-progress uploads without
|
|
11
|
+
* letting a cancellation failure mask the underlying error the caller
|
|
12
|
+
* is about to see.
|
|
13
|
+
*
|
|
14
|
+
* Centralising the call removes a five-line `bestEffort` block that
|
|
15
|
+
* recurred at six sites with identical shape — the only thing that
|
|
16
|
+
* changed was the captured `fileId` and the surrounding error trail.
|
|
17
|
+
*
|
|
18
|
+
* @param raw - Low-level B2 API client.
|
|
19
|
+
* @param accountInfo - Authorized account state for the API URL + token.
|
|
20
|
+
* @param fileId - The in-progress large file ID to cancel.
|
|
21
|
+
* @param options - Optional request controls and cleanup-failure observer.
|
|
22
|
+
*
|
|
23
|
+
* @returns A promise that always resolves, regardless of the cancel
|
|
24
|
+
* call's outcome.
|
|
25
|
+
*/
|
|
26
|
+
async function cancelLargeFileBestEffort(raw, accountInfo, fileId, options) {
|
|
27
|
+
await require_best_effort.bestEffort(async () => {
|
|
28
|
+
const requestOptions = cleanupRequestOptions(options?.signal);
|
|
29
|
+
await waitForCleanup(raw.cancelLargeFile(accountInfo.getApiUrl(), accountInfo.getAuthToken(), { fileId }, requestOptions), requestOptions.signal);
|
|
30
|
+
}, (error) => options?.onCleanupFailure?.({
|
|
31
|
+
fileId,
|
|
32
|
+
error,
|
|
33
|
+
reason: "cancel-failed"
|
|
34
|
+
}));
|
|
8
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns cleanup request controls with a live timeout signal.
|
|
38
|
+
*
|
|
39
|
+
* @param signal - Caller-provided abort signal, if any.
|
|
40
|
+
* @param timeoutMs - Maximum time to spend waiting for cleanup.
|
|
41
|
+
*
|
|
42
|
+
* @returns Request controls with a signal independent of an already-aborted caller signal.
|
|
43
|
+
*/
|
|
44
|
+
function cleanupRequestOptions(signal, timeoutMs = DEFAULT_CLEANUP_TIMEOUT_MS) {
|
|
45
|
+
return { signal: createCleanupSignal(signal, timeoutMs) };
|
|
46
|
+
}
|
|
47
|
+
function createCleanupSignal(signal, timeoutMs) {
|
|
48
|
+
if (typeof AbortSignal.timeout === "function") {
|
|
49
|
+
if (signal === void 0 || signal.aborted) return AbortSignal.timeout(timeoutMs);
|
|
50
|
+
if (typeof AbortSignal.any === "function") return AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
|
|
51
|
+
}
|
|
52
|
+
return createFallbackCleanupSignal(signal, timeoutMs);
|
|
53
|
+
}
|
|
54
|
+
function createFallbackCleanupSignal(signal, timeoutMs) {
|
|
55
|
+
const controller = new AbortController();
|
|
56
|
+
const timeout = setTimeout(() => {
|
|
57
|
+
abortFallbackCleanup(controller, cleanupTimeoutReason(), cleanup);
|
|
58
|
+
}, timeoutMs);
|
|
59
|
+
const onAbort = () => {
|
|
60
|
+
const reason = signal === void 0 ? cleanupDomException("Cleanup aborted", "AbortError") : cleanupAbortReason(signal);
|
|
61
|
+
abortFallbackCleanup(controller, reason, cleanup);
|
|
62
|
+
};
|
|
63
|
+
const cleanup = () => {
|
|
64
|
+
clearTimeout(timeout);
|
|
65
|
+
signal?.removeEventListener("abort", onAbort);
|
|
66
|
+
fallbackCleanupDisposers.delete(controller.signal);
|
|
67
|
+
};
|
|
68
|
+
fallbackCleanupDisposers.set(controller.signal, cleanup);
|
|
69
|
+
if (signal === void 0 || signal.aborted) return controller.signal;
|
|
70
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
71
|
+
controller.signal.addEventListener("abort", cleanup, { once: true });
|
|
72
|
+
return controller.signal;
|
|
73
|
+
}
|
|
74
|
+
function abortFallbackCleanup(controller, reason, cleanup) {
|
|
75
|
+
if (!controller.signal.aborted) controller.abort(reason);
|
|
76
|
+
cleanup();
|
|
77
|
+
}
|
|
78
|
+
async function waitForCleanup(request, signal) {
|
|
79
|
+
if (signal.aborted) throw cleanupAbortReason(signal);
|
|
80
|
+
let removeAbortListener;
|
|
81
|
+
const aborted = new Promise((_resolve, reject) => {
|
|
82
|
+
const onAbort = () => reject(cleanupAbortReason(signal));
|
|
83
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
84
|
+
removeAbortListener = () => signal.removeEventListener("abort", onAbort);
|
|
85
|
+
});
|
|
86
|
+
try {
|
|
87
|
+
await Promise.race([request, aborted]);
|
|
88
|
+
} finally {
|
|
89
|
+
removeAbortListener?.();
|
|
90
|
+
fallbackCleanupDisposers.get(signal)?.();
|
|
91
|
+
request.catch(() => {});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function cleanupAbortReason(signal) {
|
|
95
|
+
return signal.reason ?? cleanupDomException("Cleanup aborted", "AbortError");
|
|
96
|
+
}
|
|
97
|
+
function cleanupTimeoutReason() {
|
|
98
|
+
return cleanupDomException("Cleanup timed out", "TimeoutError");
|
|
99
|
+
}
|
|
100
|
+
function cleanupDomException(message, name) {
|
|
101
|
+
if (typeof DOMException === "function") return new DOMException(message, name);
|
|
102
|
+
const error = new Error(message);
|
|
103
|
+
error.name = name;
|
|
104
|
+
return error;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Emits an observable cleanup event when cancellation is deliberately skipped
|
|
108
|
+
* because `b2_finish_large_file` may already have committed the file.
|
|
109
|
+
* @param fileId - Large file whose final state is ambiguous.
|
|
110
|
+
* @param error - Ambiguous finish error that will be thrown to the caller.
|
|
111
|
+
* @param onCleanupFailure - Optional observer for cleanup-related events.
|
|
112
|
+
*/
|
|
113
|
+
function notifyAmbiguousLargeFileCleanupSkipped(fileId, error, onCleanupFailure) {
|
|
114
|
+
try {
|
|
115
|
+
onCleanupFailure?.({
|
|
116
|
+
fileId,
|
|
117
|
+
error,
|
|
118
|
+
reason: "finish-ambiguous"
|
|
119
|
+
});
|
|
120
|
+
} catch {}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Adds high-level reconciliation metadata to an ambiguous finish response-body
|
|
124
|
+
* error and notifies the cleanup observer that cancellation was skipped.
|
|
125
|
+
*
|
|
126
|
+
* @param err - Raw finish response-body error from the low-level client.
|
|
127
|
+
* @param options - Large-file context used for reconciliation.
|
|
128
|
+
*
|
|
129
|
+
* @returns The enriched {@link FinishLargeFileResponseBodyError}.
|
|
130
|
+
*/
|
|
131
|
+
function handleAmbiguousFinishLargeFileResponseBodyError(err, options) {
|
|
132
|
+
const enriched = err.fileId === options.fileId && err.bucketId === options.bucketId && err.fileName === options.fileName ? err : new require_errors_index.FinishLargeFileResponseBodyError(err.message, {
|
|
133
|
+
cause: err.cause ?? err,
|
|
134
|
+
fileId: options.fileId,
|
|
135
|
+
bucketId: options.bucketId,
|
|
136
|
+
fileName: options.fileName
|
|
137
|
+
});
|
|
138
|
+
notifyAmbiguousLargeFileCleanupSkipped(options.fileId, enriched, options.onCleanupFailure);
|
|
139
|
+
return enriched;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Performs the shared large-file failure policy: ambiguous finish-body errors
|
|
143
|
+
* are enriched and left uncancelled, while all pre-finish errors trigger
|
|
144
|
+
* best-effort cancellation.
|
|
145
|
+
*
|
|
146
|
+
* @param err - Error from a multipart upload/copy/write-stream path.
|
|
147
|
+
* @param raw - Low-level B2 API client.
|
|
148
|
+
* @param accountInfo - Authorized account state.
|
|
149
|
+
* @param context - Large file metadata used for cleanup and diagnostics.
|
|
150
|
+
* @param options - Cleanup policy controls.
|
|
151
|
+
*
|
|
152
|
+
* @returns The error that should be surfaced to the caller.
|
|
153
|
+
*/
|
|
154
|
+
async function resolveLargeFileErrorAfterCleanup(err, raw, accountInfo, context, options = {}) {
|
|
155
|
+
if (err instanceof require_errors_index.FinishLargeFileResponseBodyError) return handleAmbiguousFinishLargeFileResponseBodyError(err, context);
|
|
156
|
+
if (options.cancelOnError ?? true) await cancelLargeFileBestEffort(raw, accountInfo, context.fileId, {
|
|
157
|
+
...context.signal !== void 0 ? { signal: context.signal } : {},
|
|
158
|
+
...context.onCleanupFailure !== void 0 ? { onCleanupFailure: context.onCleanupFailure } : {}
|
|
159
|
+
});
|
|
160
|
+
return err;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Throwing wrapper around {@link resolveLargeFileErrorAfterCleanup} for paths
|
|
164
|
+
* that can surface the error directly.
|
|
165
|
+
* @param err - Error from a multipart upload/copy/write-stream path.
|
|
166
|
+
* @param raw - Low-level B2 API client.
|
|
167
|
+
* @param accountInfo - Authorized account state.
|
|
168
|
+
* @param context - Large file metadata used for cleanup and diagnostics.
|
|
169
|
+
* @param options - Cleanup policy controls.
|
|
170
|
+
*
|
|
171
|
+
* @throws The resolved large-file error after cleanup policy is applied.
|
|
172
|
+
*/
|
|
173
|
+
async function cleanupAfterLargeFileError(err, raw, accountInfo, context, options) {
|
|
174
|
+
throw await resolveLargeFileErrorAfterCleanup(err, raw, accountInfo, context, options);
|
|
175
|
+
}
|
|
176
|
+
//#endregion
|
|
177
|
+
exports.DEFAULT_CLEANUP_TIMEOUT_MS = DEFAULT_CLEANUP_TIMEOUT_MS;
|
|
9
178
|
exports.cancelLargeFileBestEffort = cancelLargeFileBestEffort;
|
|
10
|
-
|
|
179
|
+
exports.cleanupAfterLargeFileError = cleanupAfterLargeFileError;
|
|
180
|
+
exports.cleanupRequestOptions = cleanupRequestOptions;
|
|
181
|
+
exports.handleAmbiguousFinishLargeFileResponseBodyError = handleAmbiguousFinishLargeFileResponseBodyError;
|
|
182
|
+
exports.notifyAmbiguousLargeFileCleanupSkipped = notifyAmbiguousLargeFileCleanupSkipped;
|
|
183
|
+
exports.resolveLargeFileErrorAfterCleanup = resolveLargeFileErrorAfterCleanup;
|
|
184
|
+
|
|
185
|
+
//# sourceMappingURL=cancel.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancel.cjs","sources":["../../src/upload/cancel.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { LargeFileId } from '../types/ids.ts'\nimport { bestEffort } from '../util/best-effort.ts'\n\n/**\n * Cancels an unfinished large file on a best-effort basis. Used at every\n * error-handling boundary in the multipart upload, write-stream, and\n * server-side copy paths to roll back in-progress uploads without\n * letting a cancellation failure mask the underlying error the caller\n * is about to see.\n *\n * Centralising the call removes a five-line `bestEffort` block that\n * recurred at six sites with identical shape — the only thing that\n * changed was the captured `fileId` and the surrounding error trail.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state for the API URL + token.\n * @param fileId - The in-progress large file ID to cancel.\n *\n * @returns A promise that always resolves, regardless of the cancel\n * call's outcome.\n */\nexport async function cancelLargeFileBestEffort(\n raw: RawClient,\n accountInfo: AccountInfo,\n fileId: LargeFileId,\n): Promise<void> {\n await bestEffort(() =>\n raw.cancelLargeFile(accountInfo.getApiUrl(), accountInfo.getAuthToken(), { fileId }),\n )\n}\n"],"names":["bestEffort"],"mappings":";;;AAuBA,eAAsB,0BACpB,KACA,aACA,QACe;AACf,QAAMA,WAAAA;AAAAA,IAAW,MACf,IAAI,gBAAgB,YAAY,UAAA,GAAa,YAAY,gBAAgB,EAAE,OAAA,CAAQ;AAAA,EAAA;AAEvF;;"}
|
|
1
|
+
{"version":3,"file":"cancel.cjs","names":[],"sources":["../../src/upload/cancel.ts"],"sourcesContent":["import type { AccountInfo } from '../auth/account-info.ts'\nimport { FinishLargeFileResponseBodyError } from '../errors/index.ts'\nimport type { RawClient } from '../raw/index.ts'\nimport type { BucketId, LargeFileId } from '../types/ids.ts'\nimport { bestEffort } from '../util/best-effort.ts'\n\n/** Event emitted when best-effort `b2_cancel_large_file` cleanup fails. */\nexport interface CancelLargeFileCleanupFailureEvent {\n /** Unfinished large file that may remain orphaned. */\n readonly fileId: LargeFileId\n /** Error thrown by `b2_cancel_large_file`. */\n readonly error: unknown\n /** Cleanup phase that produced the observable event. */\n readonly reason: 'cancel-failed'\n}\n\n/** Event emitted when cleanup is skipped because finish may have committed. */\nexport interface AmbiguousFinishCleanupFailureEvent {\n /** Large file whose final server-side state is ambiguous. */\n readonly fileId: LargeFileId\n /** Error thrown to the caller with reconciliation metadata. */\n readonly error: FinishLargeFileResponseBodyError\n /** Cleanup phase that produced the observable event. */\n readonly reason: 'finish-ambiguous'\n}\n\n/** Event emitted when large-file cleanup fails or is deliberately skipped. */\nexport type CleanupFailureEvent =\n | CancelLargeFileCleanupFailureEvent\n | AmbiguousFinishCleanupFailureEvent\n\n/** Callback invoked when best-effort cancellation fails or finish cleanup is skipped. */\nexport type CleanupFailureListener = (event: CleanupFailureEvent) => void\n\n/** Shared option for observing large-file cleanup failures or skipped cleanup. */\nexport interface CleanupFailureOptions {\n /**\n * Callback invoked if best-effort cancellation fails, or if cancellation is\n * skipped because `b2_finish_large_file` may already have committed.\n */\n readonly onCleanupFailure?: CleanupFailureListener\n}\n\n/** Default wall-clock bound for best-effort cleanup calls after upload failure. */\nexport const DEFAULT_CLEANUP_TIMEOUT_MS = 30_000\n\nconst fallbackCleanupDisposers = new WeakMap<AbortSignal, () => void>()\n\n/** Context needed to reconcile or cancel an unfinished large file after an error. */\nexport interface LargeFileCleanupContext {\n readonly fileId: LargeFileId\n readonly bucketId: BucketId\n readonly fileName: string\n readonly signal?: AbortSignal | undefined\n readonly onCleanupFailure?: CleanupFailureListener | undefined\n}\n\n/** Options for applying the shared large-file cleanup policy. */\nexport interface LargeFileCleanupPolicyOptions {\n /**\n * Whether non-ambiguous failures should cancel the unfinished large file.\n * Defaults to true. Explicit resume callers can disable this so the SDK does\n * not cancel a large file that it did not create.\n */\n readonly cancelOnError?: boolean\n}\n\n/**\n * Cancels an unfinished large file on a best-effort basis. Used at every\n * error-handling boundary in the multipart upload, write-stream, and\n * server-side copy paths to roll back in-progress uploads without\n * letting a cancellation failure mask the underlying error the caller\n * is about to see.\n *\n * Centralising the call removes a five-line `bestEffort` block that\n * recurred at six sites with identical shape — the only thing that\n * changed was the captured `fileId` and the surrounding error trail.\n *\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state for the API URL + token.\n * @param fileId - The in-progress large file ID to cancel.\n * @param options - Optional request controls and cleanup-failure observer.\n *\n * @returns A promise that always resolves, regardless of the cancel\n * call's outcome.\n */\nexport async function cancelLargeFileBestEffort(\n raw: RawClient,\n accountInfo: AccountInfo,\n fileId: LargeFileId,\n options?: { readonly signal?: AbortSignal } & CleanupFailureOptions,\n): Promise<void> {\n await bestEffort(\n async () => {\n const requestOptions = cleanupRequestOptions(options?.signal)\n const request = raw.cancelLargeFile(\n accountInfo.getApiUrl(),\n accountInfo.getAuthToken(),\n { fileId },\n requestOptions,\n )\n await waitForCleanup(request, requestOptions.signal)\n },\n (error) => options?.onCleanupFailure?.({ fileId, error, reason: 'cancel-failed' }),\n )\n}\n\n/**\n * Returns cleanup request controls with a live timeout signal.\n *\n * @param signal - Caller-provided abort signal, if any.\n * @param timeoutMs - Maximum time to spend waiting for cleanup.\n *\n * @returns Request controls with a signal independent of an already-aborted caller signal.\n */\nexport function cleanupRequestOptions(\n signal: AbortSignal | undefined,\n timeoutMs = DEFAULT_CLEANUP_TIMEOUT_MS,\n): { readonly signal: AbortSignal } {\n return { signal: createCleanupSignal(signal, timeoutMs) }\n}\n\nfunction createCleanupSignal(signal: AbortSignal | undefined, timeoutMs: number): AbortSignal {\n if (typeof AbortSignal.timeout === 'function') {\n if (signal === undefined || signal.aborted) return AbortSignal.timeout(timeoutMs)\n if (typeof AbortSignal.any === 'function') {\n return AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)])\n }\n }\n\n return createFallbackCleanupSignal(signal, timeoutMs)\n}\n\nfunction createFallbackCleanupSignal(\n signal: AbortSignal | undefined,\n timeoutMs: number,\n): AbortSignal {\n const controller = new AbortController()\n const timeout = setTimeout(() => {\n abortFallbackCleanup(controller, cleanupTimeoutReason(), cleanup)\n }, timeoutMs)\n\n const onAbort = () => {\n const reason =\n signal === undefined\n ? cleanupDomException('Cleanup aborted', 'AbortError')\n : cleanupAbortReason(signal)\n abortFallbackCleanup(controller, reason, cleanup)\n }\n const cleanup = () => {\n clearTimeout(timeout)\n signal?.removeEventListener('abort', onAbort)\n fallbackCleanupDisposers.delete(controller.signal)\n }\n fallbackCleanupDisposers.set(controller.signal, cleanup)\n\n if (signal === undefined || signal.aborted) {\n return controller.signal\n }\n\n signal.addEventListener('abort', onAbort, { once: true })\n controller.signal.addEventListener('abort', cleanup, { once: true })\n return controller.signal\n}\n\nfunction abortFallbackCleanup(\n controller: AbortController,\n reason: unknown,\n cleanup: () => void,\n): void {\n if (!controller.signal.aborted) controller.abort(reason)\n cleanup()\n}\n\nasync function waitForCleanup(request: Promise<unknown>, signal: AbortSignal): Promise<void> {\n if (signal.aborted) throw cleanupAbortReason(signal)\n\n let removeAbortListener: (() => void) | undefined\n const aborted = new Promise<never>((_resolve, reject) => {\n const onAbort = () => reject(cleanupAbortReason(signal))\n signal.addEventListener('abort', onAbort, { once: true })\n removeAbortListener = () => signal.removeEventListener('abort', onAbort)\n })\n\n try {\n await Promise.race([request, aborted])\n } finally {\n removeAbortListener?.()\n fallbackCleanupDisposers.get(signal)?.()\n void request.catch(() => {})\n }\n}\n\nfunction cleanupAbortReason(signal: AbortSignal): unknown {\n return signal.reason ?? cleanupDomException('Cleanup aborted', 'AbortError')\n}\n\nfunction cleanupTimeoutReason(): unknown {\n return cleanupDomException('Cleanup timed out', 'TimeoutError')\n}\n\nfunction cleanupDomException(message: string, name: string): Error {\n if (typeof DOMException === 'function') return new DOMException(message, name)\n const error = new Error(message)\n error.name = name\n return error\n}\n\n/**\n * Emits an observable cleanup event when cancellation is deliberately skipped\n * because `b2_finish_large_file` may already have committed the file.\n * @param fileId - Large file whose final state is ambiguous.\n * @param error - Ambiguous finish error that will be thrown to the caller.\n * @param onCleanupFailure - Optional observer for cleanup-related events.\n */\nexport function notifyAmbiguousLargeFileCleanupSkipped(\n fileId: LargeFileId,\n error: FinishLargeFileResponseBodyError,\n onCleanupFailure?: CleanupFailureListener,\n): void {\n try {\n onCleanupFailure?.({ fileId, error, reason: 'finish-ambiguous' })\n } catch {\n // Observer failures are secondary and must not hide the finish ambiguity.\n }\n}\n\n/**\n * Adds high-level reconciliation metadata to an ambiguous finish response-body\n * error and notifies the cleanup observer that cancellation was skipped.\n *\n * @param err - Raw finish response-body error from the low-level client.\n * @param options - Large-file context used for reconciliation.\n *\n * @returns The enriched {@link FinishLargeFileResponseBodyError}.\n */\nexport function handleAmbiguousFinishLargeFileResponseBodyError(\n err: FinishLargeFileResponseBodyError,\n options: LargeFileCleanupContext,\n): FinishLargeFileResponseBodyError {\n const enriched =\n err.fileId === options.fileId &&\n err.bucketId === options.bucketId &&\n err.fileName === options.fileName\n ? err\n : new FinishLargeFileResponseBodyError(err.message, {\n cause: err.cause ?? err,\n fileId: options.fileId,\n bucketId: options.bucketId,\n fileName: options.fileName,\n })\n notifyAmbiguousLargeFileCleanupSkipped(options.fileId, enriched, options.onCleanupFailure)\n return enriched\n}\n\n/**\n * Performs the shared large-file failure policy: ambiguous finish-body errors\n * are enriched and left uncancelled, while all pre-finish errors trigger\n * best-effort cancellation.\n *\n * @param err - Error from a multipart upload/copy/write-stream path.\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Large file metadata used for cleanup and diagnostics.\n * @param options - Cleanup policy controls.\n *\n * @returns The error that should be surfaced to the caller.\n */\nexport async function resolveLargeFileErrorAfterCleanup(\n err: unknown,\n raw: RawClient,\n accountInfo: AccountInfo,\n context: LargeFileCleanupContext,\n options: LargeFileCleanupPolicyOptions = {},\n): Promise<unknown> {\n if (err instanceof FinishLargeFileResponseBodyError) {\n return handleAmbiguousFinishLargeFileResponseBodyError(err, context)\n }\n if (options.cancelOnError ?? true) {\n await cancelLargeFileBestEffort(raw, accountInfo, context.fileId, {\n ...(context.signal !== undefined ? { signal: context.signal } : {}),\n ...(context.onCleanupFailure !== undefined\n ? { onCleanupFailure: context.onCleanupFailure }\n : {}),\n })\n }\n return err\n}\n\n/**\n * Throwing wrapper around {@link resolveLargeFileErrorAfterCleanup} for paths\n * that can surface the error directly.\n * @param err - Error from a multipart upload/copy/write-stream path.\n * @param raw - Low-level B2 API client.\n * @param accountInfo - Authorized account state.\n * @param context - Large file metadata used for cleanup and diagnostics.\n * @param options - Cleanup policy controls.\n *\n * @throws The resolved large-file error after cleanup policy is applied.\n */\nexport async function cleanupAfterLargeFileError(\n err: unknown,\n raw: RawClient,\n accountInfo: AccountInfo,\n context: LargeFileCleanupContext,\n options?: LargeFileCleanupPolicyOptions,\n): Promise<never> {\n throw await resolveLargeFileErrorAfterCleanup(err, raw, accountInfo, context, options)\n}\n"],"mappings":"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"}
|