Comparing version 0.1.2 to 0.1.3
@@ -27,12 +27,3 @@ 'use strict'; | ||
var createInstanceID = function createInstanceID() { | ||
var N = arguments.length <= 0 || arguments[0] === undefined ? 8 : arguments[0]; | ||
return (Math.random().toString(36) + '00000000000000000').slice(2, N + 2); | ||
}; | ||
var createCookieKey = function createCookieKey(key) { | ||
return 'localsync_fb_' + key; | ||
}; | ||
function cookiesync(key, sync, handler) { | ||
function cookiesync(key, action, handler) { | ||
var _ref = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; | ||
@@ -44,6 +35,6 @@ | ||
var cookie = require('react-cookie'); | ||
var cookieKey = createCookieKey(key); | ||
var instanceID = createInstanceID(); | ||
var isSyncRunning = false; | ||
var cookieKey = 'localsync_fb_' + key; | ||
var instanceID = function (N) { | ||
return (Math.random().toString(36) + '00000000000000000').slice(2, N + 2); | ||
}(8); | ||
var loadCookie = function loadCookie() { | ||
@@ -56,4 +47,5 @@ return cookie.load(cookieKey); | ||
var triggerSync = function triggerSync() { | ||
var value = sync.apply(undefined, arguments); | ||
var isRunning = false; | ||
var trigger = function trigger() { | ||
var value = action.apply(undefined, arguments); | ||
saveCookie(cookieKey, value); | ||
@@ -63,3 +55,3 @@ }; | ||
var intervalID = null; | ||
var startSync = function startSync() { | ||
var start = function start() { | ||
var last = loadCookie(); | ||
@@ -84,15 +76,15 @@ if (!last) { | ||
}, pollFrequency); | ||
isSyncRunning = true; | ||
isRunning = true; | ||
}; | ||
var stopSync = function stopSync() { | ||
var stop = function stop() { | ||
clearInterval(intervalID); | ||
isSyncRunning = false; | ||
isRunning = false; | ||
}; | ||
return { startSync: startSync, | ||
stopSync: stopSync, | ||
triggerSync: triggerSync, | ||
get isSyncRunning() { | ||
return isSyncRunning; | ||
return { start: start, | ||
stop: stop, | ||
trigger: trigger, | ||
get isRunning() { | ||
return isRunning; | ||
}, | ||
@@ -104,33 +96,33 @@ isFallback: true, | ||
function localsync(key, sync, handler) { | ||
function localsync(key, action, handler) { | ||
var opts = arguments.length <= 3 || arguments[3] === undefined ? {} : arguments[3]; | ||
should.exist(key); | ||
should.exist(sync); | ||
should.exist(action); | ||
should.exist(handler); | ||
if (isEdgeOrIE()) return cookiesync(key, sync, handler, opts); | ||
if (isEdgeOrIE()) return cookiesync(key, action, handler, opts); | ||
var isSyncRunning = false; | ||
var isRunning = false; | ||
var triggerSync = function triggerSync() { | ||
var value = sync.apply(undefined, arguments); | ||
var trigger = function trigger() { | ||
var value = action.apply(undefined, arguments); | ||
(0, _localStorage2.default)(key, value); | ||
}; | ||
var startSync = function startSync() { | ||
var start = function start() { | ||
_localStorage2.default.on(key, handler); | ||
isSyncRunning = true; | ||
isRunning = true; | ||
}; | ||
var stopSync = function stopSync() { | ||
var stop = function stop() { | ||
_localStorage2.default.off(key, handler); | ||
isSyncRunning = false; | ||
isRunning = false; | ||
}; | ||
return { startSync: startSync, | ||
stopSync: stopSync, | ||
triggerSync: triggerSync, | ||
get isSyncRunning() { | ||
return isSyncRunning; | ||
return { start: start, | ||
stop: stop, | ||
trigger: trigger, | ||
get isRunning() { | ||
return isRunning; | ||
}, | ||
@@ -137,0 +129,0 @@ isFallback: false |
{ | ||
"name": "localsync", | ||
"version": "0.1.2", | ||
"version": "0.1.3", | ||
"description": "a lightweight module to sync JS objects in realtime across tabs / windows of a browser.", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
@@ -17,3 +17,3 @@ # localsync | ||
const sync = username => username | ||
const action = username => username | ||
const handler = (value, old, url) => { | ||
@@ -23,16 +23,16 @@ console.info(`Another tab at url ${url} had username updated from ${old.username} to ${value.username}.`) | ||
const { startSync, stopSync, triggerSync, isSyncRunning, isFallback } = localsync('username', sync, handler) | ||
const usernameSync = localsync('username', action, handler) | ||
startSync() | ||
usernameSync.start() | ||
triggerSync('jim') | ||
usernameSync.trigger('jim') | ||
setTimeout(() => { | ||
triggerSync('jane') | ||
usernameSync.trigger('jane') | ||
}, 5000) | ||
setTimeout(() => { | ||
if(isSyncRunning) | ||
stopSync() | ||
if(usernameSync.isRunning) | ||
usernameSync.stop() | ||
}, 10000) | ||
``` |
@@ -11,20 +11,13 @@ import ls from 'local-storage' | ||
const createInstanceID = (N = 8) => (Math.random().toString(36)+'00000000000000000').slice(2, N+2) | ||
const createCookieKey = key => `localsync_fb_${key}` | ||
function cookiesync(key, sync, handler, { pollFrequency = 3000 } = {}) { | ||
function cookiesync(key, action, handler, { pollFrequency = 3000 } = {}) { | ||
const cookie = require('react-cookie') | ||
const cookieKey = createCookieKey(key) | ||
const instanceID = createInstanceID() | ||
let isSyncRunning = false | ||
const cookieKey = `localsync_fb_${key}` | ||
const instanceID = (N => (Math.random().toString(36)+'00000000000000000').slice(2, N+2))(8) | ||
const loadCookie = () => cookie.load(cookieKey) | ||
const saveCookie = value => cookie.save(cookieKey, value) | ||
const triggerSync = (...args) => { | ||
const value = sync(...args) | ||
let isRunning = false | ||
const trigger = (...args) => { | ||
const value = action(...args) | ||
saveCookie(cookieKey, value) | ||
@@ -35,3 +28,3 @@ } | ||
let intervalID = null | ||
const startSync = () => { | ||
const start = () => { | ||
let last = loadCookie() | ||
@@ -58,14 +51,14 @@ if(!last) { | ||
}, pollFrequency) | ||
isSyncRunning = true | ||
isRunning = true | ||
} | ||
const stopSync = () => { | ||
const stop = () => { | ||
clearInterval(intervalID) | ||
isSyncRunning = false | ||
isRunning = false | ||
} | ||
return { startSync | ||
, stopSync | ||
, triggerSync | ||
, get isSyncRunning () { return isSyncRunning } | ||
return { start | ||
, stop | ||
, trigger | ||
, get isRunning () { return isRunning } | ||
, isFallback: true | ||
@@ -77,33 +70,33 @@ , instanceID | ||
export default function localsync(key, sync, handler, opts = {}) { | ||
export default function localsync(key, action, handler, opts = {}) { | ||
should.exist(key) | ||
should.exist(sync) | ||
should.exist(action) | ||
should.exist(handler) | ||
if(isEdgeOrIE()) | ||
return cookiesync(key, sync, handler, opts) | ||
return cookiesync(key, action, handler, opts) | ||
let isSyncRunning = false | ||
let isRunning = false | ||
const triggerSync = (...args) => { | ||
const value = sync(...args) | ||
const trigger = (...args) => { | ||
const value = action(...args) | ||
ls(key, value) | ||
} | ||
const startSync = () => { | ||
const start = () => { | ||
ls.on(key, handler) | ||
isSyncRunning = true | ||
isRunning = true | ||
} | ||
const stopSync = () => { | ||
const stop = () => { | ||
ls.off(key, handler) | ||
isSyncRunning = false | ||
isRunning = false | ||
} | ||
return { startSync | ||
, stopSync | ||
, triggerSync | ||
, get isSyncRunning () { return isSyncRunning } | ||
return { start | ||
, stop | ||
, trigger | ||
, get isRunning () { return isRunning } | ||
, isFallback: false | ||
} | ||
} |
12828
220