Skip to content

S3Storage

Defined in: src/session/s3-storage.ts:46

S3-based implementation of SnapshotStorage. Persists session snapshots as JSON objects in an S3 bucket.

Object key layout:

[<prefix>/]<sessionId>/scopes/<scope>/<scopeId>/snapshots/
snapshot_latest.json
immutable_history/
snapshot_<uuid7>.json
new S3Storage(config): S3Storage;

Defined in: src/session/s3-storage.ts:57

Creates new S3Storage instance

ParameterTypeDescription
configS3StorageConfigConfiguration options

S3Storage

saveSnapshot(params): Promise<void>;

Defined in: src/session/s3-storage.ts:93

Persists a snapshot to S3. If isLatest is true, writes to snapshot_latest.json (overwriting any previous). Otherwise, writes to immutable_history/snapshot_<snapshotId>.json.

ParameterType
params{ location: SnapshotLocation; snapshotId: string; isLatest: boolean; snapshot: Snapshot; }
params.locationSnapshotLocation
params.snapshotIdstring
params.isLatestboolean
params.snapshotSnapshot

Promise<void>

SnapshotStorage.saveSnapshot


loadSnapshot(params): Promise<Snapshot>;

Defined in: src/session/s3-storage.ts:111

Loads a snapshot from S3. If snapshotId is omitted, loads snapshot_latest.json. Returns null if the object does not exist.

ParameterType
params{ location: SnapshotLocation; snapshotId?: string; }
params.locationSnapshotLocation
params.snapshotId?string

Promise<Snapshot>

SnapshotStorage.loadSnapshot


listSnapshotIds(params): Promise<string[]>;

Defined in: src/session/s3-storage.ts:126

Lists immutable snapshot IDs for a scope, sorted chronologically. Since IDs are UUID v7, lexicographic sort equals chronological order. Pushes startAfter and limit down to S3 via StartAfter and MaxKeys to avoid fetching unnecessary objects. Returns an empty array if no snapshots exist yet.

ParameterType
params{ location: SnapshotLocation; limit?: number; startAfter?: string; }
params.locationSnapshotLocation
params.limit?number
params.startAfter?string

Promise<string[]>

SnapshotStorage.listSnapshotIds


deleteSession(params): Promise<void>;

Defined in: src/session/s3-storage.ts:180

Deletes all S3 objects belonging to a session by listing and batch-deleting everything under [<prefix>/]<sessionId>/. Handles buckets with more than 1000 objects via continuation token pagination. No-ops if the session has no objects.

ParameterType
params{ sessionId: string; }
params.sessionIdstring

Promise<void>

SnapshotStorage.deleteSession


loadManifest(params): Promise<SnapshotManifest>;

Defined in: src/session/s3-storage.ts:203

Loads the snapshot manifest for a scope from S3. Returns a default manifest with the current timestamp if none exists yet.

ParameterType
params{ location: SnapshotLocation; }
params.locationSnapshotLocation

Promise<SnapshotManifest>

SnapshotStorage.loadManifest


saveManifest(params): Promise<void>;

Defined in: src/session/s3-storage.ts:218

Persists the snapshot manifest for a scope to S3.

ParameterType
params{ location: SnapshotLocation; manifest: SnapshotManifest; }
params.locationSnapshotLocation
params.manifestSnapshotManifest

Promise<void>

SnapshotStorage.saveManifest