ReadonlykindThe single payload kind this provider natively produces/consumes.
Optional ReadonlysupportsWhether directCopy/directMove accept a container
sourcePath and recurse internally. When false/omitted, the framework
never calls directCopy/directMove with a container path - it falls
back to listing the container and transferring each entry individually
(which may still use directCopy/directMove per entry).
OptionalcanSelf-reported direct-transfer eligibility - the provider owns what "same" means for its backend (e.g. same mount for filesystem, same bucket+region+credentials for object storage).
OptionalcreateCreates an empty container at path (idempotent - mkdir-p style). Used
by non-direct recursive copy/move to recreate source containers that
hold no entries at the destination. Providers whose backend has no real
container concept can omit this.
OptionaldeleteOptionaldirectOptionaltelemetry: TransferTelemetryOptionaldirectOptionaltelemetry: TransferTelemetryOptionalgetProvider-specific multipart upload (e.g. S3's multipart protocol). The
read side needs no equivalent: any readable handle implementing
RangeReadable can be read in parts.
With resume, a token from a previous writer's resumeToken(), the
writer continues that upload: it re-checks which parts were actually
committed and skips any part it is given again. The token's offset is
the size of the committed parts before the first missing one, so the
caller only needs to send the parts from that offset on.
Optionalopts: { resume?: ResumeToken }OptionalgetReports this provider's part-size bounds for a multipart transfer of an
entry of totalSize bytes (e.g. S3's minimum part size and 10000-part
cap). Omit when the provider has no such constraints - the framework
treats a missing implementation as unconstrained.
Opens a writable stream. With resume, the provider re-checks what was
actually committed and continues from there, reporting the real resume
position as startOffset (bytes).
Optionalopts: { resume?: ResumeToken }OptionaljoinBuilds a child key from a container key and a child name. Omit to use
the framework default (/-join).
OptionallistLists the entries in a container. Omitted by protocols with no container concept.
Optionaloptions: { recursive?: boolean; regex?: RegExp }OptionalsetOmitted by protocols with no generic way to change entry properties.
A configured source/sink instance, as returned by IOProviderFactory.createProvider.
Kis the single PayloadKind this provider natively produces/consumes - e.g. a pure-TS filesystem plugin isIOProvider<"js">, a Rust-FFI-backed plugin isIOProvider<"native">.Every
pathargument is the provider-specific entry or container key (as produced byIOProviderFactory.toProviderInputs). Each method implies whether it addresses an entry or a container.Disposal is
Symbol.asyncDispose(TC39 explicit resource management) - host code disposes deterministically viaawait using provider = ..., including on thrown errors, without needing a bespoke method name.