Nanoscale Parts Manufacturing
    Have ideas to improve npm?Join in the discussion! »

    @yehn/store-engine
    TypeScript icon, indicating that this package has built-in type declarations

    0.11.24 • Public • Published

    Yehn™

    This repository is part of the source code of Yehn. You can find more information at yehn.io or by contacting opensource@yehn.io.

    You can find the published source code at github.com/yehn/yehn.

    For licensing information, see the attached LICENSE file and the list of third-party licenses at yehn.io/legal/licenses/.

    Store Engine

    Provider for the following storage engines: File, FileSystem, IndexedDB, Memory & LocalStorage.

    Motivation

    One API to rule them all!

    big deal

    Nowadays there are more and more storage possibilities and developers must be familiar with the characteristics of each individual solution to reliably store data. Because it can be sometimes hard to keep up with the highly dynamic world of data storages, we have developed a system which unifies the usage of IndexedDB, In-memory storage, File-based storage and LocalStorage. In addition we built some functionality (like a transient store which deletes data after a TTL) on top.

    Quickstart

    Engines

    Engine Available in Browser Available in Node.js Description
    FileEngine 🞫 Rudimentary persistent store based on files. Very generic and easy to read.
    FileSystemEngine 🞫 FileSystem is used to represent a file system which is managed by modern browsers. It is often used to build Chrome Web Store apps.
    IndexedDBEngine 🞫 Persistent storage which handles significant amounts of structured data, including files/blobs. Enables very fast searches.
    MemoryEngine Transient store which loses data on application restart. Suitable for testing environments.
    LocalStorageEngine 🞫 Can save very small amount of data. Stored data is saved across browser sessions. Suitable for simple objects and strings.

    Stores

    With an engine you can build a store which has special capabilities like a timeout.

    Using a TransientStore

    const {Store, LocalStorageEngine} = require('@yehn/store-engine');
     
    const engine = new LocalStorageEngine('my-favorite-actors');
    const store = new Store.TransientStore(engine);
     
    store
      .init('the-simpsons')
      .then(() => store.set('bart', {name: 'Bart Simpson'}, 1000))
      .then(transientBundle => {
        console.log(`The record of "${transientBundle.payload.name}" will expires in "${transientBundle.expires}"ms.`);
      });

    API

    No matter what engine you use, all CRUD operations work the same. 🙂

    In the following examples this data is used:

    const TABLE_NAME = 'the-simpsons';
    const PRIMARY_KEY = 'lisa-simpson';
    const ENTITY = {name: 'Lisa Simpson'};

    create

    engine.create(TABLE_NAME, PRIMARY_KEY, ENTITY).then(primaryKey => {
      console.log(`Saved record with primary key "${primaryKey}".`);
    });

    delete

    engine.delete(TABLE_NAME, PRIMARY_KEY).then(primaryKey => {
      console.log(`Deleted record with primary key "${primaryKey}".`);
    });

    deleteAll

    engine.deleteAll(TABLE_NAME).then(wasDeleted => {
      if (wasDeleted) {
        console.log('The Simpsons have been deleted. Poor Simpsons!');
      }
    });

    purge

    engine.purge().then(() => {
      console.log('The Simpson Universe has been deleted. Doh!');
    });

    read

    engine.read(TABLE_NAME, PRIMARY_KEY).then(record => {
      console.log(`Her name is "${record.name}".`);
    });

    readAll

    engine.readAll(TABLE_NAME).then(records => {
      console.log(`There are "${record.length}" Simpsons in our database.`);
    });

    readAllPrimaryKeys

    engine.readAllPrimaryKeys(TABLE_NAME).then(primaryKeys => {
      console.log(`Identifiers of our Simpsons: "${primaryKeys.join('')}"`);
    });

    update

    engine.update(TABLE_NAME, PRIMARY_KEY, {brother: 'Bart Simpson'}).then((primaryKey) => {
      return engine.read(TABLE_NAME, PRIMARY_KEY);
    }).then((updatedRecord) => {
      console.log(`The brother of "${updatedRecord.name}" is "${updatedRecord.brother}".`):
    })

    Install

    npm i @yehn/store-engine

    DownloadsWeekly Downloads

    1

    Version

    0.11.24

    License

    GPL-3.0

    Unpacked Size

    6.67 kB

    Total Files

    2

    Last publish

    Collaborators

    • avatar