1.1.1 • Published 1 year ago

@pvermeer/dexie-rxjs-addon v1.1.1

Weekly downloads
1
License
MIT
Repository
github
Last release
1 year ago

Dexie RxJs Addon

NPM Version Build Status semantic-release Conventional Commits

Install over npm

npm install @pvermeer/dexie-rxjs-addon rxjs

Dependencies

rxjs: https://rxjs-dev.firebaseapp.com/

Extend RxJs to your Dexie Database!

Plugin is written to extend Dexie.js with your own RxJs by adding some methods / properties to the Dexie classes. RxJs is not bundled so you can use your own implementation.

Example (ES6)

import Dexie from 'dexie';
import { dexieRxjs } from '@pvermeer/dexie-rxjs-addon';

// Declare Database
const db = new Dexie("FriendDatabase", {
    addons: [dexieRxjs]
});
db.version(1).stores({ friends: "++id, name, shoeSize, age" });

// Open the database
db.open()
    .then(() => {
        console.log('DB loaded! :D')
        // Use Dexie
    });

Example (Typescript)

import Dexie from 'dexie';
import { dexieRxjs } from '@pvermeer/dexie-rxjs-addon';

interface Friend {
    id?: number;
    name?: string;
    shoeSize?: number;
    age?: number;
}

// Declare Database
class FriendsDatabase extends Dexie {
    public friends: Dexie.Table<Friend, string>;
    constructor(name: string) {
        super(name);
        dexieRxjs(this);
        this.version(1).stores({
            friends: '++id, name, shoeSize, age'
        });
    }
}

const db = new FriendDatabase('FriendsDatabase');

// Open the database
db.open()
    .then(() => {
        console.log('DB loaded! :D')
        // Use Dexie
    });

Example (HTML import)

Bundled & minified package: https://unpkg.com/@pvermeer/dexie-rxjs-addon@latest/dist/dexie-rxjs-addon.min.js.

Addon is export as namespace DexieRxjsAddon

<!doctype html>
<html>
    <head>
        <!-- Include Dexie -->
        <script src="https://unpkg.com/dexie@latest/dist/dexie.js"></script>

        <!-- Include RxJs -->
        <script src="https://unpkg.com/rxjs/bundles/rxjs.umd.min.js"></script>

        <!-- Include DexieRxjsAddon (always after dependencies) -->
        <script src="https://unpkg.com/@pvermeer/dexie-rxjs-addon@latest/dist/dexie-rxjs-addon.min.js"></script>

        <script>

            // Define your database
            const db = new Dexie("FriendDatabase", {
                addons: [DexieRxjsAddon.dexieRxjs]
            });
            db.version(1).stores({ friends: "++id, name, shoeSize, age" });

            // Open the database
            db.open()
                .then(() => {
                    console.log('DB loaded! :D')
                    // Do Dexie stuff
                });
        </script>
    </head>
</html>

API

The packet exposes new methods and properties on Dexie classes:

(Will be expanded on)

    interface Dexie {
        /**
         * Get on('changes') from 'dexie-observable' as an RxJs observable and observe changes.
         * @link https://dexie.org/docs/Observable/Dexie.Observable
         */
        changes$: Observable<IDatabaseChange[]>;
    }

    interface Table<T, Key> {
        /**
         * Get a single record as an RxJs observable and observe changes.
         * Uses Table.get().
         * @param key Primary key to find.
         */
        get$(key: Key): Observable<T | undefined>;
        /**
         * Get a full table as an RxJs observable and observe changes.
         * Uses Table.toArray().
         */
        $: Observable<T[]>;
    }

    interface Collection<T, Key> {
        /**
         * Get a collection (Table.where()) as an RxJs observable and observe changes.
         * Uses Collection.toArray().
         */
        $: Observable<T[]>;
    }

Dexie.js

Dexie.js is a wrapper library for indexedDB - the standard database in the browser. http://dexie.org

1.1.2-beta.0

1 year ago

2.0.0-beta.0

1 year ago

1.1.1

2 years ago

1.1.1-beta.0

2 years ago

1.1.0

2 years ago

1.0.4

2 years ago

1.0.3

3 years ago

1.1.0-beta.2

2 years ago

1.1.0-beta.1

2 years ago

1.1.0-beta.0

2 years ago

1.0.3-beta.0

3 years ago

1.0.3-beta.2

3 years ago

1.0.3-beta.1

3 years ago

1.0.3-beta.4

3 years ago

1.0.3-beta.3

3 years ago

1.0.3-beta.5

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0-beta.36

3 years ago

1.0.0-beta.22

3 years ago

1.0.0-beta.23

3 years ago

1.0.0-beta.20

4 years ago

1.0.0-beta.21

4 years ago

1.0.0-beta.28

3 years ago

1.0.0-beta.29

3 years ago

1.0.0-beta.26

3 years ago

1.0.0-beta.27

3 years ago

1.0.0-beta.24

3 years ago

1.0.0-beta.25

3 years ago

1.0.0-beta.33

3 years ago

1.0.0-beta.34

3 years ago

1.0.0-beta.31

3 years ago

1.0.0-beta.32

3 years ago

1.0.0-beta.30

3 years ago

1.0.0-beta.35

3 years ago

1.0.0-beta.19

4 years ago

1.0.0-beta.17

5 years ago

1.0.0-beta.18

5 years ago

1.0.0-beta.16

5 years ago

1.0.0-beta.15

5 years ago

1.0.0-beta.14

5 years ago

1.0.0-beta.13

5 years ago

1.0.0-beta.12

5 years ago

1.0.0-beta.11

5 years ago

1.0.0-beta.10

5 years ago

1.0.0-beta.9

5 years ago

1.0.0-beta.7

5 years ago

1.0.0-beta.8

5 years ago

1.0.0-beta.6

5 years ago

1.0.0-beta.5

5 years ago

1.0.0-beta.4

5 years ago

1.0.0-beta.3

5 years ago

1.0.0-beta.2

5 years ago

1.0.0-beta.1

5 years ago