{"version":3,"file":"xdmProviderClient.js","mappings":"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","sources":["webpack:///../node_modules/@greenova/jschannel/src/jschannel.js","webpack:///../node_modules/js-cookie/src/js.cookie.js","webpack:///webpack/bootstrap","webpack:///./XdmProviderClient/xdmProviderClient.ts","webpack:///./lib/xdmProviderApi.ts"],"sourcesContent":["/*\r\n * js_channel is a very lightweight abstraction on top of\r\n * postMessage which defines message formats and semantics\r\n * to support interactions more rich than just message passing\r\n * js_channel supports:\r\n * + query/response - traditional rpc\r\n * + query/update/response - incremental async return of results\r\n * to a query\r\n * + notifications - fire and forget\r\n * + error handling\r\n *\r\n * js_channel is based heavily on json-rpc, but is focused at the\r\n * problem of inter-iframe RPC.\r\n *\r\n * Message types:\r\n * There are 5 types of messages that can flow over this channel,\r\n * and you may determine what type of message an object is by\r\n * examining its parameters:\r\n * 1. Requests\r\n * + integer id\r\n * + string method\r\n * + (optional) any params\r\n * 2. Callback Invocations (or just \"Callbacks\")\r\n * + integer id\r\n * + string callback\r\n * + (optional) params\r\n * 3. Error Responses (or just \"Errors)\r\n * + integer id\r\n * + string error\r\n * + (optional) string message\r\n * 4. Responses\r\n * + integer id\r\n * + (optional) any result\r\n * 5. Notifications\r\n * + string method\r\n * + (optional) any params\r\n */\r\n\r\n// Universal module definition //\r\n(function (root, factory) {\r\n if (typeof exports === 'object') {\r\n // CommonJS\r\n module.exports = factory();\r\n } else if (typeof define === 'function' && define.amd) {\r\n // AMD\r\n define([], function () {\r\n return (root.Channel = factory());\r\n });\r\n } else {\r\n // Global Variables\r\n root.Channel = factory();\r\n }\r\n}(this, function () {\r\n \"use strict\";\r\n var Channel = (function () {\r\n\r\n // current transaction id, start out at a random *odd* number between 1 and a million\r\n // There is one current transaction counter id per page, and it's shared between\r\n // channel instances. That means of all messages posted from a single javascript\r\n // evaluation context, we'll never have two with the same id.\r\n var s_curTranId = Math.floor(Math.random() * 1000001);\r\n\r\n // no two bound channels in the same javascript evaluation context may have the same origin, scope, and window.\r\n // further if two bound channels have the same window and scope, they may not have *overlapping* origins\r\n // (either one or both support '*'). This restriction allows a single onMessage handler to efficiently\r\n // route messages based on origin and scope. The s_boundChans maps origins to scopes, to message\r\n // handlers. Request and Notification messages are routed using this table.\r\n // Finally, channels are inserted into this table when built, and removed when destroyed.\r\n var s_boundChans = {};\r\n\r\n // add a channel to s_boundChans, throwing if a dup exists\r\n function s_addBoundChan(win, origin, scope, handler) {\r\n function hasWin(arr) {\r\n for (var i = 0; i < arr.length; i++) if (arr[i].win === win) return true;\r\n return false;\r\n }\r\n\r\n // does she exist?\r\n var exists = false;\r\n\r\n if (origin === '*') {\r\n // we must check all other origins, sadly.\r\n for (var k in s_boundChans) {\r\n if (!s_boundChans.hasOwnProperty(k)) continue;\r\n if (k === '*') continue;\r\n if (typeof s_boundChans[k][scope] === 'object') {\r\n exists = hasWin(s_boundChans[k][scope]);\r\n if (exists) break;\r\n }\r\n }\r\n } else {\r\n // we must check only '*'\r\n if ((s_boundChans['*'] && s_boundChans['*'][scope])) {\r\n exists = hasWin(s_boundChans['*'][scope]);\r\n }\r\n if (!exists && s_boundChans[origin] && s_boundChans[origin][scope]) {\r\n exists = hasWin(s_boundChans[origin][scope]);\r\n }\r\n }\r\n if (exists) throw \"A channel is already bound to the same window which overlaps with origin '\" + origin + \"' and has scope '\" + scope + \"'\";\r\n\r\n if (typeof s_boundChans[origin] != 'object') s_boundChans[origin] = {};\r\n if (typeof s_boundChans[origin][scope] != 'object') s_boundChans[origin][scope] = [];\r\n s_boundChans[origin][scope].push({ win: win, handler: handler });\r\n }\r\n\r\n function s_removeBoundChan(win, origin, scope) {\r\n var arr = s_boundChans[origin][scope];\r\n for (var i = 0; i < arr.length; i++) {\r\n if (arr[i].win === win) {\r\n arr.splice(i, 1);\r\n }\r\n }\r\n if (s_boundChans[origin][scope].length === 0) {\r\n delete s_boundChans[origin][scope];\r\n }\r\n }\r\n\r\n function s_isArray(obj) {\r\n if (Array.isArray) return Array.isArray(obj);\r\n else {\r\n return (obj.constructor.toString().indexOf(\"Array\") != -1);\r\n }\r\n }\r\n\r\n // No two outstanding outbound messages may have the same id, period. Given that, a single table\r\n // mapping \"transaction ids\" to message handlers, allows efficient routing of Callback, Error, and\r\n // Response messages. Entries are added to this table when requests are sent, and removed when\r\n // responses are received.\r\n var s_transIds = {};\r\n\r\n // class singleton onMessage handler\r\n // this function is registered once and all incoming messages route through here. This\r\n // arrangement allows certain efficiencies, message data is only parsed once and dispatch\r\n // is more efficient, especially for large numbers of simultaneous channels.\r\n var s_onMessage = function (e) {\r\n try {\r\n var m = JSON.parse(e.data);\r\n if (typeof m !== 'object' || m === null) throw \"malformed\";\r\n } catch (e) {\r\n // just ignore any posted messages that do not consist of valid JSON\r\n return;\r\n }\r\n\r\n var w = e.source;\r\n var o = e.origin;\r\n var s, i, meth;\r\n\r\n if (typeof m.method === 'string') {\r\n var ar = m.method.split('::');\r\n if (ar.length == 2) {\r\n s = ar[0];\r\n meth = ar[1];\r\n } else {\r\n meth = m.method;\r\n }\r\n }\r\n\r\n if (typeof m.id !== 'undefined') i = m.id;\r\n\r\n // w is message source window\r\n // o is message origin\r\n // m is parsed message\r\n // s is message scope\r\n // i is message id (or undefined)\r\n // meth is unscoped method name\r\n // ^^ based on these factors we can route the message\r\n\r\n // if it has a method it's either a notification or a request,\r\n // route using s_boundChans\r\n if (typeof meth === 'string') {\r\n var delivered = false;\r\n if (s_boundChans[o] && s_boundChans[o][s]) {\r\n for (var j = 0; j < s_boundChans[o][s].length; j++) {\r\n try{\r\n if (s_boundChans[o][s][j].win === w) {\r\n s_boundChans[o][s][j].handler(o, meth, m);\r\n delivered = true;\r\n break;\r\n }\r\n }\r\n catch (e) { debugger;}\r\n }\r\n }\r\n\r\n if (!delivered && s_boundChans['*'] && s_boundChans['*'][s]) {\r\n for (var j = 0; j < s_boundChans['*'][s].length; j++) {\r\n try {\r\n if (s_boundChans['*'][s][j].win === w) {\r\n s_boundChans['*'][s][j].handler(o, meth, m);\r\n break;\r\n }\r\n }\r\n catch (e) { debugger; }\r\n }\r\n }\r\n }\r\n // otherwise it must have an id (or be poorly formed\r\n else if (typeof i != 'undefined') {\r\n if (s_transIds[i]) s_transIds[i](o, meth, m);\r\n }\r\n };\r\n\r\n // Setup postMessage event listeners\r\n if (window.addEventListener) window.addEventListener('message', s_onMessage, false);\r\n else if (window.attachEvent) window.attachEvent('onmessage', s_onMessage);\r\n\r\n /* a messaging channel is constructed from a window and an origin.\r\n * the channel will assert that all messages received over the\r\n * channel match the origin\r\n *\r\n * Arguments to Channel.build(cfg):\r\n *\r\n * cfg.window - the remote window with which we'll communicate\r\n * cfg.origin - the expected origin of the remote window, may be '*'\r\n * which matches any origin\r\n * cfg.scope - the 'scope' of messages. a scope string that is\r\n * prepended to message names. local and remote endpoints\r\n * of a single channel must agree upon scope. Scope may\r\n * not contain double colons ('::').\r\n * cfg.debugOutput - A boolean value. If true and window.console.log is\r\n * a function, then debug strings will be emitted to that\r\n * function.\r\n * cfg.postMessageObserver - A function that will be passed two arguments,\r\n * an origin and a message. It will be passed these immediately\r\n * before messages are posted.\r\n * cfg.gotMessageObserver - A function that will be passed two arguments,\r\n * an origin and a message. It will be passed these arguments\r\n * immediately after they pass scope and origin checks, but before\r\n * they are processed.\r\n * cfg.onReady - A function that will be invoked when a channel becomes \"ready\",\r\n * this occurs once both sides of the channel have been\r\n * instantiated and an application level handshake is exchanged.\r\n * the onReady function will be passed a single argument which is\r\n * the channel object that was returned from build().\r\n * cfg.reconnect - A boolean value - if true, the channel allows reconnection\r\n * useful when the page in a child frame is reloaded and wants\r\n * to re-establish connection with parent window using the same\r\n * origin, scope and bindings.\r\n * cfg.publish - A boolean value. If true, bind will automatically publish\r\n * the method on the remote side. The method will be published under\r\n * channelObject.remote, but it will not be available before the onReady\r\n * callback is called on the other side.\r\n * cfg.remote - An array of method names for which stubs should be generated without\r\n * waiting for remote end to publish them. A string (for a single method name)\r\n * is also accepted. This allows methods under channelObject.remote to be called\r\n * also before onReady callback is called; the invocations will be queued until\r\n * the channel is ready. If the methods do not exist on remote side, the\r\n * error callback will be called.\r\n */\r\n return {\r\n build: function (cfg) {\r\n var debug = function (m) {\r\n if (cfg.debugOutput && window.console && window.console.log) {\r\n // try to stringify, if it doesn't work we'll let javascript's built in toString do its magic\r\n try {\r\n if (typeof m !== 'string') {\r\n m = JSON.stringify(m);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n window.console.log(\"[\" + chanId + \"] \" + m);\r\n }\r\n };\r\n\r\n /* browser capabilities check */\r\n if (!window.postMessage) throw (\"jschannel cannot run this browser, no postMessage\");\r\n if (!window.JSON || !window.JSON.stringify || !window.JSON.parse) {\r\n throw (\"jschannel cannot run this browser, no JSON parsing/serialization\");\r\n }\r\n\r\n /* basic argument validation */\r\n if (typeof cfg != 'object') throw (\"Channel build invoked without a proper object argument\");\r\n\r\n if (!cfg.window || !cfg.window.postMessage) throw (\"Channel.build() called without a valid window argument\");\r\n\r\n /* we'd have to do a little more work to be able to run multiple channels that intercommunicate the same\r\n * window... Not sure if we care to support that */\r\n if (window === cfg.window) throw (\"target window is same as present window -- not allowed\");\r\n\r\n // let's require that the client specify an origin. if we just assume '*' we'll be\r\n // propagating unsafe practices. that would be lame.\r\n var validOrigin = false;\r\n if (typeof cfg.origin === 'string') {\r\n var oMatch;\r\n if (cfg.origin === \"*\") validOrigin = true;\r\n // allow valid domains under http and https. Also, trim paths off otherwise valid origins.\r\n else if (null !== (oMatch = cfg.origin.match(/^https?:\\/\\/(?:[-a-zA-Z0-9_\\.])+(?::\\d+)?/))) {\r\n cfg.origin = oMatch[0].toLowerCase();\r\n validOrigin = true;\r\n }\r\n }\r\n\r\n if (!validOrigin) throw (\"Channel.build() called with an invalid origin\");\r\n\r\n if (typeof cfg.scope !== 'undefined') {\r\n if (typeof cfg.scope !== 'string') throw 'scope, when specified, must be a string';\r\n if (cfg.scope.split('::').length > 1) throw \"scope may not contain double colons: '::'\";\r\n } else {\r\n cfg.scope = \"__default\";\r\n }\r\n\r\n /* private variables */\r\n // generate a random and psuedo unique id for this channel\r\n var chanId = (function () {\r\n var text = \"\";\r\n var alpha = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\r\n for (var i = 0; i < 5; i++) text += alpha.charAt(Math.floor(Math.random() * alpha.length));\r\n return text;\r\n })();\r\n\r\n // registrations: mapping method names to call objects\r\n var regTbl = {};\r\n // current oustanding sent requests\r\n var outTbl = {};\r\n // current oustanding received requests\r\n var inTbl = {};\r\n // are we ready yet? when false we will block outbound messages.\r\n var ready = false;\r\n var pendingQueue = [];\r\n var publishQueue = [];\r\n\r\n var createTransaction = function (id, origin, callbacks) {\r\n var shouldDelayReturn = false;\r\n var completed = false;\r\n\r\n return {\r\n origin: origin,\r\n invoke: function (cbName, v) {\r\n // verify in table\r\n if (!inTbl[id]) throw \"attempting to invoke a callback of a nonexistent transaction: \" + id;\r\n // verify that the callback name is valid\r\n var valid = false;\r\n for (var i = 0; i < callbacks.length; i++) if (cbName === callbacks[i]) { valid = true; break; }\r\n if (!valid) throw \"request supports no such callback '\" + cbName + \"'\";\r\n\r\n // send callback invocation\r\n postMessage({ id: id, callback: cbName, params: v });\r\n },\r\n error: function (error, message) {\r\n completed = true;\r\n // verify in table\r\n if (!inTbl[id]) throw \"error called for nonexistent message: \" + id;\r\n\r\n // remove transaction from table\r\n delete inTbl[id];\r\n\r\n // send error\r\n postMessage({ id: id, error: error, message: message });\r\n },\r\n complete: function (v) {\r\n completed = true;\r\n // verify in table\r\n if (!inTbl[id]) throw \"complete called for nonexistent message: \" + id;\r\n // remove transaction from table\r\n delete inTbl[id];\r\n // send complete\r\n postMessage({ id: id, result: v });\r\n },\r\n delayReturn: function (delay) {\r\n if (typeof delay === 'boolean') {\r\n shouldDelayReturn = (delay === true);\r\n }\r\n return shouldDelayReturn;\r\n },\r\n completed: function () {\r\n return completed;\r\n }\r\n };\r\n };\r\n\r\n var setTransactionTimeout = function (transId, timeout, method) {\r\n return window.setTimeout(function () {\r\n if (outTbl[transId]) {\r\n // XXX: what if client code raises an exception here?\r\n var msg = \"timeout (\" + timeout + \"ms) exceeded on method '\" + method + \"'\";\r\n if (outTbl[transId].error) {\r\n outTbl[transId].error(\"timeout_error\", msg);\r\n }\r\n delete outTbl[transId];\r\n delete s_transIds[transId];\r\n }\r\n }, timeout);\r\n };\r\n\r\n var onMessage = function (origin, method, m) {\r\n // if an observer was specified at allocation time, invoke it\r\n if (typeof cfg.gotMessageObserver === 'function') {\r\n // pass observer a clone of the object so that our\r\n // manipulations are not visible (i.e. method unscoping).\r\n // This is not particularly efficient, but then we expect\r\n // that message observers are primarily for debugging anyway.\r\n try {\r\n cfg.gotMessageObserver(origin, m);\r\n } catch (e) {\r\n debug(\"gotMessageObserver() raised an exception: \" + e.toString());\r\n }\r\n }\r\n\r\n // now, what type of message is this?\r\n if (m.id && method) {\r\n inTbl[m.id] = {};\r\n var trans = createTransaction(m.id, origin, m.callbacks ? m.callbacks : []);\r\n // a request! do we have a registered handler for this request?\r\n if (regTbl[method]) {\r\n try {\r\n // callback handling. we'll magically create functions inside the parameter list for each\r\n // callback\r\n if (m.callbacks && s_isArray(m.callbacks) && m.callbacks.length > 0) {\r\n for (var i = 0; i < m.callbacks.length; i++) {\r\n var path = m.callbacks[i];\r\n var obj = m.params;\r\n var pathItems = path.split('/');\r\n for (var j = 0; j < pathItems.length - 1; j++) {\r\n var cp = pathItems[j];\r\n if (typeof obj[cp] !== 'object') obj[cp] = {};\r\n obj = obj[cp];\r\n }\r\n obj[pathItems[pathItems.length - 1]] = (function () {\r\n var cbName = path;\r\n return function (params) {\r\n return trans.invoke(cbName, params);\r\n };\r\n })();\r\n }\r\n }\r\n var resp = regTbl[method](trans, m.params);\r\n if (!trans.delayReturn() && !trans.completed()) trans.complete(resp);\r\n } catch (e) {\r\n // automagic handling of exceptions:\r\n var error = \"runtime_error\";\r\n var message = null;\r\n // * if it's a string then it gets an error code of 'runtime_error' and string is the message\r\n if (typeof e === 'string') {\r\n message = e;\r\n } else if (typeof e === 'object') {\r\n // if it's an Error instance we use the constructor name to set the error property\r\n // and we just copy the error message\r\n if (e instanceof Error) {\r\n error = e.constructor.name;\r\n message = e.message;\r\n }\r\n // Otherwise, it's either an array or an object\r\n // * if it's an array of length two, then array[0] is the code, array[1] is the error message\r\n else if (e && s_isArray(e) && e.length == 2) {\r\n error = e[0];\r\n message = e[1];\r\n }\r\n // * if it's an object then we'll look form error and message parameters\r\n else if (typeof e.error === 'string') {\r\n error = e.error;\r\n if (!e.message) message = \"\";\r\n else if (typeof e.message === 'string') message = e.message;\r\n else e = e.message; // let the stringify/toString message give us a reasonable verbose error string\r\n }\r\n }\r\n\r\n // message is *still* null, let's try harder\r\n if (message === null) {\r\n try {\r\n message = JSON.stringify(e);\r\n /* On MSIE8, this can result in 'out of memory', which\r\n * leaves message undefined. */\r\n if (typeof (message) == 'undefined')\r\n message = e.toString();\r\n } catch (e2) {\r\n message = e.toString();\r\n }\r\n }\r\n\r\n trans.error(error, message);\r\n }\r\n } else { // if no method found, send error\r\n trans.error(\"method_not_found\", \"No method '\" + method + \"' was (yet) bound by the provider\");\r\n }\r\n } else if (m.id && m.callback) {\r\n if (!outTbl[m.id] || !outTbl[m.id].callbacks || !outTbl[m.id].callbacks[m.callback]) {\r\n debug(\"ignoring invalid callback, id:\" + m.id + \" (\" + m.callback + \")\");\r\n } else {\r\n // XXX: what if client code raises an exception here?\r\n outTbl[m.id].callbacks[m.callback](m.params);\r\n }\r\n } else if (m.id) {\r\n if (!outTbl[m.id]) {\r\n debug(\"ignoring invalid response: \" + m.id);\r\n } else {\r\n // XXX: what if client code raises an exception here?\r\n if (m.error) {\r\n // We might not have an error callback\r\n if (outTbl[m.id].error) {\r\n outTbl[m.id].error(m.error, m.message);\r\n }\r\n } else {\r\n // But we always have a success callback\r\n if (m.result !== undefined) {\r\n outTbl[m.id].success(m.result);\r\n } else {\r\n outTbl[m.id].success();\r\n }\r\n }\r\n delete outTbl[m.id];\r\n delete s_transIds[m.id];\r\n }\r\n } else if (method) {\r\n // tis a notification.\r\n if (regTbl[method]) {\r\n // yep, there's a handler for that.\r\n // transaction has only origin for notifications.\r\n regTbl[method]({ origin: origin }, m.params);\r\n // if the client throws, we'll just let it bubble out\r\n // what can we do? Also, here we'll ignore return values\r\n }\r\n }\r\n };\r\n\r\n // now register our bound channel for msg routing\r\n s_addBoundChan(cfg.window, cfg.origin, cfg.scope, onMessage);\r\n\r\n // scope method names based on cfg.scope specified when the Channel was instantiated\r\n var scopeMethod = function (m) {\r\n return [cfg.scope, m].join(\"::\");\r\n };\r\n\r\n // a small wrapper around postmessage whose primary function is to handle the\r\n // case that clients start sending messages before the other end is \"ready\"\r\n var postMessage = function (msg, force) {\r\n if (!msg) throw \"postMessage called with null message\";\r\n\r\n // delay posting if we're not ready yet.\r\n if (!force && !ready) {\r\n debug(\"queue message: \" + JSON.stringify(msg));\r\n pendingQueue.push(msg);\r\n } else {\r\n if (typeof cfg.postMessageObserver === 'function') {\r\n try {\r\n cfg.postMessageObserver(cfg.origin, msg);\r\n } catch (e) {\r\n debug(\"postMessageObserver() raised an exception: \" + e.toString());\r\n }\r\n }\r\n debug(\"post message: \" + JSON.stringify(msg) + \" with origin \" + cfg.origin);\r\n cfg.window.postMessage(JSON.stringify(msg), cfg.origin);\r\n }\r\n };\r\n\r\n var onReady = function (trans, params) {\r\n debug('ready msg received');\r\n if (ready && !cfg.reconnect) {\r\n throw \"received ready message while in ready state.\";\r\n }\r\n ready = true;\r\n\r\n // only append suffix to chanId once:\r\n if (chanId.length < 6) {\r\n if (params.type === 'publish-request') {\r\n chanId += '-R';\r\n } else {\r\n chanId += '-L';\r\n }\r\n }\r\n debug('ready msg accepted.');\r\n\r\n if (params.type === 'publish-request') {\r\n obj.notify({\r\n method: '__ready', params: {\r\n type: 'publish-reply',\r\n publish: publishQueue\r\n }\r\n });\r\n }\r\n\r\n for (var i = 0; i < params.publish.length; i++) {\r\n if (params.publish[i].action === \"bind\") {\r\n createStubs([params.publish[i].method], obj.remote);\r\n } else { // unbind\r\n delete obj.remote[params.publish[i].method];\r\n }\r\n }\r\n\r\n //unbind ready handler unless we allow reconnecting:\r\n if (!cfg.reconnect) {\r\n obj.unbind('__ready', true); // now this handler isn't needed any more.\r\n }\r\n\r\n // flush queue\r\n while (pendingQueue.length) {\r\n postMessage(pendingQueue.splice(0, 1)[0]);\r\n }\r\n publishQueue = [];\r\n // invoke onReady observer if provided\r\n if (typeof cfg.onReady === 'function') cfg.onReady(obj);\r\n\r\n };\r\n\r\n var createStubs = function (stubList, targetObj) {\r\n stubList = [].concat(stubList); // Coerce into array, allows string to be used for single-item array\r\n var method;\r\n for (var i = 0; i < stubList.length; i++) {\r\n method = stubList[i].toString();\r\n targetObj[method] = function (m) {\r\n return function (params, success, error) {\r\n if (success) {\r\n obj.call({\r\n method: m,\r\n params: params,\r\n success: success,\r\n error: error\r\n });\r\n } else {\r\n obj.notify({\r\n method: m,\r\n params: params\r\n });\r\n }\r\n };\r\n }(method);\r\n }\r\n }\r\n\r\n // Dynamic publish from remote\r\n var onBind = function (trans, method) {\r\n createStubs([method], obj.remote);\r\n };\r\n\r\n // Dynamic unpublish from remote\r\n var onUnbind = function (trans, method) {\r\n if (obj.remote[method]) {\r\n delete obj.remote[method];\r\n }\r\n };\r\n\r\n var obj = {\r\n\r\n remote: {},\r\n\r\n // tries to unbind a bound message handler. returns false if not possible\r\n unbind: function (method, doNotPublish) {\r\n if (regTbl[method]) {\r\n if (!(delete regTbl[method])) throw (\"can't delete method: \" + method);\r\n if (cfg.publish && !doNotPublish) {\r\n if (ready) {\r\n obj.notify({ method: '__unbind', params: method });\r\n } else {\r\n publishQueue.push({ action: 'unbind', method: method });\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n },\r\n bind: function (method, cb, doNotPublish) {\r\n if (!method || typeof method !== 'string') throw \"'method' argument to bind must be string\";\r\n if (!cb || typeof cb !== 'function') throw \"callback missing from bind params\";\r\n\r\n if (regTbl[method]) throw \"method '\" + method + \"' is already bound!\";\r\n regTbl[method] = cb;\r\n if (cfg.publish && !doNotPublish) {\r\n if (ready) {\r\n obj.notify({ method: '__bind', params: method });\r\n } else {\r\n publishQueue.push({ action: 'bind', method: method });\r\n }\r\n }\r\n return this;\r\n },\r\n call: function (m) {\r\n if (!m) throw 'missing arguments to call function';\r\n if (!m.method || typeof m.method !== 'string') throw \"'method' argument to call must be string\";\r\n if (!m.success || typeof m.success !== 'function') throw \"'success' callback missing from call\";\r\n\r\n // now it's time to support the 'callback' feature of jschannel. We'll traverse the argument\r\n // object and pick out all of the functions that were passed as arguments.\r\n var callbacks = {};\r\n var callbackNames = [];\r\n var seen = [];\r\n\r\n var pruneFunctions = function (path, obj) {\r\n var indexOf = function (array, el) {\r\n var length = array.length, index = 0;\r\n for (; length > index; index++) \r\n if (array[index] === el)\r\n return index;\r\n return -1;\r\n };\r\n //if (seen.indexOf(obj) >= 0) {\r\n if (indexOf(seen, obj) >= 0) {\r\n throw \"params cannot be a recursive data structure\"\r\n }\r\n\r\n\r\n //// false -> Array#indexOf\r\n //// true -> Array#includes\r\n //var $ = require('./$');\r\n //module.exports = function (IS_INCLUDES) {\r\n // return function ($this, el, fromIndex) {\r\n // var O = $.toObject($this)\r\n // , length = $.toLength(O.length)\r\n // , index = $.toIndex(fromIndex, length)\r\n // , value;\r\n // if (IS_INCLUDES && el != el) while (length > index) {\r\n // value = O[index++];\r\n // if (value != value) return true;\r\n // } else for (; length > index; index++) if (IS_INCLUDES || index in O) {\r\n // if (O[index] === el) return IS_INCLUDES || index;\r\n // } return !IS_INCLUDES && -1;\r\n // };\r\n //};\r\n\r\n\r\n seen.push(obj);\r\n\r\n if (typeof obj === 'object') {\r\n for (var k in obj) {\r\n if (!obj.hasOwnProperty(k)) continue;\r\n var np = path + (path.length ? '/' : '') + k;\r\n if (typeof obj[k] === 'function') {\r\n callbacks[np] = obj[k];\r\n callbackNames.push(np);\r\n delete obj[k];\r\n } else if (typeof obj[k] === 'object') {\r\n pruneFunctions(np, obj[k]);\r\n }\r\n }\r\n }\r\n };\r\n pruneFunctions(\"\", m.params);\r\n\r\n // build a 'request' message and send it\r\n var msg = { id: s_curTranId, method: scopeMethod(m.method), params: m.params };\r\n if (callbackNames.length) msg.callbacks = callbackNames;\r\n\r\n if (m.timeout)\r\n // XXX: This function returns a timeout ID, but we don't do anything with it.\r\n // We might want to keep track of it so we can cancel it using clearTimeout()\r\n // when the transaction completes.\r\n setTransactionTimeout(s_curTranId, m.timeout, scopeMethod(m.method));\r\n\r\n // insert into the transaction table\r\n outTbl[s_curTranId] = { callbacks: callbacks, error: m.error, success: m.success };\r\n s_transIds[s_curTranId] = onMessage;\r\n\r\n // increment current id\r\n s_curTranId++;\r\n\r\n postMessage(msg);\r\n },\r\n notify: function (m) {\r\n if (!m) throw 'missing arguments to notify function';\r\n if (!m.method || typeof m.method !== 'string') throw \"'method' argument to notify must be string\";\r\n\r\n // no need to go into any transaction table\r\n postMessage({ method: scopeMethod(m.method), params: m.params });\r\n },\r\n destroy: function () {\r\n s_removeBoundChan(cfg.window, cfg.origin, cfg.scope);\r\n if (window.removeEventListener) window.removeEventListener('message', onMessage, false);\r\n else if (window.detachEvent) window.detachEvent('onmessage', onMessage);\r\n ready = false;\r\n regTbl = {};\r\n inTbl = {};\r\n outTbl = {};\r\n cfg.origin = null;\r\n pendingQueue = [];\r\n debug(\"channel destroyed\");\r\n chanId = \"\";\r\n }\r\n };\r\n\r\n obj.bind('__ready', onReady, true);\r\n obj.bind('__bind', onBind, true);\r\n obj.bind('__unbind', onUnbind, true);\r\n if (cfg.remote) {\r\n createStubs(cfg.remote, obj.remote);\r\n }\r\n setTimeout(function () {\r\n if (chanId.length > 0) { // The channel might already have been destroyed\r\n postMessage({\r\n method: scopeMethod('__ready'), params: {\r\n type: \"publish-request\",\r\n publish: publishQueue\r\n }\r\n }, true);\r\n }\r\n\r\n }, 0);\r\n\r\n return obj;\r\n }\r\n };\r\n })();\r\n\r\n\r\n return Channel;\r\n}));\r\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","import { XdmProviderApi } from \"../lib/xdmProviderApi\";\r\n\r\nlet service: XdmProviderApi = new XdmProviderApi(\"SmartSignals2\");\r\n","import * as jschannel from \"@greenova/jschannel\";\r\nimport * as jscookie from 'js-cookie';\r\n\r\nexport class XdmProviderApi {\r\n private jsChannel: jschannel.Channel;\r\n\r\n constructor(private scopeName: string) {\r\n var channConfig: jschannel.ChannelConfig = {\r\n window: window.parent,\r\n origin: \"*\",\r\n scope: this.scopeName,\r\n reconnect: true\r\n }\r\n\r\n this.jsChannel = jschannel.build(channConfig);\r\n\r\n this.jsChannel.bind('getOrSetCookie', (trans, params) => this.getOrSetCookie(params.cookieName, params.value, params.expires));\r\n this.jsChannel.bind('setCookie', (trans, params) => this.setCookie(params.cookieName, params.value, params.expires));\r\n this.jsChannel.bind('getCookie', (trans, params) => this.getCookie(params.cookieName));\r\n this.jsChannel.bind('removeCookie', (trans, params) => this.removeCookie(params.cookieName));\r\n }\r\n\r\n public getOrSetCookie(cookieName: string, value: string | undefined, expires?: number): string | undefined {\r\n var cookie = this.getCookie(cookieName);\r\n if (cookie)\r\n return cookie;\r\n if (value) {\r\n this.setCookie(cookieName, value, expires);\r\n return this.getCookie(cookieName);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n public setCookie(cookieName: string, value: string, expires?: number): void {\r\n let options: Cookies.CookieAttributes = {\r\n domain: location.hostname,//TODO\r\n path: '/',\r\n expires: expires || 730\r\n };\r\n jscookie.set(cookieName, value, options);\r\n }\r\n\r\n public getCookie(cookieName: string): string | undefined {\r\n var value = jscookie.get(cookieName);\r\n if (value) { \r\n return value;\r\n }\r\n return undefined;\r\n }\r\n\r\n public removeCookie(cookieName: string): void {\r\n jscookie.remove(cookieName);\r\n } \r\n}\r\n"],"names":["module","exports","s_curTranId","Math","floor","random","s_boundChans","s_isArray","obj","Array","isArray","constructor","toString","indexOf","s_transIds","s_onMessage","e","m","JSON","parse","data","s","i","meth","w","source","o","origin","method","ar","split","length","id","delivered","j","win","handler","window","addEventListener","attachEvent","build","cfg","debug","debugOutput","console","log","stringify","chanId","postMessage","oMatch","validOrigin","match","toLowerCase","scope","text","alpha","charAt","regTbl","outTbl","inTbl","ready","pendingQueue","publishQueue","onMessage","gotMessageObserver","trans","callbacks","shouldDelayReturn","completed","invoke","cbName","v","valid","callback","params","error","message","complete","result","delayReturn","delay","createTransaction","path","pathItems","cp","resp","Error","name","e2","undefined","success","hasWin","arr","exists","k","hasOwnProperty","push","s_addBoundChan","scopeMethod","join","msg","force","postMessageObserver","createStubs","stubList","targetObj","concat","call","notify","remote","unbind","doNotPublish","publish","action","bind","cb","this","callbackNames","seen","pruneFunctions","array","el","index","np","transId","timeout","setTimeout","destroy","splice","s_removeBoundChan","removeEventListener","detachEvent","reconnect","type","onReady","factory","extend","arguments","attributes","key","decode","replace","decodeURIComponent","init","converter","api","set","value","document","defaults","expires","Date","toUTCString","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","cookie","get","json","jar","cookies","parts","slice","read","getJSON","remove","withConverter","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","scopeName","channConfig","parent","jsChannel","jschannel","getOrSetCookie","cookieName","setCookie","getCookie","removeCookie","options","domain","location","hostname"],"sourceRoot":""}