{"version":3,"file":"smartsignals2.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///../node_modules/@greenova/jschannel/src/jschannel.js","webpack:///../node_modules/es6-promise/dist/es6-promise.js","webpack:///../node_modules/js-cookie/src/js.cookie.js","webpack:///./SmartSignalsProfileDebugger/resources/models/HandlingState.ts","webpack:///./SmartSignalsProfileDebugger/types/TrackingRequestResponseData.ts","webpack:///./SmartSignals/ActionHandler/ActionHandler.ts","webpack:///./SmartSignals/IEngine.ts","webpack:///../node_modules/whatwg-fetch/fetch.js","webpack:///./lib/fetch.ts","webpack:///./api/client/clientApi.ts","webpack:///./lib/helpers.ts","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/compat","webpack:///webpack/runtime/jsonp chunk loading","webpack:///./lib/ScriptUrlParser.ts","webpack:///./lib/cookieHelpers.ts","webpack:///./SmartSignals/UserIdProviders/UserIdProviderManager.ts","webpack:///./SmartSignals/UserIdProviders/LocalUserIdProvider.ts","webpack:///./SmartSignals/UserIdProviders/ServerSideUserIdProvider.ts","webpack:///./SmartSignals/EventSources/EventSourceManager.ts","webpack:///./SmartSignals/EventSources/EventSource.ts","webpack:///./SmartSignals/EventSources/PageViewSource.ts","webpack:///./SmartSignals/EventSources/URLSourceChange.ts","webpack:///./SmartSignals/ActionHandler/OverlayActionHandlerProxy.ts","webpack:///./SmartSignals/ActionHandler/CookieActionHandler.ts","webpack:///./SmartSignals/ActionHandler/InjectHTMLActionHandler.ts","webpack:///./SmartSignals/ActionHandler/InjectScriptActionHandler.ts","webpack:///./SmartSignals/ActionHandler/PixelActionHandler.ts","webpack:///./SmartSignals/ActionHandler/ActionHandlerManager.ts","webpack:///./lib/logger.ts","webpack:///./lib/xdmProvider.ts","webpack:///./SmartSignals/ActionHandler/HandoverHandlerManager.ts","webpack:///./lib/utils.ts","webpack:///./SmartSignals/ActionHandler/CollectionActionGroupsProvider/CollectionActionGroupsProvider.ts","webpack:///./SmartSignals/engine.ts","webpack:///./resources/env-config-Live.ts","webpack:///./SmartSignals/DealerRecognition/DealerRecognizer.ts"],"sourcesContent":["var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/*\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 * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version v4.2.8+1e68dce6\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var vertx = Function('return this')().require('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n\n if (_state) {\n var callback = arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n var then$$1 = void 0;\n try {\n then$$1 = value.then;\n } catch (error) {\n reject(promise, error);\n return;\n }\n handleMaybeThenable(promise, value, then$$1);\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = void 0,\n callback = void 0,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = void 0,\n error = void 0,\n succeeded = true;\n\n if (hasCallback) {\n try {\n value = callback(detail);\n } catch (e) {\n succeeded = false;\n error = e;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (succeeded === false) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n function Enumerator(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n }\n\n Enumerator.prototype._enumerate = function _enumerate(input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n };\n\n Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n\n if (resolve$$1 === resolve$1) {\n var _then = void 0;\n var error = void 0;\n var didError = false;\n try {\n _then = entry.then;\n } catch (e) {\n didError = true;\n error = e;\n }\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$1) {\n var promise = new c(noop);\n if (didError) {\n reject(promise, error);\n } else {\n handleMaybeThenable(promise, entry, _then);\n }\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n };\n\n Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n var promise = this.promise;\n\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n };\n\n Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n };\n\n return Enumerator;\n}();\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all(entries) {\n return new Enumerator(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {Function} resolver\n Useful for tooling.\n @constructor\n*/\n\nvar Promise$1 = function () {\n function Promise(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n }\n }\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n Chaining\n --------\n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n Assimilation\n ------------\n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n If the assimliated promise rejects, then the downstream promise will also reject.\n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n Simple Example\n --------------\n Synchronous Example\n ```javascript\n let result;\n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n Advanced Example\n --------------\n Synchronous Example\n ```javascript\n let author, books;\n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n Errback Example\n ```js\n function foundBooks(books) {\n }\n function failure(reason) {\n }\n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n Promise Example;\n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n\n\n Promise.prototype.catch = function _catch(onRejection) {\n return this.then(null, onRejection);\n };\n\n /**\n `finally` will be invoked regardless of the promise's fate just as native\n try/catch/finally behaves\n \n Synchronous example:\n \n ```js\n findAuthor() {\n if (Math.random() > 0.5) {\n throw new Error();\n }\n return new Author();\n }\n \n try {\n return findAuthor(); // succeed or fail\n } catch(error) {\n return findOtherAuther();\n } finally {\n // always runs\n // doesn't affect the return value\n }\n ```\n \n Asynchronous example:\n \n ```js\n findAuthor().catch(function(reason){\n return findOtherAuther();\n }).finally(function(){\n // author was either found, or not\n });\n ```\n \n @method finally\n @param {Function} callback\n @return {Promise}\n */\n\n\n Promise.prototype.finally = function _finally(callback) {\n var promise = this;\n var constructor = promise.constructor;\n\n if (isFunction(callback)) {\n return promise.then(function (value) {\n return constructor.resolve(callback()).then(function () {\n return value;\n });\n }, function (reason) {\n return constructor.resolve(callback()).then(function () {\n throw reason;\n });\n });\n }\n\n return promise.then(callback, callback);\n };\n\n return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n var local = void 0;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n//# sourceMappingURL=es6-promise.map\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","export enum HandlingState {\r\n Processing = 1,\r\n Executed = 2,\r\n Rejected = 3\r\n}\r\n","export interface ApiRequestResponseData {\r\n request: RequestData;\r\n response: ResponseData;\r\n}\r\n\r\nexport interface RequestData {\r\n metadata: RequestMetadata,\r\n data: any;\r\n}\r\n\r\nexport enum RequestType {\r\n Rtde = 1,\r\n OverlayEvent = 2,\r\n Identity = 3,\r\n ExternalAction = 4,\r\n}\r\n\r\nexport interface RequestMetadata extends Metadata {\r\n type: RequestType;\r\n url: string;\r\n\r\n headers?: HeadersInit;\r\n method?: string;\r\n mode?: RequestMode;\r\n}\r\n\r\nexport interface Metadata {\r\n date: Date;\r\n}\r\n\r\nexport interface ResponseData {\r\n metadata: ResponseMetadata,\r\n data?: any;\r\n}\r\n\r\nexport interface ResponseMetadata extends Metadata {\r\n ok: boolean;\r\n status?: number;\r\n\r\n headers?: Headers;\r\n type?: ResponseType;\r\n}\r\n","import { HandlingState } from '../../SmartSignalsProfileDebugger/resources/models/HandlingState';\r\nimport { FinalIssuedAction } from '../../api/client/clientApi';\r\nimport { IEngine } from '../IEngine';\r\n\r\nexport interface IOpenedActionBase {\r\n timeoutId: any;\r\n resizeObserver?: ResizeObserver;\r\n removeObserver?: MutationObserver;\r\n action: FinalIssuedAction;\r\n stopElementDetection?: () => void;\r\n actionOpenedOnOrigin: string;\r\n actionOpenedOnPath: string;\r\n}\r\n\r\n\r\nexport abstract class ActionHandler {\r\n protected engine: IEngine;\r\n\r\n constructor(engine: IEngine) {\r\n this.engine = engine;\r\n }\r\n\r\n public handle(issuedObject: SmartSignals.Models.Issued) {\r\n\r\n if (issuedObject.conf && issuedObject.conf.delayInSeconds && issuedObject.conf.delayInSeconds > 0) {\r\n setTimeout(() => {\r\n this.handleAction(issuedObject);\r\n }, issuedObject.conf.delayInSeconds * 1000);\r\n }\r\n else {\r\n this.handleAction(issuedObject);\r\n }\r\n }\r\n\r\n protected abstract handleAction(issuedObject: SmartSignals.Models.Issued): void;\r\n\r\n\r\n protected handligStateChange(id?: string, state?: HandlingState) {\r\n this.engine.sendHandlingState({ logId: id, state: state });\r\n }\r\n\r\n private isElementInViewport = (el: Element) => {\r\n var rect = el.getBoundingClientRect();\r\n return (rect.height || rect.width)\r\n && rect.top <= (window.innerHeight || document.documentElement.clientHeight)\r\n && rect.left <= (window.innerWidth || document.documentElement.clientWidth)\r\n && rect.bottom >= 0\r\n && rect.right >= 0;\r\n }\r\n\r\n private isElementOverlapping = (el: Element, actionRect: DOMRect | undefined) => {\r\n if (!actionRect)\r\n return true;\r\n\r\n var elementRect = el.getBoundingClientRect();\r\n\r\n const actionVerticalReach = actionRect.top + actionRect.height;\r\n const actionHorizontalReach = actionRect.left + actionRect.width;\r\n const elementVerticalReach = elementRect.top + elementRect.height;\r\n const elementHorizontalReach = elementRect.left + elementRect.width;\r\n\r\n return !(\r\n actionVerticalReach < elementRect.top ||\r\n actionRect.top > elementVerticalReach ||\r\n actionHorizontalReach < elementRect.left ||\r\n actionRect.left > elementHorizontalReach\r\n );\r\n }\r\n\r\n protected canShow(action: FinalIssuedAction, isModal: boolean, rootRect: DOMRect | undefined): boolean {\r\n //if (!action.actionId)\r\n // return false;\r\n\r\n const querySelectors = action.pageElementDetection?.querySelectors;\r\n if (!querySelectors)\r\n return true;\r\n\r\n let elements: Element[] = [];\r\n\r\n for (let selector of querySelectors) {\r\n document.querySelectorAll(selector).forEach(x => elements.push(x));\r\n }\r\n\r\n return isModal\r\n ? !elements.some(e => this.isElementInViewport(e))\r\n : !elements.some(e => this.isElementOverlapping(e, rootRect));\r\n }\r\n\r\n protected startThrottling(openedAction: IOpenedActionBase, isModal: boolean, rootRect: DOMRect | undefined, showCallback: (() => void) | undefined, hideCallback: (() => void) | undefined) {\r\n let throttlingMs = openedAction.action.pageElementDetection!.throttling;\r\n\r\n const callback = () => {\r\n const canShow = this.canShow(openedAction.action, isModal, rootRect);\r\n if (isModal) {\r\n if (canShow) {\r\n showCallback?.();\r\n openedAction.stopElementDetection?.();\r\n openedAction.stopElementDetection = undefined\r\n }\r\n return;\r\n }\r\n\r\n if (canShow) {\r\n showCallback?.();\r\n }\r\n else {\r\n hideCallback?.();\r\n }\r\n }\r\n\r\n clearTimeout(openedAction.timeoutId);\r\n openedAction.timeoutId = setTimeout(callback, throttlingMs)\r\n }\r\n}\r\n","import { FinalIssuedAction, DataExchangeType, ActionType, UserCookieModel, ClientSampling, DebuggerEventType, SeverityLogLevel } from \"../api/client/clientApi\";\r\nimport { UpdatedStateDebuggerData } from \"../SmartSignalsProfileDebugger/resources/models/UpdatedStateDebuggerData\";\r\nimport { ApiRequestResponseData, RequestType } from \"../SmartSignalsProfileDebugger/types/TrackingRequestResponseData\";\r\nimport { TrackingClientEventName } from \"./ITrackingClient.public\";\r\n\r\nexport const ENGINE_VERSION = '202502190926';\r\n\r\nexport interface ISamplinData {\r\n /** selected */\r\n s: boolean;\r\n\r\n /** sampling ration version */\r\n v: number;\r\n\r\n /** Time stamp */\r\n ts: number;\r\n}\r\n\r\nexport interface IProfileDebuggerData {\r\n /** debugger state (0 - hidden, 1 - shown, 2 - minimized */\r\n s: DebuggerState;\r\n\r\n /** Debugger window height */\r\n ht: number;\r\n}\r\n\r\nexport enum DebuggerState {\r\n OFF = 0,\r\n ON = 1,\r\n MIN = 2\r\n}\r\n\r\nexport interface IUserInfo {\r\n userId: string | undefined;\r\n scriptId: string;\r\n nativeEventTracking: boolean;\r\n xdmRecognition: boolean;\r\n adobeIdCookie?: string;\r\n closeOverlayOnUrlChange: boolean;\r\n sampledUser?: ClientSampling;\r\n crossDomainCookie: boolean;\r\n firstPartyTracking: boolean;\r\n url: string\r\n}\r\n\r\nexport interface IEngine {\r\n conf: IConfiguration;\r\n getActionHandler: (actionType: ActionType) => any;\r\n getHandoverHandler: (dataExchangeType: DataExchangeType) => any;\r\n unissuedAction: (action: FinalIssuedAction) => void;\r\n trigger(eventName: TrackingClientEventName, data: any): void;\r\n\r\n getCurrentUrl(): string;\r\n getClientSampling(): ClientSampling | undefined;\r\n getUserId(getTempUids?: boolean): Promise;\r\n getCrossDomainCookie(): Promise;\r\n setProfileDebuggerState(state: DebuggerState, height?: number): void;\r\n debuggerEvent(et: DebuggerEventType): void;\r\n getProfileDebuggerConfig(): IProfileDebuggerData;\r\n setConfiguration(key: string, config: T): void;\r\n getConfiguration(key: string): T | undefined;\r\n debuggerReady(): void;\r\n trackApiCall(requestType: RequestType, data: any, api: Promise): Promise;\r\n env: string;\r\n sendHandlingState(data: UpdatedStateDebuggerData): void;\r\n}\r\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","/// \r\n\r\nimport { fetch as fetchPolyfill } from 'whatwg-fetch'\r\n\r\nlet httpFetch: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n\r\nif (!!window.fetch)\r\n httpFetch = window;\r\nelse\r\n httpFetch = {\r\n fetch: fetchPolyfill\r\n };\r\n\r\nexport { httpFetch };\r\n","//----------------------\r\n// \r\n// Generated using the NSwag toolchain v14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org)\r\n// \r\n//----------------------\r\n\r\n/* tslint:disable */\r\n/* eslint-disable */\r\n// ReSharper disable InconsistentNaming\r\n\r\nimport { httpFetch } from \"../../lib/fetch\";\r\nexport class BaseXClient {\r\n\r\n private withCredentials: boolean;\r\n\r\n constructor(withCredentials: boolean = false) {\r\n this.withCredentials = withCredentials;\r\n }\r\n public transformOptions(options: RequestInit): Promise {\r\n options.mode = \"cors\";\r\n if (options.headers)\r\n (options.headers)[\"Content-Type\"] = \"text/plain\"; //to avoid preflight requests\r\n\r\n options.credentials = this.withCredentials ? \"include\" : undefined;\r\n\r\n return Promise.resolve(options);\r\n }\r\n\r\n public onRequest(options: RequestInit, url: string, http: { fetch(url: RequestInfo, init?: RequestInit): Promise }, finalPromise: Promise): Promise {\r\n let ap = finalPromise as ApiPromise;\r\n ap.requestMetadata = new RequestMetadata(options, url);\r\n\r\n return http.fetch(url, options)\r\n .then(response_ => {\r\n ap.responseMetadata = new ResponseMetadata(response_);\r\n return response_;\r\n }, reason_ => {\r\n ap.responseMetadata = new ResponseMetadata({ ok: false });\r\n throw reason_;\r\n })\r\n }\r\n}\r\n\r\nexport class ClientApi extends BaseXClient {\r\n private http: { fetch(url: RequestInfo, init?: RequestInit): Promise };\r\n private baseUrl: string;\r\n protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined;\r\n\r\n constructor(baseUrl?: string, withCredentials: boolean = false, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) {\r\n super(withCredentials);\r\n this.http = http ? http : httpFetch;//window;\r\n this.baseUrl = baseUrl ? baseUrl : \"\";\r\n }\r\n\r\n track_Post_1(data: TrackEventData): Promise {\r\n let url_ = this.baseUrl + \"/api/rtde\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(data);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processTrack_Post_1(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processTrack_Post_1(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as TrackingResultFinal;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n profileDebuggerEvent_Put_2(scriptId: string | null, userId: string | null, model: DebuggerEventModel): Promise {\r\n let url_ = this.baseUrl + \"/api/v2/user/profileDebuggerEvent?\";\r\n if (scriptId === undefined)\r\n throw new Error(\"The parameter 'scriptId' must be defined.\");\r\n else if(scriptId !== null)\r\n url_ += \"scriptId=\" + encodeURIComponent(\"\" + scriptId) + \"&\";\r\n if (userId === undefined)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n else if(userId !== null)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processProfileDebuggerEvent_Put_2(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processProfileDebuggerEvent_Put_2(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n log_Post_3(log: LogModel): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/client/log\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(log);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processLog_Post_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processLog_Post_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n resolvePlaceholder_Post_3(userId: string | null, organizationId: string | null, collectionId: string | null, data: GetUserDataBase): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/user/resolvePlaceholder?\";\r\n if (userId === undefined)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n else if(userId !== null)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (organizationId === undefined)\r\n throw new Error(\"The parameter 'organizationId' must be defined.\");\r\n else if(organizationId !== null)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n if (collectionId === undefined)\r\n throw new Error(\"The parameter 'collectionId' must be defined.\");\r\n else if(collectionId !== null)\r\n url_ += \"collectionId=\" + encodeURIComponent(\"\" + collectionId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(data);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processResolvePlaceholder_Post_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processResolvePlaceholder_Post_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as RenderPlaceholderResult;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n actionEvent_Post_3(userId: string | null, organizationId: string | null, collectionId: string | null, campaignId: string | null, actionId: string | null, issuedActionId: string | null, data: TrackActionEventBase): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/user/action/event?\";\r\n if (userId === undefined)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n else if(userId !== null)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (organizationId === undefined)\r\n throw new Error(\"The parameter 'organizationId' must be defined.\");\r\n else if(organizationId !== null)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n if (collectionId === undefined)\r\n throw new Error(\"The parameter 'collectionId' must be defined.\");\r\n else if(collectionId !== null)\r\n url_ += \"collectionId=\" + encodeURIComponent(\"\" + collectionId) + \"&\";\r\n if (campaignId === undefined)\r\n throw new Error(\"The parameter 'campaignId' must be defined.\");\r\n else if(campaignId !== null)\r\n url_ += \"campaignId=\" + encodeURIComponent(\"\" + campaignId) + \"&\";\r\n if (actionId === undefined)\r\n throw new Error(\"The parameter 'actionId' must be defined.\");\r\n else if(actionId !== null)\r\n url_ += \"actionId=\" + encodeURIComponent(\"\" + actionId) + \"&\";\r\n if (issuedActionId === undefined)\r\n throw new Error(\"The parameter 'issuedActionId' must be defined.\");\r\n else if(issuedActionId !== null)\r\n url_ += \"issuedActionId=\" + encodeURIComponent(\"\" + issuedActionId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(data);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processActionEvent_Post_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processActionEvent_Post_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as InnerAction;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n actionRevert_Post_3(userId: string | null, organizationId: string | null, collectionId: string | null, actionId: string | null, data: UnissuedActionBase): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/user/action/revert?\";\r\n if (userId === undefined)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n else if(userId !== null)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n if (organizationId === undefined)\r\n throw new Error(\"The parameter 'organizationId' must be defined.\");\r\n else if(organizationId !== null)\r\n url_ += \"organizationId=\" + encodeURIComponent(\"\" + organizationId) + \"&\";\r\n if (collectionId === undefined)\r\n throw new Error(\"The parameter 'collectionId' must be defined.\");\r\n else if(collectionId !== null)\r\n url_ += \"collectionId=\" + encodeURIComponent(\"\" + collectionId) + \"&\";\r\n if (actionId === undefined)\r\n throw new Error(\"The parameter 'actionId' must be defined.\");\r\n else if(actionId !== null)\r\n url_ += \"actionId=\" + encodeURIComponent(\"\" + actionId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(data);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processActionRevert_Post_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processActionRevert_Post_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 204) {\r\n return response.text().then((_responseText) => {\r\n return;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n userCookie_Get_3(cookieName: string | null, getOnly: boolean | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/client/userCookie?\";\r\n if (cookieName === undefined)\r\n throw new Error(\"The parameter 'cookieName' must be defined.\");\r\n else if(cookieName !== null)\r\n url_ += \"cookieName=\" + encodeURIComponent(\"\" + cookieName) + \"&\";\r\n if (getOnly === null)\r\n throw new Error(\"The parameter 'getOnly' cannot be null.\");\r\n else if (getOnly !== undefined)\r\n url_ += \"getOnly=\" + encodeURIComponent(\"\" + getOnly) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processUserCookie_Get_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processUserCookie_Get_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCookieModel;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n userCookie_Put_3(cookieName: string | null, model: UserCookieModel): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/client/userCookie?\";\r\n if (cookieName === undefined)\r\n throw new Error(\"The parameter 'cookieName' must be defined.\");\r\n else if(cookieName !== null)\r\n url_ += \"cookieName=\" + encodeURIComponent(\"\" + cookieName) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processUserCookie_Put_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processUserCookie_Put_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as UserCookieModel;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n userCookie_Delete_3(cookieName: string | null, keepLocal: boolean | undefined): Promise {\r\n let url_ = this.baseUrl + \"/api/v3/client/userCookie?\";\r\n if (cookieName === undefined)\r\n throw new Error(\"The parameter 'cookieName' must be defined.\");\r\n else if(cookieName !== null)\r\n url_ += \"cookieName=\" + encodeURIComponent(\"\" + cookieName) + \"&\";\r\n if (keepLocal === null)\r\n throw new Error(\"The parameter 'keepLocal' cannot be null.\");\r\n else if (keepLocal !== undefined)\r\n url_ += \"keepLocal=\" + encodeURIComponent(\"\" + keepLocal) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"DELETE\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processUserCookie_Delete_3(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processUserCookie_Delete_3(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as boolean;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n vwFreespee_Get_4(collectionId: string | null, userId: string | null): Promise {\r\n let url_ = this.baseUrl + \"/api/v4/user/vwFreespee?\";\r\n if (collectionId === undefined)\r\n throw new Error(\"The parameter 'collectionId' must be defined.\");\r\n else if(collectionId !== null)\r\n url_ += \"collectionId=\" + encodeURIComponent(\"\" + collectionId) + \"&\";\r\n if (userId === undefined)\r\n throw new Error(\"The parameter 'userId' must be defined.\");\r\n else if(userId !== null)\r\n url_ += \"userId=\" + encodeURIComponent(\"\" + userId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n let options_ = {\r\n method: \"GET\",\r\n headers: {\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processVwFreespee_Get_4(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processVwFreespee_Get_4(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as VwFreespeeUserDataModel;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n\r\n externalAction_Post_4(externalActionId: string | null, model: ExternalActionClientModel): Promise {\r\n let url_ = this.baseUrl + \"/api/v4/user/externalAction?\";\r\n if (externalActionId === undefined)\r\n throw new Error(\"The parameter 'externalActionId' must be defined.\");\r\n else if(externalActionId !== null)\r\n url_ += \"externalActionId=\" + encodeURIComponent(\"\" + externalActionId) + \"&\";\r\n url_ = url_.replace(/[?&]$/, \"\");\r\n\r\n const content_ = JSON.stringify(model);\r\n\r\n let options_ = {\r\n body: content_,\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n \"Accept\": \"application/json\"\r\n },\r\n };\r\n\r\n const result: Promise = this.transformOptions(options_)\r\n .then(options_ => this.onRequest(options_, url_, this.http, result))\r\n .then((_response: Response) => {\r\n return this.processExternalAction_Post_4(_response);\r\n });\r\n return result;\r\n }\r\n\r\n protected processExternalAction_Post_4(response: Response): Promise {\r\n const status = response.status;\r\n let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); };\r\n if (status === 400) {\r\n return response.text().then((_responseText) => {\r\n let result400: any = null;\r\n result400 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ValidationProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result400);\r\n });\r\n } else if (status === 401) {\r\n return response.text().then((_responseText) => {\r\n let result401: any = null;\r\n result401 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result401);\r\n });\r\n } else if (status === 403) {\r\n return response.text().then((_responseText) => {\r\n let result403: any = null;\r\n result403 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result403);\r\n });\r\n } else if (status === 404) {\r\n return response.text().then((_responseText) => {\r\n let result404: any = null;\r\n result404 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result404);\r\n });\r\n } else if (status === 504) {\r\n return response.text().then((_responseText) => {\r\n let result504: any = null;\r\n result504 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result504);\r\n });\r\n } else if (status === 500) {\r\n return response.text().then((_responseText) => {\r\n let result500: any = null;\r\n result500 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ProblemDetails;\r\n return throwException(\"A server side error occurred.\", status, _responseText, _headers, result500);\r\n });\r\n } else if (status === 200) {\r\n return response.text().then((_responseText) => {\r\n let result200: any = null;\r\n result200 = _responseText === \"\" ? null : JSON.parse(_responseText, this.jsonParseReviver) as ExternalActionResponse;\r\n return result200;\r\n });\r\n } else if (status !== 200 && status !== 204) {\r\n return response.text().then((_responseText) => {\r\n return throwException(\"An unexpected server error occurred.\", status, _responseText, _headers);\r\n });\r\n }\r\n return Promise.resolve(null as any);\r\n }\r\n}\r\n\r\nexport interface ProblemDetails {\r\n type?: string | undefined;\r\n title?: string | undefined;\r\n status?: number | undefined;\r\n detail?: string | undefined;\r\n instance?: string | undefined;\r\n extensions: { [key: string]: any; };\r\n\r\n [key: string]: any;\r\n}\r\n\r\nexport interface HttpValidationProblemDetails extends ProblemDetails {\r\n errors: { [key: string]: string[]; };\r\n\r\n [key: string]: any;\r\n}\r\n\r\nexport interface ValidationProblemDetails extends HttpValidationProblemDetails {\r\n errors: { [key: string]: string[]; };\r\n\r\n [key: string]: any;\r\n}\r\n\r\nexport interface TrackingResultFinal {\r\n uIds?: UserId[] | undefined;\r\n actions?: FinalIssuedAction[] | undefined;\r\n handovers?: IssuedHandover[] | undefined;\r\n sampling?: UserSampling | undefined;\r\n operationProblems?: OperationProblems | undefined;\r\n}\r\n\r\nexport interface UserId {\r\n id?: string | undefined;\r\n type: UserIdProviderType;\r\n lifeTime?: number | undefined;\r\n}\r\n\r\nexport enum UserIdProviderType {\r\n Local = 1,\r\n CrossDomain = 2,\r\n LocalServerSide = 3,\r\n UrlParameter = 4,\r\n}\r\n\r\nexport interface FinalIssuedAction {\r\n userId?: string | undefined;\r\n id?: string | undefined;\r\n actionId?: string | undefined;\r\n organizationId?: string | undefined;\r\n collectionId?: string | undefined;\r\n campaignId?: string | undefined;\r\n type: ActionType;\r\n conf?: IssuedAction | undefined;\r\n isInControlGroup: boolean;\r\n testMode: boolean;\r\n actionCategory: ActionCategory;\r\n actionClass: ActionClass;\r\n isManual: boolean;\r\n parentActionId?: string | undefined;\r\n issuedFollowUpActions?: FinalIssuedAction[] | undefined;\r\n dynamicProductId?: string | undefined;\r\n testModeOverride: boolean;\r\n campaignPotentialGroupId?: string | undefined;\r\n activeProductId?: string | undefined;\r\n actionCampaignPotentialGroupIds?: string[] | undefined;\r\n triggeredInnerAction: boolean;\r\n testLink: boolean;\r\n triggerUrl?: string | undefined;\r\n dynamicTopicId?: string | undefined;\r\n pageElementDetection?: PageElementDetection | undefined;\r\n}\r\n\r\nexport enum ActionType {\r\n Cookie = 1,\r\n Overlay = 2,\r\n Script = 3,\r\n Html = 4,\r\n Voucher = 5,\r\n Pixel = 6,\r\n ProfileUpdate = 7,\r\n}\r\n\r\nexport interface IssuedAction {\r\n id?: string | undefined;\r\n delayInSeconds: number;\r\n issuedFollowUpActions?: IssuedFollowUpAction[] | undefined;\r\n actionName?: string | undefined;\r\n executeForControlGroupUsers: boolean;\r\n actionId?: string | undefined;\r\n actionCategory: ActionCategory;\r\n actionClass: ActionClass;\r\n actionType: ActionType;\r\n metaInfoCampaign?: string | undefined;\r\n metaInfoCTA?: string | undefined;\r\n metaInfoBusinessTargetGroup?: string | undefined;\r\n metaInfoDesign?: string | undefined;\r\n listOfAllMetaInfoClickCTA?: string[] | undefined;\r\n metaInfoClickCTA?: string | undefined;\r\n metaInfoHandoverActive: boolean;\r\n metaInfoActionType?: string | undefined;\r\n templateTypeId?: string | undefined;\r\n templateVersion?: string | undefined;\r\n}\r\n\r\nexport interface IssuedFollowUpAction {\r\n issuedAction?: IssuedAction | undefined;\r\n actionId?: string | undefined;\r\n issuedActionId?: string | undefined;\r\n actionCategory: ActionCategory;\r\n actionClass: ActionClass;\r\n actionType: ActionType;\r\n}\r\n\r\nexport enum ActionCategory {\r\n Overlay = 1,\r\n Banderole = 2,\r\n Voucher = 3,\r\n Custom = 4,\r\n ScriptCustom = 5,\r\n Pixel = 6,\r\n Cookie = 7,\r\n ContentPersonalization = 8,\r\n InfoHandover = 9,\r\n ExternalOverlay = 10,\r\n Widget = 11,\r\n Notification = 12,\r\n ScriptOverlay = 13,\r\n ScriptBanderole = 14,\r\n ScriptWidget = 15,\r\n ScriptUxPersonalization = 16,\r\n Standard = 17,\r\n ScriptInfobox = 18,\r\n}\r\n\r\nexport enum ActionClass {\r\n Visual = 1,\r\n Invisible = 2,\r\n PersoAsset = 3,\r\n}\r\n\r\nexport interface NoIssuedAction extends IssuedAction {\r\n}\r\n\r\nexport interface IssuedCookieAction extends IssuedAction {\r\n cookieName?: string | undefined;\r\n cookieValue?: string | undefined;\r\n lifeTime?: string | undefined;\r\n templateSyntaxType: TemplateSyntaxType;\r\n expireDays: number;\r\n}\r\n\r\nexport enum TemplateSyntaxType {\r\n Mustache = 1,\r\n Scriban = 2,\r\n}\r\n\r\nexport interface IssuedInjectHtmlAction extends IssuedAction {\r\n html?: string | undefined;\r\n}\r\n\r\nexport interface IssuedInjectScriptAction extends IssuedAction {\r\n script?: string | undefined;\r\n actionConfigType: ActionConfigType;\r\n itemId?: string | undefined;\r\n itemType: ActionItemType;\r\n languageId?: string | undefined;\r\n contextAwareCapping: boolean;\r\n geoId?: string | undefined;\r\n conversionProductId?: string | undefined;\r\n pageClassProductId?: string | undefined;\r\n coreScript?: string | undefined;\r\n css?: string | undefined;\r\n flickerDefendingRequired: boolean;\r\n isModule: boolean;\r\n isCoreModule: boolean;\r\n isTestCode: boolean;\r\n customCssTemplateSyntaxType: TemplateSyntaxType;\r\n customCoreScriptTemplateSyntaxType: TemplateSyntaxType;\r\n scriptTemplateSyntaxType: TemplateSyntaxType;\r\n collectionActionGroups?: string[] | undefined;\r\n parameters?: UserActionContextParameters | undefined;\r\n allowAsynchronousProcessing: boolean;\r\n}\r\n\r\nexport enum ActionConfigType {\r\n Simple = 1,\r\n ConversionProductDependent = 2,\r\n ProductRankDependent = 3,\r\n LastPageClassProductDependent = 4,\r\n ActiveProductDependent = 5,\r\n PageClassDependent = 6,\r\n TopicRankDependant = 7,\r\n}\r\n\r\nexport enum ActionItemType {\r\n None = 0,\r\n Product = 1,\r\n PageClass = 2,\r\n Topic = 3,\r\n}\r\n\r\nexport interface UserActionContextParameters {\r\n simple?: { [key: string]: UserActionContextParameter; } | undefined;\r\n linkCatalog?: { [key: string]: UserActionContextParameter; } | undefined;\r\n}\r\n\r\nexport interface UserActionContextParameter {\r\n label?: string | undefined;\r\n value?: string | undefined;\r\n}\r\n\r\nexport interface IssuedOverlayAction extends IssuedAction {\r\n url?: string | undefined;\r\n visualConfig?: VisualConfig | undefined;\r\n urlConfigType?: ActionConfigType | undefined;\r\n itemId?: string | undefined;\r\n itemType: ActionItemType;\r\n languageId?: string | undefined;\r\n contextAwareCapping: boolean;\r\n geoId?: string | undefined;\r\n conversionProductId?: string | undefined;\r\n pageClassProductId?: string | undefined;\r\n collectionActionGroups?: string[] | undefined;\r\n templateSyntaxType: TemplateSyntaxType;\r\n actionConfigType: ActionConfigType;\r\n}\r\n\r\nexport interface VisualConfig {\r\n dimensions?: Dimensions | undefined;\r\n verticalSnap: VerticalSnap;\r\n horizontalSnap: HorizontalSnap;\r\n margin?: Margin | undefined;\r\n dimensionsState: DimensionsState;\r\n modal: boolean;\r\n closeButtonVisible: boolean;\r\n closeOnOuterClick: boolean;\r\n transparent: boolean;\r\n maxDynamicDimensionsEnabled: boolean;\r\n flexiblePositionIOS: boolean;\r\n slideIn?: Slide | undefined;\r\n fadeIn?: Fade | undefined;\r\n slideOut?: Slide | undefined;\r\n fadeOut?: Fade | undefined;\r\n boxShadow?: BoxShadow | undefined;\r\n displayPreventionDisabled: boolean;\r\n}\r\n\r\nexport interface Dimensions {\r\n height?: ValueWithUnit | undefined;\r\n width?: ValueWithUnit | undefined;\r\n}\r\n\r\nexport interface ValueWithUnit {\r\n value?: number | undefined;\r\n unit: Unit;\r\n}\r\n\r\nexport enum Unit {\r\n Pixels = 1,\r\n Percent = 2,\r\n}\r\n\r\nexport enum VerticalSnap {\r\n Center = 1,\r\n Bottom = 2,\r\n Top = 3,\r\n}\r\n\r\nexport enum HorizontalSnap {\r\n Center = 1,\r\n Left = 2,\r\n Right = 3,\r\n}\r\n\r\nexport interface Margin {\r\n top?: ValueWithUnit | undefined;\r\n bottom?: ValueWithUnit | undefined;\r\n left?: ValueWithUnit | undefined;\r\n right?: ValueWithUnit | undefined;\r\n}\r\n\r\nexport enum DimensionsState {\r\n Dynamic = 1,\r\n Static = 2,\r\n}\r\n\r\nexport interface Slide {\r\n slideSide: SlideSide;\r\n transition: number;\r\n enabled: boolean;\r\n}\r\n\r\nexport enum SlideSide {\r\n Top = 1,\r\n Bottom = 2,\r\n Left = 3,\r\n Right = 4,\r\n}\r\n\r\nexport interface Fade {\r\n transition: number;\r\n enabled: boolean;\r\n}\r\n\r\nexport interface BoxShadow {\r\n enabled: boolean;\r\n horizontalOffset: number;\r\n verticalOffset: number;\r\n blur: number;\r\n spread: number;\r\n color?: string | undefined;\r\n}\r\n\r\nexport interface IssuedVoucherAction extends IssuedOverlayAction {\r\n voucherTypeId?: string | undefined;\r\n voucherEngineConnectionId?: string | undefined;\r\n voucherId?: string | undefined;\r\n clientSideVariable?: string | undefined;\r\n voucherVariableName?: string | undefined;\r\n extractClientSideValue: boolean;\r\n}\r\n\r\nexport interface IssuedPixelAction extends IssuedAction {\r\n url?: string | undefined;\r\n alt?: string | undefined;\r\n templateSyntaxType: TemplateSyntaxType;\r\n}\r\n\r\nexport interface IssuedProfileUpdateAction extends IssuedAction {\r\n value?: string | undefined;\r\n actionConfigType: ActionConfigType;\r\n itemId?: string | undefined;\r\n itemType: ActionItemType;\r\n languageId?: string | undefined;\r\n contextAwareCapping: boolean;\r\n geoId?: string | undefined;\r\n conversionProductId?: string | undefined;\r\n pageClassProductId?: string | undefined;\r\n assetType: PersonalizationAssetType;\r\n}\r\n\r\nexport enum PersonalizationAssetType {\r\n Json = 1,\r\n String = 2,\r\n Url = 3,\r\n}\r\n\r\nexport interface PageElementDetection {\r\n querySelectors?: string[] | undefined;\r\n throttling: number;\r\n}\r\n\r\nexport interface IssuedHandover {\r\n id?: string | undefined;\r\n isInControlGroup: boolean;\r\n conf?: DataExchangeConfig | undefined;\r\n}\r\n\r\nexport interface DataExchangeConfig {\r\n dataExchangeType: DataExchangeType;\r\n placeholdersToCheck?: string[] | undefined;\r\n}\r\n\r\nexport enum DataExchangeType {\r\n Script = 1,\r\n Cookie = 2,\r\n Pixel = 3,\r\n TrackingResponse = 4,\r\n GetApi = 5,\r\n PostApi = 6,\r\n CustomHandover1 = 7,\r\n}\r\n\r\nexport interface UserSampling {\r\n selected: boolean;\r\n ratioVersion: number;\r\n}\r\n\r\nexport interface OperationProblems {\r\n problems?: OperationProblem[] | undefined;\r\n}\r\n\r\nexport interface OperationProblem {\r\n type?: string | undefined;\r\n title?: string | undefined;\r\n status?: number | undefined;\r\n detail?: string | undefined;\r\n instance?: string | undefined;\r\n}\r\n\r\nexport interface OperationValidationProblem extends OperationProblem {\r\n errors?: { [key: string]: string[]; } | undefined;\r\n}\r\n\r\nexport interface TrackEventData {\r\n scriptVersion?: string | undefined;\r\n scriptId: string;\r\n uIds?: UserId2[] | undefined;\r\n event: string;\r\n eventObject?: string | undefined;\r\n url: string;\r\n urlReferrer?: string | undefined;\r\n title?: string | undefined;\r\n timezoneOffset: number;\r\n sampling?: ClientSampling | undefined;\r\n externalCookies?: ExternalCookieModel[] | undefined;\r\n}\r\n\r\nexport interface UserId2 {\r\n id?: string | undefined;\r\n type: UserIdProviderType;\r\n}\r\n\r\nexport interface ClientSampling {\r\n selected?: boolean | undefined;\r\n ratioVersion?: number | undefined;\r\n override?: boolean | undefined;\r\n}\r\n\r\nexport interface ExternalCookieModel {\r\n system?: string | undefined;\r\n purpose?: string | undefined;\r\n context?: string | undefined;\r\n cookieName?: string | undefined;\r\n value?: string | undefined;\r\n partnerId?: string | undefined;\r\n partnerSystem?: string | undefined;\r\n}\r\n\r\nexport interface DebuggerEventModel {\r\n url?: string | undefined;\r\n debuggerEventType: DebuggerEventType;\r\n}\r\n\r\nexport enum DebuggerEventType {\r\n Opened = 1,\r\n Closed = 2,\r\n Minimized = 3,\r\n}\r\n\r\nexport interface LogModel {\r\n severityLogLevel: SeverityLogLevel;\r\n logType: LogType;\r\n message?: string | undefined;\r\n data?: any | undefined;\r\n errorInfo?: ErrorInfo | undefined;\r\n context?: LogContext | undefined;\r\n}\r\n\r\nexport enum SeverityLogLevel {\r\n Info = 2,\r\n Warn = 3,\r\n Error = 4,\r\n}\r\n\r\nexport enum LogType {\r\n Internal = 0,\r\n External = 1,\r\n}\r\n\r\nexport interface ErrorInfo {\r\n name?: string | undefined;\r\n message?: string | undefined;\r\n stack?: string | undefined;\r\n}\r\n\r\nexport interface LogContext {\r\n userId?: string | undefined;\r\n scriptId?: string | undefined;\r\n collectionId?: string | undefined;\r\n campaignId?: string | undefined;\r\n actionId?: string | undefined;\r\n}\r\n\r\nexport interface RenderPlaceholderResult {\r\n value?: any | undefined;\r\n}\r\n\r\nexport interface GetUserDataBase {\r\n placeholder?: string | undefined;\r\n}\r\n\r\nexport interface InnerAction {\r\n id?: string | undefined;\r\n innerActionType: InnerActionType;\r\n name?: string | undefined;\r\n closeOverlay: boolean;\r\n handovers?: IssuedHandover[] | undefined;\r\n metaInfoClickCTA?: string | undefined;\r\n}\r\n\r\nexport enum InnerActionType {\r\n Basic = 1,\r\n Open = 2,\r\n Trigger = 3,\r\n CloseButton = 4,\r\n}\r\n\r\nexport interface BasicInnerAction extends InnerAction {\r\n}\r\n\r\nexport interface OpenInnerAction extends InnerAction {\r\n url?: string | undefined;\r\n newWindow: boolean;\r\n}\r\n\r\nexport interface NoInnerAction extends InnerAction {\r\n}\r\n\r\nexport interface TriggerInnerAction extends InnerAction {\r\n actionId?: string | undefined;\r\n issuedAction?: FinalIssuedAction | undefined;\r\n}\r\n\r\nexport interface TrackActionEventBase {\r\n innerActionName?: string | undefined;\r\n actionEventType: ActionEventType;\r\n itemId?: string | undefined;\r\n itemType?: ActionItemType | undefined;\r\n languageId?: string | undefined;\r\n geoId?: string | undefined;\r\n actionCloseType?: ActionCloseType | undefined;\r\n templateTypeId?: string | undefined;\r\n templateVersion?: string | undefined;\r\n}\r\n\r\nexport enum ActionEventType {\r\n OverlayOpened = 1,\r\n OverlayClosed = 2,\r\n Trigger = 3,\r\n OverlayDiscarded = 4,\r\n Submit = 5,\r\n}\r\n\r\nexport enum ActionCloseType {\r\n NativeClose = 1,\r\n TemplateClose = 2,\r\n InnerActionClose = 3,\r\n SystemClose = 4,\r\n}\r\n\r\nexport interface UnissuedActionBase {\r\n actionCategory: ActionCategory;\r\n itemId?: string | undefined;\r\n itemType?: ActionItemType | undefined;\r\n}\r\n\r\nexport interface UserCookieModel {\r\n value: string;\r\n lifeTime?: number | undefined;\r\n}\r\n\r\nexport interface VwFreespeeUserDataModel {\r\n preferredModel?: string | undefined;\r\n preferredModelInterestLevel?: string | undefined;\r\n configurationStatus?: string | undefined;\r\n configurationModel?: string | undefined;\r\n detailPageModel?: string | undefined;\r\n promoPageModel?: string | undefined;\r\n dealerCode?: string | undefined;\r\n modelCode?: string | undefined;\r\n modelDerivative?: string | undefined;\r\n campaignCode?: string | undefined;\r\n}\r\n\r\nexport interface ExternalActionResponse {\r\n metadata?: ExternalActionRequestMetadata | undefined;\r\n result?: IExternalActionResult | undefined;\r\n}\r\n\r\nexport interface ExternalActionRequestMetadata {\r\n organizationId?: string | undefined;\r\n collectionId?: string | undefined;\r\n campaignId?: string | undefined;\r\n userId?: string | undefined;\r\n userExternalActionId?: string | undefined;\r\n userCollectionId?: string | undefined;\r\n externalActionId?: string | undefined;\r\n externalActionType: ExternalActionType;\r\n}\r\n\r\nexport enum ExternalActionType {\r\n VoucherReservation = 1,\r\n VoucherCreation = 2,\r\n}\r\n\r\nexport interface IExternalActionResult {\r\n}\r\n\r\nexport interface ExternalActionClientModel {\r\n userId: string;\r\n aditionalData?: string | undefined;\r\n token?: string | undefined;\r\n}\r\n\r\nexport class ApiException extends Error {\r\n message: string;\r\n status: number;\r\n response: string;\r\n headers: { [key: string]: any; };\r\n result: any;\r\n\r\n constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) {\r\n super();\r\n\r\n this.message = message;\r\n this.status = status;\r\n this.response = response;\r\n this.headers = headers;\r\n this.result = result;\r\n }\r\n\r\n protected isApiException = true;\r\n\r\n static isApiException(obj: any): obj is ApiException {\r\n return obj.isApiException === true;\r\n }\r\n}\r\n\r\nfunction throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any {\r\n if (result !== null && result !== undefined)\r\n throw result;\r\n else\r\n throw new ApiException(message, status, response, headers, null);\r\n}\r\n\r\nexport interface ApiPromise extends Promise {\r\n requestMetadata?: RequestMetadata;\r\n responseMetadata?: ResponseMetadata;\r\n}\r\n\r\nexport class RequestMetadata {\r\n headers?: HeadersInit;\r\n method?: string;\r\n mode?: RequestMode;\r\n url: string;\r\n date: Date;\r\n\r\n constructor(request: RequestInit, url: string) {\r\n this.headers = request.headers;\r\n this.method = request.method;\r\n this.mode = request.mode;\r\n this.url = url;\r\n this.date = new Date();\r\n }\r\n}\r\n\r\nexport class ResponseMetadata {\r\n headers?: Headers;\r\n type?: ResponseType;\r\n ok: boolean;\r\n status?: number;\r\n date: Date;\r\n\r\n constructor(response: Response | { ok: boolean, status?: number }) {\r\n if (response instanceof Response) {\r\n this.headers = response.headers;\r\n this.type = response.type;\r\n }\r\n\r\n this.ok = response.ok;\r\n this.status = response.status;\r\n this.date = new Date();\r\n }\r\n}","export function tryDelete(obj: any, name: string | number): void {\r\n try {\r\n if (obj && name in obj)\r\n delete obj[name];\r\n }\r\n catch (e) {\r\n obj[name] = undefined;\r\n }\r\n}\r\n\r\nexport function createGuid(): string {\r\n const guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n const r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n return guid;\r\n}\r\n\r\nexport function createTempUserId(): string {\r\n return '*tmp*' + createGuid().replace(/-/g, '');\r\n}\r\n\r\nexport function fixUrl(url: string): string {\r\n if (url) {\r\n if (url.charAt(url.length - 1) !== '/')\r\n url += '/';\r\n }\r\n return url;\r\n}\r\n\r\nexport function isSafari(): boolean {\r\n return navigator.vendor.indexOf('Apple') > -1 &&\r\n navigator.userAgent.indexOf('CriOS') === -1 &&\r\n navigator.userAgent.indexOf('FxiOS') === -1;\r\n}\r\n\r\nlet domains2: Array;\r\n\r\nexport function getSubDomains(domain?: string): Array {\r\n //fiddle.jshell.net =>\r\n // net [0]\r\n // jshell.net [1]\r\n //fiddle.jshell.net [2]\r\n\r\n if (!domain) {\r\n if (!domains2)\r\n domains2 = getSubDomains(window.location.hostname);\r\n return domains2;\r\n }\r\n\r\n const domains = new Array();\r\n let i = domain.length;\r\n\r\n while ((i = domain.lastIndexOf('.', i - 1)) > 0) {\r\n domains.push(domain.substr(i + 1));\r\n }\r\n domains.push(domain);\r\n return domains;\r\n}\r\n\r\nexport function getDomainLevel(domain?: string): number {\r\n // net => 0\r\n // .net => 0\r\n // jshell.net => 1\r\n // .jshell.net => 1\r\n //fiddle.jshell.net => 2\r\n\r\n if (!domain)\r\n domain = window.location.hostname;\r\n\r\n let i = domain.length,\r\n lvl = 0;\r\n\r\n while ((i = domain.lastIndexOf('.', i - 1)) > 0) {\r\n lvl++;\r\n }\r\n return lvl;\r\n}\r\n\r\nexport function getDomainByLevel(level: number, domain?: string): string | undefined {\r\n //fiddle.jshell.net =>\r\n //0 => net\r\n //1 => jshell.net\r\n //2 => fiddle.jshell.net\r\n\r\n //.jshell.net =>\r\n //0 => net\r\n //1 => jshell.net\r\n\r\n if (level < 0)\r\n return;\r\n\r\n if (!domain)\r\n domain = window.location.hostname;\r\n\r\n let i = domain.length,\r\n lvl = 0;\r\n\r\n while ((i = domain.lastIndexOf('.', i - 1)) > -1) {\r\n if (lvl >= level || i === 0)\r\n return domain.substr(i + 1);\r\n lvl++;\r\n }\r\n return domain;\r\n}\r\n\r\nexport function wait(ms: number) {\r\n const start = +(new Date());\r\n while (new Date() - start < ms);\r\n}\r\n\r\nexport function insertHTMLAndExecute(target: HTMLElement, htmlToInsert: string) {\r\n target.innerHTML = htmlToInsert;\r\n var scripts = target.getElementsByTagName(\"script\");\r\n\r\n for (var i = 0; i < scripts.length; i++) {\r\n var script = scripts[i];\r\n var newScript = document.createElement(\"script\");\r\n\r\n if (script.src != \"\")\r\n newScript.src = scripts[i].src;\r\n else\r\n newScript.text = script.text;\r\n\r\n newScript.type = \"text/javascript\";\r\n if (script.parentNode) {\r\n script.parentNode.insertBefore(newScript, script);\r\n script.parentNode.removeChild(script);\r\n }\r\n }\r\n}\r\n\r\nexport function insertScriptAndExecute(target: HTMLElement, scriptToInsert: string) {\r\n target.innerText = scriptToInsert;\r\n var scripts = target.getElementsByTagName(\"script\");\r\n\r\n for (var i = 0; i < scripts.length; i++) {\r\n var script = scripts[i];\r\n var newScript = document.createElement(\"script\");\r\n\r\n if (script.src != \"\")\r\n newScript.src = scripts[i].src;\r\n else\r\n newScript.text = script.text;\r\n\r\n newScript.type = \"text/javascript\";\r\n if (script.parentNode) {\r\n script.parentNode.insertBefore(newScript, script);\r\n script.parentNode.removeChild(script);\r\n }\r\n }\r\n}\r\n\r\nexport function whenBodyReady(callback: () => void) {\r\n if (!callback)\r\n return;\r\n if (document.body) {\r\n callback();\r\n }\r\n else {\r\n let executed = false;\r\n let execute = () => {\r\n if (executed)\r\n return;\r\n\r\n if (document.body) {\r\n executed = true;\r\n callback();\r\n }\r\n };\r\n\r\n let hReadystatechange = () => {\r\n execute();\r\n unregister();\r\n };\r\n let hDOMContentLoaded = () => {\r\n execute();\r\n unregister();\r\n };\r\n let hLoad = () => {\r\n execute();\r\n unregister();\r\n };\r\n\r\n let unregistered = false;\r\n let unregister = () => {\r\n if (unregistered)\r\n return;\r\n unregistered = true;\r\n\r\n if (window.removeEventListener) {\r\n window.removeEventListener(\"readystatechange\", hReadystatechange, false);\r\n window.removeEventListener(\"DOMContentLoaded\", hDOMContentLoaded, false);\r\n window.removeEventListener(\"load\", hLoad, false);\r\n }\r\n else if ((window).attachEvent) {\r\n (window).detachEvent(\"onload\", hLoad);\r\n }\r\n };\r\n\r\n if (window.addEventListener) {\r\n window.addEventListener(\"readystatechange\", hReadystatechange, false);\r\n window.addEventListener(\"DOMContentLoaded\", hDOMContentLoaded, false);\r\n window.addEventListener(\"load\", hLoad, false);\r\n }\r\n else if ((window).attachEvent) {\r\n (window).attachEvent(\"onload\", hLoad);\r\n }\r\n }\r\n}\r\n\r\nexport function getPureUrl(url: string): string {\r\n if (!url) return \"\";\r\n\r\n const pureUrl = url.split('?')[0];\r\n return pureUrl.split('#')[0];\r\n}\r\n\r\nexport function lastN(limit: number, array: T[] = [], predicate: (value: T) => TId) {\r\n if (array.length > limit) array.splice(0, array.length - limit);\r\n const\r\n fluent = {\r\n add: (value: T) => {\r\n let index = array.findIndex(i => predicate(i) == predicate(value));\r\n if (index != -1)\r\n array.splice(index, 1);\r\n\r\n array.splice(0, 0, value);\r\n if (array.length > limit)\r\n array.splice(array.length - 1, array.length - limit);\r\n\r\n return fluent;\r\n },\r\n getAll: () => array,\r\n get: (id: TId): T | undefined => array.find(i => predicate(i) == id)\r\n };\r\n return fluent;\r\n}\r\n\r\nexport function isPrimitive(test: any): boolean {\r\n return test !== Object(test);\r\n}\r\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\tid: moduleId,\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// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + {\"372\":\"overlay\",\"516\":\"vwFreespee\",\"607\":\"smasi2ProfileDebuggerBootstrap\"}[chunkId] + \"-\" + {\"372\":\"4c462f33dd0bfe95d349ed2bb6a9876b\",\"516\":\"0fa07d47e8dc59ae20af5f3d9905b162\",\"607\":\"5f7ac03b27f1b8600fec3947c43ef8a4\"}[chunkId] + \".static.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/dist/\";","__webpack_require__.f.compat = (chunkId, promises) => {\n\tvar Promise = __webpack_require__(3641);\n};","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t294: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","declare function unescape(value: string): string;\r\n\r\nexport class ScriptParamsProvider {\r\n public readonly query: string;\r\n public readonly path: string;\r\n public readonly origin: string;\r\n constructor() {\r\n const currentScript = document.currentScript as HTMLScriptElement;\r\n if (!currentScript) {\r\n throw new Error(\"No current script found.\");\r\n }\r\n\r\n const scriptUrl = new URL(currentScript.src);\r\n\r\n this.origin = scriptUrl.origin;\r\n this.query = scriptUrl.search.startsWith('?') ? scriptUrl.search.substring(1) : scriptUrl.search;\r\n this.path = scriptUrl.pathname.substring(0, scriptUrl.pathname.lastIndexOf('/') + 1);\r\n }\r\n\r\n private parse() {\r\n let result: any = {};\r\n let components = this.query.split('&');\r\n\r\n for (let i = 0; i < components.length; i++) {\r\n let pair = components[i].split('=');\r\n let name = pair[0],\r\n value = pair[1];\r\n try {\r\n name = decodeURIComponent(pair[0]);\r\n }\r\n catch (e) { }\r\n\r\n if (!result[name])\r\n result[name] = [];\r\n // decode\r\n if (!value)\r\n value = 'true';\r\n else {\r\n try {\r\n value = decodeURIComponent(value);\r\n } catch (e) {\r\n value = unescape(value);\r\n }\r\n }\r\n\r\n // MacIE way\r\n let values = result[name];\r\n values[values.length] = value;\r\n }\r\n return result;\r\n }\r\n\r\n public flatten(): { [index: string]: string | undefined; } {\r\n let queries = this.parse();\r\n for (let name in queries)\r\n queries[name] = queries[name][0];\r\n return queries;\r\n }\r\n}\r\n\r\n//export class ScriptUrlParser {\r\n// private scriptPath: string;\r\n// private domains: Array;\r\n// private processedScripts: Array;\r\n// private query = '';\r\n\r\n// public origin = '';\r\n// public path = '';\r\n\r\n\r\n// constructor(scriptPath: string, domains: Array) {\r\n// this.scriptPath = scriptPath;\r\n// this.processedScripts = new Array();\r\n// this.domains = domains;\r\n// this.init();\r\n// }\r\n\r\n// private init(): void {\r\n// let srcRegex = new RegExp(this.scriptPath.replace('.', '\\\\.') + '(\\\\.min)?\\\\.js(\\\\?.*)?$');\r\n// let scripts = document.getElementsByTagName(\"script\");\r\n// for (let i = 0; i < scripts.length; i++) {\r\n// let script = scripts[i];\r\n// var urlParser = this.getUrlParser(script.src);\r\n// if (script.src && script.src.match(srcRegex) && this.isFromDomain(urlParser, this.domains)) {\r\n// if (this.processedScripts.indexOf(script) > -1)\r\n// continue;\r\n// this.processedScripts.push(script);\r\n// let query = script.src.match(/\\?([^#]*)(#.*)?/);\r\n// this.query = !query ? '' : query[1];\r\n// this.origin = urlParser.protocol + '//' + urlParser.host;\r\n\r\n// if (urlParser.pathname) {\r\n// const pathname = ScriptUrlParser.fixIEPathname(urlParser.pathname);\r\n// const pi = pathname.lastIndexOf('/');\r\n// if (pi != -1) {\r\n// this.path = pathname.substring(0, pi + 1);\r\n// }\r\n// }\r\n\r\n// break;\r\n// }\r\n// }\r\n// }\r\n\r\n// private parse() {\r\n// let result: any = {};\r\n// let components = this.query.split('&');\r\n\r\n// for (let i = 0; i < components.length; i++) {\r\n// let pair = components[i].split('=');\r\n// let name = pair[0],\r\n// value = pair[1];\r\n// try {\r\n// name = decodeURIComponent(pair[0]);\r\n// }\r\n// catch (e) { }\r\n\r\n// if (!result[name])\r\n// result[name] = [];\r\n// // decode\r\n// if (!value)\r\n// value = 'true';\r\n// else {\r\n// try {\r\n// value = decodeURIComponent(value);\r\n// } catch (e) {\r\n// value = unescape(value);\r\n// }\r\n// }\r\n\r\n// // MacIE way\r\n// let values = result[name];\r\n// values[values.length] = value;\r\n// }\r\n// return result;\r\n// }\r\n\r\n// public flatten(): { [index: string]: string; } {\r\n// let queries = this.parse();\r\n// for (let name in queries)\r\n// queries[name] = queries[name][0];\r\n// return queries;\r\n// }\r\n\r\n// private isFromDomain(urlParser: HTMLAnchorElement, domains: Array): boolean {\r\n// for (var i = 0; i < domains.length; i++) {\r\n// var regexPattern = '^(.*\\.)?' + domains[i].replace('.', '\\.') + '$';\r\n// if (urlParser.hostname.match(regexPattern))\r\n// return true;\r\n// }\r\n\r\n// return false;\r\n// }\r\n\r\n// private getUrlParser(url: string): HTMLAnchorElement {\r\n// var urlParser = document.createElement('a');\r\n// urlParser.href = url;\r\n\r\n// return urlParser;\r\n// }\r\n// private static fixIEPathname(pathName: string): string { // workaround for IE pathname quirk, https://stackoverflow.com/questions/956233/javascript-pathname-ie-quirk\r\n// if (pathName && pathName.length && pathName.charAt(0) != '/') {\r\n// return '/' + pathName;\r\n// }\r\n// return pathName;\r\n// }\r\n\r\n// private getPort(urlParser: HTMLAnchorElement): string {\r\n// if ((urlParser.protocol == \"https:\" && urlParser.port == \"443\")\r\n// || (urlParser.protocol == \"http:\" && urlParser.port == \"80\"))\r\n// return '';\r\n// return ':' + urlParser.port;\r\n// }\r\n//}\r\n","import * as jscookie from 'js-cookie';\r\nimport { getDomainByLevel, getDomainLevel, getSubDomains, isSafari } from './helpers'\r\n\r\nexport function setCookie(testKey: string, value: string, options: jscookie.CookieAttributes): void {\r\n if (isSafari() && options.sameSite?.toLowerCase() === \"strict\")\r\n delete options.sameSite;\r\n\r\n jscookie.set(testKey, value, options);\r\n}\r\n\r\nexport function removeCookie(name: string, options: jscookie.CookieAttributes): void {\r\n if (isSafari() && options.sameSite?.toLowerCase() === \"strict\")\r\n delete options.sameSite;\r\n\r\n jscookie.remove(name, options);\r\n}\r\n\r\nexport function removeFromAllDomains(name: string, path: string = '/'): void {\r\n let domains = getSubDomains();\r\n\r\n if (jscookie.get(name) != undefined) {\r\n let options: jscookie.CookieAttributes = {\r\n domain: '',\r\n path: path,\r\n sameSite: \"strict\"\r\n };\r\n removeCookie(name, options);\r\n }\r\n let i = domains.length - 1;\r\n while (--i >= 0 && jscookie.get(name) != undefined)\r\n removeCookie(name, { domain: domains[i], path: path, sameSite: \"strict\" });\r\n}\r\n\r\nexport function canSet(domain: string, testKey: string = 'smartSignalsTest'): boolean {\r\n if (!navigator.cookieEnabled)\r\n return false;\r\n\r\n let value = new Date().valueOf().toString();\r\n try {\r\n try {\r\n let expires = new Date();\r\n expires.setSeconds(expires.getSeconds() + 5);\r\n setCookie(testKey, value, {\r\n domain: domain,\r\n expires: expires,\r\n sameSite: \"strict\"\r\n });\r\n\r\n return jscookie.get(testKey) === value;\r\n }\r\n finally {\r\n removeCookie(testKey, { domain: domain, sameSite: \"strict\" });\r\n }\r\n }\r\n catch (ignore) { }\r\n return false;\r\n}\r\n\r\n\r\nlet _cookiesEnabled: boolean;\r\nlet _friendlyDomain: FriendlyDomain;\r\n\r\nexport function cookiesEnabled(testKey: string = 'smartSignalsTest'): boolean {\r\n if (_cookiesEnabled !== undefined)\r\n return _cookiesEnabled;\r\n\r\n if (_friendlyDomain && _friendlyDomain.isSupported)\r\n return _cookiesEnabled = true;\r\n\r\n return _cookiesEnabled = canSet('', testKey);\r\n}\r\n\r\nexport type FriendlyDomain = {\r\n isSupported: boolean;\r\n level: number;\r\n name: string | undefined;\r\n}\r\n\r\nexport function findFriendlyDomain(testKey: string = 'smartSignalsTest'): FriendlyDomain {\r\n if (_friendlyDomain)\r\n return _friendlyDomain;\r\n\r\n if (_cookiesEnabled === false)\r\n return _friendlyDomain = { isSupported: false, level: -1, name: undefined };\r\n\r\n let domains = getSubDomains();\r\n\r\n for (let i = 0; i < domains.length; i++) {\r\n if (canSet(domains[i], testKey)) {\r\n return _friendlyDomain = {\r\n isSupported: true,\r\n name: domains[i],\r\n level: i\r\n }\r\n }\r\n }\r\n return _friendlyDomain = { isSupported: false, level: -1, name: undefined };\r\n}\r\n\r\nexport function findFriendlyDomainLevel(testKey: string = 'smartSignalsTest'): number {\r\n let cfd = findFriendlyDomain(testKey);\r\n return cfd.level;\r\n}\r\n\r\nexport function getCookieDomainByLevel(level: number, domain?: string): string {\r\n let ddl: number;\r\n if (level < 0) {\r\n let cdl = getDomainLevel(domain);\r\n ddl = Math.max(cdl + level, 0);\r\n }\r\n else\r\n ddl = level;\r\n return getDomainByLevel(ddl, domain)!;\r\n}\r\n","import { IUserIdProvider } from \"./IUserIdProvider\";\r\nimport { IUserIdProviderManager } from \"./IUserIdProviderManager\";\r\n\r\nexport class UserIdProviderManager implements IUserIdProviderManager {\r\n private userIdProviders: { [name: string]: IUserIdProvider } = {};\r\n\r\n public register(name: string, userIdProvider: IUserIdProvider): void {\r\n if (!userIdProvider)\r\n return;\r\n\r\n this.userIdProviders[name] = userIdProvider;\r\n }\r\n\r\n public getProviderByName(name: string): IUserIdProvider {\r\n return this.userIdProviders[name];\r\n }\r\n\r\n public getProviders(): ({ [name: string]: IUserIdProvider }) {\r\n return this.userIdProviders;\r\n }\r\n\r\n public unregister(name: string): void {\r\n delete this.userIdProviders[name];\r\n }\r\n}\r\n","import * as jscookie from 'js-cookie';\r\nimport { UserIdProviderType, UserId, UserSampling, ClientSampling } from '../../api/client/clientApi';\r\nimport { IUserIdProvider } from './IUserIdProvider';\r\nimport { createTempUserId } from '../../lib/helpers';\r\nimport { findFriendlyDomain, FriendlyDomain, getCookieDomainByLevel, setCookie } from '../../lib/cookieHelpers';\r\nimport { IProfileDebuggerData, ISamplinData } from '../IEngine';\r\n\r\ninterface IUserData {\r\n //dealer flag\r\n d: boolean;\r\n //xdm check timestamp\r\n xts: number;\r\n lt?: number;\r\n\r\n s?: ISamplinData;\r\n\r\n pd?: IProfileDebuggerData;\r\n}\r\n\r\nexport class LocalUserIdProvider implements IUserIdProvider {\r\n private name: string;\r\n private token: string;\r\n private domain!: FriendlyDomain;\r\n private userId: string | undefined;\r\n private data: IUserData;\r\n\r\n public constructor(name: string, token: string, extendlifeTime: boolean) {\r\n this.name = name;\r\n this.token = token;\r\n this.data = { d: false, xts: 1 };\r\n this.processCookieValues();\r\n\r\n if (extendlifeTime) {\r\n\r\n this.persist();\r\n\r\n setInterval(() => {\r\n this.persist();\r\n }, 10 * 60 * 1000);\r\n }\r\n }\r\n\r\n public getType(): UserIdProviderType {\r\n return UserIdProviderType.Local;\r\n }\r\n\r\n private getName(): string {\r\n return this.name;\r\n }\r\n\r\n public getUserId(): Promise {\r\n if (this.userId)\r\n return Promise.resolve({ id: this.userId, name: this.getName(), type: this.getType() });\r\n\r\n this.userId = createTempUserId();\r\n\r\n return this.setUserId(this.userId, 30).then(() => {\r\n return { id: this.userId, name: this.getName(), type: this.getType() };\r\n });\r\n }\r\n\r\n public setUserId(userId: string, lifeTime?: number): Promise {\r\n if (this.update(userId, lifeTime))\r\n return Promise.resolve();\r\n else\r\n return Promise.reject(undefined);\r\n }\r\n\r\n public get isDealer(): boolean {\r\n return this.data.d;\r\n }\r\n\r\n public set isDealer(value: boolean) {\r\n this.data.d = value;\r\n this.persist();\r\n }\r\n\r\n public setSampling(sampling?: UserSampling) {\r\n if (!sampling)\r\n return;\r\n\r\n this.data.s = {\r\n s: sampling.selected,\r\n v: sampling.ratioVersion,\r\n ts: new Date().valueOf()\r\n };\r\n\r\n return this.persist();\r\n }\r\n\r\n public getSamplingData(): ISamplinData | undefined {\r\n return this.data.s;\r\n }\r\n\r\n public getClientSampling(): ClientSampling | undefined {\r\n const sd = this.data.s;\r\n if (!sd)\r\n return undefined;\r\n\r\n return {\r\n selected: sd.s,\r\n ratioVersion: sd.v\r\n };\r\n }\r\n\r\n public get lastXdmCheck(): number {\r\n return this.data.xts;\r\n }\r\n\r\n public set lastXdmCheck(value: number) {\r\n this.data.xts = value;\r\n this.persist();\r\n }\r\n\r\n public isSupported(): boolean {\r\n return this.domain.isSupported;\r\n }\r\n\r\n private stringify(): string {\r\n return (this.userId || '') + '|' + this.domain.level + '|' + btoa(JSON.stringify(this.data));\r\n }\r\n\r\n private update(userId?: string, lifeTime?: number): boolean {\r\n if (!userId)\r\n return false;\r\n\r\n this.userId = userId;\r\n this.data.lt = lifeTime;\r\n\r\n return this.persist();\r\n }\r\n\r\n public persist(): boolean {\r\n if (!this.isSupported())\r\n return false;\r\n try {\r\n\r\n let options: jscookie.CookieAttributes = {\r\n domain: this.domain.name,\r\n path: '/',\r\n expires: this.data.lt || 365,\r\n sameSite: \"strict\"\r\n };\r\n\r\n setCookie(this.token, this.stringify(), options);\r\n return true;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n public readCookie() {\r\n let value = jscookie.get(this.token);\r\n return value;\r\n }\r\n\r\n private processCookieValues(): void {\r\n let value = jscookie.get(this.token);\r\n if (!value) {\r\n this.domain = findFriendlyDomain();\r\n return;\r\n }\r\n let tokens = value.split('|');\r\n if (tokens.length < 1) {\r\n this.domain = findFriendlyDomain();\r\n return;\r\n }\r\n this.userId = tokens[0];\r\n\r\n if (tokens.length > 1) {\r\n try {\r\n let level = parseInt(tokens[1]);\r\n this.domain = {\r\n isSupported: true,\r\n level: level,\r\n name: getCookieDomainByLevel(level)\r\n };\r\n }\r\n catch {\r\n this.domain = findFriendlyDomain();\r\n }\r\n }\r\n else {\r\n this.domain = findFriendlyDomain();\r\n //this.update();\r\n }\r\n if (tokens.length > 2) {\r\n try {\r\n this.data = JSON.parse(atob(tokens[2]));\r\n } catch {\r\n\r\n }\r\n }\r\n }\r\n\r\n // public setProfileDebuggerState(debuggerState: number, height?: string) {\r\n\r\n // this.data.pd = {\r\n // ht: height || this.data.pd?.ht || '37vh',\r\n // s: debuggerState\r\n // };\r\n\r\n // return this.persist();\r\n // }\r\n\r\n // public getProfileDebuggerConfig(): IProfileDebuggerData {\r\n // return this.data.pd || {\r\n // s: 0,\r\n // ht: '37vh'\r\n // };\r\n // }\r\n}\r\n","import { UserId, UserIdProviderType, ClientApi, UserCookieModel } from '../../api/client/clientApi';\r\nimport { RequestType } from '../../SmartSignalsProfileDebugger/types/TrackingRequestResponseData';\r\nimport { IEngine } from '../IEngine';\r\nimport { IUserIdProvider } from './IUserIdProvider';\r\n\r\nexport class ServerSideUserIdProvider implements IUserIdProvider {\r\n private name: string;\r\n private clientApi: ClientApi;\r\n\r\n private userId?: string;\r\n private cookieName: string;\r\n private lifeTime?: number;\r\n private engine: IEngine;\r\n\r\n public constructor(engineUrl: string, cookieName: string, name: string, engine: IEngine) {\r\n this.clientApi = new ClientApi(engineUrl, true);\r\n this.cookieName = cookieName;\r\n this.name = name;\r\n this.engine = engine;\r\n }\r\n\r\n public getType(): UserIdProviderType {\r\n return UserIdProviderType.LocalServerSide;\r\n }\r\n\r\n public getUserId(): Promise {\r\n if (this.userId) {\r\n return Promise.resolve({ id: this.userId, name: this.name, type: this.getType() })\r\n }\r\n return this.engine.trackApiCall(RequestType.Identity, { cookieName: this.cookieName }, this.clientApi.userCookie_Get_3(this.cookieName, false))\r\n .then(data => {\r\n this.userId = data.value;\r\n this.lifeTime = data.lifeTime;\r\n return { id: this.userId, name: this.name, type: this.getType() };\r\n });\r\n }\r\n\r\n public getCrossDomainCookie(): Promise {\r\n return this.engine.trackApiCall(RequestType.Identity, { cookieName: this.cookieName }, this.clientApi.userCookie_Get_3(this.cookieName, true));\r\n }\r\n\r\n public setUserId(userId: string, lifeTime?: number): Promise {\r\n if (this.userId === userId && this.lifeTime === lifeTime) {\r\n return Promise.resolve();\r\n }\r\n let model = { value: userId, lifeTime: lifeTime };\r\n return this.engine.trackApiCall(RequestType.Identity, { cookieName: this.cookieName, model: model }, this.clientApi.userCookie_Put_3(this.cookieName, model))\r\n .then(() => {\r\n this.userId = userId;\r\n this.lifeTime = lifeTime;\r\n });\r\n }\r\n}\r\n","import { tryDelete } from \"../../lib/helpers\";\r\n\r\nexport class EventSourceManager {\r\n private eventSources: ({ [name: string]: IEventSource }) = {};\r\n\r\n public register(name: string, eventSource: IEventSource) {\r\n if (!eventSource)\r\n return;\r\n\r\n this.eventSources[name] = eventSource;\r\n eventSource.register();\r\n }\r\n\r\n public get(name: string): IEventSource {\r\n return this.eventSources[name];\r\n }\r\n\r\n public unregister(name: string): void {\r\n let eventSource = this.eventSources[name];\r\n if (!eventSource)\r\n return;\r\n\r\n eventSource.unregister();\r\n tryDelete(this.eventSources, name);\r\n }\r\n}\r\n\r\n","import { Engine } from '../engine';\r\n\r\nexport var EventTypes = {\r\n PageView: \"PageView\",\r\n HashChange: \"HashChange\",\r\n SetVariable: \"SetVariable\",\r\n OffsiteTracking: \"OffsiteTracking\",\r\n HistoryPushState: \"HistoryPushState\",\r\n HistoryReplaceState: \"HistoryReplaceState\",\r\n PageHidden: \"PageHidden\",\r\n PageVisible: \"PageVisible\",\r\n PageClose: \"PageClose\",\r\n XTrack: \"XTrack\",\r\n};\r\n\r\nexport class EventSource {\r\n protected engine: Engine;\r\n\r\n protected isRegistered: boolean = false;\r\n\r\n constructor(engine: Engine) {\r\n this.engine = engine;\r\n }\r\n\r\n public register(): boolean {\r\n if (this.isRegistered)\r\n throw new Error('Already register');\r\n\r\n this.isRegistered = this.doRegister();\r\n return this.isRegistered;\r\n }\r\n\r\n protected doRegister(): boolean {\r\n throw new Error('abstract');\r\n }\r\n\r\n public unregister(): void {\r\n if (!this.isRegistered)\r\n return;\r\n this.isRegistered = false;\r\n this.doUnregister();\r\n }\r\n\r\n protected doUnregister() {\r\n throw new Error('abstract');\r\n }\r\n}\r\n","import { Engine } from '../engine';\r\nimport * as EventSource from './EventSource';\r\n\r\nexport class PageViewSource extends EventSource.EventSource {\r\n constructor(engine: Engine) {\r\n super(engine);\r\n }\r\n\r\n protected doRegister() {\r\n setTimeout(() => {\r\n //this.engine.track(EventTypes.PageView);\r\n this.engine.push({ event: \"General.Load\" });\r\n }, 0);\r\n return true;\r\n }\r\n\r\n protected doUnregister() {\r\n }\r\n}\r\n","import { Engine } from '../engine';\r\nimport * as EventSource from './EventSource';\r\n\r\nexport class URLSourceChange extends EventSource.EventSource {\r\n\r\n private pollingTimer: number | undefined;\r\n constructor(engine: Engine) {\r\n super(engine);\r\n }\r\n private currentHash = location.hash;\r\n private currentURL = location.pathname + \"?\" + location.search;\r\n private timeID: number | undefined;\r\n private pushStateOrig?: typeof history.pushState;\r\n private replaceStateOrig?: typeof history.replaceState;\r\n private historyApiHook: boolean = false;\r\n\r\n\r\n protected doRegister() {\r\n let that = this;\r\n if (!('onhashchange' in (window))) {\r\n (() => {\r\n let oldHref = location.href;\r\n\r\n this.pollingTimer = window.setInterval(() => {\r\n let newHref = location.href;\r\n if (oldHref !== newHref) {\r\n let _oldHref = oldHref;\r\n oldHref = newHref;\r\n\r\n this.hashChange.call(window);\r\n }\r\n }, 100);\r\n })();\r\n }\r\n else if (window.addEventListener)\r\n window.addEventListener(\"hashchange\", this.hashChange, false);\r\n else if ((window).attachEvent)\r\n (window).attachEvent(\"onhashchange\", this.hashChange);\r\n if (window.addEventListener)\r\n window.addEventListener(\"popstate\", this.popState, false);\r\n else if ((window).attachEvent)\r\n (window).attachEvent(\"onpopstate\", this.popState);\r\n if (window.history && !!window.history.pushState && !!window.history.replaceState) {\r\n this.pushStateOrig = history.pushState;\r\n history.pushState = function (this: any, ...args) {\r\n var res = that.pushStateOrig!.apply(this, args);\r\n try {\r\n if (that.currentURL === location.pathname + \"?\" + location.search && that.currentHash === location.hash)\r\n return;\r\n //that.engine.track(EventTypes.HistoryPushState);\r\n that.engine.push({ event: \"General.URLChange\" });\r\n\r\n that.currentURL = location.pathname + \"?\" + location.search;\r\n that.currentHash = location.hash;\r\n }\r\n catch (e) { }\r\n\r\n return res;\r\n }\r\n\r\n this.replaceStateOrig = history.replaceState;\r\n history.replaceState = function (this: any, ...args) {\r\n var res = that.replaceStateOrig!.apply(this, args);\r\n try {\r\n if (that.currentURL === location.pathname + \"?\" + location.search && that.currentHash === location.hash)\r\n return;\r\n //that.engine.track(EventTypes.HistoryReplaceState);\r\n that.engine.push({ event: \"General.URLChange\" });\r\n\r\n that.currentURL = location.pathname + \"?\" + location.search;\r\n that.currentHash = location.hash;\r\n }\r\n catch (e) { }\r\n\r\n return res;\r\n }\r\n this.historyApiHook = true;\r\n }\r\n return true;\r\n }\r\n\r\n protected doUnregister() {\r\n if (!('onhashchange' in window)) {\r\n if (this.pollingTimer)\r\n clearInterval(this.pollingTimer);\r\n this.pollingTimer = undefined;\r\n } else if (window.removeEventListener)\r\n window.removeEventListener(\"hashchange\", this.hashChange, false);\r\n else if ((window).attachEvent)\r\n (window).detachEvent(\"onhashchange\", this.hashChange);\r\n\r\n if (window.removeEventListener)\r\n window.removeEventListener(\"popstate\", this.popState, false);\r\n else if ((window).attachEvent)\r\n (window).detachEvent(\"onpopstate\", this.popState);\r\n if (this.historyApiHook) {\r\n history.pushState = this.pushStateOrig!;\r\n history.replaceState = this.replaceStateOrig!;\r\n }\r\n }\r\n\r\n\r\n private hashChange = () => {\r\n if (this.currentHash === location.hash)\r\n return;\r\n //this.engine.track(EventTypes.HashChange);\r\n this.engine.push({ event: \"General.URLChange\" });\r\n if (this.timeID) {\r\n clearTimeout(this.timeID);\r\n this.timeID = undefined;\r\n }\r\n this.currentURL = location.pathname + \"?\" + location.search;;\r\n this.currentHash = location.hash;\r\n\r\n };\r\n\r\n private popState = (ev: PopStateEvent) => {\r\n if (this.currentURL === location.pathname + \"?\" + location.search && this.currentHash === location.hash)\r\n return;\r\n this.timeID = window.setTimeout(() => {\r\n //this.engine.track(EventTypes.HistoryPushState);\r\n this.engine.push({ event: \"General.URLChange\" });\r\n this.currentURL = location.pathname + \"?\" + location.search;\r\n this.currentHash = location.hash;\r\n }, 0);\r\n };\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport * as overlayActionHandler from './OverlayActionHandler';\r\nimport { FinalIssuedAction } from '../../api/client/clientApi';\r\nimport { IEngine } from '../IEngine';\r\nimport { getPureUrl } from '../../lib/helpers';\r\nimport { ILogger } from '../../lib/logger';\r\nimport { CollectionActionGroupsProvider } from './CollectionActionGroupsProvider/CollectionActionGroupsProvider';\r\nimport { HandlingState } from '../../SmartSignalsProfileDebugger/resources/models/HandlingState';\r\n\r\nexport class OverlayActionHandlerProxy extends ActionHandler {\r\n handler: overlayActionHandler.OverlayActionHandler | undefined;\r\n handlerPromise: Promise | undefined;\r\n\r\n constructor(engine: IEngine,\r\n private logger: ILogger, private _collectionActionGroupsProvider: CollectionActionGroupsProvider) {\r\n super(engine);\r\n }\r\n\r\n private static isBrowserSupported() {\r\n try {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n var isIeLessThan8 = (div.getElementsByTagName(\"i\").length == 1);\r\n return !isIeLessThan8;\r\n }\r\n catch (ignore) { }\r\n return false;\r\n }\r\n\r\n protected handleAction(issuedObject: SmartSignals.Models.Issued) {\r\n if (!OverlayActionHandlerProxy.isBrowserSupported()) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n this.engine.unissuedAction(issuedObject);\r\n return;\r\n }\r\n\r\n let action = issuedObject;\r\n if (action.triggerUrl && getPureUrl(action.triggerUrl) !== getPureUrl(window.location.href)) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n this.engine.unissuedAction(action);\r\n return;\r\n }\r\n\r\n if (this.handler) {\r\n this.handler.handleAction(issuedObject);\r\n return;\r\n } else if (this.handlerPromise) {\r\n this.handlerPromise.then(handler => {\r\n handler.handleAction(issuedObject);\r\n });\r\n return;\r\n }\r\n this.handlerPromise = import(/* webpackChunkName: \"overlay\" */ './OverlayActionHandler').then(handler => {\r\n this.handler = new handler.OverlayActionHandler(this.engine, this.logger, this._collectionActionGroupsProvider);\r\n\r\n this.handler.handleAction(issuedObject);\r\n return this.handler;\r\n });\r\n }\r\n\r\n public showActions(hideGroup?: string): void {\r\n const handler = this.handler as overlayActionHandler.OverlayActionHandler;\r\n if (handler) {\r\n handler.showActions(hideGroup);\r\n }\r\n }\r\n\r\n public hideActions(hideGroup?: string): void {\r\n const handler = this.handler as overlayActionHandler.OverlayActionHandler;\r\n if (handler) {\r\n handler.hideActions(hideGroup);\r\n }\r\n }\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport * as jscookie from 'js-cookie';\r\nimport { IEngine } from '../IEngine';\r\nimport { findFriendlyDomain, removeFromAllDomains, setCookie } from '../../lib/cookieHelpers';\r\nimport { ILogger } from '../../lib/logger';\r\nimport { HandlingState } from '../../SmartSignalsProfileDebugger/resources/models/HandlingState';\r\n\r\ninterface CookieConfiguration {\r\n cookieName?: string,\r\n cookieValue?: string,\r\n expireDays?: number\r\n}\r\n\r\nexport class CookieActionHandler extends ActionHandler {\r\n\r\n constructor(engine: IEngine, private logger: ILogger,\r\n private ignoreControlGroupValue: boolean = false) {\r\n super(engine);\r\n }\r\n\r\n protected handleAction(issuedObject: SmartSignals.Models.Issued) {\r\n if (issuedObject.isInControlGroup && !this.ignoreControlGroupValue) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n return;\r\n }\r\n let conf = issuedObject.conf;\r\n if (conf && conf.cookieName && conf.cookieValue) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Executed);\r\n this.setCookie(conf.cookieName, conf.cookieValue, conf.expireDays);\r\n }\r\n }\r\n\r\n private setCookie(cookieName: string, cookieValue: string, expireDays?: number) {\r\n let cookieAttrs: jscookie.CookieAttributes;\r\n removeFromAllDomains(cookieName);\r\n cookieAttrs = {\r\n domain: findFriendlyDomain().name,\r\n expires: expireDays,\r\n path: \"/\",\r\n sameSite: \"strict\"\r\n }\r\n\r\n setCookie(cookieName, cookieValue, cookieAttrs);\r\n }\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport { IEngine } from '../IEngine';\r\nimport { insertHTMLAndExecute, whenBodyReady } from '../../lib/helpers';\r\nimport { ILogger } from '../../lib/logger';\r\nimport { HandlingState } from '../../SmartSignalsProfileDebugger/resources/models/HandlingState';\r\n\r\ninterface HtmlConfiguration {\r\n html?: string\r\n}\r\n\r\nexport class InjectHTMLActionHandler extends ActionHandler {\r\n\r\n constructor(engine: IEngine, private logger: ILogger) {\r\n super(engine);\r\n }\r\n\r\n protected handleAction(issuedObject: SmartSignals.Models.Issued) {\r\n if (issuedObject.isInControlGroup) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n return;\r\n }\r\n let conf = issuedObject.conf;\r\n whenBodyReady(() => {\r\n if (!conf || !conf.html) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n return;\r\n }\r\n\r\n super.handligStateChange(issuedObject.id, HandlingState.Executed);\r\n\r\n let e = document.createElement('div');\r\n document.body.appendChild(e);\r\n insertHTMLAndExecute(e, conf.html);\r\n });\r\n }\r\n}\r\n","import { ActionHandler, IOpenedActionBase } from './ActionHandler';\r\nimport { IEngine } from '../IEngine';\r\nimport { FinalIssuedAction, IssuedInjectScriptAction } from '../../api/client/clientApi';\r\nimport { whenBodyReady, getPureUrl, lastN } from '../../lib/helpers';\r\nimport { ILogger } from '../../lib/logger';\r\nimport { CollectionActionGroupsProvider } from './CollectionActionGroupsProvider/CollectionActionGroupsProvider';\r\nimport { HandlingState } from '../../SmartSignalsProfileDebugger/resources/models/HandlingState';\r\n\r\ntype ElementType = 'Core' | 'Dynamic' | 'Css';\r\n\r\nexport class InjectScriptActionHandler extends ActionHandler {\r\n private lastTwenty = lastN(20, [], x => x.actionId!);\r\n\r\n constructor(engine: IEngine, private logger: ILogger, private _collectionActionGroupsProvider: CollectionActionGroupsProvider,\r\n private ignoreControlGroupValue: boolean = false) {\r\n super(engine);\r\n }\r\n\r\n protected handleAction(issuedObject: SmartSignals.Models.Issued) {\r\n if (issuedObject.isInControlGroup && !this.ignoreControlGroupValue) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n return;\r\n }\r\n\r\n const action = issuedObject as FinalIssuedAction;\r\n const conf = action.conf as IssuedInjectScriptAction;\r\n\r\n if (action.actionId != undefined && conf.collectionActionGroups && conf.collectionActionGroups.length && this._collectionActionGroupsProvider.isCollectionActionGroupsActive(conf.collectionActionGroups)) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n this.engine.unissuedAction(action);\r\n return;\r\n }\r\n\r\n if (!conf.allowAsynchronousProcessing && action.triggerUrl && getPureUrl(action.triggerUrl) !== getPureUrl(window.location.href)) {\r\n super.handligStateChange(issuedObject.id, HandlingState.Rejected);\r\n this.engine.unissuedAction(action);\r\n return;\r\n }\r\n this.lastTwenty.add(action);\r\n this.inject(conf, issuedObject.id);\r\n }\r\n\r\n public onActionClosed() {\r\n //CollectionActionGroupsProvider.clearCollectionActionGroups(conf.collectionActionGroups);\r\n }\r\n\r\n private inject(conf: IssuedInjectScriptAction, id?: string) {\r\n if (!conf) {\r\n super.handligStateChange(id, HandlingState.Rejected);\r\n return;\r\n }\r\n\r\n super.handligStateChange(id, HandlingState.Executed);\r\n\r\n this._collectionActionGroupsProvider.activateCollectionActionGroups(conf.collectionActionGroups, conf.actionId);\r\n\r\n const injectors = new Array(\r\n () => this.removeOldElements(conf.actionId!)\r\n );\r\n\r\n if (conf.css)\r\n injectors.push(() => this.injectCss(conf.css!, this.createElementId(conf.actionId!, 'Css')));\r\n\r\n if (conf.coreScript)\r\n injectors.push(() => this.injectScript(conf.coreScript!, conf.isCoreModule, this.createElementId(conf.actionId!, 'Core')));\r\n\r\n if (conf.script)\r\n injectors.push(() => this.injectScript(conf.script!, conf.isModule, this.createElementId(conf.actionId!, 'Dynamic')));\r\n\r\n whenBodyReady(() => {\r\n injectors.forEach(exec => exec());\r\n });\r\n }\r\n\r\n private injectScript(script: string, isModule: boolean, elementId?: string) {\r\n const e = document.createElement('script');\r\n if (isModule)\r\n e.type = \"module\";\r\n e.text = script;\r\n if (elementId)\r\n e.id = elementId;\r\n document.body.appendChild(e);\r\n }\r\n\r\n private injectCss(css: string, elementId?: string) {\r\n const style = document.createElement('style');\r\n style.type = 'text/css';\r\n if (elementId)\r\n style.id = elementId;\r\n style.appendChild(\r\n document.createTextNode(css));\r\n\r\n document.head.appendChild(style);\r\n }\r\n\r\n private createElementId(id: string, type: ElementType): string | undefined {\r\n if (!id)\r\n return undefined;\r\n return 'config.' + id + '_script' + type\r\n }\r\n\r\n private removeOldElements(id: string): void {\r\n if (!id)\r\n return;\r\n for (const type of new Array('Core', 'Dynamic', 'Css')) {\r\n const eid = this.createElementId(id, type);\r\n if (eid)\r\n document.getElementById(eid)?.remove();\r\n }\r\n }\r\n\r\n public getTriggeredAction(actionId: string) {\r\n const action = this.lastTwenty.get(actionId);\r\n if (action) {\r\n return {\r\n triggerUrl: action.triggerUrl,\r\n testMode: action.testMode\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n public registerDisplayPrevention(actionId: string, isModal: boolean, domElement: HTMLElement | undefined, showCallback: (() => void) | undefined, hideCallback: (() => void) | undefined, scope: any): (() => void) | undefined {\r\n const action = this.lastTwenty.get(actionId);\r\n\r\n if (!isModal && !domElement) {\r\n console.warn(\"SMASI registerNonModalDisplayPrevention: missing 'domElement' value\");\r\n return undefined;\r\n }\r\n\r\n if (!action)\r\n return undefined;\r\n\r\n scope = scope ?? domElement;\r\n showCallback = showCallback?.bind(scope);\r\n hideCallback = hideCallback?.bind(scope);\r\n\r\n if (!action.pageElementDetection?.querySelectors?.length) {\r\n showCallback?.();\r\n return () => { };\r\n }\r\n\r\n let disposed = false;\r\n\r\n let stopElmDetection = () => {\r\n if (disposed)\r\n return;\r\n\r\n clearTimeout(openedAction.timeoutId);\r\n window.removeEventListener('load', checkVisibility, false);\r\n window.removeEventListener('scroll', checkVisibility, false);\r\n window.removeEventListener('resize', checkVisibility, false);\r\n if (openedAction.resizeObserver) {\r\n openedAction.resizeObserver.disconnect();\r\n openedAction.resizeObserver = undefined;\r\n }\r\n if (openedAction.removeObserver) {\r\n openedAction.removeObserver.disconnect();\r\n openedAction.removeObserver = undefined;\r\n }\r\n disposed = true;\r\n };\r\n\r\n const openedAction: IOpenedActionBase = {\r\n action: action,\r\n actionOpenedOnOrigin: location.origin,\r\n actionOpenedOnPath: location.pathname,\r\n timeoutId: 0,\r\n stopElementDetection: stopElmDetection\r\n }\r\n\r\n const checkVisibility = () => this.startThrottling(\r\n openedAction,\r\n isModal,\r\n domElement?.getBoundingClientRect(),\r\n showCallback,\r\n hideCallback\r\n );\r\n\r\n window.addEventListener('load', checkVisibility, false);\r\n window.addEventListener('scroll', checkVisibility, false);\r\n window.addEventListener('resize', checkVisibility, false);\r\n\r\n if (domElement) {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n let resizeObserver = new ResizeObserver(() => checkVisibility());\r\n resizeObserver.observe(domElement);\r\n openedAction.resizeObserver = resizeObserver;\r\n }\r\n\r\n if (domElement.parentNode && typeof MutationObserver !== 'undefined') {\r\n var removeObserver = new MutationObserver((mrs) => {\r\n for (let mr of mrs) {\r\n for (let i = 0; i < mr.removedNodes.length; i++) {\r\n var rn = mr.removedNodes[i];\r\n if (rn === domElement) {\r\n stopElmDetection();\r\n }\r\n }\r\n }\r\n });\r\n\r\n removeObserver.observe(domElement.parentNode, { childList: true, subtree: false });\r\n openedAction.removeObserver = removeObserver;\r\n }\r\n }\r\n\r\n checkVisibility();\r\n\r\n return stopElmDetection;\r\n }\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport { IEngine } from '../IEngine';\r\nimport { whenBodyReady } from '../../lib/helpers';\r\nimport { ILogger } from '../../lib/logger';\r\n\r\ninterface PixelConfiguration {\r\n url?: string,\r\n alt?: string\r\n}\r\nexport class PixelActionHandler extends ActionHandler {\r\n\r\n constructor(engine: IEngine, private logger: ILogger,\r\n private ignoreControlGroupValue: boolean = false) {\r\n super(engine);\r\n }\r\n\r\n protected handleAction(issuedObject: SmartSignals.Models.Issued) {\r\n if (issuedObject.isInControlGroup && !this.ignoreControlGroupValue)\r\n return;\r\n const conf = issuedObject.conf;\r\n if (conf && conf.url) {\r\n this.setPixel(conf.url, conf.alt);\r\n }\r\n }\r\n\r\n private setPixel(url: string, alt?: string) {\r\n whenBodyReady(() => {\r\n let img = document.createElement('img');\r\n img.src = url;\r\n if (alt)\r\n img.alt = alt;\r\n img.height = 0;\r\n img.width = 0;\r\n img.style.display = 'none'\r\n document.body.appendChild(img);\r\n });\r\n }\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport { tryDelete } from '../../lib/helpers';\r\nimport { ActionType } from '../../api/client/clientApi';\r\n\r\nexport class ActionHandlerManager {\r\n private actionHandlers: ({ [actionType: number]: ActionHandler }) = {};\r\n\r\n public register(actionType: ActionType, actionHandler: ActionHandler) {\r\n if (!actionHandler)\r\n return;\r\n\r\n this.actionHandlers[actionType] = actionHandler;\r\n }\r\n\r\n public get(actionType: ActionType): ActionHandler {\r\n return this.actionHandlers[actionType];\r\n }\r\n\r\n public unregister(actionType: ActionType): void {\r\n let actionHandler = this.actionHandlers[actionType];\r\n if (!actionHandler)\r\n return;\r\n\r\n tryDelete(this.actionHandlers, actionType);\r\n }\r\n}\r\n","import { ClientApi, ErrorInfo, LogModel, LogContext, SeverityLogLevel, LogType } from '../api/client/clientApi';\r\nimport { isPrimitive } from './helpers';\r\n\r\nexport interface LogInfo {\r\n message?: string;\r\n data?: any;\r\n error?: any;\r\n context?: LogContext;\r\n}\r\n\r\nexport interface ILogger {\r\n info(data: LogInfo): void;\r\n warn(data: LogInfo): void;\r\n error(data: LogInfo): void;\r\n write(severity: SeverityLogLevel, data: LogInfo): void;\r\n}\r\n\r\nexport class Logger implements ILogger {\r\n private clientApi: ClientApi;\r\n private getContext: () => LogContext;\r\n\r\n private readonly _external: ILogger;\r\n\r\n public get external(): ILogger {\r\n return this._external;\r\n }\r\n\r\n constructor(clientApi: ClientApi, getContext: () => LogContext) {\r\n this.clientApi = clientApi;\r\n this.getContext = getContext;\r\n\r\n this._external = new LoggerWrapper(this, LogType.External);\r\n }\r\n\r\n public info(data: LogInfo) {\r\n this.writeInternal(SeverityLogLevel.Info, data, LogType.Internal);\r\n }\r\n\r\n public warn(data: LogInfo) {\r\n this.writeInternal(SeverityLogLevel.Warn, data, LogType.Internal);\r\n }\r\n\r\n public error(data: LogInfo) {\r\n this.writeInternal(SeverityLogLevel.Error, data, LogType.Internal);\r\n }\r\n\r\n public write(severity: SeverityLogLevel, data: LogInfo) {\r\n this.writeInternal(severity, data, LogType.Internal);\r\n }\r\n\r\n public writeInternal(severity: SeverityLogLevel, data: LogInfo, logType: LogType) {\r\n if (!data)\r\n return;\r\n try {\r\n let errorInfo: ErrorInfo | undefined;\r\n let error = data.error;\r\n\r\n if (error !== undefined) {\r\n if (error instanceof Error) {\r\n errorInfo = {\r\n message: error.message,\r\n name: error.name,\r\n stack: error.stack\r\n }\r\n }\r\n else if (typeof error == 'string') {\r\n errorInfo = {\r\n message: error\r\n }\r\n }\r\n else if (isPrimitive(error)) {\r\n errorInfo = {\r\n message: error.toString()\r\n }\r\n }\r\n }\r\n\r\n let defaultContext = this.getContext();\r\n\r\n let context = {\r\n ...defaultContext,\r\n ...data.context\r\n };\r\n\r\n let logModel: LogModel = {\r\n context: context,\r\n logType: logType,\r\n severityLogLevel: severity,\r\n message: data.message,\r\n data: data.data,\r\n errorInfo: errorInfo\r\n }\r\n\r\n this.clientApi.log_Post_3(logModel);\r\n }\r\n catch (e) { }\r\n }\r\n\r\n public setListener(): void {\r\n try {\r\n window.addEventListener('error', (e) => {\r\n try {\r\n if (e.filename && e.filename.indexOf('smartsignals2', 0) != -1 && e.error) {\r\n this.error({\r\n message: 'Unhandled exception',\r\n error: e.error\r\n });\r\n }\r\n }\r\n catch (e) { }\r\n });\r\n }\r\n catch (e) { }\r\n }\r\n}\r\n\r\n\r\nexport class LoggerWrapper implements ILogger {\r\n constructor(private logger: Logger, private logType: LogType) {\r\n }\r\n\r\n public info(data: LogInfo): void {\r\n this.logger.writeInternal(SeverityLogLevel.Info, data, this.logType);\r\n }\r\n\r\n public warn(data: LogInfo): void {\r\n this.logger.writeInternal(SeverityLogLevel.Warn, data, this.logType);\r\n }\r\n\r\n public error(data: LogInfo): void {\r\n this.logger.writeInternal(SeverityLogLevel.Error, data, this.logType);\r\n }\r\n\r\n public write(severity: SeverityLogLevel, data: LogInfo): void {\r\n this.logger.writeInternal(severity, data, this.logType);\r\n }\r\n}\r\n","import * as jschannel from \"@greenova/jschannel\";\r\nimport { whenBodyReady } from './helpers';\r\n\r\nexport class XdmProvider {\r\n\r\n private jsChannel?: Promise;\r\n private scopeName: string;\r\n private iframe: HTMLIFrameElement | undefined;\r\n private iframeSrc: string;\r\n\r\n constructor(scopeName: string, iframeSrc: string) {\r\n this.iframeSrc = iframeSrc;\r\n this.scopeName = scopeName;\r\n\r\n this.jsChannel = this.createChannel();\r\n }\r\n\r\n public destroy(): void {\r\n if (this.jsChannel)\r\n this.jsChannel.then(channel => {\r\n channel.destroy();\r\n\r\n if (this.iframe)\r\n document.body.removeChild(this.iframe);\r\n\r\n delete this.jsChannel;\r\n delete this.iframe;\r\n }); \r\n }\r\n\r\n private createChannel(): Promise {\r\n return new Promise((resolve, reject) => {\r\n whenBodyReady(() => {\r\n this.iframe = document.createElement('iframe');\r\n this.iframe.src = this.iframeSrc;\r\n this.iframe.hidden = true;\r\n this.iframe.style.display = \"none\";\r\n this.iframe.style.width = \"0\";\r\n this.iframe.style.height = \"0\";\r\n this.iframe.style.border = \"0\";\r\n\r\n document.body.appendChild(this.iframe);\r\n\r\n var channConfig: jschannel.ChannelConfig = {\r\n window: this.iframe.contentWindow!,\r\n origin: \"*\",\r\n scope: this.scopeName,\r\n reconnect: true\r\n }\r\n\r\n let jsChannel = jschannel.build(channConfig);\r\n resolve(jsChannel);\r\n });\r\n });\r\n }\r\n\r\n public getOrSetCookie(cookieName: string, value: string | undefined, expires?: number): Promise {\r\n return this.jsChannel!.then(jsChannel => {\r\n return new Promise((resolve, reject) => {\r\n jsChannel.call({\r\n method: \"getOrSetCookie\",\r\n params: { cookieName: cookieName, value: value, expires: expires },\r\n success: (s: string | undefined) => { resolve(s); },\r\n error: (error: string) => { reject(error); }\r\n });\r\n });\r\n });\r\n }\r\n\r\n public setCookie(cookieName: string, value: string, expires?: number): Promise {\r\n return this.jsChannel!.then(jsChannel => {\r\n return new Promise((resolve, reject) => {\r\n jsChannel.call({\r\n method: \"setCookie\",\r\n params: { cookieName: cookieName, value: value, expires: expires },\r\n success: () => { resolve() },\r\n error: (error: string) => { reject(error); }\r\n });\r\n });\r\n });\r\n }\r\n\r\n public getCookie(cookieName: string): Promise {\r\n return this.jsChannel!.then(jsChannel => {\r\n return new Promise((resolve, reject) => {\r\n jsChannel.call({\r\n method: \"getCookie\",\r\n params: { cookieName: cookieName },\r\n success: (s: string) => { return resolve(s); },\r\n error: (error: string) => { return reject(error); }\r\n });\r\n });\r\n });\r\n }\r\n\r\n public RemoveCookie(cookieName: string): Promise {\r\n return this.jsChannel!.then(jsChannel => {\r\n return new Promise((resolve, reject) => {\r\n jsChannel.call({\r\n method: \"removeCookie\",\r\n params: { cookieName: cookieName },\r\n success: () => { resolve(); },\r\n error: (error: string) => { return reject(error); }\r\n });\r\n });\r\n });\r\n }\r\n}\r\n","import { ActionHandler } from './ActionHandler';\r\nimport { DataExchangeType } from '../../api/client/clientApi';\r\nimport { tryDelete } from '../../lib/helpers';\r\n\r\nexport class HandoverHandlerManager {\r\n private actionHandlers: ({ [actionType: number]: ActionHandler }) = {};\r\n\r\n public register(actionType: DataExchangeType, actionHandler: ActionHandler) {\r\n if (!actionHandler)\r\n return;\r\n\r\n this.actionHandlers[actionType] = actionHandler;\r\n }\r\n\r\n public get(actionType: DataExchangeType): ActionHandler {\r\n return this.actionHandlers[actionType];\r\n }\r\n\r\n public unregister(actionType: DataExchangeType): void {\r\n let actionHandler = this.actionHandlers[actionType];\r\n if (!actionHandler)\r\n return;\r\n\r\n tryDelete(this.actionHandlers, actionType);\r\n }\r\n}\r\n","export class Deferred {\r\n constructor() { }\r\n\r\n /* A method to resolve the associated Promise with the value passed.\r\n * If the promise is already settled it does nothing.\r\n *\r\n * @param {anything} value : This value is used to resolve the promise\r\n * If the value is a Promise then the associated promise assumes the state\r\n * of Promise passed as value.\r\n */\r\n resolve!: (value: T | PromiseLike) => void;\r\n\r\n /* A method to reject the assocaited Promise with the value passed.\r\n * If the promise is already settled it does nothing.\r\n *\r\n * @param {anything} reason: The reason for the rejection of the Promise.\r\n * Generally its an Error object. If however a Promise is passed, then the Promise\r\n * itself will be the reason for rejection no matter the state of the Promise.\r\n */\r\n reject!: (reason?: any) => void;\r\n\r\n /* A newly created Pomise object.\r\n * Initially in pending state.\r\n */\r\n promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n\r\n //Object.freeze(this);\r\n}\r\n\r\nexport function delay(milisec: number) {\r\n return new Promise(resolve => {\r\n setTimeout(() => { resolve() }, milisec);\r\n })\r\n}\r\n","export class CollectionActionGroupsProvider {\r\n\r\n private _collectionActionGroups: { [id: string]: string | undefined; } = {};\r\n\r\n public isCollectionActionGroupsActive(groups?: string[]): boolean {\r\n if (groups) {\r\n for (let group of groups) {\r\n if (this._collectionActionGroups[group])\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public activateCollectionActionGroups(groups?: string[], actionId?: string): boolean {\r\n if (groups) {\r\n if (this.isCollectionActionGroupsActive(groups)) {\r\n return false;\r\n }\r\n\r\n for (let group of groups) {\r\n this._collectionActionGroups[group] = actionId;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public clearCollectionActionGroups(groups?: string[]) {\r\n if (groups) {\r\n for (let group of groups) {\r\n delete this._collectionActionGroups[group];\r\n }\r\n }\r\n }\r\n\r\n public clearByActionId(actionId: string) {\r\n if (actionId) {\r\n var groups = Object.keys(this._collectionActionGroups).filter(key => this._collectionActionGroups[key] === actionId);\r\n this.clearCollectionActionGroups(groups);\r\n }\r\n }\r\n}\r\n","import { ScriptParamsProvider } from '../lib/ScriptUrlParser';\r\n\r\nimport * as userIdProviderManager from './UserIdProviders/UserIdProviderManager';\r\nimport * as localUserIdProvider from './UserIdProviders/LocalUserIdProvider';\r\nimport { ServerSideUserIdProvider } from './UserIdProviders/ServerSideUserIdProvider';\r\nimport * as eventSourceManger from './EventSources/EventSourceManager';\r\nimport * as pageViewSource from './EventSources/PageViewSource';\r\nimport * as urlSourceChange from './EventSources/URLSourceChange';\r\n\r\nimport * as actionHandler from './ActionHandler/ActionHandler';\r\nimport * as overlayActionHandler from './ActionHandler/OverlayActionHandlerProxy';\r\nimport * as cookieActionHandler from './ActionHandler/CookieActionHandler';\r\nimport * as injectHTMLActionHandler from './ActionHandler/InjectHTMLActionHandler';\r\nimport * as injectScriptActionHandler from './ActionHandler/InjectScriptActionHandler';\r\nimport * as pixelActionHandler from './ActionHandler/PixelActionHandler';\r\n\r\nimport { ActionHandlerManager } from './ActionHandler/ActionHandlerManager';\r\n\r\nimport { ILogger, Logger } from '../lib/logger';\r\n\r\nimport * as jscookie from \"js-cookie\";\r\nimport { isDealer } from './DealerRecognition/DealerRecognizer';\r\nimport { HandoverHandlerManager } from './ActionHandler/HandoverHandlerManager';\r\nimport { ClientApi, TrackEventData, TrackingResultFinal, UserId, UserIdProviderType, DataExchangeType, ActionType, FinalIssuedAction, UnissuedActionBase, IssuedOverlayAction, ExternalCookieModel, IssuedInjectScriptAction, ClientSampling, DebuggerEventType, UserCookieModel, LogContext, SeverityLogLevel, LogType, VwFreespeeUserDataModel, ExternalActionClientModel } from '../api/client/clientApi';\r\nimport { DebuggerState, IEngine, IProfileDebuggerData, ENGINE_VERSION } from './IEngine';\r\nimport { IApiCommandCallback, IApiCommandResult, IGetUserIdResult, ITrackingClient, ITrackingEvent, TrackingClientEventName } from './ITrackingClient.public';\r\nimport { ProfileDebuggerBootstrap } from '../SmartSignalsProfileDebugger/profile-debugger-bootstrap';\r\nimport { RequestType, ApiRequestResponseData } from '../SmartSignalsProfileDebugger/types/TrackingRequestResponseData';\r\nimport { InjectScriptActionHandler } from './ActionHandler/InjectScriptActionHandler';\r\nimport { envConfig } from \"../resources/env-config\";\r\nimport { ApiPromise } from '../api/client/clientApiExtension';\r\nimport { Deferred } from '../lib/utils';\r\nimport { CollectionActionGroupsProvider } from './ActionHandler/CollectionActionGroupsProvider/CollectionActionGroupsProvider';\r\nimport type { VwFreespeeModule } from './Modules/vwFreespee';\r\nimport { UpdatedStateDebuggerData } from '../SmartSignalsProfileDebugger/resources/models/UpdatedStateDebuggerData';\r\n\r\ndeclare var __webpack_require__: any;\r\n\r\nexport class Engine implements ITrackingClient {\r\n private static readonly UidTokenPrefix: string = 'smartSignals2UiD';\r\n private static readonly Version: string = ENGINE_VERSION //'202502190926';\r\n private static readonly ApiCommands = [\"getUserId\", \"getPermanentUserId\"];\r\n private static readonly AdobeCookieName = 'AMCV_1D59171B520E91320A490D44@AdobeOrg';\r\n private static readonly OneHour = 3.6e+6;\r\n\r\n private static readonly isFunction = (obj: any): boolean => typeof obj === \"function\";\r\n\r\n public readonly scopeName: string = 'SmartSignals2';\r\n\r\n private readonly _collectionActionGroupsProvider: CollectionActionGroupsProvider = new CollectionActionGroupsProvider();\r\n\r\n private static ProfileDebuggerKey: string = 'profileDebugger';\r\n\r\n private _params!: { [index: string]: string | undefined; };\r\n private _conf!: IConfiguration;\r\n private _eventFunctions: Map = new Map();\r\n private _userIdProviderManager: userIdProviderManager.UserIdProviderManager;\r\n private _localUserIdProvider: localUserIdProvider.LocalUserIdProvider;\r\n private _eventSourceManger: eventSourceManger.EventSourceManager;\r\n private _userIds: UserId[] | undefined;\r\n private _excludedUser: boolean = false;\r\n private _initDone: boolean = false;\r\n private _clientApi: ClientApi;\r\n private _actionHandlerManager = new ActionHandlerManager();\r\n private _handoverHandlerManager = new HandoverHandlerManager();\r\n private _hideActionsCounter = 0;\r\n private _cachedResoveUserIdsPromise: Promise | undefined;\r\n private _initQueue: Array = new Array();\r\n private _engine!: IEngine;\r\n\r\n private _debuggerApiCallsQueue: ApiRequestResponseData[] | undefined = [];\r\n private _debuggerEnabling = true;\r\n private _debuggerReady = false;\r\n private _profileDebuggerBootstrap?: ProfileDebuggerBootstrap;\r\n private _logger: Logger;\r\n private _realUserIdPromise = new Deferred();\r\n private _modules: Map> = new Map>();\r\n\r\n public get log(): ILogger {\r\n return this._logger.external;\r\n }\r\n\r\n constructor(initQueue?: Array) {\r\n this._initialize();\r\n this._clientApi = new ClientApi(this._conf.rtdeUrl);\r\n\r\n this._setupCommunicationChannel();\r\n this._logger = new Logger(this._clientApi, () => this._getLoggerContext());\r\n this._logger.setListener();\r\n\r\n if (initQueue) {\r\n if (Array.isArray(initQueue) && initQueue.length > 0)\r\n this._initQueue.push.apply(this._initQueue, initQueue);\r\n }\r\n\r\n this._userIdProviderManager = new userIdProviderManager.UserIdProviderManager();\r\n this._localUserIdProvider = new localUserIdProvider.LocalUserIdProvider(\"LocalUserId\", Engine.UidTokenPrefix, true);\r\n this._eventSourceManger = new eventSourceManger.EventSourceManager();\r\n\r\n\r\n this._registerCookieProviders();\r\n if (this._conf.nativeEventTracking)\r\n this._registerEventSources();\r\n this._registerActionHanlers();\r\n\r\n this._recognizeDealer().then(dealer => {\r\n this._excludedUser = dealer;\r\n if (this._excludedUser == false) {\r\n this._resolveUserId().then(userIds => {\r\n this._userIds = userIds;\r\n this._initDone = true;\r\n this.push.apply(this, this._initQueue);\r\n this._initQueue.length = 0;\r\n });\r\n }\r\n });\r\n if (this._engine.conf.smasiProfileDebuggerEnabled) {\r\n this._detectProfileDebuggerRequest();\r\n window.addEventListener('hashchange', () => {\r\n this._detectProfileDebuggerRequest();\r\n }, false);\r\n } else {\r\n this.notifyDebuggerDisabled();\r\n }\r\n\r\n // migration: remove incorrect httpOnly cookie & recreate javascript cookie\r\n if (this._params[\"engineCNameUrl\"] && this._removeSlash(this._params[\"engineCNameUrl\"]) == this._conf.rtdeUrl) {\r\n if (this._localUserIdProvider.isSupported() && !this._localUserIdProvider.readCookie()) {\r\n const clientApi = new ClientApi(this._conf.rtdeUrl, true);\r\n clientApi.userCookie_Delete_3(this._conf.cookieName, true)\r\n .then(value => {\r\n if (value) {\r\n this._localUserIdProvider.persist();\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n public static get smasiProfileDebuggerDefaultHeight() {\r\n return Math.min(0.25 * document.documentElement.clientHeight, 170);\r\n }\r\n\r\n private _getProfileDebuggerConfig(): IProfileDebuggerData {\r\n try {\r\n let config = this._getConfiguration(Engine.ProfileDebuggerKey);\r\n config = {\r\n s: config?.s || 0,\r\n ht: config?.ht || Engine.smasiProfileDebuggerDefaultHeight\r\n };\r\n if (config.ht > document.documentElement.clientHeight)\r\n config.ht = Math.max(document.documentElement.clientHeight - 10, 20);\r\n\r\n return config;\r\n } catch (ignored) {\r\n return {\r\n s: 0,\r\n ht: Engine.smasiProfileDebuggerDefaultHeight\r\n };\r\n }\r\n }\r\n\r\n private _setProfileDebuggerState(state: number, height?: number) {\r\n const config = this._getProfileDebuggerConfig();\r\n\r\n config.s = state;\r\n config.ht = height || config.ht || Engine.smasiProfileDebuggerDefaultHeight;\r\n\r\n this._setConfiguration(Engine.ProfileDebuggerKey, config);\r\n }\r\n\r\n private _setConfiguration(key: string, config: T) {\r\n try {\r\n localStorage.setItem('smasi2-' + key, JSON.stringify(config));\r\n localStorage.removeItem('smasi2ProfileDebuggerState');\r\n localStorage.removeItem('smasi2ProfileDebuggerHeight');\r\n } catch (ignored) {\r\n // ignore local storage errors\r\n }\r\n }\r\n\r\n private _getConfiguration(key: string): T | undefined {\r\n try {\r\n let value = localStorage.getItem('smasi2-' + key);\r\n if (!value)\r\n return undefined;\r\n return JSON.parse(value)\r\n } catch (ignored) {\r\n return undefined;\r\n }\r\n }\r\n\r\n private _detectProfileDebuggerRequest(): boolean {\r\n const debuggerStatus = this._getDebuggerState();\r\n let config = this._getProfileDebuggerConfig();\r\n\r\n const skipLog = (debuggerStatus == undefined)\r\n || (debuggerStatus == DebuggerState.ON && config.s == 1)\r\n || (debuggerStatus == DebuggerState.MIN && config.s == 2)\r\n || (debuggerStatus == DebuggerState.OFF && config.s == 0);\r\n\r\n if (debuggerStatus !== undefined) {\r\n this._setProfileDebuggerState(debuggerStatus);\r\n if (!debuggerStatus) {\r\n if (this._profileDebuggerBootstrap)\r\n this._profileDebuggerBootstrap.removeDebugger();\r\n else {\r\n if (!skipLog)\r\n this._debuggerEvent(DebuggerEventType.Closed);\r\n }\r\n }\r\n }\r\n config = this._getProfileDebuggerConfig();\r\n\r\n if (config.s > 0) {\r\n this.notifyDebuggerEnabling();\r\n this._showProfileDebugger(config, skipLog);\r\n return true;\r\n }\r\n\r\n this.notifyDebuggerDisabled();\r\n return false;\r\n }\r\n\r\n private async _showProfileDebugger(config: IProfileDebuggerData, skipLogShow: boolean): Promise {\r\n return import(/* webpackChunkName: \"smasi2ProfileDebuggerBootstrap\" */ '../SmartSignalsProfileDebugger/profile-debugger-bootstrap').then(bootstrap => {\r\n if (!this._profileDebuggerBootstrap) {\r\n this._profileDebuggerBootstrap = new bootstrap.ProfileDebuggerBootstrap(this._engine, this._logger);\r\n }\r\n this._profileDebuggerBootstrap.showDebugger(config, skipLogShow);\r\n return this._profileDebuggerBootstrap;\r\n }, reason => {\r\n console.error(\"failed loading debugger bootstrap: \" + reason);\r\n });\r\n }\r\n\r\n private _removeSlash(url?: string): string | undefined {\r\n if (!url)\r\n return url;\r\n\r\n if (url.charAt(url.length - 1) == '/')\r\n return url.substr(0, url.length - 1);\r\n return url;\r\n }\r\n\r\n private _ensureSlash(url: string): string {\r\n if (url.charAt(url.length - 1) != '/')\r\n return url + '/';\r\n return url;\r\n }\r\n\r\n private _initialize() {\r\n const scriptParamsProvider = new ScriptParamsProvider();\r\n\r\n let params = scriptParamsProvider.flatten();\r\n this._params = params;\r\n\r\n function parseParameterBool(name: string): boolean | undefined {\r\n let value = params[name];\r\n\r\n if (value !== undefined && value !== null) {\r\n value = value.toLowerCase();\r\n if (value === 'true')\r\n return true;\r\n if (value === 'false')\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n\r\n function parseParameter(name: string): [boolean?, string?] {\r\n const bool = parseParameterBool(name);\r\n if (typeof bool === 'boolean')\r\n return [bool, undefined];\r\n return [undefined, params[name]];\r\n }\r\n\r\n if (__webpack_require__ && __webpack_require__.p)\r\n __webpack_require__.p = this._ensureSlash(scriptParamsProvider.origin + scriptParamsProvider.path);\r\n //__webpack_require__.p = preprocessUrl2(scUrlParser.origin + __webpack_require__.p);\r\n\r\n let adobeIdCookie: string | undefined;\r\n const parsedAdobeIdCookie = parseParameter(\"adobeIdCookie\");\r\n if (parsedAdobeIdCookie[0] === true)\r\n adobeIdCookie = Engine.AdobeCookieName;\r\n else if (parsedAdobeIdCookie[0] === undefined)\r\n adobeIdCookie = parsedAdobeIdCookie[1];\r\n\r\n const rtdeUrl = this._removeSlash(params[\"rtdeUrl\"] || params[\"engine1stPartyUrl\"] || params[\"engineCNameUrl\"] || params[\"engineUrl\"] || scriptParamsProvider.origin)!;\r\n const cookieName = params['cookieName'] || \"smartSignals2UiD\";\r\n\r\n let xdmRecognitionParsed = parseParameter(\"xdmRecognition\");\r\n let serverCookieParsed = parseParameter(\"serverCookie\");\r\n\r\n this._conf = {\r\n jsAlias: params[\"jsAlias\"],\r\n\r\n rtdeUrl: rtdeUrl,\r\n\r\n cookieName: cookieName,\r\n serverCookieName: params['serverCookieName'] || this._getDefaultServerCookieName(cookieName),\r\n\r\n xdmRecognitionUrl: xdmRecognitionParsed[0] === true ? this._removeSlash(params[\"engineUrl\"] || rtdeUrl) : xdmRecognitionParsed[1],\r\n serverCookieUrl: serverCookieParsed[0] === true ? rtdeUrl : (serverCookieParsed[0] === false ? undefined : this._removeSlash(serverCookieParsed[1] || params[\"engine1stPartyUrl\"] || params[\"engineCNameUrl\"])),\r\n\r\n scriptId: params[\"scriptId\"]!,\r\n nativeEventTracking: parseParameterBool(\"nativeEventTracking\") !== false,\r\n dealerRecognition: parseParameterBool(\"dealerRecognition\") === true,\r\n cleanUpOnURLChange: parseParameterBool(\"cleanUpOnURLChange\") === true,\r\n smasiProfileDebuggerEnabled: parseParameterBool(\"smasiProfileDebuggerEnabled\") !== false,\r\n\r\n adobeIdCookie: adobeIdCookie,\r\n adobePartnerId: params[\"adobePartnerId\"],\r\n adobePartnerSystem: params[\"adobePartnerSystem\"]\r\n };\r\n\r\n if (this._conf.xdmRecognitionUrl && this._conf.serverCookieUrl && this._conf.xdmRecognitionUrl == this._conf.serverCookieUrl)\r\n this._conf.xdmRecognitionUrl = undefined;\r\n\r\n if (this._conf.jsAlias) {\r\n let current = (window)[this._conf.jsAlias];\r\n\r\n if (!current) {\r\n (window)[this._conf.jsAlias] = this;\r\n }\r\n else if (!isEngine(current)) {\r\n console.warn(\"'jsAlias' conflicts with existing variable\");\r\n }\r\n }\r\n\r\n this._engine = {\r\n conf: this._conf,\r\n getActionHandler: this._getActionHandler.bind(this),\r\n getHandoverHandler: this._getHandoverHandler.bind(this),\r\n trigger: this._trigger.bind(this),\r\n unissuedAction: this._unissuedAction.bind(this),\r\n getCurrentUrl: this._getCurrentUrl.bind(this),\r\n debuggerEvent: this._debuggerEvent.bind(this),\r\n getClientSampling: this._getClientSampling.bind(this),\r\n getCrossDomainCookie: this._getCrossDomainCookie.bind(this),\r\n getUserId: this._getUserId.bind(this, false),\r\n setProfileDebuggerState: this._setProfileDebuggerState.bind(this),\r\n getProfileDebuggerConfig: this._getProfileDebuggerConfig.bind(this),\r\n getConfiguration: this._getConfiguration.bind(this),\r\n setConfiguration: this._setConfiguration.bind(this),\r\n debuggerReady: this.debuggerReady.bind(this),\r\n trackApiCall: this.trackApiCall.bind(this),\r\n env: envConfig.environment,\r\n sendHandlingState: this._sendHandlingState.bind(this)\r\n }\r\n }\r\n\r\n private _getDefaultServerCookieName(cookieName: string) {\r\n const suffix = \"UiD\";\r\n\r\n if (cookieName.endsWith(suffix)) {\r\n // Insert 's' before the suffix\r\n return cookieName.slice(0, -suffix.length) + 's' + suffix;\r\n }\r\n // Append 's' to the end\r\n return cookieName + 's';\r\n }\r\n\r\n private _recognizeDealer(): Promise {\r\n if (this._conf.dealerRecognition) {\r\n if (!this._localUserIdProvider.isDealer) {\r\n return isDealer().then(value => this._localUserIdProvider.isDealer = value);\r\n } else {\r\n return Promise.resolve(true);\r\n }\r\n }\r\n return Promise.resolve(false);\r\n }\r\n\r\n public on(eventName: TrackingClientEventName, fn: (eventName: string, data: IEventData) => void): void {\r\n if (!eventName || !fn)\r\n return;\r\n\r\n const arrFn = this._eventFunctions.get(eventName);\r\n if (!arrFn) {\r\n this._eventFunctions.set(eventName, new Array(fn));\r\n } else if (!arrFn.includes(fn)) {\r\n arrFn.push(fn);\r\n this._eventFunctions.set(eventName, arrFn);\r\n }\r\n }\r\n\r\n public off(eventName: TrackingClientEventName, fn: (eventName: string, data: IEventData) => void): void {\r\n if (!eventName || !fn)\r\n return;\r\n\r\n const arrFn = this._eventFunctions.get(eventName);\r\n if (!arrFn)\r\n return;\r\n\r\n const index = arrFn.indexOf(fn);\r\n if (index === -1)\r\n return;\r\n\r\n arrFn.splice(index, 1);\r\n this._eventFunctions.set(eventName, arrFn);\r\n }\r\n\r\n private _trigger(eventName: TrackingClientEventName, data: any): void {\r\n let ts = this._eventFunctions.get(eventName);\r\n if (!ts?.length)\r\n return;\r\n let triggers = [...ts];\r\n triggers.forEach((func) => {\r\n try {\r\n func(eventName, data);\r\n } catch (e) { }\r\n })\r\n }\r\n\r\n private _resolveUserId(useCachedPromise: boolean = false): Promise {\r\n if (useCachedPromise && this._cachedResoveUserIdsPromise) {\r\n return this._cachedResoveUserIdsPromise;\r\n } else {\r\n return this._cachedResoveUserIdsPromise = this._resolveUserIdInternal();\r\n }\r\n }\r\n\r\n private async _resolveUserIdInternal(): Promise {\r\n const skipXdm = new Date().valueOf() - this._localUserIdProvider.lastXdmCheck < Engine.OneHour * 24\r\n\r\n const userIdTmp: Promise[] = [];\r\n\r\n for (const [userIdProviderName, provider] of Object.entries(this._userIdProviderManager.getProviders())) {\r\n\r\n if (userIdProviderName === \"XdmUserId\") {\r\n if (skipXdm)\r\n continue;\r\n this._localUserIdProvider.lastXdmCheck = new Date().valueOf();\r\n }\r\n\r\n userIdTmp.push(provider.getUserId());\r\n }\r\n\r\n var userIds = await Promise.all(userIdTmp);\r\n var userId = this._pickUserId(userIds);\r\n\r\n if (userId?.indexOf(\"*tmp*\") == -1)\r\n this._realUserIdPromise.resolve(userId);\r\n\r\n return userIds;\r\n }\r\n\r\n private _registerCookieProviders() {\r\n this._userIdProviderManager.register(\"LocalUserId\", this._localUserIdProvider);\r\n if (this._conf.xdmRecognitionUrl)\r\n this._userIdProviderManager.register(\"XdmUserId\", new ServerSideUserIdProvider(this._conf.xdmRecognitionUrl, this._conf.cookieName, \"XdmUserId\", this._engine));\r\n if (this._conf.serverCookieUrl)\r\n this._userIdProviderManager.register(\"ServerSideLocalUserId\", new ServerSideUserIdProvider(this._conf.serverCookieUrl, this._conf.serverCookieName, \"ServerSideLocalUserId\", this._engine));\r\n }\r\n\r\n private _registerEventSources() {\r\n this._eventSourceManger.register(\"PageView\", new pageViewSource.PageViewSource(this));\r\n this._eventSourceManger.register(\"URLSourceChange\", new urlSourceChange.URLSourceChange(this));\r\n }\r\n\r\n public getPermanentUserId(callback: IApiCommandCallback): boolean {\r\n return this.getUserId(callback, false);\r\n }\r\n\r\n public getUserId(callback: IApiCommandCallback, getTempUids: boolean = true): boolean {\r\n if (!callback || !Engine.isFunction(callback.onready))\r\n return false;\r\n\r\n this._getUserId(getTempUids).then(userId => callback.onready({ userId: userId, success: !!userId }));\r\n\r\n return true;\r\n }\r\n\r\n private _getUserId(getTempUids: boolean = true): Promise {\r\n return this._resolveUserId(true).then(async uids => {\r\n var userId: string | undefined;\r\n if (uids && uids.length) {\r\n var realIds = uids.filter(i => i.id && (getTempUids || i.id.indexOf(\"*tmp*\") == -1));\r\n if (realIds.length) {\r\n userId = this._pickUserId(realIds);\r\n }\r\n }\r\n if (!userId && !getTempUids)\r\n userId = await this._realUserIdPromise.promise;\r\n\r\n return userId;\r\n });\r\n }\r\n\r\n private _pickUserId(userIds: UserId[]) {\r\n let userId: string | undefined;\r\n\r\n var crossIds = userIds.filter(i => i.type == UserIdProviderType.CrossDomain);\r\n if (crossIds.length) {\r\n userId = crossIds[0].id;\r\n } else {\r\n userId = userIds[0].id;\r\n }\r\n return userId;\r\n }\r\n\r\n private async _debuggerEvent(et: DebuggerEventType) {\r\n const userId = await this._getUserId(false);\r\n if (!userId)\r\n return;\r\n this._clientApi.profileDebuggerEvent_Put_2(\r\n this._conf.scriptId,\r\n userId,\r\n {\r\n url: window.location.href,\r\n debuggerEventType: et\r\n }\r\n );\r\n }\r\n\r\n private _getCrossDomainCookie(): Promise {\r\n const provider = this._userIdProviderManager.getProviderByName(\"XdmUserId\") as ServerSideUserIdProvider;\r\n\r\n if (!provider)\r\n return Promise.resolve(null);\r\n return provider.getCrossDomainCookie();\r\n }\r\n\r\n public push(...items: ITrackingEvent[]): number {\r\n if (this._excludedUser || items.length === 0)\r\n return 0;\r\n for (let i = 0; i < items.length; i++)\r\n this._pushItem(items[i]);\r\n return items.length;\r\n }\r\n\r\n public getScriptActionTriggerInfo(actionId: string) {\r\n const scriptActionHandler = this._actionHandlerManager.get(ActionType.Script) as InjectScriptActionHandler;\r\n return scriptActionHandler.getTriggeredAction(actionId);\r\n }\r\n\r\n public notifyActionClosed(actionId: string) {\r\n this._collectionActionGroupsProvider.clearByActionId(actionId);\r\n }\r\n\r\n public registerModalDisplayPrevention(actionId: string, showCallback: (() => void) | undefined, scope?: any): (() => void) | undefined {\r\n const scriptActionHandler = this._actionHandlerManager.get(ActionType.Script) as InjectScriptActionHandler;\r\n return scriptActionHandler.registerDisplayPrevention(actionId, true, undefined, showCallback, () => { }, scope);\r\n }\r\n\r\n public registerNonModalDisplayPrevention(actionId: string, domElement: HTMLElement, showCallback: (() => void) | undefined, hideCallback: (() => void) | undefined, scope?: any): (() => void) | undefined {\r\n const scriptActionHandler = this._actionHandlerManager.get(ActionType.Script) as InjectScriptActionHandler;\r\n return scriptActionHandler.registerDisplayPrevention(actionId, false, domElement, showCallback, hideCallback, scope);\r\n }\r\n\r\n private _pushItem(item: ITrackingEvent): void {\r\n if (!this._initDone) {\r\n this._initQueue.push(item);\r\n return;\r\n }\r\n\r\n if (item.$command) {\r\n var engine: any = this;\r\n if (Engine.ApiCommands.indexOf(item.$command) == -1) {\r\n if (item.onready && Engine.isFunction(item.onready)) {\r\n item.onready({ success: false, error: \"Command Not Supported\" });\r\n }\r\n return;\r\n }\r\n const cmd: Function = engine[item.$command];\r\n const arg = >{ onready: item.onready };\r\n cmd.apply(this, [arg]);\r\n return;\r\n }\r\n\r\n const sampling = this._localUserIdProvider.getSamplingData();\r\n const samplingOverride = this._getSamplingOverride();\r\n\r\n if (samplingOverride === undefined && sampling?.s === false && ((new Date().valueOf() - sampling.ts) < Engine.OneHour * 24))\r\n return;\r\n\r\n const rtdeRequest = this._parseItemData(item, samplingOverride);\r\n this.trackApiCall(RequestType.Rtde, rtdeRequest, this._clientApi.track_Post_1(rtdeRequest)).then(responseData => {\r\n this._handleRequestResponse(responseData);\r\n\r\n if (item.onflickeraction && Engine.isFunction(item.onflickeraction)) {\r\n\r\n let x = !!(responseData && responseData.actions && responseData.actions.length && responseData.actions.some(i => (i.conf && (i.conf).flickerDefendingRequired) == true));\r\n try {\r\n item.onflickeraction(x);\r\n } catch {\r\n }\r\n }\r\n\r\n if (item && item.onready && Engine.isFunction(item.onready)) {\r\n try {\r\n item.onready();\r\n }\r\n catch {\r\n\r\n }\r\n }\r\n });\r\n }\r\n\r\n private _sendHandlingState(data: UpdatedStateDebuggerData) {\r\n this._profileDebuggerBootstrap?.sendHandlingState(data);\r\n }\r\n\r\n private debuggerReady(): void {\r\n this._debuggerReady = true;\r\n\r\n if (this._debuggerApiCallsQueue) {\r\n for (var log of this._debuggerApiCallsQueue) {\r\n this._profileDebuggerBootstrap!.sendTrackingRequestResponse(log);\r\n }\r\n }\r\n this._debuggerApiCallsQueue = undefined;\r\n }\r\n\r\n private trackApiCall(requestType: RequestType, data: any, apiRequest: ApiPromise): Promise {\r\n if (!this._debuggerEnabling) {\r\n // pass through, skip logging\r\n return apiRequest;\r\n }\r\n\r\n const onResponse = (responseData: TResponseData | undefined) => {\r\n const requestMetadata = apiRequest.requestMetadata!;\r\n const responseMetadata = apiRequest.responseMetadata!;\r\n\r\n const msg: ApiRequestResponseData = {\r\n request: {\r\n metadata: {\r\n date: requestMetadata.date,\r\n type: requestType,\r\n url: requestMetadata.url,\r\n headers: requestMetadata.headers,\r\n method: requestMetadata.method,\r\n mode: requestMetadata.mode\r\n },\r\n data: data\r\n },\r\n response: {\r\n metadata: {\r\n date: responseMetadata.date,\r\n ok: responseMetadata.ok,\r\n status: responseMetadata.status,\r\n headers: responseMetadata.headers,\r\n type: responseMetadata.type\r\n },\r\n data: responseData\r\n }\r\n };\r\n this.notifyDebugger(msg);\r\n }\r\n\r\n return apiRequest\r\n .then(response => {\r\n onResponse(response);\r\n return response;\r\n }, reason => {\r\n onResponse(undefined);\r\n throw reason;\r\n });\r\n }\r\n\r\n private notifyDebugger(requestResponse: ApiRequestResponseData) {\r\n if (this._debuggerEnabling && !this._debuggerReady) {\r\n this._debuggerApiCallsQueue?.push(requestResponse);\r\n return;\r\n }\r\n\r\n if (this._profileDebuggerBootstrap && this._debuggerReady) {\r\n this._profileDebuggerBootstrap.sendTrackingRequestResponse(requestResponse);\r\n }\r\n }\r\n\r\n private notifyDebuggerDisabled() {\r\n this._debuggerEnabling = false;\r\n this._debuggerApiCallsQueue = undefined;\r\n }\r\n\r\n private notifyDebuggerEnabling() {\r\n if (this._debuggerEnabling || this._debuggerReady)\r\n return;\r\n\r\n this._debuggerApiCallsQueue = [];\r\n this._debuggerEnabling = true;\r\n }\r\n\r\n private _registerActionHanlers() {\r\n this._actionHandlerManager.register(ActionType.Cookie, new cookieActionHandler.CookieActionHandler(this._engine, this._logger));\r\n this._actionHandlerManager.register(ActionType.Overlay, new overlayActionHandler.OverlayActionHandlerProxy(this._engine, this._logger, this._collectionActionGroupsProvider));\r\n this._actionHandlerManager.register(ActionType.Script, new injectScriptActionHandler.InjectScriptActionHandler(this._engine, this._logger, this._collectionActionGroupsProvider));\r\n this._actionHandlerManager.register(ActionType.Html, new injectHTMLActionHandler.InjectHTMLActionHandler(this._engine, this._logger));\r\n this._actionHandlerManager.register(ActionType.Voucher, new overlayActionHandler.OverlayActionHandlerProxy(this._engine, this._logger, this._collectionActionGroupsProvider));\r\n this._actionHandlerManager.register(ActionType.Pixel, new pixelActionHandler.PixelActionHandler(this._engine, this._logger));\r\n\r\n this._handoverHandlerManager.register(DataExchangeType.Cookie, new cookieActionHandler.CookieActionHandler(this._engine, this._logger, true));\r\n this._handoverHandlerManager.register(DataExchangeType.Script, new injectScriptActionHandler.InjectScriptActionHandler(this._engine, this._logger, this._collectionActionGroupsProvider, true));\r\n this._handoverHandlerManager.register(DataExchangeType.Pixel, new pixelActionHandler.PixelActionHandler(this._engine, this._logger, true));\r\n }\r\n\r\n private _getActionHandler(actionType: ActionType): actionHandler.ActionHandler {\r\n return this._actionHandlerManager.get(actionType);\r\n }\r\n\r\n private _getHandoverHandler(dataExchangeType: DataExchangeType): actionHandler.ActionHandler {\r\n return this._handoverHandlerManager.get(dataExchangeType);\r\n }\r\n\r\n private _handleRequestResponse(responseData: TrackingResultFinal | null | undefined) {\r\n if (!responseData)\r\n return null;\r\n if (responseData.uIds && responseData.uIds.length > 0) {\r\n\r\n const userId = responseData.uIds[responseData.uIds.length - 1];\r\n const p = new Array>();\r\n const userIdProviders = this._userIdProviderManager.getProviders();\r\n\r\n for (const providerName in userIdProviders) {\r\n p.push(userIdProviders[providerName].setUserId(userId.id!, userId.lifeTime));\r\n }\r\n\r\n this._realUserIdPromise.resolve(userId.id!);\r\n\r\n if (p.length > 0) {\r\n Promise.all(p).then(() => {\r\n if (this._userIds)\r\n this._userIds.forEach(x => x.id = userId.id);\r\n });\r\n\r\n if (this._userIds)\r\n this._cachedResoveUserIdsPromise = Promise.resolve(this._userIds);\r\n }\r\n }\r\n\r\n this._localUserIdProvider.setSampling(responseData.sampling);\r\n\r\n if (responseData.actions && responseData.actions.length > 0) {\r\n\r\n for (let action of responseData.actions) {\r\n if (!(action).type)\r\n continue;\r\n\r\n let handler = this._actionHandlerManager.get((action).type);\r\n if (handler)\r\n handler.handle(action);\r\n }\r\n }\r\n\r\n if (responseData.handovers && responseData.handovers.length > 0) {\r\n\r\n for (let handover of responseData.handovers) {\r\n if (!handover.conf || !handover.conf.dataExchangeType)\r\n continue;\r\n\r\n let handler = this._handoverHandlerManager.get(handover.conf.dataExchangeType);\r\n if (handler)\r\n handler.handle(handover);\r\n }\r\n }\r\n return responseData;\r\n }\r\n\r\n private _unissuedAction(action: FinalIssuedAction) {\r\n if (!action.userId || !action.organizationId || !action.collectionId || !action.actionId)\r\n return;\r\n\r\n const conf = action.conf as (IssuedOverlayAction | IssuedInjectScriptAction);\r\n const obj: UnissuedActionBase = {\r\n actionCategory: action.actionCategory,\r\n itemId: conf.itemId,\r\n itemType: conf.itemType\r\n }\r\n\r\n this._clientApi.actionRevert_Post_3(action.userId, action.organizationId, action.collectionId, action.actionId, obj);\r\n }\r\n\r\n private _getExternalCookies(): ExternalCookieModel[] {\r\n let cookies = jscookie.get();\r\n let externalCookies: ExternalCookieModel[] = [];\r\n\r\n if (this._conf.adobeIdCookie)\r\n externalCookies.push.apply(externalCookies, this._getAdobeCookies(cookies));\r\n\r\n return externalCookies;\r\n }\r\n\r\n private _getAdobeCookies(cookies: any): ExternalCookieModel[] {\r\n let adobeExternalCookies: ExternalCookieModel[] = [];\r\n let cookieName = this._conf.adobeIdCookie!;\r\n try {\r\n if (cookies[cookieName]) {\r\n var m = (cookies[cookieName]).match(/MCMID\\|(\\w+)/);\r\n if (m && m.length >= 2) {\r\n adobeExternalCookies.push({\r\n cookieName: cookieName,\r\n system: 'Adobe Global',\r\n value: m[1],\r\n partnerId: this._conf.adobePartnerId,\r\n partnerSystem: this._conf.adobePartnerSystem\r\n });\r\n }\r\n }\r\n }\r\n catch (e) { }\r\n return adobeExternalCookies;\r\n }\r\n\r\n private _parsePayload(payload: any): any {\r\n let parsedPayload = payload;\r\n\r\n if (typeof payload === \"string\") {\r\n try {\r\n parsedPayload = JSON.parse(payload);\r\n } catch (e) {\r\n return payload;\r\n }\r\n }\r\n if (parsedPayload\r\n && typeof (parsedPayload) === \"object\"\r\n && parsedPayload.leadInformation\r\n && parsedPayload.leadInformation.additionalInformation\r\n && typeof parsedPayload.leadInformation.additionalInformation !== \"string\") {\r\n parsedPayload.leadInformation.additionalInformation = JSON.stringify(parsedPayload.leadInformation.additionalInformation);\r\n }\r\n return JSON.stringify(parsedPayload);\r\n }\r\n\r\n private _getClientSampling(): ClientSampling | undefined {\r\n let sampling = this._localUserIdProvider.getClientSampling();\r\n const samplingOverride = this._getSamplingOverride();\r\n\r\n if (samplingOverride !== undefined) {\r\n if (!sampling) {\r\n sampling = {};\r\n }\r\n sampling.override = samplingOverride;\r\n }\r\n return sampling;\r\n }\r\n\r\n private _parseItemData(item: ITrackingEvent, samplingOverride?: boolean): TrackEventData {\r\n //TODO set correct params and values in return\r\n\r\n let sampling = this._localUserIdProvider.getClientSampling();\r\n\r\n if (samplingOverride !== undefined) {\r\n if (!sampling) {\r\n sampling = {};\r\n }\r\n sampling.override = samplingOverride;\r\n }\r\n\r\n return {\r\n scriptVersion: Engine.Version,\r\n uIds: this._userIds,\r\n scriptId: this._conf.scriptId,\r\n event: item.event,\r\n eventObject: this._parsePayload(item.payload),\r\n url: window.location.href,\r\n urlReferrer: document.referrer,\r\n title: document.title,\r\n externalCookies: this._getExternalCookies(),\r\n timezoneOffset: (new Date().getTimezoneOffset() * -1),\r\n sampling: sampling\r\n };\r\n }\r\n\r\n private hasHrefValue(value: string): boolean {\r\n return window.location.href.indexOf(value) !== -1;\r\n }\r\n\r\n private _getSamplingOverride(): boolean | undefined {\r\n if (this.hasHrefValue('smart-signals-track=on'))\r\n return true;\r\n\r\n if (this.hasHrefValue('smart-signals-track=off'))\r\n return false;\r\n\r\n return undefined;\r\n }\r\n\r\n private _getDebuggerState(): DebuggerState | undefined {\r\n if (this.hasHrefValue('smart-signals-debugger=min') || this.hasHrefValue('smart-signals-console=min'))\r\n return DebuggerState.MIN;\r\n\r\n if (this.hasHrefValue('smart-signals-debugger=on') || this.hasHrefValue('smart-signals-console=on'))\r\n return DebuggerState.ON;\r\n\r\n if (this.hasHrefValue('smart-signals-debugger=off') || this.hasHrefValue('smart-signals-console=off'))\r\n return DebuggerState.OFF;\r\n\r\n return undefined;\r\n }\r\n\r\n private _setupCommunicationChannel() {\r\n if (window.addEventListener) {\r\n window.addEventListener(\"message\", (evn) => this._onMessage(evn), false);\r\n }\r\n }\r\n\r\n private _onMessage(event: MessageEvent) {\r\n var data = event.data;\r\n if (data.source == 'SmasiEngineChannel' && data.func == \"push\" && data.data) {\r\n this.push.apply(this, data.data);\r\n }\r\n }\r\n\r\n public showActions(hideGroup?: string): void {\r\n if (--this._hideActionsCounter <= 0) {\r\n this._hideActionsCounter = 0;\r\n [this._actionHandlerManager.get(ActionType.Overlay), this._actionHandlerManager.get(ActionType.Voucher)]\r\n .forEach(i => (i as overlayActionHandler.OverlayActionHandlerProxy).showActions(hideGroup));\r\n }\r\n }\r\n\r\n public hideActions(hideGroup?: string): void {\r\n this._hideActionsCounter++;\r\n [this._actionHandlerManager.get(ActionType.Overlay), this._actionHandlerManager.get(ActionType.Voucher)]\r\n .forEach(i => (i as overlayActionHandler.OverlayActionHandlerProxy).hideActions(hideGroup));\r\n }\r\n\r\n private _getCurrentUrl(): string {\r\n return window.location.href;\r\n }\r\n\r\n private _getLoggerContext(): LogContext {\r\n let ctx: LogContext = {\r\n scriptId: this._conf?.scriptId,\r\n }\r\n\r\n if (this._userIds) {\r\n ctx.userId = this._userIds.find(x => x.type == UserIdProviderType.Local)?.id;\r\n }\r\n return ctx;\r\n }\r\n\r\n public getModule(name: 'vwFreespee'): Promise\r\n public getModule(name: 'vwFreespee') {\r\n switch (name) {\r\n case 'vwFreespee':\r\n if (!this._modules.has(name)) {\r\n this._modules.set(name, import(/* webpackChunkName: \"vwFreespee\" */ './Modules/vwFreespee').then(i => new i.VwFreespeeModule(this._engine, this._clientApi)));\r\n }\r\n return this._modules.get(name);\r\n\r\n }\r\n }\r\n\r\n public async issueExternalAction(externalActionId: string, aditionalData?: string | {}, userToken?: string): Promise {\r\n let _aditionalData: string | undefined;\r\n\r\n if (aditionalData) {\r\n if (typeof aditionalData === \"string\") {\r\n _aditionalData = aditionalData;\r\n }\r\n else {\r\n try {\r\n _aditionalData = JSON.stringify(aditionalData)\r\n } catch (e) {\r\n console.warn(\"issueExternalAction: failed to parse 'aditionalData'\");\r\n throw e;\r\n }\r\n }\r\n }\r\n\r\n const userId = await this._getUserId(true);\r\n\r\n try {\r\n const requestData: ExternalActionClientModel = {\r\n userId: userId!,\r\n token: userToken,\r\n aditionalData: _aditionalData\r\n };\r\n\r\n return await this.trackApiCall(RequestType.ExternalAction, requestData, this._clientApi.externalAction_Post_4(externalActionId, requestData)).then(response => {\r\n return response.result;\r\n })\r\n\r\n } catch (e) {\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nfunction isEngine(engine: any) {\r\n return engine instanceof Engine || (engine && (engine).scopeName === 'SmartSignals2');\r\n};\r\n\r\n\r\n\r\nlet current: Engine | ITrackingEvent[] = (window).smartSignals2;\r\n\r\n(window).smartSignals2 = isEngine(current) ? current as Engine : new Engine(current as ITrackingEvent[]);\r\n\r\n","/// \r\n\r\nexport const envConfig: EnvConfig = {\r\n environment: \"LIVE\",\r\n debuggerUrl: \"https://smartsignals2.smart-digital-solutions.de/dist/smasi2ProfileDebugger/SmartSignalsProfileDebugger.html\",\r\n azureClientId: \"251b7e80-c685-4a2a-90b2-0bcf942f68f7\",\r\n};\r\n","import { XdmProvider } from \"../../lib/xdmProvider\";\r\n\r\nexport function isDealer(): Promise {\r\n let promise: Promise = new Promise((resolve, reject) => {\r\n let client = new XdmProvider(\"SmartSignals2-cdn\", \"https://cdn.smart-digital-solutions.com/SmaSi2-Live/xdm/XdmProviderClient-cdn.html\");\r\n client.getCookie(\"s2_dlrp\").then(value => {\r\n client.destroy();\r\n resolve(value == \"1\");\r\n }).catch(reason => reject(reason));\r\n });\r\n return promise;\r\n}\r\n\r\n"],"names":["inProgress","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","isFunction","x","Object","prototype","len","vertxNext","customSchedulerFn","asap","arg","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","process","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","channel","iterations","observer","node","then","onFulfillment","onRejection","parent","child","noop","PROMISE_ID","makePromise","_state","arguments","invokeCallback","_result","subscribe","resolve$1","object","promise","resolve","nextTick","document","createTextNode","observe","characterData","port1","onmessage","port2","vertx","Function","require","runOnLoop","runOnContext","attemptVertx","substring","PENDING","handleMaybeThenable","maybeThenable","then$$1","thenable","fulfill","reject","value","reason","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","TypeError","publishRejection","_onerror","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","Constructor","input","_instanceConstructor","_remaining","_enumerate","_eachEntry","entry","c","resolve$$1","_then","didError","_settledAt","Promise$1","_willSettleAt","state","enumerator","Promise","resolver","needsResolver","initializePromise","needsNew","catch","finally","all","entries","race","_","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","polyfill","local","g","P","promiseToString","cast","extend","attributes","key","decode","replace","decodeURIComponent","init","converter","api","set","defaults","expires","Date","toUTCString","test","write","encodeURIComponent","String","escape","stringifiedAttributes","attributeName","cookie","get","json","jar","cookies","parts","slice","read","getJSON","remove","withConverter","HandlingState","RequestType","engine","isElementInViewport","rect","getBoundingClientRect","height","width","top","innerHeight","documentElement","clientHeight","left","innerWidth","clientWidth","bottom","right","isElementOverlapping","actionRect","elementRect","actionVerticalReach","actionHorizontalReach","elementVerticalReach","elementHorizontalReach","handle","issuedObject","conf","delayInSeconds","handleAction","handligStateChange","sendHandlingState","logId","canShow","isModal","rootRect","querySelectors","pageElementDetection","elements","selector","querySelectorAll","forEach","some","startThrottling","openedAction","showCallback","hideCallback","throttlingMs","throttling","clearTimeout","timeoutId","stopElementDetection","DebuggerState","ENGINE_VERSION","global","globalThis","support","Symbol","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","items","iterator","next","shift","done","Headers","headers","map","append","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","byteOffset","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","oldValue","has","thisArg","keys","values","methods","Request","options","upcased","url","credentials","mode","signal","toUpperCase","referrer","cache","reParamSearch","getTime","form","trim","bytes","bodyInit","status","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","location","httpFetch","DOMException","err","stack","create","fetch","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","substr","line","responseURL","responseText","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","setRequestHeader","onreadystatechange","readyState","send","Response","UserIdProviderType","ActionType","ActionCategory","ActionClass","TemplateSyntaxType","ActionConfigType","ActionItemType","Unit","VerticalSnap","HorizontalSnap","DimensionsState","SlideSide","PersonalizationAssetType","DataExchangeType","DebuggerEventType","SeverityLogLevel","LogType","InnerActionType","ActionEventType","ActionCloseType","ExternalActionType","baseUrl","http","jsonParseReviver","track_Post_1","url_","options_","transformOptions","onRequest","_response","processTrack_Post_1","_headers","_responseText","result400","throwException","result401","result403","result404","result504","result500","profileDebuggerEvent_Put_2","scriptId","userId","model","processProfileDebuggerEvent_Put_2","log_Post_3","processLog_Post_3","resolvePlaceholder_Post_3","organizationId","collectionId","processResolvePlaceholder_Post_3","actionEvent_Post_3","campaignId","actionId","issuedActionId","processActionEvent_Post_3","actionRevert_Post_3","processActionRevert_Post_3","userCookie_Get_3","cookieName","getOnly","processUserCookie_Get_3","userCookie_Put_3","processUserCookie_Put_3","userCookie_Delete_3","keepLocal","processUserCookie_Delete_3","vwFreespee_Get_4","processVwFreespee_Get_4","externalAction_Post_4","externalActionId","processExternalAction_Post_4","finalPromise","ap","requestMetadata","RequestMetadata","response_","responseMetadata","ResponseMetadata","reason_","isApiException","ApiException","date","tryDelete","createTempUserId","r","isSafari","navigator","vendor","userAgent","domains2","getSubDomains","domain","hostname","domains","lastIndexOf","getDomainLevel","lvl","getDomainByLevel","level","insertHTMLAndExecute","target","htmlToInsert","innerHTML","scripts","getElementsByTagName","script","newScript","createElement","src","parentNode","insertBefore","removeChild","whenBodyReady","getPureUrl","lastN","limit","predicate","fluent","add","findIndex","getAll","find","isPrimitive","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","defineProperty","enumerable","f","chunkId","reduce","promises","u","prop","l","needAttach","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","doneFns","fn","head","appendChild","toStringTag","p","compat","b","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_friendlyDomain","currentScript","scriptUrl","URL","query","search","startsWith","pathname","components","pair","unescape","flatten","queries","userIdProviders","register","userIdProvider","getProviderByName","getProviders","unregister","setCookie","testKey","sameSite","removeCookie","canSet","cookieEnabled","valueOf","setSeconds","getSeconds","ignore","findFriendlyDomain","isSupported","getCookieDomainByLevel","ddl","cdl","max","token","extendlifeTime","xts","processCookieValues","persist","setInterval","getType","getName","getUserId","setUserId","lifeTime","update","setSampling","sampling","selected","ratioVersion","ts","getSamplingData","getClientSampling","sd","btoa","lt","readCookie","tokens","parseInt","atob","engineUrl","clientApi","trackApiCall","getCrossDomainCookie","eventSources","eventSource","isRegistered","doRegister","doUnregister","EventSource","currentHash","hash","currentURL","historyApiHook","hashChange","timeID","popState","ev","oldHref","that","pollingTimer","newHref","history","pushState","replaceState","pushStateOrig","res","apply","args","replaceStateOrig","clearInterval","logger","_collectionActionGroupsProvider","isBrowserSupported","div","OverlayActionHandlerProxy","unissuedAction","triggerUrl","handlerPromise","OverlayActionHandler","showActions","hideGroup","hideActions","ActionHandler","ignoreControlGroupValue","isInControlGroup","cookieValue","expireDays","removeFromAllDomains","html","lastTwenty","collectionActionGroups","isCollectionActionGroupsActive","allowAsynchronousProcessing","inject","onActionClosed","activateCollectionActionGroups","injectors","removeOldElements","css","injectCss","createElementId","coreScript","injectScript","isCoreModule","isModule","exec","elementId","style","eid","getElementById","getTriggeredAction","testMode","registerDisplayPrevention","domElement","disposed","stopElmDetection","checkVisibility","resizeObserver","disconnect","removeObserver","actionOpenedOnOrigin","actionOpenedOnPath","ResizeObserver","mrs","mr","removedNodes","childList","subtree","warn","setPixel","alt","img","display","actionHandlers","actionType","actionHandler","getContext","_external","LoggerWrapper","info","writeInternal","severity","logType","errorInfo","defaultContext","logModel","context","severityLogLevel","setListener","filename","scopeName","iframeSrc","jsChannel","createChannel","iframe","hidden","border","channConfig","contentWindow","jschannel","getOrSetCookie","getCookie","RemoveCookie","_collectionActionGroups","groups","group","clearCollectionActionGroups","clearByActionId","filter","initQueue","CollectionActionGroupsProvider","_eventFunctions","Map","_excludedUser","_initDone","_actionHandlerManager","ActionHandlerManager","_handoverHandlerManager","HandoverHandlerManager","_hideActionsCounter","_initQueue","_debuggerApiCallsQueue","_debuggerEnabling","_debuggerReady","_realUserIdPromise","Deferred","_modules","_initialize","_clientApi","_conf","rtdeUrl","_setupCommunicationChannel","_logger","Logger","_getLoggerContext","_userIdProviderManager","_localUserIdProvider","Engine","UidTokenPrefix","_eventSourceManger","_registerCookieProviders","nativeEventTracking","_registerEventSources","_registerActionHanlers","_recognizeDealer","dealer","_resolveUserId","userIds","_userIds","_engine","smasiProfileDebuggerEnabled","_detectProfileDebuggerRequest","notifyDebuggerDisabled","_params","_removeSlash","external","min","_getProfileDebuggerConfig","config","_getConfiguration","ProfileDebuggerKey","ht","smasiProfileDebuggerDefaultHeight","ignored","_setProfileDebuggerState","_setConfiguration","localStorage","setItem","removeItem","getItem","debuggerStatus","_getDebuggerState","skipLog","_profileDebuggerBootstrap","removeDebugger","_debuggerEvent","notifyDebuggerEnabling","_showProfileDebugger","skipLogShow","bootstrap","ProfileDebuggerBootstrap","showDebugger","_ensureSlash","adobeIdCookie","scriptParamsProvider","ScriptParamsProvider","parseParameterBool","parseParameter","bool","parsedAdobeIdCookie","AdobeCookieName","xdmRecognitionParsed","serverCookieParsed","jsAlias","serverCookieName","_getDefaultServerCookieName","xdmRecognitionUrl","serverCookieUrl","dealerRecognition","cleanUpOnURLChange","adobePartnerId","adobePartnerSystem","isEngine","getActionHandler","_getActionHandler","getHandoverHandler","_getHandoverHandler","trigger","_trigger","_unissuedAction","getCurrentUrl","_getCurrentUrl","debuggerEvent","_getClientSampling","_getCrossDomainCookie","_getUserId","setProfileDebuggerState","getProfileDebuggerConfig","getConfiguration","setConfiguration","debuggerReady","env","_sendHandlingState","suffix","endsWith","isDealer","client","XdmProvider","on","eventName","arrFn","includes","off","func","useCachedPromise","_cachedResoveUserIdsPromise","_resolveUserIdInternal","skipXdm","lastXdmCheck","OneHour","userIdTmp","userIdProviderName","provider","_pickUserId","ServerSideUserIdProvider","getPermanentUserId","getTempUids","onready","uids","realIds","crossIds","et","debuggerEventType","_pushItem","getScriptActionTriggerInfo","notifyActionClosed","registerModalDisplayPrevention","registerNonModalDisplayPrevention","item","$command","ApiCommands","cmd","samplingOverride","_getSamplingOverride","rtdeRequest","_parseItemData","responseData","_handleRequestResponse","onflickeraction","actions","flickerDefendingRequired","sendTrackingRequestResponse","requestType","apiRequest","onResponse","metadata","notifyDebugger","requestResponse","dataExchangeType","uIds","providerName","handovers","handover","actionCategory","itemId","itemType","_getExternalCookies","externalCookies","_getAdobeCookies","adobeExternalCookies","system","partnerId","partnerSystem","_parsePayload","payload","parsedPayload","leadInformation","additionalInformation","override","scriptVersion","Version","eventObject","urlReferrer","title","timezoneOffset","getTimezoneOffset","hasHrefValue","evn","_onMessage","ctx","getModule","VwFreespeeModule","issueExternalAction","aditionalData","userToken","_aditionalData","requestData","current","smartSignals2"],"sourceRoot":""}