Skip to content
2 min read · 468 words

Class: FlydriveSpoolStore ​

Defined in: src/batteries/storage/flydrive/index.ts:330

"Give bytes, get a reader" persistence layer over a flydrive Disk.

Remarks ​

write(callId, bytes) calls disk.put(key, bytes) where key = keyPrefix + callId, then returns a fresh FlydriveSpoolReader pointed at the same key. read(callId) returns a reader without re-writing; delete(callId) calls disk.delete(key).

The store is stateless — it owns no in-memory cache of writes. Multiple FlydriveSpoolStore instances sharing the same disk + key prefix see the same data.

Example ​

ts
import { Disk } from "flydrive";
import { FSDriver } from "flydrive/drivers/fs";
import { FlydriveSpoolStore } from "@nhtio/adk/batteries/storage/flydrive";

const disk = new Disk(
  new FSDriver({ location: "./tmp", visibility: "public" }),
);
const store = new FlydriveSpoolStore(disk);

const bytes = await tool.executor(ctx)(args);
const reader = await store.write(callId, bytes);
const Ctor = tool.artifactConstructor?.() ?? SpooledArtifact;
const artifact = new Ctor(reader);

Implements ​

Constructors ​

Constructor ​

ts
new FlydriveSpoolStore(disk: Disk, opts?: FlydriveSpoolStoreOptions): FlydriveSpoolStore;

Defined in: src/batteries/storage/flydrive/index.ts:335

Parameters ​

ParameterType
diskDisk
optsFlydriveSpoolStoreOptions

Returns ​

FlydriveSpoolStore

Methods ​

delete() ​

ts
delete(callId: string): Promise<boolean>;

Defined in: src/batteries/storage/flydrive/index.ts:403

Removes the entry under callId.

Parameters ​

ParameterTypeDescription
callIdstringIdentifier whose entry should be removed.

Returns ​

Promise<boolean>

true if the key existed and was removed; false if it didn't exist.

Implementation of ​

ts
SpoolStore.delete;

keyFor() ​

ts
keyFor(callId: string): string;

Defined in: src/batteries/storage/flydrive/index.ts:417

Returns the full disk key for a given callId (i.e. keyPrefix + callId).

Parameters ​

ParameterType
callIdstring

Returns ​

string

Remarks ​

Useful for tests or for callers that want to interact with the underlying disk directly.


read() ​

ts
read(callId: string, opts?: FlydriveSpoolReaderOptions): Promise<FlydriveSpoolReader | undefined>;

Defined in: src/batteries/storage/flydrive/index.ts:386

Returns a reader over the bytes previously written under callId.

Parameters ​

ParameterTypeDescription
callIdstringIdentifier supplied to a prior FlydriveSpoolStore.write call.
opts?FlydriveSpoolReaderOptionsPer-call override for streamThresholdBytes.

Returns ​

Promise<FlydriveSpoolReader | undefined>

A FlydriveSpoolReader, or undefined if the key is missing.

Remarks ​

Returns undefined if the underlying key does not exist. Existence is checked via disk.exists(key) before the reader is returned, so callers can rely on a defined return value pointing at a real object.

Implementation of ​

ts
SpoolStore.read;

write() ​

ts
write(
   callId: string,
   bytes:
  | string
  | Uint8Array<ArrayBufferLike>
  | ReadableStream<Uint8Array<ArrayBufferLike>>,
opts?: FlydriveSpoolReaderOptions): Promise<FlydriveSpoolReader>;

Defined in: src/batteries/storage/flydrive/index.ts:355

Persists bytes under callId and returns a reader bound to the stored key.

Parameters ​

ParameterTypeDescription
callIdstringIdentifier used to retrieve the bytes via FlydriveSpoolStore.read.
bytes| string | Uint8Array<ArrayBufferLike> | ReadableStream<Uint8Array<ArrayBufferLike>>The bytes to store, as a string, Uint8Array, or ReadableStream<Uint8Array>.
opts?FlydriveSpoolReaderOptionsPer-call override for streamThresholdBytes.

Returns ​

Promise<FlydriveSpoolReader>

A FlydriveSpoolReader over the stored bytes.

Remarks ​

string/Uint8Array input goes through disk.put; ReadableStream<Uint8Array> is forwarded to disk.putStream (via Readable.fromWeb) so the payload streams straight to the backing driver — to disk for FSDriver, to the object store for S3/GCS — without being materialized in memory first.

Implementation of ​

ts
SpoolStore.write;