Skip to content
2 min read · 468 words

Class: FlydriveSpoolStore

Defined in: batteries/storage/flydrive/index.ts:314

"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: batteries/storage/flydrive/index.ts:319

Parameters

ParameterType
diskDisk
optsFlydriveSpoolStoreOptions

Returns

FlydriveSpoolStore

Methods

delete()

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

Defined in: batteries/storage/flydrive/index.ts:387

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: batteries/storage/flydrive/index.ts:401

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: batteries/storage/flydrive/index.ts:370

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: batteries/storage/flydrive/index.ts:339

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;