Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
var NODE_TIMEOUT = 20000, // 20 seconds before local db instances are timed out. This is so that old changes can be deleted when not needed and to garbage collect old _syncNodes objects.
HIBERNATE_GRACE_PERIOD = 20000, // 20 seconds
// LOCAL_POLL: The time to wait before polling local db for changes and cleaning up old nodes.
// Polling for changes is a fallback only needed in certain circomstances (when the onstorage event doesnt reach all listeners - when different browser windows doesnt share the same process)
LOCAL_POLL = 2000, // 1 second. In real-world there will be this value + the time it takes to poll().
CREATE = 1,
UPDATE = 2,
DELETE = 3;
var localStorage = Observable.localStorageImpl;
/** class SyncNode
*
* Object contained in the _syncNodes table.
*/
var SyncNode = Dexie.defineClass({
//id: Number,
myRevision: Number,
type: String, // "local" or "remote"
lastHeartBeat: Number,
deleteTimeStamp: Number, // In case lastHeartBeat is too old, a value of now + HIBERNATE_GRACE_PERIOD will be set here. If reached before node wakes up, node will be deleted.
url: String, // Only applicable for "remote" nodes. Only used in Dexie.Syncable.
isMaster: Number, // 1 if true. Not using Boolean because it's not possible to index Booleans in IE implementation of IDB.
// Below properties should be extended in Dexie.Syncable. Not here. They apply to remote nodes only (type == "remote"):
syncProtocol: String, // Tells which implementation of ISyncProtocol to use for remote syncing.
syncContext: null,
syncOptions: Object,
connected: false, // FIXTHIS: Remove! Replace with status.
status: Number,
appliedRemoteRevision: null,
remoteBaseRevisions: [{ local: Number, remote: null }],
import Dexie from 'dexie';
var global = self;
/** class DatabaseChange
*
* Object contained by the _changes table.
*/
var DatabaseChange = Dexie.defineClass({
rev: Number, // Auto-incremented primary key
source: String, // Optional source creating the change. Set if transaction.source was set when doing the operation.
table: String, // Table name
key: Object, // Primary key. Any type.
type: Number, // 1 = CREATE, 2 = UPDATE, 3 = DELETE
obj: Object, // CREATE: obj contains the object created.
mods: Object, // UPDATE: mods contains the modifications made to the object.
oldObj: Object // DELETE: oldObj contains the object deleted. UPDATE: oldObj contains the old object before updates applied.
});
// Import some usable helper functions
var override = Dexie.override;
var Promise = Dexie.Promise;
var browserIsShuttingDown = false;
function Observable(db) {
var NODE_TIMEOUT = 20000, // 20 seconds before local db instances are timed out. This is so that old changes can be deleted when not needed and to garbage collect old _syncNodes objects.
HIBERNATE_GRACE_PERIOD = 20000, // 20 seconds
// LOCAL_POLL: The time to wait before polling local db for changes and cleaning up old nodes.
// Polling for changes is a fallback only needed in certain circomstances (when the onstorage event doesnt reach all listeners - when different browser windows doesnt share the same process)
LOCAL_POLL = 2000, // 1 second. In real-world there will be this value + the time it takes to poll().
CREATE = 1,
UPDATE = 2,
DELETE = 3;
var localStorage = Observable.localStorageImpl;
/** class SyncNode
*
* Object contained in the _syncNodes table.
*/
var SyncNode = Dexie.defineClass({
//id: Number,
myRevision: Number,
type: String, // "local" or "remote"
lastHeartBeat: Number,
deleteTimeStamp: Number, // In case lastHeartBeat is too old, a value of now + HIBERNATE_GRACE_PERIOD will be set here. If reached before node wakes up, node will be deleted.
url: String, // Only applicable for "remote" nodes. Only used in Dexie.Syncable.
isMaster: Number, // 1 if true. Not using Boolean because it's not possible to index Booleans in IE implementation of IDB.
// Below properties should be extended in Dexie.Syncable. Not here. They apply to remote nodes only (type == "remote"):
syncProtocol: String, // Tells which implementation of ISyncProtocol to use for remote syncing.
syncContext: null,
syncOptions: Object,
connected: false, // FIXTHIS: Remove! Replace with status.
status: Number,
appliedRemoteRevision: null,
remoteBaseRevisions: [{ local: Number, remote: null }],
*
* version: {version} Alpha, {date}
*
* Disclaimber: This addon is in alpha status meaning that
* its API and behavior may change.
*
*/
import Dexie from 'dexie';
var global = self;
/** class DatabaseChange
*
* Object contained by the _changes table.
*/
var DatabaseChange = Dexie.defineClass({
rev: Number, // Auto-incremented primary key
source: String, // Optional source creating the change. Set if transaction.source was set when doing the operation.
table: String, // Table name
key: Object, // Primary key. Any type.
type: Number, // 1 = CREATE, 2 = UPDATE, 3 = DELETE
obj: Object, // CREATE: obj contains the object created.
mods: Object, // UPDATE: mods contains the modifications made to the object.
oldObj: Object // DELETE: oldObj contains the object deleted. UPDATE: oldObj contains the old object before updates applied.
});
// Import some usable helper functions
var override = Dexie.override;
var Promise = Dexie.Promise;
var browserIsShuttingDown = false;
// 20 seconds
// LOCAL_POLL: The time to wait before polling local db for changes and cleaning up old nodes.
// Polling for changes is a fallback only needed in certain circomstances (when the onstorage event doesnt reach all listeners - when different browser windows doesnt share the same process)
LOCAL_POLL = 2000,
// 1 second. In real-world there will be this value + the time it takes to poll().
CREATE = 1,
UPDATE = 2,
DELETE = 3;
var localStorage = Observable.localStorageImpl;
/** class SyncNode
*
* Object contained in the _syncNodes table.
*/
var SyncNode = Dexie.defineClass({
//id: Number,
myRevision: Number,
type: String, // "local" or "remote"
lastHeartBeat: Number,
deleteTimeStamp: Number, // In case lastHeartBeat is too old, a value of now + HIBERNATE_GRACE_PERIOD will be set here. If reached before node wakes up, node will be deleted.
url: String, // Only applicable for "remote" nodes. Only used in Dexie.Syncable.
isMaster: Number, // 1 if true. Not using Boolean because it's not possible to index Booleans in IE implementation of IDB.
// Below properties should be extended in Dexie.Syncable. Not here. They apply to remote nodes only (type == "remote"):
syncProtocol: String, // Tells which implementation of ISyncProtocol to use for remote syncing.
syncContext: null,
syncOptions: Object,
connected: false, // FIXTHIS: Remove! Replace with status.
status: Number,
appliedRemoteRevision: null,
remoteBaseRevisions: [{ local: Number, remote: null }],
*
* version: {version} Alpha, {date}
*
* Disclaimber: This addon is in alpha status meaning that
* its API and behavior may change.
*
*/
import Dexie from 'dexie';
var global = self;
/** class DatabaseChange
*
* Object contained by the _changes table.
*/
var DatabaseChange = Dexie.defineClass({
rev: Number, // Auto-incremented primary key
source: String, // Optional source creating the change. Set if transaction.source was set when doing the operation.
table: String, // Table name
key: Object, // Primary key. Any type.
type: Number, // 1 = CREATE, 2 = UPDATE, 3 = DELETE
obj: Object, // CREATE: obj contains the object created.
mods: Object, // UPDATE: mods contains the modifications made to the object.
oldObj: Object // DELETE: oldObj contains the object deleted. UPDATE: oldObj contains the old object before updates applied.
});
// Import some usable helper functions
var override = Dexie.override;
var Promise = Dexie.Promise;
var browserIsShuttingDown = false;