UNPKG

fp-ts-indexeddb

Version:

Simple FP-TS based wrapper around indexedDB

27 lines (26 loc) 1.86 kB
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;