0.4.4 • Published 10 days ago

@swan-io/indexed-db v0.4.4

Weekly downloads
-
License
MIT
Repository
github
Last release
10 days ago

@swan-io/indexed-db

Tests mit licence npm version bundlephobia

A resilient, Future-based key-value store for IndexedDB.

Installation

$ yarn add @swan-io/indexed-db
# --- or ---
$ npm install --save @swan-io/indexed-db

Quickstart

const store = openStore("myDatabaseName", "myStoreName");

store
  .setMany({
    firstName: "Mathieu",
    lastName: "Breton",
  })
  .flatMap(() => store.getMany(["firstName", "lastName"]))
  .flatMap(({ firstName, lastName }) => {
    console.log({
      firstName,
      lastName,
    });

    return store.clear();
  })
  .tap(() => {
    console.log("✅");
  });

API

Open a database, create a store if needed and returns methods to manipulate it. Note that you can open multiple databases / stores, with different names.

const store = await openStore("myDatabaseName", "myStoreName", {
  transactionRetries: 2, // retry failed transactions (default: 2)
  transactionTimeout: 500, // timeout a transaction when it takes too long (default: 500ms)
  onDatabaseError: (error: Error) => console.error(error), // called with idb errors (default: noop)
});

store.getMany

Get many values at once. Resolves with a record.

store
  .getMany(["firstName", "lastName"])
  .map(({ firstName, lastName }) => console.log({ firstName, lastName }));

store.setMany

Set many key-value pairs at once.

store
  .setMany({ firstName: "Mathieu", lastName: "Breton" })
  .tap(() => console.log("✅"));

store.clear

Clear all values in the store.

store.clear().tap(() => console.log("✅"));

🙌 Acknowledgements

0.4.4

10 days ago

0.4.3

18 days ago

0.4.2

22 days ago

0.4.1

25 days ago

0.4.0

25 days ago

0.3.3

2 months ago

0.3.2

3 months ago

0.3.1

3 months ago

0.3.0

5 months ago

0.2.3

9 months ago

0.2.1

11 months ago

0.2.2

11 months ago

0.2.0

11 months ago

0.1.1

11 months ago

0.1.0

1 year ago