Skip to content
2 min read · 392 words

Class: FlydriveSpoolStore

"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);

Constructors

Constructor

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

Parameters

ParameterType
diskDisk
optsFlydriveSpoolStoreOptions

Returns

FlydriveSpoolStore

Methods

delete()

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

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.


keyFor()

ts
keyFor(callId: string): string;

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>;

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.


write()

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

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

Parameters

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

Returns

Promise<FlydriveSpoolReader>

A FlydriveSpoolReader over the stored bytes.