leveldb airplane mode with manual replication
This module allows you to work offline in the browser using indexdb (+ shim for websql when indexdb not available).
You get a sync method in browserified client to write to the server. The server gets a sync method that returns a readstream of the changelog after the given timestamp.
var levelup = require'levelup';var leveljs = require'level-js';var airplanedb = require'level-airplanedb';var db = levelup'test' db: leveljs;db = airplanedbdb;// sync range// any keys in local changelog will be written to the server// any keys from remotedb will be synced to clientdbsyncstart: end: remotedb cb;// changes to local db will be written to changelog removed when synced.
var levelup = require'levelup';var leveldown = require'leveldown';var airplanedb = require'level-airplanedb';var db = levelup'test' db: leveldown;db = airplanedbdb;dbsyncfrom range // readstream of changelog >= from
In the spirit of offline first I wanted a working offline storage, giving me the choice when to sync saving battery usage.
level-sublevel is used to persist the changelog both on client and server.
See test/simple.js for a client server example using :-
multilevel - leveldb over network
level-js - leveldown api in the browser
This is a work in progress, conflicts are not handled at all! The client's changelog is what is written to the server.
Updating keys in the same range as a running sync is not supported, doing this will incur loss of data.
With npm do:
npm install level-airplanedb