fp-ts-indexeddb
Version:
Simple FP-TS based wrapper around indexedDB
27 lines (26 loc) • 1.86 kB
TypeScript
import * as TE from 'fp-ts/lib/TaskEither';
import * as t from 'io-ts';
import type { ReadonlyRecord } from 'fp-ts/lib/ReadonlyRecord';
export declare type StoreName = string;
export declare type Store<StoreC extends t.Mixed> = {
key: string;
codec: StoreC;
};
export declare type DBSchema<StoreC extends t.Mixed> = {
version: number;
stores: ReadonlyRecord<StoreName, Store<StoreC>>;
};
export declare type DBSchemas<StoreC extends t.Mixed> = ReadonlyArray<DBSchema<StoreC>>;
export declare type DatabaseInfo<StoreC extends t.Mixed> = {
database: IDBDatabase;
schema: DBSchema<StoreC>;
};
export declare type IndexedDbError = DOMException | Error;
export declare const open: <StoreC extends t.Mixed>(dbName: string, schema: DBSchema<StoreC>) => TE.TaskEither<IndexedDbError, DatabaseInfo<StoreC>>;
export declare const insert: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => (v: StoreC["_A"]) => TE.TaskEither<IndexedDbError, StoreC["_A"]>;
export declare const put: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => (v: StoreC["_A"]) => TE.TaskEither<IndexedDbError, StoreC["_A"]>;
export declare const getAll: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => TE.TaskEither<IndexedDbError, StoreC["_A"][]>;
export declare const get: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => (v: IDBValidKey) => TE.TaskEither<IndexedDbError, StoreC["_A"]>;
export declare const remove: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => (v: IDBValidKey) => TE.TaskEither<IndexedDbError, boolean>;
export declare const clearStore: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>, storeName: string) => TE.TaskEither<IndexedDbError, boolean>;
export declare const close: <StoreC extends t.Mixed>(db: DatabaseInfo<StoreC>) => void;