interframe
Advanced tools
Sorry, the diff of this file is not supported yet
+1
-1
@@ -1,1 +0,1 @@ | ||
| 8 | ||
| 14 |
@@ -1,6 +0,5 @@ | ||
| /*! interframe v2.1.2 by Sebastian Fastner <s.fastner@sebastian-software.de> */ | ||
| /*! interframe v2.2.0 by Sebastian Fastner <s.fastner@sebastian-software.de> */ | ||
| 'use strict'; | ||
| var id = 0; | ||
| function nextID() { | ||
@@ -11,18 +10,13 @@ id += 1; | ||
| /* eslint-disable filenames/match-exported, max-params, compat/compat */ | ||
| var TYPE = "application/interframe-ssoft-v1+json", | ||
| PROMISE_TIMEOUT = 3e3, | ||
| HAS_CONSOLE_LOG = typeof console != "undefined" && typeof console.log == "function", | ||
| UNIQUE_ID_RANDOM_LENGTH = 5; | ||
| var TYPE = "application/interframe-ssoft-v1+json"; | ||
| var PROMISE_TIMEOUT = 3000; | ||
| var HAS_CONSOLE_LOG = typeof console !== "undefined" && typeof console.log === "function"; | ||
| var UNIQUE_ID_RANDOM_LENGTH = 5; | ||
| function log(id) { | ||
| if (HAS_CONSOLE_LOG) { | ||
| var _console; | ||
| for (var _len = arguments.length, messages = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| for (var _console, _len = arguments.length, messages = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| messages[_key - 1] = arguments[_key]; | ||
| } | ||
| // eslint-disable-next-line no-console | ||
| (_console = console).log.apply(_console, ["[interframe " + id + "]"].concat(messages)); | ||
@@ -34,11 +28,13 @@ } | ||
| var nowDate = Date.now().toString(); | ||
| return nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH) + "-" + Math.random().toFixed(UNIQUE_ID_RANDOM_LENGTH).substring(2); | ||
| } | ||
| function interframe(targetWindow) { | ||
| var origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "*"; | ||
| var sourceWindow = arguments[2]; | ||
| function interframe(targetWindow, origin, sourceWindow, _temp) { | ||
| if (origin === void 0) { | ||
| origin = "*"; | ||
| } | ||
| var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { debug: false }, | ||
| var _ref = _temp === void 0 ? { | ||
| debug: false | ||
| } : _temp, | ||
| debug = _ref.debug; | ||
@@ -50,19 +46,20 @@ | ||
| var ownId = generateUniqueId(); | ||
| var ownId = generateUniqueId(), | ||
| listeners = new Map(), | ||
| handshakeCallback = new Set(), | ||
| responseResolver = new Map(), | ||
| preHandshakeSendQueue = new Set(), | ||
| outstandingMessages = new Map(), | ||
| isHandshaken = false; | ||
| var listeners = new Map(); | ||
| var handshakeCallback = new Set(); | ||
| var responseResolver = new Map(); | ||
| var preHandshakeSendQueue = new Set(); | ||
| var outstandingMessages = new Map(); | ||
| var isHandshaken = false; | ||
| function send(namespace, data, responseId) { | ||
| if (data === void 0) { | ||
| data = null; | ||
| } | ||
| function send(namespace) { | ||
| var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; | ||
| var responseId = arguments[2]; | ||
| if (!namespace) { | ||
| throw new Error("parameter 'namespace' is missing"); | ||
| } | ||
| if (typeof namespace !== "string") { | ||
| if (typeof namespace != "string") { | ||
| throw new Error("parameter 'namespace' must be a string"); | ||
@@ -75,2 +72,3 @@ } | ||
| } | ||
| return new Promise(function (resolve) { | ||
@@ -89,11 +87,23 @@ preHandshakeSendQueue.add({ | ||
| } | ||
| var id = nextID(); | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| }), origin); | ||
| if (origin !== null) { | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| }), origin); | ||
| } else { | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| })); | ||
| } | ||
| return new Promise(function (resolve) { | ||
@@ -104,5 +114,3 @@ var timer = setTimeout(function () { | ||
| }, PROMISE_TIMEOUT); | ||
| responseResolver.set(id, { | ||
| // eslint-disable-line security/detect-object-injection | ||
| resolve: resolve, | ||
@@ -114,8 +122,10 @@ timer: timer | ||
| function sendHandshake() { | ||
| var acknowledgement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; | ||
| function sendHandshake(acknowledgement) { | ||
| if (acknowledgement === void 0) { | ||
| acknowledgement = false; | ||
| } | ||
| var message = { | ||
| type: TYPE, | ||
| handshakeConfirmation: Boolean(acknowledgement), | ||
| handshakeConfirmation: !!acknowledgement, | ||
| handshake: !acknowledgement | ||
@@ -132,10 +142,13 @@ }; | ||
| targetWindow.postMessage(JSON.stringify(message), origin); | ||
| if (origin !== null) { | ||
| targetWindow.postMessage(JSON.stringify(message), origin); | ||
| } else { | ||
| targetWindow.postMessage(JSON.stringify(message)); | ||
| } | ||
| } | ||
| function isSafeMessage(msgSource, msgOrigin, msgType) { | ||
| var jsdom = window.navigator.userAgent.indexOf("jsdom") >= 0 && msgSource === null; | ||
| return (msgSource === targetWindow || jsdom) && (origin === "*" || msgOrigin === origin) && msgType === TYPE; | ||
| var jsdom = window.navigator.userAgent.indexOf("jsdom") >= 0 && msgSource === null, | ||
| safeOrigin = origin === "*" || origin === null || msgOrigin === origin; | ||
| return (msgSource === targetWindow || jsdom) && safeOrigin && msgType === TYPE; | ||
| } | ||
@@ -145,5 +158,3 @@ | ||
| if (data.handshake) sendHandshake(true); | ||
| isHandshaken = true; | ||
| handshakeCallback.forEach(function (hsCallback) { | ||
@@ -153,8 +164,6 @@ return hsCallback(); | ||
| handshakeCallback.clear(); | ||
| preHandshakeSendQueue.forEach(function (sendItem) { | ||
| return send(sendItem.namespace, sendItem.data, sendItem.responseId).then(function (response) { | ||
| return sendItem.resolve(response); | ||
| }) // eslint-disable-line promise/prefer-await-to-then | ||
| ["catch"](function () { | ||
| })["catch"](function () { | ||
| return sendItem.resolve(); | ||
@@ -166,15 +175,10 @@ }); | ||
| var objectAssign = typeof Object.assign == "function" ? Object.assign : function (target) { | ||
| var result = Object(target); | ||
| var objectAssign = typeof Object.assign == "function" ? Object.assign : function objectAssignPolyfill(target) { | ||
| for (var result = Object(target), index = 1, nextSource; index < arguments.length; index++) { | ||
| nextSource = arguments[index]; | ||
| for (var index = 1; index < arguments.length; index++) { | ||
| var nextSource = arguments[index]; // eslint-disable-line prefer-rest-params | ||
| // Skip over if undefined or null | ||
| if (nextSource != null) { | ||
| for (var nextKey in nextSource) { | ||
| // Avoid bugs when hasOwnProperty is shadowed | ||
| // eslint-disable-next-line max-depth | ||
| if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { | ||
| result[nextKey] = nextSource[nextKey]; // eslint-disable-line immutable/no-mutation | ||
| result[nextKey] = nextSource[nextKey]; | ||
| } | ||
@@ -193,6 +197,4 @@ } | ||
| namespace: messageData.namespace, | ||
| open: function open() { | ||
| message.isPromise = true; // eslint-disable-line immutable/no-mutation | ||
| message.isPromise = true; | ||
| return objectAssign({}, messageData, { | ||
@@ -205,3 +207,2 @@ response: function response(data) { | ||
| }; | ||
| return message; | ||
@@ -215,2 +216,3 @@ } | ||
| } | ||
| var resolver = responseResolver.get(messageData.responseId); | ||
@@ -229,7 +231,6 @@ clearTimeout(resolver.timer); | ||
| listeners.get(message.namespace).forEach(function (listener) { | ||
| // eslint-disable-next-line max-depth | ||
| if (typeof listener === "function") { | ||
| if (typeof listener == "function") { | ||
| listener(createMessage(message)); | ||
| } else if (listener) { | ||
| console.error("Listener is no function: ", listener); // eslint-disable-line | ||
| console.error("Listener is no function: ", listener); | ||
| } | ||
@@ -241,2 +242,3 @@ }); | ||
| } | ||
| if (!outstandingMessages.has(message.namespace)) { | ||
@@ -252,4 +254,5 @@ outstandingMessages.set(message.namespace, new Set()); | ||
| var ownWindow = sourceWindow || window; | ||
| ownWindow.addEventListener("message", function (event) { | ||
| var data = void 0; | ||
| ownWindow.addEventListener("message", function messageListener(event) { | ||
| var data; | ||
| try { | ||
@@ -266,6 +269,4 @@ data = JSON.parse(event.data); | ||
| if (data.handshake || data.handshakeConfirmation) return handleHandshake(data); | ||
| return handleMessage(data); | ||
| }, false); | ||
| sendHandshake(); | ||
@@ -275,11 +276,13 @@ | ||
| if (isHandshaken) { | ||
| if (typeof callback === "function") { | ||
| if (typeof callback == "function") { | ||
| callback(); | ||
| } | ||
| return true; | ||
| } | ||
| if (typeof callback === "function") { | ||
| if (typeof callback == "function") { | ||
| handshakeCallback.add(callback); | ||
| } | ||
| return false; | ||
@@ -289,9 +292,11 @@ } | ||
| return { | ||
| addListener: function (namespace, callback) { | ||
| addListener: function addListener(namespace, callback) { | ||
| if (debug) { | ||
| log(ownId, "addListener() to " + namespace); | ||
| } | ||
| if (!listeners.has(namespace)) { | ||
| listeners.set(namespace, new Set()); | ||
| } | ||
| listeners.get(namespace).add(callback); | ||
@@ -303,2 +308,3 @@ | ||
| } | ||
| outstandingMessages.get(namespace).forEach(function (message) { | ||
@@ -312,10 +318,10 @@ return callback(message); | ||
| }, | ||
| removeListener: function (namespace, callback) { | ||
| removeListener: function removeListener(namespace, callback) { | ||
| if (debug) { | ||
| log(ownId, "removeListener() to " + namespace); | ||
| } | ||
| listeners.get(namespace)["delete"](callback); | ||
| }, | ||
| send: send, | ||
| hasHandshake: hasHandshake | ||
@@ -322,0 +328,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"interframe.commonjs.js","sources":["../src/nextID.js","../src/index.js"],"sourcesContent":["let id = 0\n\nexport default function nextID()\n{\n id += 1\n return id\n}\n","/* eslint-disable filenames/match-exported, max-params, compat/compat */\n/* eslint-env browser */\n\nimport nextID from \"./nextID\"\n\nconst TYPE = \"application/interframe-ssoft-v1+json\"\nconst PROMISE_TIMEOUT = 3000\nconst HAS_CONSOLE_LOG =\n typeof console !== \"undefined\" && typeof console.log === \"function\"\nconst UNIQUE_ID_RANDOM_LENGTH = 5\n\nfunction log(id, ...messages) {\n if (HAS_CONSOLE_LOG) {\n // eslint-disable-next-line no-console\n console.log(`[interframe ${id}]`, ...messages)\n }\n}\n\nfunction generateUniqueId() {\n const nowDate = Date.now().toString()\n\n return `${nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH)}-${Math.random()\n .toFixed(UNIQUE_ID_RANDOM_LENGTH)\n .substring(2)}`\n}\n\nfunction interframe(\n targetWindow,\n origin = \"*\",\n sourceWindow,\n { debug } = { debug: false }\n) {\n if (!targetWindow) {\n throw new Error(\"parameter 'targetWindow' is missing\")\n }\n\n const ownId = generateUniqueId()\n\n const listeners = new Map()\n const handshakeCallback = new Set()\n const responseResolver = new Map()\n const preHandshakeSendQueue = new Set()\n const outstandingMessages = new Map()\n let isHandshaken = false\n\n function addListener(namespace, callback) {\n if (debug) {\n log(ownId, `addListener() to ${namespace}`)\n }\n if (!listeners.has(namespace)) {\n listeners.set(namespace, new Set())\n }\n listeners.get(namespace).add(callback)\n\n if (outstandingMessages.has(namespace)) {\n if (debug) {\n log(\n ownId,\n ` \\\\- has ${outstandingMessages.get(namespace).length} outstanding messages`\n )\n }\n outstandingMessages.get(namespace).forEach((message) => callback(message))\n outstandingMessages.delete(namespace)\n }\n\n return callback\n }\n\n function removeListener(namespace, callback) {\n if (debug) {\n log(ownId, `removeListener() to ${namespace}`)\n }\n listeners.get(namespace).delete(callback)\n }\n\n function send(namespace, data = null, responseId) {\n if (!namespace) {\n throw new Error(\"parameter 'namespace' is missing\")\n }\n if (typeof namespace !== \"string\") {\n throw new Error(\"parameter 'namespace' must be a string\")\n }\n\n if (!isHandshaken) {\n if (debug) {\n log(ownId, `send() to ${namespace} without handshake`, data)\n }\n return new Promise((resolve) => {\n preHandshakeSendQueue.add({\n namespace,\n data,\n responseId,\n resolve\n })\n })\n }\n\n if (debug) {\n log(ownId, `send() to ${namespace}`, data)\n }\n const id = nextID()\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n }),\n origin\n )\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n responseResolver.delete(id)\n resolve()\n }, PROMISE_TIMEOUT)\n\n responseResolver.set(id, {\n // eslint-disable-line security/detect-object-injection\n resolve,\n timer\n })\n })\n }\n\n function sendHandshake(acknowledgement = false) {\n const message = {\n type: TYPE,\n handshakeConfirmation: Boolean(acknowledgement),\n handshake: !acknowledgement\n }\n\n if (debug) {\n if (acknowledgement) {\n log(ownId, `sendHandshake() as acknowledgement to handshake request`)\n } else {\n log(ownId, `sendHandshake() as initial handshake request`)\n }\n }\n\n targetWindow.postMessage(JSON.stringify(message), origin)\n }\n\n function isSafeMessage(msgSource, msgOrigin, msgType) {\n const jsdom = window.navigator.userAgent.indexOf(\"jsdom\") >= 0 && msgSource === null\n const safeSource = msgSource === targetWindow || jsdom\n const safeOrigin = origin === \"*\" || msgOrigin === origin\n const safeType = msgType === TYPE\n\n return safeSource && safeOrigin && safeType\n }\n\n function handleHandshake(data) {\n if (data.handshake) sendHandshake(true)\n\n isHandshaken = true\n\n handshakeCallback.forEach((hsCallback) => hsCallback())\n handshakeCallback.clear()\n\n preHandshakeSendQueue.forEach((sendItem) =>\n send(sendItem.namespace, sendItem.data, sendItem.responseId)\n .then((response) => sendItem.resolve(response)) // eslint-disable-line promise/prefer-await-to-then\n .catch(() => sendItem.resolve())\n )\n preHandshakeSendQueue.clear()\n }\n\n function objectAssignPolyfill(target) {\n const result = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index] // eslint-disable-line prefer-rest-params\n\n // Skip over if undefined or null\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n // eslint-disable-next-line max-depth\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n result[nextKey] = nextSource[nextKey] // eslint-disable-line immutable/no-mutation\n }\n }\n }\n }\n\n return result\n }\n const objectAssign =\n typeof Object.assign == \"function\" ? Object.assign : objectAssignPolyfill\n\n function createMessage(messageData) {\n const message = {\n id: messageData.id,\n data: messageData.data,\n namespace: messageData.namespace,\n\n open: () => {\n message.isPromise = true // eslint-disable-line immutable/no-mutation\n\n return objectAssign({}, messageData, {\n response: (data) => {\n send(messageData.namespace, data, messageData.id)\n }\n })\n }\n }\n\n return message\n }\n\n function handleMessage(messageData) {\n if (messageData.responseId && responseResolver.has(messageData.responseId)) {\n if (debug) {\n log(ownId, `handleMessage() having response id`, messageData)\n }\n const resolver = responseResolver.get(messageData.responseId)\n clearTimeout(resolver.timer)\n resolver.resolve(messageData)\n responseResolver.delete(messageData.responseId)\n } else {\n const message = createMessage(messageData)\n\n if (listeners.has(message.namespace)) {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message having namespace listeners`,\n messageData\n )\n }\n\n listeners.get(message.namespace).forEach((listener) => {\n // eslint-disable-next-line max-depth\n if (typeof listener === \"function\") {\n listener(createMessage(message))\n } else if (listener) {\n console.error(\"Listener is no function: \", listener) // eslint-disable-line\n }\n })\n } else {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message without listeners, put into outstanding messages queue`,\n messageData\n )\n }\n if (!outstandingMessages.has(message.namespace)) {\n outstandingMessages.set(message.namespace, new Set())\n }\n\n outstandingMessages.get(message.namespace).add(createMessage(message))\n }\n }\n }\n\n function messageListener(event) {\n let data\n try {\n data = JSON.parse(event.data)\n } catch (error) {\n return false\n }\n\n if (!isSafeMessage(event.source, event.origin, data.type)) {\n return false\n }\n\n if (data.handshake || data.handshakeConfirmation) return handleHandshake(data)\n\n return handleMessage(data)\n }\n\n const ownWindow = sourceWindow || window\n ownWindow.addEventListener(\"message\", messageListener, false)\n\n sendHandshake()\n\n function hasHandshake(callback) {\n if (isHandshaken) {\n if (typeof callback === \"function\") {\n callback()\n }\n return true\n }\n\n if (typeof callback === \"function\") {\n handshakeCallback.add(callback)\n }\n return false\n }\n\n return {\n addListener,\n removeListener,\n send,\n\n hasHandshake\n }\n}\n\nexport default interframe\n"],"names":["id","nextID","TYPE","PROMISE_TIMEOUT","HAS_CONSOLE_LOG","console","log","UNIQUE_ID_RANDOM_LENGTH","messages","generateUniqueId","nowDate","Date","now","toString","substring","length","Math","random","toFixed","interframe","targetWindow","origin","sourceWindow","debug","Error","ownId","listeners","Map","handshakeCallback","Set","responseResolver","preHandshakeSendQueue","outstandingMessages","isHandshaken","send","namespace","data","responseId","Promise","resolve","add","postMessage","JSON","stringify","timer","setTimeout","set","sendHandshake","acknowledgement","message","Boolean","isSafeMessage","msgSource","msgOrigin","msgType","jsdom","window","navigator","userAgent","indexOf","handleHandshake","handshake","forEach","hsCallback","clear","sendItem","then","response","objectAssign","Object","assign","target","result","index","arguments","nextSource","nextKey","prototype","hasOwnProperty","call","createMessage","messageData","isPromise","handleMessage","has","resolver","get","listener","error","ownWindow","addEventListener","event","parse","source","type","handshakeConfirmation","hasHandshake","callback"],"mappings":"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"} | ||
| {"version":3,"file":"interframe.commonjs.js","sources":["../src/nextID.js","../src/index.js"],"sourcesContent":["let id = 0\n\nexport default function nextID()\n{\n id += 1\n return id\n}\n","/* eslint-disable filenames/match-exported, max-params, compat/compat */\n/* eslint-env browser */\n\nimport nextID from \"./nextID\"\n\nconst TYPE = \"application/interframe-ssoft-v1+json\"\nconst PROMISE_TIMEOUT = 3000\nconst HAS_CONSOLE_LOG =\n typeof console !== \"undefined\" && typeof console.log === \"function\"\nconst UNIQUE_ID_RANDOM_LENGTH = 5\n\nfunction log(id, ...messages) {\n if (HAS_CONSOLE_LOG) {\n // eslint-disable-next-line no-console\n console.log(`[interframe ${id}]`, ...messages)\n }\n}\n\nfunction generateUniqueId() {\n const nowDate = Date.now().toString()\n\n return `${nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH)}-${Math.random()\n .toFixed(UNIQUE_ID_RANDOM_LENGTH)\n .substring(2)}`\n}\n\nfunction interframe(\n targetWindow,\n origin = \"*\",\n sourceWindow,\n { debug } = { debug: false }\n) {\n if (!targetWindow) {\n throw new Error(\"parameter 'targetWindow' is missing\")\n }\n\n const ownId = generateUniqueId()\n\n const listeners = new Map()\n const handshakeCallback = new Set()\n const responseResolver = new Map()\n const preHandshakeSendQueue = new Set()\n const outstandingMessages = new Map()\n let isHandshaken = false\n\n function addListener(namespace, callback) {\n if (debug) {\n log(ownId, `addListener() to ${namespace}`)\n }\n if (!listeners.has(namespace)) {\n listeners.set(namespace, new Set())\n }\n listeners.get(namespace).add(callback)\n\n if (outstandingMessages.has(namespace)) {\n if (debug) {\n log(\n ownId,\n ` \\\\- has ${outstandingMessages.get(namespace).length} outstanding messages`\n )\n }\n outstandingMessages.get(namespace).forEach((message) => callback(message))\n outstandingMessages.delete(namespace)\n }\n\n return callback\n }\n\n function removeListener(namespace, callback) {\n if (debug) {\n log(ownId, `removeListener() to ${namespace}`)\n }\n listeners.get(namespace).delete(callback)\n }\n\n function send(namespace, data = null, responseId) {\n if (!namespace) {\n throw new Error(\"parameter 'namespace' is missing\")\n }\n if (typeof namespace !== \"string\") {\n throw new Error(\"parameter 'namespace' must be a string\")\n }\n\n if (!isHandshaken) {\n if (debug) {\n log(ownId, `send() to ${namespace} without handshake`, data)\n }\n return new Promise((resolve) => {\n preHandshakeSendQueue.add({\n namespace,\n data,\n responseId,\n resolve\n })\n })\n }\n\n if (debug) {\n log(ownId, `send() to ${namespace}`, data)\n }\n const id = nextID()\n\n if (origin !== null) {\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n }),\n origin\n )\n } else {\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n })\n )\n }\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n responseResolver.delete(id)\n resolve()\n }, PROMISE_TIMEOUT)\n\n responseResolver.set(id, {\n resolve,\n timer\n })\n })\n }\n\n function sendHandshake(acknowledgement = false) {\n const message = {\n type: TYPE,\n handshakeConfirmation: Boolean(acknowledgement),\n handshake: !acknowledgement\n }\n\n if (debug) {\n if (acknowledgement) {\n log(ownId, `sendHandshake() as acknowledgement to handshake request`)\n } else {\n log(ownId, `sendHandshake() as initial handshake request`)\n }\n }\n\n if (origin !== null) {\n targetWindow.postMessage(JSON.stringify(message), origin)\n } else {\n targetWindow.postMessage(JSON.stringify(message))\n }\n }\n\n function isSafeMessage(msgSource, msgOrigin, msgType) {\n const jsdom = window.navigator.userAgent.indexOf(\"jsdom\") >= 0 && msgSource === null\n const safeSource = msgSource === targetWindow || jsdom\n const safeOrigin = origin === \"*\" || origin === null || msgOrigin === origin\n const safeType = msgType === TYPE\n\n return safeSource && safeOrigin && safeType\n }\n\n function handleHandshake(data) {\n if (data.handshake) sendHandshake(true)\n\n isHandshaken = true\n\n handshakeCallback.forEach((hsCallback) => hsCallback())\n handshakeCallback.clear()\n\n preHandshakeSendQueue.forEach((sendItem) =>\n send(sendItem.namespace, sendItem.data, sendItem.responseId)\n .then((response) => sendItem.resolve(response)) // eslint-disable-line promise/prefer-await-to-then\n .catch(() => sendItem.resolve())\n )\n preHandshakeSendQueue.clear()\n }\n\n function objectAssignPolyfill(target) {\n const result = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index] // eslint-disable-line prefer-rest-params\n\n // Skip over if undefined or null\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n // eslint-disable-next-line max-depth\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n result[nextKey] = nextSource[nextKey]\n }\n }\n }\n }\n\n return result\n }\n const objectAssign =\n typeof Object.assign == \"function\" ? Object.assign : objectAssignPolyfill\n\n function createMessage(messageData) {\n const message = {\n id: messageData.id,\n data: messageData.data,\n namespace: messageData.namespace,\n\n open: () => {\n message.isPromise = true\n\n return objectAssign({}, messageData, {\n response: (data) => {\n send(messageData.namespace, data, messageData.id)\n }\n })\n }\n }\n\n return message\n }\n\n function handleMessage(messageData) {\n if (messageData.responseId && responseResolver.has(messageData.responseId)) {\n if (debug) {\n log(ownId, `handleMessage() having response id`, messageData)\n }\n const resolver = responseResolver.get(messageData.responseId)\n clearTimeout(resolver.timer)\n resolver.resolve(messageData)\n responseResolver.delete(messageData.responseId)\n } else {\n const message = createMessage(messageData)\n\n if (listeners.has(message.namespace)) {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message having namespace listeners`,\n messageData\n )\n }\n\n listeners.get(message.namespace).forEach((listener) => {\n // eslint-disable-next-line max-depth\n if (typeof listener === \"function\") {\n listener(createMessage(message))\n } else if (listener) {\n console.error(\"Listener is no function: \", listener) // eslint-disable-line\n }\n })\n } else {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message without listeners, put into outstanding messages queue`,\n messageData\n )\n }\n if (!outstandingMessages.has(message.namespace)) {\n outstandingMessages.set(message.namespace, new Set())\n }\n\n outstandingMessages.get(message.namespace).add(createMessage(message))\n }\n }\n }\n\n function messageListener(event) {\n let data\n try {\n data = JSON.parse(event.data)\n } catch (error) {\n return false\n }\n\n if (!isSafeMessage(event.source, event.origin, data.type)) {\n return false\n }\n\n if (data.handshake || data.handshakeConfirmation) return handleHandshake(data)\n\n return handleMessage(data)\n }\n\n const ownWindow = sourceWindow || window\n ownWindow.addEventListener(\"message\", messageListener, false)\n\n sendHandshake()\n\n function hasHandshake(callback) {\n if (isHandshaken) {\n if (typeof callback === \"function\") {\n callback()\n }\n return true\n }\n\n if (typeof callback === \"function\") {\n handshakeCallback.add(callback)\n }\n return false\n }\n\n return {\n addListener,\n removeListener,\n send,\n\n hasHandshake\n }\n}\n\nexport default interframe\n"],"names":["id","nextID","TYPE","PROMISE_TIMEOUT","HAS_CONSOLE_LOG","console","log","UNIQUE_ID_RANDOM_LENGTH","messages","generateUniqueId","nowDate","Date","now","toString","substring","length","Math","random","toFixed","interframe","targetWindow","origin","sourceWindow","debug","Error","ownId","listeners","Map","handshakeCallback","Set","responseResolver","preHandshakeSendQueue","outstandingMessages","isHandshaken","send","namespace","data","responseId","Promise","resolve","add","postMessage","JSON","stringify","type","timer","setTimeout","set","sendHandshake","acknowledgement","message","handshakeConfirmation","handshake","isSafeMessage","msgSource","msgOrigin","msgType","jsdom","window","navigator","userAgent","indexOf","safeOrigin","handleHandshake","forEach","hsCallback","clear","sendItem","then","response","objectAssign","Object","assign","objectAssignPolyfill","target","result","index","nextSource","arguments","nextKey","prototype","hasOwnProperty","call","createMessage","messageData","open","isPromise","handleMessage","has","resolver","get","clearTimeout","listener","error","ownWindow","addEventListener","messageListener","event","parse","source","hasHandshake","callback","addListener","removeListener"],"mappings":"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"} |
@@ -1,4 +0,3 @@ | ||
| /*! interframe v2.1.2 by Sebastian Fastner <s.fastner@sebastian-software.de> */ | ||
| /*! interframe v2.2.0 by Sebastian Fastner <s.fastner@sebastian-software.de> */ | ||
| var id = 0; | ||
| function nextID() { | ||
@@ -9,18 +8,13 @@ id += 1; | ||
| /* eslint-disable filenames/match-exported, max-params, compat/compat */ | ||
| var TYPE = "application/interframe-ssoft-v1+json", | ||
| PROMISE_TIMEOUT = 3e3, | ||
| HAS_CONSOLE_LOG = typeof console != "undefined" && typeof console.log == "function", | ||
| UNIQUE_ID_RANDOM_LENGTH = 5; | ||
| var TYPE = "application/interframe-ssoft-v1+json"; | ||
| var PROMISE_TIMEOUT = 3000; | ||
| var HAS_CONSOLE_LOG = typeof console !== "undefined" && typeof console.log === "function"; | ||
| var UNIQUE_ID_RANDOM_LENGTH = 5; | ||
| function log(id) { | ||
| if (HAS_CONSOLE_LOG) { | ||
| var _console; | ||
| for (var _len = arguments.length, messages = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| for (var _console, _len = arguments.length, messages = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
| messages[_key - 1] = arguments[_key]; | ||
| } | ||
| // eslint-disable-next-line no-console | ||
| (_console = console).log.apply(_console, ["[interframe " + id + "]"].concat(messages)); | ||
@@ -32,11 +26,13 @@ } | ||
| var nowDate = Date.now().toString(); | ||
| return nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH) + "-" + Math.random().toFixed(UNIQUE_ID_RANDOM_LENGTH).substring(2); | ||
| } | ||
| function interframe(targetWindow) { | ||
| var origin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "*"; | ||
| var sourceWindow = arguments[2]; | ||
| function interframe(targetWindow, origin, sourceWindow, _temp) { | ||
| if (origin === void 0) { | ||
| origin = "*"; | ||
| } | ||
| var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : { debug: false }, | ||
| var _ref = _temp === void 0 ? { | ||
| debug: false | ||
| } : _temp, | ||
| debug = _ref.debug; | ||
@@ -48,19 +44,20 @@ | ||
| var ownId = generateUniqueId(); | ||
| var ownId = generateUniqueId(), | ||
| listeners = new Map(), | ||
| handshakeCallback = new Set(), | ||
| responseResolver = new Map(), | ||
| preHandshakeSendQueue = new Set(), | ||
| outstandingMessages = new Map(), | ||
| isHandshaken = false; | ||
| var listeners = new Map(); | ||
| var handshakeCallback = new Set(); | ||
| var responseResolver = new Map(); | ||
| var preHandshakeSendQueue = new Set(); | ||
| var outstandingMessages = new Map(); | ||
| var isHandshaken = false; | ||
| function send(namespace, data, responseId) { | ||
| if (data === void 0) { | ||
| data = null; | ||
| } | ||
| function send(namespace) { | ||
| var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; | ||
| var responseId = arguments[2]; | ||
| if (!namespace) { | ||
| throw new Error("parameter 'namespace' is missing"); | ||
| } | ||
| if (typeof namespace !== "string") { | ||
| if (typeof namespace != "string") { | ||
| throw new Error("parameter 'namespace' must be a string"); | ||
@@ -73,2 +70,3 @@ } | ||
| } | ||
| return new Promise(function (resolve) { | ||
@@ -87,11 +85,23 @@ preHandshakeSendQueue.add({ | ||
| } | ||
| var id = nextID(); | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| }), origin); | ||
| if (origin !== null) { | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| }), origin); | ||
| } else { | ||
| targetWindow.postMessage(JSON.stringify({ | ||
| id: id, | ||
| responseId: responseId, | ||
| type: TYPE, | ||
| namespace: namespace, | ||
| data: data | ||
| })); | ||
| } | ||
| return new Promise(function (resolve) { | ||
@@ -102,5 +112,3 @@ var timer = setTimeout(function () { | ||
| }, PROMISE_TIMEOUT); | ||
| responseResolver.set(id, { | ||
| // eslint-disable-line security/detect-object-injection | ||
| resolve: resolve, | ||
@@ -112,8 +120,10 @@ timer: timer | ||
| function sendHandshake() { | ||
| var acknowledgement = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; | ||
| function sendHandshake(acknowledgement) { | ||
| if (acknowledgement === void 0) { | ||
| acknowledgement = false; | ||
| } | ||
| var message = { | ||
| type: TYPE, | ||
| handshakeConfirmation: Boolean(acknowledgement), | ||
| handshakeConfirmation: !!acknowledgement, | ||
| handshake: !acknowledgement | ||
@@ -130,10 +140,13 @@ }; | ||
| targetWindow.postMessage(JSON.stringify(message), origin); | ||
| if (origin !== null) { | ||
| targetWindow.postMessage(JSON.stringify(message), origin); | ||
| } else { | ||
| targetWindow.postMessage(JSON.stringify(message)); | ||
| } | ||
| } | ||
| function isSafeMessage(msgSource, msgOrigin, msgType) { | ||
| var jsdom = window.navigator.userAgent.indexOf("jsdom") >= 0 && msgSource === null; | ||
| return (msgSource === targetWindow || jsdom) && (origin === "*" || msgOrigin === origin) && msgType === TYPE; | ||
| var jsdom = window.navigator.userAgent.indexOf("jsdom") >= 0 && msgSource === null, | ||
| safeOrigin = origin === "*" || origin === null || msgOrigin === origin; | ||
| return (msgSource === targetWindow || jsdom) && safeOrigin && msgType === TYPE; | ||
| } | ||
@@ -143,5 +156,3 @@ | ||
| if (data.handshake) sendHandshake(true); | ||
| isHandshaken = true; | ||
| handshakeCallback.forEach(function (hsCallback) { | ||
@@ -151,8 +162,6 @@ return hsCallback(); | ||
| handshakeCallback.clear(); | ||
| preHandshakeSendQueue.forEach(function (sendItem) { | ||
| return send(sendItem.namespace, sendItem.data, sendItem.responseId).then(function (response) { | ||
| return sendItem.resolve(response); | ||
| }) // eslint-disable-line promise/prefer-await-to-then | ||
| ["catch"](function () { | ||
| })["catch"](function () { | ||
| return sendItem.resolve(); | ||
@@ -164,15 +173,10 @@ }); | ||
| var objectAssign = typeof Object.assign == "function" ? Object.assign : function (target) { | ||
| var result = Object(target); | ||
| var objectAssign = typeof Object.assign == "function" ? Object.assign : function objectAssignPolyfill(target) { | ||
| for (var result = Object(target), index = 1, nextSource; index < arguments.length; index++) { | ||
| nextSource = arguments[index]; | ||
| for (var index = 1; index < arguments.length; index++) { | ||
| var nextSource = arguments[index]; // eslint-disable-line prefer-rest-params | ||
| // Skip over if undefined or null | ||
| if (nextSource != null) { | ||
| for (var nextKey in nextSource) { | ||
| // Avoid bugs when hasOwnProperty is shadowed | ||
| // eslint-disable-next-line max-depth | ||
| if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { | ||
| result[nextKey] = nextSource[nextKey]; // eslint-disable-line immutable/no-mutation | ||
| result[nextKey] = nextSource[nextKey]; | ||
| } | ||
@@ -191,6 +195,4 @@ } | ||
| namespace: messageData.namespace, | ||
| open: function open() { | ||
| message.isPromise = true; // eslint-disable-line immutable/no-mutation | ||
| message.isPromise = true; | ||
| return objectAssign({}, messageData, { | ||
@@ -203,3 +205,2 @@ response: function response(data) { | ||
| }; | ||
| return message; | ||
@@ -213,2 +214,3 @@ } | ||
| } | ||
| var resolver = responseResolver.get(messageData.responseId); | ||
@@ -227,7 +229,6 @@ clearTimeout(resolver.timer); | ||
| listeners.get(message.namespace).forEach(function (listener) { | ||
| // eslint-disable-next-line max-depth | ||
| if (typeof listener === "function") { | ||
| if (typeof listener == "function") { | ||
| listener(createMessage(message)); | ||
| } else if (listener) { | ||
| console.error("Listener is no function: ", listener); // eslint-disable-line | ||
| console.error("Listener is no function: ", listener); | ||
| } | ||
@@ -239,2 +240,3 @@ }); | ||
| } | ||
| if (!outstandingMessages.has(message.namespace)) { | ||
@@ -250,4 +252,5 @@ outstandingMessages.set(message.namespace, new Set()); | ||
| var ownWindow = sourceWindow || window; | ||
| ownWindow.addEventListener("message", function (event) { | ||
| var data = void 0; | ||
| ownWindow.addEventListener("message", function messageListener(event) { | ||
| var data; | ||
| try { | ||
@@ -264,6 +267,4 @@ data = JSON.parse(event.data); | ||
| if (data.handshake || data.handshakeConfirmation) return handleHandshake(data); | ||
| return handleMessage(data); | ||
| }, false); | ||
| sendHandshake(); | ||
@@ -273,11 +274,13 @@ | ||
| if (isHandshaken) { | ||
| if (typeof callback === "function") { | ||
| if (typeof callback == "function") { | ||
| callback(); | ||
| } | ||
| return true; | ||
| } | ||
| if (typeof callback === "function") { | ||
| if (typeof callback == "function") { | ||
| handshakeCallback.add(callback); | ||
| } | ||
| return false; | ||
@@ -287,9 +290,11 @@ } | ||
| return { | ||
| addListener: function (namespace, callback) { | ||
| addListener: function addListener(namespace, callback) { | ||
| if (debug) { | ||
| log(ownId, "addListener() to " + namespace); | ||
| } | ||
| if (!listeners.has(namespace)) { | ||
| listeners.set(namespace, new Set()); | ||
| } | ||
| listeners.get(namespace).add(callback); | ||
@@ -301,2 +306,3 @@ | ||
| } | ||
| outstandingMessages.get(namespace).forEach(function (message) { | ||
@@ -310,10 +316,10 @@ return callback(message); | ||
| }, | ||
| removeListener: function (namespace, callback) { | ||
| removeListener: function removeListener(namespace, callback) { | ||
| if (debug) { | ||
| log(ownId, "removeListener() to " + namespace); | ||
| } | ||
| listeners.get(namespace)["delete"](callback); | ||
| }, | ||
| send: send, | ||
| hasHandshake: hasHandshake | ||
@@ -320,0 +326,0 @@ }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"interframe.esmodules.js","sources":["../src/nextID.js","../src/index.js"],"sourcesContent":["let id = 0\n\nexport default function nextID()\n{\n id += 1\n return id\n}\n","/* eslint-disable filenames/match-exported, max-params, compat/compat */\n/* eslint-env browser */\n\nimport nextID from \"./nextID\"\n\nconst TYPE = \"application/interframe-ssoft-v1+json\"\nconst PROMISE_TIMEOUT = 3000\nconst HAS_CONSOLE_LOG =\n typeof console !== \"undefined\" && typeof console.log === \"function\"\nconst UNIQUE_ID_RANDOM_LENGTH = 5\n\nfunction log(id, ...messages) {\n if (HAS_CONSOLE_LOG) {\n // eslint-disable-next-line no-console\n console.log(`[interframe ${id}]`, ...messages)\n }\n}\n\nfunction generateUniqueId() {\n const nowDate = Date.now().toString()\n\n return `${nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH)}-${Math.random()\n .toFixed(UNIQUE_ID_RANDOM_LENGTH)\n .substring(2)}`\n}\n\nfunction interframe(\n targetWindow,\n origin = \"*\",\n sourceWindow,\n { debug } = { debug: false }\n) {\n if (!targetWindow) {\n throw new Error(\"parameter 'targetWindow' is missing\")\n }\n\n const ownId = generateUniqueId()\n\n const listeners = new Map()\n const handshakeCallback = new Set()\n const responseResolver = new Map()\n const preHandshakeSendQueue = new Set()\n const outstandingMessages = new Map()\n let isHandshaken = false\n\n function addListener(namespace, callback) {\n if (debug) {\n log(ownId, `addListener() to ${namespace}`)\n }\n if (!listeners.has(namespace)) {\n listeners.set(namespace, new Set())\n }\n listeners.get(namespace).add(callback)\n\n if (outstandingMessages.has(namespace)) {\n if (debug) {\n log(\n ownId,\n ` \\\\- has ${outstandingMessages.get(namespace).length} outstanding messages`\n )\n }\n outstandingMessages.get(namespace).forEach((message) => callback(message))\n outstandingMessages.delete(namespace)\n }\n\n return callback\n }\n\n function removeListener(namespace, callback) {\n if (debug) {\n log(ownId, `removeListener() to ${namespace}`)\n }\n listeners.get(namespace).delete(callback)\n }\n\n function send(namespace, data = null, responseId) {\n if (!namespace) {\n throw new Error(\"parameter 'namespace' is missing\")\n }\n if (typeof namespace !== \"string\") {\n throw new Error(\"parameter 'namespace' must be a string\")\n }\n\n if (!isHandshaken) {\n if (debug) {\n log(ownId, `send() to ${namespace} without handshake`, data)\n }\n return new Promise((resolve) => {\n preHandshakeSendQueue.add({\n namespace,\n data,\n responseId,\n resolve\n })\n })\n }\n\n if (debug) {\n log(ownId, `send() to ${namespace}`, data)\n }\n const id = nextID()\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n }),\n origin\n )\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n responseResolver.delete(id)\n resolve()\n }, PROMISE_TIMEOUT)\n\n responseResolver.set(id, {\n // eslint-disable-line security/detect-object-injection\n resolve,\n timer\n })\n })\n }\n\n function sendHandshake(acknowledgement = false) {\n const message = {\n type: TYPE,\n handshakeConfirmation: Boolean(acknowledgement),\n handshake: !acknowledgement\n }\n\n if (debug) {\n if (acknowledgement) {\n log(ownId, `sendHandshake() as acknowledgement to handshake request`)\n } else {\n log(ownId, `sendHandshake() as initial handshake request`)\n }\n }\n\n targetWindow.postMessage(JSON.stringify(message), origin)\n }\n\n function isSafeMessage(msgSource, msgOrigin, msgType) {\n const jsdom = window.navigator.userAgent.indexOf(\"jsdom\") >= 0 && msgSource === null\n const safeSource = msgSource === targetWindow || jsdom\n const safeOrigin = origin === \"*\" || msgOrigin === origin\n const safeType = msgType === TYPE\n\n return safeSource && safeOrigin && safeType\n }\n\n function handleHandshake(data) {\n if (data.handshake) sendHandshake(true)\n\n isHandshaken = true\n\n handshakeCallback.forEach((hsCallback) => hsCallback())\n handshakeCallback.clear()\n\n preHandshakeSendQueue.forEach((sendItem) =>\n send(sendItem.namespace, sendItem.data, sendItem.responseId)\n .then((response) => sendItem.resolve(response)) // eslint-disable-line promise/prefer-await-to-then\n .catch(() => sendItem.resolve())\n )\n preHandshakeSendQueue.clear()\n }\n\n function objectAssignPolyfill(target) {\n const result = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index] // eslint-disable-line prefer-rest-params\n\n // Skip over if undefined or null\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n // eslint-disable-next-line max-depth\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n result[nextKey] = nextSource[nextKey] // eslint-disable-line immutable/no-mutation\n }\n }\n }\n }\n\n return result\n }\n const objectAssign =\n typeof Object.assign == \"function\" ? Object.assign : objectAssignPolyfill\n\n function createMessage(messageData) {\n const message = {\n id: messageData.id,\n data: messageData.data,\n namespace: messageData.namespace,\n\n open: () => {\n message.isPromise = true // eslint-disable-line immutable/no-mutation\n\n return objectAssign({}, messageData, {\n response: (data) => {\n send(messageData.namespace, data, messageData.id)\n }\n })\n }\n }\n\n return message\n }\n\n function handleMessage(messageData) {\n if (messageData.responseId && responseResolver.has(messageData.responseId)) {\n if (debug) {\n log(ownId, `handleMessage() having response id`, messageData)\n }\n const resolver = responseResolver.get(messageData.responseId)\n clearTimeout(resolver.timer)\n resolver.resolve(messageData)\n responseResolver.delete(messageData.responseId)\n } else {\n const message = createMessage(messageData)\n\n if (listeners.has(message.namespace)) {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message having namespace listeners`,\n messageData\n )\n }\n\n listeners.get(message.namespace).forEach((listener) => {\n // eslint-disable-next-line max-depth\n if (typeof listener === \"function\") {\n listener(createMessage(message))\n } else if (listener) {\n console.error(\"Listener is no function: \", listener) // eslint-disable-line\n }\n })\n } else {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message without listeners, put into outstanding messages queue`,\n messageData\n )\n }\n if (!outstandingMessages.has(message.namespace)) {\n outstandingMessages.set(message.namespace, new Set())\n }\n\n outstandingMessages.get(message.namespace).add(createMessage(message))\n }\n }\n }\n\n function messageListener(event) {\n let data\n try {\n data = JSON.parse(event.data)\n } catch (error) {\n return false\n }\n\n if (!isSafeMessage(event.source, event.origin, data.type)) {\n return false\n }\n\n if (data.handshake || data.handshakeConfirmation) return handleHandshake(data)\n\n return handleMessage(data)\n }\n\n const ownWindow = sourceWindow || window\n ownWindow.addEventListener(\"message\", messageListener, false)\n\n sendHandshake()\n\n function hasHandshake(callback) {\n if (isHandshaken) {\n if (typeof callback === \"function\") {\n callback()\n }\n return true\n }\n\n if (typeof callback === \"function\") {\n handshakeCallback.add(callback)\n }\n return false\n }\n\n return {\n addListener,\n removeListener,\n send,\n\n hasHandshake\n }\n}\n\nexport default interframe\n"],"names":["id","nextID","TYPE","PROMISE_TIMEOUT","HAS_CONSOLE_LOG","console","log","UNIQUE_ID_RANDOM_LENGTH","messages","generateUniqueId","nowDate","Date","now","toString","substring","length","Math","random","toFixed","interframe","targetWindow","origin","sourceWindow","debug","Error","ownId","listeners","Map","handshakeCallback","Set","responseResolver","preHandshakeSendQueue","outstandingMessages","isHandshaken","send","namespace","data","responseId","Promise","resolve","add","postMessage","JSON","stringify","timer","setTimeout","set","sendHandshake","acknowledgement","message","Boolean","isSafeMessage","msgSource","msgOrigin","msgType","jsdom","window","navigator","userAgent","indexOf","handleHandshake","handshake","forEach","hsCallback","clear","sendItem","then","response","objectAssign","Object","assign","target","result","index","arguments","nextSource","nextKey","prototype","hasOwnProperty","call","createMessage","messageData","isPromise","handleMessage","has","resolver","get","listener","error","ownWindow","addEventListener","event","parse","source","type","handshakeConfirmation","hasHandshake","callback"],"mappings":"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"} | ||
| {"version":3,"file":"interframe.esmodules.js","sources":["../src/nextID.js","../src/index.js"],"sourcesContent":["let id = 0\n\nexport default function nextID()\n{\n id += 1\n return id\n}\n","/* eslint-disable filenames/match-exported, max-params, compat/compat */\n/* eslint-env browser */\n\nimport nextID from \"./nextID\"\n\nconst TYPE = \"application/interframe-ssoft-v1+json\"\nconst PROMISE_TIMEOUT = 3000\nconst HAS_CONSOLE_LOG =\n typeof console !== \"undefined\" && typeof console.log === \"function\"\nconst UNIQUE_ID_RANDOM_LENGTH = 5\n\nfunction log(id, ...messages) {\n if (HAS_CONSOLE_LOG) {\n // eslint-disable-next-line no-console\n console.log(`[interframe ${id}]`, ...messages)\n }\n}\n\nfunction generateUniqueId() {\n const nowDate = Date.now().toString()\n\n return `${nowDate.substring(nowDate.length - UNIQUE_ID_RANDOM_LENGTH)}-${Math.random()\n .toFixed(UNIQUE_ID_RANDOM_LENGTH)\n .substring(2)}`\n}\n\nfunction interframe(\n targetWindow,\n origin = \"*\",\n sourceWindow,\n { debug } = { debug: false }\n) {\n if (!targetWindow) {\n throw new Error(\"parameter 'targetWindow' is missing\")\n }\n\n const ownId = generateUniqueId()\n\n const listeners = new Map()\n const handshakeCallback = new Set()\n const responseResolver = new Map()\n const preHandshakeSendQueue = new Set()\n const outstandingMessages = new Map()\n let isHandshaken = false\n\n function addListener(namespace, callback) {\n if (debug) {\n log(ownId, `addListener() to ${namespace}`)\n }\n if (!listeners.has(namespace)) {\n listeners.set(namespace, new Set())\n }\n listeners.get(namespace).add(callback)\n\n if (outstandingMessages.has(namespace)) {\n if (debug) {\n log(\n ownId,\n ` \\\\- has ${outstandingMessages.get(namespace).length} outstanding messages`\n )\n }\n outstandingMessages.get(namespace).forEach((message) => callback(message))\n outstandingMessages.delete(namespace)\n }\n\n return callback\n }\n\n function removeListener(namespace, callback) {\n if (debug) {\n log(ownId, `removeListener() to ${namespace}`)\n }\n listeners.get(namespace).delete(callback)\n }\n\n function send(namespace, data = null, responseId) {\n if (!namespace) {\n throw new Error(\"parameter 'namespace' is missing\")\n }\n if (typeof namespace !== \"string\") {\n throw new Error(\"parameter 'namespace' must be a string\")\n }\n\n if (!isHandshaken) {\n if (debug) {\n log(ownId, `send() to ${namespace} without handshake`, data)\n }\n return new Promise((resolve) => {\n preHandshakeSendQueue.add({\n namespace,\n data,\n responseId,\n resolve\n })\n })\n }\n\n if (debug) {\n log(ownId, `send() to ${namespace}`, data)\n }\n const id = nextID()\n\n if (origin !== null) {\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n }),\n origin\n )\n } else {\n targetWindow.postMessage(\n JSON.stringify({\n id,\n responseId,\n type: TYPE,\n namespace,\n data\n })\n )\n }\n\n return new Promise((resolve) => {\n const timer = setTimeout(() => {\n responseResolver.delete(id)\n resolve()\n }, PROMISE_TIMEOUT)\n\n responseResolver.set(id, {\n resolve,\n timer\n })\n })\n }\n\n function sendHandshake(acknowledgement = false) {\n const message = {\n type: TYPE,\n handshakeConfirmation: Boolean(acknowledgement),\n handshake: !acknowledgement\n }\n\n if (debug) {\n if (acknowledgement) {\n log(ownId, `sendHandshake() as acknowledgement to handshake request`)\n } else {\n log(ownId, `sendHandshake() as initial handshake request`)\n }\n }\n\n if (origin !== null) {\n targetWindow.postMessage(JSON.stringify(message), origin)\n } else {\n targetWindow.postMessage(JSON.stringify(message))\n }\n }\n\n function isSafeMessage(msgSource, msgOrigin, msgType) {\n const jsdom = window.navigator.userAgent.indexOf(\"jsdom\") >= 0 && msgSource === null\n const safeSource = msgSource === targetWindow || jsdom\n const safeOrigin = origin === \"*\" || origin === null || msgOrigin === origin\n const safeType = msgType === TYPE\n\n return safeSource && safeOrigin && safeType\n }\n\n function handleHandshake(data) {\n if (data.handshake) sendHandshake(true)\n\n isHandshaken = true\n\n handshakeCallback.forEach((hsCallback) => hsCallback())\n handshakeCallback.clear()\n\n preHandshakeSendQueue.forEach((sendItem) =>\n send(sendItem.namespace, sendItem.data, sendItem.responseId)\n .then((response) => sendItem.resolve(response)) // eslint-disable-line promise/prefer-await-to-then\n .catch(() => sendItem.resolve())\n )\n preHandshakeSendQueue.clear()\n }\n\n function objectAssignPolyfill(target) {\n const result = Object(target)\n\n for (let index = 1; index < arguments.length; index++) {\n const nextSource = arguments[index] // eslint-disable-line prefer-rest-params\n\n // Skip over if undefined or null\n if (nextSource != null) {\n for (const nextKey in nextSource) {\n // Avoid bugs when hasOwnProperty is shadowed\n // eslint-disable-next-line max-depth\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\n result[nextKey] = nextSource[nextKey]\n }\n }\n }\n }\n\n return result\n }\n const objectAssign =\n typeof Object.assign == \"function\" ? Object.assign : objectAssignPolyfill\n\n function createMessage(messageData) {\n const message = {\n id: messageData.id,\n data: messageData.data,\n namespace: messageData.namespace,\n\n open: () => {\n message.isPromise = true\n\n return objectAssign({}, messageData, {\n response: (data) => {\n send(messageData.namespace, data, messageData.id)\n }\n })\n }\n }\n\n return message\n }\n\n function handleMessage(messageData) {\n if (messageData.responseId && responseResolver.has(messageData.responseId)) {\n if (debug) {\n log(ownId, `handleMessage() having response id`, messageData)\n }\n const resolver = responseResolver.get(messageData.responseId)\n clearTimeout(resolver.timer)\n resolver.resolve(messageData)\n responseResolver.delete(messageData.responseId)\n } else {\n const message = createMessage(messageData)\n\n if (listeners.has(message.namespace)) {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message having namespace listeners`,\n messageData\n )\n }\n\n listeners.get(message.namespace).forEach((listener) => {\n // eslint-disable-next-line max-depth\n if (typeof listener === \"function\") {\n listener(createMessage(message))\n } else if (listener) {\n console.error(\"Listener is no function: \", listener) // eslint-disable-line\n }\n })\n } else {\n if (debug) {\n log(\n ownId,\n `handleMessage() received message without listeners, put into outstanding messages queue`,\n messageData\n )\n }\n if (!outstandingMessages.has(message.namespace)) {\n outstandingMessages.set(message.namespace, new Set())\n }\n\n outstandingMessages.get(message.namespace).add(createMessage(message))\n }\n }\n }\n\n function messageListener(event) {\n let data\n try {\n data = JSON.parse(event.data)\n } catch (error) {\n return false\n }\n\n if (!isSafeMessage(event.source, event.origin, data.type)) {\n return false\n }\n\n if (data.handshake || data.handshakeConfirmation) return handleHandshake(data)\n\n return handleMessage(data)\n }\n\n const ownWindow = sourceWindow || window\n ownWindow.addEventListener(\"message\", messageListener, false)\n\n sendHandshake()\n\n function hasHandshake(callback) {\n if (isHandshaken) {\n if (typeof callback === \"function\") {\n callback()\n }\n return true\n }\n\n if (typeof callback === \"function\") {\n handshakeCallback.add(callback)\n }\n return false\n }\n\n return {\n addListener,\n removeListener,\n send,\n\n hasHandshake\n }\n}\n\nexport default interframe\n"],"names":["id","nextID","TYPE","PROMISE_TIMEOUT","HAS_CONSOLE_LOG","console","log","UNIQUE_ID_RANDOM_LENGTH","messages","generateUniqueId","nowDate","Date","now","toString","substring","length","Math","random","toFixed","interframe","targetWindow","origin","sourceWindow","debug","Error","ownId","listeners","Map","handshakeCallback","Set","responseResolver","preHandshakeSendQueue","outstandingMessages","isHandshaken","send","namespace","data","responseId","Promise","resolve","add","postMessage","JSON","stringify","type","timer","setTimeout","set","sendHandshake","acknowledgement","message","handshakeConfirmation","handshake","isSafeMessage","msgSource","msgOrigin","msgType","jsdom","window","navigator","userAgent","indexOf","safeOrigin","handleHandshake","forEach","hsCallback","clear","sendItem","then","response","objectAssign","Object","assign","objectAssignPolyfill","target","result","index","nextSource","arguments","nextKey","prototype","hasOwnProperty","call","createMessage","messageData","open","isPromise","handleMessage","has","resolver","get","clearTimeout","listener","error","ownWindow","addEventListener","messageListener","event","parse","source","hasHandshake","callback","addListener","removeListener"],"mappings":"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"} |
+18
-12
| { | ||
| "name": "interframe", | ||
| "version": "2.1.2", | ||
| "version": "2.2.0", | ||
| "description": "postMessage web api based lightweight interframe communication layer", | ||
@@ -14,6 +14,7 @@ "main": "lib/interframe.commonjs.js", | ||
| "test:watch": "jest --watch", | ||
| "prepare": "rimraf lib && prepublish", | ||
| "prepare": "preppy", | ||
| "release": "release-it --github.release --npm.publish --non-interactive", | ||
| "release:minor": "release-it --github.release --npm.publish --non-interactive --increment minor", | ||
| "release:major": "release-it --github.release --npm.publish --non-interactive --increment major" | ||
| "release:major": "release-it --github.release --npm.publish --non-interactive --increment major", | ||
| "check-updates": "npx npm-check-updates -u -i && npm install" | ||
| }, | ||
@@ -33,12 +34,17 @@ "keywords": [ | ||
| "babel-core": "^6.26.3", | ||
| "babel-jest": "^22.4.4", | ||
| "eslint": "^4.19.1", | ||
| "eslint-config-readable": "^1.14.0", | ||
| "jest": "^22.4.4", | ||
| "jsdom": "^11.11.0", | ||
| "prepublish": "^1.7.0", | ||
| "prettier": "^1.13.7", | ||
| "release-it": "^7.4.7", | ||
| "rimraf": "^2.6.2" | ||
| "babel-jest": "^27.0.2", | ||
| "babel-preset-edge": "5.5.1", | ||
| "eslint": "^7.28.0", | ||
| "eslint-config-readable": "^2.3.2", | ||
| "jest": "^27.0.4", | ||
| "jsdom": "^16.6.0", | ||
| "preppy": "10.10.1", | ||
| "prettier": "^2.3.1", | ||
| "release-it": "^14.8.0", | ||
| "rimraf": "^3.0.2" | ||
| }, | ||
| "dependencies": { | ||
| "@babel/runtime": "^7.14.0", | ||
| "core-js": "^3.14.0" | ||
| } | ||
| } |
+2
-2
@@ -176,4 +176,4 @@ # Interframe<br/>[![Sponsored by][sponsor-img]][sponsor] [![Version][npm-version-img]][npm] [![Downloads][npm-downloads-img]][npm] [![Build Status Unix][travis-img]][travis] [![Dependencies][deps-img]][deps] | ||
| <img src="https://raw.githubusercontent.com/sebastian-software/s15e-javascript/master/assets/sebastiansoftware.png" alt="Sebastian Software GmbH Logo" width="250" height="200"/> | ||
| <img src="https://cdn.rawgit.com/sebastian-software/sebastian-software-brand/0d4ec9d6/sebastiansoftware-en.svg" alt="Sebastian Software GmbH Logo" width="460" height="160"/> | ||
| Copyright 2016-2018<br/>[Sebastian Software GmbH](http://www.sebastian-software.de) | ||
| Copyright 2016-2019<br/>[Sebastian Software GmbH](http://www.sebastian-software.de) |
| { | ||
| "cSpell.words": [ | ||
| "interframe" | ||
| ] | ||
| } |
61167
11.56%519
3.59%2
Infinity%11
10%+ Added
+ Added
+ Added
+ Added