diff --git a/LICENSE.md b/LICENSE.md index 4492ab52..e5750a27 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 RingCentral, Inc. +Copyright (c) 2014-2015 RingCentral, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation diff --git a/README.md b/README.md index b54cfdfa..3cffd06c 100644 --- a/README.md +++ b/README.md @@ -265,14 +265,13 @@ Subscriptions are created by calling the `getSubscription` method of the RCSDK i ```js var subscription = rcsdk.getSubscription(); -subscription.on(this.subscription.events.notification, function(msg) { +subscription.on(subscription.events.notification, function(msg) { console.log(msg, msg.body); }); subscription.register({ events: ['/account/~/extension/~/presence'], // a list of server-side events - success: function(){ ... } // things to do on success -}); +}).then(...); ``` Once a subscription has been created, the SDK takes care of renewing it automatically. To cancel a subscription, you can diff --git a/build/rc-sdk.js b/build/rc-sdk.js index b2e03f73..385e54c1 100644 --- a/build/rc-sdk.js +++ b/build/rc-sdk.js @@ -960,8 +960,8 @@ return status.toString().substr(0, 1) == '2'; }; Ajax.prototype.parseResponse = function () { - if (!this.isResponseMultipart()) { - try { + try { + if (!this.isResponseMultipart()) { if (typeof this.response == 'string' && this.isResponseContentType(jsonContentType)) { this.data = JSON.parse(this.response); } else { @@ -969,15 +969,7 @@ } if (!this.checkStatus(this.status)) this.error = new Error(this.data.message || this.data.error_description || this.data.description || 'Unknown error'); - } catch (e) { - // Capture parse errors - Log.error('Ajax.parseResponse(): Unable to parse data'); - Log.error(e.stack || e); - Log.error(this.response); - this.error = e; - } - } else { - try { + } else { var boundary = this.getResponseContentType().match(/boundary=([^;]+)/i)[1], parts = this.response.split(boundarySeparator + boundary); if (parts[0].trim() == '') parts.shift(); @@ -1005,12 +997,13 @@ part.parseResponse(); return part; }, this); - } catch (e) { - Log.error('Ajax.parseResponse(): Unable to parse batch response'); - Log.error(e.stack || e); - Log.error(this.response); - this.error = e; } + } catch (e) { + // Capture parse errors + Log.error('Ajax.parseResponse(): Unable to parse data'); + Log.error(e.stack || e); + Log.error(this.response); + this.error = e; } return this; }; @@ -1416,7 +1409,7 @@ options.method = options.method || 'POST'; options.post = Utils.queryStringify(options.post); options.url = this.apiUrl(options.url, { addServer: true }); - return this.getAjax().setOptions(options).setRequestHeader('Content-Type', 'application/x-www-form-urlencoded').setRequestHeader('Accept', 'application/json').setRequestHeader('Authorization', 'Basic' + this.apiKey).send(); + return this.getAjax().setOptions(options).setRequestHeader('Content-Type', 'application/x-www-form-urlencoded').setRequestHeader('Accept', 'application/json').setRequestHeader('Authorization', 'Basic ' + this.apiKey).send(); }; /** * diff --git a/build/rc-sdk.js.map b/build/rc-sdk.js.map index d96aacf1..2b7cb7b3 100644 --- a/build/rc-sdk.js.map +++ b/build/rc-sdk.js.map @@ -1 +1 @@ -{"version":3,"sources":["rc-sdk.js","core/pubnub/PubnubMock.js","core/Utils.js","core/Log.js","core/xhr/XhrResponse.js","core/xhr/XhrMock.js","core/Context.js","core/Observable.js","core/AjaxObserver.js","core/Ajax.js","core/Cache.js","core/Platform.js","core/Subscription.js","core/PageVisibility.js","core/Helper.js","core/Validator.js","core/List.js","helpers/Country.js","helpers/DeviceModel.js","helpers/Language.js","helpers/State.js","helpers/Location.js","helpers/ShippingMethod.js","helpers/Timezone.js","helpers/Account.js","helpers/BlockedNumber.js","helpers/Extension.js","helpers/Presence.js","helpers/Contact.js","helpers/Call.js","helpers/Conferencing.js","helpers/ContactGroup.js","helpers/Device.js","helpers/ForwardingNumber.js","helpers/Message.js","helpers/PhoneNumber.js","helpers/Ringout.js","helpers/Service.js","RCSDK.js","umd.js"],"names":["core_pubnub_PubnubMock","core_Utils","core_Log","core_xhr_XhrResponse","core_xhr_XhrMock","core_Context","core_Observable","core_AjaxObserver","core_Ajax","core_Cache","core_Platform","core_Subscription","core_PageVisibility","core_Helper","core_Validator","core_List","helpers_Country","helpers_DeviceModel","helpers_Language","helpers_State","helpers_Location","helpers_ShippingMethod","helpers_Timezone","helpers_Account","helpers_BlockedNumber","helpers_Extension","helpers_Presence","helpers_Contact","helpers_Call","helpers_Conferencing","helpers_ContactGroup","helpers_Device","helpers_ForwardingNumber","helpers_Message","helpers_PhoneNumber","helpers_Ringout","helpers_Service","RCSDK","exports","WS","url","pubnub","ready","onmessage","onclose","onerror","onopen","close","code","reason","wasClean","receiveMessage","data","$get","context","ws","hasOwn","Object","prototype","hasOwnProperty","toString","rdigit","class2type","split","forEach","name","toLowerCase","Utils","extend","targetObject","sourceObject","options","src","copy","copyIsArray","clone","target","arguments","i","length","deep","isFunction","isPlainObject","isArray","undefined","object","cb","res","queryStringify","parameters","array","self","v","vv","push","encodeURIComponent","join","parseQueryString","queryString","argsParsed","arg","decodeURIComponent","indexOf","trim","pair","key","value","isEmail","multiple","test","isPhoneNumber","argumentsToArray","args","Array","slice","call","isDate","obj","type","isWindow","isNaN","String","nodeType","constructor","getProperty","property","eval","e","poll","fn","interval","timeout","stopPolling","next","delay","setTimeout","clearTimeout","parseString","s","parseNumber","n","parseFloat","Log","logDebug","logInfo","logWarnings","logErrors","addTimestamps","console","log","warn","info","error","disableAll","enableAll","parseArguments","unshift","Date","toLocaleString","debug","apply","XhrResponse","responses","add","response","clear","find","ajax","currentResponse","path","Class","createSingleton","XhrMock","async","method","requestHeaders","withCredentials","readyState","responseHeaders","status","getResponseHeader","header","setRequestHeader","open","send","contentType","getRequestHeader","JSON","parse","Error","bind","setStatus","setResponseHeader","Promise","getPromise","onLoad","stringify","responseText","onload","then","catch","abort","Context","injections","singletons","stubPubnub","stubAjax","factory","usePubnubStub","flag","useAjaxStub","getCryptoJS","CryptoJS","getPubnub","PUBNUB","getLocalStorage","localStorage","getXHR","XHR","Observable","defineProperty","enumerable","writable","hasListeners","event","listeners","registerOneTimeEvent","oneTimeEvents","oneTimeArguments","on","events","callback","isOneTimeEventFired","getOneTimeEventArgumens","emit","splice","result","isOneTimeEvent","setOneTimeEventFired","setOneTimeEventArgumens","some","off","offAll","destroy","emitAndCallback","concat","AjaxObserver","create","beforeRequest","requestSuccess","requestError","jsonContentType","multipartContentType","boundarySeparator","headerSeparator","bodySeparator","Ajax","headers","observer","xhr","getOptions","setOptions","isResponseContentType","getResponseContentType","isResponseMultipart","isResponseUnauthorized","getContentType","isMultipart","isUnauthorized","isLoaded","checkOptions","defaultHeaders","keys","toUpperCase","get","post","request","parseResponse","resolve","reject","checkStatus","substr","message","error_description","description","stack","boundary","match","parts","shift","pop","map","part","subParts","replace","ajaxPart","headerParts","statusInfo","Cache","prefix","storage","prefixKey","setItem","removeItem","getItem","item","clean","forcedTokenType","Platform","server","apiKey","account","urlPrefix","apiVersion","accountPrefix","accessTokenTtl","refreshTokenTtl","refreshTokenTtlRemember","refreshHandicapMs","refreshDelayMs","clearCacheOnRefreshError","refreshPromise","cacheId","pollInterval","releaseTimeout","accessViolation","logoutSuccess","logoutError","authorizeSuccess","authorizeError","refreshSuccess","refreshError","getStorage","getAjax","clearStorage","remember","authorize","authCall","username","extension","password","setCache","isPaused","now","parseInt","pause","resume","refresh","refreshPolling","authData","getAuthData","access_token","refresh_token","refreshExpireTime","logout","token","getToken","isTokenValid","getTokenType","token_type","expires_in","refresh_token_expires_in","expireTime","getTime","isAuthorized","cancelAccessToken","oldAuthData","forceAuthentication","apiCall","apiUrl","addServer","builtUrl","addMethod","addToken","renewHandicapMs","Subscription","eventFilters","subscription","expirationTime","expiresIn","deliveryMode","transportType","encryption","address","subscriberKey","secretKey","id","creationTime","uri","socket","notification","removeSuccess","removeError","renewSuccess","renewError","subscribeSuccess","subscribeError","createPubnub","getCrypto","getPlatform","register","isSubscribed","renew","subscribe","addEvents","setEvents","getFullEventFilters","updateSubscription","subscribeAtPubnub","unsubscribe","remove","timeToExpiration","CLOSE_NORMAL","notify","encryptionKey","enc","Base64","decrypted","AES","decrypt","ciphertext","mode","ECB","padding","pad","Pkcs7","Utf8","PageVisibility","hidden","visible","document","window","addEventListener","onchange","onfocusin","onfocusout","onpageshow","onpagehide","onfocus","onblur","evt","h","evtMap","focus","focusin","pageshow","blur","focusout","pagehide","change","isVisible","Helper","defaultProperty","getContext","createUrl","getId","isNew","getUri","resetAsNew","parseMultipartResponse","filter","loadRequest","saveRequest","deleteRequest","syncRequest","sync","syncToken","syncType","nextPageExists","navigation","index","getIdFn","gather","reduce","merge","supplement","mergeItems","supplementIndex","updatedIDs","newItem","Validator","validate","validators","errors","isValid","validator","field","email","phone","required","max","min","List","propertyExtractor","stringComparator","a","b","localeCompare","numberComparator","comparator","extractFn","sortBy","compareFn","item1","item2","equalsFilter","condition","containsFilter","regexpFilter","RegExp","filterConfigs","opt","filterBy","filterFn","pass","CountryHelper","DeviceModelHelper","device","addons","count","cleanForSaving","deviceClass","addon","devices","LanguageHelper","languages","StateHelper","countryHelper","countryId","opts","country","LocationHelper","state","uniqueNPAs","stateId","onlyUniqueNPA","npa","nxx","ShippingMethodHelper","shippingMethods","TimezoneHelper","AccountHelper","BlockedNumberHelper","extensionId","phoneNumber","ExtensionHelper","department","user","announcement","voicemail","departmentId","isUser","isDepartment","isAnnouncement","isVoicemail","search","toLocaleLowerCase","extensionNumber","PresenceHelper","detailed","presence","isAvailable","presenceStatus","getSubscription","presences","attachToExtensions","extensions","isCallInProgress","presenceCall","telephonyStatus","ContactHelper","root","groupId","getFieldValues","where","fields","asHash","getFullName","contact","nameFields","getEmails","emailFields","getPhones","phoneFields","getFaxes","faxFields","getAddresses","addressFields","isAlive","availability","string","otherFields","inAddresses","transformFn","strict","found","matchWith","transformed","addressSubFields","subField","matchAsPhone","attachToCallerInfos","callerInfos","contacts","callerInfoIndex","callerInfo","indexedCallerInfos","foundContact","foundPhone","contactPhone","alive","startsWith","phonesOnly","faxesOnly","firstName","lastName","email2","email3","CallHelper","personal","active","getSessionId","sessionId","isInProgress","isInbound","direction","isOutbound","isMissed","isFindMe","action","getCallerInfo","from","to","getAllCallerInfos","formatDuration","addZero","duration","hours","Math","floor","mins","secs","attachContacts","calls","checkMergeability","outboundRingOutCall","inboundCall","dateString","startTime","abs","maxStartTimeDiscrepancy","combineCalls","hasSubsequent","subsequent","processCalls","processedCalls","callsToMerge","merged","secondCall","parsePresenceCalls","activeCalls","activeCall","getSignature","cleanup","mergePresenceCalls","presenceCalls","currentDate","toISOString","mergeAll","presenceAndCalls","ConferencingHelper","ContactGroupHelper","groupName","DeviceHelper","deviceModel","order","emergencyServiceAddress","street","city","zip","customerName","model","ForwardingNumberHelper","forwardingNumber","hasFeature","feature","features","MessageHelper","platform","fax","sms","pager","isSMS","isPager","isVoiceMail","isFax","isRead","readStatus","setIsRead","getAttachmentUrl","attachments","getAttachmentContentType","getCallerInfos","conversationId","messages","shorten","text","subject","validateSMS","validatePager","PhoneNumberHelper","lookup","reserve","date","reservedTill","unreserve","usageType","paymentType","RingoutHelper","ringout","callStatus","isSuccess","isError","ServiceHelper","isEnabled","serviceFeatures","f","featureName","enabled","isSmsEnabled","isServiceFeatureEnabledMethod","isSmsReceivingEnabled","isPresenceEnabled","isRingOutEnabled","isInternationalCallingEnabled","isDndEnabled","isFaxEnabled","isFaxReceivingEnabled","isVoicemailEnabled","isPagerEnabled","isPagerReceivingEnabled","isVoipCallingEnabled","isVideoConferencingEnabled","isSalesForceEnabled","isIntercomEnabled","isPagingEnabled","isConferencingEnabled","isFreeSoftPhoneLinesEnabled","isHipaaComplianceEnabled","isCallParkEnabled","isOnDemandCallRecordingEnabled","_context","version","getAjaxObserver","getXhrResponse","getCache","getPageVisibility","getHelper","getObservable","getValidator","getLog","getUtils","getList","getCountryHelper","getDeviceModelHelper","getLanguageHelper","getLocationHelper","getShippingMethodHelper","getStateHelper","getTimezoneHelper","getAccountHelper","getBlockedNumberHelper","getCallHelper","getConferencingHelper","getContactHelper","getContactGroupHelper","getDeviceHelper","getExtensionHelper","getForwardingNumberHelper","getMessageHelper","getPhoneNumberHelper","getPresenceHelper","getRingoutHelper","getServiceHelper","Function","XMLHttpRequest","ActiveXObject","e1","e2","e3","getPUBNUB","module","require","define","amd","noConflict","old"],"mappings":"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","file":"rc-sdk.js","sourcesContent":[null,"define('core/pubnub/PubnubMock', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n function WS(url) {\n this.url = url;\n this.pubnub = {\n ready: function () {\n }\n };\n this.onmessage = function () {\n };\n this.onclose = function () {\n };\n this.onerror = function () {\n };\n this.onopen = function () {\n };\n this.close = function (code, reason) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: true\n });\n };\n /**\n * This stub allows to simulate message arrival\n * @param data\n */\n this.receiveMessage = function (data) {\n this.onmessage({ data: data });\n };\n this.onopen();\n }\n /**\n * @alias RCSDK.core.pubnub.Mock\n * @type {PUBNUB}\n */\n module.exports = {\n /**\n * @param {Context} context\n * @returns {PUBNUB}\n */\n $get: function (context) {\n return { ws: WS };\n }\n };\n});","define('core/Utils', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n var hasOwn = Object.prototype.hasOwnProperty, toString = Object.prototype.toString, rdigit = /\\d/, class2type = {};\n // Populate the class2type map\n 'Boolean Number String Function Array Date RegExp Object'.split(' ').forEach(function (name) {\n class2type['[object ' + name + ']'] = name.toLowerCase();\n });\n /**\n * @alias RCSDK.core.Utils\n * @name Utils\n */\n var Utils = module.exports = {\n /**\n * Ported from jQuery.fn.extend\n * Optional first parameter makes deep copy\n * @param {object} targetObject\n * @param {object} sourceObject\n * @returns {object}\n */\n extend: function extend(targetObject, sourceObject) {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n // Handle a deep copy situation\n if (typeof target === 'boolean') {\n deep = target;\n // skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== 'object' && !this.isFunction(target)) {\n target = {};\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n src = target[name];\n copy = options[name];\n // Prevent never-ending loop\n if (target === copy) {\n continue;\n }\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (this.isPlainObject(copy) || (copyIsArray = this.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && this.isArray(src) ? src : [];\n } else {\n clone = src && this.isPlainObject(src) ? src : {};\n }\n // Never move original objects, clone them\n target[name] = this.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n // Return the modified object\n return target;\n },\n forEach: function (object, cb) {\n for (var i in object) {\n if (!object.hasOwnProperty(i))\n continue;\n var res = cb(object[i], i);\n if (res === false)\n break;\n }\n },\n /**\n * TODO Replace with something better\n * @see https://github.com/joyent/node/blob/master/lib/querystring.js\n * @param {object} parameters\n * @returns {string}\n */\n queryStringify: function (parameters) {\n var array = [], self = this;\n this.forEach(parameters, function (v, i) {\n if (self.isArray(v)) {\n v.forEach(function (vv) {\n array.push(encodeURIComponent(i) + '=' + encodeURIComponent(vv));\n });\n } else {\n array.push(encodeURIComponent(i) + '=' + encodeURIComponent(v));\n }\n });\n return array.join('&');\n },\n /**\n * TODO Replace with something better\n * @see https://github.com/joyent/node/blob/master/lib/querystring.js\n * @param {string} queryString\n * @returns {object}\n */\n parseQueryString: function (queryString) {\n var argsParsed = {}, self = this;\n queryString.split('&').forEach(function (arg) {\n arg = decodeURIComponent(arg);\n if (arg.indexOf('=') == -1) {\n argsParsed[arg.trim()] = true;\n } else {\n var pair = arg.split('='), key = pair[0].trim(), value = pair[1].trim();\n if (key in argsParsed) {\n if (key in argsParsed && !self.isArray(argsParsed[key]))\n argsParsed[key] = [argsParsed[key]];\n argsParsed[key].push(value);\n } else {\n argsParsed[key] = value;\n }\n }\n });\n return argsParsed;\n },\n /**\n * Returns true if the passed value is valid email address.\n * @param {string} v\n * @param {boolean} multiple Checks multiple comma separated emails according to RFC 2822\n * @returns {boolean}\n */\n isEmail: function (v, multiple) {\n if (!!multiple) {\n //this Regexp is also suitable for multiple emails (comma separated)\n return /^(?:[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[ ,;]*)+$/i.test(v);\n } else {\n return /^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(v);\n }\n },\n isPhoneNumber: function (v) {\n return /\\+?1[0-9]{3}[0-9a-z]{7}/im.test(v.toString().split(/[^0-9a-z\\+]/im).join(''));\n },\n /**\n * @param args\n * @returns {Array}\n */\n argumentsToArray: function (args) {\n return Array.prototype.slice.call(args || [], 0);\n },\n isDate: function (obj) {\n return this.type(obj) === 'date';\n },\n isFunction: function (obj) {\n return this.type(obj) === 'function';\n },\n isArray: Array.isArray || function (obj) {\n return this.type(obj) === 'array';\n },\n // A crude way of determining if an object is a window\n isWindow: function (obj) {\n return obj && typeof obj === 'object' && 'setInterval' in obj;\n },\n isNaN: function (obj) {\n return obj == null || !rdigit.test(obj) || isNaN(obj);\n },\n type: function (obj) {\n return obj == null ? String(obj) : class2type[toString.call(obj)] || 'object';\n },\n isPlainObject: function (obj) {\n // Must be an Object.\n // Because of IE, we also have to check the presence of the constructor property.\n // Make sure that DOM nodes and window objects don't pass through, as well\n if (!obj || this.type(obj) !== 'object' || obj.nodeType || this.isWindow(obj)) {\n return false;\n }\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwn.call(obj, 'constructor') && !hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')) {\n return false;\n }\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n }\n return key === undefined || hasOwn.call(obj, key);\n },\n getProperty: function (obj, property) {\n try {\n return eval('obj.' + property); //TODO Refactor\n } catch (e) {\n return undefined;\n }\n },\n poll: function (fn, interval, timeout) {\n this.stopPolling(timeout);\n interval = interval || 1000;\n var next = function (delay) {\n delay = delay || interval;\n interval = delay;\n return setTimeout(function () {\n fn(next, delay);\n }, delay);\n };\n return next();\n },\n stopPolling: function (timeout) {\n timeout && clearTimeout(timeout);\n },\n parseString: function (s) {\n return s ? s.toString() : '';\n },\n parseNumber: function (n) {\n if (!n)\n return 0;\n n = parseFloat(n);\n return isNaN(n) ? 0 : n;\n },\n $get: function (context) {\n return Utils;\n }\n };\n});","define('core/Log', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.Log\n * @name Log\n */\n var Log = module.exports = {\n logDebug: false,\n logInfo: false,\n logWarnings: false,\n logErrors: false,\n addTimestamps: true,\n /** @type {Console} */\n console: console || {\n // safety\n log: function () {\n },\n warn: function () {\n },\n info: function () {\n },\n error: function () {\n }\n },\n disableAll: function () {\n this.logDebug = false;\n this.logInfo = false;\n this.logWarnings = false;\n this.logErrors = false;\n },\n enableAll: function () {\n this.logDebug = true;\n this.logInfo = true;\n this.logWarnings = true;\n this.logErrors = true;\n },\n parseArguments: function (args) {\n args = Utils.argumentsToArray(args);\n if (this.addTimestamps)\n args.unshift(new Date().toLocaleString(), '-');\n return args;\n },\n debug: function () {\n if (this.logDebug)\n this.console.log.apply(this.console, this.parseArguments(arguments));\n },\n info: function () {\n if (this.logInfo)\n this.console.info.apply(this.console, this.parseArguments(arguments));\n },\n warn: function () {\n if (this.logWarnings)\n this.console.warn.apply(this.console, this.parseArguments(arguments));\n },\n error: function () {\n if (this.logErrors)\n this.console.error.apply(this.console, this.parseArguments(arguments));\n },\n $get: function (context) {\n return Log;\n }\n };\n});","define('core/xhr/XhrResponse', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n /**\n * Ajax Response Manager\n * @constructor\n * @alias RCSDK.core.XhrResponse\n */\n function XhrResponse() {\n /** @type {IXhrResponse[]} */\n this.responses = [];\n }\n /**\n * @param {IXhrResponse} response\n */\n XhrResponse.prototype.add = function (response) {\n this.responses.push(response);\n };\n XhrResponse.prototype.clear = function () {\n this.responses = [];\n };\n /**\n * @param {XhrMock} ajax\n * @returns {IXhrResponse}\n */\n XhrResponse.prototype.find = function (ajax) {\n var currentResponse = null;\n this.responses.forEach(function (response) {\n if (ajax.url.indexOf(response.path) > -1 && (!response.test || response.test(ajax))) {\n currentResponse = response;\n }\n });\n return currentResponse;\n };\n module.exports = {\n Class: XhrResponse,\n /**\n * @static\n * @param {Context} context\n * @returns {XhrResponse}\n */\n $get: function (context) {\n return context.createSingleton('XhrResponse', function () {\n return new XhrResponse(context);\n });\n }\n }; /**\n * @typedef {Object} IXhrResponse\n * @property {string} path\n * @property {function(Ajax)} response Response mock function\n * @property {function(Ajax)} test? This will be executed to determine, whether this mock is applicable\n */\n});","/**\n * istanbul ignore next\n */\ndefine('core/xhr/XhrMock', [\n 'require',\n 'exports',\n 'module',\n 'core/Log',\n 'core/Utils',\n 'core/xhr/XhrResponse'\n], function (require, exports, module) {\n 'use strict';\n var Log = require('../Log'), Utils = require('../Utils');\n /**\n * @constructor\n * @alias RCSDK.core.ajax.XhrMock\n * @extends XMLHttpRequest\n */\n function XhrMock(context) {\n // Service\n this.responses = require('./XhrResponse').$get(context);\n // Request\n this.async = true;\n this.method = '';\n this.url = '';\n this.requestHeaders = {};\n this.withCredentials = false;\n // Response\n this.data = null;\n this.readyState = 0;\n this.responseHeaders = {};\n this.status = 0;\n this.context = context;\n }\n XhrMock.prototype.getResponseHeader = function (header) {\n return this.responseHeaders[header.toLowerCase()];\n };\n XhrMock.prototype.setRequestHeader = function (header, value) {\n this.requestHeaders[header.toLowerCase()] = value;\n };\n XhrMock.prototype.open = function (method, url, async) {\n this.method = method;\n this.url = url;\n this.async = async;\n };\n XhrMock.prototype.send = function (data) {\n var contentType = this.getRequestHeader('Content-Type');\n this.data = data;\n if (this.data && typeof this.data == 'string') {\n // For convenience encoded post data will be decoded\n if (contentType == 'application/json')\n this.data = JSON.parse(this.data);\n if (contentType == 'application/x-www-form-urlencoded')\n this.data = Utils.parseQueryString(this.data);\n }\n Log.debug('API REQUEST', this.method, this.url);\n var currentResponse = this.responses.find(this);\n if (!currentResponse) {\n setTimeout(function () {\n this.onerror && this.onerror(new Error('Unknown request: ' + this.url));\n }.bind(this), 1);\n return;\n }\n this.setStatus(200);\n this.setResponseHeader('Content-Type', 'application/json');\n var res = currentResponse.response(this), Promise = this.context.getPromise();\n function onLoad(res) {\n if (this.getResponseHeader('Content-Type') == 'application/json')\n res = JSON.stringify(res);\n this.responseText = res;\n setTimeout(function () {\n this.onload && this.onload();\n }.bind(this), 1);\n }\n if (res instanceof Promise) {\n res.then(onLoad.bind(this)).catch(this.onerror.bind(this));\n } else\n onLoad.call(this, res);\n };\n XhrMock.prototype.abort = function () {\n Log.debug('XhrMock.destroy(): Aborted');\n };\n XhrMock.prototype.getRequestHeader = function (header) {\n return this.requestHeaders[header.toLowerCase()];\n };\n XhrMock.prototype.setResponseHeader = function (header, value) {\n this.responseHeaders[header.toLowerCase()] = value;\n };\n XhrMock.prototype.setStatus = function (status) {\n this.status = status;\n return this;\n };\n module.exports = {\n Class: XhrMock,\n /**\n * @static\n * @param {Context} context\n * @returns {XhrMock}\n */\n $get: function (context) {\n return new XhrMock(context);\n }\n };\n});","define('core/Context', [\n 'require',\n 'exports',\n 'module',\n 'core/pubnub/PubnubMock',\n 'core/xhr/XhrMock'\n], function (require, exports, module) {\n 'use strict';\n /**\n * @constructor\n * @param {IInjections} injections\n */\n function Context(injections) {\n /** @private */\n this.singletons = {};\n /** @type {IInjections} */\n this.injections = injections;\n this.stubPubnub = false;\n this.stubAjax = false;\n }\n /**\n * @param {string} name\n * @param {function} factory\n * @returns {*}\n */\n Context.prototype.createSingleton = function (name, factory) {\n if (!this.singletons[name])\n this.singletons[name] = factory();\n return this.singletons[name];\n };\n Context.prototype.usePubnubStub = function (flag) {\n this.stubPubnub = !!flag;\n return this;\n };\n Context.prototype.useAjaxStub = function (flag) {\n this.stubAjax = !!flag;\n return this;\n };\n /**\n * @returns {CryptoJS}\n */\n Context.prototype.getCryptoJS = function () {\n return this.injections.CryptoJS;\n };\n /**\n * @returns {PUBNUB}\n */\n Context.prototype.getPubnub = function () {\n return this.stubPubnub ? require('./pubnub/PubnubMock').$get(this) : this.injections.PUBNUB;\n };\n /**\n * @returns {Storage}\n * @abstract\n */\n Context.prototype.getLocalStorage = function () {\n return this.injections.localStorage;\n };\n /**\n * @returns {function(new:Promise)}\n */\n Context.prototype.getPromise = function () {\n return this.injections.Promise;\n };\n /**\n * @returns {XMLHttpRequest}\n */\n Context.prototype.getXHR = function () {\n return this.stubAjax ? require('./xhr/XhrMock').$get(this) : new this.injections.XHR();\n };\n module.exports = {\n Class: Context,\n /**\n * @param {IInjections} injections\n */\n $get: function (injections) {\n return new Context(injections);\n }\n };\n});","define('core/Observable', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Log'\n], function (require, exports, module) {\n var Utils = require('./Utils'), Log = require('./Log');\n /**\n * @constructor\n * @alias RCSDK.core.Observable\n */\n function Observable() {\n if (!(this instanceof Observable))\n throw new Error('Observable(): New operator was omitted');\n Object.defineProperty(this, 'listeners', {\n value: {},\n enumerable: false,\n writable: true\n });\n Object.defineProperty(this, 'oneTimeEvents', {\n value: {},\n enumerable: false,\n writable: true\n });\n Object.defineProperty(this, 'oneTimeArguments', {\n value: {},\n enumerable: false,\n writable: true\n });\n }\n // Object.create({}) is not needed\n // Do not put Object or Function.prototype instead of {}, otherwise all instances will get non-writable 'name' property\n // Observable.prototype = {};\n Object.defineProperty(Observable.prototype, 'constructor', {\n value: Observable,\n enumerable: false\n });\n Observable.prototype.hasListeners = function (event) {\n return event in this.listeners;\n };\n Observable.prototype.registerOneTimeEvent = function (event) {\n this.oneTimeEvents[event] = false;\n this.oneTimeArguments[event] = [];\n };\n Observable.prototype.on = function (events, callback) {\n if (typeof events == 'string')\n events = [events];\n if (!events)\n throw new Error('No events to subscribe to');\n if (typeof callback !== 'function')\n throw new Error('Callback must be a function');\n var self = this;\n events.forEach(function (event) {\n if (!self.hasListeners(event))\n self.listeners[event] = [];\n self.listeners[event].push(callback);\n if (self.isOneTimeEventFired(event)) {\n // Fire listener immediately if is inited already\n Log.debug('Observable.on(%s): One-time event has been fired already, executing callback', event);\n callback.apply(self, self.getOneTimeEventArgumens(event));\n }\n });\n return this;\n };\n Observable.prototype.emit = function (event) {\n if (this.isOneTimeEventFired(event)) {\n Log.debug('Observable.emit(%s): One-time event has been fired already', event);\n return null;\n }\n var self = this, args = Utils.argumentsToArray(arguments).splice(1), result = null;\n if (this.isOneTimeEvent(event)) {\n this.setOneTimeEventFired(event);\n this.setOneTimeEventArgumens(event, args);\n }\n if (!this.hasListeners(event))\n return null;\n this.listeners[event].some(function (callback) {\n result = callback.apply(self, args);\n return result === false;\n });\n return result;\n };\n Observable.prototype.off = function (event, callback) {\n var self = this;\n if (!callback) {\n delete this.listeners[event];\n } else {\n if (!this.hasListeners(event))\n return this;\n this.listeners[event].forEach(function (cb, i) {\n if (cb === callback)\n delete self.listeners[event][i];\n });\n }\n return this;\n };\n Observable.prototype.isOneTimeEvent = function (event) {\n return event in this.oneTimeEvents;\n };\n Observable.prototype.isOneTimeEventFired = function (event) {\n if (!this.isOneTimeEvent(event))\n return false;\n return this.oneTimeEvents[event];\n };\n Observable.prototype.setOneTimeEventFired = function (event) {\n this.oneTimeEvents[event] = true;\n };\n Observable.prototype.setOneTimeEventArgumens = function (event, args) {\n this.oneTimeArguments[event] = args;\n };\n Observable.prototype.getOneTimeEventArgumens = function (event) {\n return this.oneTimeArguments[event];\n };\n Observable.prototype.offAll = function () {\n this.listeners = {};\n this.oneTimeEvents = {};\n this.oneTimeArguments = {};\n };\n Observable.prototype.destroy = function () {\n this.offAll();\n Log.debug('Observable.destroy(): Listeners were destroyed');\n return this;\n };\n /**\n * @param {string} event\n * @param {Array} args\n * @param {function} [callback]\n */\n Observable.prototype.emitAndCallback = function (event, args, callback) {\n args = Utils.argumentsToArray(args);\n if (event)\n this.emit.apply(this, [event].concat(args));\n if (callback)\n callback.apply(this, args);\n return this;\n };\n module.exports = {\n Class: Observable,\n /**\n * @param {Context} context\n * @returns {Observable}\n */\n $get: function (context) {\n return new Observable(context);\n }\n };\n});","define('core/AjaxObserver', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.AjaxObserver\n */\n function AjaxObserver() {\n Observable.call(this);\n }\n AjaxObserver.prototype = Object.create(Observable.prototype);\n AjaxObserver.prototype.events = {\n beforeRequest: 'beforeRequest',\n // parameters: ajax\n requestSuccess: 'requestSuccess',\n // means that response was successfully fetched from server\n requestError: 'requestError' // means that request failed completely\n };\n module.exports = {\n Class: AjaxObserver,\n /**\n * @param {Context} context\n * @returns {AjaxObserver}\n */\n $get: function (context) {\n return context.createSingleton('AjaxObserver', function () {\n return new AjaxObserver();\n });\n }\n };\n});","define('core/Ajax', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Utils',\n 'core/Log',\n 'core/AjaxObserver'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Utils = require('./Utils'), Log = require('./Log'), jsonContentType = 'application/json', multipartContentType = 'multipart/mixed', boundarySeparator = '--', headerSeparator = ':', bodySeparator = '\\n\\n';\n /**\n * @typedef {Object} IAjaxOptions\n * @property {string} url\n * @property {string} method?\n * @property {boolean} async?\n * @property {Object} post?\n * @property {Object} get?\n * @property {Object} headers?\n */\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Ajax\n * @param {Context} [context]\n */\n function Ajax(context) {\n Observable.call(this);\n /** @type {Ajax[]|object} */\n this.data = null;\n /** @type {Error|null} */\n this.error = null;\n this.response = '';\n this.headers = {};\n this.status = 0;\n /**\n * @type {IAjaxOptions}\n * @protected\n */\n this.options = {};\n this.context = context;\n /** @type {AjaxObserver} */\n this.observer = require('./AjaxObserver').$get(context);\n /** @type {XMLHttpRequest} */\n this.xhr = null;\n }\n Ajax.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Ajax.prototype, 'constructor', {\n value: Ajax,\n enumerable: false\n });\n /**\n * @returns {IAjaxOptions}\n */\n Ajax.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * @param {IAjaxOptions} [options]\n * @returns {Ajax}\n */\n Ajax.prototype.setOptions = function (options) {\n if (options)\n this.options = options;\n return this;\n };\n /**\n * @param {string} name\n * @param {string} value\n * @returns {Ajax}\n */\n Ajax.prototype.setRequestHeader = function (name, value) {\n this.options.headers = this.options.headers || {};\n this.options.headers[name.toLowerCase()] = value;\n return this;\n };\n /**\n * @param {string} name\n * @param {string} value\n * @returns {Ajax}\n */\n Ajax.prototype.setResponseHeader = function (name, value) {\n this.headers[name.toLowerCase()] = value;\n return this;\n };\n /**\n * @param {string} name\n * @returns {string}\n */\n Ajax.prototype.getRequestHeader = function (name) {\n this.options.headers = this.options.headers || {};\n return this.options.headers[name.toLowerCase()];\n };\n /**\n * @param {string} name\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (name) {\n return this.headers[name.toLowerCase()];\n };\n /**\n * @param {string} type\n * @returns {boolean}\n */\n Ajax.prototype.isResponseContentType = function (type) {\n return this.getResponseContentType().indexOf(type) > -1;\n };\n /**\n * @returns {string}\n */\n Ajax.prototype.getResponseContentType = function () {\n return this.getResponseHeader('Content-Type') || '';\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isResponseMultipart = function () {\n return this.isResponseContentType(multipartContentType);\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isResponseUnauthorized = function () {\n return this.status == 401;\n };\n /**\n * @deprecated\n * @returns {string}\n */\n Ajax.prototype.getContentType = function () {\n return this.getResponseContentType();\n };\n /**\n * @deprecated\n * @returns {boolean}\n */\n Ajax.prototype.isMultipart = function () {\n return this.isResponseMultipart();\n };\n /**\n * @deprecated\n * @returns {boolean}\n */\n Ajax.prototype.isUnauthorized = function () {\n return this.isResponseUnauthorized();\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isLoaded = function () {\n return !!this.status;\n };\n /**\n * Checks the send options, defaulting various of the options,\n * and consuming / transforming some of the options (like get).\n * @returns {Ajax}\n */\n Ajax.prototype.checkOptions = function () {\n if (!this.options.url)\n throw new Error('Url is not defined');\n var defaultHeaders = {\n 'Accept': jsonContentType,\n 'Content-Type': jsonContentType\n }, headers = this.options.headers || {};\n this.options.headers = {};\n Object.keys(defaultHeaders).forEach(function (key) {\n this.setRequestHeader(key, defaultHeaders[key]);\n }, this);\n Object.keys(headers).forEach(function (key) {\n this.setRequestHeader(key, headers[key]);\n }, this);\n this.options.method = this.options.method ? this.options.method.toUpperCase() : 'GET';\n this.options.async = this.options.async !== undefined ? this.options.async : true;\n this.options.get = this.options.get || null;\n this.options.post = this.options.post ? typeof this.options.post !== 'string' && this.getRequestHeader('Content-Type') === jsonContentType ? JSON.stringify(this.options.post) : this.options.post : '';\n this.options.url = this.options.url + (this.options.get ? (this.options.url.indexOf('?') > -1 ? '&' : '?') + Utils.queryStringify(this.options.get) : '');\n if ([\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS'\n ].indexOf(this.options.method) < 0)\n throw new Error('Method has wrong value');\n delete this.options.get;\n return this;\n };\n /**\n * @returns {Promise}\n */\n Ajax.prototype.send = function () {\n this.observer.emit(this.observer.events.beforeRequest, this);\n return this.request().then(function (ajax) {\n ajax.parseResponse();\n if (ajax.error)\n throw ajax.error;\n return ajax;\n }.bind(this)).then(function (ajax) {\n this.observer.emit(this.observer.events.requestSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n e.ajax = this;\n this.observer.emit(this.observer.events.requestError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @returns {XMLHttpRequest}\n */\n Ajax.prototype.getXHR = function () {\n return this.context.getXHR();\n };\n /**\n * @returns {Promise}\n */\n Ajax.prototype.request = function () {\n return new (this.context.getPromise())(function (resolve, reject) {\n this.checkOptions();\n var options = this.options, xhr = this.getXHR();\n xhr.open(options.method, options.url, options.async);\n //@see http://stackoverflow.com/questions/19666809/cors-withcredentials-support-limited\n xhr.withCredentials = true;\n xhr.onload = function () {\n this.status = xhr.status;\n this.response = xhr.responseText;\n this.setResponseHeader('Content-Type', xhr.getResponseHeader('Content-Type') || jsonContentType);\n // if no header, set default\n resolve(this);\n }.bind(this);\n xhr.onerror = function (event) {\n reject(new Error('The request cannot be sent')); // CORS or network issue\n };\n Utils.forEach(options.headers, function (value, header) {\n xhr.setRequestHeader(header, value);\n });\n xhr.send(options.method === 'GET' ? null : options.post);\n this.xhr = xhr;\n }.bind(this));\n };\n Ajax.prototype.checkStatus = function (status) {\n return status.toString().substr(0, 1) == '2';\n };\n Ajax.prototype.parseResponse = function () {\n if (!this.isResponseMultipart()) {\n try {\n if (typeof this.response == 'string' && this.isResponseContentType(jsonContentType)) {\n this.data = JSON.parse(this.response);\n } else {\n this.data = this.response; //TODO Add more parsers\n }\n if (!this.checkStatus(this.status))\n this.error = new Error(this.data.message || this.data.error_description || this.data.description || 'Unknown error');\n } catch (e) {\n // Capture parse errors\n Log.error('Ajax.parseResponse(): Unable to parse data');\n Log.error(e.stack || e);\n Log.error(this.response);\n this.error = e;\n }\n } else {\n try {\n var boundary = this.getResponseContentType().match(/boundary=([^;]+)/i)[1], parts = this.response.split(boundarySeparator + boundary);\n if (parts[0].trim() == '')\n parts.shift();\n if (parts[parts.length - 1].trim() == boundarySeparator)\n parts.pop();\n // Step 1. Parse all parts into Ajax objects\n parts = parts.map(function (part) {\n var subParts = part.trim().replace(/\\r/g, '').split(bodySeparator), ajaxPart = new Ajax(this.context);\n (subParts.length > 1 ? subParts.shift() : '').split('\\n').forEach(function (header) {\n if (header.length == 0)\n return res;\n var headerParts = header.split(headerSeparator), name = headerParts.shift().trim();\n ajaxPart.setResponseHeader(name, headerParts.join(headerSeparator).trim());\n }, this);\n ajaxPart.response = subParts.join(bodySeparator);\n return ajaxPart;\n }, this);\n // Step 2. Claim first part as statuses, assign status from this and parse the response\n var statusInfo = parts.shift();\n statusInfo.status = this.status;\n statusInfo.parseResponse();\n // Steo 3. For the rest of parts assign status and parse the response\n this.data = parts.map(function (part, i) {\n part.status = statusInfo.data.response[i].status;\n part.parseResponse();\n return part;\n }, this);\n } catch (e) {\n Log.error('Ajax.parseResponse(): Unable to parse batch response');\n Log.error(e.stack || e);\n Log.error(this.response);\n this.error = e;\n }\n }\n return this;\n };\n Ajax.prototype.destroy = function () {\n this.xhr && this.xhr.abort();\n return Observable.prototype.destroy.call(this);\n };\n module.exports = {\n Class: Ajax,\n /**\n * @static\n * @param {Context} context\n * @returns {Ajax}\n */\n $get: function (context) {\n return new Ajax(context);\n }\n };\n});","define('core/Cache', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Utils = require('./Utils');\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Cache\n * @param {Context} context\n */\n function Cache(context) {\n Observable.call(this);\n this.prefix = 'rc-';\n this.storage = context.getLocalStorage(); // storage must be defined from outside\n }\n Cache.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Cache.prototype, 'constructor', {\n value: Cache,\n enumerable: false\n });\n Cache.prototype.prefixKey = function (key) {\n return this.prefix + key;\n };\n Cache.prototype.setItem = function (key, data) {\n this.storage.setItem(this.prefixKey(key), JSON.stringify(data));\n return this;\n };\n Cache.prototype.removeItem = function (key) {\n this.storage.removeItem(this.prefixKey(key));\n return this;\n };\n Cache.prototype.getItem = function (key) {\n var item = this.storage.getItem(this.prefixKey(key));\n if (!item)\n return null;\n return JSON.parse(item);\n };\n Cache.prototype.clean = function () {\n for (var key in this.storage) {\n if (!this.storage.hasOwnProperty(key))\n continue;\n if (key.indexOf(this.prefix) === 0) {\n this.storage.removeItem(key);\n delete this.storage[key];\n }\n }\n return this;\n };\n module.exports = {\n Class: Cache,\n /**\n * @param {Context} context\n * @returns {Cache}\n */\n $get: function (context) {\n return context.createSingleton('Cache', function () {\n return new Cache(context);\n });\n }\n };\n});","define('core/Platform', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Observable',\n 'core/Log',\n 'core/Cache',\n 'core/Ajax'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils'), Observable = require('./Observable').Class, Log = require('./Log'), forcedTokenType = 'forced';\n /**\n * @typedef {Object} PlatformAuthInfo\n * @property {string} token_type\n * @property {string} access_token\n * @property {string} expires_in\n * @property {int} expireTime\n * @property {string} refresh_token\n * @property {string} refresh_token_expires_in\n * @property {int} refreshExpireTime\n * @property {string} scope\n */\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Platform\n * @param {Context} context\n */\n function Platform(context) {\n Observable.call(this);\n this.server = '';\n this.apiKey = '';\n this.account = '~';\n this.urlPrefix = '/restapi';\n this.apiVersion = 'v1.0';\n this.accountPrefix = '/account/';\n this.accessTokenTtl = 10 * 60;\n // 10 minutes\n this.refreshTokenTtl = 10 * 60 * 60;\n // 10 hours\n this.refreshTokenTtlRemember = 7 * 24 * 60 * 60;\n // 1 week\n this.refreshHandicapMs = 60 * 1000;\n // 1 minute\n this.refreshDelayMs = 100;\n this.clearCacheOnRefreshError = true;\n /** @type {Promise} */\n this.refreshPromise = null;\n this.context = context;\n }\n Platform.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Platform.prototype, 'constructor', {\n value: Platform,\n enumerable: false\n });\n Platform.prototype.cacheId = 'platform';\n Platform.prototype.pollInterval = 250;\n Platform.prototype.releaseTimeout = 5000;\n // If queue was not released then force it to do so after some timeout\n Platform.prototype.events = {\n accessViolation: 'accessViolation',\n logoutSuccess: 'logoutSuccess',\n logoutError: 'logoutError',\n authorizeSuccess: 'authorizeSuccess',\n authorizeError: 'authorizeError',\n refreshSuccess: 'refreshSuccess',\n refreshError: 'refreshError'\n };\n /**\n * @returns {Cache}\n */\n Platform.prototype.getStorage = function () {\n return require('./Cache').$get(this.context);\n };\n /**\n * @returns {Ajax}\n */\n Platform.prototype.getAjax = function () {\n return require('./Ajax').$get(this.context);\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.clearStorage = function () {\n this.getStorage().clean();\n return this;\n };\n /**\n * @param {boolean} [remember]\n * @returns {Platform|boolean}\n */\n Platform.prototype.remember = function (remember) {\n var key = this.cacheId + '-remember';\n if (remember != undefined) {\n this.getStorage().setItem(key, remember);\n return this;\n }\n return this.getStorage().getItem(key) || false;\n };\n /**\n * @param {string} options.username\n * @param {string} options.password\n * @param {string} [options.extension]\n * @param {boolean} [options.remember]\n * @returns {Promise}\n */\n Platform.prototype.authorize = function (options) {\n options = options || {};\n options.remember = options.remember || false;\n return this.authCall({\n url: '/restapi/oauth/token',\n post: {\n 'grant_type': 'password',\n 'username': options.username,\n 'extension': options.extension || '',\n 'password': options.password,\n 'access_token_ttl': this.accessTokenTtl,\n 'refresh_token_ttl': options.remember ? this.refreshTokenTtlRemember : this.refreshTokenTtl\n }\n }).then(function (ajax) {\n this.setCache(ajax.data).remember(options.remember).emitAndCallback(this.events.authorizeSuccess, []);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.clearStorage().emitAndCallback(this.events.authorizeError, [e]);\n throw e;\n }.bind(this));\n };\n Platform.prototype.isPaused = function () {\n var storage = this.getStorage(), cacheId = this.cacheId + '-refresh';\n return !!storage.getItem(cacheId) && Date.now() - parseInt(storage.getItem(cacheId)) < this.releaseTimeout;\n };\n Platform.prototype.pause = function () {\n this.getStorage().setItem(this.cacheId + '-refresh', Date.now());\n return this;\n };\n /**\n * If the queue is unpaused internally, polling will be cancelled\n * @returns {Platform}\n */\n Platform.prototype.resume = function () {\n this.getStorage().removeItem(this.cacheId + '-refresh');\n return this;\n };\n /**\n * Gets resolved into Ajax or null if refresh resolved from elsewhere\n * @returns {Promise}\n */\n Platform.prototype.refresh = function () {\n var refresh = new (this.context.getPromise())(function (resolve, reject) {\n if (this.isPaused()) {\n return resolve(this.refreshPolling(null));\n } else {\n this.pause();\n }\n // Make sure all existing AJAX calls had a chance to reach the server\n setTimeout(function () {\n var authData = this.getAuthData();\n Log.debug('Platform.refresh(): Performing token refresh (access token', authData.access_token, ', refresh token', authData.refresh_token, ')');\n if (!authData || !authData.refresh_token)\n return reject(new Error('Refresh token is missing'));\n if (Date.now() > authData.refreshExpireTime)\n return reject(new Error('Refresh token has expired'));\n if (!this.isPaused())\n return reject(new Error('Queue was resumed before refresh call'));\n resolve(this.authCall({\n url: '/restapi/oauth/token',\n post: {\n 'grant_type': 'refresh_token',\n 'refresh_token': authData.refresh_token,\n 'access_token_ttl': this.accessTokenTtl,\n 'refresh_token_ttl': this.remember() ? this.refreshTokenTtlRemember : this.refreshTokenTtl\n }\n }));\n }.bind(this), this.refreshDelayMs);\n }.bind(this));\n return refresh.then(function (ajax) {\n // This means refresh has happened elsewhere and we are here because of timeout\n if (!ajax || !ajax.data)\n return ajax;\n Log.info('Platform.refresh(): Token was refreshed');\n if (!ajax.data.refresh_token || !ajax.data.access_token) {\n var e = new Error('Malformed OAuth response');\n e.ajax = ajax;\n throw e;\n }\n this.setCache(ajax.data).resume();\n return ajax;\n }.bind(this)).then(function (result) {\n this.emit(this.events.refreshSuccess, result);\n return result;\n }.bind(this)).catch(function (e) {\n if (this.clearCacheOnRefreshError)\n this.clearStorage();\n this.emitAndCallback(this.events.accessViolation, [e]).emitAndCallback(this.events.refreshError, [e]);\n throw e;\n }.bind(this));\n };\n /**\n * @returns {Promise}\n */\n Platform.prototype.logout = function () {\n this.pause();\n return this.authCall({\n url: '/restapi/oauth/revoke',\n get: { token: this.getToken() }\n }).then(function (ajax) {\n this.resume().clearStorage().emit(this.events.logoutSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.resume().emitAndCallback(this.events.accessViolation, [e]).emitAndCallback(this.events.logoutError, [e]);\n throw e;\n }.bind(this));\n };\n Platform.prototype.refreshPolling = function (result) {\n if (this.refreshPromise)\n return this.refreshPromise;\n this.refreshPromise = new (this.context.getPromise())(function (resolve, reject) {\n Log.warn('Platform.refresh(): Refresh is already in progress polling started');\n Utils.poll(function (next) {\n if (this.isPaused())\n return next();\n this.refreshPromise = null;\n this.resume();\n if (this.isTokenValid()) {\n resolve(result);\n } else {\n reject(new Error('Automatic authentification timeout'));\n }\n }.bind(this), this.pollInterval);\n }.bind(this));\n return this.refreshPromise;\n };\n Platform.prototype.getToken = function () {\n return this.getAuthData().access_token;\n };\n Platform.prototype.getTokenType = function () {\n return this.getAuthData().token_type;\n };\n /**\n * @returns {PlatformAuthInfo}\n */\n Platform.prototype.getAuthData = function () {\n return this.getStorage().getItem(this.cacheId) || {\n token_type: '',\n access_token: '',\n expires_in: 0,\n refresh_token: '',\n refresh_token_expires_in: 0\n };\n };\n /**\n * Check if there is a valid (not expired) access token\n * @returns {boolean}\n */\n Platform.prototype.isTokenValid = function () {\n var authData = this.getAuthData();\n return authData.token_type == forcedTokenType || new Date(authData.expireTime).getTime() - this.refreshHandicapMs > Date.now() && !this.isPaused();\n };\n /**\n * Checks if user is authorized\n * If there is no access token, refresh will be performed\n * @returns {Promise}\n */\n Platform.prototype.isAuthorized = function () {\n if (this.isTokenValid())\n return this.context.getPromise().resolve(true);\n return this.refresh();\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.cancelAccessToken = function () {\n return this.setCache(Utils.extend(this.getAuthData(), {\n access_token: '',\n expires_in: 0\n }));\n };\n /**\n * @param {object} authData\n * @returns {Platform}\n */\n Platform.prototype.setCache = function (authData) {\n var oldAuthData = this.getAuthData();\n Log.info('Platform.setCache(): Tokens were updated, new:', authData, ', old:', oldAuthData);\n authData.expireTime = Date.now() + authData.expires_in * 1000;\n authData.refreshExpireTime = Date.now() + authData.refresh_token_expires_in * 1000;\n this.getStorage().setItem(this.cacheId, authData);\n return this;\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.forceAuthentication = function () {\n this.setCache({\n token_type: forcedTokenType,\n access_token: '',\n expires_in: 0,\n refresh_token: '',\n refresh_token_expires_in: 0\n });\n return this;\n };\n /**\n * @param {IAjaxOptions} options\n * @returns {Promise}\n */\n Platform.prototype.apiCall = function (options) {\n options = options || {};\n options.url = this.apiUrl(options.url, { addServer: true });\n return this.isAuthorized() // Refresh will occur inside\n.then(function () {\n var token = this.getToken();\n return this.getAjax().setOptions(options).setRequestHeader('Authorization', this.getTokenType() + (token ? ' ' + token : '')).send();\n }.bind(this)).catch(function (e) {\n if (!e.ajax || !e.ajax.isResponseUnauthorized())\n throw e;\n this.cancelAccessToken();\n return this.refresh().then(function () {\n // Re-send with same options\n return this.apiCall(options);\n }.bind(this));\n }.bind(this));\n };\n /**\n * @param {IAjaxOptions} options\n * @returns {Promise}\n */\n Platform.prototype.authCall = function (options) {\n options = options || {};\n options.method = options.method || 'POST';\n options.post = Utils.queryStringify(options.post);\n options.url = this.apiUrl(options.url, { addServer: true });\n return this.getAjax().setOptions(options).setRequestHeader('Content-Type', 'application/x-www-form-urlencoded').setRequestHeader('Accept', 'application/json').setRequestHeader('Authorization', 'Basic' + this.apiKey).send();\n };\n /**\n *\n * @param url\n * @param {{addMethod?: string, addToken?: boolean, addServer?: boolean}} [options]\n * @returns {string}\n */\n Platform.prototype.apiUrl = function (url, options) {\n url = url || '';\n options = options || {};\n var builtUrl = '';\n if (options.addServer && url.indexOf('http://') == -1 && url.indexOf('https://') == -1)\n builtUrl += this.server;\n if (url.indexOf(this.urlPrefix) == -1)\n builtUrl += this.urlPrefix + '/' + this.apiVersion;\n if (url.indexOf(this.accountPrefix) > -1)\n builtUrl.replace(this.accountPrefix + '~', this.accountPrefix + this.account);\n builtUrl += url;\n if (options.addMethod || options.addToken)\n builtUrl += url.indexOf('?') > -1 ? '&' : '?';\n if (options.addMethod)\n builtUrl += '_method=' + options.addMethod;\n if (options.addToken)\n builtUrl += (options.addMethod ? '&' : '') + 'access_token=' + this.getToken();\n return builtUrl;\n };\n module.exports = {\n Class: Platform,\n /**\n * @param {Context} context\n * @returns {Platform}\n */\n $get: function (context) {\n return context.createSingleton('Platform', function () {\n return new Platform(context);\n });\n }\n };\n});","define('core/Subscription', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Log',\n 'core/Utils',\n 'core/Platform'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Log = require('./Log'), Utils = require('./Utils'), renewHandicapMs = 60 * 1000;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Subscription\n * @param {Context} context\n */\n function Subscription(context) {\n Observable.call(this);\n this.eventFilters = [];\n this.timeout = null;\n this.subscription = {\n eventFilters: [],\n expirationTime: '',\n // 2014-03-12T19:54:35.613Z\n expiresIn: 0,\n deliveryMode: {\n transportType: 'PubNub',\n encryption: false,\n address: '',\n subscriberKey: '',\n secretKey: ''\n },\n id: '',\n creationTime: '',\n // 2014-03-12T19:54:35.613Z\n status: '',\n // Active\n uri: ''\n };\n /** @type {PUBNUB.ws} */\n this.socket = null;\n this.context = context;\n }\n Subscription.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Subscription.prototype, 'constructor', {\n value: Subscription,\n enumerable: false\n });\n Subscription.prototype.events = {\n notification: 'notification',\n removeSuccess: 'removeSuccess',\n removeError: 'removeError',\n renewSuccess: 'renewSuccess',\n renewError: 'renewError',\n subscribeSuccess: 'subscribeSuccess',\n subscribeError: 'subscribeError'\n };\n /**\n * @param {string} url\n * @returns {PUBNUB.ws}\n */\n Subscription.prototype.createPubnub = function (url) {\n return new (this.getPubnub()).ws(url);\n };\n Subscription.prototype.getPubnub = function () {\n return this.context.getPubnub();\n };\n Subscription.prototype.getCrypto = function () {\n return this.context.getCryptoJS();\n };\n Subscription.prototype.getPlatform = function () {\n return require('./Platform').$get(this.context);\n };\n /**\n * Creates or updates subscription if there is an active one\n * @param {{events?:string[]}} [options] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.register = function (options) {\n if (this.isSubscribed()) {\n return this.renew(options);\n } else {\n return this.subscribe(options);\n }\n };\n Subscription.prototype.addEvents = function (events) {\n this.eventFilters = this.eventFilters.concat(events);\n return this;\n };\n Subscription.prototype.setEvents = function (events) {\n this.eventFilters = events;\n return this;\n };\n Subscription.prototype.getFullEventFilters = function () {\n return this.eventFilters.map(function (event) {\n return this.getPlatform().apiUrl(event);\n }.bind(this));\n };\n /**\n * @private\n * @param {Array} [options.events] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.subscribe = function (options) {\n options = options || {};\n if (options.events)\n this.eventFilters = options.events;\n this.clearTimeout();\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.eventFilters || !this.eventFilters.length)\n throw new Error('Events are undefined');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n method: 'POST',\n url: '/restapi/v1.0/subscription',\n post: {\n eventFilters: this.getFullEventFilters(),\n deliveryMode: { transportType: 'PubNub' }\n }\n });\n }.bind(this)).then(function (ajax) {\n this.updateSubscription(ajax.data).subscribeAtPubnub().emit(this.events.subscribeSuccess, ajax.data);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.subscribeError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @private\n * @param {Array} [options.events] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.renew = function (options) {\n options = options || {};\n if (options.events)\n this.eventFilters = options.events;\n this.clearTimeout();\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.subscription || !this.subscription.id)\n throw new Error('Subscription ID is required');\n if (!this.eventFilters || !this.eventFilters.length)\n throw new Error('Events are undefined');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n method: 'PUT',\n url: '/restapi/v1.0/subscription/' + this.subscription.id,\n post: { eventFilters: this.getFullEventFilters() }\n });\n }.bind(this)).then(function (ajax) {\n this.updateSubscription(ajax.data).emit(this.events.renewSuccess, ajax.data);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.renewError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @param {boolean} [options.async]\n * @returns {Promise}\n */\n Subscription.prototype.remove = function (options) {\n options = Utils.extend({ async: true }, options);\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.subscription || !this.subscription.id)\n throw new Error('Subscription ID is required');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n async: !!options.async,\n // Warning! This is necessary because this method is used in beforeunload hook and has to be synchronous\n method: 'DELETE',\n url: '/restapi/v1.0/subscription/' + this.subscription.id\n });\n }.bind(this)).then(function (ajax) {\n this.unsubscribe().emit(this.events.removeSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.removeError, e);\n throw e;\n }.bind(this));\n };\n Subscription.prototype.destroy = function () {\n this.unsubscribe();\n return Observable.prototype.destroy.call(this);\n };\n Subscription.prototype.isSubscribed = function () {\n return this.subscription && this.subscription.deliveryMode && this.subscription.deliveryMode.subscriberKey && this.subscription.deliveryMode.address;\n };\n /**\n * @protected\n */\n Subscription.prototype.setTimeout = function () {\n var timeToExpiration = this.subscription.expiresIn * 1000 - renewHandicapMs;\n this.timeout = setTimeout(function () {\n this.renew({});\n }.bind(this), timeToExpiration);\n };\n /**\n * @protected\n */\n Subscription.prototype.clearTimeout = function () {\n clearTimeout(this.timeout);\n };\n /**\n * Set new subscription info and re-create timeout\n * @protected\n * @param subscription\n * @returns {Subscription}\n */\n Subscription.prototype.updateSubscription = function (subscription) {\n this.clearTimeout();\n this.subscription = subscription;\n this.setTimeout();\n return this;\n };\n /**\n * Remove subscription and disconnect from socket\n * @protected\n * @returns {Subscription}\n */\n Subscription.prototype.unsubscribe = function () {\n this.clearTimeout();\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.socket && this.socket.close(this.socket.CLOSE_NORMAL, 'Connection terminated by client');\n this.subscription = null;\n return this;\n };\n /**\n * @abstract\n * @param {Object} message\n * @returns {Subscription}\n */\n Subscription.prototype.notify = function (message) {\n if (this.isSubscribed() && this.subscription.deliveryMode.encryptionKey) {\n var CryptoJS = this.getCrypto();\n var key = CryptoJS.enc.Base64.parse(this.subscription.deliveryMode.encryptionKey);\n var data = CryptoJS.enc.Base64.parse(message);\n var decrypted = CryptoJS.AES.decrypt({ ciphertext: data }, key, {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n message = JSON.parse(decrypted);\n }\n this.emit(this.events.notification, message);\n return this;\n };\n /**\n * @returns {Subscription}\n */\n Subscription.prototype.subscribeAtPubnub = function () {\n if (!this.isSubscribed())\n return this;\n // ws(s)://ORIGIN/PUBLISH_KEY/SUBSCRIBE_KEY/CHANNEL\n var url = 'wss://pubsub.pubnub.com//' + this.subscription.deliveryMode.subscriberKey + '/' + this.subscription.deliveryMode.address;\n this.socket = this.createPubnub(url);\n this.socket.pubnub && this.socket.pubnub.ready();\n //TODO This may be unnecessary\n this.socket.onmessage = function (e) {\n Log.info('Subscription: Socket received message', e);\n this.notify(e.data);\n }.bind(this);\n this.socket.onclose = function () {\n Log.info('Subscription: Socket closed');\n };\n this.socket.onerror = function (e) {\n Log.error('Subscription: Socket error');\n Log.error(e.stack || e);\n };\n this.socket.onopen = function () {\n Log.info('Subscription: Socket open');\n };\n return this;\n };\n module.exports = {\n Class: Subscription,\n /**\n * @param {Context} context\n * @returns {Subscription}\n */\n $get: function (context) {\n return new Subscription(context);\n }\n };\n});","/**\n * istanbul ignore next\n */\ndefine('core/PageVisibility', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.PageVisibility\n */\n function PageVisibility() {\n Observable.call(this);\n var hidden = 'hidden', self = this;\n this.visible = true;\n if (typeof document == 'undefined' || typeof window == 'undefined')\n return;\n // Standards:\n if (hidden in document)\n document.addEventListener('visibilitychange', onchange);\n else if ((hidden = 'mozHidden') in document)\n document.addEventListener('mozvisibilitychange', onchange);\n else if ((hidden = 'webkitHidden') in document)\n document.addEventListener('webkitvisibilitychange', onchange);\n else if ((hidden = 'msHidden') in document)\n document.addEventListener('msvisibilitychange', onchange); // IE 9 and lower:\n else if ('onfocusin' in document)\n document.onfocusin = document.onfocusout = onchange; // All others:\n else\n window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;\n function onchange(evt) {\n evt = evt || window.event;\n var v = 'visible', h = 'hidden', evtMap = {\n focus: v,\n focusin: v,\n pageshow: v,\n blur: h,\n focusout: h,\n pagehide: h\n };\n self.visible = evt.type in evtMap ? evtMap[evt.type] == v : !document[hidden];\n self.emit(self.events.change, self.visible);\n }\n }\n PageVisibility.prototype = Object.create(Observable.prototype);\n Object.defineProperty(PageVisibility.prototype, 'constructor', {\n value: PageVisibility,\n enumerable: false\n });\n PageVisibility.prototype.events = { change: 'change' };\n PageVisibility.prototype.isVisible = function () {\n return this.visible;\n };\n module.exports = {\n Class: PageVisibility,\n /**\n * @param {Context} context\n * @returns {PageVisibility}\n */\n $get: function (context) {\n return new PageVisibility();\n }\n };\n});","define('core/Helper', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.Helper\n * @constructor\n * @param {Context} context\n */\n function Helper(context) {\n this.context = context;\n }\n Helper.prototype.defaultProperty = 'id';\n /**\n * @returns {Context}\n */\n Helper.prototype.getContext = function () {\n return this.context;\n };\n /**\n * @param {object} [options]\n * @param {string} [id]\n */\n Helper.prototype.createUrl = function (options, id) {\n return '';\n };\n /**\n * @param {IHelperObject} object\n * @returns {string}\n */\n Helper.prototype.getId = function (object) {\n return object && object[this.defaultProperty];\n };\n /**\n *\n * @param {IHelperObject} object\n * @returns {boolean}\n */\n Helper.prototype.isNew = function (object) {\n return !this.getId(object) || !this.getUri(object);\n };\n /**\n *\n * @param {IHelperObject} object\n * @returns {IHelperObject}\n */\n Helper.prototype.resetAsNew = function (object) {\n if (object) {\n delete object.id;\n delete object.uri;\n }\n return object;\n };\n /**\n * @param {IHelperObject} object\n * @returns {string}\n */\n Helper.prototype.getUri = function (object) {\n return object && object.uri;\n };\n /**\n * @param {Ajax} ajax\n * @return {IHelperObject[]}\n */\n Helper.prototype.parseMultipartResponse = function (ajax) {\n if (ajax.isResponseMultipart()) {\n // ajax.data has full array, leave only successful\n return ajax.data.filter(function (result) {\n return !result.error;\n }).map(function (result) {\n return result.data;\n });\n } else {\n // Single ID\n return [ajax.data];\n }\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided, default will be returned\n * @param {IHelperObject} [object]\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.loadRequest = function (object, options) {\n return Utils.extend(options || {}, {\n url: options && options.url || object && this.getUri(object) || this.createUrl(),\n method: options && options.method || 'GET'\n });\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided, default will be returned\n * @param {IHelperObject} object\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.saveRequest = function (object, options) {\n if (!object && !(options && options.post))\n throw new Error('No Object');\n return Utils.extend(options || {}, {\n method: options && options.method || (this.isNew(object) ? 'POST' : 'PUT'),\n url: options && options.url || this.getUri(object) || this.createUrl(),\n post: options && options.post || object\n });\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided exception will be thrown\n * @param {IHelperObject} object\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.deleteRequest = function (object, options) {\n options = options || {};\n if (!this.getUri(object) && !(options && options.url))\n throw new Error('Object has to be not new or URL must be provided');\n return Utils.extend(options || {}, {\n method: options && options.method || 'DELETE',\n url: options && options.url || this.getUri(object)\n });\n };\n /**\n * If no url was provided, default SYNC url will be returned\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.syncRequest = function (options) {\n options = options || {};\n options.url = options.url || this.createUrl({ sync: true });\n options.get = options.get || {};\n if (!!options.get.syncToken) {\n options.get = {\n syncType: 'ISync',\n syncToken: options.get.syncToken\n };\n } else {\n options.get.syncType = 'FSync';\n }\n return options;\n };\n Helper.prototype.nextPageExists = function (data) {\n return data && data.navigation && 'nextPage' in data.navigation;\n };\n /**\n * @param {IHelperObject[]} array - an array to be indexed\n * @param {function(object)} [getIdFn] - must return an ID for each array item\n * @param {boolean} [gather] - if true, then each index will have an array of items, that has same ID, otherwise the first indexed item wins\n * @returns {*}\n */\n Helper.prototype.index = function (array, getIdFn, gather) {\n getIdFn = getIdFn || this.getId.bind(this);\n array = array || [];\n return array.reduce(function (index, item) {\n var id = getIdFn(item);\n if (!id || index[id] && !gather)\n return index;\n if (gather) {\n if (!index[id])\n index[id] = [];\n index[id].push(item);\n } else {\n index[id] = item;\n }\n return index;\n }, {});\n };\n /**\n * Returns a shallow copy of merged _target_ array plus _supplement_ array\n * @param {IHelperObject[]} target\n * @param {IHelperObject[]} supplement\n * @param {function(IHelperObject)} [getIdFn]\n * @param {boolean} [mergeItems] - if true, properties of _supplement_ item will be applied to _target_ item, otherwise _target_ item will be replaced\n * @returns {*}\n */\n Helper.prototype.merge = function (target, supplement, getIdFn, mergeItems) {\n getIdFn = getIdFn || this.getId.bind(this);\n target = target || [];\n supplement = supplement || [];\n var supplementIndex = this.index(supplement, getIdFn), updatedIDs = [];\n var result = target.map(function (item) {\n var id = getIdFn(item), newItem = supplementIndex[id];\n if (newItem)\n updatedIDs.push(id);\n return newItem ? mergeItems ? Utils.extend(item, newItem) : newItem : item;\n });\n supplement.forEach(function (item) {\n if (updatedIDs.indexOf(getIdFn(item)) == -1)\n result.push(item);\n });\n return result;\n };\n module.exports = {\n Class: Helper,\n /**\n * @param {Context} context\n * @returns {Helper}\n */\n $get: function (context) {\n return new Helper(context);\n }\n }; /**\n * @typedef {object} IHelperObject\n * @property {string} id\n * @property {string} uri\n */\n});","define('core/Validator', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @typedef {object} IValidator\n * @property {string} field\n * @property {function} validator\n */\n /**\n * @typedef {object} IValidatorResult\n * @property {boolean} isValid\n * @property {Object.} errors\n */\n /**\n * @alias RCSDK.core.Validator\n * @name Validator\n */\n var Validator = module.exports = {\n /**\n * @param {IValidator[]} validators\n * @returns {IValidatorResult}\n */\n validate: function (validators) {\n /** @type {IValidatorResult} */\n var result = {\n errors: {},\n isValid: true\n };\n result.errors = validators.reduce(function (errors, validator) {\n var res = validator.validator();\n if (res.length > 0) {\n result.isValid = false;\n errors[validator.field] = errors[validator.field] || [];\n errors[validator.field] = errors[validator.field].concat(res);\n }\n return errors;\n }, {});\n return result;\n },\n /**\n * It is not recommended to have any kinds of complex validators at front end\n * @deprecated\n * @param value\n * @param multiple\n * @returns {Function}\n */\n email: function (value, multiple) {\n return function () {\n if (!value)\n return [];\n return Utils.isEmail(value, multiple) ? [] : [new Error('Value has to be a valid email')];\n };\n },\n /**\n * It is not recommended to have any kinds of complex validators at front end\n * TODO International phone numbers\n * @deprecated\n * @param value\n * @returns {Function}\n */\n phone: function (value) {\n return function () {\n if (!value)\n return [];\n return Utils.isPhoneNumber(value) ? [] : [new Error('Value has to be a valid US phone number')];\n };\n },\n required: function (value) {\n return function () {\n return !value ? [new Error('Field is required')] : [];\n };\n },\n length: function (value, max, min) {\n return function () {\n var errors = [];\n if (!value)\n return errors;\n value = value.toString();\n if (min && value.length < min)\n errors.push(new Error('Minimum length of ' + min + ' characters is required'));\n if (max && value.length > max)\n errors.push(new Error('Maximum length of ' + max + ' characters is required'));\n return errors;\n };\n },\n $get: function (context) {\n return Validator;\n }\n };\n});","define('core/List', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.List\n * @name List\n */\n var List = module.exports = {\n /**\n * @param {string} property\n * @returns {function(object)}\n */\n propertyExtractor: function (property) {\n return function (item, options) {\n return property ? item && item[property] || null : item;\n };\n },\n /**\n * Non-string types are converted to string\n * Non-string types are extracted as an empty string if they could be converted to false\n * If no options.sortBy given the item itself is extracted\n * Compares strings:\n * - if (a is less than b) return -1;\n * - if (a is greater than b) return 1;\n * - else (a must be equal to b) return 0;\n * Exceptions in will be suppressed, if any - a is assumed to be less than b\n * @param {string} a\n * @param {string} b\n * @param {IListComparatorOptions} [options]\n * @returns {number}\n */\n stringComparator: function (a, b, options) {\n return Utils.parseString(a).localeCompare(Utils.parseString(b));\n },\n /**\n * Non-numeric types are extracted as 0 if they could be converted to false\n * Objects that could not be converted to number are extracted as 0\n * If no options.sortBy given the item itself is extracted\n * See parseFloat for more info\n * Compares numbers:\n * - if (a is less than b) return -1;\n * - if (a is greater than b) return 1;\n * - else (a must be equal to b) return 0;\n * Function does not check types\n * Exceptions in will be suppressed, if any - a is assumed to be less than b\n * @param {number} a\n * @param {number} b\n * @param {IListComparatorOptions} [options]\n * @returns {number}\n */\n numberComparator: function (a, b, options) {\n return Utils.parseNumber(a) - Utils.parseNumber(b);\n },\n /**\n * Function extracts (using _extractFn_ option) values of a property (_sortBy_ option) and compares them using\n * compare function (_compareFn_ option, by default Helper.stringComparator)\n * Merged options are provided to _extractFn_ and _compareFn_\n * TODO Check memory leaks for all that options links\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n comparator: function (options) {\n options = Utils.extend({\n extractFn: this.propertyExtractor(options && options.sortBy || null),\n compareFn: this.stringComparator\n }, options);\n /**\n * @param {object} item1\n * @param {object} item2\n * @returns {number}\n */\n function comparator(item1, item2) {\n return options.compareFn(options.extractFn(item1, options), options.extractFn(item2, options), options);\n }\n return comparator;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options\n * @returns {boolean}\n */\n equalsFilter: function (obj, options) {\n return options.condition === obj;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options\n * @returns {boolean}\n */\n containsFilter: function (obj, options) {\n return obj && obj.toString().indexOf(options.condition) > -1;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options - `condition` must be an instance of RegExp\n * @returns {boolean}\n */\n regexpFilter: function (obj, options) {\n if (!(options.condition instanceof RegExp))\n throw new Error('Condition must be an instance of RegExp');\n return options.condition.test(obj);\n },\n /**\n * Function extracts (using `extractFn` option) values of a property (`filterBy` option) and filters them using\n * compare function (`filterFn` option, by default Helper.equalsFilter)\n * Merged options are provided to `extractFn` and `compareFn`\n * Set `filterBy` to null to force `propertyExtractor` to return object itself\n * TODO Check memory leaks for all that options links\n * @param {IListFilterOptions[]} [filterConfigs]\n * @returns {function(object)}\n */\n filter: function (filterConfigs) {\n var self = this;\n filterConfigs = (filterConfigs || []).map(function (opt) {\n return Utils.extend({\n condition: '',\n extractFn: self.propertyExtractor(opt && opt.filterBy || null),\n filterFn: self.equalsFilter\n }, opt);\n });\n /**\n * @param {object} item\n * @returns {boolean}\n */\n function filter(item) {\n return filterConfigs.reduce(function (pass, opt) {\n if (!pass || !opt.condition)\n return pass;\n return opt.filterFn(opt.extractFn(item, opt), opt);\n }, true);\n }\n return filter;\n },\n $get: function (context) {\n return List;\n }\n }; /**\n * @typedef {object} IListComparatorOptions\n * @property {string} sortBy\n * @property {function(object, IListComparatorOptions)} extractFn\n * @property {function(object, object)} compareFn\n */\n /**\n * @typedef {object} IListFilterOptions\n * @property {string} filterBy\n * @property {object} condition\n * @property {function(object, IListComparatorOptions)} extractFn\n * @property {function(object, object)} filterFn\n */\n});","define('helpers/Country', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function CountryHelper(context) {\n Helper.call(this, context);\n }\n CountryHelper.prototype = Object.create(Helper.prototype);\n CountryHelper.prototype.createUrl = function () {\n return '/dictionary/country';\n };\n module.exports = {\n Class: CountryHelper,\n /**\n * @param {Context} context\n * @returns {CountryHelper}\n */\n $get: function (context) {\n return context.createSingleton('CountryHelper', function () {\n return new CountryHelper(context);\n });\n }\n }; /**\n * @typedef {object} ICountry\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {string} callingCode\n */\n});","define('helpers/DeviceModel', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function DeviceModelHelper(context) {\n Helper.call(this, context);\n }\n DeviceModelHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IDeviceModel} device\n * @returns {string}\n */\n DeviceModelHelper.prototype.getId = function (device) {\n if (!device)\n return null;\n return device.id + (device.addons && device.addons[0] ? '-' + device.addons[0].id + '-' + device.addons[0].count : '');\n };\n /**\n * Remove extra textual information from device\n * @exceptionalCase Platform does not understand full device info\n * @param {IDeviceModel} device\n * @returns {IDeviceModel}\n */\n DeviceModelHelper.prototype.cleanForSaving = function (device) {\n if (!device)\n return null;\n delete device.name;\n delete device.deviceClass;\n if (device.addons && device.addons.length > 0) {\n device.addons.forEach(function (addon, i) {\n delete device.addons[i].name;\n });\n } else {\n delete device.addons;\n }\n return device;\n };\n /**\n * TODO Remove when http://jira.ringcentral.com/browse/SDK-1 is done\n * @type {IDeviceModel[]}\n */\n DeviceModelHelper.prototype.devices = [\n {\n id: '-1',\n name: 'Softphone'\n },\n {\n id: '0',\n name: 'Existing device'\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '23',\n name: 'Polycom IP 321 Basic IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '30',\n name: 'Polycom IP 550 HD Manager IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '37',\n name: 'Polycom IP 6000 Conference Phone',\n deviceClass: 'Conference Phone'\n },\n {\n id: '40',\n name: 'Polycom IP 335 HD IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '51',\n name: 'Cisco SPA-303 Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '1'\n }]\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone with 2 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '2'\n }]\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '1'\n }]\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone with 2 Expansion Modules\\tDesk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '2'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '1'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 2 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '2'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 3 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '3'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '52',\n name: 'Cisco SPA-122 ATA',\n deviceClass: 'Analog Adapter'\n },\n {\n id: '53',\n name: 'Polycom VVX-500 Color Touchscreen',\n deviceClass: 'Desk Phone'\n },\n {\n id: '54',\n name: 'Polycom VVX-310 Gigabit Ethernet Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '55',\n name: 'Polycom VVX-410 Color Gigabit Ethernet Phone',\n deviceClass: 'Desk Phone'\n }\n ];\n module.exports = {\n Class: DeviceModelHelper,\n /**\n * @param {Context} context\n * @returns {DeviceModelHelper}\n */\n $get: function (context) {\n return context.createSingleton('DeviceModelHelper', function () {\n return new DeviceModelHelper(context);\n });\n }\n }; /**\n * @typedef {object} IDeviceModel\n * @property {string} id\n * @property {string} name\n * @property {string} deviceClass\n * @property {string} addons\n */\n /**\n * @typedef {Object} IDeviceModelAddon\n * @property {string} id\n * @property {string} name\n * @property {string} count\n */\n});","define('helpers/Language', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function LanguageHelper(context) {\n Helper.call(this, context);\n }\n LanguageHelper.prototype = Object.create(Helper.prototype);\n /**\n * @type {ILanguage[]}\n */\n LanguageHelper.prototype.languages = [\n {\n id: '1033',\n name: 'English (US)'\n },\n {\n id: '3084',\n name: 'French (Canada)'\n }\n ];\n module.exports = {\n Class: LanguageHelper,\n /**\n * @param {Context} context\n * @returns {LanguageHelper}\n */\n $get: function (context) {\n return context.createSingleton('LanguageHelper', function () {\n return new LanguageHelper(context);\n });\n }\n }; /**\n * @typedef {object} ILanguage\n * @property {string} id\n * @property {string} name\n */\n});","define('helpers/State', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils',\n 'helpers/Country'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function StateHelper(context) {\n Helper.call(this, context);\n this.countryHelper = require('./Country').$get(context);\n }\n StateHelper.prototype = Object.create(Helper.prototype);\n StateHelper.prototype.createUrl = function () {\n return '/dictionary/state';\n };\n /**\n * @param {IStateOptions} options\n * @returns {function(IState)}\n */\n StateHelper.prototype.filter = function (options) {\n options = Utils.extend({ countryId: '' }, options);\n return List.filter([{\n condition: options.countryId,\n filterFn: function (item, opts) {\n return this.countryHelper.getId(item.country) == opts.condition;\n }.bind(this)\n }]);\n };\n module.exports = {\n Class: StateHelper,\n /**\n * @param {Context} context\n * @returns {StateHelper}\n */\n $get: function (context) {\n return context.createSingleton('StateHelper', function () {\n return new StateHelper(context);\n });\n }\n }; /**\n * @typedef {object} IState\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {ICountry} country\n */\n /**\n * @typedef {object} IStateOptions\n * @property {string} countryId\n */\n});","define('helpers/Location', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils',\n 'helpers/State'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function LocationHelper(context) {\n Helper.call(this, context);\n this.state = require('./State').$get(context);\n }\n LocationHelper.prototype = Object.create(Helper.prototype);\n LocationHelper.prototype.createUrl = function () {\n return '/dictionary/location';\n };\n /**\n * @param {ILocationFilterOptions} options\n * @returns {function(ILocation)}\n */\n LocationHelper.prototype.filter = function (options) {\n var uniqueNPAs = [];\n options = Utils.extend({\n stateId: '',\n onlyUniqueNPA: false\n }, options);\n return List.filter([\n {\n condition: options.stateId,\n filterFn: function (item, opts) {\n return this.state.getId(item.state) == opts.condition;\n }.bind(this)\n },\n {\n condition: options.onlyUniqueNPA,\n filterFn: function (item, opts) {\n if (uniqueNPAs.indexOf(item.npa) == -1) {\n uniqueNPAs.push(item.npa);\n return true;\n } else {\n return false;\n }\n }\n }\n ]);\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {comparator}\n */\n LocationHelper.prototype.comparator = function (options) {\n options = Utils.extend({ sortBy: 'npa' }, options);\n if (options.sortBy == 'nxx') {\n /**\n * @param {ILocation} item\n * @returns {number}\n */\n options.extractFn = function (item) {\n return parseInt(item.npa) * 1000000 + parseInt(item.nxx);\n };\n options.compareFn = List.numberComparator;\n }\n return List.comparator(options);\n };\n module.exports = {\n Class: LocationHelper,\n /**\n * @param {Context} context\n * @returns {LocationHelper}\n */\n $get: function (context) {\n return context.createSingleton('LocationHelper', function () {\n return new LocationHelper(context);\n });\n }\n }; /**\n * @typedef {object} ILocation\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {string} npa\n * @property {string} nxx\n * @property {IState} state\n */\n /**\n * @typedef {object} ILocationFilterOptions\n * @property {string} stateId\n * @property {boolean} onlyUniqueNPA\n */\n});","define('helpers/ShippingMethod', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ShippingMethodHelper(context) {\n Helper.call(this, context);\n }\n ShippingMethodHelper.prototype = Object.create(Helper.prototype);\n /**\n * TODO Remove when http://jira.ringcentral.com/browse/SDK-3 id done\n * @type {IShippingMethod[]}\n */\n ShippingMethodHelper.prototype.shippingMethods = [\n {\n id: '1',\n name: 'Ground Shipping (5-7 business days)'\n },\n {\n id: '2',\n name: '2-days Shipping'\n },\n {\n id: '3',\n name: 'Overnight Shipping'\n }\n ];\n module.exports = {\n Class: ShippingMethodHelper,\n /**\n * @param {Context} context\n * @returns {ShippingMethodHelper}\n */\n $get: function (context) {\n return context.createSingleton('ShippingMethodHelper', function () {\n return new ShippingMethodHelper(context);\n });\n }\n }; /**\n * @typedef {object} IShippingMethod\n * @property {string} id\n * @property {string} name\n */\n});","define('helpers/Timezone', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function TimezoneHelper(context) {\n Helper.call(this, context);\n }\n TimezoneHelper.prototype = Object.create(Helper.prototype);\n TimezoneHelper.prototype.createUrl = function () {\n return '/dictionary/timezone';\n };\n module.exports = {\n Class: TimezoneHelper,\n /**\n * @param {Context} context\n * @returns {TimezoneHelper}\n */\n $get: function (context) {\n return context.createSingleton('TimezoneHelper', function () {\n return new TimezoneHelper(context);\n });\n }\n }; /**\n * @typedef {object} ITimezone\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} description\n */\n});","define('helpers/Account', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function AccountHelper(context) {\n Helper.call(this, context);\n }\n AccountHelper.prototype = Object.create(Helper.prototype);\n AccountHelper.prototype.createUrl = function () {\n return '/account/~';\n };\n module.exports = {\n Class: AccountHelper,\n /**\n * @param {Context} context\n * @returns {AccountHelper}\n */\n $get: function (context) {\n return context.createSingleton('AccountHelper', function () {\n return new AccountHelper(context);\n });\n }\n };\n});","define('helpers/BlockedNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function BlockedNumberHelper(context) {\n Helper.call(this, context);\n }\n BlockedNumberHelper.prototype = Object.create(Helper.prototype);\n /**\n *\n * @param {IBlockedNumberOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n BlockedNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId ? options.extensionId : '~') + '/blocked-number' + (id ? '/' + id : '');\n };\n /**\n * @param {IBlockedNumber} item\n */\n BlockedNumberHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'phoneNumber',\n validator: Validator.phone(item.phoneNumber)\n },\n {\n field: 'phoneNumber',\n validator: Validator.required(item.phoneNumber)\n },\n {\n field: 'name',\n validator: Validator.required(item.name)\n }\n ]);\n };\n module.exports = {\n Class: BlockedNumberHelper,\n /**\n * @param {Context} context\n * @returns {BlockedNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('BlockedNumberHelper', function () {\n return new BlockedNumberHelper(context);\n });\n }\n }; /**\n * @typedef {object} IBlockedNumber\n * @property {string} name\n * @property {string} phoneNumber\n */\n /**\n * @typedef {object} IBlockedNumberOptions\n * @property {string} extensionId\n */\n});","define('helpers/Extension', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function ExtensionHelper(context) {\n Helper.call(this, context);\n }\n ExtensionHelper.prototype = Object.create(Helper.prototype);\n ExtensionHelper.prototype.type = {\n department: 'Department',\n user: 'User',\n announcement: 'Announcement',\n voicemail: 'Voicemail'\n };\n /**\n *\n * @param {IExtensionOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n ExtensionHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~' + (options.departmentId ? '/department/' + options.departmentId + '/members' : '/extension') + (id ? '/' + id : '');\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isUser = function (extension) {\n return extension && extension.type == this.type.user;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isDepartment = function (extension) {\n return extension && extension.type == this.type.department;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isAnnouncement = function (extension) {\n return extension && extension.type == this.type.announcement;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isVoicemail = function (extension) {\n return extension && extension.type == this.type.voicemail;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ExtensionHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({\n sortBy: 'extensionNumber',\n compareFn: List.numberComparator\n }, options));\n };\n /**\n * @param {IExtensionFilterOptions} [options]\n * @returns {function(IExtension)}\n */\n ExtensionHelper.prototype.filter = function (options) {\n options = Utils.extend({\n search: '',\n type: ''\n }, options);\n return List.filter([\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n condition: options.search.toLocaleLowerCase(),\n filterFn: List.containsFilter,\n extractFn: function (item) {\n return (item.name && item.name.toLocaleLowerCase() + ' ') + (item.extensionNumber && item.extensionNumber.toString().toLocaleLowerCase());\n }\n }\n ]);\n };\n module.exports = {\n Class: ExtensionHelper,\n /**\n * @param {Context} context\n * @returns {ExtensionHelper}\n */\n $get: function (context) {\n return context.createSingleton('ExtensionHelper', function () {\n return new ExtensionHelper(context);\n });\n }\n }; /**\n * @typedef {object} IExtensionOptions\n * @property {string} departmentId\n */\n /**\n * @typedef {object} IExtensionFilterOptions\n * @property {string} search\n * @property {string} type\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ShortExtensionInfo\n * @typedef {object} IExtensionShort\n * @property {string} id\n * @property {string} uri\n * @property {string} extensionNumber\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ExtensionInfo\n * @typedef {object} IExtension\n * @property {string} id\n * @property {string} uri\n * @property {string} extensionNumber\n * @property {string} name\n * @property {string} type\n * @property {IContactBrief} contact\n * @property {IExtensionRegionalSettings} regionalSettings\n * @property {IServiceFeature[]} serviceFeatures\n * @property {string} status\n * @property {string} setupWizardState\n */\n /**\n * @typedef {object} IExtensionRegionalSettings\n * @property {ITimezone} timezone\n * @property {ILanguage} language\n * @property {ICountry} homeCountry\n */\n});","define('helpers/Presence', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'helpers/Extension',\n 'core/Subscription'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function PresenceHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n PresenceHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IPresenceOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n PresenceHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (id || '~') + '/presence' + (options.detailed ? '?detailedTelephonyState=true' : '');\n };\n /**\n * @param {IPresence} presence\n * @returns {string}\n */\n PresenceHelper.prototype.getId = function (presence) {\n return presence && (this.extension.getId(presence.extension) || presence.extensionId);\n };\n /**\n * @param {IPresence} presence\n * @returns {boolean}\n */\n PresenceHelper.prototype.isAvailable = function (presence) {\n return presence && presence.presenceStatus == 'Available';\n };\n /**\n * @param {IPresenceOptions} [options]\n * @param {string} [id]\n * @returns {Subscription}\n */\n PresenceHelper.prototype.getSubscription = function (options, id) {\n return require('../core/Subscription').$get(this.context).setEvents([this.createUrl(options, id)]);\n };\n /**\n *\n * @param {Subscription} subscription\n * @param {IPresence[]} presences\n * @param {IPresenceOptions} options\n * @returns {*}\n */\n PresenceHelper.prototype.updateSubscription = function (subscription, presences, options) {\n var events = presences.map(this.getId, this).map(function (id) {\n return this.createUrl(options, id);\n }, this);\n subscription.addEvents(events);\n return subscription;\n };\n /**\n * @param {IExtension[]} extensions\n * @param {IPresence[]} presences\n * @param {bool} [merge]\n * @returns {*}\n */\n PresenceHelper.prototype.attachToExtensions = function (extensions, presences, merge) {\n var index = this.index(presences);\n extensions.forEach(/** @param {IExtension} extension */\n function (extension) {\n var presence = index[this.extension.getId(extension)];\n if (presence) {\n if ('presence' in extension && merge) {\n Utils.extend(extension.presence, presence);\n } else {\n extension.presence = presence;\n }\n }\n }, this);\n };\n /**\n * @param {IPresenceCall} presenceCall\n * @returns {boolean}\n */\n PresenceHelper.prototype.isCallInProgress = function (presenceCall) {\n return presenceCall && presenceCall.telephonyStatus != 'NoCall';\n };\n module.exports = {\n Class: PresenceHelper,\n /**\n * @param {Context} context\n * @returns {PresenceHelper}\n */\n $get: function (context) {\n return context.createSingleton('PresenceHelper', function () {\n return new PresenceHelper(context);\n });\n }\n }; /**\n * @typedef {Object} IPresence\n * @property {IExtension} extension\n * @property {IPresenceCall[]} activeCalls\n * @property {string} presenceStatus - Offline, Busy, Available\n * @property {string} telephonyStatus - NoCall, CallConnected, Ringing, OnHold\n * @property {string} userStatus - Offline, Busy, Available\n * @property {string} dndStatus - TakeAllCalls, DoNotAcceptAnyCalls, DoNotAcceptDepartmentCalls, TakeDepartmentCallsOnly\n * @property {boolean} allowSeeMyPresence\n * @property {boolean} ringOnMonitoredCall\n * @property {boolean} pickUpCallsOnHold\n * @property {number} extensionId\n * @property {number} sequence\n */\n /**\n * @typedef {Object} IPresenceCall\n * @property {string} direction\n * @property {string} from\n * @property {string} to\n * @property {string} sessionId\n * @property {string} id\n * @property {string} telephonyStatus\n */\n /**\n * @typedef {Object} IPresenceOptions\n * @property {boolean} detailed\n */\n});","define('helpers/Contact', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Validator',\n 'core/Helper',\n 'core/List'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('../core/Utils'), Validator = require('../core/Validator'), Helper = require('../core/Helper').Class, List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function ContactHelper(context) {\n Helper.call(this, context);\n }\n ContactHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IContactOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n ContactHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n var root = '/account/~/extension/' + (options.extensionId ? options.extensionId : '~') + '/address-book';\n if (options.sync)\n return root + '-sync';\n return root + (options.groupId ? '/group/' + options.groupId + '/contact' : '/contact') + (id ? '/' + id : '');\n };\n /**\n * Returns all values of the given fields if value exists\n * @param {(IContact|object)} where\n * @param {Array} fields\n * @param {boolean} [asHash]\n * @protected\n * @returns {Object}\n */\n ContactHelper.prototype.getFieldValues = function (where, fields, asHash) {\n return fields.reduce(function (result, field) {\n if (where && where[field]) {\n if (asHash) {\n result[field] = where[field];\n } else {\n result.push(where[field]);\n }\n }\n return result;\n }, asHash ? {} : []);\n };\n /**\n * @param {IContact} contact\n * @returns {string}\n */\n ContactHelper.prototype.getFullName = function (contact) {\n return this.getFieldValues(contact, this.nameFields).join(' ');\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getEmails = function (contact, asHash) {\n return this.getFieldValues(contact, this.emailFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getPhones = function (contact, asHash) {\n return this.getFieldValues(contact, this.phoneFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getFaxes = function (contact, asHash) {\n return this.getFieldValues(contact, this.faxFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getAddresses = function (contact, asHash) {\n return this.getFieldValues(contact, this.addressFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @returns {boolean}\n */\n ContactHelper.prototype.isAlive = function (contact) {\n return contact.availability == 'Alive';\n };\n /**\n * Matches a contact against a given string, returns null if nothing found\n * @param {IContact} contact\n * @param {string} string\n * @param {IContactMatchOptions} [options]\n * @returns {(string|null)}\n */\n ContactHelper.prototype.match = function (contact, string, options) {\n options = Utils.extend({\n fields: [].concat(this.nameFields, this.emailFields, this.phoneFields, this.faxFields, this.otherFields),\n inAddresses: true,\n transformFn: function (value, options) {\n return value ? value.toString().toLocaleLowerCase() : '';\n },\n strict: false\n }, options);\n string = options.transformFn(string, options);\n var found = null;\n if (!string)\n return found;\n function matchWith(value) {\n // skip unnecessary cycles if match has been found\n if (found)\n return;\n var transformed = options.transformFn(value, options);\n if (!transformed)\n return;\n var match = options.strict ? transformed == string : transformed.indexOf(string) > -1;\n if (match)\n found = value;\n }\n // Search in fields\n options.fields.forEach(function (field) {\n matchWith(contact[field]);\n });\n // Search in addresses, skip unnecessary cycles if match has been found\n if (options.inAddresses && !found)\n this.addressFields.forEach(function (field) {\n // skip unnecessary cycles if match has been found or no field value\n if (!contact[field] || found)\n return;\n this.addressSubFields.forEach(function (subField) {\n matchWith(contact[field][subField]);\n });\n }, this);\n return found;\n };\n /**\n * Matches a contact against a given phone number, returns null if nothing found\n * @param {IContact} contact\n * @param {string} phone\n * @param {IContactMatchOptions} [options]\n * @returns {string|null}\n */\n ContactHelper.prototype.matchAsPhone = function (contact, phone, options) {\n return this.match(contact, phone, Utils.extend({\n fields: [].concat(this.phoneFields, this.faxFields),\n inAddresses: false,\n transformFn: function (value, options) {\n return value ? value.toString().replace(/[^\\d\\w]/gi, '') : ''; //TODO Trickier removal reqired;\n },\n strict: false\n }, options));\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all given {ICallerInfo}\n * Warning, this function may be performance-consuming, reduce the amount of items passed to contacts and callerInfos\n * @param {ICallerInfo[]} callerInfos\n * @param {IContact[]} contacts\n * @param {IContactMatchOptions} [options]\n */\n ContactHelper.prototype.attachToCallerInfos = function (callerInfos, contacts, options) {\n var self = this, callerInfoIndex = this.index(callerInfos, function (callerInfo) {\n return callerInfo.phoneNumber;\n }, true);\n Utils.forEach(callerInfoIndex, function (indexedCallerInfos, phoneNumber) {\n var foundContact = null, foundPhone = null;\n contacts.some(function (contact) {\n foundPhone = self.matchAsPhone(contact, phoneNumber, options);\n if (foundPhone)\n foundContact = contact;\n return foundPhone;\n });\n if (foundContact) {\n indexedCallerInfos.forEach(function (callerInfo) {\n callerInfo.contact = foundContact;\n callerInfo.contactPhone = foundPhone;\n });\n }\n });\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ContactHelper.prototype.comparator = function (options) {\n var self = this;\n return List.comparator(Utils.extend({\n extractFn: function (contact, options) {\n return self.getFullName(contact);\n }\n }, options));\n };\n /**\n * TODO Add filtering by group http://jira.ringcentral.com/browse/SDK-4\n * @param {IContactOptions} [options]\n * @returns {function(IContact)}\n */\n ContactHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({\n alive: true,\n startsWith: '',\n phonesOnly: false,\n faxesOnly: false\n }, options);\n return List.filter([\n {\n condition: options.alive,\n filterFn: this.isAlive\n },\n {\n condition: options.startsWith,\n filterFn: function (item, opts) {\n return self.match(item, opts.condition);\n }\n },\n {\n condition: options.phonesOnly,\n filterFn: function (item, opts) {\n return self.getPhones(item).length > 0;\n }\n },\n {\n condition: options.faxesOnly,\n filterFn: function (item, opts) {\n return self.getFaxes(item).length > 0;\n }\n }\n ]);\n };\n /**\n * @param {IContact} item\n */\n ContactHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'firstName',\n validator: Validator.required(item.firstName)\n },\n {\n field: 'lastName',\n validator: Validator.required(item.lastName)\n },\n {\n field: 'email',\n validator: Validator.email(item.email)\n },\n {\n field: 'email2',\n validator: Validator.email(item.email2)\n },\n {\n field: 'email3',\n validator: Validator.email(item.email3)\n }\n ]);\n };\n ContactHelper.prototype.phoneFields = [\n 'homePhone',\n 'homePhone2',\n 'businessPhone',\n 'businessPhone2',\n 'mobilePhone',\n 'companyPhone',\n 'assistantPhone',\n 'carPhone',\n 'otherPhone',\n 'callbackPhone'\n ];\n ContactHelper.prototype.faxFields = [\n 'businessFax',\n 'otherFax'\n ];\n ContactHelper.prototype.addressFields = [\n 'homeAddress',\n 'businessAddress',\n 'otherAddress'\n ];\n ContactHelper.prototype.addressSubFields = [\n 'street',\n 'city',\n 'state',\n 'zip'\n ];\n ContactHelper.prototype.nameFields = [\n 'firstName',\n 'middleName',\n 'lastName',\n 'nickName'\n ];\n ContactHelper.prototype.otherFields = [\n 'company',\n 'jobTitle',\n 'webPage',\n 'notes'\n ];\n ContactHelper.prototype.emailFields = [\n 'email',\n 'email2',\n 'email3'\n ];\n module.exports = {\n Class: ContactHelper,\n /**\n * @param {Context} context\n * @returns {ContactHelper}\n */\n $get: function (context) {\n return context.createSingleton('ContactHelper', function () {\n return new ContactHelper(context);\n });\n }\n }; /**\n * @typedef {object} IContactOptions\n * @property {string} extensionId\n * @property {string} groupId\n */\n /**\n * @typedef {object} IContactFilterOptions\n * @property {string} startsWith\n * @property {boolean} alive\n */\n /**\n * @typedef {object} IContactMatchOptions\n * @property {function(object, IContactMatchOptions)} transformFn\n * @property {boolean} strict - if false look for as sub string\n * @property {boolean} inAddresses - look in addresses as well\n * @property {string[]} fields - in which fields to look for\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch16s04.html#ContactAddressInfo\n * @typedef {Object} IContactAddress\n * @property {string} country\n * @property {string} street\n * @property {string} city\n * @property {string} state\n * @property {string} zip\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ContactInfo\n * @typedef {Object} IContactBrief\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} company\n * @property {string} email\n * @property {IContactAddress} businessAddress\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch16s04.html#ContactInfo\n * @typedef {Object} IContact\n *\n * Shared:\n * @property {string} id\n * @property {string} uri\n *\n * Names:\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} company\n * @property {string} nickName\n * @property {string} middleName\n *\n * Emails:\n * @property {string} email\n * @property {string} email2\n * @property {string} email3\n *\n * Addresses:\n * @property {IContactAddress} businessAddress\n * @property {IContactAddress} homeAddress\n * @property {IContactAddress} otherAddress\n *\n * Phones:\n * @property {string} homePhone\n * @property {string} homePhone2\n * @property {string} businessPhone\n * @property {string} businessPhone2\n * @property {string} mobilePhone\n * @property {string} companyPhone\n * @property {string} assistantPhone\n * @property {string} carPhone\n * @property {string} otherPhone\n * @property {string} callbackPhone\n *\n * @property {string} businessFax\n * @property {string} otherFax\n */\n});","define('helpers/Call', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'core/List',\n 'helpers/Presence',\n 'helpers/Contact'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function CallHelper(context) {\n Helper.call(this, context);\n this.presence = require('./Presence').$get(context);\n this.contact = require('./Contact').$get(context);\n }\n CallHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {ICallOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n CallHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (!('personal' in options) && !('extensionId' in options))\n options.personal = true;\n return '/account/~/' + (options.personal || options.extensionId ? 'extension/' + (options.extensionId || '~') + '/' : '') + (options.active ? 'active-calls' : 'call-log') + (id ? '/' + id : '');\n };\n CallHelper.prototype.getSessionId = function (call) {\n return call && call.sessionId;\n };\n CallHelper.prototype.isInProgress = function (call) {\n return call && call.result == 'In Progress';\n };\n CallHelper.prototype.isAlive = function (call) {\n return call && call.availability == 'Alive';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isInbound = function (call) {\n return call && call.direction == 'Inbound';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isOutbound = function (call) {\n return !this.isInbound(call);\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isMissed = function (call) {\n return call && call.result == 'Missed';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isFindMe = function (call) {\n return call && call.action == 'FindMe';\n };\n /**\n * @param {ICall} call\n * @returns {ICallerInfo}\n */\n CallHelper.prototype.getCallerInfo = function (call) {\n return this.isInbound(call) ? call.from : call.to;\n };\n /**\n * @param {ICall} call\n * @returns {ICallerInfo[]}\n */\n CallHelper.prototype.getAllCallerInfos = function (call) {\n return [this.getCallerInfo(call)].concat(this.isInbound(call) ? call.to : call.from);\n };\n CallHelper.prototype.formatDuration = function (call) {\n function addZero(v) {\n return v < 10 ? '0' + v : v;\n }\n var duration = parseInt(call.duration), hours = Math.floor(duration / (60 * 60)), mins = Math.floor(duration % (60 * 60) / 60), secs = Math.floor(duration % 60);\n return (hours ? hours + ':' : '') + addZero(mins) + ':' + addZero(secs);\n };\n /**\n * @param {ICallFilterOptions} [options]\n * @returns {function(ICall)}\n */\n CallHelper.prototype.filter = function (options) {\n options = Utils.extend({\n alive: true,\n direction: '',\n type: ''\n }, options);\n return List.filter([\n //{condition: options.alive, filterFn: this.isAlive},\n {\n filterBy: 'direction',\n condition: options.direction\n },\n {\n filterBy: 'type',\n condition: options.type\n }\n ]);\n };\n /**\n * TODO Compare as dates\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n CallHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'startTime' }, options));\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all callerInfos found in\n * all calls Warning, this function may be performance-consuming, reduce the amount of items passed to contacts\n * and calls\n * @param {IContact[]} contacts\n * @param {ICall[]} calls\n * @param {IContactMatchOptions} [options]\n */\n CallHelper.prototype.attachContacts = function (contacts, calls, options) {\n var self = this;\n // Flatten all caller infos from all messages\n var callerInfos = calls.reduce(function (callerInfos, call) {\n return callerInfos.concat(self.getAllCallerInfos(call));\n }, []);\n this.contact.attachToCallerInfos(callerInfos, contacts, options);\n };\n /**\n * Check whether pair of calls are two legs of RingOut\n * @param {ICall} outboundRingOutCall\n * @param {ICall} inboundCall\n * @param {ICallProcessingOptions} options\n * @returns {boolean}\n */\n CallHelper.prototype.checkMergeability = function (outboundRingOutCall, inboundCall, options) {\n function getTime(dateString) {\n return new Date(dateString).getTime();\n }\n return (!options.strict || outboundRingOutCall.action && outboundRingOutCall.action.toLowerCase().indexOf('ringout') != -1) && // Check directions\n outboundRingOutCall.direction == 'Outbound' && inboundCall.direction == 'Inbound' && // Check that start times are equal or close enough\n (!inboundCall.startTime && !outboundRingOutCall.startTime || Math.abs(getTime(inboundCall.startTime) - getTime(outboundRingOutCall.startTime)) < (options.maxStartTimeDiscrepancy || 5000)) && // Check that numbers match\n inboundCall.from.phoneNumber == outboundRingOutCall.to.phoneNumber && (inboundCall.to.phoneNumber == outboundRingOutCall.from.phoneNumber || inboundCall.to.name == outboundRingOutCall.from.name) //TODO Maybe name check is not required\n;\n };\n /**\n * @param {ICall} outboundRingOutCall\n * @param {ICall} inboundCall\n * @param {ICallProcessingOptions} [options]\n * @returns {Array}\n */\n CallHelper.prototype.combineCalls = function (outboundRingOutCall, inboundCall, options) {\n options = options || {};\n var result = [];\n outboundRingOutCall.hasSubsequent = true;\n if (options.merge) {\n outboundRingOutCall.duration = outboundRingOutCall.duration > inboundCall.duration ? outboundRingOutCall.duration : inboundCall.duration;\n // TODO Usually information from inbound call is more accurate for unknown reason\n outboundRingOutCall.from = inboundCall.to;\n outboundRingOutCall.to = inboundCall.from;\n // Push only one \"merged\" outbound call\n result.push(outboundRingOutCall);\n } else {\n // Mark next call as subsequent\n inboundCall.subsequent = true;\n inboundCall.startTime = outboundRingOutCall.startTime;\n // Needed for sort\n // Push both calls, first outbound then inbound\n result.push(outboundRingOutCall);\n result.push(inboundCall);\n }\n return result;\n };\n /**\n * (!) Experimental (!)\n *\n * Calls in Recent Calls (Call Log) or Active Calls arrays can be combined if they are, for example, two legs of\n * one RingOut. The logic that stands behind this process is simple:\n *\n * - Calls must have opposite directions\n * - Must have been started within a certain limited time frame\n * - Must have same phone numbers in their Caller Info sections (from/to)\n *\n * ```js\n * var processedCalls = Call.processCalls(callsArray, {strict: false, merge: true});\n * ```\n *\n * Flags:\n *\n * - if `strict` is `true` then only calls with RingOut in `action` property will be affected\n * - `merge` — controls whether to merge calls (reducing the length of array) or give them `subsequent`\n * and `hasSubsequent` properties\n *\n * @param {ICall[]} calls\n * @param {ICallProcessingOptions} options\n * @returns {ICall[]}\n */\n CallHelper.prototype.processCalls = function (calls, options) {\n var processedCalls = [], callsToMerge = [], self = this;\n // Iterate through calls\n calls.forEach(function (call) {\n var merged = false;\n call.subsequent = false;\n call.hasSubsequent = false;\n // Second cycle to find other leg\n // It is assumed that call is the outbound, secondCall is inbound\n calls.some(function (secondCall) {\n if (call === secondCall)\n return false;\n if (self.checkMergeability(call, secondCall, options)) {\n // Push to result array merged call\n processedCalls = processedCalls.concat(self.combineCalls(call, secondCall, options));\n // Push to array calls that are merged\n callsToMerge.push(call);\n callsToMerge.push(secondCall);\n merged = true;\n }\n return merged;\n });\n });\n // After all calls are merged, add non-merged calls\n calls.forEach(function (call) {\n if (callsToMerge.indexOf(call) == -1)\n processedCalls.push(call);\n });\n return processedCalls;\n };\n /**\n * Converts Presence's ActiveCall array into regular Calls array\n * @param {IPresenceCall[]} activeCalls\n * @returns {ICall[]}\n */\n CallHelper.prototype.parsePresenceCalls = function (activeCalls) {\n return activeCalls.map(function (activeCall) {\n return {\n id: activeCall.id,\n uri: '',\n sessionId: activeCall.sessionId,\n from: { phoneNumber: activeCall.from },\n to: { phoneNumber: activeCall.to },\n direction: activeCall.direction,\n startTime: '',\n duration: 0,\n type: '',\n action: '',\n result: this.presence.isCallInProgress(activeCall) ? 'In Progress' : activeCall.telephonyStatus,\n telephonyStatus: activeCall.telephonyStatus\n };\n }, this);\n };\n /**\n * @param {ICall} call\n * @returns {string}\n */\n CallHelper.prototype.getSignature = function (call) {\n function cleanup(phoneNumber) {\n return (phoneNumber || '').toString().replace(/[^0-9]/gi, '');\n }\n return call.direction + '|' + (call.from && cleanup(call.from.phoneNumber)) + '|' + (call.to && cleanup(call.to.phoneNumber));\n };\n /**\n * @param {ICall[]} presenceCalls\n * @param {IPresence} presence\n * @returns {ICall[]}\n */\n CallHelper.prototype.mergePresenceCalls = function (presenceCalls, presence) {\n var currentDate = new Date(), activeCalls = this.parsePresenceCalls(presence && presence.activeCalls || []).map(function (call) {\n // delete property to make sure it is skipped during merge\n delete call.startTime;\n return call;\n });\n presenceCalls = this.merge(presenceCalls || [], activeCalls, this.getSessionId, true);\n presenceCalls.forEach(function (call) {\n if (!call.startTime)\n call.startTime = currentDate.toISOString();\n });\n return presenceCalls;\n };\n /**\n * @param {ICall[]} presenceCalls\n * @param {ICall[]} calls\n * @param {ICall[]} activeCalls\n * @returns {ICall[]}\n */\n CallHelper.prototype.mergeAll = function (presenceCalls, calls, activeCalls) {\n // First, merge calls into presence calls\n var presenceAndCalls = this.merge(presenceCalls || [], calls || [], this.getSessionId, true);\n // Second, merge activeCalls into previous result\n return this.merge(presenceAndCalls, activeCalls || [], this.getSessionId, true);\n };\n module.exports = {\n Class: CallHelper,\n /**\n * @param {Context} context\n * @returns {CallHelper}\n */\n $get: function (context) {\n return context.createSingleton('CallHelper', function () {\n return new CallHelper(context);\n });\n }\n }; /**\n * @typedef {object} ICall\n * @property {string} id\n * @property {string} uri\n * @property {string} sessionId\n * @property {string} startTime\n * @property {string} duration\n * @property {string} type\n * @property {string} direction\n * @property {string} action\n * @property {string} result\n * @property {ICallerInfo} to\n * @property {ICallerInfo} from\n */\n /**\n * @typedef {object} ICallOptions\n * @property {string} extensionId\n * @property {boolean} active\n * @property {boolean} personal\n */\n /**\n * @typedef {object} ICallProcessingOptions\n * @property {boolean} strict\n * @property {boolean} merge\n * @property {number} maxStartTimeDiscrepancy\n */\n /**\n * @typedef {object} ICallFilterOptions\n * @property {string} extensionId\n * @property {string} direction\n * @property {string} type\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/CallerInfo.html\n * @typedef {Object} ICallerInfo\n * @property {string} phoneNumber\n * @property {string} extensionNumber\n * @property {string} name\n * @property {string} location\n * @property {IContact} [contact] - corresponding contact (added by attachContacts methods)\n * @property {string} [contactPhone] - contact's phone as written in contact (added by attachContacts methods)\n */\n});","define('helpers/Conferencing', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ConferencingHelper(context) {\n Helper.call(this, context);\n }\n ConferencingHelper.prototype = Object.create(Helper.prototype);\n ConferencingHelper.prototype.createUrl = function () {\n return '/account/~/extension/~/conferencing';\n };\n module.exports = {\n Class: ConferencingHelper,\n /**\n * @param {Context} context\n * @returns {ConferencingHelper}\n */\n $get: function (context) {\n return context.createSingleton('ConferencingHelper', function () {\n return new ConferencingHelper(context);\n });\n }\n };\n});","define('helpers/ContactGroup', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function ContactGroupHelper(context) {\n Helper.call(this, context);\n }\n ContactGroupHelper.prototype = Object.create(Helper.prototype);\n ContactGroupHelper.prototype.createUrl = function (options, id) {\n return '/account/~/extension/~/address-book/group' + (id ? '/' + id : '');\n };\n /**\n * @param {IContactGroup} item\n */\n ContactGroupHelper.prototype.validate = function (item) {\n return Validator.validate([{\n field: 'groupName',\n validator: Validator.required(item && item.groupName)\n }]);\n };\n module.exports = {\n Class: ContactGroupHelper,\n /**\n * @param {Context} context\n * @returns {ContactGroupHelper}\n */\n $get: function (context) {\n return context.createSingleton('ContactGroupHelper', function () {\n return new ContactGroupHelper(context);\n });\n }\n }; /**\n * @typedef {object} IContactGroup\n * @property {string} id\n * @property {string} uri\n * @property {string} notes\n * @property {string} groupName\n * @property {number} contactsCount\n */\n});","define('helpers/Device', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'helpers/Extension',\n 'helpers/DeviceModel'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function DeviceHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n this.deviceModel = require('./DeviceModel').$get(context);\n }\n DeviceHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IDeviceOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n DeviceHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (options.order)\n return '/account/~/order';\n return '/account/~' + (options.extensionId ? '/extension/' + options.extensionId : '') + '/device' + (id ? '/' + id : '');\n };\n /**\n * @param {IDevice} item\n */\n DeviceHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'emergencyServiceAddress-street',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.street)\n },\n {\n field: 'emergencyServiceAddress-city',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.city)\n },\n {\n field: 'emergencyServiceAddress-state',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.state)\n },\n {\n field: 'emergencyServiceAddress-country',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.country)\n },\n {\n field: 'emergencyServiceAddress-zip',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.zip)\n },\n {\n field: 'emergencyServiceAddress-customerName',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.customerName)\n },\n {\n field: 'extension',\n validator: Validator.required(this.extension.getId(item && item.extension))\n },\n {\n field: 'model',\n validator: Validator.required(this.deviceModel.getId(item && item.model))\n }\n ]);\n };\n module.exports = {\n Class: DeviceHelper,\n /**\n * @param {Context} context\n * @returns {DeviceHelper}\n */\n $get: function (context) {\n return context.createSingleton('DeviceHelper', function () {\n return new DeviceHelper(context);\n });\n }\n }; /**\n * @typedef {Object} IDevice\n * @property {string} id\n * @property {string} uri\n * @property {string} type\n * @property {string} name\n * @property {string} serial\n * @property {IDeviceModel} model\n * @property {IExtensionShort} extension TODO IExtension?\n * @property {IDeviceAddress} emergencyServiceAddress\n * @property {IDeviceShipping} shipping\n * @property {IDevicePhoneLine[]} phoneLines\n */\n /**\n * @typedef {Object} IDeviceOrder\n * @property {IDevice[]} devices\n */\n /**\n * @typedef {Object} IDeviceAddress\n * @property {string} street\n * @property {string} street2\n * @property {string} city\n * @property {string} state\n * @property {string} country\n * @property {string} zip\n * @property {string} customerName\n */\n /**\n * @typedef {Object} IDeviceShipping\n * @property {IDeviceAddress} address\n * @property {IShippingMethod} method\n * @property {string} status\n */\n /**\n * @typedef {Object} IDevicePhoneLine\n * @property {string} lineType\n * @property {IPhoneNumber} phoneInfo\n */\n /**\n * @typedef {Object} IDeviceOptions\n * @property {string} extensionId\n */\n});","define('helpers/ForwardingNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'core/List'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function ForwardingNumberHelper(context) {\n Helper.call(this, context);\n }\n ForwardingNumberHelper.prototype = Object.create(Helper.prototype);\n ForwardingNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId || '~') + '/forwarding-number' + (id ? '/' + id : '');\n };\n ForwardingNumberHelper.prototype.getId = function (forwardingNumber) {\n return forwardingNumber.id || forwardingNumber.phoneNumber;\n };\n ForwardingNumberHelper.prototype.hasFeature = function (phoneNumber, feature) {\n return !!phoneNumber.features && phoneNumber.features.indexOf(feature) != -1;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ForwardingNumberHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'label' }, options));\n };\n /**\n * @param options\n * @returns {function(IForwardingNumber)}\n */\n ForwardingNumberHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({ features: [] }, options);\n return List.filter([{\n condition: options.features.length,\n filterFn: function (item) {\n return options.features.some(function (feature) {\n return self.hasFeature(item, feature);\n });\n }\n }]);\n };\n module.exports = {\n Class: ForwardingNumberHelper,\n /**\n * @param {Context} context\n * @returns {ForwardingNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('ForwardingNumberHelper', function () {\n return new ForwardingNumberHelper(context);\n });\n }\n }; /**\n *\n * @typedef {object} IForwardingNumber\n * @property {string} id\n * @property {string} uri\n * @property {string} label\n * @property {string} phoneNumber\n * @property {string} flipNumber\n */\n});","define('helpers/Message', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'core/Utils',\n 'core/List',\n 'core/Platform',\n 'helpers/Contact',\n 'core/Subscription'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator'), Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function MessageHelper(context) {\n Helper.call(this, context);\n this.platform = require('../core/Platform').$get(context);\n this.contact = require('./Contact').$get(context);\n }\n MessageHelper.prototype = Object.create(Helper.prototype);\n /**\n *\n * @param {IMessageOptions} [options]\n * @param {string} [id]\n * @returns {string}\n * @exceptionalCase Different endpoint when creating SMS/Pager\n */\n MessageHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n var root = '/account/~/extension/' + (options.extensionId || '~');\n if (options.fax)\n return root + '/fax';\n if (options.sms)\n return root + '/sms';\n if (options.pager)\n return root + '/company-pager';\n if (options.sync)\n return root + '/message-sync';\n return root + '/message-store' + (id ? '/' + id : '');\n };\n MessageHelper.prototype.isInbound = function (message) {\n return message && message.direction == 'Inbound';\n };\n MessageHelper.prototype.isOutbound = function (message) {\n return !this.isInbound(message);\n };\n MessageHelper.prototype.isSMS = function (message) {\n return message && message.type == 'SMS';\n };\n MessageHelper.prototype.isPager = function (message) {\n return message && message.type == 'Pager';\n };\n MessageHelper.prototype.isVoiceMail = function (message) {\n return message && message.type == 'VoiceMail';\n };\n MessageHelper.prototype.isFax = function (message) {\n return message && message.type == 'Fax';\n };\n MessageHelper.prototype.isAlive = function (message) {\n //return (this.availability != 'Deleted' && this.availability != 'Purged');\n return message && message.availability == 'Alive';\n };\n MessageHelper.prototype.isRead = function (message) {\n return message.readStatus == 'Read';\n };\n MessageHelper.prototype.setIsRead = function (message, isRead) {\n message.readStatus = !!isRead ? 'Read' : 'Unread';\n return message;\n };\n MessageHelper.prototype.getAttachmentUrl = function (message, i) {\n return message.attachments[i] ? this.platform.apiUrl(message.attachments[i].uri, {\n addMethod: 'GET',\n addServer: true,\n addToken: true\n }) : '';\n };\n MessageHelper.prototype.getAttachmentContentType = function (message, i) {\n return message.attachments[i] ? message.attachments[i].contentType : '';\n };\n /**\n * @returns {Subscription}\n */\n MessageHelper.prototype.getSubscription = function (options) {\n return require('../core/Subscription').$get(this.context).setEvents([this.createUrl(options)]);\n };\n /**\n * Returns from-phones if inbound (oterwise to-phones)\n * @returns {ICallerInfo[]}\n */\n MessageHelper.prototype.getCallerInfos = function (message) {\n return this.isInbound(message) ? [message.from] : message.to;\n };\n /**\n * Returns first from-phones if inbound (oterwise to-phones), then vice-versa\n * @returns {ICallerInfo[]}\n */\n MessageHelper.prototype.getAllCallerInfos = function (message) {\n return this.getCallerInfos(message).concat(this.isInbound(message) ? message.to : [message.from]);\n };\n /**\n * TODO Compare as dates\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n MessageHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'creationTime' }, options));\n };\n /**\n * @param {IMessageFilterOptions} [options]\n * @returns {function(IMessage)}\n */\n MessageHelper.prototype.filter = function (options) {\n options = Utils.extend({\n search: '',\n alive: true,\n direction: '',\n conversationId: '',\n readStatus: ''\n }, options);\n return List.filter([\n {\n condition: options.alive,\n filterFn: this.isAlive\n },\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n filterBy: 'direction',\n condition: options.direction\n },\n {\n filterBy: 'conversationId',\n condition: options.conversationId\n },\n {\n filterBy: 'readStatus',\n condition: options.readStatus\n },\n {\n filterBy: 'subject',\n condition: options.search,\n filterFn: List.containsFilter\n }\n ]);\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all callerInfos found in all messages\n * Warning, this function may be performance-consuming, reduce the amount of items passed to contacts and messages\n * @param {IContact[]} contacts\n * @param {IMessage[]} messages\n * @param {IContactMatchOptions} [options]\n */\n MessageHelper.prototype.attachContacts = function (contacts, messages, options) {\n var self = this;\n // Flatten all caller infos from all messages\n var callerInfos = messages.reduce(function (callerInfos, message) {\n return callerInfos.concat(self.getAllCallerInfos(message));\n }, []);\n this.contact.attachToCallerInfos(callerInfos, contacts, options);\n };\n /**\n *\n * @param message\n * @returns {IMessageShort}\n */\n MessageHelper.prototype.shorten = function (message) {\n return {\n from: message.from,\n to: message.to,\n text: message.subject\n };\n };\n /**\n * @param {IMessage} item\n */\n MessageHelper.prototype.validateSMS = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(Utils.getProperty(item, 'to[0].phoneNumber'))\n },\n {\n field: 'from',\n validator: Validator.required(Utils.getProperty(item, 'from.phoneNumber'))\n },\n {\n field: 'subject',\n validator: Validator.required(Utils.getProperty(item, 'subject'))\n },\n {\n field: 'subject',\n validator: Validator.length(Utils.getProperty(item, 'subject'), 160)\n }\n ]);\n };\n /**\n * @param {IMessage} item\n */\n MessageHelper.prototype.validatePager = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(Utils.getProperty(item, 'to.extensionNumber'))\n },\n {\n field: 'from',\n validator: Validator.required(Utils.getProperty(item, 'from.extensionNumber'))\n },\n {\n field: 'subject',\n validator: Validator.required(Utils.getProperty(item, 'subject'))\n },\n {\n field: 'subject',\n validator: Validator.length(Utils.getProperty(item, 'subject'), 160)\n }\n ]);\n };\n module.exports = {\n Class: MessageHelper,\n /**\n * @param {Context} context\n * @returns {MessageHelper}\n */\n $get: function (context) {\n return context.createSingleton('MessageHelper', function () {\n return new MessageHelper(context);\n });\n }\n }; /**\n * @typedef {object} IMessage\n * @property {string} id\n * @property {string} uri\n * @property {ICallerInfo[]} to\n * @property {ICallerInfo} from\n * @property {string} type\n * @property {string} creationTime\n * @property {string} readStatus\n * @property {string} priority\n * @property {IMessageAttachment} attachments\n * @property {string} direction\n * @property {string} availability\n * @property {string} subject\n * @property {string} messageStatus\n * @property {string} conversationId\n * @property {string} lastModifiedTime\n */\n /**\n * @typedef {object} IMessageShort\n * @property {ICallerInfo[]} to\n * @property {ICallerInfo} from\n * @property {string} text\n */\n /**\n * @typedef {object} IMessageOptions\n * @property {boolean} fax\n * @property {boolean} sync\n * @property {boolean} sms\n * @property {boolean} pager\n * @property {string} extensionId\n */\n /**\n * @typedef {object} IMessageFilterOptions\n * @property {boolean} alive\n * @property {string} conversationId\n * @property {string} direction\n * @property {string} readStatus\n * @property {string} type\n */\n /**\n * @typedef {object} IMessageFaxAttachment\n * @property {string} contentType\n * @property {string} content\n * @property {string} fileName\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch18s01.html#MessageAttachmentInfo\n * @typedef {Object} IMessageAttachment\n * @property {string} id\n * @property {string} uri\n * @property {string} contentType\n * @property {string} vmDuration\n */\n});","define('helpers/PhoneNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/List',\n 'core/Utils',\n 'core/Helper',\n 'helpers/Extension'\n], function (require, exports, module) {\n 'use strict';\n var List = require('../core/List'), Utils = require('../core/Utils'), Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function PhoneNumberHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n PhoneNumberHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IPhoneNumberOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n PhoneNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (options.lookup)\n return '/number-pool/lookup';\n return '/account/~' + (options.extensionId ? '/extension/' + options.extensionId : '') + '/phone-number' + (id ? '/' + id : '');\n };\n PhoneNumberHelper.prototype.isSMS = function (phoneNumber) {\n return this.hasFeature(phoneNumber, 'SmsSender');\n };\n PhoneNumberHelper.prototype.hasFeature = function (phoneNumber, feature) {\n return !!phoneNumber.features && phoneNumber.features.indexOf(feature) != -1;\n };\n PhoneNumberHelper.prototype.reserve = function (phoneNumber, date) {\n phoneNumber.reservedTill = new Date(date).toISOString();\n };\n PhoneNumberHelper.prototype.unreserve = function (phoneNumber) {\n phoneNumber.reservedTill = null;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(IPhoneNumber, IPhoneNumber)}\n */\n PhoneNumberHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({\n /**\n * @param {IPhoneNumber} item\n * @returns {string}\n */\n extractFn: function (item) {\n return item.usageType + '-' + item.paymentType + '-' + item.type;\n }\n }, options));\n };\n /**\n * TODO Add other filtering methods http://jira.ringcentral.com/browse/SDK-5\n * @param {IPhoneNumberFilterOptions} options\n * @returns {function(IForwardingNumber)}\n */\n PhoneNumberHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({\n usageType: '',\n paymentType: '',\n type: '',\n features: []\n }, options);\n return List.filter([\n {\n filterBy: 'usageType',\n condition: options.usageType\n },\n {\n filterBy: 'paymentType',\n condition: options.paymentType\n },\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n condition: options.features.length,\n filterFn: function (item) {\n return options.features.some(function (feature) {\n return self.hasFeature(item, feature);\n });\n }\n }\n ]);\n };\n module.exports = {\n Class: PhoneNumberHelper,\n /**\n * @param {Context} context\n * @returns {PhoneNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('PhoneNumberHelper', function () {\n return new PhoneNumberHelper(context);\n });\n }\n }; /**\n * @typedef {object} IPhoneNumber\n * @property {string} id\n * @property {string} uri\n * @property {string} phoneNumber\n * @property {string} paymentType - External, TollFree, Local\n * @property {string} location\n * @property {string} type - VoiceFax, FaxOnly, VoiceOnly\n * @property {string} usageType - CompanyNumber, DirectNumber, CompanyFaxNumber, ForwardedNumber\n * @property {array} features - CallerId, SmsSender\n * @property {string} reservedTill - Date\n * @property {string} error\n */\n /**\n * @typedef {object} IPhoneNumberOptions\n * @property {string} extensionId\n * @property {true} lookup\n * @property {string} countryId\n * @property {string} paymentType\n * @property {string} npa\n * @property {string} nxx\n * @property {string} line\n * @property {string} exclude\n */\n /**\n * @typedef {object} IPhoneNumberFilterOptions\n * @property {string} paymentType\n * @property {string} usageType\n * @property {string} type\n * @property {string[]} features\n */\n /**\n * @typedef {object} IPhoneNumberOrder\n * @property {IPhoneNumber[]} records\n */\n});","define('helpers/Ringout', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'helpers/Extension'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function RingoutHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n RingoutHelper.prototype = Object.create(Helper.prototype);\n RingoutHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId || '~') + '/ringout' + (id ? '/' + id : '');\n };\n RingoutHelper.prototype.resetAsNew = function (object) {\n object = Helper.prototype.resetAsNew.call(this, object);\n if (object) {\n delete object.status;\n }\n return object;\n };\n RingoutHelper.prototype.isInProgress = function (ringout) {\n return ringout && !this.isNew(ringout) && ringout.status && ringout.status.callStatus == 'InProgress';\n };\n RingoutHelper.prototype.isSuccess = function (ringout) {\n return ringout && !this.isNew(ringout) && ringout.status && ringout.status.callStatus == 'Success';\n };\n RingoutHelper.prototype.isError = function (ringout) {\n return !this.isNew(ringout) && !this.isInProgress(ringout) && !this.isSuccess(ringout);\n };\n /**\n * @param {IRingout} item\n */\n RingoutHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(item && item.to && item.to.phoneNumber)\n },\n {\n field: 'from',\n validator: Validator.required(item && item.from && item.from.phoneNumber)\n }\n ]);\n };\n module.exports = {\n Class: RingoutHelper,\n /**\n * @param {Context} context\n * @returns {RingoutHelper}\n */\n $get: function (context) {\n return context.createSingleton('RingoutHelper', function () {\n return new RingoutHelper(context);\n });\n }\n }; /**\n * @typedef {object} IRingout\n * @property {ICallerInfo} [from] (!) ONLY PHONE NUMBER\n * @property {ICallerInfo} [to] (!) ONLY PHONE NUMBER\n * @property {ICallerInfo} [callerId] (!) ONLY PHONE NUMBER\n * @property {boolean} [playPrompt]\n * @property {{callStatus:boolean, callerStatus:boolean, calleeStatus:boolean}} [status]\n */\n});","define('helpers/Service', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ServiceHelper(context) {\n Helper.call(this, context);\n }\n ServiceHelper.prototype = Object.create(Helper.prototype);\n ServiceHelper.prototype.createUrl = function () {\n return '/account/~/service-info';\n };\n /**\n * @param {string} feature\n * @param {IServiceFeature[]} serviceFeatures\n * @returns {*}\n */\n ServiceHelper.prototype.isEnabled = function (feature, serviceFeatures) {\n return serviceFeatures.reduce(function (value, f) {\n if (f.featureName == feature)\n value = f.enabled;\n return value;\n }, false);\n };\n ServiceHelper.prototype.isSmsEnabled = isServiceFeatureEnabledMethod('SMS');\n ServiceHelper.prototype.isSmsReceivingEnabled = isServiceFeatureEnabledMethod('SMSReceiving');\n ServiceHelper.prototype.isPresenceEnabled = isServiceFeatureEnabledMethod('Presence');\n ServiceHelper.prototype.isRingOutEnabled = isServiceFeatureEnabledMethod('RingOut');\n ServiceHelper.prototype.isInternationalCallingEnabled = isServiceFeatureEnabledMethod('InternationalCalling');\n ServiceHelper.prototype.isDndEnabled = isServiceFeatureEnabledMethod('DND');\n ServiceHelper.prototype.isFaxEnabled = isServiceFeatureEnabledMethod('Fax');\n ServiceHelper.prototype.isFaxReceivingEnabled = isServiceFeatureEnabledMethod('FaxReceiving');\n ServiceHelper.prototype.isVoicemailEnabled = isServiceFeatureEnabledMethod('Voicemail');\n ServiceHelper.prototype.isPagerEnabled = isServiceFeatureEnabledMethod('Pager');\n ServiceHelper.prototype.isPagerReceivingEnabled = isServiceFeatureEnabledMethod('PagerReceiving');\n ServiceHelper.prototype.isVoipCallingEnabled = isServiceFeatureEnabledMethod('VoipCalling');\n ServiceHelper.prototype.isVideoConferencingEnabled = isServiceFeatureEnabledMethod('VideoConferencing');\n ServiceHelper.prototype.isSalesForceEnabled = isServiceFeatureEnabledMethod('SalesForce');\n ServiceHelper.prototype.isIntercomEnabled = isServiceFeatureEnabledMethod('Intercom');\n ServiceHelper.prototype.isPagingEnabled = isServiceFeatureEnabledMethod('Paging');\n ServiceHelper.prototype.isConferencingEnabled = isServiceFeatureEnabledMethod('Conferencing');\n ServiceHelper.prototype.isFreeSoftPhoneLinesEnabled = isServiceFeatureEnabledMethod('FreeSoftPhoneLines');\n ServiceHelper.prototype.isHipaaComplianceEnabled = isServiceFeatureEnabledMethod('HipaaCompliance');\n ServiceHelper.prototype.isCallParkEnabled = isServiceFeatureEnabledMethod('CallPark');\n ServiceHelper.prototype.isOnDemandCallRecordingEnabled = isServiceFeatureEnabledMethod('OnDemandCallRecording');\n function isServiceFeatureEnabledMethod(feature) {\n return function (serviceFeatures) {\n return this.isEnabled(feature, serviceFeatures);\n };\n }\n module.exports = {\n Class: ServiceHelper,\n /**\n * @param {Context} context\n * @returns {ServiceHelper}\n */\n $get: function (context) {\n return context.createSingleton('serviceHelper', function () {\n return new ServiceHelper(context);\n });\n }\n }; /**\n * @typedef {object} IServiceFeature\n * @property {string} featureName\n * @property {boolean} enabled\n */\n /**\n * @typedef {object} IService\n * @property {IServiceFeature[]} serviceFeatures\n * @property {string} servicePlanName\n */\n});","define('RCSDK', [\n 'require',\n 'exports',\n 'module',\n 'core/Context',\n 'core/Ajax',\n 'core/AjaxObserver',\n 'core/xhr/XhrResponse',\n 'core/Platform',\n 'core/Cache',\n 'core/Subscription',\n 'core/PageVisibility',\n 'core/Helper',\n 'core/Observable',\n 'core/Validator',\n 'core/Log',\n 'core/Utils',\n 'core/List',\n 'helpers/Country',\n 'helpers/DeviceModel',\n 'helpers/Language',\n 'helpers/Location',\n 'helpers/ShippingMethod',\n 'helpers/State',\n 'helpers/Timezone',\n 'helpers/Account',\n 'helpers/BlockedNumber',\n 'helpers/Call',\n 'helpers/Conferencing',\n 'helpers/Contact',\n 'helpers/ContactGroup',\n 'helpers/Device',\n 'helpers/Extension',\n 'helpers/ForwardingNumber',\n 'helpers/Message',\n 'helpers/PhoneNumber',\n 'helpers/Presence',\n 'helpers/Ringout',\n 'helpers/Service'\n], function (require, exports, module) {\n 'use strict';\n /**\n * @param {IInjections} injections\n * @returns {RCSDK}\n */\n module.exports = function (injections) {\n /**\n * @name RCSDK\n * @constructor\n */\n function RCSDK(options) {\n /** @private */\n this._context = require('./core/Context').$get(injections); //TODO Link Platform events with Subscriptions and the rest\n }\n RCSDK.version = '1.1.2';\n // Internals\n /**\n * @returns {Context}\n */\n RCSDK.prototype.getContext = function () {\n return this._context;\n };\n // Core\n /**\n */\n RCSDK.prototype.getAjax = function () {\n return require('./core/Ajax').$get(this.getContext());\n };\n /**\n * @returns {AjaxObserver}\n */\n RCSDK.prototype.getAjaxObserver = function () {\n return require('./core/AjaxObserver').$get(this.getContext());\n };\n /**\n * @returns {XhrResponse}\n */\n RCSDK.prototype.getXhrResponse = function () {\n return require('./core/xhr/XhrResponse').$get(this.getContext());\n };\n /**\n * @returns {Platform}\n */\n RCSDK.prototype.getPlatform = function () {\n return require('./core/Platform').$get(this.getContext());\n };\n /**\n * @returns {Cache}\n */\n RCSDK.prototype.getCache = function () {\n return require('./core/Cache').$get(this.getContext());\n };\n /**\n * @returns {Subscription}\n */\n RCSDK.prototype.getSubscription = function () {\n return require('./core/Subscription').$get(this.getContext());\n };\n /**\n * @returns {PageVisibility}\n */\n RCSDK.prototype.getPageVisibility = function () {\n return require('./core/PageVisibility').$get(this.getContext());\n };\n /**\n * @returns {Helper}\n */\n RCSDK.prototype.getHelper = function () {\n return require('./core/Helper').$get(this.getContext());\n };\n /**\n * @returns {Observable}\n */\n RCSDK.prototype.getObservable = function () {\n return require('./core/Observable').$get(this.getContext());\n };\n /**\n * @returns {Validator}\n */\n RCSDK.prototype.getValidator = function () {\n return require('./core/Validator').$get(this.getContext());\n };\n /**\n * @returns {Log}\n */\n RCSDK.prototype.getLog = function () {\n return require('./core/Log').$get(this.getContext());\n };\n /**\n * @returns {Utils}\n */\n RCSDK.prototype.getUtils = function () {\n return require('./core/Utils').$get(this.getContext());\n };\n /**\n * @returns {List}\n */\n RCSDK.prototype.getList = function () {\n return require('./core/List').$get(this.getContext());\n };\n // Helpers\n /**\n * @returns {CountryHelper}\n */\n RCSDK.prototype.getCountryHelper = function () {\n return require('./helpers/Country').$get(this.getContext());\n };\n /**\n * @returns {DeviceModelHelper}\n */\n RCSDK.prototype.getDeviceModelHelper = function () {\n return require('./helpers/DeviceModel').$get(this.getContext());\n };\n /**\n * @returns {LanguageHelper}\n */\n RCSDK.prototype.getLanguageHelper = function () {\n return require('./helpers/Language').$get(this.getContext());\n };\n /**\n * @returns {LocationHelper}\n */\n RCSDK.prototype.getLocationHelper = function () {\n return require('./helpers/Location').$get(this.getContext());\n };\n /**\n * @returns {ShippingMethodHelper}\n */\n RCSDK.prototype.getShippingMethodHelper = function () {\n return require('./helpers/ShippingMethod').$get(this.getContext());\n };\n /**\n * @returns {StateHelper}\n */\n RCSDK.prototype.getStateHelper = function () {\n return require('./helpers/State').$get(this.getContext());\n };\n /**\n * @returns {TimezoneHelper}\n */\n RCSDK.prototype.getTimezoneHelper = function () {\n return require('./helpers/Timezone').$get(this.getContext());\n };\n /**\n * @returns {AccountHelper}\n */\n RCSDK.prototype.getAccountHelper = function () {\n return require('./helpers/Account').$get(this.getContext());\n };\n /**\n * @returns {BlockedNumberHelper}\n */\n RCSDK.prototype.getBlockedNumberHelper = function () {\n return require('./helpers/BlockedNumber').$get(this.getContext());\n };\n /**\n * @returns {CallHelper}\n */\n RCSDK.prototype.getCallHelper = function () {\n return require('./helpers/Call').$get(this.getContext());\n };\n /**\n * @returns {ConferencingHelper}\n */\n RCSDK.prototype.getConferencingHelper = function () {\n return require('./helpers/Conferencing').$get(this.getContext());\n };\n /**\n * @returns {ContactHelper}\n */\n RCSDK.prototype.getContactHelper = function () {\n return require('./helpers/Contact').$get(this.getContext());\n };\n /**\n * @returns {ContactGroupHelper}\n */\n RCSDK.prototype.getContactGroupHelper = function () {\n return require('./helpers/ContactGroup').$get(this.getContext());\n };\n /**\n * @returns {DeviceHelper}\n */\n RCSDK.prototype.getDeviceHelper = function () {\n return require('./helpers/Device').$get(this.getContext());\n };\n /**\n * @returns {ExtensionHelper}\n */\n RCSDK.prototype.getExtensionHelper = function () {\n return require('./helpers/Extension').$get(this.getContext());\n };\n /**\n * @returns {ForwardingNumberHelper}\n */\n RCSDK.prototype.getForwardingNumberHelper = function () {\n return require('./helpers/ForwardingNumber').$get(this.getContext());\n };\n /**\n * @returns {MessageHelper}\n */\n RCSDK.prototype.getMessageHelper = function () {\n return require('./helpers/Message').$get(this.getContext());\n };\n /**\n * @returns {PhoneNumberHelper}\n */\n RCSDK.prototype.getPhoneNumberHelper = function () {\n return require('./helpers/PhoneNumber').$get(this.getContext());\n };\n /**\n * @returns {PresenceHelper}\n */\n RCSDK.prototype.getPresenceHelper = function () {\n return require('./helpers/Presence').$get(this.getContext());\n };\n /**\n * @returns {RingoutHelper}\n */\n RCSDK.prototype.getRingoutHelper = function () {\n return require('./helpers/Ringout').$get(this.getContext());\n };\n /**\n * @returns {ServiceHelper}\n */\n RCSDK.prototype.getServiceHelper = function () {\n return require('./helpers/Service').$get(this.getContext());\n };\n /** @type {window} */\n var root = new Function('return this')();\n function getXHR() {\n return root.XMLHttpRequest || function () {\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (e1) {\n }\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (e2) {\n }\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (e3) {\n }\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n function getCryptoJS() {\n return root.CryptoJS || typeof CryptoJS !== 'undefined' && CryptoJS;\n }\n function getLocalStorage() {\n return root.localStorage;\n }\n function getPUBNUB() {\n return root.PUBNUB || typeof PUBNUB !== 'undefined' && PUBNUB;\n }\n function getPromise() {\n return root.Promise;\n }\n injections = injections || {};\n injections.CryptoJS = injections.CryptoJS || getCryptoJS();\n injections.localStorage = injections.localStorage || getLocalStorage();\n injections.Promise = injections.Promise || getPromise();\n injections.PUBNUB = injections.PUBNUB || getPUBNUB();\n injections.XHR = injections.XHR || getXHR();\n return RCSDK;\n }; /**\n * @typedef {Object} IInjections\n * @property {PUBNUB} PUBNUB\n * @property {CryptoJS} CryptoJS\n * @property {Storage} localStorage\n * @property {XMLHttpRequest} XHR\n * @property {Promise} Promise\n */\n});","(function() {\n\n if (typeof exports !== 'undefined') { // NodeJS\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = RCSDK({\n CryptoJS: require('crypto-js'),\n localStorage: new (require('dom-storage'))(),\n Promise: require('es6-promise').Promise,\n PUBNUB: require('pubnub'),\n XHR: require('xhr2')\n });\n }\n\n } else if (typeof define === 'function' && define.amd) { // RequireJS\n\n define(['crypto-js', 'pubnub', 'es6-promise'], function(CryptoJS, PUBNUB) { // amdclean\n return RCSDK({\n CryptoJS: CryptoJS,\n PUBNUB: PUBNUB\n });\n });\n\n } else { // Standalone in browser\n\n RCSDK.noConflict = (function(old) {\n return function() {\n root.RCSDK = old;\n RCSDK.noConflict = undefined;\n return RCSDK;\n };\n })(root.RCSDK);\n\n root.RCSDK = RCSDK({});\n\n }\n\n})();"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["rc-sdk.js","core/pubnub/PubnubMock.js","core/Utils.js","core/Log.js","core/xhr/XhrResponse.js","core/xhr/XhrMock.js","core/Context.js","core/Observable.js","core/AjaxObserver.js","core/Ajax.js","core/Cache.js","core/Platform.js","core/Subscription.js","core/PageVisibility.js","core/Helper.js","core/Validator.js","core/List.js","helpers/Country.js","helpers/DeviceModel.js","helpers/Language.js","helpers/State.js","helpers/Location.js","helpers/ShippingMethod.js","helpers/Timezone.js","helpers/Account.js","helpers/BlockedNumber.js","helpers/Extension.js","helpers/Presence.js","helpers/Contact.js","helpers/Call.js","helpers/Conferencing.js","helpers/ContactGroup.js","helpers/Device.js","helpers/ForwardingNumber.js","helpers/Message.js","helpers/PhoneNumber.js","helpers/Ringout.js","helpers/Service.js","RCSDK.js","umd.js"],"names":["core_pubnub_PubnubMock","core_Utils","core_Log","core_xhr_XhrResponse","core_xhr_XhrMock","core_Context","core_Observable","core_AjaxObserver","core_Ajax","core_Cache","core_Platform","core_Subscription","core_PageVisibility","core_Helper","core_Validator","core_List","helpers_Country","helpers_DeviceModel","helpers_Language","helpers_State","helpers_Location","helpers_ShippingMethod","helpers_Timezone","helpers_Account","helpers_BlockedNumber","helpers_Extension","helpers_Presence","helpers_Contact","helpers_Call","helpers_Conferencing","helpers_ContactGroup","helpers_Device","helpers_ForwardingNumber","helpers_Message","helpers_PhoneNumber","helpers_Ringout","helpers_Service","RCSDK","exports","WS","url","pubnub","ready","onmessage","onclose","onerror","onopen","close","code","reason","wasClean","receiveMessage","data","$get","context","ws","hasOwn","Object","prototype","hasOwnProperty","toString","rdigit","class2type","split","forEach","name","toLowerCase","Utils","extend","targetObject","sourceObject","options","src","copy","copyIsArray","clone","target","arguments","i","length","deep","isFunction","isPlainObject","isArray","undefined","object","cb","res","queryStringify","parameters","array","self","v","vv","push","encodeURIComponent","join","parseQueryString","queryString","argsParsed","arg","decodeURIComponent","indexOf","trim","pair","key","value","isEmail","multiple","test","isPhoneNumber","argumentsToArray","args","Array","slice","call","isDate","obj","type","isWindow","isNaN","String","nodeType","constructor","getProperty","property","eval","e","poll","fn","interval","timeout","stopPolling","next","delay","setTimeout","clearTimeout","parseString","s","parseNumber","n","parseFloat","Log","logDebug","logInfo","logWarnings","logErrors","addTimestamps","console","log","warn","info","error","disableAll","enableAll","parseArguments","unshift","Date","toLocaleString","debug","apply","XhrResponse","responses","add","response","clear","find","ajax","currentResponse","path","Class","createSingleton","XhrMock","async","method","requestHeaders","withCredentials","readyState","responseHeaders","status","getResponseHeader","header","setRequestHeader","open","send","contentType","getRequestHeader","JSON","parse","Error","bind","setStatus","setResponseHeader","Promise","getPromise","onLoad","stringify","responseText","onload","then","catch","abort","Context","injections","singletons","stubPubnub","stubAjax","factory","usePubnubStub","flag","useAjaxStub","getCryptoJS","CryptoJS","getPubnub","PUBNUB","getLocalStorage","localStorage","getXHR","XHR","Observable","defineProperty","enumerable","writable","hasListeners","event","listeners","registerOneTimeEvent","oneTimeEvents","oneTimeArguments","on","events","callback","isOneTimeEventFired","getOneTimeEventArgumens","emit","splice","result","isOneTimeEvent","setOneTimeEventFired","setOneTimeEventArgumens","some","off","offAll","destroy","emitAndCallback","concat","AjaxObserver","create","beforeRequest","requestSuccess","requestError","jsonContentType","multipartContentType","boundarySeparator","headerSeparator","bodySeparator","Ajax","headers","observer","xhr","getOptions","setOptions","isResponseContentType","getResponseContentType","isResponseMultipart","isResponseUnauthorized","getContentType","isMultipart","isUnauthorized","isLoaded","checkOptions","defaultHeaders","keys","toUpperCase","get","post","request","parseResponse","resolve","reject","checkStatus","substr","message","error_description","description","boundary","match","parts","shift","pop","map","part","subParts","replace","ajaxPart","headerParts","statusInfo","stack","Cache","prefix","storage","prefixKey","setItem","removeItem","getItem","item","clean","forcedTokenType","Platform","server","apiKey","account","urlPrefix","apiVersion","accountPrefix","accessTokenTtl","refreshTokenTtl","refreshTokenTtlRemember","refreshHandicapMs","refreshDelayMs","clearCacheOnRefreshError","refreshPromise","cacheId","pollInterval","releaseTimeout","accessViolation","logoutSuccess","logoutError","authorizeSuccess","authorizeError","refreshSuccess","refreshError","getStorage","getAjax","clearStorage","remember","authorize","authCall","username","extension","password","setCache","isPaused","now","parseInt","pause","resume","refresh","refreshPolling","authData","getAuthData","access_token","refresh_token","refreshExpireTime","logout","token","getToken","isTokenValid","getTokenType","token_type","expires_in","refresh_token_expires_in","expireTime","getTime","isAuthorized","cancelAccessToken","oldAuthData","forceAuthentication","apiCall","apiUrl","addServer","builtUrl","addMethod","addToken","renewHandicapMs","Subscription","eventFilters","subscription","expirationTime","expiresIn","deliveryMode","transportType","encryption","address","subscriberKey","secretKey","id","creationTime","uri","socket","notification","removeSuccess","removeError","renewSuccess","renewError","subscribeSuccess","subscribeError","createPubnub","getCrypto","getPlatform","register","isSubscribed","renew","subscribe","addEvents","setEvents","getFullEventFilters","updateSubscription","subscribeAtPubnub","unsubscribe","remove","timeToExpiration","CLOSE_NORMAL","notify","encryptionKey","enc","Base64","decrypted","AES","decrypt","ciphertext","mode","ECB","padding","pad","Pkcs7","Utf8","PageVisibility","hidden","visible","document","window","addEventListener","onchange","onfocusin","onfocusout","onpageshow","onpagehide","onfocus","onblur","evt","h","evtMap","focus","focusin","pageshow","blur","focusout","pagehide","change","isVisible","Helper","defaultProperty","getContext","createUrl","getId","isNew","getUri","resetAsNew","parseMultipartResponse","filter","loadRequest","saveRequest","deleteRequest","syncRequest","sync","syncToken","syncType","nextPageExists","navigation","index","getIdFn","gather","reduce","merge","supplement","mergeItems","supplementIndex","updatedIDs","newItem","Validator","validate","validators","errors","isValid","validator","field","email","phone","required","max","min","List","propertyExtractor","stringComparator","a","b","localeCompare","numberComparator","comparator","extractFn","sortBy","compareFn","item1","item2","equalsFilter","condition","containsFilter","regexpFilter","RegExp","filterConfigs","opt","filterBy","filterFn","pass","CountryHelper","DeviceModelHelper","device","addons","count","cleanForSaving","deviceClass","addon","devices","LanguageHelper","languages","StateHelper","countryHelper","countryId","opts","country","LocationHelper","state","uniqueNPAs","stateId","onlyUniqueNPA","npa","nxx","ShippingMethodHelper","shippingMethods","TimezoneHelper","AccountHelper","BlockedNumberHelper","extensionId","phoneNumber","ExtensionHelper","department","user","announcement","voicemail","departmentId","isUser","isDepartment","isAnnouncement","isVoicemail","search","toLocaleLowerCase","extensionNumber","PresenceHelper","detailed","presence","isAvailable","presenceStatus","getSubscription","presences","attachToExtensions","extensions","isCallInProgress","presenceCall","telephonyStatus","ContactHelper","root","groupId","getFieldValues","where","fields","asHash","getFullName","contact","nameFields","getEmails","emailFields","getPhones","phoneFields","getFaxes","faxFields","getAddresses","addressFields","isAlive","availability","string","otherFields","inAddresses","transformFn","strict","found","matchWith","transformed","addressSubFields","subField","matchAsPhone","attachToCallerInfos","callerInfos","contacts","callerInfoIndex","callerInfo","indexedCallerInfos","foundContact","foundPhone","contactPhone","alive","startsWith","phonesOnly","faxesOnly","firstName","lastName","email2","email3","CallHelper","personal","active","getSessionId","sessionId","isInProgress","isInbound","direction","isOutbound","isMissed","isFindMe","action","getCallerInfo","from","to","getAllCallerInfos","formatDuration","addZero","duration","hours","Math","floor","mins","secs","attachContacts","calls","checkMergeability","outboundRingOutCall","inboundCall","dateString","startTime","abs","maxStartTimeDiscrepancy","combineCalls","hasSubsequent","subsequent","processCalls","processedCalls","callsToMerge","merged","secondCall","parsePresenceCalls","activeCalls","activeCall","getSignature","cleanup","mergePresenceCalls","presenceCalls","currentDate","toISOString","mergeAll","presenceAndCalls","ConferencingHelper","ContactGroupHelper","groupName","DeviceHelper","deviceModel","order","emergencyServiceAddress","street","city","zip","customerName","model","ForwardingNumberHelper","forwardingNumber","hasFeature","feature","features","MessageHelper","platform","fax","sms","pager","isSMS","isPager","isVoiceMail","isFax","isRead","readStatus","setIsRead","getAttachmentUrl","attachments","getAttachmentContentType","getCallerInfos","conversationId","messages","shorten","text","subject","validateSMS","validatePager","PhoneNumberHelper","lookup","reserve","date","reservedTill","unreserve","usageType","paymentType","RingoutHelper","ringout","callStatus","isSuccess","isError","ServiceHelper","isEnabled","serviceFeatures","f","featureName","enabled","isSmsEnabled","isServiceFeatureEnabledMethod","isSmsReceivingEnabled","isPresenceEnabled","isRingOutEnabled","isInternationalCallingEnabled","isDndEnabled","isFaxEnabled","isFaxReceivingEnabled","isVoicemailEnabled","isPagerEnabled","isPagerReceivingEnabled","isVoipCallingEnabled","isVideoConferencingEnabled","isSalesForceEnabled","isIntercomEnabled","isPagingEnabled","isConferencingEnabled","isFreeSoftPhoneLinesEnabled","isHipaaComplianceEnabled","isCallParkEnabled","isOnDemandCallRecordingEnabled","_context","version","getAjaxObserver","getXhrResponse","getCache","getPageVisibility","getHelper","getObservable","getValidator","getLog","getUtils","getList","getCountryHelper","getDeviceModelHelper","getLanguageHelper","getLocationHelper","getShippingMethodHelper","getStateHelper","getTimezoneHelper","getAccountHelper","getBlockedNumberHelper","getCallHelper","getConferencingHelper","getContactHelper","getContactGroupHelper","getDeviceHelper","getExtensionHelper","getForwardingNumberHelper","getMessageHelper","getPhoneNumberHelper","getPresenceHelper","getRingoutHelper","getServiceHelper","Function","XMLHttpRequest","ActiveXObject","e1","e2","e3","getPUBNUB","module","require","define","amd","noConflict","old"],"mappings":"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","file":"rc-sdk.js","sourcesContent":[null,"define('core/pubnub/PubnubMock', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n function WS(url) {\n this.url = url;\n this.pubnub = {\n ready: function () {\n }\n };\n this.onmessage = function () {\n };\n this.onclose = function () {\n };\n this.onerror = function () {\n };\n this.onopen = function () {\n };\n this.close = function (code, reason) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: true\n });\n };\n /**\n * This stub allows to simulate message arrival\n * @param data\n */\n this.receiveMessage = function (data) {\n this.onmessage({ data: data });\n };\n this.onopen();\n }\n /**\n * @alias RCSDK.core.pubnub.Mock\n * @type {PUBNUB}\n */\n module.exports = {\n /**\n * @param {Context} context\n * @returns {PUBNUB}\n */\n $get: function (context) {\n return { ws: WS };\n }\n };\n});","define('core/Utils', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n var hasOwn = Object.prototype.hasOwnProperty, toString = Object.prototype.toString, rdigit = /\\d/, class2type = {};\n // Populate the class2type map\n 'Boolean Number String Function Array Date RegExp Object'.split(' ').forEach(function (name) {\n class2type['[object ' + name + ']'] = name.toLowerCase();\n });\n /**\n * @alias RCSDK.core.Utils\n * @name Utils\n */\n var Utils = module.exports = {\n /**\n * Ported from jQuery.fn.extend\n * Optional first parameter makes deep copy\n * @param {object} targetObject\n * @param {object} sourceObject\n * @returns {object}\n */\n extend: function extend(targetObject, sourceObject) {\n var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false;\n // Handle a deep copy situation\n if (typeof target === 'boolean') {\n deep = target;\n // skip the boolean and the target\n target = arguments[i] || {};\n i++;\n }\n // Handle case when target is a string or something (possible in deep copy)\n if (typeof target !== 'object' && !this.isFunction(target)) {\n target = {};\n }\n for (; i < length; i++) {\n // Only deal with non-null/undefined values\n if ((options = arguments[i]) != null) {\n // Extend the base object\n for (name in options) {\n src = target[name];\n copy = options[name];\n // Prevent never-ending loop\n if (target === copy) {\n continue;\n }\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (this.isPlainObject(copy) || (copyIsArray = this.isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && this.isArray(src) ? src : [];\n } else {\n clone = src && this.isPlainObject(src) ? src : {};\n }\n // Never move original objects, clone them\n target[name] = this.extend(deep, clone, copy); // Don't bring in undefined values\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n // Return the modified object\n return target;\n },\n forEach: function (object, cb) {\n for (var i in object) {\n if (!object.hasOwnProperty(i))\n continue;\n var res = cb(object[i], i);\n if (res === false)\n break;\n }\n },\n /**\n * TODO Replace with something better\n * @see https://github.com/joyent/node/blob/master/lib/querystring.js\n * @param {object} parameters\n * @returns {string}\n */\n queryStringify: function (parameters) {\n var array = [], self = this;\n this.forEach(parameters, function (v, i) {\n if (self.isArray(v)) {\n v.forEach(function (vv) {\n array.push(encodeURIComponent(i) + '=' + encodeURIComponent(vv));\n });\n } else {\n array.push(encodeURIComponent(i) + '=' + encodeURIComponent(v));\n }\n });\n return array.join('&');\n },\n /**\n * TODO Replace with something better\n * @see https://github.com/joyent/node/blob/master/lib/querystring.js\n * @param {string} queryString\n * @returns {object}\n */\n parseQueryString: function (queryString) {\n var argsParsed = {}, self = this;\n queryString.split('&').forEach(function (arg) {\n arg = decodeURIComponent(arg);\n if (arg.indexOf('=') == -1) {\n argsParsed[arg.trim()] = true;\n } else {\n var pair = arg.split('='), key = pair[0].trim(), value = pair[1].trim();\n if (key in argsParsed) {\n if (key in argsParsed && !self.isArray(argsParsed[key]))\n argsParsed[key] = [argsParsed[key]];\n argsParsed[key].push(value);\n } else {\n argsParsed[key] = value;\n }\n }\n });\n return argsParsed;\n },\n /**\n * Returns true if the passed value is valid email address.\n * @param {string} v\n * @param {boolean} multiple Checks multiple comma separated emails according to RFC 2822\n * @returns {boolean}\n */\n isEmail: function (v, multiple) {\n if (!!multiple) {\n //this Regexp is also suitable for multiple emails (comma separated)\n return /^(?:[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[ ,;]*)+$/i.test(v);\n } else {\n return /^[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+\\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(v);\n }\n },\n isPhoneNumber: function (v) {\n return /\\+?1[0-9]{3}[0-9a-z]{7}/im.test(v.toString().split(/[^0-9a-z\\+]/im).join(''));\n },\n /**\n * @param args\n * @returns {Array}\n */\n argumentsToArray: function (args) {\n return Array.prototype.slice.call(args || [], 0);\n },\n isDate: function (obj) {\n return this.type(obj) === 'date';\n },\n isFunction: function (obj) {\n return this.type(obj) === 'function';\n },\n isArray: Array.isArray || function (obj) {\n return this.type(obj) === 'array';\n },\n // A crude way of determining if an object is a window\n isWindow: function (obj) {\n return obj && typeof obj === 'object' && 'setInterval' in obj;\n },\n isNaN: function (obj) {\n return obj == null || !rdigit.test(obj) || isNaN(obj);\n },\n type: function (obj) {\n return obj == null ? String(obj) : class2type[toString.call(obj)] || 'object';\n },\n isPlainObject: function (obj) {\n // Must be an Object.\n // Because of IE, we also have to check the presence of the constructor property.\n // Make sure that DOM nodes and window objects don't pass through, as well\n if (!obj || this.type(obj) !== 'object' || obj.nodeType || this.isWindow(obj)) {\n return false;\n }\n // Not own constructor property must be Object\n if (obj.constructor && !hasOwn.call(obj, 'constructor') && !hasOwn.call(obj.constructor.prototype, 'isPrototypeOf')) {\n return false;\n }\n // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n var key;\n for (key in obj) {\n }\n return key === undefined || hasOwn.call(obj, key);\n },\n getProperty: function (obj, property) {\n try {\n return eval('obj.' + property); //TODO Refactor\n } catch (e) {\n return undefined;\n }\n },\n poll: function (fn, interval, timeout) {\n this.stopPolling(timeout);\n interval = interval || 1000;\n var next = function (delay) {\n delay = delay || interval;\n interval = delay;\n return setTimeout(function () {\n fn(next, delay);\n }, delay);\n };\n return next();\n },\n stopPolling: function (timeout) {\n timeout && clearTimeout(timeout);\n },\n parseString: function (s) {\n return s ? s.toString() : '';\n },\n parseNumber: function (n) {\n if (!n)\n return 0;\n n = parseFloat(n);\n return isNaN(n) ? 0 : n;\n },\n $get: function (context) {\n return Utils;\n }\n };\n});","define('core/Log', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.Log\n * @name Log\n */\n var Log = module.exports = {\n logDebug: false,\n logInfo: false,\n logWarnings: false,\n logErrors: false,\n addTimestamps: true,\n /** @type {Console} */\n console: console || {\n // safety\n log: function () {\n },\n warn: function () {\n },\n info: function () {\n },\n error: function () {\n }\n },\n disableAll: function () {\n this.logDebug = false;\n this.logInfo = false;\n this.logWarnings = false;\n this.logErrors = false;\n },\n enableAll: function () {\n this.logDebug = true;\n this.logInfo = true;\n this.logWarnings = true;\n this.logErrors = true;\n },\n parseArguments: function (args) {\n args = Utils.argumentsToArray(args);\n if (this.addTimestamps)\n args.unshift(new Date().toLocaleString(), '-');\n return args;\n },\n debug: function () {\n if (this.logDebug)\n this.console.log.apply(this.console, this.parseArguments(arguments));\n },\n info: function () {\n if (this.logInfo)\n this.console.info.apply(this.console, this.parseArguments(arguments));\n },\n warn: function () {\n if (this.logWarnings)\n this.console.warn.apply(this.console, this.parseArguments(arguments));\n },\n error: function () {\n if (this.logErrors)\n this.console.error.apply(this.console, this.parseArguments(arguments));\n },\n $get: function (context) {\n return Log;\n }\n };\n});","define('core/xhr/XhrResponse', [\n 'require',\n 'exports',\n 'module'\n], function (require, exports, module) {\n 'use strict';\n /**\n * Ajax Response Manager\n * @constructor\n * @alias RCSDK.core.XhrResponse\n */\n function XhrResponse() {\n /** @type {IXhrResponse[]} */\n this.responses = [];\n }\n /**\n * @param {IXhrResponse} response\n */\n XhrResponse.prototype.add = function (response) {\n this.responses.push(response);\n };\n XhrResponse.prototype.clear = function () {\n this.responses = [];\n };\n /**\n * @param {XhrMock} ajax\n * @returns {IXhrResponse}\n */\n XhrResponse.prototype.find = function (ajax) {\n var currentResponse = null;\n this.responses.forEach(function (response) {\n if (ajax.url.indexOf(response.path) > -1 && (!response.test || response.test(ajax))) {\n currentResponse = response;\n }\n });\n return currentResponse;\n };\n module.exports = {\n Class: XhrResponse,\n /**\n * @static\n * @param {Context} context\n * @returns {XhrResponse}\n */\n $get: function (context) {\n return context.createSingleton('XhrResponse', function () {\n return new XhrResponse(context);\n });\n }\n }; /**\n * @typedef {Object} IXhrResponse\n * @property {string} path\n * @property {function(Ajax)} response Response mock function\n * @property {function(Ajax)} test? This will be executed to determine, whether this mock is applicable\n */\n});","/**\n * istanbul ignore next\n */\ndefine('core/xhr/XhrMock', [\n 'require',\n 'exports',\n 'module',\n 'core/Log',\n 'core/Utils',\n 'core/xhr/XhrResponse'\n], function (require, exports, module) {\n 'use strict';\n var Log = require('../Log'), Utils = require('../Utils');\n /**\n * @constructor\n * @alias RCSDK.core.ajax.XhrMock\n * @extends XMLHttpRequest\n */\n function XhrMock(context) {\n // Service\n this.responses = require('./XhrResponse').$get(context);\n // Request\n this.async = true;\n this.method = '';\n this.url = '';\n this.requestHeaders = {};\n this.withCredentials = false;\n // Response\n this.data = null;\n this.readyState = 0;\n this.responseHeaders = {};\n this.status = 0;\n this.context = context;\n }\n XhrMock.prototype.getResponseHeader = function (header) {\n return this.responseHeaders[header.toLowerCase()];\n };\n XhrMock.prototype.setRequestHeader = function (header, value) {\n this.requestHeaders[header.toLowerCase()] = value;\n };\n XhrMock.prototype.open = function (method, url, async) {\n this.method = method;\n this.url = url;\n this.async = async;\n };\n XhrMock.prototype.send = function (data) {\n var contentType = this.getRequestHeader('Content-Type');\n this.data = data;\n if (this.data && typeof this.data == 'string') {\n // For convenience encoded post data will be decoded\n if (contentType == 'application/json')\n this.data = JSON.parse(this.data);\n if (contentType == 'application/x-www-form-urlencoded')\n this.data = Utils.parseQueryString(this.data);\n }\n Log.debug('API REQUEST', this.method, this.url);\n var currentResponse = this.responses.find(this);\n if (!currentResponse) {\n setTimeout(function () {\n this.onerror && this.onerror(new Error('Unknown request: ' + this.url));\n }.bind(this), 1);\n return;\n }\n this.setStatus(200);\n this.setResponseHeader('Content-Type', 'application/json');\n var res = currentResponse.response(this), Promise = this.context.getPromise();\n function onLoad(res) {\n if (this.getResponseHeader('Content-Type') == 'application/json')\n res = JSON.stringify(res);\n this.responseText = res;\n setTimeout(function () {\n this.onload && this.onload();\n }.bind(this), 1);\n }\n if (res instanceof Promise) {\n res.then(onLoad.bind(this)).catch(this.onerror.bind(this));\n } else\n onLoad.call(this, res);\n };\n XhrMock.prototype.abort = function () {\n Log.debug('XhrMock.destroy(): Aborted');\n };\n XhrMock.prototype.getRequestHeader = function (header) {\n return this.requestHeaders[header.toLowerCase()];\n };\n XhrMock.prototype.setResponseHeader = function (header, value) {\n this.responseHeaders[header.toLowerCase()] = value;\n };\n XhrMock.prototype.setStatus = function (status) {\n this.status = status;\n return this;\n };\n module.exports = {\n Class: XhrMock,\n /**\n * @static\n * @param {Context} context\n * @returns {XhrMock}\n */\n $get: function (context) {\n return new XhrMock(context);\n }\n };\n});","define('core/Context', [\n 'require',\n 'exports',\n 'module',\n 'core/pubnub/PubnubMock',\n 'core/xhr/XhrMock'\n], function (require, exports, module) {\n 'use strict';\n /**\n * @constructor\n * @param {IInjections} injections\n */\n function Context(injections) {\n /** @private */\n this.singletons = {};\n /** @type {IInjections} */\n this.injections = injections;\n this.stubPubnub = false;\n this.stubAjax = false;\n }\n /**\n * @param {string} name\n * @param {function} factory\n * @returns {*}\n */\n Context.prototype.createSingleton = function (name, factory) {\n if (!this.singletons[name])\n this.singletons[name] = factory();\n return this.singletons[name];\n };\n Context.prototype.usePubnubStub = function (flag) {\n this.stubPubnub = !!flag;\n return this;\n };\n Context.prototype.useAjaxStub = function (flag) {\n this.stubAjax = !!flag;\n return this;\n };\n /**\n * @returns {CryptoJS}\n */\n Context.prototype.getCryptoJS = function () {\n return this.injections.CryptoJS;\n };\n /**\n * @returns {PUBNUB}\n */\n Context.prototype.getPubnub = function () {\n return this.stubPubnub ? require('./pubnub/PubnubMock').$get(this) : this.injections.PUBNUB;\n };\n /**\n * @returns {Storage}\n * @abstract\n */\n Context.prototype.getLocalStorage = function () {\n return this.injections.localStorage;\n };\n /**\n * @returns {function(new:Promise)}\n */\n Context.prototype.getPromise = function () {\n return this.injections.Promise;\n };\n /**\n * @returns {XMLHttpRequest}\n */\n Context.prototype.getXHR = function () {\n return this.stubAjax ? require('./xhr/XhrMock').$get(this) : new this.injections.XHR();\n };\n module.exports = {\n Class: Context,\n /**\n * @param {IInjections} injections\n */\n $get: function (injections) {\n return new Context(injections);\n }\n };\n});","define('core/Observable', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Log'\n], function (require, exports, module) {\n var Utils = require('./Utils'), Log = require('./Log');\n /**\n * @constructor\n * @alias RCSDK.core.Observable\n */\n function Observable() {\n if (!(this instanceof Observable))\n throw new Error('Observable(): New operator was omitted');\n Object.defineProperty(this, 'listeners', {\n value: {},\n enumerable: false,\n writable: true\n });\n Object.defineProperty(this, 'oneTimeEvents', {\n value: {},\n enumerable: false,\n writable: true\n });\n Object.defineProperty(this, 'oneTimeArguments', {\n value: {},\n enumerable: false,\n writable: true\n });\n }\n // Object.create({}) is not needed\n // Do not put Object or Function.prototype instead of {}, otherwise all instances will get non-writable 'name' property\n // Observable.prototype = {};\n Object.defineProperty(Observable.prototype, 'constructor', {\n value: Observable,\n enumerable: false\n });\n Observable.prototype.hasListeners = function (event) {\n return event in this.listeners;\n };\n Observable.prototype.registerOneTimeEvent = function (event) {\n this.oneTimeEvents[event] = false;\n this.oneTimeArguments[event] = [];\n };\n Observable.prototype.on = function (events, callback) {\n if (typeof events == 'string')\n events = [events];\n if (!events)\n throw new Error('No events to subscribe to');\n if (typeof callback !== 'function')\n throw new Error('Callback must be a function');\n var self = this;\n events.forEach(function (event) {\n if (!self.hasListeners(event))\n self.listeners[event] = [];\n self.listeners[event].push(callback);\n if (self.isOneTimeEventFired(event)) {\n // Fire listener immediately if is inited already\n Log.debug('Observable.on(%s): One-time event has been fired already, executing callback', event);\n callback.apply(self, self.getOneTimeEventArgumens(event));\n }\n });\n return this;\n };\n Observable.prototype.emit = function (event) {\n if (this.isOneTimeEventFired(event)) {\n Log.debug('Observable.emit(%s): One-time event has been fired already', event);\n return null;\n }\n var self = this, args = Utils.argumentsToArray(arguments).splice(1), result = null;\n if (this.isOneTimeEvent(event)) {\n this.setOneTimeEventFired(event);\n this.setOneTimeEventArgumens(event, args);\n }\n if (!this.hasListeners(event))\n return null;\n this.listeners[event].some(function (callback) {\n result = callback.apply(self, args);\n return result === false;\n });\n return result;\n };\n Observable.prototype.off = function (event, callback) {\n var self = this;\n if (!callback) {\n delete this.listeners[event];\n } else {\n if (!this.hasListeners(event))\n return this;\n this.listeners[event].forEach(function (cb, i) {\n if (cb === callback)\n delete self.listeners[event][i];\n });\n }\n return this;\n };\n Observable.prototype.isOneTimeEvent = function (event) {\n return event in this.oneTimeEvents;\n };\n Observable.prototype.isOneTimeEventFired = function (event) {\n if (!this.isOneTimeEvent(event))\n return false;\n return this.oneTimeEvents[event];\n };\n Observable.prototype.setOneTimeEventFired = function (event) {\n this.oneTimeEvents[event] = true;\n };\n Observable.prototype.setOneTimeEventArgumens = function (event, args) {\n this.oneTimeArguments[event] = args;\n };\n Observable.prototype.getOneTimeEventArgumens = function (event) {\n return this.oneTimeArguments[event];\n };\n Observable.prototype.offAll = function () {\n this.listeners = {};\n this.oneTimeEvents = {};\n this.oneTimeArguments = {};\n };\n Observable.prototype.destroy = function () {\n this.offAll();\n Log.debug('Observable.destroy(): Listeners were destroyed');\n return this;\n };\n /**\n * @param {string} event\n * @param {Array} args\n * @param {function} [callback]\n */\n Observable.prototype.emitAndCallback = function (event, args, callback) {\n args = Utils.argumentsToArray(args);\n if (event)\n this.emit.apply(this, [event].concat(args));\n if (callback)\n callback.apply(this, args);\n return this;\n };\n module.exports = {\n Class: Observable,\n /**\n * @param {Context} context\n * @returns {Observable}\n */\n $get: function (context) {\n return new Observable(context);\n }\n };\n});","define('core/AjaxObserver', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.AjaxObserver\n */\n function AjaxObserver() {\n Observable.call(this);\n }\n AjaxObserver.prototype = Object.create(Observable.prototype);\n AjaxObserver.prototype.events = {\n beforeRequest: 'beforeRequest',\n // parameters: ajax\n requestSuccess: 'requestSuccess',\n // means that response was successfully fetched from server\n requestError: 'requestError' // means that request failed completely\n };\n module.exports = {\n Class: AjaxObserver,\n /**\n * @param {Context} context\n * @returns {AjaxObserver}\n */\n $get: function (context) {\n return context.createSingleton('AjaxObserver', function () {\n return new AjaxObserver();\n });\n }\n };\n});","define('core/Ajax', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Utils',\n 'core/Log',\n 'core/AjaxObserver'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Utils = require('./Utils'), Log = require('./Log'), jsonContentType = 'application/json', multipartContentType = 'multipart/mixed', boundarySeparator = '--', headerSeparator = ':', bodySeparator = '\\n\\n';\n /**\n * @typedef {Object} IAjaxOptions\n * @property {string} url\n * @property {string} method?\n * @property {boolean} async?\n * @property {Object} post?\n * @property {Object} get?\n * @property {Object} headers?\n */\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Ajax\n * @param {Context} [context]\n */\n function Ajax(context) {\n Observable.call(this);\n /** @type {Ajax[]|object} */\n this.data = null;\n /** @type {Error|null} */\n this.error = null;\n this.response = '';\n this.headers = {};\n this.status = 0;\n /**\n * @type {IAjaxOptions}\n * @protected\n */\n this.options = {};\n this.context = context;\n /** @type {AjaxObserver} */\n this.observer = require('./AjaxObserver').$get(context);\n /** @type {XMLHttpRequest} */\n this.xhr = null;\n }\n Ajax.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Ajax.prototype, 'constructor', {\n value: Ajax,\n enumerable: false\n });\n /**\n * @returns {IAjaxOptions}\n */\n Ajax.prototype.getOptions = function () {\n return this.options;\n };\n /**\n * @param {IAjaxOptions} [options]\n * @returns {Ajax}\n */\n Ajax.prototype.setOptions = function (options) {\n if (options)\n this.options = options;\n return this;\n };\n /**\n * @param {string} name\n * @param {string} value\n * @returns {Ajax}\n */\n Ajax.prototype.setRequestHeader = function (name, value) {\n this.options.headers = this.options.headers || {};\n this.options.headers[name.toLowerCase()] = value;\n return this;\n };\n /**\n * @param {string} name\n * @param {string} value\n * @returns {Ajax}\n */\n Ajax.prototype.setResponseHeader = function (name, value) {\n this.headers[name.toLowerCase()] = value;\n return this;\n };\n /**\n * @param {string} name\n * @returns {string}\n */\n Ajax.prototype.getRequestHeader = function (name) {\n this.options.headers = this.options.headers || {};\n return this.options.headers[name.toLowerCase()];\n };\n /**\n * @param {string} name\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (name) {\n return this.headers[name.toLowerCase()];\n };\n /**\n * @param {string} type\n * @returns {boolean}\n */\n Ajax.prototype.isResponseContentType = function (type) {\n return this.getResponseContentType().indexOf(type) > -1;\n };\n /**\n * @returns {string}\n */\n Ajax.prototype.getResponseContentType = function () {\n return this.getResponseHeader('Content-Type') || '';\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isResponseMultipart = function () {\n return this.isResponseContentType(multipartContentType);\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isResponseUnauthorized = function () {\n return this.status == 401;\n };\n /**\n * @deprecated\n * @returns {string}\n */\n Ajax.prototype.getContentType = function () {\n return this.getResponseContentType();\n };\n /**\n * @deprecated\n * @returns {boolean}\n */\n Ajax.prototype.isMultipart = function () {\n return this.isResponseMultipart();\n };\n /**\n * @deprecated\n * @returns {boolean}\n */\n Ajax.prototype.isUnauthorized = function () {\n return this.isResponseUnauthorized();\n };\n /**\n * @returns {boolean}\n */\n Ajax.prototype.isLoaded = function () {\n return !!this.status;\n };\n /**\n * Checks the send options, defaulting various of the options,\n * and consuming / transforming some of the options (like get).\n * @returns {Ajax}\n */\n Ajax.prototype.checkOptions = function () {\n if (!this.options.url)\n throw new Error('Url is not defined');\n var defaultHeaders = {\n 'Accept': jsonContentType,\n 'Content-Type': jsonContentType\n }, headers = this.options.headers || {};\n this.options.headers = {};\n Object.keys(defaultHeaders).forEach(function (key) {\n this.setRequestHeader(key, defaultHeaders[key]);\n }, this);\n Object.keys(headers).forEach(function (key) {\n this.setRequestHeader(key, headers[key]);\n }, this);\n this.options.method = this.options.method ? this.options.method.toUpperCase() : 'GET';\n this.options.async = this.options.async !== undefined ? this.options.async : true;\n this.options.get = this.options.get || null;\n this.options.post = this.options.post ? typeof this.options.post !== 'string' && this.getRequestHeader('Content-Type') === jsonContentType ? JSON.stringify(this.options.post) : this.options.post : '';\n this.options.url = this.options.url + (this.options.get ? (this.options.url.indexOf('?') > -1 ? '&' : '?') + Utils.queryStringify(this.options.get) : '');\n if ([\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n 'OPTIONS'\n ].indexOf(this.options.method) < 0)\n throw new Error('Method has wrong value');\n delete this.options.get;\n return this;\n };\n /**\n * @returns {Promise}\n */\n Ajax.prototype.send = function () {\n this.observer.emit(this.observer.events.beforeRequest, this);\n return this.request().then(function (ajax) {\n ajax.parseResponse();\n if (ajax.error)\n throw ajax.error;\n return ajax;\n }.bind(this)).then(function (ajax) {\n this.observer.emit(this.observer.events.requestSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n e.ajax = this;\n this.observer.emit(this.observer.events.requestError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @returns {XMLHttpRequest}\n */\n Ajax.prototype.getXHR = function () {\n return this.context.getXHR();\n };\n /**\n * @returns {Promise}\n */\n Ajax.prototype.request = function () {\n return new (this.context.getPromise())(function (resolve, reject) {\n this.checkOptions();\n var options = this.options, xhr = this.getXHR();\n xhr.open(options.method, options.url, options.async);\n //@see http://stackoverflow.com/questions/19666809/cors-withcredentials-support-limited\n xhr.withCredentials = true;\n xhr.onload = function () {\n this.status = xhr.status;\n this.response = xhr.responseText;\n this.setResponseHeader('Content-Type', xhr.getResponseHeader('Content-Type') || jsonContentType);\n // if no header, set default\n resolve(this);\n }.bind(this);\n xhr.onerror = function (event) {\n reject(new Error('The request cannot be sent')); // CORS or network issue\n };\n Utils.forEach(options.headers, function (value, header) {\n xhr.setRequestHeader(header, value);\n });\n xhr.send(options.method === 'GET' ? null : options.post);\n this.xhr = xhr;\n }.bind(this));\n };\n Ajax.prototype.checkStatus = function (status) {\n return status.toString().substr(0, 1) == '2';\n };\n Ajax.prototype.parseResponse = function () {\n try {\n if (!this.isResponseMultipart()) {\n if (typeof this.response == 'string' && this.isResponseContentType(jsonContentType)) {\n this.data = JSON.parse(this.response);\n } else {\n this.data = this.response; //TODO Add more parsers\n }\n if (!this.checkStatus(this.status))\n this.error = new Error(this.data.message || this.data.error_description || this.data.description || 'Unknown error');\n } else {\n var boundary = this.getResponseContentType().match(/boundary=([^;]+)/i)[1], parts = this.response.split(boundarySeparator + boundary);\n if (parts[0].trim() == '')\n parts.shift();\n if (parts[parts.length - 1].trim() == boundarySeparator)\n parts.pop();\n // Step 1. Parse all parts into Ajax objects\n parts = parts.map(function (part) {\n var subParts = part.trim().replace(/\\r/g, '').split(bodySeparator), ajaxPart = new Ajax(this.context);\n (subParts.length > 1 ? subParts.shift() : '').split('\\n').forEach(function (header) {\n if (header.length == 0)\n return res;\n var headerParts = header.split(headerSeparator), name = headerParts.shift().trim();\n ajaxPart.setResponseHeader(name, headerParts.join(headerSeparator).trim());\n }, this);\n ajaxPart.response = subParts.join(bodySeparator);\n return ajaxPart;\n }, this);\n // Step 2. Claim first part as statuses, assign status from this and parse the response\n var statusInfo = parts.shift();\n statusInfo.status = this.status;\n statusInfo.parseResponse();\n // Steo 3. For the rest of parts assign status and parse the response\n this.data = parts.map(function (part, i) {\n part.status = statusInfo.data.response[i].status;\n part.parseResponse();\n return part;\n }, this);\n }\n } catch (e) {\n // Capture parse errors\n Log.error('Ajax.parseResponse(): Unable to parse data');\n Log.error(e.stack || e);\n Log.error(this.response);\n this.error = e;\n }\n return this;\n };\n Ajax.prototype.destroy = function () {\n this.xhr && this.xhr.abort();\n return Observable.prototype.destroy.call(this);\n };\n module.exports = {\n Class: Ajax,\n /**\n * @static\n * @param {Context} context\n * @returns {Ajax}\n */\n $get: function (context) {\n return new Ajax(context);\n }\n };\n});","define('core/Cache', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Utils = require('./Utils');\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Cache\n * @param {Context} context\n */\n function Cache(context) {\n Observable.call(this);\n this.prefix = 'rc-';\n this.storage = context.getLocalStorage(); // storage must be defined from outside\n }\n Cache.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Cache.prototype, 'constructor', {\n value: Cache,\n enumerable: false\n });\n Cache.prototype.prefixKey = function (key) {\n return this.prefix + key;\n };\n Cache.prototype.setItem = function (key, data) {\n this.storage.setItem(this.prefixKey(key), JSON.stringify(data));\n return this;\n };\n Cache.prototype.removeItem = function (key) {\n this.storage.removeItem(this.prefixKey(key));\n return this;\n };\n Cache.prototype.getItem = function (key) {\n var item = this.storage.getItem(this.prefixKey(key));\n if (!item)\n return null;\n return JSON.parse(item);\n };\n Cache.prototype.clean = function () {\n for (var key in this.storage) {\n if (!this.storage.hasOwnProperty(key))\n continue;\n if (key.indexOf(this.prefix) === 0) {\n this.storage.removeItem(key);\n delete this.storage[key];\n }\n }\n return this;\n };\n module.exports = {\n Class: Cache,\n /**\n * @param {Context} context\n * @returns {Cache}\n */\n $get: function (context) {\n return context.createSingleton('Cache', function () {\n return new Cache(context);\n });\n }\n };\n});","define('core/Platform', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Observable',\n 'core/Log',\n 'core/Cache',\n 'core/Ajax'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils'), Observable = require('./Observable').Class, Log = require('./Log'), forcedTokenType = 'forced';\n /**\n * @typedef {Object} PlatformAuthInfo\n * @property {string} token_type\n * @property {string} access_token\n * @property {string} expires_in\n * @property {int} expireTime\n * @property {string} refresh_token\n * @property {string} refresh_token_expires_in\n * @property {int} refreshExpireTime\n * @property {string} scope\n */\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Platform\n * @param {Context} context\n */\n function Platform(context) {\n Observable.call(this);\n this.server = '';\n this.apiKey = '';\n this.account = '~';\n this.urlPrefix = '/restapi';\n this.apiVersion = 'v1.0';\n this.accountPrefix = '/account/';\n this.accessTokenTtl = 10 * 60;\n // 10 minutes\n this.refreshTokenTtl = 10 * 60 * 60;\n // 10 hours\n this.refreshTokenTtlRemember = 7 * 24 * 60 * 60;\n // 1 week\n this.refreshHandicapMs = 60 * 1000;\n // 1 minute\n this.refreshDelayMs = 100;\n this.clearCacheOnRefreshError = true;\n /** @type {Promise} */\n this.refreshPromise = null;\n this.context = context;\n }\n Platform.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Platform.prototype, 'constructor', {\n value: Platform,\n enumerable: false\n });\n Platform.prototype.cacheId = 'platform';\n Platform.prototype.pollInterval = 250;\n Platform.prototype.releaseTimeout = 5000;\n // If queue was not released then force it to do so after some timeout\n Platform.prototype.events = {\n accessViolation: 'accessViolation',\n logoutSuccess: 'logoutSuccess',\n logoutError: 'logoutError',\n authorizeSuccess: 'authorizeSuccess',\n authorizeError: 'authorizeError',\n refreshSuccess: 'refreshSuccess',\n refreshError: 'refreshError'\n };\n /**\n * @returns {Cache}\n */\n Platform.prototype.getStorage = function () {\n return require('./Cache').$get(this.context);\n };\n /**\n * @returns {Ajax}\n */\n Platform.prototype.getAjax = function () {\n return require('./Ajax').$get(this.context);\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.clearStorage = function () {\n this.getStorage().clean();\n return this;\n };\n /**\n * @param {boolean} [remember]\n * @returns {Platform|boolean}\n */\n Platform.prototype.remember = function (remember) {\n var key = this.cacheId + '-remember';\n if (remember != undefined) {\n this.getStorage().setItem(key, remember);\n return this;\n }\n return this.getStorage().getItem(key) || false;\n };\n /**\n * @param {string} options.username\n * @param {string} options.password\n * @param {string} [options.extension]\n * @param {boolean} [options.remember]\n * @returns {Promise}\n */\n Platform.prototype.authorize = function (options) {\n options = options || {};\n options.remember = options.remember || false;\n return this.authCall({\n url: '/restapi/oauth/token',\n post: {\n 'grant_type': 'password',\n 'username': options.username,\n 'extension': options.extension || '',\n 'password': options.password,\n 'access_token_ttl': this.accessTokenTtl,\n 'refresh_token_ttl': options.remember ? this.refreshTokenTtlRemember : this.refreshTokenTtl\n }\n }).then(function (ajax) {\n this.setCache(ajax.data).remember(options.remember).emitAndCallback(this.events.authorizeSuccess, []);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.clearStorage().emitAndCallback(this.events.authorizeError, [e]);\n throw e;\n }.bind(this));\n };\n Platform.prototype.isPaused = function () {\n var storage = this.getStorage(), cacheId = this.cacheId + '-refresh';\n return !!storage.getItem(cacheId) && Date.now() - parseInt(storage.getItem(cacheId)) < this.releaseTimeout;\n };\n Platform.prototype.pause = function () {\n this.getStorage().setItem(this.cacheId + '-refresh', Date.now());\n return this;\n };\n /**\n * If the queue is unpaused internally, polling will be cancelled\n * @returns {Platform}\n */\n Platform.prototype.resume = function () {\n this.getStorage().removeItem(this.cacheId + '-refresh');\n return this;\n };\n /**\n * Gets resolved into Ajax or null if refresh resolved from elsewhere\n * @returns {Promise}\n */\n Platform.prototype.refresh = function () {\n var refresh = new (this.context.getPromise())(function (resolve, reject) {\n if (this.isPaused()) {\n return resolve(this.refreshPolling(null));\n } else {\n this.pause();\n }\n // Make sure all existing AJAX calls had a chance to reach the server\n setTimeout(function () {\n var authData = this.getAuthData();\n Log.debug('Platform.refresh(): Performing token refresh (access token', authData.access_token, ', refresh token', authData.refresh_token, ')');\n if (!authData || !authData.refresh_token)\n return reject(new Error('Refresh token is missing'));\n if (Date.now() > authData.refreshExpireTime)\n return reject(new Error('Refresh token has expired'));\n if (!this.isPaused())\n return reject(new Error('Queue was resumed before refresh call'));\n resolve(this.authCall({\n url: '/restapi/oauth/token',\n post: {\n 'grant_type': 'refresh_token',\n 'refresh_token': authData.refresh_token,\n 'access_token_ttl': this.accessTokenTtl,\n 'refresh_token_ttl': this.remember() ? this.refreshTokenTtlRemember : this.refreshTokenTtl\n }\n }));\n }.bind(this), this.refreshDelayMs);\n }.bind(this));\n return refresh.then(function (ajax) {\n // This means refresh has happened elsewhere and we are here because of timeout\n if (!ajax || !ajax.data)\n return ajax;\n Log.info('Platform.refresh(): Token was refreshed');\n if (!ajax.data.refresh_token || !ajax.data.access_token) {\n var e = new Error('Malformed OAuth response');\n e.ajax = ajax;\n throw e;\n }\n this.setCache(ajax.data).resume();\n return ajax;\n }.bind(this)).then(function (result) {\n this.emit(this.events.refreshSuccess, result);\n return result;\n }.bind(this)).catch(function (e) {\n if (this.clearCacheOnRefreshError)\n this.clearStorage();\n this.emitAndCallback(this.events.accessViolation, [e]).emitAndCallback(this.events.refreshError, [e]);\n throw e;\n }.bind(this));\n };\n /**\n * @returns {Promise}\n */\n Platform.prototype.logout = function () {\n this.pause();\n return this.authCall({\n url: '/restapi/oauth/revoke',\n get: { token: this.getToken() }\n }).then(function (ajax) {\n this.resume().clearStorage().emit(this.events.logoutSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.resume().emitAndCallback(this.events.accessViolation, [e]).emitAndCallback(this.events.logoutError, [e]);\n throw e;\n }.bind(this));\n };\n Platform.prototype.refreshPolling = function (result) {\n if (this.refreshPromise)\n return this.refreshPromise;\n this.refreshPromise = new (this.context.getPromise())(function (resolve, reject) {\n Log.warn('Platform.refresh(): Refresh is already in progress polling started');\n Utils.poll(function (next) {\n if (this.isPaused())\n return next();\n this.refreshPromise = null;\n this.resume();\n if (this.isTokenValid()) {\n resolve(result);\n } else {\n reject(new Error('Automatic authentification timeout'));\n }\n }.bind(this), this.pollInterval);\n }.bind(this));\n return this.refreshPromise;\n };\n Platform.prototype.getToken = function () {\n return this.getAuthData().access_token;\n };\n Platform.prototype.getTokenType = function () {\n return this.getAuthData().token_type;\n };\n /**\n * @returns {PlatformAuthInfo}\n */\n Platform.prototype.getAuthData = function () {\n return this.getStorage().getItem(this.cacheId) || {\n token_type: '',\n access_token: '',\n expires_in: 0,\n refresh_token: '',\n refresh_token_expires_in: 0\n };\n };\n /**\n * Check if there is a valid (not expired) access token\n * @returns {boolean}\n */\n Platform.prototype.isTokenValid = function () {\n var authData = this.getAuthData();\n return authData.token_type == forcedTokenType || new Date(authData.expireTime).getTime() - this.refreshHandicapMs > Date.now() && !this.isPaused();\n };\n /**\n * Checks if user is authorized\n * If there is no access token, refresh will be performed\n * @returns {Promise}\n */\n Platform.prototype.isAuthorized = function () {\n if (this.isTokenValid())\n return this.context.getPromise().resolve(true);\n return this.refresh();\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.cancelAccessToken = function () {\n return this.setCache(Utils.extend(this.getAuthData(), {\n access_token: '',\n expires_in: 0\n }));\n };\n /**\n * @param {object} authData\n * @returns {Platform}\n */\n Platform.prototype.setCache = function (authData) {\n var oldAuthData = this.getAuthData();\n Log.info('Platform.setCache(): Tokens were updated, new:', authData, ', old:', oldAuthData);\n authData.expireTime = Date.now() + authData.expires_in * 1000;\n authData.refreshExpireTime = Date.now() + authData.refresh_token_expires_in * 1000;\n this.getStorage().setItem(this.cacheId, authData);\n return this;\n };\n /**\n * @returns {Platform}\n */\n Platform.prototype.forceAuthentication = function () {\n this.setCache({\n token_type: forcedTokenType,\n access_token: '',\n expires_in: 0,\n refresh_token: '',\n refresh_token_expires_in: 0\n });\n return this;\n };\n /**\n * @param {IAjaxOptions} options\n * @returns {Promise}\n */\n Platform.prototype.apiCall = function (options) {\n options = options || {};\n options.url = this.apiUrl(options.url, { addServer: true });\n return this.isAuthorized() // Refresh will occur inside\n.then(function () {\n var token = this.getToken();\n return this.getAjax().setOptions(options).setRequestHeader('Authorization', this.getTokenType() + (token ? ' ' + token : '')).send();\n }.bind(this)).catch(function (e) {\n if (!e.ajax || !e.ajax.isResponseUnauthorized())\n throw e;\n this.cancelAccessToken();\n return this.refresh().then(function () {\n // Re-send with same options\n return this.apiCall(options);\n }.bind(this));\n }.bind(this));\n };\n /**\n * @param {IAjaxOptions} options\n * @returns {Promise}\n */\n Platform.prototype.authCall = function (options) {\n options = options || {};\n options.method = options.method || 'POST';\n options.post = Utils.queryStringify(options.post);\n options.url = this.apiUrl(options.url, { addServer: true });\n return this.getAjax().setOptions(options).setRequestHeader('Content-Type', 'application/x-www-form-urlencoded').setRequestHeader('Accept', 'application/json').setRequestHeader('Authorization', 'Basic ' + this.apiKey).send();\n };\n /**\n *\n * @param url\n * @param {{addMethod?: string, addToken?: boolean, addServer?: boolean}} [options]\n * @returns {string}\n */\n Platform.prototype.apiUrl = function (url, options) {\n url = url || '';\n options = options || {};\n var builtUrl = '';\n if (options.addServer && url.indexOf('http://') == -1 && url.indexOf('https://') == -1)\n builtUrl += this.server;\n if (url.indexOf(this.urlPrefix) == -1)\n builtUrl += this.urlPrefix + '/' + this.apiVersion;\n if (url.indexOf(this.accountPrefix) > -1)\n builtUrl.replace(this.accountPrefix + '~', this.accountPrefix + this.account);\n builtUrl += url;\n if (options.addMethod || options.addToken)\n builtUrl += url.indexOf('?') > -1 ? '&' : '?';\n if (options.addMethod)\n builtUrl += '_method=' + options.addMethod;\n if (options.addToken)\n builtUrl += (options.addMethod ? '&' : '') + 'access_token=' + this.getToken();\n return builtUrl;\n };\n module.exports = {\n Class: Platform,\n /**\n * @param {Context} context\n * @returns {Platform}\n */\n $get: function (context) {\n return context.createSingleton('Platform', function () {\n return new Platform(context);\n });\n }\n };\n});","define('core/Subscription', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable',\n 'core/Log',\n 'core/Utils',\n 'core/Platform'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class, Log = require('./Log'), Utils = require('./Utils'), renewHandicapMs = 60 * 1000;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.Subscription\n * @param {Context} context\n */\n function Subscription(context) {\n Observable.call(this);\n this.eventFilters = [];\n this.timeout = null;\n this.subscription = {\n eventFilters: [],\n expirationTime: '',\n // 2014-03-12T19:54:35.613Z\n expiresIn: 0,\n deliveryMode: {\n transportType: 'PubNub',\n encryption: false,\n address: '',\n subscriberKey: '',\n secretKey: ''\n },\n id: '',\n creationTime: '',\n // 2014-03-12T19:54:35.613Z\n status: '',\n // Active\n uri: ''\n };\n /** @type {PUBNUB.ws} */\n this.socket = null;\n this.context = context;\n }\n Subscription.prototype = Object.create(Observable.prototype);\n Object.defineProperty(Subscription.prototype, 'constructor', {\n value: Subscription,\n enumerable: false\n });\n Subscription.prototype.events = {\n notification: 'notification',\n removeSuccess: 'removeSuccess',\n removeError: 'removeError',\n renewSuccess: 'renewSuccess',\n renewError: 'renewError',\n subscribeSuccess: 'subscribeSuccess',\n subscribeError: 'subscribeError'\n };\n /**\n * @param {string} url\n * @returns {PUBNUB.ws}\n */\n Subscription.prototype.createPubnub = function (url) {\n return new (this.getPubnub()).ws(url);\n };\n Subscription.prototype.getPubnub = function () {\n return this.context.getPubnub();\n };\n Subscription.prototype.getCrypto = function () {\n return this.context.getCryptoJS();\n };\n Subscription.prototype.getPlatform = function () {\n return require('./Platform').$get(this.context);\n };\n /**\n * Creates or updates subscription if there is an active one\n * @param {{events?:string[]}} [options] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.register = function (options) {\n if (this.isSubscribed()) {\n return this.renew(options);\n } else {\n return this.subscribe(options);\n }\n };\n Subscription.prototype.addEvents = function (events) {\n this.eventFilters = this.eventFilters.concat(events);\n return this;\n };\n Subscription.prototype.setEvents = function (events) {\n this.eventFilters = events;\n return this;\n };\n Subscription.prototype.getFullEventFilters = function () {\n return this.eventFilters.map(function (event) {\n return this.getPlatform().apiUrl(event);\n }.bind(this));\n };\n /**\n * @private\n * @param {Array} [options.events] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.subscribe = function (options) {\n options = options || {};\n if (options.events)\n this.eventFilters = options.events;\n this.clearTimeout();\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.eventFilters || !this.eventFilters.length)\n throw new Error('Events are undefined');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n method: 'POST',\n url: '/restapi/v1.0/subscription',\n post: {\n eventFilters: this.getFullEventFilters(),\n deliveryMode: { transportType: 'PubNub' }\n }\n });\n }.bind(this)).then(function (ajax) {\n this.updateSubscription(ajax.data).subscribeAtPubnub().emit(this.events.subscribeSuccess, ajax.data);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.subscribeError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @private\n * @param {Array} [options.events] New array of events\n * @returns {Promise}\n */\n Subscription.prototype.renew = function (options) {\n options = options || {};\n if (options.events)\n this.eventFilters = options.events;\n this.clearTimeout();\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.subscription || !this.subscription.id)\n throw new Error('Subscription ID is required');\n if (!this.eventFilters || !this.eventFilters.length)\n throw new Error('Events are undefined');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n method: 'PUT',\n url: '/restapi/v1.0/subscription/' + this.subscription.id,\n post: { eventFilters: this.getFullEventFilters() }\n });\n }.bind(this)).then(function (ajax) {\n this.updateSubscription(ajax.data).emit(this.events.renewSuccess, ajax.data);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.renewError, e);\n throw e;\n }.bind(this));\n };\n /**\n * @param {boolean} [options.async]\n * @returns {Promise}\n */\n Subscription.prototype.remove = function (options) {\n options = Utils.extend({ async: true }, options);\n return new (this.context.getPromise())(function (resolve, reject) {\n if (!this.subscription || !this.subscription.id)\n throw new Error('Subscription ID is required');\n resolve();\n }.bind(this)).then(function () {\n return this.getPlatform().apiCall({\n async: !!options.async,\n // Warning! This is necessary because this method is used in beforeunload hook and has to be synchronous\n method: 'DELETE',\n url: '/restapi/v1.0/subscription/' + this.subscription.id\n });\n }.bind(this)).then(function (ajax) {\n this.unsubscribe().emit(this.events.removeSuccess, ajax);\n return ajax;\n }.bind(this)).catch(function (e) {\n this.unsubscribe().emit(this.events.removeError, e);\n throw e;\n }.bind(this));\n };\n Subscription.prototype.destroy = function () {\n this.unsubscribe();\n return Observable.prototype.destroy.call(this);\n };\n Subscription.prototype.isSubscribed = function () {\n return this.subscription && this.subscription.deliveryMode && this.subscription.deliveryMode.subscriberKey && this.subscription.deliveryMode.address;\n };\n /**\n * @protected\n */\n Subscription.prototype.setTimeout = function () {\n var timeToExpiration = this.subscription.expiresIn * 1000 - renewHandicapMs;\n this.timeout = setTimeout(function () {\n this.renew({});\n }.bind(this), timeToExpiration);\n };\n /**\n * @protected\n */\n Subscription.prototype.clearTimeout = function () {\n clearTimeout(this.timeout);\n };\n /**\n * Set new subscription info and re-create timeout\n * @protected\n * @param subscription\n * @returns {Subscription}\n */\n Subscription.prototype.updateSubscription = function (subscription) {\n this.clearTimeout();\n this.subscription = subscription;\n this.setTimeout();\n return this;\n };\n /**\n * Remove subscription and disconnect from socket\n * @protected\n * @returns {Subscription}\n */\n Subscription.prototype.unsubscribe = function () {\n this.clearTimeout();\n // @see https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n this.socket && this.socket.close(this.socket.CLOSE_NORMAL, 'Connection terminated by client');\n this.subscription = null;\n return this;\n };\n /**\n * @abstract\n * @param {Object} message\n * @returns {Subscription}\n */\n Subscription.prototype.notify = function (message) {\n if (this.isSubscribed() && this.subscription.deliveryMode.encryptionKey) {\n var CryptoJS = this.getCrypto();\n var key = CryptoJS.enc.Base64.parse(this.subscription.deliveryMode.encryptionKey);\n var data = CryptoJS.enc.Base64.parse(message);\n var decrypted = CryptoJS.AES.decrypt({ ciphertext: data }, key, {\n mode: CryptoJS.mode.ECB,\n padding: CryptoJS.pad.Pkcs7\n }).toString(CryptoJS.enc.Utf8);\n message = JSON.parse(decrypted);\n }\n this.emit(this.events.notification, message);\n return this;\n };\n /**\n * @returns {Subscription}\n */\n Subscription.prototype.subscribeAtPubnub = function () {\n if (!this.isSubscribed())\n return this;\n // ws(s)://ORIGIN/PUBLISH_KEY/SUBSCRIBE_KEY/CHANNEL\n var url = 'wss://pubsub.pubnub.com//' + this.subscription.deliveryMode.subscriberKey + '/' + this.subscription.deliveryMode.address;\n this.socket = this.createPubnub(url);\n this.socket.pubnub && this.socket.pubnub.ready();\n //TODO This may be unnecessary\n this.socket.onmessage = function (e) {\n Log.info('Subscription: Socket received message', e);\n this.notify(e.data);\n }.bind(this);\n this.socket.onclose = function () {\n Log.info('Subscription: Socket closed');\n };\n this.socket.onerror = function (e) {\n Log.error('Subscription: Socket error');\n Log.error(e.stack || e);\n };\n this.socket.onopen = function () {\n Log.info('Subscription: Socket open');\n };\n return this;\n };\n module.exports = {\n Class: Subscription,\n /**\n * @param {Context} context\n * @returns {Subscription}\n */\n $get: function (context) {\n return new Subscription(context);\n }\n };\n});","/**\n * istanbul ignore next\n */\ndefine('core/PageVisibility', [\n 'require',\n 'exports',\n 'module',\n 'core/Observable'\n], function (require, exports, module) {\n 'use strict';\n var Observable = require('./Observable').Class;\n /**\n * @constructor\n * @extends Observable\n * @alias RCSDK.core.PageVisibility\n */\n function PageVisibility() {\n Observable.call(this);\n var hidden = 'hidden', self = this;\n this.visible = true;\n if (typeof document == 'undefined' || typeof window == 'undefined')\n return;\n // Standards:\n if (hidden in document)\n document.addEventListener('visibilitychange', onchange);\n else if ((hidden = 'mozHidden') in document)\n document.addEventListener('mozvisibilitychange', onchange);\n else if ((hidden = 'webkitHidden') in document)\n document.addEventListener('webkitvisibilitychange', onchange);\n else if ((hidden = 'msHidden') in document)\n document.addEventListener('msvisibilitychange', onchange); // IE 9 and lower:\n else if ('onfocusin' in document)\n document.onfocusin = document.onfocusout = onchange; // All others:\n else\n window.onpageshow = window.onpagehide = window.onfocus = window.onblur = onchange;\n function onchange(evt) {\n evt = evt || window.event;\n var v = 'visible', h = 'hidden', evtMap = {\n focus: v,\n focusin: v,\n pageshow: v,\n blur: h,\n focusout: h,\n pagehide: h\n };\n self.visible = evt.type in evtMap ? evtMap[evt.type] == v : !document[hidden];\n self.emit(self.events.change, self.visible);\n }\n }\n PageVisibility.prototype = Object.create(Observable.prototype);\n Object.defineProperty(PageVisibility.prototype, 'constructor', {\n value: PageVisibility,\n enumerable: false\n });\n PageVisibility.prototype.events = { change: 'change' };\n PageVisibility.prototype.isVisible = function () {\n return this.visible;\n };\n module.exports = {\n Class: PageVisibility,\n /**\n * @param {Context} context\n * @returns {PageVisibility}\n */\n $get: function (context) {\n return new PageVisibility();\n }\n };\n});","define('core/Helper', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.Helper\n * @constructor\n * @param {Context} context\n */\n function Helper(context) {\n this.context = context;\n }\n Helper.prototype.defaultProperty = 'id';\n /**\n * @returns {Context}\n */\n Helper.prototype.getContext = function () {\n return this.context;\n };\n /**\n * @param {object} [options]\n * @param {string} [id]\n */\n Helper.prototype.createUrl = function (options, id) {\n return '';\n };\n /**\n * @param {IHelperObject} object\n * @returns {string}\n */\n Helper.prototype.getId = function (object) {\n return object && object[this.defaultProperty];\n };\n /**\n *\n * @param {IHelperObject} object\n * @returns {boolean}\n */\n Helper.prototype.isNew = function (object) {\n return !this.getId(object) || !this.getUri(object);\n };\n /**\n *\n * @param {IHelperObject} object\n * @returns {IHelperObject}\n */\n Helper.prototype.resetAsNew = function (object) {\n if (object) {\n delete object.id;\n delete object.uri;\n }\n return object;\n };\n /**\n * @param {IHelperObject} object\n * @returns {string}\n */\n Helper.prototype.getUri = function (object) {\n return object && object.uri;\n };\n /**\n * @param {Ajax} ajax\n * @return {IHelperObject[]}\n */\n Helper.prototype.parseMultipartResponse = function (ajax) {\n if (ajax.isResponseMultipart()) {\n // ajax.data has full array, leave only successful\n return ajax.data.filter(function (result) {\n return !result.error;\n }).map(function (result) {\n return result.data;\n });\n } else {\n // Single ID\n return [ajax.data];\n }\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided, default will be returned\n * @param {IHelperObject} [object]\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.loadRequest = function (object, options) {\n return Utils.extend(options || {}, {\n url: options && options.url || object && this.getUri(object) || this.createUrl(),\n method: options && options.method || 'GET'\n });\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided, default will be returned\n * @param {IHelperObject} object\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.saveRequest = function (object, options) {\n if (!object && !(options && options.post))\n throw new Error('No Object');\n return Utils.extend(options || {}, {\n method: options && options.method || (this.isNew(object) ? 'POST' : 'PUT'),\n url: options && options.url || this.getUri(object) || this.createUrl(),\n post: options && options.post || object\n });\n };\n /**\n * Options have higher priority, if object.url and options.url were provided, options.url will be returned\n * If no URL was provided exception will be thrown\n * @param {IHelperObject} object\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.deleteRequest = function (object, options) {\n options = options || {};\n if (!this.getUri(object) && !(options && options.url))\n throw new Error('Object has to be not new or URL must be provided');\n return Utils.extend(options || {}, {\n method: options && options.method || 'DELETE',\n url: options && options.url || this.getUri(object)\n });\n };\n /**\n * If no url was provided, default SYNC url will be returned\n * @param {IAjaxOptions} [options]\n * @return {IAjaxOptions}\n */\n Helper.prototype.syncRequest = function (options) {\n options = options || {};\n options.url = options.url || this.createUrl({ sync: true });\n options.get = options.get || {};\n if (!!options.get.syncToken) {\n options.get = {\n syncType: 'ISync',\n syncToken: options.get.syncToken\n };\n } else {\n options.get.syncType = 'FSync';\n }\n return options;\n };\n Helper.prototype.nextPageExists = function (data) {\n return data && data.navigation && 'nextPage' in data.navigation;\n };\n /**\n * @param {IHelperObject[]} array - an array to be indexed\n * @param {function(object)} [getIdFn] - must return an ID for each array item\n * @param {boolean} [gather] - if true, then each index will have an array of items, that has same ID, otherwise the first indexed item wins\n * @returns {*}\n */\n Helper.prototype.index = function (array, getIdFn, gather) {\n getIdFn = getIdFn || this.getId.bind(this);\n array = array || [];\n return array.reduce(function (index, item) {\n var id = getIdFn(item);\n if (!id || index[id] && !gather)\n return index;\n if (gather) {\n if (!index[id])\n index[id] = [];\n index[id].push(item);\n } else {\n index[id] = item;\n }\n return index;\n }, {});\n };\n /**\n * Returns a shallow copy of merged _target_ array plus _supplement_ array\n * @param {IHelperObject[]} target\n * @param {IHelperObject[]} supplement\n * @param {function(IHelperObject)} [getIdFn]\n * @param {boolean} [mergeItems] - if true, properties of _supplement_ item will be applied to _target_ item, otherwise _target_ item will be replaced\n * @returns {*}\n */\n Helper.prototype.merge = function (target, supplement, getIdFn, mergeItems) {\n getIdFn = getIdFn || this.getId.bind(this);\n target = target || [];\n supplement = supplement || [];\n var supplementIndex = this.index(supplement, getIdFn), updatedIDs = [];\n var result = target.map(function (item) {\n var id = getIdFn(item), newItem = supplementIndex[id];\n if (newItem)\n updatedIDs.push(id);\n return newItem ? mergeItems ? Utils.extend(item, newItem) : newItem : item;\n });\n supplement.forEach(function (item) {\n if (updatedIDs.indexOf(getIdFn(item)) == -1)\n result.push(item);\n });\n return result;\n };\n module.exports = {\n Class: Helper,\n /**\n * @param {Context} context\n * @returns {Helper}\n */\n $get: function (context) {\n return new Helper(context);\n }\n }; /**\n * @typedef {object} IHelperObject\n * @property {string} id\n * @property {string} uri\n */\n});","define('core/Validator', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @typedef {object} IValidator\n * @property {string} field\n * @property {function} validator\n */\n /**\n * @typedef {object} IValidatorResult\n * @property {boolean} isValid\n * @property {Object.} errors\n */\n /**\n * @alias RCSDK.core.Validator\n * @name Validator\n */\n var Validator = module.exports = {\n /**\n * @param {IValidator[]} validators\n * @returns {IValidatorResult}\n */\n validate: function (validators) {\n /** @type {IValidatorResult} */\n var result = {\n errors: {},\n isValid: true\n };\n result.errors = validators.reduce(function (errors, validator) {\n var res = validator.validator();\n if (res.length > 0) {\n result.isValid = false;\n errors[validator.field] = errors[validator.field] || [];\n errors[validator.field] = errors[validator.field].concat(res);\n }\n return errors;\n }, {});\n return result;\n },\n /**\n * It is not recommended to have any kinds of complex validators at front end\n * @deprecated\n * @param value\n * @param multiple\n * @returns {Function}\n */\n email: function (value, multiple) {\n return function () {\n if (!value)\n return [];\n return Utils.isEmail(value, multiple) ? [] : [new Error('Value has to be a valid email')];\n };\n },\n /**\n * It is not recommended to have any kinds of complex validators at front end\n * TODO International phone numbers\n * @deprecated\n * @param value\n * @returns {Function}\n */\n phone: function (value) {\n return function () {\n if (!value)\n return [];\n return Utils.isPhoneNumber(value) ? [] : [new Error('Value has to be a valid US phone number')];\n };\n },\n required: function (value) {\n return function () {\n return !value ? [new Error('Field is required')] : [];\n };\n },\n length: function (value, max, min) {\n return function () {\n var errors = [];\n if (!value)\n return errors;\n value = value.toString();\n if (min && value.length < min)\n errors.push(new Error('Minimum length of ' + min + ' characters is required'));\n if (max && value.length > max)\n errors.push(new Error('Maximum length of ' + max + ' characters is required'));\n return errors;\n };\n },\n $get: function (context) {\n return Validator;\n }\n };\n});","define('core/List', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('./Utils');\n /**\n * @alias RCSDK.core.List\n * @name List\n */\n var List = module.exports = {\n /**\n * @param {string} property\n * @returns {function(object)}\n */\n propertyExtractor: function (property) {\n return function (item, options) {\n return property ? item && item[property] || null : item;\n };\n },\n /**\n * Non-string types are converted to string\n * Non-string types are extracted as an empty string if they could be converted to false\n * If no options.sortBy given the item itself is extracted\n * Compares strings:\n * - if (a is less than b) return -1;\n * - if (a is greater than b) return 1;\n * - else (a must be equal to b) return 0;\n * Exceptions in will be suppressed, if any - a is assumed to be less than b\n * @param {string} a\n * @param {string} b\n * @param {IListComparatorOptions} [options]\n * @returns {number}\n */\n stringComparator: function (a, b, options) {\n return Utils.parseString(a).localeCompare(Utils.parseString(b));\n },\n /**\n * Non-numeric types are extracted as 0 if they could be converted to false\n * Objects that could not be converted to number are extracted as 0\n * If no options.sortBy given the item itself is extracted\n * See parseFloat for more info\n * Compares numbers:\n * - if (a is less than b) return -1;\n * - if (a is greater than b) return 1;\n * - else (a must be equal to b) return 0;\n * Function does not check types\n * Exceptions in will be suppressed, if any - a is assumed to be less than b\n * @param {number} a\n * @param {number} b\n * @param {IListComparatorOptions} [options]\n * @returns {number}\n */\n numberComparator: function (a, b, options) {\n return Utils.parseNumber(a) - Utils.parseNumber(b);\n },\n /**\n * Function extracts (using _extractFn_ option) values of a property (_sortBy_ option) and compares them using\n * compare function (_compareFn_ option, by default Helper.stringComparator)\n * Merged options are provided to _extractFn_ and _compareFn_\n * TODO Check memory leaks for all that options links\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n comparator: function (options) {\n options = Utils.extend({\n extractFn: this.propertyExtractor(options && options.sortBy || null),\n compareFn: this.stringComparator\n }, options);\n /**\n * @param {object} item1\n * @param {object} item2\n * @returns {number}\n */\n function comparator(item1, item2) {\n return options.compareFn(options.extractFn(item1, options), options.extractFn(item2, options), options);\n }\n return comparator;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options\n * @returns {boolean}\n */\n equalsFilter: function (obj, options) {\n return options.condition === obj;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options\n * @returns {boolean}\n */\n containsFilter: function (obj, options) {\n return obj && obj.toString().indexOf(options.condition) > -1;\n },\n /**\n * @param {string} obj\n * @param {IListFilterOptions} options - `condition` must be an instance of RegExp\n * @returns {boolean}\n */\n regexpFilter: function (obj, options) {\n if (!(options.condition instanceof RegExp))\n throw new Error('Condition must be an instance of RegExp');\n return options.condition.test(obj);\n },\n /**\n * Function extracts (using `extractFn` option) values of a property (`filterBy` option) and filters them using\n * compare function (`filterFn` option, by default Helper.equalsFilter)\n * Merged options are provided to `extractFn` and `compareFn`\n * Set `filterBy` to null to force `propertyExtractor` to return object itself\n * TODO Check memory leaks for all that options links\n * @param {IListFilterOptions[]} [filterConfigs]\n * @returns {function(object)}\n */\n filter: function (filterConfigs) {\n var self = this;\n filterConfigs = (filterConfigs || []).map(function (opt) {\n return Utils.extend({\n condition: '',\n extractFn: self.propertyExtractor(opt && opt.filterBy || null),\n filterFn: self.equalsFilter\n }, opt);\n });\n /**\n * @param {object} item\n * @returns {boolean}\n */\n function filter(item) {\n return filterConfigs.reduce(function (pass, opt) {\n if (!pass || !opt.condition)\n return pass;\n return opt.filterFn(opt.extractFn(item, opt), opt);\n }, true);\n }\n return filter;\n },\n $get: function (context) {\n return List;\n }\n }; /**\n * @typedef {object} IListComparatorOptions\n * @property {string} sortBy\n * @property {function(object, IListComparatorOptions)} extractFn\n * @property {function(object, object)} compareFn\n */\n /**\n * @typedef {object} IListFilterOptions\n * @property {string} filterBy\n * @property {object} condition\n * @property {function(object, IListComparatorOptions)} extractFn\n * @property {function(object, object)} filterFn\n */\n});","define('helpers/Country', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function CountryHelper(context) {\n Helper.call(this, context);\n }\n CountryHelper.prototype = Object.create(Helper.prototype);\n CountryHelper.prototype.createUrl = function () {\n return '/dictionary/country';\n };\n module.exports = {\n Class: CountryHelper,\n /**\n * @param {Context} context\n * @returns {CountryHelper}\n */\n $get: function (context) {\n return context.createSingleton('CountryHelper', function () {\n return new CountryHelper(context);\n });\n }\n }; /**\n * @typedef {object} ICountry\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {string} callingCode\n */\n});","define('helpers/DeviceModel', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function DeviceModelHelper(context) {\n Helper.call(this, context);\n }\n DeviceModelHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IDeviceModel} device\n * @returns {string}\n */\n DeviceModelHelper.prototype.getId = function (device) {\n if (!device)\n return null;\n return device.id + (device.addons && device.addons[0] ? '-' + device.addons[0].id + '-' + device.addons[0].count : '');\n };\n /**\n * Remove extra textual information from device\n * @exceptionalCase Platform does not understand full device info\n * @param {IDeviceModel} device\n * @returns {IDeviceModel}\n */\n DeviceModelHelper.prototype.cleanForSaving = function (device) {\n if (!device)\n return null;\n delete device.name;\n delete device.deviceClass;\n if (device.addons && device.addons.length > 0) {\n device.addons.forEach(function (addon, i) {\n delete device.addons[i].name;\n });\n } else {\n delete device.addons;\n }\n return device;\n };\n /**\n * TODO Remove when http://jira.ringcentral.com/browse/SDK-1 is done\n * @type {IDeviceModel[]}\n */\n DeviceModelHelper.prototype.devices = [\n {\n id: '-1',\n name: 'Softphone'\n },\n {\n id: '0',\n name: 'Existing device'\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '23',\n name: 'Polycom IP 321 Basic IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '30',\n name: 'Polycom IP 550 HD Manager IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '37',\n name: 'Polycom IP 6000 Conference Phone',\n deviceClass: 'Conference Phone'\n },\n {\n id: '40',\n name: 'Polycom IP 335 HD IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '51',\n name: 'Cisco SPA-303 Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '1'\n }]\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone with 2 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '2'\n }]\n },\n {\n id: '16',\n name: 'Cisco SPA-508G Desk Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '1'\n }]\n },\n {\n id: '19',\n name: 'Cisco SPA-525G2 Desk Phone with 2 Expansion Modules\\tDesk Phone',\n addons: [{\n id: '2',\n name: 'Cisco Sidecar',\n count: '2'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 1 Expansion Module',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '1'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 2 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '2'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone with 3 Expansion Modules',\n deviceClass: 'Desk Phone',\n addons: [{\n id: '1',\n name: 'Plolycom Expansion',\n count: '3'\n }]\n },\n {\n id: '34',\n name: 'Polycom IP 650 HD Executive IP phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '52',\n name: 'Cisco SPA-122 ATA',\n deviceClass: 'Analog Adapter'\n },\n {\n id: '53',\n name: 'Polycom VVX-500 Color Touchscreen',\n deviceClass: 'Desk Phone'\n },\n {\n id: '54',\n name: 'Polycom VVX-310 Gigabit Ethernet Phone',\n deviceClass: 'Desk Phone'\n },\n {\n id: '55',\n name: 'Polycom VVX-410 Color Gigabit Ethernet Phone',\n deviceClass: 'Desk Phone'\n }\n ];\n module.exports = {\n Class: DeviceModelHelper,\n /**\n * @param {Context} context\n * @returns {DeviceModelHelper}\n */\n $get: function (context) {\n return context.createSingleton('DeviceModelHelper', function () {\n return new DeviceModelHelper(context);\n });\n }\n }; /**\n * @typedef {object} IDeviceModel\n * @property {string} id\n * @property {string} name\n * @property {string} deviceClass\n * @property {string} addons\n */\n /**\n * @typedef {Object} IDeviceModelAddon\n * @property {string} id\n * @property {string} name\n * @property {string} count\n */\n});","define('helpers/Language', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function LanguageHelper(context) {\n Helper.call(this, context);\n }\n LanguageHelper.prototype = Object.create(Helper.prototype);\n /**\n * @type {ILanguage[]}\n */\n LanguageHelper.prototype.languages = [\n {\n id: '1033',\n name: 'English (US)'\n },\n {\n id: '3084',\n name: 'French (Canada)'\n }\n ];\n module.exports = {\n Class: LanguageHelper,\n /**\n * @param {Context} context\n * @returns {LanguageHelper}\n */\n $get: function (context) {\n return context.createSingleton('LanguageHelper', function () {\n return new LanguageHelper(context);\n });\n }\n }; /**\n * @typedef {object} ILanguage\n * @property {string} id\n * @property {string} name\n */\n});","define('helpers/State', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils',\n 'helpers/Country'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function StateHelper(context) {\n Helper.call(this, context);\n this.countryHelper = require('./Country').$get(context);\n }\n StateHelper.prototype = Object.create(Helper.prototype);\n StateHelper.prototype.createUrl = function () {\n return '/dictionary/state';\n };\n /**\n * @param {IStateOptions} options\n * @returns {function(IState)}\n */\n StateHelper.prototype.filter = function (options) {\n options = Utils.extend({ countryId: '' }, options);\n return List.filter([{\n condition: options.countryId,\n filterFn: function (item, opts) {\n return this.countryHelper.getId(item.country) == opts.condition;\n }.bind(this)\n }]);\n };\n module.exports = {\n Class: StateHelper,\n /**\n * @param {Context} context\n * @returns {StateHelper}\n */\n $get: function (context) {\n return context.createSingleton('StateHelper', function () {\n return new StateHelper(context);\n });\n }\n }; /**\n * @typedef {object} IState\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {ICountry} country\n */\n /**\n * @typedef {object} IStateOptions\n * @property {string} countryId\n */\n});","define('helpers/Location', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils',\n 'helpers/State'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function LocationHelper(context) {\n Helper.call(this, context);\n this.state = require('./State').$get(context);\n }\n LocationHelper.prototype = Object.create(Helper.prototype);\n LocationHelper.prototype.createUrl = function () {\n return '/dictionary/location';\n };\n /**\n * @param {ILocationFilterOptions} options\n * @returns {function(ILocation)}\n */\n LocationHelper.prototype.filter = function (options) {\n var uniqueNPAs = [];\n options = Utils.extend({\n stateId: '',\n onlyUniqueNPA: false\n }, options);\n return List.filter([\n {\n condition: options.stateId,\n filterFn: function (item, opts) {\n return this.state.getId(item.state) == opts.condition;\n }.bind(this)\n },\n {\n condition: options.onlyUniqueNPA,\n filterFn: function (item, opts) {\n if (uniqueNPAs.indexOf(item.npa) == -1) {\n uniqueNPAs.push(item.npa);\n return true;\n } else {\n return false;\n }\n }\n }\n ]);\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {comparator}\n */\n LocationHelper.prototype.comparator = function (options) {\n options = Utils.extend({ sortBy: 'npa' }, options);\n if (options.sortBy == 'nxx') {\n /**\n * @param {ILocation} item\n * @returns {number}\n */\n options.extractFn = function (item) {\n return parseInt(item.npa) * 1000000 + parseInt(item.nxx);\n };\n options.compareFn = List.numberComparator;\n }\n return List.comparator(options);\n };\n module.exports = {\n Class: LocationHelper,\n /**\n * @param {Context} context\n * @returns {LocationHelper}\n */\n $get: function (context) {\n return context.createSingleton('LocationHelper', function () {\n return new LocationHelper(context);\n });\n }\n }; /**\n * @typedef {object} ILocation\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} isoCode\n * @property {string} npa\n * @property {string} nxx\n * @property {IState} state\n */\n /**\n * @typedef {object} ILocationFilterOptions\n * @property {string} stateId\n * @property {boolean} onlyUniqueNPA\n */\n});","define('helpers/ShippingMethod', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ShippingMethodHelper(context) {\n Helper.call(this, context);\n }\n ShippingMethodHelper.prototype = Object.create(Helper.prototype);\n /**\n * TODO Remove when http://jira.ringcentral.com/browse/SDK-3 id done\n * @type {IShippingMethod[]}\n */\n ShippingMethodHelper.prototype.shippingMethods = [\n {\n id: '1',\n name: 'Ground Shipping (5-7 business days)'\n },\n {\n id: '2',\n name: '2-days Shipping'\n },\n {\n id: '3',\n name: 'Overnight Shipping'\n }\n ];\n module.exports = {\n Class: ShippingMethodHelper,\n /**\n * @param {Context} context\n * @returns {ShippingMethodHelper}\n */\n $get: function (context) {\n return context.createSingleton('ShippingMethodHelper', function () {\n return new ShippingMethodHelper(context);\n });\n }\n }; /**\n * @typedef {object} IShippingMethod\n * @property {string} id\n * @property {string} name\n */\n});","define('helpers/Timezone', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function TimezoneHelper(context) {\n Helper.call(this, context);\n }\n TimezoneHelper.prototype = Object.create(Helper.prototype);\n TimezoneHelper.prototype.createUrl = function () {\n return '/dictionary/timezone';\n };\n module.exports = {\n Class: TimezoneHelper,\n /**\n * @param {Context} context\n * @returns {TimezoneHelper}\n */\n $get: function (context) {\n return context.createSingleton('TimezoneHelper', function () {\n return new TimezoneHelper(context);\n });\n }\n }; /**\n * @typedef {object} ITimezone\n * @property {string} id\n * @property {string} uri\n * @property {string} name\n * @property {string} description\n */\n});","define('helpers/Account', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function AccountHelper(context) {\n Helper.call(this, context);\n }\n AccountHelper.prototype = Object.create(Helper.prototype);\n AccountHelper.prototype.createUrl = function () {\n return '/account/~';\n };\n module.exports = {\n Class: AccountHelper,\n /**\n * @param {Context} context\n * @returns {AccountHelper}\n */\n $get: function (context) {\n return context.createSingleton('AccountHelper', function () {\n return new AccountHelper(context);\n });\n }\n };\n});","define('helpers/BlockedNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function BlockedNumberHelper(context) {\n Helper.call(this, context);\n }\n BlockedNumberHelper.prototype = Object.create(Helper.prototype);\n /**\n *\n * @param {IBlockedNumberOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n BlockedNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId ? options.extensionId : '~') + '/blocked-number' + (id ? '/' + id : '');\n };\n /**\n * @param {IBlockedNumber} item\n */\n BlockedNumberHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'phoneNumber',\n validator: Validator.phone(item.phoneNumber)\n },\n {\n field: 'phoneNumber',\n validator: Validator.required(item.phoneNumber)\n },\n {\n field: 'name',\n validator: Validator.required(item.name)\n }\n ]);\n };\n module.exports = {\n Class: BlockedNumberHelper,\n /**\n * @param {Context} context\n * @returns {BlockedNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('BlockedNumberHelper', function () {\n return new BlockedNumberHelper(context);\n });\n }\n }; /**\n * @typedef {object} IBlockedNumber\n * @property {string} name\n * @property {string} phoneNumber\n */\n /**\n * @typedef {object} IBlockedNumberOptions\n * @property {string} extensionId\n */\n});","define('helpers/Extension', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/List',\n 'core/Utils'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, List = require('../core/List'), Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function ExtensionHelper(context) {\n Helper.call(this, context);\n }\n ExtensionHelper.prototype = Object.create(Helper.prototype);\n ExtensionHelper.prototype.type = {\n department: 'Department',\n user: 'User',\n announcement: 'Announcement',\n voicemail: 'Voicemail'\n };\n /**\n *\n * @param {IExtensionOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n ExtensionHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~' + (options.departmentId ? '/department/' + options.departmentId + '/members' : '/extension') + (id ? '/' + id : '');\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isUser = function (extension) {\n return extension && extension.type == this.type.user;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isDepartment = function (extension) {\n return extension && extension.type == this.type.department;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isAnnouncement = function (extension) {\n return extension && extension.type == this.type.announcement;\n };\n /**\n * @param {IExtension} extension\n * @returns {boolean}\n */\n ExtensionHelper.prototype.isVoicemail = function (extension) {\n return extension && extension.type == this.type.voicemail;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ExtensionHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({\n sortBy: 'extensionNumber',\n compareFn: List.numberComparator\n }, options));\n };\n /**\n * @param {IExtensionFilterOptions} [options]\n * @returns {function(IExtension)}\n */\n ExtensionHelper.prototype.filter = function (options) {\n options = Utils.extend({\n search: '',\n type: ''\n }, options);\n return List.filter([\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n condition: options.search.toLocaleLowerCase(),\n filterFn: List.containsFilter,\n extractFn: function (item) {\n return (item.name && item.name.toLocaleLowerCase() + ' ') + (item.extensionNumber && item.extensionNumber.toString().toLocaleLowerCase());\n }\n }\n ]);\n };\n module.exports = {\n Class: ExtensionHelper,\n /**\n * @param {Context} context\n * @returns {ExtensionHelper}\n */\n $get: function (context) {\n return context.createSingleton('ExtensionHelper', function () {\n return new ExtensionHelper(context);\n });\n }\n }; /**\n * @typedef {object} IExtensionOptions\n * @property {string} departmentId\n */\n /**\n * @typedef {object} IExtensionFilterOptions\n * @property {string} search\n * @property {string} type\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ShortExtensionInfo\n * @typedef {object} IExtensionShort\n * @property {string} id\n * @property {string} uri\n * @property {string} extensionNumber\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ExtensionInfo\n * @typedef {object} IExtension\n * @property {string} id\n * @property {string} uri\n * @property {string} extensionNumber\n * @property {string} name\n * @property {string} type\n * @property {IContactBrief} contact\n * @property {IExtensionRegionalSettings} regionalSettings\n * @property {IServiceFeature[]} serviceFeatures\n * @property {string} status\n * @property {string} setupWizardState\n */\n /**\n * @typedef {object} IExtensionRegionalSettings\n * @property {ITimezone} timezone\n * @property {ILanguage} language\n * @property {ICountry} homeCountry\n */\n});","define('helpers/Presence', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'helpers/Extension',\n 'core/Subscription'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils');\n /**\n * @extends Helper\n * @constructor\n */\n function PresenceHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n PresenceHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IPresenceOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n PresenceHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (id || '~') + '/presence' + (options.detailed ? '?detailedTelephonyState=true' : '');\n };\n /**\n * @param {IPresence} presence\n * @returns {string}\n */\n PresenceHelper.prototype.getId = function (presence) {\n return presence && (this.extension.getId(presence.extension) || presence.extensionId);\n };\n /**\n * @param {IPresence} presence\n * @returns {boolean}\n */\n PresenceHelper.prototype.isAvailable = function (presence) {\n return presence && presence.presenceStatus == 'Available';\n };\n /**\n * @param {IPresenceOptions} [options]\n * @param {string} [id]\n * @returns {Subscription}\n */\n PresenceHelper.prototype.getSubscription = function (options, id) {\n return require('../core/Subscription').$get(this.context).setEvents([this.createUrl(options, id)]);\n };\n /**\n *\n * @param {Subscription} subscription\n * @param {IPresence[]} presences\n * @param {IPresenceOptions} options\n * @returns {*}\n */\n PresenceHelper.prototype.updateSubscription = function (subscription, presences, options) {\n var events = presences.map(this.getId, this).map(function (id) {\n return this.createUrl(options, id);\n }, this);\n subscription.addEvents(events);\n return subscription;\n };\n /**\n * @param {IExtension[]} extensions\n * @param {IPresence[]} presences\n * @param {bool} [merge]\n * @returns {*}\n */\n PresenceHelper.prototype.attachToExtensions = function (extensions, presences, merge) {\n var index = this.index(presences);\n extensions.forEach(/** @param {IExtension} extension */\n function (extension) {\n var presence = index[this.extension.getId(extension)];\n if (presence) {\n if ('presence' in extension && merge) {\n Utils.extend(extension.presence, presence);\n } else {\n extension.presence = presence;\n }\n }\n }, this);\n };\n /**\n * @param {IPresenceCall} presenceCall\n * @returns {boolean}\n */\n PresenceHelper.prototype.isCallInProgress = function (presenceCall) {\n return presenceCall && presenceCall.telephonyStatus != 'NoCall';\n };\n module.exports = {\n Class: PresenceHelper,\n /**\n * @param {Context} context\n * @returns {PresenceHelper}\n */\n $get: function (context) {\n return context.createSingleton('PresenceHelper', function () {\n return new PresenceHelper(context);\n });\n }\n }; /**\n * @typedef {Object} IPresence\n * @property {IExtension} extension\n * @property {IPresenceCall[]} activeCalls\n * @property {string} presenceStatus - Offline, Busy, Available\n * @property {string} telephonyStatus - NoCall, CallConnected, Ringing, OnHold\n * @property {string} userStatus - Offline, Busy, Available\n * @property {string} dndStatus - TakeAllCalls, DoNotAcceptAnyCalls, DoNotAcceptDepartmentCalls, TakeDepartmentCallsOnly\n * @property {boolean} allowSeeMyPresence\n * @property {boolean} ringOnMonitoredCall\n * @property {boolean} pickUpCallsOnHold\n * @property {number} extensionId\n * @property {number} sequence\n */\n /**\n * @typedef {Object} IPresenceCall\n * @property {string} direction\n * @property {string} from\n * @property {string} to\n * @property {string} sessionId\n * @property {string} id\n * @property {string} telephonyStatus\n */\n /**\n * @typedef {Object} IPresenceOptions\n * @property {boolean} detailed\n */\n});","define('helpers/Contact', [\n 'require',\n 'exports',\n 'module',\n 'core/Utils',\n 'core/Validator',\n 'core/Helper',\n 'core/List'\n], function (require, exports, module) {\n 'use strict';\n var Utils = require('../core/Utils'), Validator = require('../core/Validator'), Helper = require('../core/Helper').Class, List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function ContactHelper(context) {\n Helper.call(this, context);\n }\n ContactHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IContactOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n ContactHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n var root = '/account/~/extension/' + (options.extensionId ? options.extensionId : '~') + '/address-book';\n if (options.sync)\n return root + '-sync';\n return root + (options.groupId ? '/group/' + options.groupId + '/contact' : '/contact') + (id ? '/' + id : '');\n };\n /**\n * Returns all values of the given fields if value exists\n * @param {(IContact|object)} where\n * @param {Array} fields\n * @param {boolean} [asHash]\n * @protected\n * @returns {Object}\n */\n ContactHelper.prototype.getFieldValues = function (where, fields, asHash) {\n return fields.reduce(function (result, field) {\n if (where && where[field]) {\n if (asHash) {\n result[field] = where[field];\n } else {\n result.push(where[field]);\n }\n }\n return result;\n }, asHash ? {} : []);\n };\n /**\n * @param {IContact} contact\n * @returns {string}\n */\n ContactHelper.prototype.getFullName = function (contact) {\n return this.getFieldValues(contact, this.nameFields).join(' ');\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getEmails = function (contact, asHash) {\n return this.getFieldValues(contact, this.emailFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getPhones = function (contact, asHash) {\n return this.getFieldValues(contact, this.phoneFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getFaxes = function (contact, asHash) {\n return this.getFieldValues(contact, this.faxFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @param {boolean} [asHash]\n * @returns {IContact}\n */\n ContactHelper.prototype.getAddresses = function (contact, asHash) {\n return this.getFieldValues(contact, this.addressFields, asHash);\n };\n /**\n * @param {IContact} contact\n * @returns {boolean}\n */\n ContactHelper.prototype.isAlive = function (contact) {\n return contact.availability == 'Alive';\n };\n /**\n * Matches a contact against a given string, returns null if nothing found\n * @param {IContact} contact\n * @param {string} string\n * @param {IContactMatchOptions} [options]\n * @returns {(string|null)}\n */\n ContactHelper.prototype.match = function (contact, string, options) {\n options = Utils.extend({\n fields: [].concat(this.nameFields, this.emailFields, this.phoneFields, this.faxFields, this.otherFields),\n inAddresses: true,\n transformFn: function (value, options) {\n return value ? value.toString().toLocaleLowerCase() : '';\n },\n strict: false\n }, options);\n string = options.transformFn(string, options);\n var found = null;\n if (!string)\n return found;\n function matchWith(value) {\n // skip unnecessary cycles if match has been found\n if (found)\n return;\n var transformed = options.transformFn(value, options);\n if (!transformed)\n return;\n var match = options.strict ? transformed == string : transformed.indexOf(string) > -1;\n if (match)\n found = value;\n }\n // Search in fields\n options.fields.forEach(function (field) {\n matchWith(contact[field]);\n });\n // Search in addresses, skip unnecessary cycles if match has been found\n if (options.inAddresses && !found)\n this.addressFields.forEach(function (field) {\n // skip unnecessary cycles if match has been found or no field value\n if (!contact[field] || found)\n return;\n this.addressSubFields.forEach(function (subField) {\n matchWith(contact[field][subField]);\n });\n }, this);\n return found;\n };\n /**\n * Matches a contact against a given phone number, returns null if nothing found\n * @param {IContact} contact\n * @param {string} phone\n * @param {IContactMatchOptions} [options]\n * @returns {string|null}\n */\n ContactHelper.prototype.matchAsPhone = function (contact, phone, options) {\n return this.match(contact, phone, Utils.extend({\n fields: [].concat(this.phoneFields, this.faxFields),\n inAddresses: false,\n transformFn: function (value, options) {\n return value ? value.toString().replace(/[^\\d\\w]/gi, '') : ''; //TODO Trickier removal reqired;\n },\n strict: false\n }, options));\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all given {ICallerInfo}\n * Warning, this function may be performance-consuming, reduce the amount of items passed to contacts and callerInfos\n * @param {ICallerInfo[]} callerInfos\n * @param {IContact[]} contacts\n * @param {IContactMatchOptions} [options]\n */\n ContactHelper.prototype.attachToCallerInfos = function (callerInfos, contacts, options) {\n var self = this, callerInfoIndex = this.index(callerInfos, function (callerInfo) {\n return callerInfo.phoneNumber;\n }, true);\n Utils.forEach(callerInfoIndex, function (indexedCallerInfos, phoneNumber) {\n var foundContact = null, foundPhone = null;\n contacts.some(function (contact) {\n foundPhone = self.matchAsPhone(contact, phoneNumber, options);\n if (foundPhone)\n foundContact = contact;\n return foundPhone;\n });\n if (foundContact) {\n indexedCallerInfos.forEach(function (callerInfo) {\n callerInfo.contact = foundContact;\n callerInfo.contactPhone = foundPhone;\n });\n }\n });\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ContactHelper.prototype.comparator = function (options) {\n var self = this;\n return List.comparator(Utils.extend({\n extractFn: function (contact, options) {\n return self.getFullName(contact);\n }\n }, options));\n };\n /**\n * TODO Add filtering by group http://jira.ringcentral.com/browse/SDK-4\n * @param {IContactOptions} [options]\n * @returns {function(IContact)}\n */\n ContactHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({\n alive: true,\n startsWith: '',\n phonesOnly: false,\n faxesOnly: false\n }, options);\n return List.filter([\n {\n condition: options.alive,\n filterFn: this.isAlive\n },\n {\n condition: options.startsWith,\n filterFn: function (item, opts) {\n return self.match(item, opts.condition);\n }\n },\n {\n condition: options.phonesOnly,\n filterFn: function (item, opts) {\n return self.getPhones(item).length > 0;\n }\n },\n {\n condition: options.faxesOnly,\n filterFn: function (item, opts) {\n return self.getFaxes(item).length > 0;\n }\n }\n ]);\n };\n /**\n * @param {IContact} item\n */\n ContactHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'firstName',\n validator: Validator.required(item.firstName)\n },\n {\n field: 'lastName',\n validator: Validator.required(item.lastName)\n },\n {\n field: 'email',\n validator: Validator.email(item.email)\n },\n {\n field: 'email2',\n validator: Validator.email(item.email2)\n },\n {\n field: 'email3',\n validator: Validator.email(item.email3)\n }\n ]);\n };\n ContactHelper.prototype.phoneFields = [\n 'homePhone',\n 'homePhone2',\n 'businessPhone',\n 'businessPhone2',\n 'mobilePhone',\n 'companyPhone',\n 'assistantPhone',\n 'carPhone',\n 'otherPhone',\n 'callbackPhone'\n ];\n ContactHelper.prototype.faxFields = [\n 'businessFax',\n 'otherFax'\n ];\n ContactHelper.prototype.addressFields = [\n 'homeAddress',\n 'businessAddress',\n 'otherAddress'\n ];\n ContactHelper.prototype.addressSubFields = [\n 'street',\n 'city',\n 'state',\n 'zip'\n ];\n ContactHelper.prototype.nameFields = [\n 'firstName',\n 'middleName',\n 'lastName',\n 'nickName'\n ];\n ContactHelper.prototype.otherFields = [\n 'company',\n 'jobTitle',\n 'webPage',\n 'notes'\n ];\n ContactHelper.prototype.emailFields = [\n 'email',\n 'email2',\n 'email3'\n ];\n module.exports = {\n Class: ContactHelper,\n /**\n * @param {Context} context\n * @returns {ContactHelper}\n */\n $get: function (context) {\n return context.createSingleton('ContactHelper', function () {\n return new ContactHelper(context);\n });\n }\n }; /**\n * @typedef {object} IContactOptions\n * @property {string} extensionId\n * @property {string} groupId\n */\n /**\n * @typedef {object} IContactFilterOptions\n * @property {string} startsWith\n * @property {boolean} alive\n */\n /**\n * @typedef {object} IContactMatchOptions\n * @property {function(object, IContactMatchOptions)} transformFn\n * @property {boolean} strict - if false look for as sub string\n * @property {boolean} inAddresses - look in addresses as well\n * @property {string[]} fields - in which fields to look for\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch16s04.html#ContactAddressInfo\n * @typedef {Object} IContactAddress\n * @property {string} country\n * @property {string} street\n * @property {string} city\n * @property {string} state\n * @property {string} zip\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/ch18s04.html#ContactInfo\n * @typedef {Object} IContactBrief\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} company\n * @property {string} email\n * @property {IContactAddress} businessAddress\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch16s04.html#ContactInfo\n * @typedef {Object} IContact\n *\n * Shared:\n * @property {string} id\n * @property {string} uri\n *\n * Names:\n * @property {string} firstName\n * @property {string} lastName\n * @property {string} company\n * @property {string} nickName\n * @property {string} middleName\n *\n * Emails:\n * @property {string} email\n * @property {string} email2\n * @property {string} email3\n *\n * Addresses:\n * @property {IContactAddress} businessAddress\n * @property {IContactAddress} homeAddress\n * @property {IContactAddress} otherAddress\n *\n * Phones:\n * @property {string} homePhone\n * @property {string} homePhone2\n * @property {string} businessPhone\n * @property {string} businessPhone2\n * @property {string} mobilePhone\n * @property {string} companyPhone\n * @property {string} assistantPhone\n * @property {string} carPhone\n * @property {string} otherPhone\n * @property {string} callbackPhone\n *\n * @property {string} businessFax\n * @property {string} otherFax\n */\n});","define('helpers/Call', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'core/List',\n 'helpers/Presence',\n 'helpers/Contact'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function CallHelper(context) {\n Helper.call(this, context);\n this.presence = require('./Presence').$get(context);\n this.contact = require('./Contact').$get(context);\n }\n CallHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {ICallOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n CallHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (!('personal' in options) && !('extensionId' in options))\n options.personal = true;\n return '/account/~/' + (options.personal || options.extensionId ? 'extension/' + (options.extensionId || '~') + '/' : '') + (options.active ? 'active-calls' : 'call-log') + (id ? '/' + id : '');\n };\n CallHelper.prototype.getSessionId = function (call) {\n return call && call.sessionId;\n };\n CallHelper.prototype.isInProgress = function (call) {\n return call && call.result == 'In Progress';\n };\n CallHelper.prototype.isAlive = function (call) {\n return call && call.availability == 'Alive';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isInbound = function (call) {\n return call && call.direction == 'Inbound';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isOutbound = function (call) {\n return !this.isInbound(call);\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isMissed = function (call) {\n return call && call.result == 'Missed';\n };\n /**\n * @param {ICall} call\n * @returns {boolean}\n */\n CallHelper.prototype.isFindMe = function (call) {\n return call && call.action == 'FindMe';\n };\n /**\n * @param {ICall} call\n * @returns {ICallerInfo}\n */\n CallHelper.prototype.getCallerInfo = function (call) {\n return this.isInbound(call) ? call.from : call.to;\n };\n /**\n * @param {ICall} call\n * @returns {ICallerInfo[]}\n */\n CallHelper.prototype.getAllCallerInfos = function (call) {\n return [this.getCallerInfo(call)].concat(this.isInbound(call) ? call.to : call.from);\n };\n CallHelper.prototype.formatDuration = function (call) {\n function addZero(v) {\n return v < 10 ? '0' + v : v;\n }\n var duration = parseInt(call.duration), hours = Math.floor(duration / (60 * 60)), mins = Math.floor(duration % (60 * 60) / 60), secs = Math.floor(duration % 60);\n return (hours ? hours + ':' : '') + addZero(mins) + ':' + addZero(secs);\n };\n /**\n * @param {ICallFilterOptions} [options]\n * @returns {function(ICall)}\n */\n CallHelper.prototype.filter = function (options) {\n options = Utils.extend({\n alive: true,\n direction: '',\n type: ''\n }, options);\n return List.filter([\n //{condition: options.alive, filterFn: this.isAlive},\n {\n filterBy: 'direction',\n condition: options.direction\n },\n {\n filterBy: 'type',\n condition: options.type\n }\n ]);\n };\n /**\n * TODO Compare as dates\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n CallHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'startTime' }, options));\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all callerInfos found in\n * all calls Warning, this function may be performance-consuming, reduce the amount of items passed to contacts\n * and calls\n * @param {IContact[]} contacts\n * @param {ICall[]} calls\n * @param {IContactMatchOptions} [options]\n */\n CallHelper.prototype.attachContacts = function (contacts, calls, options) {\n var self = this;\n // Flatten all caller infos from all messages\n var callerInfos = calls.reduce(function (callerInfos, call) {\n return callerInfos.concat(self.getAllCallerInfos(call));\n }, []);\n this.contact.attachToCallerInfos(callerInfos, contacts, options);\n };\n /**\n * Check whether pair of calls are two legs of RingOut\n * @param {ICall} outboundRingOutCall\n * @param {ICall} inboundCall\n * @param {ICallProcessingOptions} options\n * @returns {boolean}\n */\n CallHelper.prototype.checkMergeability = function (outboundRingOutCall, inboundCall, options) {\n function getTime(dateString) {\n return new Date(dateString).getTime();\n }\n return (!options.strict || outboundRingOutCall.action && outboundRingOutCall.action.toLowerCase().indexOf('ringout') != -1) && // Check directions\n outboundRingOutCall.direction == 'Outbound' && inboundCall.direction == 'Inbound' && // Check that start times are equal or close enough\n (!inboundCall.startTime && !outboundRingOutCall.startTime || Math.abs(getTime(inboundCall.startTime) - getTime(outboundRingOutCall.startTime)) < (options.maxStartTimeDiscrepancy || 5000)) && // Check that numbers match\n inboundCall.from.phoneNumber == outboundRingOutCall.to.phoneNumber && (inboundCall.to.phoneNumber == outboundRingOutCall.from.phoneNumber || inboundCall.to.name == outboundRingOutCall.from.name) //TODO Maybe name check is not required\n;\n };\n /**\n * @param {ICall} outboundRingOutCall\n * @param {ICall} inboundCall\n * @param {ICallProcessingOptions} [options]\n * @returns {Array}\n */\n CallHelper.prototype.combineCalls = function (outboundRingOutCall, inboundCall, options) {\n options = options || {};\n var result = [];\n outboundRingOutCall.hasSubsequent = true;\n if (options.merge) {\n outboundRingOutCall.duration = outboundRingOutCall.duration > inboundCall.duration ? outboundRingOutCall.duration : inboundCall.duration;\n // TODO Usually information from inbound call is more accurate for unknown reason\n outboundRingOutCall.from = inboundCall.to;\n outboundRingOutCall.to = inboundCall.from;\n // Push only one \"merged\" outbound call\n result.push(outboundRingOutCall);\n } else {\n // Mark next call as subsequent\n inboundCall.subsequent = true;\n inboundCall.startTime = outboundRingOutCall.startTime;\n // Needed for sort\n // Push both calls, first outbound then inbound\n result.push(outboundRingOutCall);\n result.push(inboundCall);\n }\n return result;\n };\n /**\n * (!) Experimental (!)\n *\n * Calls in Recent Calls (Call Log) or Active Calls arrays can be combined if they are, for example, two legs of\n * one RingOut. The logic that stands behind this process is simple:\n *\n * - Calls must have opposite directions\n * - Must have been started within a certain limited time frame\n * - Must have same phone numbers in their Caller Info sections (from/to)\n *\n * ```js\n * var processedCalls = Call.processCalls(callsArray, {strict: false, merge: true});\n * ```\n *\n * Flags:\n *\n * - if `strict` is `true` then only calls with RingOut in `action` property will be affected\n * - `merge` — controls whether to merge calls (reducing the length of array) or give them `subsequent`\n * and `hasSubsequent` properties\n *\n * @param {ICall[]} calls\n * @param {ICallProcessingOptions} options\n * @returns {ICall[]}\n */\n CallHelper.prototype.processCalls = function (calls, options) {\n var processedCalls = [], callsToMerge = [], self = this;\n // Iterate through calls\n calls.forEach(function (call) {\n var merged = false;\n call.subsequent = false;\n call.hasSubsequent = false;\n // Second cycle to find other leg\n // It is assumed that call is the outbound, secondCall is inbound\n calls.some(function (secondCall) {\n if (call === secondCall)\n return false;\n if (self.checkMergeability(call, secondCall, options)) {\n // Push to result array merged call\n processedCalls = processedCalls.concat(self.combineCalls(call, secondCall, options));\n // Push to array calls that are merged\n callsToMerge.push(call);\n callsToMerge.push(secondCall);\n merged = true;\n }\n return merged;\n });\n });\n // After all calls are merged, add non-merged calls\n calls.forEach(function (call) {\n if (callsToMerge.indexOf(call) == -1)\n processedCalls.push(call);\n });\n return processedCalls;\n };\n /**\n * Converts Presence's ActiveCall array into regular Calls array\n * @param {IPresenceCall[]} activeCalls\n * @returns {ICall[]}\n */\n CallHelper.prototype.parsePresenceCalls = function (activeCalls) {\n return activeCalls.map(function (activeCall) {\n return {\n id: activeCall.id,\n uri: '',\n sessionId: activeCall.sessionId,\n from: { phoneNumber: activeCall.from },\n to: { phoneNumber: activeCall.to },\n direction: activeCall.direction,\n startTime: '',\n duration: 0,\n type: '',\n action: '',\n result: this.presence.isCallInProgress(activeCall) ? 'In Progress' : activeCall.telephonyStatus,\n telephonyStatus: activeCall.telephonyStatus\n };\n }, this);\n };\n /**\n * @param {ICall} call\n * @returns {string}\n */\n CallHelper.prototype.getSignature = function (call) {\n function cleanup(phoneNumber) {\n return (phoneNumber || '').toString().replace(/[^0-9]/gi, '');\n }\n return call.direction + '|' + (call.from && cleanup(call.from.phoneNumber)) + '|' + (call.to && cleanup(call.to.phoneNumber));\n };\n /**\n * @param {ICall[]} presenceCalls\n * @param {IPresence} presence\n * @returns {ICall[]}\n */\n CallHelper.prototype.mergePresenceCalls = function (presenceCalls, presence) {\n var currentDate = new Date(), activeCalls = this.parsePresenceCalls(presence && presence.activeCalls || []).map(function (call) {\n // delete property to make sure it is skipped during merge\n delete call.startTime;\n return call;\n });\n presenceCalls = this.merge(presenceCalls || [], activeCalls, this.getSessionId, true);\n presenceCalls.forEach(function (call) {\n if (!call.startTime)\n call.startTime = currentDate.toISOString();\n });\n return presenceCalls;\n };\n /**\n * @param {ICall[]} presenceCalls\n * @param {ICall[]} calls\n * @param {ICall[]} activeCalls\n * @returns {ICall[]}\n */\n CallHelper.prototype.mergeAll = function (presenceCalls, calls, activeCalls) {\n // First, merge calls into presence calls\n var presenceAndCalls = this.merge(presenceCalls || [], calls || [], this.getSessionId, true);\n // Second, merge activeCalls into previous result\n return this.merge(presenceAndCalls, activeCalls || [], this.getSessionId, true);\n };\n module.exports = {\n Class: CallHelper,\n /**\n * @param {Context} context\n * @returns {CallHelper}\n */\n $get: function (context) {\n return context.createSingleton('CallHelper', function () {\n return new CallHelper(context);\n });\n }\n }; /**\n * @typedef {object} ICall\n * @property {string} id\n * @property {string} uri\n * @property {string} sessionId\n * @property {string} startTime\n * @property {string} duration\n * @property {string} type\n * @property {string} direction\n * @property {string} action\n * @property {string} result\n * @property {ICallerInfo} to\n * @property {ICallerInfo} from\n */\n /**\n * @typedef {object} ICallOptions\n * @property {string} extensionId\n * @property {boolean} active\n * @property {boolean} personal\n */\n /**\n * @typedef {object} ICallProcessingOptions\n * @property {boolean} strict\n * @property {boolean} merge\n * @property {number} maxStartTimeDiscrepancy\n */\n /**\n * @typedef {object} ICallFilterOptions\n * @property {string} extensionId\n * @property {string} direction\n * @property {string} type\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/latest/webhelp/dev_guide_advanced/CallerInfo.html\n * @typedef {Object} ICallerInfo\n * @property {string} phoneNumber\n * @property {string} extensionNumber\n * @property {string} name\n * @property {string} location\n * @property {IContact} [contact] - corresponding contact (added by attachContacts methods)\n * @property {string} [contactPhone] - contact's phone as written in contact (added by attachContacts methods)\n */\n});","define('helpers/Conferencing', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ConferencingHelper(context) {\n Helper.call(this, context);\n }\n ConferencingHelper.prototype = Object.create(Helper.prototype);\n ConferencingHelper.prototype.createUrl = function () {\n return '/account/~/extension/~/conferencing';\n };\n module.exports = {\n Class: ConferencingHelper,\n /**\n * @param {Context} context\n * @returns {ConferencingHelper}\n */\n $get: function (context) {\n return context.createSingleton('ConferencingHelper', function () {\n return new ConferencingHelper(context);\n });\n }\n };\n});","define('helpers/ContactGroup', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function ContactGroupHelper(context) {\n Helper.call(this, context);\n }\n ContactGroupHelper.prototype = Object.create(Helper.prototype);\n ContactGroupHelper.prototype.createUrl = function (options, id) {\n return '/account/~/extension/~/address-book/group' + (id ? '/' + id : '');\n };\n /**\n * @param {IContactGroup} item\n */\n ContactGroupHelper.prototype.validate = function (item) {\n return Validator.validate([{\n field: 'groupName',\n validator: Validator.required(item && item.groupName)\n }]);\n };\n module.exports = {\n Class: ContactGroupHelper,\n /**\n * @param {Context} context\n * @returns {ContactGroupHelper}\n */\n $get: function (context) {\n return context.createSingleton('ContactGroupHelper', function () {\n return new ContactGroupHelper(context);\n });\n }\n }; /**\n * @typedef {object} IContactGroup\n * @property {string} id\n * @property {string} uri\n * @property {string} notes\n * @property {string} groupName\n * @property {number} contactsCount\n */\n});","define('helpers/Device', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'helpers/Extension',\n 'helpers/DeviceModel'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function DeviceHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n this.deviceModel = require('./DeviceModel').$get(context);\n }\n DeviceHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IDeviceOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n DeviceHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (options.order)\n return '/account/~/order';\n return '/account/~' + (options.extensionId ? '/extension/' + options.extensionId : '') + '/device' + (id ? '/' + id : '');\n };\n /**\n * @param {IDevice} item\n */\n DeviceHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'emergencyServiceAddress-street',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.street)\n },\n {\n field: 'emergencyServiceAddress-city',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.city)\n },\n {\n field: 'emergencyServiceAddress-state',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.state)\n },\n {\n field: 'emergencyServiceAddress-country',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.country)\n },\n {\n field: 'emergencyServiceAddress-zip',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.zip)\n },\n {\n field: 'emergencyServiceAddress-customerName',\n validator: Validator.required(item && item.emergencyServiceAddress && item.emergencyServiceAddress.customerName)\n },\n {\n field: 'extension',\n validator: Validator.required(this.extension.getId(item && item.extension))\n },\n {\n field: 'model',\n validator: Validator.required(this.deviceModel.getId(item && item.model))\n }\n ]);\n };\n module.exports = {\n Class: DeviceHelper,\n /**\n * @param {Context} context\n * @returns {DeviceHelper}\n */\n $get: function (context) {\n return context.createSingleton('DeviceHelper', function () {\n return new DeviceHelper(context);\n });\n }\n }; /**\n * @typedef {Object} IDevice\n * @property {string} id\n * @property {string} uri\n * @property {string} type\n * @property {string} name\n * @property {string} serial\n * @property {IDeviceModel} model\n * @property {IExtensionShort} extension TODO IExtension?\n * @property {IDeviceAddress} emergencyServiceAddress\n * @property {IDeviceShipping} shipping\n * @property {IDevicePhoneLine[]} phoneLines\n */\n /**\n * @typedef {Object} IDeviceOrder\n * @property {IDevice[]} devices\n */\n /**\n * @typedef {Object} IDeviceAddress\n * @property {string} street\n * @property {string} street2\n * @property {string} city\n * @property {string} state\n * @property {string} country\n * @property {string} zip\n * @property {string} customerName\n */\n /**\n * @typedef {Object} IDeviceShipping\n * @property {IDeviceAddress} address\n * @property {IShippingMethod} method\n * @property {string} status\n */\n /**\n * @typedef {Object} IDevicePhoneLine\n * @property {string} lineType\n * @property {IPhoneNumber} phoneInfo\n */\n /**\n * @typedef {Object} IDeviceOptions\n * @property {string} extensionId\n */\n});","define('helpers/ForwardingNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Utils',\n 'core/List'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function ForwardingNumberHelper(context) {\n Helper.call(this, context);\n }\n ForwardingNumberHelper.prototype = Object.create(Helper.prototype);\n ForwardingNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId || '~') + '/forwarding-number' + (id ? '/' + id : '');\n };\n ForwardingNumberHelper.prototype.getId = function (forwardingNumber) {\n return forwardingNumber.id || forwardingNumber.phoneNumber;\n };\n ForwardingNumberHelper.prototype.hasFeature = function (phoneNumber, feature) {\n return !!phoneNumber.features && phoneNumber.features.indexOf(feature) != -1;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n ForwardingNumberHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'label' }, options));\n };\n /**\n * @param options\n * @returns {function(IForwardingNumber)}\n */\n ForwardingNumberHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({ features: [] }, options);\n return List.filter([{\n condition: options.features.length,\n filterFn: function (item) {\n return options.features.some(function (feature) {\n return self.hasFeature(item, feature);\n });\n }\n }]);\n };\n module.exports = {\n Class: ForwardingNumberHelper,\n /**\n * @param {Context} context\n * @returns {ForwardingNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('ForwardingNumberHelper', function () {\n return new ForwardingNumberHelper(context);\n });\n }\n }; /**\n *\n * @typedef {object} IForwardingNumber\n * @property {string} id\n * @property {string} uri\n * @property {string} label\n * @property {string} phoneNumber\n * @property {string} flipNumber\n */\n});","define('helpers/Message', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'core/Utils',\n 'core/List',\n 'core/Platform',\n 'helpers/Contact',\n 'core/Subscription'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator'), Utils = require('../core/Utils'), List = require('../core/List');\n /**\n * @extends Helper\n * @constructor\n */\n function MessageHelper(context) {\n Helper.call(this, context);\n this.platform = require('../core/Platform').$get(context);\n this.contact = require('./Contact').$get(context);\n }\n MessageHelper.prototype = Object.create(Helper.prototype);\n /**\n *\n * @param {IMessageOptions} [options]\n * @param {string} [id]\n * @returns {string}\n * @exceptionalCase Different endpoint when creating SMS/Pager\n */\n MessageHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n var root = '/account/~/extension/' + (options.extensionId || '~');\n if (options.fax)\n return root + '/fax';\n if (options.sms)\n return root + '/sms';\n if (options.pager)\n return root + '/company-pager';\n if (options.sync)\n return root + '/message-sync';\n return root + '/message-store' + (id ? '/' + id : '');\n };\n MessageHelper.prototype.isInbound = function (message) {\n return message && message.direction == 'Inbound';\n };\n MessageHelper.prototype.isOutbound = function (message) {\n return !this.isInbound(message);\n };\n MessageHelper.prototype.isSMS = function (message) {\n return message && message.type == 'SMS';\n };\n MessageHelper.prototype.isPager = function (message) {\n return message && message.type == 'Pager';\n };\n MessageHelper.prototype.isVoiceMail = function (message) {\n return message && message.type == 'VoiceMail';\n };\n MessageHelper.prototype.isFax = function (message) {\n return message && message.type == 'Fax';\n };\n MessageHelper.prototype.isAlive = function (message) {\n //return (this.availability != 'Deleted' && this.availability != 'Purged');\n return message && message.availability == 'Alive';\n };\n MessageHelper.prototype.isRead = function (message) {\n return message.readStatus == 'Read';\n };\n MessageHelper.prototype.setIsRead = function (message, isRead) {\n message.readStatus = !!isRead ? 'Read' : 'Unread';\n return message;\n };\n MessageHelper.prototype.getAttachmentUrl = function (message, i) {\n return message.attachments[i] ? this.platform.apiUrl(message.attachments[i].uri, {\n addMethod: 'GET',\n addServer: true,\n addToken: true\n }) : '';\n };\n MessageHelper.prototype.getAttachmentContentType = function (message, i) {\n return message.attachments[i] ? message.attachments[i].contentType : '';\n };\n /**\n * @returns {Subscription}\n */\n MessageHelper.prototype.getSubscription = function (options) {\n return require('../core/Subscription').$get(this.context).setEvents([this.createUrl(options)]);\n };\n /**\n * Returns from-phones if inbound (oterwise to-phones)\n * @returns {ICallerInfo[]}\n */\n MessageHelper.prototype.getCallerInfos = function (message) {\n return this.isInbound(message) ? [message.from] : message.to;\n };\n /**\n * Returns first from-phones if inbound (oterwise to-phones), then vice-versa\n * @returns {ICallerInfo[]}\n */\n MessageHelper.prototype.getAllCallerInfos = function (message) {\n return this.getCallerInfos(message).concat(this.isInbound(message) ? message.to : [message.from]);\n };\n /**\n * TODO Compare as dates\n * @param {IListComparatorOptions} [options]\n * @returns {function(object, object)}\n */\n MessageHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({ sortBy: 'creationTime' }, options));\n };\n /**\n * @param {IMessageFilterOptions} [options]\n * @returns {function(IMessage)}\n */\n MessageHelper.prototype.filter = function (options) {\n options = Utils.extend({\n search: '',\n alive: true,\n direction: '',\n conversationId: '',\n readStatus: ''\n }, options);\n return List.filter([\n {\n condition: options.alive,\n filterFn: this.isAlive\n },\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n filterBy: 'direction',\n condition: options.direction\n },\n {\n filterBy: 'conversationId',\n condition: options.conversationId\n },\n {\n filterBy: 'readStatus',\n condition: options.readStatus\n },\n {\n filterBy: 'subject',\n condition: options.search,\n filterFn: List.containsFilter\n }\n ]);\n };\n /**\n * Injects contact field with appropriate {IContact} data structure into all callerInfos found in all messages\n * Warning, this function may be performance-consuming, reduce the amount of items passed to contacts and messages\n * @param {IContact[]} contacts\n * @param {IMessage[]} messages\n * @param {IContactMatchOptions} [options]\n */\n MessageHelper.prototype.attachContacts = function (contacts, messages, options) {\n var self = this;\n // Flatten all caller infos from all messages\n var callerInfos = messages.reduce(function (callerInfos, message) {\n return callerInfos.concat(self.getAllCallerInfos(message));\n }, []);\n this.contact.attachToCallerInfos(callerInfos, contacts, options);\n };\n /**\n *\n * @param message\n * @returns {IMessageShort}\n */\n MessageHelper.prototype.shorten = function (message) {\n return {\n from: message.from,\n to: message.to,\n text: message.subject\n };\n };\n /**\n * @param {IMessage} item\n */\n MessageHelper.prototype.validateSMS = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(Utils.getProperty(item, 'to[0].phoneNumber'))\n },\n {\n field: 'from',\n validator: Validator.required(Utils.getProperty(item, 'from.phoneNumber'))\n },\n {\n field: 'subject',\n validator: Validator.required(Utils.getProperty(item, 'subject'))\n },\n {\n field: 'subject',\n validator: Validator.length(Utils.getProperty(item, 'subject'), 160)\n }\n ]);\n };\n /**\n * @param {IMessage} item\n */\n MessageHelper.prototype.validatePager = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(Utils.getProperty(item, 'to.extensionNumber'))\n },\n {\n field: 'from',\n validator: Validator.required(Utils.getProperty(item, 'from.extensionNumber'))\n },\n {\n field: 'subject',\n validator: Validator.required(Utils.getProperty(item, 'subject'))\n },\n {\n field: 'subject',\n validator: Validator.length(Utils.getProperty(item, 'subject'), 160)\n }\n ]);\n };\n module.exports = {\n Class: MessageHelper,\n /**\n * @param {Context} context\n * @returns {MessageHelper}\n */\n $get: function (context) {\n return context.createSingleton('MessageHelper', function () {\n return new MessageHelper(context);\n });\n }\n }; /**\n * @typedef {object} IMessage\n * @property {string} id\n * @property {string} uri\n * @property {ICallerInfo[]} to\n * @property {ICallerInfo} from\n * @property {string} type\n * @property {string} creationTime\n * @property {string} readStatus\n * @property {string} priority\n * @property {IMessageAttachment} attachments\n * @property {string} direction\n * @property {string} availability\n * @property {string} subject\n * @property {string} messageStatus\n * @property {string} conversationId\n * @property {string} lastModifiedTime\n */\n /**\n * @typedef {object} IMessageShort\n * @property {ICallerInfo[]} to\n * @property {ICallerInfo} from\n * @property {string} text\n */\n /**\n * @typedef {object} IMessageOptions\n * @property {boolean} fax\n * @property {boolean} sync\n * @property {boolean} sms\n * @property {boolean} pager\n * @property {string} extensionId\n */\n /**\n * @typedef {object} IMessageFilterOptions\n * @property {boolean} alive\n * @property {string} conversationId\n * @property {string} direction\n * @property {string} readStatus\n * @property {string} type\n */\n /**\n * @typedef {object} IMessageFaxAttachment\n * @property {string} contentType\n * @property {string} content\n * @property {string} fileName\n */\n /**\n * @see http://platform-dev.dins.ru/artifacts/documentation/webhelp/dev_guide/content/ch18s01.html#MessageAttachmentInfo\n * @typedef {Object} IMessageAttachment\n * @property {string} id\n * @property {string} uri\n * @property {string} contentType\n * @property {string} vmDuration\n */\n});","define('helpers/PhoneNumber', [\n 'require',\n 'exports',\n 'module',\n 'core/List',\n 'core/Utils',\n 'core/Helper',\n 'helpers/Extension'\n], function (require, exports, module) {\n 'use strict';\n var List = require('../core/List'), Utils = require('../core/Utils'), Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function PhoneNumberHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n PhoneNumberHelper.prototype = Object.create(Helper.prototype);\n /**\n * @param {IPhoneNumberOptions} [options]\n * @param {string} [id]\n * @returns {string}\n */\n PhoneNumberHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n if (options.lookup)\n return '/number-pool/lookup';\n return '/account/~' + (options.extensionId ? '/extension/' + options.extensionId : '') + '/phone-number' + (id ? '/' + id : '');\n };\n PhoneNumberHelper.prototype.isSMS = function (phoneNumber) {\n return this.hasFeature(phoneNumber, 'SmsSender');\n };\n PhoneNumberHelper.prototype.hasFeature = function (phoneNumber, feature) {\n return !!phoneNumber.features && phoneNumber.features.indexOf(feature) != -1;\n };\n PhoneNumberHelper.prototype.reserve = function (phoneNumber, date) {\n phoneNumber.reservedTill = new Date(date).toISOString();\n };\n PhoneNumberHelper.prototype.unreserve = function (phoneNumber) {\n phoneNumber.reservedTill = null;\n };\n /**\n * @param {IListComparatorOptions} [options]\n * @returns {function(IPhoneNumber, IPhoneNumber)}\n */\n PhoneNumberHelper.prototype.comparator = function (options) {\n return List.comparator(Utils.extend({\n /**\n * @param {IPhoneNumber} item\n * @returns {string}\n */\n extractFn: function (item) {\n return item.usageType + '-' + item.paymentType + '-' + item.type;\n }\n }, options));\n };\n /**\n * TODO Add other filtering methods http://jira.ringcentral.com/browse/SDK-5\n * @param {IPhoneNumberFilterOptions} options\n * @returns {function(IForwardingNumber)}\n */\n PhoneNumberHelper.prototype.filter = function (options) {\n var self = this;\n options = Utils.extend({\n usageType: '',\n paymentType: '',\n type: '',\n features: []\n }, options);\n return List.filter([\n {\n filterBy: 'usageType',\n condition: options.usageType\n },\n {\n filterBy: 'paymentType',\n condition: options.paymentType\n },\n {\n filterBy: 'type',\n condition: options.type\n },\n {\n condition: options.features.length,\n filterFn: function (item) {\n return options.features.some(function (feature) {\n return self.hasFeature(item, feature);\n });\n }\n }\n ]);\n };\n module.exports = {\n Class: PhoneNumberHelper,\n /**\n * @param {Context} context\n * @returns {PhoneNumberHelper}\n */\n $get: function (context) {\n return context.createSingleton('PhoneNumberHelper', function () {\n return new PhoneNumberHelper(context);\n });\n }\n }; /**\n * @typedef {object} IPhoneNumber\n * @property {string} id\n * @property {string} uri\n * @property {string} phoneNumber\n * @property {string} paymentType - External, TollFree, Local\n * @property {string} location\n * @property {string} type - VoiceFax, FaxOnly, VoiceOnly\n * @property {string} usageType - CompanyNumber, DirectNumber, CompanyFaxNumber, ForwardedNumber\n * @property {array} features - CallerId, SmsSender\n * @property {string} reservedTill - Date\n * @property {string} error\n */\n /**\n * @typedef {object} IPhoneNumberOptions\n * @property {string} extensionId\n * @property {true} lookup\n * @property {string} countryId\n * @property {string} paymentType\n * @property {string} npa\n * @property {string} nxx\n * @property {string} line\n * @property {string} exclude\n */\n /**\n * @typedef {object} IPhoneNumberFilterOptions\n * @property {string} paymentType\n * @property {string} usageType\n * @property {string} type\n * @property {string[]} features\n */\n /**\n * @typedef {object} IPhoneNumberOrder\n * @property {IPhoneNumber[]} records\n */\n});","define('helpers/Ringout', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper',\n 'core/Validator',\n 'helpers/Extension'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class, Validator = require('../core/Validator');\n /**\n * @extends Helper\n * @constructor\n */\n function RingoutHelper(context) {\n Helper.call(this, context);\n this.extension = require('./Extension').$get(context);\n }\n RingoutHelper.prototype = Object.create(Helper.prototype);\n RingoutHelper.prototype.createUrl = function (options, id) {\n options = options || {};\n return '/account/~/extension/' + (options.extensionId || '~') + '/ringout' + (id ? '/' + id : '');\n };\n RingoutHelper.prototype.resetAsNew = function (object) {\n object = Helper.prototype.resetAsNew.call(this, object);\n if (object) {\n delete object.status;\n }\n return object;\n };\n RingoutHelper.prototype.isInProgress = function (ringout) {\n return ringout && !this.isNew(ringout) && ringout.status && ringout.status.callStatus == 'InProgress';\n };\n RingoutHelper.prototype.isSuccess = function (ringout) {\n return ringout && !this.isNew(ringout) && ringout.status && ringout.status.callStatus == 'Success';\n };\n RingoutHelper.prototype.isError = function (ringout) {\n return !this.isNew(ringout) && !this.isInProgress(ringout) && !this.isSuccess(ringout);\n };\n /**\n * @param {IRingout} item\n */\n RingoutHelper.prototype.validate = function (item) {\n return Validator.validate([\n {\n field: 'to',\n validator: Validator.required(item && item.to && item.to.phoneNumber)\n },\n {\n field: 'from',\n validator: Validator.required(item && item.from && item.from.phoneNumber)\n }\n ]);\n };\n module.exports = {\n Class: RingoutHelper,\n /**\n * @param {Context} context\n * @returns {RingoutHelper}\n */\n $get: function (context) {\n return context.createSingleton('RingoutHelper', function () {\n return new RingoutHelper(context);\n });\n }\n }; /**\n * @typedef {object} IRingout\n * @property {ICallerInfo} [from] (!) ONLY PHONE NUMBER\n * @property {ICallerInfo} [to] (!) ONLY PHONE NUMBER\n * @property {ICallerInfo} [callerId] (!) ONLY PHONE NUMBER\n * @property {boolean} [playPrompt]\n * @property {{callStatus:boolean, callerStatus:boolean, calleeStatus:boolean}} [status]\n */\n});","define('helpers/Service', [\n 'require',\n 'exports',\n 'module',\n 'core/Helper'\n], function (require, exports, module) {\n 'use strict';\n var Helper = require('../core/Helper').Class;\n /**\n * @extends Helper\n * @constructor\n */\n function ServiceHelper(context) {\n Helper.call(this, context);\n }\n ServiceHelper.prototype = Object.create(Helper.prototype);\n ServiceHelper.prototype.createUrl = function () {\n return '/account/~/service-info';\n };\n /**\n * @param {string} feature\n * @param {IServiceFeature[]} serviceFeatures\n * @returns {*}\n */\n ServiceHelper.prototype.isEnabled = function (feature, serviceFeatures) {\n return serviceFeatures.reduce(function (value, f) {\n if (f.featureName == feature)\n value = f.enabled;\n return value;\n }, false);\n };\n ServiceHelper.prototype.isSmsEnabled = isServiceFeatureEnabledMethod('SMS');\n ServiceHelper.prototype.isSmsReceivingEnabled = isServiceFeatureEnabledMethod('SMSReceiving');\n ServiceHelper.prototype.isPresenceEnabled = isServiceFeatureEnabledMethod('Presence');\n ServiceHelper.prototype.isRingOutEnabled = isServiceFeatureEnabledMethod('RingOut');\n ServiceHelper.prototype.isInternationalCallingEnabled = isServiceFeatureEnabledMethod('InternationalCalling');\n ServiceHelper.prototype.isDndEnabled = isServiceFeatureEnabledMethod('DND');\n ServiceHelper.prototype.isFaxEnabled = isServiceFeatureEnabledMethod('Fax');\n ServiceHelper.prototype.isFaxReceivingEnabled = isServiceFeatureEnabledMethod('FaxReceiving');\n ServiceHelper.prototype.isVoicemailEnabled = isServiceFeatureEnabledMethod('Voicemail');\n ServiceHelper.prototype.isPagerEnabled = isServiceFeatureEnabledMethod('Pager');\n ServiceHelper.prototype.isPagerReceivingEnabled = isServiceFeatureEnabledMethod('PagerReceiving');\n ServiceHelper.prototype.isVoipCallingEnabled = isServiceFeatureEnabledMethod('VoipCalling');\n ServiceHelper.prototype.isVideoConferencingEnabled = isServiceFeatureEnabledMethod('VideoConferencing');\n ServiceHelper.prototype.isSalesForceEnabled = isServiceFeatureEnabledMethod('SalesForce');\n ServiceHelper.prototype.isIntercomEnabled = isServiceFeatureEnabledMethod('Intercom');\n ServiceHelper.prototype.isPagingEnabled = isServiceFeatureEnabledMethod('Paging');\n ServiceHelper.prototype.isConferencingEnabled = isServiceFeatureEnabledMethod('Conferencing');\n ServiceHelper.prototype.isFreeSoftPhoneLinesEnabled = isServiceFeatureEnabledMethod('FreeSoftPhoneLines');\n ServiceHelper.prototype.isHipaaComplianceEnabled = isServiceFeatureEnabledMethod('HipaaCompliance');\n ServiceHelper.prototype.isCallParkEnabled = isServiceFeatureEnabledMethod('CallPark');\n ServiceHelper.prototype.isOnDemandCallRecordingEnabled = isServiceFeatureEnabledMethod('OnDemandCallRecording');\n function isServiceFeatureEnabledMethod(feature) {\n return function (serviceFeatures) {\n return this.isEnabled(feature, serviceFeatures);\n };\n }\n module.exports = {\n Class: ServiceHelper,\n /**\n * @param {Context} context\n * @returns {ServiceHelper}\n */\n $get: function (context) {\n return context.createSingleton('serviceHelper', function () {\n return new ServiceHelper(context);\n });\n }\n }; /**\n * @typedef {object} IServiceFeature\n * @property {string} featureName\n * @property {boolean} enabled\n */\n /**\n * @typedef {object} IService\n * @property {IServiceFeature[]} serviceFeatures\n * @property {string} servicePlanName\n */\n});","define('RCSDK', [\n 'require',\n 'exports',\n 'module',\n 'core/Context',\n 'core/Ajax',\n 'core/AjaxObserver',\n 'core/xhr/XhrResponse',\n 'core/Platform',\n 'core/Cache',\n 'core/Subscription',\n 'core/PageVisibility',\n 'core/Helper',\n 'core/Observable',\n 'core/Validator',\n 'core/Log',\n 'core/Utils',\n 'core/List',\n 'helpers/Country',\n 'helpers/DeviceModel',\n 'helpers/Language',\n 'helpers/Location',\n 'helpers/ShippingMethod',\n 'helpers/State',\n 'helpers/Timezone',\n 'helpers/Account',\n 'helpers/BlockedNumber',\n 'helpers/Call',\n 'helpers/Conferencing',\n 'helpers/Contact',\n 'helpers/ContactGroup',\n 'helpers/Device',\n 'helpers/Extension',\n 'helpers/ForwardingNumber',\n 'helpers/Message',\n 'helpers/PhoneNumber',\n 'helpers/Presence',\n 'helpers/Ringout',\n 'helpers/Service'\n], function (require, exports, module) {\n 'use strict';\n /**\n * @param {IInjections} injections\n * @returns {RCSDK}\n */\n module.exports = function (injections) {\n /**\n * @name RCSDK\n * @constructor\n */\n function RCSDK(options) {\n /** @private */\n this._context = require('./core/Context').$get(injections); //TODO Link Platform events with Subscriptions and the rest\n }\n RCSDK.version = '1.1.2';\n // Internals\n /**\n * @returns {Context}\n */\n RCSDK.prototype.getContext = function () {\n return this._context;\n };\n // Core\n /**\n */\n RCSDK.prototype.getAjax = function () {\n return require('./core/Ajax').$get(this.getContext());\n };\n /**\n * @returns {AjaxObserver}\n */\n RCSDK.prototype.getAjaxObserver = function () {\n return require('./core/AjaxObserver').$get(this.getContext());\n };\n /**\n * @returns {XhrResponse}\n */\n RCSDK.prototype.getXhrResponse = function () {\n return require('./core/xhr/XhrResponse').$get(this.getContext());\n };\n /**\n * @returns {Platform}\n */\n RCSDK.prototype.getPlatform = function () {\n return require('./core/Platform').$get(this.getContext());\n };\n /**\n * @returns {Cache}\n */\n RCSDK.prototype.getCache = function () {\n return require('./core/Cache').$get(this.getContext());\n };\n /**\n * @returns {Subscription}\n */\n RCSDK.prototype.getSubscription = function () {\n return require('./core/Subscription').$get(this.getContext());\n };\n /**\n * @returns {PageVisibility}\n */\n RCSDK.prototype.getPageVisibility = function () {\n return require('./core/PageVisibility').$get(this.getContext());\n };\n /**\n * @returns {Helper}\n */\n RCSDK.prototype.getHelper = function () {\n return require('./core/Helper').$get(this.getContext());\n };\n /**\n * @returns {Observable}\n */\n RCSDK.prototype.getObservable = function () {\n return require('./core/Observable').$get(this.getContext());\n };\n /**\n * @returns {Validator}\n */\n RCSDK.prototype.getValidator = function () {\n return require('./core/Validator').$get(this.getContext());\n };\n /**\n * @returns {Log}\n */\n RCSDK.prototype.getLog = function () {\n return require('./core/Log').$get(this.getContext());\n };\n /**\n * @returns {Utils}\n */\n RCSDK.prototype.getUtils = function () {\n return require('./core/Utils').$get(this.getContext());\n };\n /**\n * @returns {List}\n */\n RCSDK.prototype.getList = function () {\n return require('./core/List').$get(this.getContext());\n };\n // Helpers\n /**\n * @returns {CountryHelper}\n */\n RCSDK.prototype.getCountryHelper = function () {\n return require('./helpers/Country').$get(this.getContext());\n };\n /**\n * @returns {DeviceModelHelper}\n */\n RCSDK.prototype.getDeviceModelHelper = function () {\n return require('./helpers/DeviceModel').$get(this.getContext());\n };\n /**\n * @returns {LanguageHelper}\n */\n RCSDK.prototype.getLanguageHelper = function () {\n return require('./helpers/Language').$get(this.getContext());\n };\n /**\n * @returns {LocationHelper}\n */\n RCSDK.prototype.getLocationHelper = function () {\n return require('./helpers/Location').$get(this.getContext());\n };\n /**\n * @returns {ShippingMethodHelper}\n */\n RCSDK.prototype.getShippingMethodHelper = function () {\n return require('./helpers/ShippingMethod').$get(this.getContext());\n };\n /**\n * @returns {StateHelper}\n */\n RCSDK.prototype.getStateHelper = function () {\n return require('./helpers/State').$get(this.getContext());\n };\n /**\n * @returns {TimezoneHelper}\n */\n RCSDK.prototype.getTimezoneHelper = function () {\n return require('./helpers/Timezone').$get(this.getContext());\n };\n /**\n * @returns {AccountHelper}\n */\n RCSDK.prototype.getAccountHelper = function () {\n return require('./helpers/Account').$get(this.getContext());\n };\n /**\n * @returns {BlockedNumberHelper}\n */\n RCSDK.prototype.getBlockedNumberHelper = function () {\n return require('./helpers/BlockedNumber').$get(this.getContext());\n };\n /**\n * @returns {CallHelper}\n */\n RCSDK.prototype.getCallHelper = function () {\n return require('./helpers/Call').$get(this.getContext());\n };\n /**\n * @returns {ConferencingHelper}\n */\n RCSDK.prototype.getConferencingHelper = function () {\n return require('./helpers/Conferencing').$get(this.getContext());\n };\n /**\n * @returns {ContactHelper}\n */\n RCSDK.prototype.getContactHelper = function () {\n return require('./helpers/Contact').$get(this.getContext());\n };\n /**\n * @returns {ContactGroupHelper}\n */\n RCSDK.prototype.getContactGroupHelper = function () {\n return require('./helpers/ContactGroup').$get(this.getContext());\n };\n /**\n * @returns {DeviceHelper}\n */\n RCSDK.prototype.getDeviceHelper = function () {\n return require('./helpers/Device').$get(this.getContext());\n };\n /**\n * @returns {ExtensionHelper}\n */\n RCSDK.prototype.getExtensionHelper = function () {\n return require('./helpers/Extension').$get(this.getContext());\n };\n /**\n * @returns {ForwardingNumberHelper}\n */\n RCSDK.prototype.getForwardingNumberHelper = function () {\n return require('./helpers/ForwardingNumber').$get(this.getContext());\n };\n /**\n * @returns {MessageHelper}\n */\n RCSDK.prototype.getMessageHelper = function () {\n return require('./helpers/Message').$get(this.getContext());\n };\n /**\n * @returns {PhoneNumberHelper}\n */\n RCSDK.prototype.getPhoneNumberHelper = function () {\n return require('./helpers/PhoneNumber').$get(this.getContext());\n };\n /**\n * @returns {PresenceHelper}\n */\n RCSDK.prototype.getPresenceHelper = function () {\n return require('./helpers/Presence').$get(this.getContext());\n };\n /**\n * @returns {RingoutHelper}\n */\n RCSDK.prototype.getRingoutHelper = function () {\n return require('./helpers/Ringout').$get(this.getContext());\n };\n /**\n * @returns {ServiceHelper}\n */\n RCSDK.prototype.getServiceHelper = function () {\n return require('./helpers/Service').$get(this.getContext());\n };\n /** @type {window} */\n var root = new Function('return this')();\n function getXHR() {\n return root.XMLHttpRequest || function () {\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch (e1) {\n }\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch (e2) {\n }\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch (e3) {\n }\n throw new Error('This browser does not support XMLHttpRequest.');\n };\n }\n function getCryptoJS() {\n return root.CryptoJS || typeof CryptoJS !== 'undefined' && CryptoJS;\n }\n function getLocalStorage() {\n return root.localStorage;\n }\n function getPUBNUB() {\n return root.PUBNUB || typeof PUBNUB !== 'undefined' && PUBNUB;\n }\n function getPromise() {\n return root.Promise;\n }\n injections = injections || {};\n injections.CryptoJS = injections.CryptoJS || getCryptoJS();\n injections.localStorage = injections.localStorage || getLocalStorage();\n injections.Promise = injections.Promise || getPromise();\n injections.PUBNUB = injections.PUBNUB || getPUBNUB();\n injections.XHR = injections.XHR || getXHR();\n return RCSDK;\n }; /**\n * @typedef {Object} IInjections\n * @property {PUBNUB} PUBNUB\n * @property {CryptoJS} CryptoJS\n * @property {Storage} localStorage\n * @property {XMLHttpRequest} XHR\n * @property {Promise} Promise\n */\n});","(function() {\n\n if (typeof exports !== 'undefined') { // NodeJS\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = RCSDK({\n CryptoJS: require('crypto-js'),\n localStorage: new (require('dom-storage'))(),\n Promise: require('es6-promise').Promise,\n PUBNUB: require('pubnub'),\n XHR: require('xhr2')\n });\n }\n\n } else if (typeof define === 'function' && define.amd) { // RequireJS\n\n define(['crypto-js', 'pubnub', 'es6-promise'], function(CryptoJS, PUBNUB) { // amdclean\n return RCSDK({\n CryptoJS: CryptoJS,\n PUBNUB: PUBNUB\n });\n });\n\n } else { // Standalone in browser\n\n RCSDK.noConflict = (function(old) {\n return function() {\n root.RCSDK = old;\n RCSDK.noConflict = undefined;\n return RCSDK;\n };\n })(root.RCSDK);\n\n root.RCSDK = RCSDK({});\n\n }\n\n})();"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/build/rc-sdk.min.js b/build/rc-sdk.min.js index 05a8f2d0..dd5ffd79 100644 --- a/build/rc-sdk.min.js +++ b/build/rc-sdk.min.js @@ -1,4 +1,4 @@ -!function(root){var core_pubnub_PubnubMock,core_Utils,core_Log,core_xhr_XhrResponse,core_xhr_XhrMock,core_Context,core_Observable,core_AjaxObserver,core_Ajax,core_Cache,core_Platform,core_Subscription,core_PageVisibility,core_Helper,core_Validator,core_List,helpers_Country,helpers_DeviceModel,helpers_Language,helpers_State,helpers_Location,helpers_ShippingMethod,helpers_Timezone,helpers_Account,helpers_BlockedNumber,helpers_Extension,helpers_Presence,helpers_Contact,helpers_Call,helpers_Conferencing,helpers_ContactGroup,helpers_Device,helpers_ForwardingNumber,helpers_Message,helpers_PhoneNumber,helpers_Ringout,helpers_Service,RCSDK;core_pubnub_PubnubMock=function(e){"use strict";function t(e){this.url=e,this.pubnub={ready:function(){}},this.onmessage=function(){},this.onclose=function(){},this.onerror=function(){},this.onopen=function(){},this.close=function(e,t){this.onclose({code:e,reason:t,wasClean:!0})},this.receiveMessage=function(e){this.onmessage({data:e})},this.onopen()}return e={$get:function(){return{ws:t}}}}({}),core_Utils=function(exports){"use strict";var hasOwn=Object.prototype.hasOwnProperty,toString=Object.prototype.toString,rdigit=/\d/,class2type={};"Boolean Number String Function Array Date RegExp Object".split(" ").forEach(function(e){class2type["[object "+e+"]"]=e.toLowerCase()});var Utils=exports={extend:function(){var e,t,r,n,o,i,s=arguments[0]||{},u=1,c=arguments.length,a=!1;for("boolean"==typeof s&&(a=s,s=arguments[u]||{},u++),"object"==typeof s||this.isFunction(s)||(s={});c>u;u++)if(null!=(e=arguments[u]))for(t in e)r=s[t],n=e[t],s!==n&&(a&&n&&(this.isPlainObject(n)||(o=this.isArray(n)))?(o?(o=!1,i=r&&this.isArray(r)?r:[]):i=r&&this.isPlainObject(r)?r:{},s[t]=this.extend(a,i,n)):void 0!==n&&(s[t]=n));return s},forEach:function(e,t){for(var r in e)if(e.hasOwnProperty(r)){var n=t(e[r],r);if(n===!1)break}},queryStringify:function(e){var t=[],r=this;return this.forEach(e,function(e,n){r.isArray(e)?e.forEach(function(e){t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}),t.join("&")},parseQueryString:function(e){var t={},r=this;return e.split("&").forEach(function(e){if(e=decodeURIComponent(e),-1==e.indexOf("="))t[e.trim()]=!0;else{var n=e.split("="),o=n[0].trim(),i=n[1].trim();o in t?(o in t&&!r.isArray(t[o])&&(t[o]=[t[o]]),t[o].push(i)):t[o]=i}}),t},isEmail:function(e,t){return t?/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[ ,;]*)+$/i.test(e):/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(e)},isPhoneNumber:function(e){return/\+?1[0-9]{3}[0-9a-z]{7}/im.test(e.toString().split(/[^0-9a-z\+]/im).join(""))},argumentsToArray:function(e){return Array.prototype.slice.call(e||[],0)},isDate:function(e){return"date"===this.type(e)},isFunction:function(e){return"function"===this.type(e)},isArray:Array.isArray||function(e){return"array"===this.type(e)},isWindow:function(e){return e&&"object"==typeof e&&"setInterval"in e},isNaN:function(e){return null==e||!rdigit.test(e)||isNaN(e)},type:function(e){return null==e?String(e):class2type[toString.call(e)]||"object"},isPlainObject:function(e){if(!e||"object"!==this.type(e)||e.nodeType||this.isWindow(e))return!1;if(e.constructor&&!hasOwn.call(e,"constructor")&&!hasOwn.call(e.constructor.prototype,"isPrototypeOf"))return!1;var t;for(t in e);return void 0===t||hasOwn.call(e,t)},getProperty:function(obj,property){try{return eval("obj."+property)}catch(e){return void 0}},poll:function(e,t,r){this.stopPolling(r),t=t||1e3;var n=function(r){return r=r||t,t=r,setTimeout(function(){e(n,r)},r)};return n()},stopPolling:function(e){e&&clearTimeout(e)},parseString:function(e){return e?e.toString():""},parseNumber:function(e){return e?(e=parseFloat(e),isNaN(e)?0:e):0},$get:function(){return Utils}};return exports}({}),core_Log=function(e){"use strict";var t=core_Utils,r=e={logDebug:!1,logInfo:!1,logWarnings:!1,logErrors:!1,addTimestamps:!0,console:console||{log:function(){},warn:function(){},info:function(){},error:function(){}},disableAll:function(){this.logDebug=!1,this.logInfo=!1,this.logWarnings=!1,this.logErrors=!1},enableAll:function(){this.logDebug=!0,this.logInfo=!0,this.logWarnings=!0,this.logErrors=!0},parseArguments:function(e){return e=t.argumentsToArray(e),this.addTimestamps&&e.unshift((new Date).toLocaleString(),"-"),e},debug:function(){this.logDebug&&this.console.log.apply(this.console,this.parseArguments(arguments))},info:function(){this.logInfo&&this.console.info.apply(this.console,this.parseArguments(arguments))},warn:function(){this.logWarnings&&this.console.warn.apply(this.console,this.parseArguments(arguments))},error:function(){this.logErrors&&this.console.error.apply(this.console,this.parseArguments(arguments))},$get:function(){return r}};return e}({}),core_xhr_XhrResponse=function(e){"use strict";function t(){this.responses=[]}return t.prototype.add=function(e){this.responses.push(e)},t.prototype.clear=function(){this.responses=[]},t.prototype.find=function(e){var t=null;return this.responses.forEach(function(r){e.url.indexOf(r.path)>-1&&(!r.test||r.test(e))&&(t=r)}),t},e={Class:t,$get:function(e){return e.createSingleton("XhrResponse",function(){return new t(e)})}}}({}),core_xhr_XhrMock=function(e){"use strict";function t(e){this.responses=core_xhr_XhrResponse.$get(e),this.async=!0,this.method="",this.url="",this.requestHeaders={},this.withCredentials=!1,this.data=null,this.readyState=0,this.responseHeaders={},this.status=0,this.context=e}var r=core_Log,n=core_Utils;return t.prototype.getResponseHeader=function(e){return this.responseHeaders[e.toLowerCase()]},t.prototype.setRequestHeader=function(e,t){this.requestHeaders[e.toLowerCase()]=t},t.prototype.open=function(e,t,r){this.method=e,this.url=t,this.async=r},t.prototype.send=function(e){function t(e){"application/json"==this.getResponseHeader("Content-Type")&&(e=JSON.stringify(e)),this.responseText=e,setTimeout(function(){this.onload&&this.onload()}.bind(this),1)}var o=this.getRequestHeader("Content-Type");this.data=e,this.data&&"string"==typeof this.data&&("application/json"==o&&(this.data=JSON.parse(this.data)),"application/x-www-form-urlencoded"==o&&(this.data=n.parseQueryString(this.data))),r.debug("API REQUEST",this.method,this.url);var i=this.responses.find(this);if(!i)return void setTimeout(function(){this.onerror&&this.onerror(new Error("Unknown request: "+this.url))}.bind(this),1);this.setStatus(200),this.setResponseHeader("Content-Type","application/json");var s=i.response(this),u=this.context.getPromise();s instanceof u?s.then(t.bind(this))["catch"](this.onerror.bind(this)):t.call(this,s)},t.prototype.abort=function(){r.debug("XhrMock.destroy(): Aborted")},t.prototype.getRequestHeader=function(e){return this.requestHeaders[e.toLowerCase()]},t.prototype.setResponseHeader=function(e,t){this.responseHeaders[e.toLowerCase()]=t},t.prototype.setStatus=function(e){return this.status=e,this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Context=function(e){"use strict";function t(e){this.singletons={},this.injections=e,this.stubPubnub=!1,this.stubAjax=!1}return t.prototype.createSingleton=function(e,t){return this.singletons[e]||(this.singletons[e]=t()),this.singletons[e]},t.prototype.usePubnubStub=function(e){return this.stubPubnub=!!e,this},t.prototype.useAjaxStub=function(e){return this.stubAjax=!!e,this},t.prototype.getCryptoJS=function(){return this.injections.CryptoJS},t.prototype.getPubnub=function(){return this.stubPubnub?core_pubnub_PubnubMock.$get(this):this.injections.PUBNUB},t.prototype.getLocalStorage=function(){return this.injections.localStorage},t.prototype.getPromise=function(){return this.injections.Promise},t.prototype.getXHR=function(){return this.stubAjax?core_xhr_XhrMock.$get(this):new this.injections.XHR},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Observable=function(e){function t(){if(!(this instanceof t))throw new Error("Observable(): New operator was omitted");Object.defineProperty(this,"listeners",{value:{},enumerable:!1,writable:!0}),Object.defineProperty(this,"oneTimeEvents",{value:{},enumerable:!1,writable:!0}),Object.defineProperty(this,"oneTimeArguments",{value:{},enumerable:!1,writable:!0})}var r=core_Utils,n=core_Log;return Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.hasListeners=function(e){return e in this.listeners},t.prototype.registerOneTimeEvent=function(e){this.oneTimeEvents[e]=!1,this.oneTimeArguments[e]=[]},t.prototype.on=function(e,t){if("string"==typeof e&&(e=[e]),!e)throw new Error("No events to subscribe to");if("function"!=typeof t)throw new Error("Callback must be a function");var r=this;return e.forEach(function(e){r.hasListeners(e)||(r.listeners[e]=[]),r.listeners[e].push(t),r.isOneTimeEventFired(e)&&(n.debug("Observable.on(%s): One-time event has been fired already, executing callback",e),t.apply(r,r.getOneTimeEventArgumens(e)))}),this},t.prototype.emit=function(e){if(this.isOneTimeEventFired(e))return n.debug("Observable.emit(%s): One-time event has been fired already",e),null;var t=this,o=r.argumentsToArray(arguments).splice(1),i=null;return this.isOneTimeEvent(e)&&(this.setOneTimeEventFired(e),this.setOneTimeEventArgumens(e,o)),this.hasListeners(e)?(this.listeners[e].some(function(e){return i=e.apply(t,o),i===!1}),i):null},t.prototype.off=function(e,t){var r=this;if(t){if(!this.hasListeners(e))return this;this.listeners[e].forEach(function(n,o){n===t&&delete r.listeners[e][o]})}else delete this.listeners[e];return this},t.prototype.isOneTimeEvent=function(e){return e in this.oneTimeEvents},t.prototype.isOneTimeEventFired=function(e){return this.isOneTimeEvent(e)?this.oneTimeEvents[e]:!1},t.prototype.setOneTimeEventFired=function(e){this.oneTimeEvents[e]=!0},t.prototype.setOneTimeEventArgumens=function(e,t){this.oneTimeArguments[e]=t},t.prototype.getOneTimeEventArgumens=function(e){return this.oneTimeArguments[e]},t.prototype.offAll=function(){this.listeners={},this.oneTimeEvents={},this.oneTimeArguments={}},t.prototype.destroy=function(){return this.offAll(),n.debug("Observable.destroy(): Listeners were destroyed"),this},t.prototype.emitAndCallback=function(e,t,n){return t=r.argumentsToArray(t),e&&this.emit.apply(this,[e].concat(t)),n&&n.apply(this,t),this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_AjaxObserver=function(e){"use strict";function t(){r.call(this)}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),t.prototype.events={beforeRequest:"beforeRequest",requestSuccess:"requestSuccess",requestError:"requestError"},e={Class:t,$get:function(e){return e.createSingleton("AjaxObserver",function(){return new t})}}}({}),core_Ajax=function(e){"use strict";function t(e){r.call(this),this.data=null,this.error=null,this.response="",this.headers={},this.status=0,this.options={},this.context=e,this.observer=core_AjaxObserver.$get(e),this.xhr=null}var r=core_Observable.Class,n=core_Utils,o=core_Log,i="application/json",s="multipart/mixed",u="--",c=":",a="\n\n";return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.getOptions=function(){return this.options},t.prototype.setOptions=function(e){return e&&(this.options=e),this},t.prototype.setRequestHeader=function(e,t){return this.options.headers=this.options.headers||{},this.options.headers[e.toLowerCase()]=t,this},t.prototype.setResponseHeader=function(e,t){return this.headers[e.toLowerCase()]=t,this},t.prototype.getRequestHeader=function(e){return this.options.headers=this.options.headers||{},this.options.headers[e.toLowerCase()]},t.prototype.getResponseHeader=function(e){return this.headers[e.toLowerCase()]},t.prototype.isResponseContentType=function(e){return this.getResponseContentType().indexOf(e)>-1},t.prototype.getResponseContentType=function(){return this.getResponseHeader("Content-Type")||""},t.prototype.isResponseMultipart=function(){return this.isResponseContentType(s)},t.prototype.isResponseUnauthorized=function(){return 401==this.status},t.prototype.getContentType=function(){return this.getResponseContentType()},t.prototype.isMultipart=function(){return this.isResponseMultipart()},t.prototype.isUnauthorized=function(){return this.isResponseUnauthorized()},t.prototype.isLoaded=function(){return!!this.status},t.prototype.checkOptions=function(){if(!this.options.url)throw new Error("Url is not defined");var e={Accept:i,"Content-Type":i},t=this.options.headers||{};if(this.options.headers={},Object.keys(e).forEach(function(t){this.setRequestHeader(t,e[t])},this),Object.keys(t).forEach(function(e){this.setRequestHeader(e,t[e])},this),this.options.method=this.options.method?this.options.method.toUpperCase():"GET",this.options.async=void 0!==this.options.async?this.options.async:!0,this.options.get=this.options.get||null,this.options.post=this.options.post?"string"!=typeof this.options.post&&this.getRequestHeader("Content-Type")===i?JSON.stringify(this.options.post):this.options.post:"",this.options.url=this.options.url+(this.options.get?(this.options.url.indexOf("?")>-1?"&":"?")+n.queryStringify(this.options.get):""),["GET","POST","PUT","DELETE","PATCH","OPTIONS"].indexOf(this.options.method)<0)throw new Error("Method has wrong value");return delete this.options.get,this},t.prototype.send=function(){return this.observer.emit(this.observer.events.beforeRequest,this),this.request().then(function(e){if(e.parseResponse(),e.error)throw e.error;return e}.bind(this)).then(function(e){return this.observer.emit(this.observer.events.requestSuccess,e),e}.bind(this))["catch"](function(e){throw e.ajax=this,this.observer.emit(this.observer.events.requestError,e),e}.bind(this))},t.prototype.getXHR=function(){return this.context.getXHR()},t.prototype.request=function(){return new(this.context.getPromise())(function(e,t){this.checkOptions();var r=this.options,o=this.getXHR();o.open(r.method,r.url,r.async),o.withCredentials=!0,o.onload=function(){this.status=o.status,this.response=o.responseText,this.setResponseHeader("Content-Type",o.getResponseHeader("Content-Type")||i),e(this)}.bind(this),o.onerror=function(){t(new Error("The request cannot be sent"))},n.forEach(r.headers,function(e,t){o.setRequestHeader(t,e)}),o.send("GET"===r.method?null:r.post),this.xhr=o}.bind(this))},t.prototype.checkStatus=function(e){return"2"==e.toString().substr(0,1)},t.prototype.parseResponse=function(){if(this.isResponseMultipart())try{var e=this.getResponseContentType().match(/boundary=([^;]+)/i)[1],r=this.response.split(u+e);""==r[0].trim()&&r.shift(),r[r.length-1].trim()==u&&r.pop(),r=r.map(function(e){var r=e.trim().replace(/\r/g,"").split(a),n=new t(this.context);return(r.length>1?r.shift():"").split("\n").forEach(function(e){if(0==e.length)return res;var t=e.split(c),r=t.shift().trim();n.setResponseHeader(r,t.join(c).trim())},this),n.response=r.join(a),n},this);var n=r.shift();n.status=this.status,n.parseResponse(),this.data=r.map(function(e,t){return e.status=n.data.response[t].status,e.parseResponse(),e},this)}catch(s){o.error("Ajax.parseResponse(): Unable to parse batch response"),o.error(s.stack||s),o.error(this.response),this.error=s}else try{this.data="string"==typeof this.response&&this.isResponseContentType(i)?JSON.parse(this.response):this.response,this.checkStatus(this.status)||(this.error=new Error(this.data.message||this.data.error_description||this.data.description||"Unknown error"))}catch(s){o.error("Ajax.parseResponse(): Unable to parse data"),o.error(s.stack||s),o.error(this.response),this.error=s}return this},t.prototype.destroy=function(){return this.xhr&&this.xhr.abort(),r.prototype.destroy.call(this)},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Cache=function(e){"use strict";function t(e){r.call(this),this.prefix="rc-",this.storage=e.getLocalStorage()}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.prefixKey=function(e){return this.prefix+e},t.prototype.setItem=function(e,t){return this.storage.setItem(this.prefixKey(e),JSON.stringify(t)),this},t.prototype.removeItem=function(e){return this.storage.removeItem(this.prefixKey(e)),this},t.prototype.getItem=function(e){var t=this.storage.getItem(this.prefixKey(e));return t?JSON.parse(t):null},t.prototype.clean=function(){for(var e in this.storage)this.storage.hasOwnProperty(e)&&0===e.indexOf(this.prefix)&&(this.storage.removeItem(e),delete this.storage[e]);return this},e={Class:t,$get:function(e){return e.createSingleton("Cache",function(){return new t(e)})}}}({}),core_Platform=function(e){"use strict";function t(e){n.call(this),this.server="",this.apiKey="",this.account="~",this.urlPrefix="/restapi",this.apiVersion="v1.0",this.accountPrefix="/account/",this.accessTokenTtl=600,this.refreshTokenTtl=36e3,this.refreshTokenTtlRemember=604800,this.refreshHandicapMs=6e4,this.refreshDelayMs=100,this.clearCacheOnRefreshError=!0,this.refreshPromise=null,this.context=e}var r=core_Utils,n=core_Observable.Class,o=core_Log,i="forced";return t.prototype=Object.create(n.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.cacheId="platform",t.prototype.pollInterval=250,t.prototype.releaseTimeout=5e3,t.prototype.events={accessViolation:"accessViolation",logoutSuccess:"logoutSuccess",logoutError:"logoutError",authorizeSuccess:"authorizeSuccess",authorizeError:"authorizeError",refreshSuccess:"refreshSuccess",refreshError:"refreshError"},t.prototype.getStorage=function(){return core_Cache.$get(this.context)},t.prototype.getAjax=function(){return core_Ajax.$get(this.context)},t.prototype.clearStorage=function(){return this.getStorage().clean(),this},t.prototype.remember=function(e){var t=this.cacheId+"-remember";return void 0!=e?(this.getStorage().setItem(t,e),this):this.getStorage().getItem(t)||!1},t.prototype.authorize=function(e){return e=e||{},e.remember=e.remember||!1,this.authCall({url:"/restapi/oauth/token",post:{grant_type:"password",username:e.username,extension:e.extension||"",password:e.password,access_token_ttl:this.accessTokenTtl,refresh_token_ttl:e.remember?this.refreshTokenTtlRemember:this.refreshTokenTtl}}).then(function(t){return this.setCache(t.data).remember(e.remember).emitAndCallback(this.events.authorizeSuccess,[]),t}.bind(this))["catch"](function(e){throw this.clearStorage().emitAndCallback(this.events.authorizeError,[e]),e}.bind(this))},t.prototype.isPaused=function(){var e=this.getStorage(),t=this.cacheId+"-refresh";return!!e.getItem(t)&&Date.now()-parseInt(e.getItem(t))r.refreshExpireTime?t(new Error("Refresh token has expired")):this.isPaused()?void e(this.authCall({url:"/restapi/oauth/token",post:{grant_type:"refresh_token",refresh_token:r.refresh_token,access_token_ttl:this.accessTokenTtl,refresh_token_ttl:this.remember()?this.refreshTokenTtlRemember:this.refreshTokenTtl}})):t(new Error("Queue was resumed before refresh call")):t(new Error("Refresh token is missing"))}.bind(this),this.refreshDelayMs))}.bind(this));return e.then(function(e){if(!e||!e.data)return e;if(o.info("Platform.refresh(): Token was refreshed"),!e.data.refresh_token||!e.data.access_token){var t=new Error("Malformed OAuth response");throw t.ajax=e,t}return this.setCache(e.data).resume(),e}.bind(this)).then(function(e){return this.emit(this.events.refreshSuccess,e),e}.bind(this))["catch"](function(e){throw this.clearCacheOnRefreshError&&this.clearStorage(),this.emitAndCallback(this.events.accessViolation,[e]).emitAndCallback(this.events.refreshError,[e]),e}.bind(this))},t.prototype.logout=function(){return this.pause(),this.authCall({url:"/restapi/oauth/revoke",get:{token:this.getToken()}}).then(function(e){return this.resume().clearStorage().emit(this.events.logoutSuccess,e),e}.bind(this))["catch"](function(e){throw this.resume().emitAndCallback(this.events.accessViolation,[e]).emitAndCallback(this.events.logoutError,[e]),e}.bind(this))},t.prototype.refreshPolling=function(e){return this.refreshPromise?this.refreshPromise:(this.refreshPromise=new(this.context.getPromise())(function(t,n){o.warn("Platform.refresh(): Refresh is already in progress polling started"),r.poll(function(r){return this.isPaused()?r():(this.refreshPromise=null,this.resume(),void(this.isTokenValid()?t(e):n(new Error("Automatic authentification timeout"))))}.bind(this),this.pollInterval)}.bind(this)),this.refreshPromise)},t.prototype.getToken=function(){return this.getAuthData().access_token},t.prototype.getTokenType=function(){return this.getAuthData().token_type},t.prototype.getAuthData=function(){return this.getStorage().getItem(this.cacheId)||{token_type:"",access_token:"",expires_in:0,refresh_token:"",refresh_token_expires_in:0}},t.prototype.isTokenValid=function(){var e=this.getAuthData();return e.token_type==i||new Date(e.expireTime).getTime()-this.refreshHandicapMs>Date.now()&&!this.isPaused()},t.prototype.isAuthorized=function(){return this.isTokenValid()?this.context.getPromise().resolve(!0):this.refresh()},t.prototype.cancelAccessToken=function(){return this.setCache(r.extend(this.getAuthData(),{access_token:"",expires_in:0}))},t.prototype.setCache=function(e){var t=this.getAuthData();return o.info("Platform.setCache(): Tokens were updated, new:",e,", old:",t),e.expireTime=Date.now()+1e3*e.expires_in,e.refreshExpireTime=Date.now()+1e3*e.refresh_token_expires_in,this.getStorage().setItem(this.cacheId,e),this},t.prototype.forceAuthentication=function(){return this.setCache({token_type:i,access_token:"",expires_in:0,refresh_token:"",refresh_token_expires_in:0}),this},t.prototype.apiCall=function(e){return e=e||{},e.url=this.apiUrl(e.url,{addServer:!0}),this.isAuthorized().then(function(){var t=this.getToken();return this.getAjax().setOptions(e).setRequestHeader("Authorization",this.getTokenType()+(t?" "+t:"")).send()}.bind(this))["catch"](function(t){if(!t.ajax||!t.ajax.isResponseUnauthorized())throw t;return this.cancelAccessToken(),this.refresh().then(function(){return this.apiCall(e)}.bind(this))}.bind(this))},t.prototype.authCall=function(e){return e=e||{},e.method=e.method||"POST",e.post=r.queryStringify(e.post),e.url=this.apiUrl(e.url,{addServer:!0}),this.getAjax().setOptions(e).setRequestHeader("Content-Type","application/x-www-form-urlencoded").setRequestHeader("Accept","application/json").setRequestHeader("Authorization","Basic"+this.apiKey).send()},t.prototype.apiUrl=function(e,t){e=e||"",t=t||{};var r="";return t.addServer&&-1==e.indexOf("http://")&&-1==e.indexOf("https://")&&(r+=this.server),-1==e.indexOf(this.urlPrefix)&&(r+=this.urlPrefix+"/"+this.apiVersion),e.indexOf(this.accountPrefix)>-1&&r.replace(this.accountPrefix+"~",this.accountPrefix+this.account),r+=e,(t.addMethod||t.addToken)&&(r+=e.indexOf("?")>-1?"&":"?"),t.addMethod&&(r+="_method="+t.addMethod),t.addToken&&(r+=(t.addMethod?"&":"")+"access_token="+this.getToken()),r},e={Class:t,$get:function(e){return e.createSingleton("Platform",function(){return new t(e)})}}}({}),core_Subscription=function(e){"use strict";function t(e){r.call(this),this.eventFilters=[],this.timeout=null,this.subscription={eventFilters:[],expirationTime:"",expiresIn:0,deliveryMode:{transportType:"PubNub",encryption:!1,address:"",subscriberKey:"",secretKey:""},id:"",creationTime:"",status:"",uri:""},this.socket=null,this.context=e}var r=core_Observable.Class,n=core_Log,o=core_Utils,i=6e4;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.events={notification:"notification",removeSuccess:"removeSuccess",removeError:"removeError",renewSuccess:"renewSuccess",renewError:"renewError",subscribeSuccess:"subscribeSuccess",subscribeError:"subscribeError"},t.prototype.createPubnub=function(e){return new(this.getPubnub().ws)(e)},t.prototype.getPubnub=function(){return this.context.getPubnub()},t.prototype.getCrypto=function(){return this.context.getCryptoJS()},t.prototype.getPlatform=function(){return core_Platform.$get(this.context)},t.prototype.register=function(e){return this.isSubscribed()?this.renew(e):this.subscribe(e)},t.prototype.addEvents=function(e){return this.eventFilters=this.eventFilters.concat(e),this},t.prototype.setEvents=function(e){return this.eventFilters=e,this},t.prototype.getFullEventFilters=function(){return this.eventFilters.map(function(e){return this.getPlatform().apiUrl(e)}.bind(this))},t.prototype.subscribe=function(e){return e=e||{},e.events&&(this.eventFilters=e.events),this.clearTimeout(),new(this.context.getPromise())(function(e){if(!this.eventFilters||!this.eventFilters.length)throw new Error("Events are undefined");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({method:"POST",url:"/restapi/v1.0/subscription",post:{eventFilters:this.getFullEventFilters(),deliveryMode:{transportType:"PubNub"}}})}.bind(this)).then(function(e){return this.updateSubscription(e.data).subscribeAtPubnub().emit(this.events.subscribeSuccess,e.data),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.subscribeError,e),e}.bind(this))},t.prototype.renew=function(e){return e=e||{},e.events&&(this.eventFilters=e.events),this.clearTimeout(),new(this.context.getPromise())(function(e){if(!this.subscription||!this.subscription.id)throw new Error("Subscription ID is required");if(!this.eventFilters||!this.eventFilters.length)throw new Error("Events are undefined");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({method:"PUT",url:"/restapi/v1.0/subscription/"+this.subscription.id,post:{eventFilters:this.getFullEventFilters()}})}.bind(this)).then(function(e){return this.updateSubscription(e.data).emit(this.events.renewSuccess,e.data),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.renewError,e),e}.bind(this))},t.prototype.remove=function(e){return e=o.extend({async:!0},e),new(this.context.getPromise())(function(e){if(!this.subscription||!this.subscription.id)throw new Error("Subscription ID is required");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({async:!!e.async,method:"DELETE",url:"/restapi/v1.0/subscription/"+this.subscription.id})}.bind(this)).then(function(e){return this.unsubscribe().emit(this.events.removeSuccess,e),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.removeError,e),e}.bind(this))},t.prototype.destroy=function(){return this.unsubscribe(),r.prototype.destroy.call(this)},t.prototype.isSubscribed=function(){return this.subscription&&this.subscription.deliveryMode&&this.subscription.deliveryMode.subscriberKey&&this.subscription.deliveryMode.address},t.prototype.setTimeout=function(){var e=1e3*this.subscription.expiresIn-i;this.timeout=setTimeout(function(){this.renew({})}.bind(this),e)},t.prototype.clearTimeout=function(){clearTimeout(this.timeout)},t.prototype.updateSubscription=function(e){return this.clearTimeout(),this.subscription=e,this.setTimeout(),this},t.prototype.unsubscribe=function(){return this.clearTimeout(),this.socket&&this.socket.close(this.socket.CLOSE_NORMAL,"Connection terminated by client"),this.subscription=null,this},t.prototype.notify=function(e){if(this.isSubscribed()&&this.subscription.deliveryMode.encryptionKey){var t=this.getCrypto(),r=t.enc.Base64.parse(this.subscription.deliveryMode.encryptionKey),n=t.enc.Base64.parse(e),o=t.AES.decrypt({ciphertext:n},r,{mode:t.mode.ECB,padding:t.pad.Pkcs7}).toString(t.enc.Utf8);e=JSON.parse(o)}return this.emit(this.events.notification,e),this},t.prototype.subscribeAtPubnub=function(){if(!this.isSubscribed())return this;var e="wss://pubsub.pubnub.com//"+this.subscription.deliveryMode.subscriberKey+"/"+this.subscription.deliveryMode.address;return this.socket=this.createPubnub(e),this.socket.pubnub&&this.socket.pubnub.ready(),this.socket.onmessage=function(e){n.info("Subscription: Socket received message",e),this.notify(e.data)}.bind(this),this.socket.onclose=function(){n.info("Subscription: Socket closed")},this.socket.onerror=function(e){n.error("Subscription: Socket error"),n.error(e.stack||e)},this.socket.onopen=function(){n.info("Subscription: Socket open")},this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_PageVisibility=function(e){"use strict";function t(){function e(e){e=e||window.event;var r="visible",o="hidden",i={focus:r,focusin:r,pageshow:r,blur:o,focusout:o,pagehide:o};n.visible=e.type in i?i[e.type]==r:!document[t],n.emit(n.events.change,n.visible)}r.call(this);var t="hidden",n=this;this.visible=!0,"undefined"!=typeof document&&"undefined"!=typeof window&&(t in document?document.addEventListener("visibilitychange",e):(t="mozHidden")in document?document.addEventListener("mozvisibilitychange",e):(t="webkitHidden")in document?document.addEventListener("webkitvisibilitychange",e):(t="msHidden")in document?document.addEventListener("msvisibilitychange",e):"onfocusin"in document?document.onfocusin=document.onfocusout=e:window.onpageshow=window.onpagehide=window.onfocus=window.onblur=e)}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.events={change:"change"},t.prototype.isVisible=function(){return this.visible},e={Class:t,$get:function(){return new t}}}({}),core_Helper=function(e){"use strict";function t(e){this.context=e}var r=core_Utils;return t.prototype.defaultProperty="id",t.prototype.getContext=function(){return this.context},t.prototype.createUrl=function(){return""},t.prototype.getId=function(e){return e&&e[this.defaultProperty]},t.prototype.isNew=function(e){return!this.getId(e)||!this.getUri(e)},t.prototype.resetAsNew=function(e){return e&&(delete e.id,delete e.uri),e},t.prototype.getUri=function(e){return e&&e.uri},t.prototype.parseMultipartResponse=function(e){return e.isResponseMultipart()?e.data.filter(function(e){return!e.error}).map(function(e){return e.data}):[e.data]},t.prototype.loadRequest=function(e,t){return r.extend(t||{},{url:t&&t.url||e&&this.getUri(e)||this.createUrl(),method:t&&t.method||"GET"})},t.prototype.saveRequest=function(e,t){if(!(e||t&&t.post))throw new Error("No Object");return r.extend(t||{},{method:t&&t.method||(this.isNew(e)?"POST":"PUT"),url:t&&t.url||this.getUri(e)||this.createUrl(),post:t&&t.post||e})},t.prototype.deleteRequest=function(e,t){if(t=t||{},!(this.getUri(e)||t&&t.url))throw new Error("Object has to be not new or URL must be provided");return r.extend(t||{},{method:t&&t.method||"DELETE",url:t&&t.url||this.getUri(e)})},t.prototype.syncRequest=function(e){return e=e||{},e.url=e.url||this.createUrl({sync:!0}),e.get=e.get||{},e.get.syncToken?e.get={syncType:"ISync",syncToken:e.get.syncToken}:e.get.syncType="FSync",e},t.prototype.nextPageExists=function(e){return e&&e.navigation&&"nextPage"in e.navigation},t.prototype.index=function(e,t,r){return t=t||this.getId.bind(this),e=e||[],e.reduce(function(e,n){var o=t(n);return!o||e[o]&&!r?e:(r?(e[o]||(e[o]=[]),e[o].push(n)):e[o]=n,e)},{})},t.prototype.merge=function(e,t,n,o){n=n||this.getId.bind(this),e=e||[],t=t||[];var i=this.index(t,n),s=[],u=e.map(function(e){var t=n(e),u=i[t];return u&&s.push(t),u?o?r.extend(e,u):u:e});return t.forEach(function(e){-1==s.indexOf(n(e))&&u.push(e) -}),u},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Validator=function(e){"use strict";var t=core_Utils,r=e={validate:function(e){var t={errors:{},isValid:!0};return t.errors=e.reduce(function(e,r){var n=r.validator();return n.length>0&&(t.isValid=!1,e[r.field]=e[r.field]||[],e[r.field]=e[r.field].concat(n)),e},{}),t},email:function(e,r){return function(){return e?t.isEmail(e,r)?[]:[new Error("Value has to be a valid email")]:[]}},phone:function(e){return function(){return e?t.isPhoneNumber(e)?[]:[new Error("Value has to be a valid US phone number")]:[]}},required:function(e){return function(){return e?[]:[new Error("Field is required")]}},length:function(e,t,r){return function(){var n=[];return e?(e=e.toString(),r&&e.lengtht&&n.push(new Error("Maximum length of "+t+" characters is required")),n):n}},$get:function(){return r}};return e}({}),core_List=function(e){"use strict";var t=core_Utils,r=e={propertyExtractor:function(e){return function(t){return e?t&&t[e]||null:t}},stringComparator:function(e,r){return t.parseString(e).localeCompare(t.parseString(r))},numberComparator:function(e,r){return t.parseNumber(e)-t.parseNumber(r)},comparator:function(e){function r(t,r){return e.compareFn(e.extractFn(t,e),e.extractFn(r,e),e)}return e=t.extend({extractFn:this.propertyExtractor(e&&e.sortBy||null),compareFn:this.stringComparator},e),r},equalsFilter:function(e,t){return t.condition===e},containsFilter:function(e,t){return e&&e.toString().indexOf(t.condition)>-1},regexpFilter:function(e,t){if(!(t.condition instanceof RegExp))throw new Error("Condition must be an instance of RegExp");return t.condition.test(e)},filter:function(e){function r(t){return e.reduce(function(e,r){return e&&r.condition?r.filterFn(r.extractFn(t,r),r):e},!0)}var n=this;return e=(e||[]).map(function(e){return t.extend({condition:"",extractFn:n.propertyExtractor(e&&e.filterBy||null),filterFn:n.equalsFilter},e)}),r},$get:function(){return r}};return e}({}),helpers_Country=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/country"},e={Class:t,$get:function(e){return e.createSingleton("CountryHelper",function(){return new t(e)})}}}({}),helpers_DeviceModel=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.getId=function(e){return e?e.id+(e.addons&&e.addons[0]?"-"+e.addons[0].id+"-"+e.addons[0].count:""):null},t.prototype.cleanForSaving=function(e){return e?(delete e.name,delete e.deviceClass,e.addons&&e.addons.length>0?e.addons.forEach(function(t,r){delete e.addons[r].name}):delete e.addons,e):null},t.prototype.devices=[{id:"-1",name:"Softphone"},{id:"0",name:"Existing device"},{id:"19",name:"Cisco SPA-525G2 Desk Phone",deviceClass:"Desk Phone"},{id:"23",name:"Polycom IP 321 Basic IP phone",deviceClass:"Desk Phone"},{id:"30",name:"Polycom IP 550 HD Manager IP phone",deviceClass:"Desk Phone"},{id:"37",name:"Polycom IP 6000 Conference Phone",deviceClass:"Conference Phone"},{id:"40",name:"Polycom IP 335 HD IP phone",deviceClass:"Desk Phone"},{id:"51",name:"Cisco SPA-303 Desk Phone",deviceClass:"Desk Phone"},{id:"16",name:"Cisco SPA-508G Desk Phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"1"}]},{id:"16",name:"Cisco SPA-508G Desk Phone with 2 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"2"}]},{id:"16",name:"Cisco SPA-508G Desk Phone",deviceClass:"Desk Phone"},{id:"19",name:"Cisco SPA-525G2 Desk Phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"1"}]},{id:"19",name:"Cisco SPA-525G2 Desk Phone with 2 Expansion Modules Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"2"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"1"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 2 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"2"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 3 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"3"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone",deviceClass:"Desk Phone"},{id:"52",name:"Cisco SPA-122 ATA",deviceClass:"Analog Adapter"},{id:"53",name:"Polycom VVX-500 Color Touchscreen",deviceClass:"Desk Phone"},{id:"54",name:"Polycom VVX-310 Gigabit Ethernet Phone",deviceClass:"Desk Phone"},{id:"55",name:"Polycom VVX-410 Color Gigabit Ethernet Phone",deviceClass:"Desk Phone"}],e={Class:t,$get:function(e){return e.createSingleton("DeviceModelHelper",function(){return new t(e)})}}}({}),helpers_Language=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.languages=[{id:"1033",name:"English (US)"},{id:"3084",name:"French (Canada)"}],e={Class:t,$get:function(e){return e.createSingleton("LanguageHelper",function(){return new t(e)})}}}({}),helpers_State=function(e){"use strict";function t(e){r.call(this,e),this.countryHelper=helpers_Country.$get(e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/state"},t.prototype.filter=function(e){return e=o.extend({countryId:""},e),n.filter([{condition:e.countryId,filterFn:function(e,t){return this.countryHelper.getId(e.country)==t.condition}.bind(this)}])},e={Class:t,$get:function(e){return e.createSingleton("StateHelper",function(){return new t(e)})}}}({}),helpers_Location=function(e){"use strict";function t(e){r.call(this,e),this.state=helpers_State.$get(e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/location"},t.prototype.filter=function(e){var t=[];return e=o.extend({stateId:"",onlyUniqueNPA:!1},e),n.filter([{condition:e.stateId,filterFn:function(e,t){return this.state.getId(e.state)==t.condition}.bind(this)},{condition:e.onlyUniqueNPA,filterFn:function(e){return-1==t.indexOf(e.npa)?(t.push(e.npa),!0):!1}}])},t.prototype.comparator=function(e){return e=o.extend({sortBy:"npa"},e),"nxx"==e.sortBy&&(e.extractFn=function(e){return 1e6*parseInt(e.npa)+parseInt(e.nxx)},e.compareFn=n.numberComparator),n.comparator(e)},e={Class:t,$get:function(e){return e.createSingleton("LocationHelper",function(){return new t(e)})}}}({}),helpers_ShippingMethod=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.shippingMethods=[{id:"1",name:"Ground Shipping (5-7 business days)"},{id:"2",name:"2-days Shipping"},{id:"3",name:"Overnight Shipping"}],e={Class:t,$get:function(e){return e.createSingleton("ShippingMethodHelper",function(){return new t(e)})}}}({}),helpers_Timezone=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/timezone"},e={Class:t,$get:function(e){return e.createSingleton("TimezoneHelper",function(){return new t(e)})}}}({}),helpers_Account=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/account/~"},e={Class:t,$get:function(e){return e.createSingleton("AccountHelper",function(){return new t(e)})}}}({}),helpers_BlockedNumber=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId?e.extensionId:"~")+"/blocked-number"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"phoneNumber",validator:n.phone(e.phoneNumber)},{field:"phoneNumber",validator:n.required(e.phoneNumber)},{field:"name",validator:n.required(e.name)}])},e={Class:t,$get:function(e){return e.createSingleton("BlockedNumberHelper",function(){return new t(e)})}}}({}),helpers_Extension=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.type={department:"Department",user:"User",announcement:"Announcement",voicemail:"Voicemail"},t.prototype.createUrl=function(e,t){return e=e||{},"/account/~"+(e.departmentId?"/department/"+e.departmentId+"/members":"/extension")+(t?"/"+t:"")},t.prototype.isUser=function(e){return e&&e.type==this.type.user},t.prototype.isDepartment=function(e){return e&&e.type==this.type.department},t.prototype.isAnnouncement=function(e){return e&&e.type==this.type.announcement},t.prototype.isVoicemail=function(e){return e&&e.type==this.type.voicemail},t.prototype.comparator=function(e){return n.comparator(o.extend({sortBy:"extensionNumber",compareFn:n.numberComparator},e))},t.prototype.filter=function(e){return e=o.extend({search:"",type:""},e),n.filter([{filterBy:"type",condition:e.type},{condition:e.search.toLocaleLowerCase(),filterFn:n.containsFilter,extractFn:function(e){return(e.name&&e.name.toLocaleLowerCase()+" ")+(e.extensionNumber&&e.extensionNumber.toString().toLocaleLowerCase())}}])},e={Class:t,$get:function(e){return e.createSingleton("ExtensionHelper",function(){return new t(e)})}}}({}),helpers_Presence=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_Helper.Class,n=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(t||"~")+"/presence"+(e.detailed?"?detailedTelephonyState=true":"")},t.prototype.getId=function(e){return e&&(this.extension.getId(e.extension)||e.extensionId)},t.prototype.isAvailable=function(e){return e&&"Available"==e.presenceStatus},t.prototype.getSubscription=function(e,t){return core_Subscription.$get(this.context).setEvents([this.createUrl(e,t)])},t.prototype.updateSubscription=function(e,t,r){var n=t.map(this.getId,this).map(function(e){return this.createUrl(r,e)},this);return e.addEvents(n),e},t.prototype.attachToExtensions=function(e,t,r){var o=this.index(t);e.forEach(function(e){var t=o[this.extension.getId(e)];t&&("presence"in e&&r?n.extend(e.presence,t):e.presence=t)},this)},t.prototype.isCallInProgress=function(e){return e&&"NoCall"!=e.telephonyStatus},e={Class:t,$get:function(e){return e.createSingleton("PresenceHelper",function(){return new t(e)})}}}({}),helpers_Contact=function(e){"use strict";function t(e){o.call(this,e)}var r=core_Utils,n=core_Validator,o=core_Helper.Class,i=core_List;return t.prototype=Object.create(o.prototype),t.prototype.createUrl=function(e,t){e=e||{};var r="/account/~/extension/"+(e.extensionId?e.extensionId:"~")+"/address-book";return e.sync?r+"-sync":r+(e.groupId?"/group/"+e.groupId+"/contact":"/contact")+(t?"/"+t:"")},t.prototype.getFieldValues=function(e,t,r){return t.reduce(function(t,n){return e&&e[n]&&(r?t[n]=e[n]:t.push(e[n])),t},r?{}:[])},t.prototype.getFullName=function(e){return this.getFieldValues(e,this.nameFields).join(" ")},t.prototype.getEmails=function(e,t){return this.getFieldValues(e,this.emailFields,t)},t.prototype.getPhones=function(e,t){return this.getFieldValues(e,this.phoneFields,t)},t.prototype.getFaxes=function(e,t){return this.getFieldValues(e,this.faxFields,t)},t.prototype.getAddresses=function(e,t){return this.getFieldValues(e,this.addressFields,t)},t.prototype.isAlive=function(e){return"Alive"==e.availability},t.prototype.match=function(e,t,n){function o(e){if(!i){var r=n.transformFn(e,n);if(r){var o=n.strict?r==t:r.indexOf(t)>-1;o&&(i=e)}}}n=r.extend({fields:[].concat(this.nameFields,this.emailFields,this.phoneFields,this.faxFields,this.otherFields),inAddresses:!0,transformFn:function(e){return e?e.toString().toLocaleLowerCase():""},strict:!1},n),t=n.transformFn(t,n);var i=null;return t?(n.fields.forEach(function(t){o(e[t])}),n.inAddresses&&!i&&this.addressFields.forEach(function(t){e[t]&&!i&&this.addressSubFields.forEach(function(r){o(e[t][r])})},this),i):i},t.prototype.matchAsPhone=function(e,t,n){return this.match(e,t,r.extend({fields:[].concat(this.phoneFields,this.faxFields),inAddresses:!1,transformFn:function(e){return e?e.toString().replace(/[^\d\w]/gi,""):""},strict:!1},n))},t.prototype.attachToCallerInfos=function(e,t,n){var o=this,i=this.index(e,function(e){return e.phoneNumber},!0);r.forEach(i,function(e,r){var i=null,s=null;t.some(function(e){return s=o.matchAsPhone(e,r,n),s&&(i=e),s}),i&&e.forEach(function(e){e.contact=i,e.contactPhone=s})})},t.prototype.comparator=function(e){var t=this;return i.comparator(r.extend({extractFn:function(e){return t.getFullName(e)}},e))},t.prototype.filter=function(e){var t=this;return e=r.extend({alive:!0,startsWith:"",phonesOnly:!1,faxesOnly:!1},e),i.filter([{condition:e.alive,filterFn:this.isAlive},{condition:e.startsWith,filterFn:function(e,r){return t.match(e,r.condition)}},{condition:e.phonesOnly,filterFn:function(e){return t.getPhones(e).length>0}},{condition:e.faxesOnly,filterFn:function(e){return t.getFaxes(e).length>0}}])},t.prototype.validate=function(e){return n.validate([{field:"firstName",validator:n.required(e.firstName)},{field:"lastName",validator:n.required(e.lastName)},{field:"email",validator:n.email(e.email)},{field:"email2",validator:n.email(e.email2)},{field:"email3",validator:n.email(e.email3)}])},t.prototype.phoneFields=["homePhone","homePhone2","businessPhone","businessPhone2","mobilePhone","companyPhone","assistantPhone","carPhone","otherPhone","callbackPhone"],t.prototype.faxFields=["businessFax","otherFax"],t.prototype.addressFields=["homeAddress","businessAddress","otherAddress"],t.prototype.addressSubFields=["street","city","state","zip"],t.prototype.nameFields=["firstName","middleName","lastName","nickName"],t.prototype.otherFields=["company","jobTitle","webPage","notes"],t.prototype.emailFields=["email","email2","email3"],e={Class:t,$get:function(e){return e.createSingleton("ContactHelper",function(){return new t(e)})}}}({}),helpers_Call=function(e){"use strict";function t(e){r.call(this,e),this.presence=helpers_Presence.$get(e),this.contact=helpers_Contact.$get(e)}var r=core_Helper.Class,n=core_Utils,o=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"personal"in e||"extensionId"in e||(e.personal=!0),"/account/~/"+(e.personal||e.extensionId?"extension/"+(e.extensionId||"~")+"/":"")+(e.active?"active-calls":"call-log")+(t?"/"+t:"")},t.prototype.getSessionId=function(e){return e&&e.sessionId},t.prototype.isInProgress=function(e){return e&&"In Progress"==e.result},t.prototype.isAlive=function(e){return e&&"Alive"==e.availability},t.prototype.isInbound=function(e){return e&&"Inbound"==e.direction},t.prototype.isOutbound=function(e){return!this.isInbound(e)},t.prototype.isMissed=function(e){return e&&"Missed"==e.result},t.prototype.isFindMe=function(e){return e&&"FindMe"==e.action},t.prototype.getCallerInfo=function(e){return this.isInbound(e)?e.from:e.to},t.prototype.getAllCallerInfos=function(e){return[this.getCallerInfo(e)].concat(this.isInbound(e)?e.to:e.from)},t.prototype.formatDuration=function(e){function t(e){return 10>e?"0"+e:e}var r=parseInt(e.duration),n=Math.floor(r/3600),o=Math.floor(r%3600/60),i=Math.floor(r%60);return(n?n+":":"")+t(o)+":"+t(i)},t.prototype.filter=function(e){return e=n.extend({alive:!0,direction:"",type:""},e),o.filter([{filterBy:"direction",condition:e.direction},{filterBy:"type",condition:e.type}])},t.prototype.comparator=function(e){return o.comparator(n.extend({sortBy:"startTime"},e))},t.prototype.attachContacts=function(e,t,r){var n=this,o=t.reduce(function(e,t){return e.concat(n.getAllCallerInfos(t))},[]);this.contact.attachToCallerInfos(o,e,r)},t.prototype.checkMergeability=function(e,t,r){function n(e){return new Date(e).getTime()}return(!r.strict||e.action&&-1!=e.action.toLowerCase().indexOf("ringout"))&&"Outbound"==e.direction&&"Inbound"==t.direction&&(!t.startTime&&!e.startTime||Math.abs(n(t.startTime)-n(e.startTime))<(r.maxStartTimeDiscrepancy||5e3))&&t.from.phoneNumber==e.to.phoneNumber&&(t.to.phoneNumber==e.from.phoneNumber||t.to.name==e.from.name)},t.prototype.combineCalls=function(e,t,r){r=r||{};var n=[];return e.hasSubsequent=!0,r.merge?(e.duration=e.duration>t.duration?e.duration:t.duration,e.from=t.to,e.to=t.from,n.push(e)):(t.subsequent=!0,t.startTime=e.startTime,n.push(e),n.push(t)),n},t.prototype.processCalls=function(e,t){var r=[],n=[],o=this;return e.forEach(function(i){var s=!1;i.subsequent=!1,i.hasSubsequent=!1,e.some(function(e){return i===e?!1:(o.checkMergeability(i,e,t)&&(r=r.concat(o.combineCalls(i,e,t)),n.push(i),n.push(e),s=!0),s)})}),e.forEach(function(e){-1==n.indexOf(e)&&r.push(e)}),r},t.prototype.parsePresenceCalls=function(e){return e.map(function(e){return{id:e.id,uri:"",sessionId:e.sessionId,from:{phoneNumber:e.from},to:{phoneNumber:e.to},direction:e.direction,startTime:"",duration:0,type:"",action:"",result:this.presence.isCallInProgress(e)?"In Progress":e.telephonyStatus,telephonyStatus:e.telephonyStatus}},this)},t.prototype.getSignature=function(e){function t(e){return(e||"").toString().replace(/[^0-9]/gi,"")}return e.direction+"|"+(e.from&&t(e.from.phoneNumber))+"|"+(e.to&&t(e.to.phoneNumber))},t.prototype.mergePresenceCalls=function(e,t){var r=new Date,n=this.parsePresenceCalls(t&&t.activeCalls||[]).map(function(e){return delete e.startTime,e});return e=this.merge(e||[],n,this.getSessionId,!0),e.forEach(function(e){e.startTime||(e.startTime=r.toISOString())}),e},t.prototype.mergeAll=function(e,t,r){var n=this.merge(e||[],t||[],this.getSessionId,!0);return this.merge(n,r||[],this.getSessionId,!0)},e={Class:t,$get:function(e){return e.createSingleton("CallHelper",function(){return new t(e)})}}}({}),helpers_Conferencing=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/account/~/extension/~/conferencing"},e={Class:t,$get:function(e){return e.createSingleton("ConferencingHelper",function(){return new t(e)})}}}({}),helpers_ContactGroup=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return"/account/~/extension/~/address-book/group"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"groupName",validator:n.required(e&&e.groupName)}])},e={Class:t,$get:function(e){return e.createSingleton("ContactGroupHelper",function(){return new t(e)})}}}({}),helpers_Device=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e),this.deviceModel=helpers_DeviceModel.$get(e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},e.order?"/account/~/order":"/account/~"+(e.extensionId?"/extension/"+e.extensionId:"")+"/device"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"emergencyServiceAddress-street",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.street)},{field:"emergencyServiceAddress-city",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.city)},{field:"emergencyServiceAddress-state",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.state)},{field:"emergencyServiceAddress-country",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.country)},{field:"emergencyServiceAddress-zip",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.zip)},{field:"emergencyServiceAddress-customerName",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.customerName)},{field:"extension",validator:n.required(this.extension.getId(e&&e.extension))},{field:"model",validator:n.required(this.deviceModel.getId(e&&e.model))}])},e={Class:t,$get:function(e){return e.createSingleton("DeviceHelper",function(){return new t(e)})}}}({}),helpers_ForwardingNumber=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Utils,o=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId||"~")+"/forwarding-number"+(t?"/"+t:"")},t.prototype.getId=function(e){return e.id||e.phoneNumber},t.prototype.hasFeature=function(e,t){return!!e.features&&-1!=e.features.indexOf(t)},t.prototype.comparator=function(e){return o.comparator(n.extend({sortBy:"label"},e))},t.prototype.filter=function(e){var t=this;return e=n.extend({features:[]},e),o.filter([{condition:e.features.length,filterFn:function(r){return e.features.some(function(e){return t.hasFeature(r,e)})}}])},e={Class:t,$get:function(e){return e.createSingleton("ForwardingNumberHelper",function(){return new t(e)})}}}({}),helpers_Message=function(e){"use strict";function t(e){r.call(this,e),this.platform=core_Platform.$get(e),this.contact=helpers_Contact.$get(e)}var r=core_Helper.Class,n=core_Validator,o=core_Utils,i=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){e=e||{};var r="/account/~/extension/"+(e.extensionId||"~");return e.fax?r+"/fax":e.sms?r+"/sms":e.pager?r+"/company-pager":e.sync?r+"/message-sync":r+"/message-store"+(t?"/"+t:"")},t.prototype.isInbound=function(e){return e&&"Inbound"==e.direction},t.prototype.isOutbound=function(e){return!this.isInbound(e)},t.prototype.isSMS=function(e){return e&&"SMS"==e.type},t.prototype.isPager=function(e){return e&&"Pager"==e.type},t.prototype.isVoiceMail=function(e){return e&&"VoiceMail"==e.type},t.prototype.isFax=function(e){return e&&"Fax"==e.type},t.prototype.isAlive=function(e){return e&&"Alive"==e.availability},t.prototype.isRead=function(e){return"Read"==e.readStatus},t.prototype.setIsRead=function(e,t){return e.readStatus=t?"Read":"Unread",e},t.prototype.getAttachmentUrl=function(e,t){return e.attachments[t]?this.platform.apiUrl(e.attachments[t].uri,{addMethod:"GET",addServer:!0,addToken:!0}):""},t.prototype.getAttachmentContentType=function(e,t){return e.attachments[t]?e.attachments[t].contentType:""},t.prototype.getSubscription=function(e){return core_Subscription.$get(this.context).setEvents([this.createUrl(e)])},t.prototype.getCallerInfos=function(e){return this.isInbound(e)?[e.from]:e.to},t.prototype.getAllCallerInfos=function(e){return this.getCallerInfos(e).concat(this.isInbound(e)?e.to:[e.from])},t.prototype.comparator=function(e){return i.comparator(o.extend({sortBy:"creationTime"},e))},t.prototype.filter=function(e){return e=o.extend({search:"",alive:!0,direction:"",conversationId:"",readStatus:""},e),i.filter([{condition:e.alive,filterFn:this.isAlive},{filterBy:"type",condition:e.type},{filterBy:"direction",condition:e.direction},{filterBy:"conversationId",condition:e.conversationId},{filterBy:"readStatus",condition:e.readStatus},{filterBy:"subject",condition:e.search,filterFn:i.containsFilter}])},t.prototype.attachContacts=function(e,t,r){var n=this,o=t.reduce(function(e,t){return e.concat(n.getAllCallerInfos(t))},[]);this.contact.attachToCallerInfos(o,e,r)},t.prototype.shorten=function(e){return{from:e.from,to:e.to,text:e.subject}},t.prototype.validateSMS=function(e){return n.validate([{field:"to",validator:n.required(o.getProperty(e,"to[0].phoneNumber"))},{field:"from",validator:n.required(o.getProperty(e,"from.phoneNumber"))},{field:"subject",validator:n.required(o.getProperty(e,"subject"))},{field:"subject",validator:n.length(o.getProperty(e,"subject"),160)}])},t.prototype.validatePager=function(e){return n.validate([{field:"to",validator:n.required(o.getProperty(e,"to.extensionNumber"))},{field:"from",validator:n.required(o.getProperty(e,"from.extensionNumber"))},{field:"subject",validator:n.required(o.getProperty(e,"subject"))},{field:"subject",validator:n.length(o.getProperty(e,"subject"),160)}])},e={Class:t,$get:function(e){return e.createSingleton("MessageHelper",function(){return new t(e)})}}}({}),helpers_PhoneNumber=function(e){"use strict";function t(e){o.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_List,n=core_Utils,o=core_Helper.Class;return t.prototype=Object.create(o.prototype),t.prototype.createUrl=function(e,t){return e=e||{},e.lookup?"/number-pool/lookup":"/account/~"+(e.extensionId?"/extension/"+e.extensionId:"")+"/phone-number"+(t?"/"+t:"")},t.prototype.isSMS=function(e){return this.hasFeature(e,"SmsSender")},t.prototype.hasFeature=function(e,t){return!!e.features&&-1!=e.features.indexOf(t)},t.prototype.reserve=function(e,t){e.reservedTill=new Date(t).toISOString()},t.prototype.unreserve=function(e){e.reservedTill=null},t.prototype.comparator=function(e){return r.comparator(n.extend({extractFn:function(e){return e.usageType+"-"+e.paymentType+"-"+e.type}},e))},t.prototype.filter=function(e){var t=this;return e=n.extend({usageType:"",paymentType:"",type:"",features:[]},e),r.filter([{filterBy:"usageType",condition:e.usageType},{filterBy:"paymentType",condition:e.paymentType},{filterBy:"type",condition:e.type},{condition:e.features.length,filterFn:function(r){return e.features.some(function(e){return t.hasFeature(r,e)})}}])},e={Class:t,$get:function(e){return e.createSingleton("PhoneNumberHelper",function(){return new t(e)})}}}({}),helpers_Ringout=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId||"~")+"/ringout"+(t?"/"+t:"")},t.prototype.resetAsNew=function(e){return e=r.prototype.resetAsNew.call(this,e),e&&delete e.status,e},t.prototype.isInProgress=function(e){return e&&!this.isNew(e)&&e.status&&"InProgress"==e.status.callStatus},t.prototype.isSuccess=function(e){return e&&!this.isNew(e)&&e.status&&"Success"==e.status.callStatus},t.prototype.isError=function(e){return!this.isNew(e)&&!this.isInProgress(e)&&!this.isSuccess(e)},t.prototype.validate=function(e){return n.validate([{field:"to",validator:n.required(e&&e.to&&e.to.phoneNumber)},{field:"from",validator:n.required(e&&e.from&&e.from.phoneNumber)}])},e={Class:t,$get:function(e){return e.createSingleton("RingoutHelper",function(){return new t(e)})}}}({}),helpers_Service=function(e){"use strict";function t(e){n.call(this,e)}function r(e){return function(t){return this.isEnabled(e,t)}}var n=core_Helper.Class;return t.prototype=Object.create(n.prototype),t.prototype.createUrl=function(){return"/account/~/service-info"},t.prototype.isEnabled=function(e,t){return t.reduce(function(t,r){return r.featureName==e&&(t=r.enabled),t},!1)},t.prototype.isSmsEnabled=r("SMS"),t.prototype.isSmsReceivingEnabled=r("SMSReceiving"),t.prototype.isPresenceEnabled=r("Presence"),t.prototype.isRingOutEnabled=r("RingOut"),t.prototype.isInternationalCallingEnabled=r("InternationalCalling"),t.prototype.isDndEnabled=r("DND"),t.prototype.isFaxEnabled=r("Fax"),t.prototype.isFaxReceivingEnabled=r("FaxReceiving"),t.prototype.isVoicemailEnabled=r("Voicemail"),t.prototype.isPagerEnabled=r("Pager"),t.prototype.isPagerReceivingEnabled=r("PagerReceiving"),t.prototype.isVoipCallingEnabled=r("VoipCalling"),t.prototype.isVideoConferencingEnabled=r("VideoConferencing"),t.prototype.isSalesForceEnabled=r("SalesForce"),t.prototype.isIntercomEnabled=r("Intercom"),t.prototype.isPagingEnabled=r("Paging"),t.prototype.isConferencingEnabled=r("Conferencing"),t.prototype.isFreeSoftPhoneLinesEnabled=r("FreeSoftPhoneLines"),t.prototype.isHipaaComplianceEnabled=r("HipaaCompliance"),t.prototype.isCallParkEnabled=r("CallPark"),t.prototype.isOnDemandCallRecordingEnabled=r("OnDemandCallRecording"),e={Class:t,$get:function(e){return e.createSingleton("serviceHelper",function(){return new t(e)})}}}({}),RCSDK=function(e){"use strict";return e=function(e){function t(){this._context=core_Context.$get(e)}function r(){return u.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(t){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(r){}throw new Error("This browser does not support XMLHttpRequest.")}}function n(){return u.CryptoJS||"undefined"!=typeof CryptoJS&&CryptoJS}function o(){return u.localStorage}function i(){return u.PUBNUB||"undefined"!=typeof PUBNUB&&PUBNUB}function s(){return u.Promise}t.version="1.1.2",t.prototype.getContext=function(){return this._context},t.prototype.getAjax=function(){return core_Ajax.$get(this.getContext())},t.prototype.getAjaxObserver=function(){return core_AjaxObserver.$get(this.getContext())},t.prototype.getXhrResponse=function(){return core_xhr_XhrResponse.$get(this.getContext())},t.prototype.getPlatform=function(){return core_Platform.$get(this.getContext())},t.prototype.getCache=function(){return core_Cache.$get(this.getContext())},t.prototype.getSubscription=function(){return core_Subscription.$get(this.getContext())},t.prototype.getPageVisibility=function(){return core_PageVisibility.$get(this.getContext())},t.prototype.getHelper=function(){return core_Helper.$get(this.getContext())},t.prototype.getObservable=function(){return core_Observable.$get(this.getContext())},t.prototype.getValidator=function(){return core_Validator.$get(this.getContext())},t.prototype.getLog=function(){return core_Log.$get(this.getContext())},t.prototype.getUtils=function(){return core_Utils.$get(this.getContext())},t.prototype.getList=function(){return core_List.$get(this.getContext())},t.prototype.getCountryHelper=function(){return helpers_Country.$get(this.getContext())},t.prototype.getDeviceModelHelper=function(){return helpers_DeviceModel.$get(this.getContext())},t.prototype.getLanguageHelper=function(){return helpers_Language.$get(this.getContext())},t.prototype.getLocationHelper=function(){return helpers_Location.$get(this.getContext())},t.prototype.getShippingMethodHelper=function(){return helpers_ShippingMethod.$get(this.getContext())},t.prototype.getStateHelper=function(){return helpers_State.$get(this.getContext())},t.prototype.getTimezoneHelper=function(){return helpers_Timezone.$get(this.getContext())},t.prototype.getAccountHelper=function(){return helpers_Account.$get(this.getContext())},t.prototype.getBlockedNumberHelper=function(){return helpers_BlockedNumber.$get(this.getContext())},t.prototype.getCallHelper=function(){return helpers_Call.$get(this.getContext())},t.prototype.getConferencingHelper=function(){return helpers_Conferencing.$get(this.getContext())},t.prototype.getContactHelper=function(){return helpers_Contact.$get(this.getContext())},t.prototype.getContactGroupHelper=function(){return helpers_ContactGroup.$get(this.getContext())},t.prototype.getDeviceHelper=function(){return helpers_Device.$get(this.getContext())},t.prototype.getExtensionHelper=function(){return helpers_Extension.$get(this.getContext())},t.prototype.getForwardingNumberHelper=function(){return helpers_ForwardingNumber.$get(this.getContext())},t.prototype.getMessageHelper=function(){return helpers_Message.$get(this.getContext())},t.prototype.getPhoneNumberHelper=function(){return helpers_PhoneNumber.$get(this.getContext())},t.prototype.getPresenceHelper=function(){return helpers_Presence.$get(this.getContext())},t.prototype.getRingoutHelper=function(){return helpers_Ringout.$get(this.getContext())},t.prototype.getServiceHelper=function(){return helpers_Service.$get(this.getContext())};var u=new Function("return this")();return e=e||{},e.CryptoJS=e.CryptoJS||n(),e.localStorage=e.localStorage||o(),e.Promise=e.Promise||s(),e.PUBNUB=e.PUBNUB||i(),e.XHR=e.XHR||r(),t -}}({}),function(){"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports&&(exports=module.exports=RCSDK({CryptoJS:require("crypto-js"),localStorage:new(require("dom-storage")),Promise:require("es6-promise").Promise,PUBNUB:require("pubnub"),XHR:require("xhr2")})):"function"==typeof define&&define.amd?define(["crypto-js","pubnub","es6-promise"],function(e,t){return RCSDK({CryptoJS:e,PUBNUB:t})}):(RCSDK.noConflict=function(e){return function(){return root.RCSDK=e,RCSDK.noConflict=void 0,RCSDK}}(root.RCSDK),root.RCSDK=RCSDK({}))}()}(this); +!function(root){var core_pubnub_PubnubMock,core_Utils,core_Log,core_xhr_XhrResponse,core_xhr_XhrMock,core_Context,core_Observable,core_AjaxObserver,core_Ajax,core_Cache,core_Platform,core_Subscription,core_PageVisibility,core_Helper,core_Validator,core_List,helpers_Country,helpers_DeviceModel,helpers_Language,helpers_State,helpers_Location,helpers_ShippingMethod,helpers_Timezone,helpers_Account,helpers_BlockedNumber,helpers_Extension,helpers_Presence,helpers_Contact,helpers_Call,helpers_Conferencing,helpers_ContactGroup,helpers_Device,helpers_ForwardingNumber,helpers_Message,helpers_PhoneNumber,helpers_Ringout,helpers_Service,RCSDK;core_pubnub_PubnubMock=function(e){"use strict";function t(e){this.url=e,this.pubnub={ready:function(){}},this.onmessage=function(){},this.onclose=function(){},this.onerror=function(){},this.onopen=function(){},this.close=function(e,t){this.onclose({code:e,reason:t,wasClean:!0})},this.receiveMessage=function(e){this.onmessage({data:e})},this.onopen()}return e={$get:function(){return{ws:t}}}}({}),core_Utils=function(exports){"use strict";var hasOwn=Object.prototype.hasOwnProperty,toString=Object.prototype.toString,rdigit=/\d/,class2type={};"Boolean Number String Function Array Date RegExp Object".split(" ").forEach(function(e){class2type["[object "+e+"]"]=e.toLowerCase()});var Utils=exports={extend:function(){var e,t,r,n,o,i,s=arguments[0]||{},u=1,c=arguments.length,a=!1;for("boolean"==typeof s&&(a=s,s=arguments[u]||{},u++),"object"==typeof s||this.isFunction(s)||(s={});c>u;u++)if(null!=(e=arguments[u]))for(t in e)r=s[t],n=e[t],s!==n&&(a&&n&&(this.isPlainObject(n)||(o=this.isArray(n)))?(o?(o=!1,i=r&&this.isArray(r)?r:[]):i=r&&this.isPlainObject(r)?r:{},s[t]=this.extend(a,i,n)):void 0!==n&&(s[t]=n));return s},forEach:function(e,t){for(var r in e)if(e.hasOwnProperty(r)){var n=t(e[r],r);if(n===!1)break}},queryStringify:function(e){var t=[],r=this;return this.forEach(e,function(e,n){r.isArray(e)?e.forEach(function(e){t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}):t.push(encodeURIComponent(n)+"="+encodeURIComponent(e))}),t.join("&")},parseQueryString:function(e){var t={},r=this;return e.split("&").forEach(function(e){if(e=decodeURIComponent(e),-1==e.indexOf("="))t[e.trim()]=!0;else{var n=e.split("="),o=n[0].trim(),i=n[1].trim();o in t?(o in t&&!r.isArray(t[o])&&(t[o]=[t[o]]),t[o].push(i)):t[o]=i}}),t},isEmail:function(e,t){return t?/^(?:[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?[ ,;]*)+$/i.test(e):/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(e)},isPhoneNumber:function(e){return/\+?1[0-9]{3}[0-9a-z]{7}/im.test(e.toString().split(/[^0-9a-z\+]/im).join(""))},argumentsToArray:function(e){return Array.prototype.slice.call(e||[],0)},isDate:function(e){return"date"===this.type(e)},isFunction:function(e){return"function"===this.type(e)},isArray:Array.isArray||function(e){return"array"===this.type(e)},isWindow:function(e){return e&&"object"==typeof e&&"setInterval"in e},isNaN:function(e){return null==e||!rdigit.test(e)||isNaN(e)},type:function(e){return null==e?String(e):class2type[toString.call(e)]||"object"},isPlainObject:function(e){if(!e||"object"!==this.type(e)||e.nodeType||this.isWindow(e))return!1;if(e.constructor&&!hasOwn.call(e,"constructor")&&!hasOwn.call(e.constructor.prototype,"isPrototypeOf"))return!1;var t;for(t in e);return void 0===t||hasOwn.call(e,t)},getProperty:function(obj,property){try{return eval("obj."+property)}catch(e){return void 0}},poll:function(e,t,r){this.stopPolling(r),t=t||1e3;var n=function(r){return r=r||t,t=r,setTimeout(function(){e(n,r)},r)};return n()},stopPolling:function(e){e&&clearTimeout(e)},parseString:function(e){return e?e.toString():""},parseNumber:function(e){return e?(e=parseFloat(e),isNaN(e)?0:e):0},$get:function(){return Utils}};return exports}({}),core_Log=function(e){"use strict";var t=core_Utils,r=e={logDebug:!1,logInfo:!1,logWarnings:!1,logErrors:!1,addTimestamps:!0,console:console||{log:function(){},warn:function(){},info:function(){},error:function(){}},disableAll:function(){this.logDebug=!1,this.logInfo=!1,this.logWarnings=!1,this.logErrors=!1},enableAll:function(){this.logDebug=!0,this.logInfo=!0,this.logWarnings=!0,this.logErrors=!0},parseArguments:function(e){return e=t.argumentsToArray(e),this.addTimestamps&&e.unshift((new Date).toLocaleString(),"-"),e},debug:function(){this.logDebug&&this.console.log.apply(this.console,this.parseArguments(arguments))},info:function(){this.logInfo&&this.console.info.apply(this.console,this.parseArguments(arguments))},warn:function(){this.logWarnings&&this.console.warn.apply(this.console,this.parseArguments(arguments))},error:function(){this.logErrors&&this.console.error.apply(this.console,this.parseArguments(arguments))},$get:function(){return r}};return e}({}),core_xhr_XhrResponse=function(e){"use strict";function t(){this.responses=[]}return t.prototype.add=function(e){this.responses.push(e)},t.prototype.clear=function(){this.responses=[]},t.prototype.find=function(e){var t=null;return this.responses.forEach(function(r){e.url.indexOf(r.path)>-1&&(!r.test||r.test(e))&&(t=r)}),t},e={Class:t,$get:function(e){return e.createSingleton("XhrResponse",function(){return new t(e)})}}}({}),core_xhr_XhrMock=function(e){"use strict";function t(e){this.responses=core_xhr_XhrResponse.$get(e),this.async=!0,this.method="",this.url="",this.requestHeaders={},this.withCredentials=!1,this.data=null,this.readyState=0,this.responseHeaders={},this.status=0,this.context=e}var r=core_Log,n=core_Utils;return t.prototype.getResponseHeader=function(e){return this.responseHeaders[e.toLowerCase()]},t.prototype.setRequestHeader=function(e,t){this.requestHeaders[e.toLowerCase()]=t},t.prototype.open=function(e,t,r){this.method=e,this.url=t,this.async=r},t.prototype.send=function(e){function t(e){"application/json"==this.getResponseHeader("Content-Type")&&(e=JSON.stringify(e)),this.responseText=e,setTimeout(function(){this.onload&&this.onload()}.bind(this),1)}var o=this.getRequestHeader("Content-Type");this.data=e,this.data&&"string"==typeof this.data&&("application/json"==o&&(this.data=JSON.parse(this.data)),"application/x-www-form-urlencoded"==o&&(this.data=n.parseQueryString(this.data))),r.debug("API REQUEST",this.method,this.url);var i=this.responses.find(this);if(!i)return void setTimeout(function(){this.onerror&&this.onerror(new Error("Unknown request: "+this.url))}.bind(this),1);this.setStatus(200),this.setResponseHeader("Content-Type","application/json");var s=i.response(this),u=this.context.getPromise();s instanceof u?s.then(t.bind(this))["catch"](this.onerror.bind(this)):t.call(this,s)},t.prototype.abort=function(){r.debug("XhrMock.destroy(): Aborted")},t.prototype.getRequestHeader=function(e){return this.requestHeaders[e.toLowerCase()]},t.prototype.setResponseHeader=function(e,t){this.responseHeaders[e.toLowerCase()]=t},t.prototype.setStatus=function(e){return this.status=e,this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Context=function(e){"use strict";function t(e){this.singletons={},this.injections=e,this.stubPubnub=!1,this.stubAjax=!1}return t.prototype.createSingleton=function(e,t){return this.singletons[e]||(this.singletons[e]=t()),this.singletons[e]},t.prototype.usePubnubStub=function(e){return this.stubPubnub=!!e,this},t.prototype.useAjaxStub=function(e){return this.stubAjax=!!e,this},t.prototype.getCryptoJS=function(){return this.injections.CryptoJS},t.prototype.getPubnub=function(){return this.stubPubnub?core_pubnub_PubnubMock.$get(this):this.injections.PUBNUB},t.prototype.getLocalStorage=function(){return this.injections.localStorage},t.prototype.getPromise=function(){return this.injections.Promise},t.prototype.getXHR=function(){return this.stubAjax?core_xhr_XhrMock.$get(this):new this.injections.XHR},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Observable=function(e){function t(){if(!(this instanceof t))throw new Error("Observable(): New operator was omitted");Object.defineProperty(this,"listeners",{value:{},enumerable:!1,writable:!0}),Object.defineProperty(this,"oneTimeEvents",{value:{},enumerable:!1,writable:!0}),Object.defineProperty(this,"oneTimeArguments",{value:{},enumerable:!1,writable:!0})}var r=core_Utils,n=core_Log;return Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.hasListeners=function(e){return e in this.listeners},t.prototype.registerOneTimeEvent=function(e){this.oneTimeEvents[e]=!1,this.oneTimeArguments[e]=[]},t.prototype.on=function(e,t){if("string"==typeof e&&(e=[e]),!e)throw new Error("No events to subscribe to");if("function"!=typeof t)throw new Error("Callback must be a function");var r=this;return e.forEach(function(e){r.hasListeners(e)||(r.listeners[e]=[]),r.listeners[e].push(t),r.isOneTimeEventFired(e)&&(n.debug("Observable.on(%s): One-time event has been fired already, executing callback",e),t.apply(r,r.getOneTimeEventArgumens(e)))}),this},t.prototype.emit=function(e){if(this.isOneTimeEventFired(e))return n.debug("Observable.emit(%s): One-time event has been fired already",e),null;var t=this,o=r.argumentsToArray(arguments).splice(1),i=null;return this.isOneTimeEvent(e)&&(this.setOneTimeEventFired(e),this.setOneTimeEventArgumens(e,o)),this.hasListeners(e)?(this.listeners[e].some(function(e){return i=e.apply(t,o),i===!1}),i):null},t.prototype.off=function(e,t){var r=this;if(t){if(!this.hasListeners(e))return this;this.listeners[e].forEach(function(n,o){n===t&&delete r.listeners[e][o]})}else delete this.listeners[e];return this},t.prototype.isOneTimeEvent=function(e){return e in this.oneTimeEvents},t.prototype.isOneTimeEventFired=function(e){return this.isOneTimeEvent(e)?this.oneTimeEvents[e]:!1},t.prototype.setOneTimeEventFired=function(e){this.oneTimeEvents[e]=!0},t.prototype.setOneTimeEventArgumens=function(e,t){this.oneTimeArguments[e]=t},t.prototype.getOneTimeEventArgumens=function(e){return this.oneTimeArguments[e]},t.prototype.offAll=function(){this.listeners={},this.oneTimeEvents={},this.oneTimeArguments={}},t.prototype.destroy=function(){return this.offAll(),n.debug("Observable.destroy(): Listeners were destroyed"),this},t.prototype.emitAndCallback=function(e,t,n){return t=r.argumentsToArray(t),e&&this.emit.apply(this,[e].concat(t)),n&&n.apply(this,t),this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_AjaxObserver=function(e){"use strict";function t(){r.call(this)}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),t.prototype.events={beforeRequest:"beforeRequest",requestSuccess:"requestSuccess",requestError:"requestError"},e={Class:t,$get:function(e){return e.createSingleton("AjaxObserver",function(){return new t})}}}({}),core_Ajax=function(e){"use strict";function t(e){r.call(this),this.data=null,this.error=null,this.response="",this.headers={},this.status=0,this.options={},this.context=e,this.observer=core_AjaxObserver.$get(e),this.xhr=null}var r=core_Observable.Class,n=core_Utils,o=core_Log,i="application/json",s="multipart/mixed",u="--",c=":",a="\n\n";return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.getOptions=function(){return this.options},t.prototype.setOptions=function(e){return e&&(this.options=e),this},t.prototype.setRequestHeader=function(e,t){return this.options.headers=this.options.headers||{},this.options.headers[e.toLowerCase()]=t,this},t.prototype.setResponseHeader=function(e,t){return this.headers[e.toLowerCase()]=t,this},t.prototype.getRequestHeader=function(e){return this.options.headers=this.options.headers||{},this.options.headers[e.toLowerCase()]},t.prototype.getResponseHeader=function(e){return this.headers[e.toLowerCase()]},t.prototype.isResponseContentType=function(e){return this.getResponseContentType().indexOf(e)>-1},t.prototype.getResponseContentType=function(){return this.getResponseHeader("Content-Type")||""},t.prototype.isResponseMultipart=function(){return this.isResponseContentType(s)},t.prototype.isResponseUnauthorized=function(){return 401==this.status},t.prototype.getContentType=function(){return this.getResponseContentType()},t.prototype.isMultipart=function(){return this.isResponseMultipart()},t.prototype.isUnauthorized=function(){return this.isResponseUnauthorized()},t.prototype.isLoaded=function(){return!!this.status},t.prototype.checkOptions=function(){if(!this.options.url)throw new Error("Url is not defined");var e={Accept:i,"Content-Type":i},t=this.options.headers||{};if(this.options.headers={},Object.keys(e).forEach(function(t){this.setRequestHeader(t,e[t])},this),Object.keys(t).forEach(function(e){this.setRequestHeader(e,t[e])},this),this.options.method=this.options.method?this.options.method.toUpperCase():"GET",this.options.async=void 0!==this.options.async?this.options.async:!0,this.options.get=this.options.get||null,this.options.post=this.options.post?"string"!=typeof this.options.post&&this.getRequestHeader("Content-Type")===i?JSON.stringify(this.options.post):this.options.post:"",this.options.url=this.options.url+(this.options.get?(this.options.url.indexOf("?")>-1?"&":"?")+n.queryStringify(this.options.get):""),["GET","POST","PUT","DELETE","PATCH","OPTIONS"].indexOf(this.options.method)<0)throw new Error("Method has wrong value");return delete this.options.get,this},t.prototype.send=function(){return this.observer.emit(this.observer.events.beforeRequest,this),this.request().then(function(e){if(e.parseResponse(),e.error)throw e.error;return e}.bind(this)).then(function(e){return this.observer.emit(this.observer.events.requestSuccess,e),e}.bind(this))["catch"](function(e){throw e.ajax=this,this.observer.emit(this.observer.events.requestError,e),e}.bind(this))},t.prototype.getXHR=function(){return this.context.getXHR()},t.prototype.request=function(){return new(this.context.getPromise())(function(e,t){this.checkOptions();var r=this.options,o=this.getXHR();o.open(r.method,r.url,r.async),o.withCredentials=!0,o.onload=function(){this.status=o.status,this.response=o.responseText,this.setResponseHeader("Content-Type",o.getResponseHeader("Content-Type")||i),e(this)}.bind(this),o.onerror=function(){t(new Error("The request cannot be sent"))},n.forEach(r.headers,function(e,t){o.setRequestHeader(t,e)}),o.send("GET"===r.method?null:r.post),this.xhr=o}.bind(this))},t.prototype.checkStatus=function(e){return"2"==e.toString().substr(0,1)},t.prototype.parseResponse=function(){try{if(this.isResponseMultipart()){var e=this.getResponseContentType().match(/boundary=([^;]+)/i)[1],r=this.response.split(u+e);""==r[0].trim()&&r.shift(),r[r.length-1].trim()==u&&r.pop(),r=r.map(function(e){var r=e.trim().replace(/\r/g,"").split(a),n=new t(this.context);return(r.length>1?r.shift():"").split("\n").forEach(function(e){if(0==e.length)return res;var t=e.split(c),r=t.shift().trim();n.setResponseHeader(r,t.join(c).trim())},this),n.response=r.join(a),n},this);var n=r.shift();n.status=this.status,n.parseResponse(),this.data=r.map(function(e,t){return e.status=n.data.response[t].status,e.parseResponse(),e},this)}else this.data="string"==typeof this.response&&this.isResponseContentType(i)?JSON.parse(this.response):this.response,this.checkStatus(this.status)||(this.error=new Error(this.data.message||this.data.error_description||this.data.description||"Unknown error"))}catch(s){o.error("Ajax.parseResponse(): Unable to parse data"),o.error(s.stack||s),o.error(this.response),this.error=s}return this},t.prototype.destroy=function(){return this.xhr&&this.xhr.abort(),r.prototype.destroy.call(this)},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Cache=function(e){"use strict";function t(e){r.call(this),this.prefix="rc-",this.storage=e.getLocalStorage()}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.prefixKey=function(e){return this.prefix+e},t.prototype.setItem=function(e,t){return this.storage.setItem(this.prefixKey(e),JSON.stringify(t)),this},t.prototype.removeItem=function(e){return this.storage.removeItem(this.prefixKey(e)),this},t.prototype.getItem=function(e){var t=this.storage.getItem(this.prefixKey(e));return t?JSON.parse(t):null},t.prototype.clean=function(){for(var e in this.storage)this.storage.hasOwnProperty(e)&&0===e.indexOf(this.prefix)&&(this.storage.removeItem(e),delete this.storage[e]);return this},e={Class:t,$get:function(e){return e.createSingleton("Cache",function(){return new t(e)})}}}({}),core_Platform=function(e){"use strict";function t(e){n.call(this),this.server="",this.apiKey="",this.account="~",this.urlPrefix="/restapi",this.apiVersion="v1.0",this.accountPrefix="/account/",this.accessTokenTtl=600,this.refreshTokenTtl=36e3,this.refreshTokenTtlRemember=604800,this.refreshHandicapMs=6e4,this.refreshDelayMs=100,this.clearCacheOnRefreshError=!0,this.refreshPromise=null,this.context=e}var r=core_Utils,n=core_Observable.Class,o=core_Log,i="forced";return t.prototype=Object.create(n.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.cacheId="platform",t.prototype.pollInterval=250,t.prototype.releaseTimeout=5e3,t.prototype.events={accessViolation:"accessViolation",logoutSuccess:"logoutSuccess",logoutError:"logoutError",authorizeSuccess:"authorizeSuccess",authorizeError:"authorizeError",refreshSuccess:"refreshSuccess",refreshError:"refreshError"},t.prototype.getStorage=function(){return core_Cache.$get(this.context)},t.prototype.getAjax=function(){return core_Ajax.$get(this.context)},t.prototype.clearStorage=function(){return this.getStorage().clean(),this},t.prototype.remember=function(e){var t=this.cacheId+"-remember";return void 0!=e?(this.getStorage().setItem(t,e),this):this.getStorage().getItem(t)||!1},t.prototype.authorize=function(e){return e=e||{},e.remember=e.remember||!1,this.authCall({url:"/restapi/oauth/token",post:{grant_type:"password",username:e.username,extension:e.extension||"",password:e.password,access_token_ttl:this.accessTokenTtl,refresh_token_ttl:e.remember?this.refreshTokenTtlRemember:this.refreshTokenTtl}}).then(function(t){return this.setCache(t.data).remember(e.remember).emitAndCallback(this.events.authorizeSuccess,[]),t}.bind(this))["catch"](function(e){throw this.clearStorage().emitAndCallback(this.events.authorizeError,[e]),e}.bind(this))},t.prototype.isPaused=function(){var e=this.getStorage(),t=this.cacheId+"-refresh";return!!e.getItem(t)&&Date.now()-parseInt(e.getItem(t))r.refreshExpireTime?t(new Error("Refresh token has expired")):this.isPaused()?void e(this.authCall({url:"/restapi/oauth/token",post:{grant_type:"refresh_token",refresh_token:r.refresh_token,access_token_ttl:this.accessTokenTtl,refresh_token_ttl:this.remember()?this.refreshTokenTtlRemember:this.refreshTokenTtl}})):t(new Error("Queue was resumed before refresh call")):t(new Error("Refresh token is missing"))}.bind(this),this.refreshDelayMs))}.bind(this));return e.then(function(e){if(!e||!e.data)return e;if(o.info("Platform.refresh(): Token was refreshed"),!e.data.refresh_token||!e.data.access_token){var t=new Error("Malformed OAuth response");throw t.ajax=e,t}return this.setCache(e.data).resume(),e}.bind(this)).then(function(e){return this.emit(this.events.refreshSuccess,e),e}.bind(this))["catch"](function(e){throw this.clearCacheOnRefreshError&&this.clearStorage(),this.emitAndCallback(this.events.accessViolation,[e]).emitAndCallback(this.events.refreshError,[e]),e}.bind(this))},t.prototype.logout=function(){return this.pause(),this.authCall({url:"/restapi/oauth/revoke",get:{token:this.getToken()}}).then(function(e){return this.resume().clearStorage().emit(this.events.logoutSuccess,e),e}.bind(this))["catch"](function(e){throw this.resume().emitAndCallback(this.events.accessViolation,[e]).emitAndCallback(this.events.logoutError,[e]),e}.bind(this))},t.prototype.refreshPolling=function(e){return this.refreshPromise?this.refreshPromise:(this.refreshPromise=new(this.context.getPromise())(function(t,n){o.warn("Platform.refresh(): Refresh is already in progress polling started"),r.poll(function(r){return this.isPaused()?r():(this.refreshPromise=null,this.resume(),void(this.isTokenValid()?t(e):n(new Error("Automatic authentification timeout"))))}.bind(this),this.pollInterval)}.bind(this)),this.refreshPromise)},t.prototype.getToken=function(){return this.getAuthData().access_token},t.prototype.getTokenType=function(){return this.getAuthData().token_type},t.prototype.getAuthData=function(){return this.getStorage().getItem(this.cacheId)||{token_type:"",access_token:"",expires_in:0,refresh_token:"",refresh_token_expires_in:0}},t.prototype.isTokenValid=function(){var e=this.getAuthData();return e.token_type==i||new Date(e.expireTime).getTime()-this.refreshHandicapMs>Date.now()&&!this.isPaused()},t.prototype.isAuthorized=function(){return this.isTokenValid()?this.context.getPromise().resolve(!0):this.refresh()},t.prototype.cancelAccessToken=function(){return this.setCache(r.extend(this.getAuthData(),{access_token:"",expires_in:0}))},t.prototype.setCache=function(e){var t=this.getAuthData();return o.info("Platform.setCache(): Tokens were updated, new:",e,", old:",t),e.expireTime=Date.now()+1e3*e.expires_in,e.refreshExpireTime=Date.now()+1e3*e.refresh_token_expires_in,this.getStorage().setItem(this.cacheId,e),this},t.prototype.forceAuthentication=function(){return this.setCache({token_type:i,access_token:"",expires_in:0,refresh_token:"",refresh_token_expires_in:0}),this},t.prototype.apiCall=function(e){return e=e||{},e.url=this.apiUrl(e.url,{addServer:!0}),this.isAuthorized().then(function(){var t=this.getToken();return this.getAjax().setOptions(e).setRequestHeader("Authorization",this.getTokenType()+(t?" "+t:"")).send()}.bind(this))["catch"](function(t){if(!t.ajax||!t.ajax.isResponseUnauthorized())throw t;return this.cancelAccessToken(),this.refresh().then(function(){return this.apiCall(e)}.bind(this))}.bind(this))},t.prototype.authCall=function(e){return e=e||{},e.method=e.method||"POST",e.post=r.queryStringify(e.post),e.url=this.apiUrl(e.url,{addServer:!0}),this.getAjax().setOptions(e).setRequestHeader("Content-Type","application/x-www-form-urlencoded").setRequestHeader("Accept","application/json").setRequestHeader("Authorization","Basic "+this.apiKey).send()},t.prototype.apiUrl=function(e,t){e=e||"",t=t||{};var r="";return t.addServer&&-1==e.indexOf("http://")&&-1==e.indexOf("https://")&&(r+=this.server),-1==e.indexOf(this.urlPrefix)&&(r+=this.urlPrefix+"/"+this.apiVersion),e.indexOf(this.accountPrefix)>-1&&r.replace(this.accountPrefix+"~",this.accountPrefix+this.account),r+=e,(t.addMethod||t.addToken)&&(r+=e.indexOf("?")>-1?"&":"?"),t.addMethod&&(r+="_method="+t.addMethod),t.addToken&&(r+=(t.addMethod?"&":"")+"access_token="+this.getToken()),r},e={Class:t,$get:function(e){return e.createSingleton("Platform",function(){return new t(e)})}}}({}),core_Subscription=function(e){"use strict";function t(e){r.call(this),this.eventFilters=[],this.timeout=null,this.subscription={eventFilters:[],expirationTime:"",expiresIn:0,deliveryMode:{transportType:"PubNub",encryption:!1,address:"",subscriberKey:"",secretKey:""},id:"",creationTime:"",status:"",uri:""},this.socket=null,this.context=e}var r=core_Observable.Class,n=core_Log,o=core_Utils,i=6e4;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.events={notification:"notification",removeSuccess:"removeSuccess",removeError:"removeError",renewSuccess:"renewSuccess",renewError:"renewError",subscribeSuccess:"subscribeSuccess",subscribeError:"subscribeError"},t.prototype.createPubnub=function(e){return new(this.getPubnub().ws)(e)},t.prototype.getPubnub=function(){return this.context.getPubnub()},t.prototype.getCrypto=function(){return this.context.getCryptoJS()},t.prototype.getPlatform=function(){return core_Platform.$get(this.context)},t.prototype.register=function(e){return this.isSubscribed()?this.renew(e):this.subscribe(e)},t.prototype.addEvents=function(e){return this.eventFilters=this.eventFilters.concat(e),this},t.prototype.setEvents=function(e){return this.eventFilters=e,this},t.prototype.getFullEventFilters=function(){return this.eventFilters.map(function(e){return this.getPlatform().apiUrl(e)}.bind(this))},t.prototype.subscribe=function(e){return e=e||{},e.events&&(this.eventFilters=e.events),this.clearTimeout(),new(this.context.getPromise())(function(e){if(!this.eventFilters||!this.eventFilters.length)throw new Error("Events are undefined");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({method:"POST",url:"/restapi/v1.0/subscription",post:{eventFilters:this.getFullEventFilters(),deliveryMode:{transportType:"PubNub"}}})}.bind(this)).then(function(e){return this.updateSubscription(e.data).subscribeAtPubnub().emit(this.events.subscribeSuccess,e.data),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.subscribeError,e),e}.bind(this))},t.prototype.renew=function(e){return e=e||{},e.events&&(this.eventFilters=e.events),this.clearTimeout(),new(this.context.getPromise())(function(e){if(!this.subscription||!this.subscription.id)throw new Error("Subscription ID is required");if(!this.eventFilters||!this.eventFilters.length)throw new Error("Events are undefined");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({method:"PUT",url:"/restapi/v1.0/subscription/"+this.subscription.id,post:{eventFilters:this.getFullEventFilters()}})}.bind(this)).then(function(e){return this.updateSubscription(e.data).emit(this.events.renewSuccess,e.data),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.renewError,e),e}.bind(this))},t.prototype.remove=function(e){return e=o.extend({async:!0},e),new(this.context.getPromise())(function(e){if(!this.subscription||!this.subscription.id)throw new Error("Subscription ID is required");e()}.bind(this)).then(function(){return this.getPlatform().apiCall({async:!!e.async,method:"DELETE",url:"/restapi/v1.0/subscription/"+this.subscription.id})}.bind(this)).then(function(e){return this.unsubscribe().emit(this.events.removeSuccess,e),e}.bind(this))["catch"](function(e){throw this.unsubscribe().emit(this.events.removeError,e),e}.bind(this))},t.prototype.destroy=function(){return this.unsubscribe(),r.prototype.destroy.call(this)},t.prototype.isSubscribed=function(){return this.subscription&&this.subscription.deliveryMode&&this.subscription.deliveryMode.subscriberKey&&this.subscription.deliveryMode.address},t.prototype.setTimeout=function(){var e=1e3*this.subscription.expiresIn-i;this.timeout=setTimeout(function(){this.renew({})}.bind(this),e)},t.prototype.clearTimeout=function(){clearTimeout(this.timeout)},t.prototype.updateSubscription=function(e){return this.clearTimeout(),this.subscription=e,this.setTimeout(),this},t.prototype.unsubscribe=function(){return this.clearTimeout(),this.socket&&this.socket.close(this.socket.CLOSE_NORMAL,"Connection terminated by client"),this.subscription=null,this},t.prototype.notify=function(e){if(this.isSubscribed()&&this.subscription.deliveryMode.encryptionKey){var t=this.getCrypto(),r=t.enc.Base64.parse(this.subscription.deliveryMode.encryptionKey),n=t.enc.Base64.parse(e),o=t.AES.decrypt({ciphertext:n},r,{mode:t.mode.ECB,padding:t.pad.Pkcs7}).toString(t.enc.Utf8);e=JSON.parse(o)}return this.emit(this.events.notification,e),this},t.prototype.subscribeAtPubnub=function(){if(!this.isSubscribed())return this;var e="wss://pubsub.pubnub.com//"+this.subscription.deliveryMode.subscriberKey+"/"+this.subscription.deliveryMode.address;return this.socket=this.createPubnub(e),this.socket.pubnub&&this.socket.pubnub.ready(),this.socket.onmessage=function(e){n.info("Subscription: Socket received message",e),this.notify(e.data)}.bind(this),this.socket.onclose=function(){n.info("Subscription: Socket closed")},this.socket.onerror=function(e){n.error("Subscription: Socket error"),n.error(e.stack||e)},this.socket.onopen=function(){n.info("Subscription: Socket open")},this},e={Class:t,$get:function(e){return new t(e)}}}({}),core_PageVisibility=function(e){"use strict";function t(){function e(e){e=e||window.event;var r="visible",o="hidden",i={focus:r,focusin:r,pageshow:r,blur:o,focusout:o,pagehide:o};n.visible=e.type in i?i[e.type]==r:!document[t],n.emit(n.events.change,n.visible)}r.call(this);var t="hidden",n=this;this.visible=!0,"undefined"!=typeof document&&"undefined"!=typeof window&&(t in document?document.addEventListener("visibilitychange",e):(t="mozHidden")in document?document.addEventListener("mozvisibilitychange",e):(t="webkitHidden")in document?document.addEventListener("webkitvisibilitychange",e):(t="msHidden")in document?document.addEventListener("msvisibilitychange",e):"onfocusin"in document?document.onfocusin=document.onfocusout=e:window.onpageshow=window.onpagehide=window.onfocus=window.onblur=e)}var r=core_Observable.Class;return t.prototype=Object.create(r.prototype),Object.defineProperty(t.prototype,"constructor",{value:t,enumerable:!1}),t.prototype.events={change:"change"},t.prototype.isVisible=function(){return this.visible},e={Class:t,$get:function(){return new t}}}({}),core_Helper=function(e){"use strict";function t(e){this.context=e}var r=core_Utils;return t.prototype.defaultProperty="id",t.prototype.getContext=function(){return this.context},t.prototype.createUrl=function(){return""},t.prototype.getId=function(e){return e&&e[this.defaultProperty]},t.prototype.isNew=function(e){return!this.getId(e)||!this.getUri(e)},t.prototype.resetAsNew=function(e){return e&&(delete e.id,delete e.uri),e},t.prototype.getUri=function(e){return e&&e.uri},t.prototype.parseMultipartResponse=function(e){return e.isResponseMultipart()?e.data.filter(function(e){return!e.error}).map(function(e){return e.data}):[e.data]},t.prototype.loadRequest=function(e,t){return r.extend(t||{},{url:t&&t.url||e&&this.getUri(e)||this.createUrl(),method:t&&t.method||"GET"})},t.prototype.saveRequest=function(e,t){if(!(e||t&&t.post))throw new Error("No Object");return r.extend(t||{},{method:t&&t.method||(this.isNew(e)?"POST":"PUT"),url:t&&t.url||this.getUri(e)||this.createUrl(),post:t&&t.post||e})},t.prototype.deleteRequest=function(e,t){if(t=t||{},!(this.getUri(e)||t&&t.url))throw new Error("Object has to be not new or URL must be provided");return r.extend(t||{},{method:t&&t.method||"DELETE",url:t&&t.url||this.getUri(e)})},t.prototype.syncRequest=function(e){return e=e||{},e.url=e.url||this.createUrl({sync:!0}),e.get=e.get||{},e.get.syncToken?e.get={syncType:"ISync",syncToken:e.get.syncToken}:e.get.syncType="FSync",e},t.prototype.nextPageExists=function(e){return e&&e.navigation&&"nextPage"in e.navigation},t.prototype.index=function(e,t,r){return t=t||this.getId.bind(this),e=e||[],e.reduce(function(e,n){var o=t(n);return!o||e[o]&&!r?e:(r?(e[o]||(e[o]=[]),e[o].push(n)):e[o]=n,e)},{})},t.prototype.merge=function(e,t,n,o){n=n||this.getId.bind(this),e=e||[],t=t||[];var i=this.index(t,n),s=[],u=e.map(function(e){var t=n(e),u=i[t];return u&&s.push(t),u?o?r.extend(e,u):u:e});return t.forEach(function(e){-1==s.indexOf(n(e))&&u.push(e)}),u},e={Class:t,$get:function(e){return new t(e)}}}({}),core_Validator=function(e){"use strict";var t=core_Utils,r=e={validate:function(e){var t={errors:{},isValid:!0}; +return t.errors=e.reduce(function(e,r){var n=r.validator();return n.length>0&&(t.isValid=!1,e[r.field]=e[r.field]||[],e[r.field]=e[r.field].concat(n)),e},{}),t},email:function(e,r){return function(){return e?t.isEmail(e,r)?[]:[new Error("Value has to be a valid email")]:[]}},phone:function(e){return function(){return e?t.isPhoneNumber(e)?[]:[new Error("Value has to be a valid US phone number")]:[]}},required:function(e){return function(){return e?[]:[new Error("Field is required")]}},length:function(e,t,r){return function(){var n=[];return e?(e=e.toString(),r&&e.lengtht&&n.push(new Error("Maximum length of "+t+" characters is required")),n):n}},$get:function(){return r}};return e}({}),core_List=function(e){"use strict";var t=core_Utils,r=e={propertyExtractor:function(e){return function(t){return e?t&&t[e]||null:t}},stringComparator:function(e,r){return t.parseString(e).localeCompare(t.parseString(r))},numberComparator:function(e,r){return t.parseNumber(e)-t.parseNumber(r)},comparator:function(e){function r(t,r){return e.compareFn(e.extractFn(t,e),e.extractFn(r,e),e)}return e=t.extend({extractFn:this.propertyExtractor(e&&e.sortBy||null),compareFn:this.stringComparator},e),r},equalsFilter:function(e,t){return t.condition===e},containsFilter:function(e,t){return e&&e.toString().indexOf(t.condition)>-1},regexpFilter:function(e,t){if(!(t.condition instanceof RegExp))throw new Error("Condition must be an instance of RegExp");return t.condition.test(e)},filter:function(e){function r(t){return e.reduce(function(e,r){return e&&r.condition?r.filterFn(r.extractFn(t,r),r):e},!0)}var n=this;return e=(e||[]).map(function(e){return t.extend({condition:"",extractFn:n.propertyExtractor(e&&e.filterBy||null),filterFn:n.equalsFilter},e)}),r},$get:function(){return r}};return e}({}),helpers_Country=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/country"},e={Class:t,$get:function(e){return e.createSingleton("CountryHelper",function(){return new t(e)})}}}({}),helpers_DeviceModel=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.getId=function(e){return e?e.id+(e.addons&&e.addons[0]?"-"+e.addons[0].id+"-"+e.addons[0].count:""):null},t.prototype.cleanForSaving=function(e){return e?(delete e.name,delete e.deviceClass,e.addons&&e.addons.length>0?e.addons.forEach(function(t,r){delete e.addons[r].name}):delete e.addons,e):null},t.prototype.devices=[{id:"-1",name:"Softphone"},{id:"0",name:"Existing device"},{id:"19",name:"Cisco SPA-525G2 Desk Phone",deviceClass:"Desk Phone"},{id:"23",name:"Polycom IP 321 Basic IP phone",deviceClass:"Desk Phone"},{id:"30",name:"Polycom IP 550 HD Manager IP phone",deviceClass:"Desk Phone"},{id:"37",name:"Polycom IP 6000 Conference Phone",deviceClass:"Conference Phone"},{id:"40",name:"Polycom IP 335 HD IP phone",deviceClass:"Desk Phone"},{id:"51",name:"Cisco SPA-303 Desk Phone",deviceClass:"Desk Phone"},{id:"16",name:"Cisco SPA-508G Desk Phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"1"}]},{id:"16",name:"Cisco SPA-508G Desk Phone with 2 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"2"}]},{id:"16",name:"Cisco SPA-508G Desk Phone",deviceClass:"Desk Phone"},{id:"19",name:"Cisco SPA-525G2 Desk Phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"1"}]},{id:"19",name:"Cisco SPA-525G2 Desk Phone with 2 Expansion Modules Desk Phone",addons:[{id:"2",name:"Cisco Sidecar",count:"2"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 1 Expansion Module",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"1"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 2 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"2"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone with 3 Expansion Modules",deviceClass:"Desk Phone",addons:[{id:"1",name:"Plolycom Expansion",count:"3"}]},{id:"34",name:"Polycom IP 650 HD Executive IP phone",deviceClass:"Desk Phone"},{id:"52",name:"Cisco SPA-122 ATA",deviceClass:"Analog Adapter"},{id:"53",name:"Polycom VVX-500 Color Touchscreen",deviceClass:"Desk Phone"},{id:"54",name:"Polycom VVX-310 Gigabit Ethernet Phone",deviceClass:"Desk Phone"},{id:"55",name:"Polycom VVX-410 Color Gigabit Ethernet Phone",deviceClass:"Desk Phone"}],e={Class:t,$get:function(e){return e.createSingleton("DeviceModelHelper",function(){return new t(e)})}}}({}),helpers_Language=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.languages=[{id:"1033",name:"English (US)"},{id:"3084",name:"French (Canada)"}],e={Class:t,$get:function(e){return e.createSingleton("LanguageHelper",function(){return new t(e)})}}}({}),helpers_State=function(e){"use strict";function t(e){r.call(this,e),this.countryHelper=helpers_Country.$get(e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/state"},t.prototype.filter=function(e){return e=o.extend({countryId:""},e),n.filter([{condition:e.countryId,filterFn:function(e,t){return this.countryHelper.getId(e.country)==t.condition}.bind(this)}])},e={Class:t,$get:function(e){return e.createSingleton("StateHelper",function(){return new t(e)})}}}({}),helpers_Location=function(e){"use strict";function t(e){r.call(this,e),this.state=helpers_State.$get(e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/location"},t.prototype.filter=function(e){var t=[];return e=o.extend({stateId:"",onlyUniqueNPA:!1},e),n.filter([{condition:e.stateId,filterFn:function(e,t){return this.state.getId(e.state)==t.condition}.bind(this)},{condition:e.onlyUniqueNPA,filterFn:function(e){return-1==t.indexOf(e.npa)?(t.push(e.npa),!0):!1}}])},t.prototype.comparator=function(e){return e=o.extend({sortBy:"npa"},e),"nxx"==e.sortBy&&(e.extractFn=function(e){return 1e6*parseInt(e.npa)+parseInt(e.nxx)},e.compareFn=n.numberComparator),n.comparator(e)},e={Class:t,$get:function(e){return e.createSingleton("LocationHelper",function(){return new t(e)})}}}({}),helpers_ShippingMethod=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.shippingMethods=[{id:"1",name:"Ground Shipping (5-7 business days)"},{id:"2",name:"2-days Shipping"},{id:"3",name:"Overnight Shipping"}],e={Class:t,$get:function(e){return e.createSingleton("ShippingMethodHelper",function(){return new t(e)})}}}({}),helpers_Timezone=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/dictionary/timezone"},e={Class:t,$get:function(e){return e.createSingleton("TimezoneHelper",function(){return new t(e)})}}}({}),helpers_Account=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/account/~"},e={Class:t,$get:function(e){return e.createSingleton("AccountHelper",function(){return new t(e)})}}}({}),helpers_BlockedNumber=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId?e.extensionId:"~")+"/blocked-number"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"phoneNumber",validator:n.phone(e.phoneNumber)},{field:"phoneNumber",validator:n.required(e.phoneNumber)},{field:"name",validator:n.required(e.name)}])},e={Class:t,$get:function(e){return e.createSingleton("BlockedNumberHelper",function(){return new t(e)})}}}({}),helpers_Extension=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_List,o=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.type={department:"Department",user:"User",announcement:"Announcement",voicemail:"Voicemail"},t.prototype.createUrl=function(e,t){return e=e||{},"/account/~"+(e.departmentId?"/department/"+e.departmentId+"/members":"/extension")+(t?"/"+t:"")},t.prototype.isUser=function(e){return e&&e.type==this.type.user},t.prototype.isDepartment=function(e){return e&&e.type==this.type.department},t.prototype.isAnnouncement=function(e){return e&&e.type==this.type.announcement},t.prototype.isVoicemail=function(e){return e&&e.type==this.type.voicemail},t.prototype.comparator=function(e){return n.comparator(o.extend({sortBy:"extensionNumber",compareFn:n.numberComparator},e))},t.prototype.filter=function(e){return e=o.extend({search:"",type:""},e),n.filter([{filterBy:"type",condition:e.type},{condition:e.search.toLocaleLowerCase(),filterFn:n.containsFilter,extractFn:function(e){return(e.name&&e.name.toLocaleLowerCase()+" ")+(e.extensionNumber&&e.extensionNumber.toString().toLocaleLowerCase())}}])},e={Class:t,$get:function(e){return e.createSingleton("ExtensionHelper",function(){return new t(e)})}}}({}),helpers_Presence=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_Helper.Class,n=core_Utils;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(t||"~")+"/presence"+(e.detailed?"?detailedTelephonyState=true":"")},t.prototype.getId=function(e){return e&&(this.extension.getId(e.extension)||e.extensionId)},t.prototype.isAvailable=function(e){return e&&"Available"==e.presenceStatus},t.prototype.getSubscription=function(e,t){return core_Subscription.$get(this.context).setEvents([this.createUrl(e,t)])},t.prototype.updateSubscription=function(e,t,r){var n=t.map(this.getId,this).map(function(e){return this.createUrl(r,e)},this);return e.addEvents(n),e},t.prototype.attachToExtensions=function(e,t,r){var o=this.index(t);e.forEach(function(e){var t=o[this.extension.getId(e)];t&&("presence"in e&&r?n.extend(e.presence,t):e.presence=t)},this)},t.prototype.isCallInProgress=function(e){return e&&"NoCall"!=e.telephonyStatus},e={Class:t,$get:function(e){return e.createSingleton("PresenceHelper",function(){return new t(e)})}}}({}),helpers_Contact=function(e){"use strict";function t(e){o.call(this,e)}var r=core_Utils,n=core_Validator,o=core_Helper.Class,i=core_List;return t.prototype=Object.create(o.prototype),t.prototype.createUrl=function(e,t){e=e||{};var r="/account/~/extension/"+(e.extensionId?e.extensionId:"~")+"/address-book";return e.sync?r+"-sync":r+(e.groupId?"/group/"+e.groupId+"/contact":"/contact")+(t?"/"+t:"")},t.prototype.getFieldValues=function(e,t,r){return t.reduce(function(t,n){return e&&e[n]&&(r?t[n]=e[n]:t.push(e[n])),t},r?{}:[])},t.prototype.getFullName=function(e){return this.getFieldValues(e,this.nameFields).join(" ")},t.prototype.getEmails=function(e,t){return this.getFieldValues(e,this.emailFields,t)},t.prototype.getPhones=function(e,t){return this.getFieldValues(e,this.phoneFields,t)},t.prototype.getFaxes=function(e,t){return this.getFieldValues(e,this.faxFields,t)},t.prototype.getAddresses=function(e,t){return this.getFieldValues(e,this.addressFields,t)},t.prototype.isAlive=function(e){return"Alive"==e.availability},t.prototype.match=function(e,t,n){function o(e){if(!i){var r=n.transformFn(e,n);if(r){var o=n.strict?r==t:r.indexOf(t)>-1;o&&(i=e)}}}n=r.extend({fields:[].concat(this.nameFields,this.emailFields,this.phoneFields,this.faxFields,this.otherFields),inAddresses:!0,transformFn:function(e){return e?e.toString().toLocaleLowerCase():""},strict:!1},n),t=n.transformFn(t,n);var i=null;return t?(n.fields.forEach(function(t){o(e[t])}),n.inAddresses&&!i&&this.addressFields.forEach(function(t){e[t]&&!i&&this.addressSubFields.forEach(function(r){o(e[t][r])})},this),i):i},t.prototype.matchAsPhone=function(e,t,n){return this.match(e,t,r.extend({fields:[].concat(this.phoneFields,this.faxFields),inAddresses:!1,transformFn:function(e){return e?e.toString().replace(/[^\d\w]/gi,""):""},strict:!1},n))},t.prototype.attachToCallerInfos=function(e,t,n){var o=this,i=this.index(e,function(e){return e.phoneNumber},!0);r.forEach(i,function(e,r){var i=null,s=null;t.some(function(e){return s=o.matchAsPhone(e,r,n),s&&(i=e),s}),i&&e.forEach(function(e){e.contact=i,e.contactPhone=s})})},t.prototype.comparator=function(e){var t=this;return i.comparator(r.extend({extractFn:function(e){return t.getFullName(e)}},e))},t.prototype.filter=function(e){var t=this;return e=r.extend({alive:!0,startsWith:"",phonesOnly:!1,faxesOnly:!1},e),i.filter([{condition:e.alive,filterFn:this.isAlive},{condition:e.startsWith,filterFn:function(e,r){return t.match(e,r.condition)}},{condition:e.phonesOnly,filterFn:function(e){return t.getPhones(e).length>0}},{condition:e.faxesOnly,filterFn:function(e){return t.getFaxes(e).length>0}}])},t.prototype.validate=function(e){return n.validate([{field:"firstName",validator:n.required(e.firstName)},{field:"lastName",validator:n.required(e.lastName)},{field:"email",validator:n.email(e.email)},{field:"email2",validator:n.email(e.email2)},{field:"email3",validator:n.email(e.email3)}])},t.prototype.phoneFields=["homePhone","homePhone2","businessPhone","businessPhone2","mobilePhone","companyPhone","assistantPhone","carPhone","otherPhone","callbackPhone"],t.prototype.faxFields=["businessFax","otherFax"],t.prototype.addressFields=["homeAddress","businessAddress","otherAddress"],t.prototype.addressSubFields=["street","city","state","zip"],t.prototype.nameFields=["firstName","middleName","lastName","nickName"],t.prototype.otherFields=["company","jobTitle","webPage","notes"],t.prototype.emailFields=["email","email2","email3"],e={Class:t,$get:function(e){return e.createSingleton("ContactHelper",function(){return new t(e)})}}}({}),helpers_Call=function(e){"use strict";function t(e){r.call(this,e),this.presence=helpers_Presence.$get(e),this.contact=helpers_Contact.$get(e)}var r=core_Helper.Class,n=core_Utils,o=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"personal"in e||"extensionId"in e||(e.personal=!0),"/account/~/"+(e.personal||e.extensionId?"extension/"+(e.extensionId||"~")+"/":"")+(e.active?"active-calls":"call-log")+(t?"/"+t:"")},t.prototype.getSessionId=function(e){return e&&e.sessionId},t.prototype.isInProgress=function(e){return e&&"In Progress"==e.result},t.prototype.isAlive=function(e){return e&&"Alive"==e.availability},t.prototype.isInbound=function(e){return e&&"Inbound"==e.direction},t.prototype.isOutbound=function(e){return!this.isInbound(e)},t.prototype.isMissed=function(e){return e&&"Missed"==e.result},t.prototype.isFindMe=function(e){return e&&"FindMe"==e.action},t.prototype.getCallerInfo=function(e){return this.isInbound(e)?e.from:e.to},t.prototype.getAllCallerInfos=function(e){return[this.getCallerInfo(e)].concat(this.isInbound(e)?e.to:e.from)},t.prototype.formatDuration=function(e){function t(e){return 10>e?"0"+e:e}var r=parseInt(e.duration),n=Math.floor(r/3600),o=Math.floor(r%3600/60),i=Math.floor(r%60);return(n?n+":":"")+t(o)+":"+t(i)},t.prototype.filter=function(e){return e=n.extend({alive:!0,direction:"",type:""},e),o.filter([{filterBy:"direction",condition:e.direction},{filterBy:"type",condition:e.type}])},t.prototype.comparator=function(e){return o.comparator(n.extend({sortBy:"startTime"},e))},t.prototype.attachContacts=function(e,t,r){var n=this,o=t.reduce(function(e,t){return e.concat(n.getAllCallerInfos(t))},[]);this.contact.attachToCallerInfos(o,e,r)},t.prototype.checkMergeability=function(e,t,r){function n(e){return new Date(e).getTime()}return(!r.strict||e.action&&-1!=e.action.toLowerCase().indexOf("ringout"))&&"Outbound"==e.direction&&"Inbound"==t.direction&&(!t.startTime&&!e.startTime||Math.abs(n(t.startTime)-n(e.startTime))<(r.maxStartTimeDiscrepancy||5e3))&&t.from.phoneNumber==e.to.phoneNumber&&(t.to.phoneNumber==e.from.phoneNumber||t.to.name==e.from.name)},t.prototype.combineCalls=function(e,t,r){r=r||{};var n=[];return e.hasSubsequent=!0,r.merge?(e.duration=e.duration>t.duration?e.duration:t.duration,e.from=t.to,e.to=t.from,n.push(e)):(t.subsequent=!0,t.startTime=e.startTime,n.push(e),n.push(t)),n},t.prototype.processCalls=function(e,t){var r=[],n=[],o=this;return e.forEach(function(i){var s=!1;i.subsequent=!1,i.hasSubsequent=!1,e.some(function(e){return i===e?!1:(o.checkMergeability(i,e,t)&&(r=r.concat(o.combineCalls(i,e,t)),n.push(i),n.push(e),s=!0),s)})}),e.forEach(function(e){-1==n.indexOf(e)&&r.push(e)}),r},t.prototype.parsePresenceCalls=function(e){return e.map(function(e){return{id:e.id,uri:"",sessionId:e.sessionId,from:{phoneNumber:e.from},to:{phoneNumber:e.to},direction:e.direction,startTime:"",duration:0,type:"",action:"",result:this.presence.isCallInProgress(e)?"In Progress":e.telephonyStatus,telephonyStatus:e.telephonyStatus}},this)},t.prototype.getSignature=function(e){function t(e){return(e||"").toString().replace(/[^0-9]/gi,"")}return e.direction+"|"+(e.from&&t(e.from.phoneNumber))+"|"+(e.to&&t(e.to.phoneNumber))},t.prototype.mergePresenceCalls=function(e,t){var r=new Date,n=this.parsePresenceCalls(t&&t.activeCalls||[]).map(function(e){return delete e.startTime,e});return e=this.merge(e||[],n,this.getSessionId,!0),e.forEach(function(e){e.startTime||(e.startTime=r.toISOString())}),e},t.prototype.mergeAll=function(e,t,r){var n=this.merge(e||[],t||[],this.getSessionId,!0);return this.merge(n,r||[],this.getSessionId,!0)},e={Class:t,$get:function(e){return e.createSingleton("CallHelper",function(){return new t(e)})}}}({}),helpers_Conferencing=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(){return"/account/~/extension/~/conferencing"},e={Class:t,$get:function(e){return e.createSingleton("ConferencingHelper",function(){return new t(e)})}}}({}),helpers_ContactGroup=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return"/account/~/extension/~/address-book/group"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"groupName",validator:n.required(e&&e.groupName)}])},e={Class:t,$get:function(e){return e.createSingleton("ContactGroupHelper",function(){return new t(e)})}}}({}),helpers_Device=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e),this.deviceModel=helpers_DeviceModel.$get(e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},e.order?"/account/~/order":"/account/~"+(e.extensionId?"/extension/"+e.extensionId:"")+"/device"+(t?"/"+t:"")},t.prototype.validate=function(e){return n.validate([{field:"emergencyServiceAddress-street",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.street)},{field:"emergencyServiceAddress-city",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.city)},{field:"emergencyServiceAddress-state",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.state)},{field:"emergencyServiceAddress-country",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.country)},{field:"emergencyServiceAddress-zip",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.zip)},{field:"emergencyServiceAddress-customerName",validator:n.required(e&&e.emergencyServiceAddress&&e.emergencyServiceAddress.customerName)},{field:"extension",validator:n.required(this.extension.getId(e&&e.extension))},{field:"model",validator:n.required(this.deviceModel.getId(e&&e.model))}])},e={Class:t,$get:function(e){return e.createSingleton("DeviceHelper",function(){return new t(e)})}}}({}),helpers_ForwardingNumber=function(e){"use strict";function t(e){r.call(this,e)}var r=core_Helper.Class,n=core_Utils,o=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId||"~")+"/forwarding-number"+(t?"/"+t:"")},t.prototype.getId=function(e){return e.id||e.phoneNumber},t.prototype.hasFeature=function(e,t){return!!e.features&&-1!=e.features.indexOf(t)},t.prototype.comparator=function(e){return o.comparator(n.extend({sortBy:"label"},e))},t.prototype.filter=function(e){var t=this;return e=n.extend({features:[]},e),o.filter([{condition:e.features.length,filterFn:function(r){return e.features.some(function(e){return t.hasFeature(r,e)})}}])},e={Class:t,$get:function(e){return e.createSingleton("ForwardingNumberHelper",function(){return new t(e)})}}}({}),helpers_Message=function(e){"use strict";function t(e){r.call(this,e),this.platform=core_Platform.$get(e),this.contact=helpers_Contact.$get(e)}var r=core_Helper.Class,n=core_Validator,o=core_Utils,i=core_List;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){e=e||{};var r="/account/~/extension/"+(e.extensionId||"~");return e.fax?r+"/fax":e.sms?r+"/sms":e.pager?r+"/company-pager":e.sync?r+"/message-sync":r+"/message-store"+(t?"/"+t:"")},t.prototype.isInbound=function(e){return e&&"Inbound"==e.direction},t.prototype.isOutbound=function(e){return!this.isInbound(e)},t.prototype.isSMS=function(e){return e&&"SMS"==e.type},t.prototype.isPager=function(e){return e&&"Pager"==e.type},t.prototype.isVoiceMail=function(e){return e&&"VoiceMail"==e.type},t.prototype.isFax=function(e){return e&&"Fax"==e.type},t.prototype.isAlive=function(e){return e&&"Alive"==e.availability},t.prototype.isRead=function(e){return"Read"==e.readStatus},t.prototype.setIsRead=function(e,t){return e.readStatus=t?"Read":"Unread",e},t.prototype.getAttachmentUrl=function(e,t){return e.attachments[t]?this.platform.apiUrl(e.attachments[t].uri,{addMethod:"GET",addServer:!0,addToken:!0}):""},t.prototype.getAttachmentContentType=function(e,t){return e.attachments[t]?e.attachments[t].contentType:""},t.prototype.getSubscription=function(e){return core_Subscription.$get(this.context).setEvents([this.createUrl(e)])},t.prototype.getCallerInfos=function(e){return this.isInbound(e)?[e.from]:e.to},t.prototype.getAllCallerInfos=function(e){return this.getCallerInfos(e).concat(this.isInbound(e)?e.to:[e.from])},t.prototype.comparator=function(e){return i.comparator(o.extend({sortBy:"creationTime"},e))},t.prototype.filter=function(e){return e=o.extend({search:"",alive:!0,direction:"",conversationId:"",readStatus:""},e),i.filter([{condition:e.alive,filterFn:this.isAlive},{filterBy:"type",condition:e.type},{filterBy:"direction",condition:e.direction},{filterBy:"conversationId",condition:e.conversationId},{filterBy:"readStatus",condition:e.readStatus},{filterBy:"subject",condition:e.search,filterFn:i.containsFilter}])},t.prototype.attachContacts=function(e,t,r){var n=this,o=t.reduce(function(e,t){return e.concat(n.getAllCallerInfos(t))},[]);this.contact.attachToCallerInfos(o,e,r)},t.prototype.shorten=function(e){return{from:e.from,to:e.to,text:e.subject}},t.prototype.validateSMS=function(e){return n.validate([{field:"to",validator:n.required(o.getProperty(e,"to[0].phoneNumber"))},{field:"from",validator:n.required(o.getProperty(e,"from.phoneNumber"))},{field:"subject",validator:n.required(o.getProperty(e,"subject"))},{field:"subject",validator:n.length(o.getProperty(e,"subject"),160)}])},t.prototype.validatePager=function(e){return n.validate([{field:"to",validator:n.required(o.getProperty(e,"to.extensionNumber"))},{field:"from",validator:n.required(o.getProperty(e,"from.extensionNumber"))},{field:"subject",validator:n.required(o.getProperty(e,"subject"))},{field:"subject",validator:n.length(o.getProperty(e,"subject"),160)}])},e={Class:t,$get:function(e){return e.createSingleton("MessageHelper",function(){return new t(e)})}}}({}),helpers_PhoneNumber=function(e){"use strict";function t(e){o.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_List,n=core_Utils,o=core_Helper.Class;return t.prototype=Object.create(o.prototype),t.prototype.createUrl=function(e,t){return e=e||{},e.lookup?"/number-pool/lookup":"/account/~"+(e.extensionId?"/extension/"+e.extensionId:"")+"/phone-number"+(t?"/"+t:"")},t.prototype.isSMS=function(e){return this.hasFeature(e,"SmsSender")},t.prototype.hasFeature=function(e,t){return!!e.features&&-1!=e.features.indexOf(t)},t.prototype.reserve=function(e,t){e.reservedTill=new Date(t).toISOString()},t.prototype.unreserve=function(e){e.reservedTill=null},t.prototype.comparator=function(e){return r.comparator(n.extend({extractFn:function(e){return e.usageType+"-"+e.paymentType+"-"+e.type}},e))},t.prototype.filter=function(e){var t=this;return e=n.extend({usageType:"",paymentType:"",type:"",features:[]},e),r.filter([{filterBy:"usageType",condition:e.usageType},{filterBy:"paymentType",condition:e.paymentType},{filterBy:"type",condition:e.type},{condition:e.features.length,filterFn:function(r){return e.features.some(function(e){return t.hasFeature(r,e)})}}])},e={Class:t,$get:function(e){return e.createSingleton("PhoneNumberHelper",function(){return new t(e)})}}}({}),helpers_Ringout=function(e){"use strict";function t(e){r.call(this,e),this.extension=helpers_Extension.$get(e)}var r=core_Helper.Class,n=core_Validator;return t.prototype=Object.create(r.prototype),t.prototype.createUrl=function(e,t){return e=e||{},"/account/~/extension/"+(e.extensionId||"~")+"/ringout"+(t?"/"+t:"")},t.prototype.resetAsNew=function(e){return e=r.prototype.resetAsNew.call(this,e),e&&delete e.status,e},t.prototype.isInProgress=function(e){return e&&!this.isNew(e)&&e.status&&"InProgress"==e.status.callStatus},t.prototype.isSuccess=function(e){return e&&!this.isNew(e)&&e.status&&"Success"==e.status.callStatus},t.prototype.isError=function(e){return!this.isNew(e)&&!this.isInProgress(e)&&!this.isSuccess(e)},t.prototype.validate=function(e){return n.validate([{field:"to",validator:n.required(e&&e.to&&e.to.phoneNumber)},{field:"from",validator:n.required(e&&e.from&&e.from.phoneNumber)}])},e={Class:t,$get:function(e){return e.createSingleton("RingoutHelper",function(){return new t(e)})}}}({}),helpers_Service=function(e){"use strict";function t(e){n.call(this,e)}function r(e){return function(t){return this.isEnabled(e,t)}}var n=core_Helper.Class;return t.prototype=Object.create(n.prototype),t.prototype.createUrl=function(){return"/account/~/service-info"},t.prototype.isEnabled=function(e,t){return t.reduce(function(t,r){return r.featureName==e&&(t=r.enabled),t},!1)},t.prototype.isSmsEnabled=r("SMS"),t.prototype.isSmsReceivingEnabled=r("SMSReceiving"),t.prototype.isPresenceEnabled=r("Presence"),t.prototype.isRingOutEnabled=r("RingOut"),t.prototype.isInternationalCallingEnabled=r("InternationalCalling"),t.prototype.isDndEnabled=r("DND"),t.prototype.isFaxEnabled=r("Fax"),t.prototype.isFaxReceivingEnabled=r("FaxReceiving"),t.prototype.isVoicemailEnabled=r("Voicemail"),t.prototype.isPagerEnabled=r("Pager"),t.prototype.isPagerReceivingEnabled=r("PagerReceiving"),t.prototype.isVoipCallingEnabled=r("VoipCalling"),t.prototype.isVideoConferencingEnabled=r("VideoConferencing"),t.prototype.isSalesForceEnabled=r("SalesForce"),t.prototype.isIntercomEnabled=r("Intercom"),t.prototype.isPagingEnabled=r("Paging"),t.prototype.isConferencingEnabled=r("Conferencing"),t.prototype.isFreeSoftPhoneLinesEnabled=r("FreeSoftPhoneLines"),t.prototype.isHipaaComplianceEnabled=r("HipaaCompliance"),t.prototype.isCallParkEnabled=r("CallPark"),t.prototype.isOnDemandCallRecordingEnabled=r("OnDemandCallRecording"),e={Class:t,$get:function(e){return e.createSingleton("serviceHelper",function(){return new t(e)})}}}({}),RCSDK=function(e){"use strict";return e=function(e){function t(){this._context=core_Context.$get(e)}function r(){return u.XMLHttpRequest||function(){try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(t){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(r){}throw new Error("This browser does not support XMLHttpRequest.")}}function n(){return u.CryptoJS||"undefined"!=typeof CryptoJS&&CryptoJS}function o(){return u.localStorage}function i(){return u.PUBNUB||"undefined"!=typeof PUBNUB&&PUBNUB}function s(){return u.Promise}t.version="1.1.2",t.prototype.getContext=function(){return this._context},t.prototype.getAjax=function(){return core_Ajax.$get(this.getContext())},t.prototype.getAjaxObserver=function(){return core_AjaxObserver.$get(this.getContext())},t.prototype.getXhrResponse=function(){return core_xhr_XhrResponse.$get(this.getContext())},t.prototype.getPlatform=function(){return core_Platform.$get(this.getContext())},t.prototype.getCache=function(){return core_Cache.$get(this.getContext())},t.prototype.getSubscription=function(){return core_Subscription.$get(this.getContext())},t.prototype.getPageVisibility=function(){return core_PageVisibility.$get(this.getContext())},t.prototype.getHelper=function(){return core_Helper.$get(this.getContext())},t.prototype.getObservable=function(){return core_Observable.$get(this.getContext())},t.prototype.getValidator=function(){return core_Validator.$get(this.getContext())},t.prototype.getLog=function(){return core_Log.$get(this.getContext())},t.prototype.getUtils=function(){return core_Utils.$get(this.getContext())},t.prototype.getList=function(){return core_List.$get(this.getContext())},t.prototype.getCountryHelper=function(){return helpers_Country.$get(this.getContext())},t.prototype.getDeviceModelHelper=function(){return helpers_DeviceModel.$get(this.getContext())},t.prototype.getLanguageHelper=function(){return helpers_Language.$get(this.getContext())},t.prototype.getLocationHelper=function(){return helpers_Location.$get(this.getContext())},t.prototype.getShippingMethodHelper=function(){return helpers_ShippingMethod.$get(this.getContext())},t.prototype.getStateHelper=function(){return helpers_State.$get(this.getContext())},t.prototype.getTimezoneHelper=function(){return helpers_Timezone.$get(this.getContext())},t.prototype.getAccountHelper=function(){return helpers_Account.$get(this.getContext())},t.prototype.getBlockedNumberHelper=function(){return helpers_BlockedNumber.$get(this.getContext())},t.prototype.getCallHelper=function(){return helpers_Call.$get(this.getContext())},t.prototype.getConferencingHelper=function(){return helpers_Conferencing.$get(this.getContext())},t.prototype.getContactHelper=function(){return helpers_Contact.$get(this.getContext())},t.prototype.getContactGroupHelper=function(){return helpers_ContactGroup.$get(this.getContext())},t.prototype.getDeviceHelper=function(){return helpers_Device.$get(this.getContext())},t.prototype.getExtensionHelper=function(){return helpers_Extension.$get(this.getContext())},t.prototype.getForwardingNumberHelper=function(){return helpers_ForwardingNumber.$get(this.getContext())},t.prototype.getMessageHelper=function(){return helpers_Message.$get(this.getContext())},t.prototype.getPhoneNumberHelper=function(){return helpers_PhoneNumber.$get(this.getContext())},t.prototype.getPresenceHelper=function(){return helpers_Presence.$get(this.getContext())},t.prototype.getRingoutHelper=function(){return helpers_Ringout.$get(this.getContext())},t.prototype.getServiceHelper=function(){return helpers_Service.$get(this.getContext())};var u=new Function("return this")();return e=e||{},e.CryptoJS=e.CryptoJS||n(),e.localStorage=e.localStorage||o(),e.Promise=e.Promise||s(),e.PUBNUB=e.PUBNUB||i(),e.XHR=e.XHR||r(),t}}({}),function(){"undefined"!=typeof exports?"undefined"!=typeof module&&module.exports&&(exports=module.exports=RCSDK({CryptoJS:require("crypto-js"),localStorage:new(require("dom-storage")),Promise:require("es6-promise").Promise,PUBNUB:require("pubnub"),XHR:require("xhr2")})):"function"==typeof define&&define.amd?define(["crypto-js","pubnub","es6-promise"],function(e,t){return RCSDK({CryptoJS:e,PUBNUB:t}) +}):(RCSDK.noConflict=function(e){return function(){return root.RCSDK=e,RCSDK.noConflict=void 0,RCSDK}}(root.RCSDK),root.RCSDK=RCSDK({}))}()}(this); //# sourceMappingURL=rc-sdk.min.js.map \ No newline at end of file diff --git a/build/rc-sdk.min.js.map b/build/rc-sdk.min.js.map index 03810382..d1fae696 100644 --- a/build/rc-sdk.min.js.map +++ b/build/rc-sdk.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["rc-sdk.min.js"],"names":["root","core_pubnub_PubnubMock","core_Utils","core_Log","core_xhr_XhrResponse","core_xhr_XhrMock","core_Context","core_Observable","core_AjaxObserver","core_Ajax","core_Cache","core_Platform","core_Subscription","core_PageVisibility","core_Helper","core_Validator","core_List","helpers_Country","helpers_DeviceModel","helpers_Language","helpers_State","helpers_Location","helpers_ShippingMethod","helpers_Timezone","helpers_Account","helpers_BlockedNumber","helpers_Extension","helpers_Presence","helpers_Contact","helpers_Call","helpers_Conferencing","helpers_ContactGroup","helpers_Device","helpers_ForwardingNumber","helpers_Message","helpers_PhoneNumber","helpers_Ringout","helpers_Service","RCSDK","exports","WS","url","this","pubnub","ready","onmessage","onclose","onerror","onopen","close","code","reason","wasClean","receiveMessage","data","$get","ws","hasOwn","Object","prototype","hasOwnProperty","toString","rdigit","class2type","split","forEach","name","toLowerCase","Utils","extend","options","src","copy","copyIsArray","clone","target","arguments","i","length","deep","isFunction","isPlainObject","isArray","undefined","object","cb","res","queryStringify","parameters","array","self","v","vv","push","encodeURIComponent","join","parseQueryString","queryString","argsParsed","arg","decodeURIComponent","indexOf","trim","pair","key","value","isEmail","multiple","test","isPhoneNumber","argumentsToArray","args","Array","slice","call","isDate","obj","type","isWindow","isNaN","String","nodeType","constructor","getProperty","property","eval","e","poll","fn","interval","timeout","stopPolling","next","delay","setTimeout","clearTimeout","parseString","s","parseNumber","n","parseFloat","Log","logDebug","logInfo","logWarnings","logErrors","addTimestamps","console","log","warn","info","error","disableAll","enableAll","parseArguments","unshift","Date","toLocaleString","debug","apply","XhrResponse","responses","add","response","clear","find","ajax","currentResponse","path","Class","context","createSingleton","XhrMock","async","method","requestHeaders","withCredentials","readyState","responseHeaders","status","getResponseHeader","header","setRequestHeader","open","send","onLoad","JSON","stringify","responseText","onload","bind","contentType","getRequestHeader","parse","Error","setStatus","setResponseHeader","Promise","getPromise","then","abort","Context","injections","singletons","stubPubnub","stubAjax","factory","usePubnubStub","flag","useAjaxStub","getCryptoJS","CryptoJS","getPubnub","PUBNUB","getLocalStorage","localStorage","getXHR","XHR","Observable","defineProperty","enumerable","writable","hasListeners","event","listeners","registerOneTimeEvent","oneTimeEvents","oneTimeArguments","on","events","callback","isOneTimeEventFired","getOneTimeEventArgumens","emit","splice","result","isOneTimeEvent","setOneTimeEventFired","setOneTimeEventArgumens","some","off","offAll","destroy","emitAndCallback","concat","AjaxObserver","create","beforeRequest","requestSuccess","requestError","Ajax","headers","observer","xhr","jsonContentType","multipartContentType","boundarySeparator","headerSeparator","bodySeparator","getOptions","setOptions","isResponseContentType","getResponseContentType","isResponseMultipart","isResponseUnauthorized","getContentType","isMultipart","isUnauthorized","isLoaded","checkOptions","defaultHeaders","Accept","Content-Type","keys","toUpperCase","get","post","request","parseResponse","resolve","reject","checkStatus","substr","boundary","match","parts","shift","pop","map","part","subParts","replace","ajaxPart","headerParts","statusInfo","stack","message","error_description","description","Cache","prefix","storage","prefixKey","setItem","removeItem","getItem","item","clean","Platform","server","apiKey","account","urlPrefix","apiVersion","accountPrefix","accessTokenTtl","refreshTokenTtl","refreshTokenTtlRemember","refreshHandicapMs","refreshDelayMs","clearCacheOnRefreshError","refreshPromise","forcedTokenType","cacheId","pollInterval","releaseTimeout","accessViolation","logoutSuccess","logoutError","authorizeSuccess","authorizeError","refreshSuccess","refreshError","getStorage","getAjax","clearStorage","remember","authorize","authCall","grant_type","username","extension","password","access_token_ttl","refresh_token_ttl","setCache","isPaused","now","parseInt","pause","resume","refresh","refreshPolling","authData","getAuthData","access_token","refresh_token","refreshExpireTime","logout","token","getToken","isTokenValid","getTokenType","token_type","expires_in","refresh_token_expires_in","expireTime","getTime","isAuthorized","cancelAccessToken","oldAuthData","forceAuthentication","apiCall","apiUrl","addServer","builtUrl","addMethod","addToken","Subscription","eventFilters","subscription","expirationTime","expiresIn","deliveryMode","transportType","encryption","address","subscriberKey","secretKey","id","creationTime","uri","socket","renewHandicapMs","notification","removeSuccess","removeError","renewSuccess","renewError","subscribeSuccess","subscribeError","createPubnub","getCrypto","getPlatform","register","isSubscribed","renew","subscribe","addEvents","setEvents","getFullEventFilters","updateSubscription","subscribeAtPubnub","unsubscribe","remove","timeToExpiration","CLOSE_NORMAL","notify","encryptionKey","enc","Base64","decrypted","AES","decrypt","ciphertext","mode","ECB","padding","pad","Pkcs7","Utf8","PageVisibility","onchange","evt","window","h","evtMap","focus","focusin","pageshow","blur","focusout","pagehide","visible","document","hidden","change","addEventListener","onfocusin","onfocusout","onpageshow","onpagehide","onfocus","onblur","isVisible","Helper","defaultProperty","getContext","createUrl","getId","isNew","getUri","resetAsNew","parseMultipartResponse","filter","loadRequest","saveRequest","deleteRequest","syncRequest","sync","syncToken","syncType","nextPageExists","navigation","index","getIdFn","gather","reduce","merge","supplement","mergeItems","supplementIndex","updatedIDs","newItem","Validator","validate","validators","errors","isValid","validator","field","email","phone","required","max","min","List","propertyExtractor","stringComparator","a","b","localeCompare","numberComparator","comparator","item1","item2","compareFn","extractFn","sortBy","equalsFilter","condition","containsFilter","regexpFilter","RegExp","filterConfigs","pass","opt","filterFn","filterBy","CountryHelper","DeviceModelHelper","device","addons","count","cleanForSaving","deviceClass","addon","devices","LanguageHelper","languages","StateHelper","countryHelper","countryId","opts","country","LocationHelper","state","uniqueNPAs","stateId","onlyUniqueNPA","npa","nxx","ShippingMethodHelper","shippingMethods","TimezoneHelper","AccountHelper","BlockedNumberHelper","extensionId","phoneNumber","ExtensionHelper","department","user","announcement","voicemail","departmentId","isUser","isDepartment","isAnnouncement","isVoicemail","search","toLocaleLowerCase","extensionNumber","PresenceHelper","detailed","presence","isAvailable","presenceStatus","getSubscription","presences","attachToExtensions","extensions","isCallInProgress","presenceCall","telephonyStatus","ContactHelper","groupId","getFieldValues","where","fields","asHash","getFullName","contact","nameFields","getEmails","emailFields","getPhones","phoneFields","getFaxes","faxFields","getAddresses","addressFields","isAlive","availability","string","matchWith","found","transformed","transformFn","strict","otherFields","inAddresses","addressSubFields","subField","matchAsPhone","attachToCallerInfos","callerInfos","contacts","callerInfoIndex","callerInfo","indexedCallerInfos","foundContact","foundPhone","contactPhone","alive","startsWith","phonesOnly","faxesOnly","firstName","lastName","email2","email3","CallHelper","personal","active","getSessionId","sessionId","isInProgress","isInbound","direction","isOutbound","isMissed","isFindMe","action","getCallerInfo","from","to","getAllCallerInfos","formatDuration","addZero","duration","hours","Math","floor","mins","secs","attachContacts","calls","checkMergeability","outboundRingOutCall","inboundCall","dateString","startTime","abs","maxStartTimeDiscrepancy","combineCalls","hasSubsequent","subsequent","processCalls","processedCalls","callsToMerge","merged","secondCall","parsePresenceCalls","activeCalls","activeCall","getSignature","cleanup","mergePresenceCalls","presenceCalls","currentDate","toISOString","mergeAll","presenceAndCalls","ConferencingHelper","ContactGroupHelper","groupName","DeviceHelper","deviceModel","order","emergencyServiceAddress","street","city","zip","customerName","model","ForwardingNumberHelper","forwardingNumber","hasFeature","feature","features","MessageHelper","platform","fax","sms","pager","isSMS","isPager","isVoiceMail","isFax","isRead","readStatus","setIsRead","getAttachmentUrl","attachments","getAttachmentContentType","getCallerInfos","conversationId","messages","shorten","text","subject","validateSMS","validatePager","PhoneNumberHelper","lookup","reserve","date","reservedTill","unreserve","usageType","paymentType","RingoutHelper","ringout","callStatus","isSuccess","isError","ServiceHelper","isServiceFeatureEnabledMethod","serviceFeatures","isEnabled","f","featureName","enabled","isSmsEnabled","isSmsReceivingEnabled","isPresenceEnabled","isRingOutEnabled","isInternationalCallingEnabled","isDndEnabled","isFaxEnabled","isFaxReceivingEnabled","isVoicemailEnabled","isPagerEnabled","isPagerReceivingEnabled","isVoipCallingEnabled","isVideoConferencingEnabled","isSalesForceEnabled","isIntercomEnabled","isPagingEnabled","isConferencingEnabled","isFreeSoftPhoneLinesEnabled","isHipaaComplianceEnabled","isCallParkEnabled","isOnDemandCallRecordingEnabled","_context","XMLHttpRequest","ActiveXObject","e1","e2","e3","getPUBNUB","version","getAjaxObserver","getXhrResponse","getCache","getPageVisibility","getHelper","getObservable","getValidator","getLog","getUtils","getList","getCountryHelper","getDeviceModelHelper","getLanguageHelper","getLocationHelper","getShippingMethodHelper","getStateHelper","getTimezoneHelper","getAccountHelper","getBlockedNumberHelper","getCallHelper","getConferencingHelper","getContactHelper","getContactGroupHelper","getDeviceHelper","getExtensionHelper","getForwardingNumberHelper","getMessageHelper","getPhoneNumberHelper","getPresenceHelper","getRingoutHelper","getServiceHelper","Function","module","require","define","amd","noConflict","old"],"mappings":"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","file":"rc-sdk.min.js","sourcesContent":[null],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["rc-sdk.min.js"],"names":["root","core_pubnub_PubnubMock","core_Utils","core_Log","core_xhr_XhrResponse","core_xhr_XhrMock","core_Context","core_Observable","core_AjaxObserver","core_Ajax","core_Cache","core_Platform","core_Subscription","core_PageVisibility","core_Helper","core_Validator","core_List","helpers_Country","helpers_DeviceModel","helpers_Language","helpers_State","helpers_Location","helpers_ShippingMethod","helpers_Timezone","helpers_Account","helpers_BlockedNumber","helpers_Extension","helpers_Presence","helpers_Contact","helpers_Call","helpers_Conferencing","helpers_ContactGroup","helpers_Device","helpers_ForwardingNumber","helpers_Message","helpers_PhoneNumber","helpers_Ringout","helpers_Service","RCSDK","exports","WS","url","this","pubnub","ready","onmessage","onclose","onerror","onopen","close","code","reason","wasClean","receiveMessage","data","$get","ws","hasOwn","Object","prototype","hasOwnProperty","toString","rdigit","class2type","split","forEach","name","toLowerCase","Utils","extend","options","src","copy","copyIsArray","clone","target","arguments","i","length","deep","isFunction","isPlainObject","isArray","undefined","object","cb","res","queryStringify","parameters","array","self","v","vv","push","encodeURIComponent","join","parseQueryString","queryString","argsParsed","arg","decodeURIComponent","indexOf","trim","pair","key","value","isEmail","multiple","test","isPhoneNumber","argumentsToArray","args","Array","slice","call","isDate","obj","type","isWindow","isNaN","String","nodeType","constructor","getProperty","property","eval","e","poll","fn","interval","timeout","stopPolling","next","delay","setTimeout","clearTimeout","parseString","s","parseNumber","n","parseFloat","Log","logDebug","logInfo","logWarnings","logErrors","addTimestamps","console","log","warn","info","error","disableAll","enableAll","parseArguments","unshift","Date","toLocaleString","debug","apply","XhrResponse","responses","add","response","clear","find","ajax","currentResponse","path","Class","context","createSingleton","XhrMock","async","method","requestHeaders","withCredentials","readyState","responseHeaders","status","getResponseHeader","header","setRequestHeader","open","send","onLoad","JSON","stringify","responseText","onload","bind","contentType","getRequestHeader","parse","Error","setStatus","setResponseHeader","Promise","getPromise","then","abort","Context","injections","singletons","stubPubnub","stubAjax","factory","usePubnubStub","flag","useAjaxStub","getCryptoJS","CryptoJS","getPubnub","PUBNUB","getLocalStorage","localStorage","getXHR","XHR","Observable","defineProperty","enumerable","writable","hasListeners","event","listeners","registerOneTimeEvent","oneTimeEvents","oneTimeArguments","on","events","callback","isOneTimeEventFired","getOneTimeEventArgumens","emit","splice","result","isOneTimeEvent","setOneTimeEventFired","setOneTimeEventArgumens","some","off","offAll","destroy","emitAndCallback","concat","AjaxObserver","create","beforeRequest","requestSuccess","requestError","Ajax","headers","observer","xhr","jsonContentType","multipartContentType","boundarySeparator","headerSeparator","bodySeparator","getOptions","setOptions","isResponseContentType","getResponseContentType","isResponseMultipart","isResponseUnauthorized","getContentType","isMultipart","isUnauthorized","isLoaded","checkOptions","defaultHeaders","Accept","Content-Type","keys","toUpperCase","get","post","request","parseResponse","resolve","reject","checkStatus","substr","boundary","match","parts","shift","pop","map","part","subParts","replace","ajaxPart","headerParts","statusInfo","message","error_description","description","stack","Cache","prefix","storage","prefixKey","setItem","removeItem","getItem","item","clean","Platform","server","apiKey","account","urlPrefix","apiVersion","accountPrefix","accessTokenTtl","refreshTokenTtl","refreshTokenTtlRemember","refreshHandicapMs","refreshDelayMs","clearCacheOnRefreshError","refreshPromise","forcedTokenType","cacheId","pollInterval","releaseTimeout","accessViolation","logoutSuccess","logoutError","authorizeSuccess","authorizeError","refreshSuccess","refreshError","getStorage","getAjax","clearStorage","remember","authorize","authCall","grant_type","username","extension","password","access_token_ttl","refresh_token_ttl","setCache","isPaused","now","parseInt","pause","resume","refresh","refreshPolling","authData","getAuthData","access_token","refresh_token","refreshExpireTime","logout","token","getToken","isTokenValid","getTokenType","token_type","expires_in","refresh_token_expires_in","expireTime","getTime","isAuthorized","cancelAccessToken","oldAuthData","forceAuthentication","apiCall","apiUrl","addServer","builtUrl","addMethod","addToken","Subscription","eventFilters","subscription","expirationTime","expiresIn","deliveryMode","transportType","encryption","address","subscriberKey","secretKey","id","creationTime","uri","socket","renewHandicapMs","notification","removeSuccess","removeError","renewSuccess","renewError","subscribeSuccess","subscribeError","createPubnub","getCrypto","getPlatform","register","isSubscribed","renew","subscribe","addEvents","setEvents","getFullEventFilters","updateSubscription","subscribeAtPubnub","unsubscribe","remove","timeToExpiration","CLOSE_NORMAL","notify","encryptionKey","enc","Base64","decrypted","AES","decrypt","ciphertext","mode","ECB","padding","pad","Pkcs7","Utf8","PageVisibility","onchange","evt","window","h","evtMap","focus","focusin","pageshow","blur","focusout","pagehide","visible","document","hidden","change","addEventListener","onfocusin","onfocusout","onpageshow","onpagehide","onfocus","onblur","isVisible","Helper","defaultProperty","getContext","createUrl","getId","isNew","getUri","resetAsNew","parseMultipartResponse","filter","loadRequest","saveRequest","deleteRequest","syncRequest","sync","syncToken","syncType","nextPageExists","navigation","index","getIdFn","gather","reduce","merge","supplement","mergeItems","supplementIndex","updatedIDs","newItem","Validator","validate","validators","errors","isValid","validator","field","email","phone","required","max","min","List","propertyExtractor","stringComparator","a","b","localeCompare","numberComparator","comparator","item1","item2","compareFn","extractFn","sortBy","equalsFilter","condition","containsFilter","regexpFilter","RegExp","filterConfigs","pass","opt","filterFn","filterBy","CountryHelper","DeviceModelHelper","device","addons","count","cleanForSaving","deviceClass","addon","devices","LanguageHelper","languages","StateHelper","countryHelper","countryId","opts","country","LocationHelper","state","uniqueNPAs","stateId","onlyUniqueNPA","npa","nxx","ShippingMethodHelper","shippingMethods","TimezoneHelper","AccountHelper","BlockedNumberHelper","extensionId","phoneNumber","ExtensionHelper","department","user","announcement","voicemail","departmentId","isUser","isDepartment","isAnnouncement","isVoicemail","search","toLocaleLowerCase","extensionNumber","PresenceHelper","detailed","presence","isAvailable","presenceStatus","getSubscription","presences","attachToExtensions","extensions","isCallInProgress","presenceCall","telephonyStatus","ContactHelper","groupId","getFieldValues","where","fields","asHash","getFullName","contact","nameFields","getEmails","emailFields","getPhones","phoneFields","getFaxes","faxFields","getAddresses","addressFields","isAlive","availability","string","matchWith","found","transformed","transformFn","strict","otherFields","inAddresses","addressSubFields","subField","matchAsPhone","attachToCallerInfos","callerInfos","contacts","callerInfoIndex","callerInfo","indexedCallerInfos","foundContact","foundPhone","contactPhone","alive","startsWith","phonesOnly","faxesOnly","firstName","lastName","email2","email3","CallHelper","personal","active","getSessionId","sessionId","isInProgress","isInbound","direction","isOutbound","isMissed","isFindMe","action","getCallerInfo","from","to","getAllCallerInfos","formatDuration","addZero","duration","hours","Math","floor","mins","secs","attachContacts","calls","checkMergeability","outboundRingOutCall","inboundCall","dateString","startTime","abs","maxStartTimeDiscrepancy","combineCalls","hasSubsequent","subsequent","processCalls","processedCalls","callsToMerge","merged","secondCall","parsePresenceCalls","activeCalls","activeCall","getSignature","cleanup","mergePresenceCalls","presenceCalls","currentDate","toISOString","mergeAll","presenceAndCalls","ConferencingHelper","ContactGroupHelper","groupName","DeviceHelper","deviceModel","order","emergencyServiceAddress","street","city","zip","customerName","model","ForwardingNumberHelper","forwardingNumber","hasFeature","feature","features","MessageHelper","platform","fax","sms","pager","isSMS","isPager","isVoiceMail","isFax","isRead","readStatus","setIsRead","getAttachmentUrl","attachments","getAttachmentContentType","getCallerInfos","conversationId","messages","shorten","text","subject","validateSMS","validatePager","PhoneNumberHelper","lookup","reserve","date","reservedTill","unreserve","usageType","paymentType","RingoutHelper","ringout","callStatus","isSuccess","isError","ServiceHelper","isServiceFeatureEnabledMethod","serviceFeatures","isEnabled","f","featureName","enabled","isSmsEnabled","isSmsReceivingEnabled","isPresenceEnabled","isRingOutEnabled","isInternationalCallingEnabled","isDndEnabled","isFaxEnabled","isFaxReceivingEnabled","isVoicemailEnabled","isPagerEnabled","isPagerReceivingEnabled","isVoipCallingEnabled","isVideoConferencingEnabled","isSalesForceEnabled","isIntercomEnabled","isPagingEnabled","isConferencingEnabled","isFreeSoftPhoneLinesEnabled","isHipaaComplianceEnabled","isCallParkEnabled","isOnDemandCallRecordingEnabled","_context","XMLHttpRequest","ActiveXObject","e1","e2","e3","getPUBNUB","version","getAjaxObserver","getXhrResponse","getCache","getPageVisibility","getHelper","getObservable","getValidator","getLog","getUtils","getList","getCountryHelper","getDeviceModelHelper","getLanguageHelper","getLocationHelper","getShippingMethodHelper","getStateHelper","getTimezoneHelper","getAccountHelper","getBlockedNumberHelper","getCallHelper","getConferencingHelper","getContactHelper","getContactGroupHelper","getDeviceHelper","getExtensionHelper","getForwardingNumberHelper","getMessageHelper","getPhoneNumberHelper","getPresenceHelper","getRingoutHelper","getServiceHelper","Function","module","require","define","amd","noConflict","old"],"mappings":"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","file":"rc-sdk.min.js","sourcesContent":[null],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/lib/core/Ajax.js b/lib/core/Ajax.js index aff7f2f5..2af6b6ff 100644 --- a/lib/core/Ajax.js +++ b/lib/core/Ajax.js @@ -298,9 +298,9 @@ define(function(require, exports, module) { Ajax.prototype.parseResponse = function() { - if (!this.isResponseMultipart()) { + try { - try { + if (!this.isResponseMultipart()) { if (typeof(this.response) == 'string' && this.isResponseContentType(jsonContentType)) { @@ -314,19 +314,7 @@ define(function(require, exports, module) { if (!this.checkStatus(this.status)) this.error = new Error(this.data.message || this.data.error_description || this.data.description || 'Unknown error'); - } catch (e) { // Capture parse errors - - Log.error('Ajax.parseResponse(): Unable to parse data'); - Log.error(e.stack || e); - Log.error(this.response); - - this.error = e; - - } - - } else { - - try { + } else { var boundary = this.getResponseContentType().match(/boundary=([^;]+)/i)[1], parts = this.response.split(boundarySeparator + boundary); @@ -374,15 +362,15 @@ define(function(require, exports, module) { }, this); - } catch (e) { + } - Log.error('Ajax.parseResponse(): Unable to parse batch response'); - Log.error(e.stack || e); - Log.error(this.response); + } catch (e) { // Capture parse errors - this.error = e; + Log.error('Ajax.parseResponse(): Unable to parse data'); + Log.error(e.stack || e); + Log.error(this.response); - } + this.error = e; } diff --git a/lib/core/Platform.js b/lib/core/Platform.js index aa19f7c7..317bf3b7 100644 --- a/lib/core/Platform.js +++ b/lib/core/Platform.js @@ -471,7 +471,7 @@ define(function(require, exports, module) { .setOptions(options) .setRequestHeader('Content-Type', 'application/x-www-form-urlencoded') .setRequestHeader('Accept', 'application/json') - .setRequestHeader('Authorization', 'Basic' + this.apiKey) + .setRequestHeader('Authorization', 'Basic ' + this.apiKey) .send(); };