Skip to content

1681-engine / index / SaveStore

Class: SaveStore ​

Defined in: src/save/SaveStore.ts:68

Named save slots with a schema version, migrations from older versions, a checksum to catch a damaged slot, and a backup of the previous save to fall back to. Data must be JSON-safe (plain objects, arrays, strings, finite numbers, booleans, null).

ts
const saves = new SaveStore({ version: 3, migrations: { 1: addInventory, 2: renameGold } });
await saves.save('slot1', state, { level: 4 });
const r = await saves.load<GameState>('slot1');
if (r.ok) start(r.data); else if (r.reason !== 'missing') warn(r.reason);

Writes to one slot are queued in order, so an autosave and a manual save never land the wrong way round.

Constructors ​

Constructor ​

ts
new SaveStore(options): SaveStore;

Defined in: src/save/SaveStore.ts:77

Parameters ​

ParameterType
optionsSaveStoreOptions

Returns ​

SaveStore

Properties ​

version ​

ts
readonly version: number;

Defined in: src/save/SaveStore.ts:69

Methods ​

delete() ​

ts
delete(slot): Promise<void>;

Defined in: src/save/SaveStore.ts:117

Removes a slot and its backup.

Parameters ​

ParameterType
slotstring

Returns ​

Promise<void>


list() ​

ts
list(): Promise<SaveInfo[]>;

Defined in: src/save/SaveStore.ts:126

Every slot that reads, newest first, without migrating its data. A damaged slot is left out.

Returns ​

Promise<SaveInfo[]>


load() ​

ts
load<T>(slot): Promise<LoadResult<T>>;

Defined in: src/save/SaveStore.ts:106

Reads slot, brought to the current version. Never throws for a bad slot: the result says what went wrong.

Type Parameters ​

Type Parameter
T

Parameters ​

ParameterType
slotstring

Returns ​

Promise<LoadResult<T>>


save() ​

ts
save(
   slot, 
   data, 
   meta?
): Promise<SaveInfo>;

Defined in: src/save/SaveStore.ts:88

Writes data to slot at the current version. Rejects when the backend does (a full disk, a quota).

Parameters ​

ParameterTypeDefault value
slotstringundefined
dataunknownundefined
metaunknownnull

Returns ​

Promise<SaveInfo>

Released under the MIT License.