Comparing version 1.5.6 to 1.6.0
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const invariant = require("invariant"); | ||
const cookie = require("react-cookie"); | ||
const mechanism = "cookiesync"; | ||
var invariant = require("invariant"); | ||
var cookie = require("react-cookie"); | ||
var mechanism = "cookiesync"; | ||
/** | ||
@@ -21,18 +21,25 @@ * Creates a synchronizer which uses cookie polling to transmit objects to other tabs. | ||
*/ | ||
function cookiesync(key, action, handler, { tracing = false, logger = console, logLevel = "info", idLength = 8, pollFrequency = 3000, path = "/", secure = false, httpOnly = false } = {}) { | ||
function cookiesync(key, action, handler, _a) { | ||
var _b = _a === void 0 ? {} : _a, _c = _b.tracing, tracing = _c === void 0 ? false : _c, _d = _b.logger, logger = _d === void 0 ? console : _d, _e = _b.logLevel, logLevel = _e === void 0 ? "info" : _e, _f = _b.idLength, idLength = _f === void 0 ? 8 : _f, _g = _b.pollFrequency, pollFrequency = _g === void 0 ? 3000 : _g, _h = _b.path, path = _h === void 0 ? "/" : _h, _j = _b.secure, secure = _j === void 0 ? false : _j, _k = _b.httpOnly, httpOnly = _k === void 0 ? false : _k; | ||
invariant(key, "key is required"); | ||
invariant(action, "action is required"); | ||
invariant(handler, "handler is required"); | ||
const log = (...args) => tracing ? logger[logLevel](...args) : () => { }; | ||
const cookieOpts = { path, secure, httpOnly }; | ||
const cookieKey = `cookiesync_fallback_${key}`; | ||
const instanceID = (N => (Math.random().toString(36) + "00000000000000000").slice(2, N + 2))(idLength); | ||
const loadCookie = () => { | ||
var log = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
return tracing ? logger[logLevel].apply(logger, args) : function () { }; | ||
}; | ||
var cookieOpts = { path: path, secure: secure, httpOnly: httpOnly }; | ||
var cookieKey = "cookiesync_fallback_" + key; | ||
var instanceID = (function (N) { return (Math.random().toString(36) + "00000000000000000").slice(2, N + 2); })(idLength); | ||
var loadCookie = function () { | ||
try { | ||
const value = cookie.load(cookieKey, false); | ||
var value = cookie.load(cookieKey, false); | ||
if (typeof value !== "undefined") { | ||
const { instanceID, payload } = value; | ||
invariant(instanceID, `cookiesync cookies must have an instanceID associated => ${JSON.stringify(value)}`); | ||
invariant(typeof instanceID === "string" && instanceID.length === idLength, "instanceID must be a string"); | ||
invariant(payload, `cookiesync cookies must have a payload associated => ${JSON.stringify(value)}`); | ||
var instanceID_1 = value.instanceID, payload = value.payload; | ||
invariant(instanceID_1, "cookiesync cookies must have an instanceID associated => " + JSON.stringify(value)); | ||
invariant(typeof instanceID_1 === "string" && instanceID_1.length === idLength, "instanceID must be a string"); | ||
invariant(payload, "cookiesync cookies must have a payload associated => " + JSON.stringify(value)); | ||
} | ||
@@ -43,27 +50,36 @@ log("cookiesync#loadCookie", value); | ||
catch (err) { | ||
logger.error(err, `cookiesync#loadCookie => error occurred in cookiesync, wiping cookie with key ${cookieKey}`); | ||
logger.error(err, "cookiesync#loadCookie => error occurred in cookiesync, wiping cookie with key " + cookieKey); | ||
cookie.remove(cookieKey); | ||
} | ||
}; | ||
const saveCookie = (...args) => { | ||
var saveCookie = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
invariant(args.length === 1, "should only have one argument"); | ||
const [payload] = args; | ||
const value = { instanceID, payload }; | ||
var payload = args[0]; | ||
var value = { instanceID: instanceID, payload: payload }; | ||
log("cookisync#saveCookie", instanceID, payload); | ||
cookie.save(cookieKey, value, cookieOpts); | ||
}; | ||
let isRunning = false; | ||
const trigger = (...args) => { | ||
log("cookiesync#trigger", instanceID, ...args); | ||
const payload = action(...args); | ||
var isRunning = false; | ||
var trigger = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
log.apply(void 0, ["cookiesync#trigger", instanceID].concat(args)); | ||
var payload = action.apply(void 0, args); | ||
log("cookiesync#trigger => payload", payload); | ||
saveCookie(payload); | ||
}; | ||
let intervalID = null; | ||
const start = (sync = false) => { | ||
var intervalID = null; | ||
var start = function (sync) { | ||
if (sync === void 0) { sync = false; } | ||
log("cookiesync#start", instanceID); | ||
let last = loadCookie(); | ||
var last = loadCookie(); | ||
if (!last) { | ||
log("cookiesync#start: nolast", instanceID); | ||
last = { instanceID }; | ||
last = { instanceID: instanceID }; | ||
saveCookie(last); | ||
@@ -73,3 +89,3 @@ } | ||
log("cookiesync#poll", instanceID); | ||
let current = loadCookie(); | ||
var current = loadCookie(); | ||
if (!current) { | ||
@@ -95,3 +111,3 @@ log("cookiesync#poll: nocurrent", instanceID); | ||
if (sync) { | ||
let current = loadCookie(); | ||
var current = loadCookie(); | ||
handler(current.payload, last ? last.payload : {}, last ? (last.url || "") : ""); | ||
@@ -102,3 +118,3 @@ last = current; | ||
}; | ||
const stop = () => { | ||
var stop = function () { | ||
log("cookiesync#stop", instanceID); | ||
@@ -108,12 +124,12 @@ clearInterval(intervalID); | ||
}; | ||
return { start, | ||
stop, | ||
trigger, | ||
return { start: start, | ||
stop: stop, | ||
trigger: trigger, | ||
get isRunning() { return isRunning; }, | ||
mechanism, | ||
mechanism: mechanism, | ||
isFallback: true, | ||
isServer: false, | ||
instanceID | ||
instanceID: instanceID | ||
}; | ||
} | ||
exports.default = cookiesync; |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const storagesync_1 = require("./storagesync"); | ||
const cookiesync_1 = require("./cookiesync"); | ||
const serversync_1 = require("./serversync"); | ||
const REGEX = { | ||
var tslib_1 = require("tslib"); | ||
var storagesync_1 = require("./storagesync"); | ||
var cookiesync_1 = require("./cookiesync"); | ||
var serversync_1 = require("./serversync"); | ||
var REGEX = { | ||
TRIDENT_EDGE: /(Trident|Edge)/i | ||
@@ -24,5 +25,7 @@ }; | ||
*/ | ||
function localsync(key, action, handler, opts = {}, navigator = getNavigator()) { | ||
const sync = navigator === null ? serversync_1.default : isEdgeOrIE(navigator) ? cookiesync_1.default : storagesync_1.default; | ||
const completeOpts = Object.assign({}, getDefaultOpts(), opts); | ||
function localsync(key, action, handler, opts, navigator) { | ||
if (opts === void 0) { opts = {}; } | ||
if (navigator === void 0) { navigator = getNavigator(); } | ||
var sync = navigator === null ? serversync_1.default : isEdgeOrIE(navigator) ? cookiesync_1.default : storagesync_1.default; | ||
var completeOpts = tslib_1.__assign({}, getDefaultOpts(), opts); | ||
return sync(key, action, handler, completeOpts); | ||
@@ -29,0 +32,0 @@ } |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const invariant = require("invariant"); | ||
const mechanism = "serversync"; | ||
var invariant = require("invariant"); | ||
var mechanism = "serversync"; | ||
/** | ||
@@ -15,26 +15,37 @@ * Creates a mock synchronizer which uses a server safe interface equivalent to serversync | ||
*/ | ||
function serversync(key, action, handler, { tracing = false, logger = console, logLevel = "info" } = {}) { | ||
function serversync(key, action, handler, _a) { | ||
var _b = _a === void 0 ? {} : _a, _c = _b.tracing, tracing = _c === void 0 ? false : _c, _d = _b.logger, logger = _d === void 0 ? console : _d, _e = _b.logLevel, logLevel = _e === void 0 ? "info" : _e; | ||
invariant(key, "key is required"); | ||
invariant(action, "action is required"); | ||
invariant(handler, "handler is required"); | ||
const log = (...args) => tracing ? logger[logLevel](...args) : () => { }; | ||
let isRunning = false; | ||
const trigger = (...args) => { | ||
var log = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
return tracing ? logger[logLevel].apply(logger, args) : function () { }; | ||
}; | ||
var isRunning = false; | ||
var trigger = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
log("serversync#trigger", args); | ||
const value = action(...args); | ||
var value = action.apply(void 0, args); | ||
log("serversync#trigger action output ignored", args, value); | ||
}; | ||
const start = () => { | ||
var start = function () { | ||
log("serversync#start"); | ||
isRunning = true; | ||
}; | ||
const stop = () => { | ||
var stop = function () { | ||
log("serversync#stop"); | ||
isRunning = false; | ||
}; | ||
return { start, | ||
stop, | ||
trigger, | ||
return { start: start, | ||
stop: stop, | ||
trigger: trigger, | ||
get isRunning() { return isRunning; }, | ||
mechanism, | ||
mechanism: mechanism, | ||
isFallback: false, | ||
@@ -41,0 +52,0 @@ isServer: true |
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const invariant = require("invariant"); | ||
const ls = require("local-storage"); | ||
const mechanism = "storagesync"; | ||
var invariant = require("invariant"); | ||
var ls = require("local-storage"); | ||
var mechanism = "storagesync"; | ||
/** | ||
@@ -16,17 +16,29 @@ * Creates a synchronizer which uses localStorage 'storage' event for synchronization between tabs. | ||
*/ | ||
function storagesync(key, action, handler, { tracing = false, logger = console, logLevel = "info" } = {}) { | ||
function storagesync(key, action, handler, _a) { | ||
var _b = _a === void 0 ? {} : _a, _c = _b.tracing, tracing = _c === void 0 ? false : _c, _d = _b.logger, logger = _d === void 0 ? console : _d, _e = _b.logLevel, logLevel = _e === void 0 ? "info" : _e; | ||
invariant(key, "key is required"); | ||
invariant(action, "action is required"); | ||
invariant(handler, "handler is required"); | ||
const log = (...args) => tracing ? logger[logLevel](...args) : () => { }; | ||
let isRunning = false; | ||
let last = {}; | ||
const trigger = (...args) => { | ||
var log = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
return tracing ? logger[logLevel].apply(logger, args) : function () { }; | ||
}; | ||
var isRunning = false; | ||
var last = {}; | ||
var trigger = function () { | ||
var args = []; | ||
for (var _i = 0; _i < arguments.length; _i++) { | ||
args[_i] = arguments[_i]; | ||
} | ||
log("storagesync#trigger", args); | ||
const value = action(...args); | ||
var value = action.apply(void 0, args); | ||
ls(key, value); | ||
}; | ||
const start = (sync = false) => { | ||
var start = function (sync) { | ||
if (sync === void 0) { sync = false; } | ||
log("storagesync#start"); | ||
ls.on(key, (value) => { | ||
ls.on(key, function (value) { | ||
handler(value, last, ""); | ||
@@ -36,3 +48,3 @@ last = value; | ||
if (sync) { | ||
const value = ls.get(key); | ||
var value = ls.get(key); | ||
handler(value, last, ""); | ||
@@ -43,3 +55,3 @@ last = value; | ||
}; | ||
const stop = () => { | ||
var stop = function () { | ||
log("storagesync#stop"); | ||
@@ -49,7 +61,7 @@ ls.off(key, handler); | ||
}; | ||
return { start, | ||
stop, | ||
trigger, | ||
return { start: start, | ||
stop: stop, | ||
trigger: trigger, | ||
get isRunning() { return isRunning; }, | ||
mechanism, | ||
mechanism: mechanism, | ||
isFallback: false, | ||
@@ -56,0 +68,0 @@ isServer: false |
{ | ||
"name": "localsync", | ||
"version": "1.5.6", | ||
"version": "1.6.0", | ||
"description": "a lightweight module to sync JS objects in realtime across tabs / windows of a browser.", | ||
@@ -5,0 +5,0 @@ "main": "lib/index.js", |
{ | ||
"compilerOptions": { | ||
"experimentalDecorators": true, | ||
"target": "ES6", | ||
"target": "ES5", | ||
"module": "commonjs", | ||
@@ -6,0 +6,0 @@ "moduleResolution": "node", |
128954
808