0.1.14 • Published 9 months ago

@graffiti-garden/implementation-pouchdb v0.1.14

Weekly downloads
-
License
GPL-3.0-or-later
Repository
github
Last release
9 months ago

Graffiti PouchDB Implementation

This is an implementation of the Graffiti API using PouchDB. By default, it uses local storage either in the browser or in Node.js but can be configured to use a remote CouchDB instance.

Installation

In node.js, simply install the package with npm:

npm install @graffiti-garden/implementation-pouchdb

In the browser, you can use a CDN like jsDelivr. Add an import map the the <head> of your HTML file:

<head>
    <script type="importmap">
        {
            "imports": {
                "@graffiti-garden/implementation-pouchdb": "https://cdn.jsdelivr.net/npm/@graffiti-garden/implementation-pouchdb/dist/index.js"
            }
        }
    </script>
</head>

In either case, you can then import the package like so:

import { GraffitiPouchDB } from "@graffiti-garden/implementation-pouchdb";
const graffiti = new GraffitiPouchDB()

Usage

This is an implementation of the Graffiti API, so to use it please refer to the Graffiti API documentation.

The only major difference is that options can be passed to the constructor to configure the PouchDB instance. The PouchDB instance will create a local database by default, in either the browser or Node.js. However, you could configure it to use a remote CouchDB instance as follows:

import { GraffitiPouchDB } from "@graffiti-garden/implementation-pouchdb";
const graffiti = new GraffitiPouchDB({
  pouchDBOptions: {
    name: "http://admin:password@localhost:5984/graffiti",
  }
})

See the PouchDB documentation for more options.

Extending

Pieces of this implementation can be pulled out to use in other implementations.

// The basic database interface based on PouchDB
import { GraffitiPouchDBBase } from "@graffiti-garden/implementation-pouchdb/database";
// A wrapper around any implementation of the database methods that provides synchronize
import { GraffitiSynchronize } from "@graffiti-garden/implementation-pouchdb/synchronize";
// The log in and out methods and events - insecure but useful for testing
import { GraffitiSessionManagerLocal } from "@graffiti-garden/implementation-pouchdb/session-manager-local";
// Various utilities for implementing the Graffiti API
import * as GraffitiUtilities from "@graffiti-garden/implementation-pouchdb/utilities";

TODO

  • Remove tombstones according to the tombstoneRetention setting.
  • Implement listOrphans and listChannels.
0.1.14

9 months ago

0.1.13

9 months ago

0.1.12

9 months ago

0.1.11

9 months ago

0.1.10

9 months ago

0.1.9

9 months ago

0.1.8

9 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.4

9 months ago

0.1.3

9 months ago

0.1.2

9 months ago

0.1.1

9 months ago

0.1.0

9 months ago

0.0.7

9 months ago

0.0.6

9 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.3

9 months ago

0.0.2

9 months ago

0.0.1

9 months ago