{"version":3,"file":"static/js/application.initial~a1fcd762.47093cc2.js","mappings":"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","sources":["../webpack/universalModuleDefinition","../webpack/bootstrap","../webpack-src:/i18n-model-setup/index.js","../webpack-src:/i18n-model-setup/src/index.js","../../../../../../../../external/@bingads-webui-universal/i18n-model","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/core.json","../../../../../../../../external/iana-tz-data/iana-tz-data.json","../webpack-src:/i18n-model-setup/src/helper.js","../../../../../../../../external/cldrjs","../../../../../../../../external/underscore","../../../../../../../../external/@bingads-webui/listener","../webpack-src:/in-memory-listener/index.js","../webpack-src:/in-memory-listener/src/in-memory-listener.es","../webpack-src:/in-memory-listener/src/in-memory-sink.es","../webpack-src:/in-memory-listener/src/session-storage-sink.es","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/instrumentation-stubs/index.js","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-interceptor.es","../../../../../../../../external/urijs","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/default-config.es","../../../../../../../../external/jquery","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-handler.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub-schema.es","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub.es","../../../../../../../../external/stacktrace-js","../../../../../../../../external/bluebird","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub-schema.es","../webpack-src:/instrumentation/index.js","../webpack-src:/instrumentation/src/instrumentation.js","../webpack-src:/instrumentation/src/default-config.js","../webpack-src:/instrumentation/src/loggers/trace-logger.es","../webpack-src:/instrumentation/src/constants.es","../webpack-src:/instrumentation/src/loggers/logger.es","../webpack-src:/instrumentation/src/loggers/perf-logger.es","../webpack-src:/instrumentation/src/loggers/error-logger.es","../webpack-src:/instrumentation/src/loggers/ajax-logger.es","../webpack-src:/instrumentation/src/processors/scenario-processor.es","../webpack-src:/instrumentation/src/loggers/substrate-logger.js","../webpack-src:/instrumentation/src/logging-service.js","../webpack-src:/instrumentation/src/scenario-factory.es","../webpack-src:/instrumentation/src/activity-factory.es","../webpack-src:/instrumentation/src/log-transmitter.es","../../../../../../../../external/@bingads-webui/odata-converter","../webpack-src:/js-data-odata-base-adapter/index.js","../webpack-src:/js-data-odata-base-adapter/src/index.es","../../../../../../../../external/@bingads-webui/http-util","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/js-data-rest/index.js","../webpack-src:/js-data-rest/src/jsDataRestStore.es","../webpack-src:/js-data-rest/src/jsDataRestAdapter.es","../../../../../../../../external/js-data","../webpack-src:/json-tree-parser/index.js","../webpack-src:/json-tree-parser/src/parse.es","../webpack-src:/keep-alive/index.js","../webpack-src:/keep-alive/src/index.js","../webpack-src:/keycode/index.js","../webpack-src:/keycode/src/keyCode.js","../webpack-src:/keycode/src/keyName.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"cldrjs\"), require(\"@bingads-webui-universal/i18n-model\"), require(\"@bingads-webui-universal/i18n-cldr-data-modern/core.json\"), require(\"iana-tz-data/iana-tz-data.json\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"cldrjs\", \"@bingads-webui-universal/i18n-model\", \"@bingads-webui-universal/i18n-cldr-data-modern/core.json\", \"iana-tz-data/iana-tz-data.json\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"cldrjs\"), require(\"@bingads-webui-universal/i18n-model\"), require(\"@bingads-webui-universal/i18n-cldr-data-modern/core.json\"), require(\"iana-tz-data/iana-tz-data.json\")) : factory(root[\"underscore\"], root[\"cldrjs\"], root[\"@bingads-webui-universal/i18n-model\"], root[\"@bingads-webui-universal/i18n-cldr-data-modern/core.json\"], root[\"iana-tz-data/iana-tz-data.json\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__23__, __WEBPACK_EXTERNAL_MODULE__110__, __WEBPACK_EXTERNAL_MODULE__111__, __WEBPACK_EXTERNAL_MODULE__112__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 107);\n","export { setupI18nModel } from './src/index';\r\nexport { getCldrLocale } from './src/helper';\r\n","import { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport iana from 'iana-tz-data/iana-tz-data.json';\r\n\r\nexport function setupI18nModel(locale) {\r\n I18nModel.loadCLDRData(core);\r\n I18nModel.loadTimeZoneData(iana);\r\n I18nModel.setGlobalLocale(locale);\r\n\r\n // callback for webpack dynamic import\r\n return ({ default: data }) => {\r\n I18nModel.loadCLDRData(data);\r\n\r\n return null;\r\n };\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__110__;","module.exports = __WEBPACK_EXTERNAL_MODULE__111__;","module.exports = __WEBPACK_EXTERNAL_MODULE__112__;","import _ from 'underscore';\r\nimport Cldr from 'cldrjs';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\n\r\nCldr.load(core);\r\n\r\nexport function getCldrLocale(locale) {\r\n const cldr = new Cldr(locale);\r\n const {\r\n language,\r\n region,\r\n script,\r\n } = cldr.attributes;\r\n\r\n const output = _.find([\r\n `${language}-${script}-${region}`,\r\n `${language}-${region}`,\r\n `${language}-${script}`,\r\n language,\r\n ], l => _.contains(core.availableLocales.modern, l));\r\n\r\n return output;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__23__;","module.exports = __WEBPACK_EXTERNAL_MODULE__7__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","export { InMemoryListener } from './src/in-memory-listener';\r\nexport { InMemorySink } from './src/in-memory-sink';\r\nexport { SessionStorageSink } from './src/session-storage-sink';\r\n","import { Listener } from '@bingads-webui/listener';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * In memory listener class. This logs to an in-memory object that is passed\r\n * in. It expects a sink object with write method on it.\r\n */\r\n\r\nexport class InMemoryListener extends Listener {\r\n /**\r\n * Creates an instance of InMemoryListener.\r\n * @param {any} [options={}] - The options for in-memory listener\r\n * @param {Object} options.sink - Sink to push logs to.\r\n * Should have write method on it\r\n * @param {Object} options.formatters - Object where values are formatters\r\n * to use for the listener\r\n * @param {Object} options.filters - Object where values are filters to\r\n * use for the listener\r\n */\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || {};\r\n this.filters = options.filters || {};\r\n this.sink = options.sink;\r\n }\r\n\r\n /**\r\n * Init in memory listener if needed options passed in\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (this.sink && _.isFunction(this.sink.write)) {\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n /**\r\n * writes logs to the listener\r\n * @param {object} logMessage - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n this.sink.write(formattedMsg);\r\n }\r\n}\r\n\r\n","/**\r\n * Sink that is compatible with InMemoryListener.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class InMemorySink {\r\n /**\r\n * Creates an instance of InMemorySink.\r\n * @param {Number} [maxSize=2000] - Maximum size of logs array.\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor({ maxSize = 2000 } = {}) {\r\n this.logs = [];\r\n this.maxSize = maxSize;\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n/**\r\n * Sink that is compatible with SessionStorage.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class SessionStorageSink {\r\n /**\r\n * Creates an instance of SessionStorageSink.\r\n * @param {Object} options - Options to initialize\r\n * @param {Number} [options.maxSize=2000] - Maximum size of logs array.\r\n * @param {String} options.storageKey - Key to use in session storage\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor(options = {}) {\r\n this.logs = [];\r\n this.maxSize = options.maxSize || 2000;\r\n\r\n if (!options.storageKey) {\r\n throw new Error('Cannot create sink without storageKey');\r\n }\r\n\r\n if (SessionStorageSink.keyCache[options.storageKey]) {\r\n throw new Error('Storage key is already initialized on page');\r\n }\r\n SessionStorageSink.keyCache[options.storageKey] = true;\r\n\r\n this.storageKey = options.storageKey;\r\n const existingItemsStr = window.sessionStorage.getItem(this.storageKey);\r\n const existingItems = _.isEmpty(existingItemsStr) ? [] : JSON.parse(existingItemsStr);\r\n existingItems.forEach(formattedMsg => this.write(formattedMsg));\r\n\r\n window.addEventListener('beforeunload', () => {\r\n this.setItemsOnUnload();\r\n });\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n\r\n setItemsOnUnload() {\r\n window.sessionStorage.setItem(this.storageKey, JSON.stringify(this.logs));\r\n }\r\n\r\n static keyCache = {};\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__29__;","export { AjaxStub } from './src/ajax-stub/ajax-stub';\r\nexport { AjaxEventHandler } from './src/ajax-stub/ajax-event-handler';\r\nexport { ErrorStub } from './src/error-stub/error-stub';\r\n","import _ from 'underscore';\r\nimport { AjaxInterceptor } from './ajax-interceptor';\r\nimport { defaultConfig } from './default-config';\r\nimport { schema } from './ajax-stub-schema';\r\n\r\n/**\r\n * AjaxStub class - Creates an ajax stub that can be used by Instrumentation to stub ajax calls\r\n */\r\nexport class AjaxStub {\r\n /**\r\n * @param {object} options - contains instrumentation and optionally stubOptions, AjaxEventhandler\r\n */\r\n constructor(options = {}) {\r\n this.stubOptions = _.defaults(options.stubOptions || {}, defaultConfig.stubOptions);\r\n this.handler = options.eventHandler || defaultConfig.eventHandler;\r\n\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n\r\n this.interceptor = new AjaxInterceptor(this.stubOptions, this.handler, this.ajaxStubScenario);\r\n }\r\n\r\n init() {\r\n _.each(this.stubOptions.objectsToStub, (objectToStub) => {\r\n this.interceptor.intercept(objectToStub);\r\n });\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.ajaxStubScenario = instr.ajaxStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport urijs from 'urijs';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { AjaxEventInterceptor } from './ajax-event-interceptor';\r\n\r\n// We only want one ajax intercept, however instrumentation can be created a second time\r\n// e.g. after creating a CID during signup\r\nlet globalInterceptInstance = null;\r\n\r\n/**\r\n * AjaxInterceptor - Provides functionality to intercept ajax calls\r\n */\r\nexport class AjaxInterceptor {\r\n /**\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} scenario - scenario to be used by the stub\r\n * @param {function} generateRid - optional: overwrites the function that generates an RID\r\n */\r\n constructor(stubOptions, eventHandler, scenario, generateRid) {\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.scenario = scenario;\r\n this.generateRid = generateRid || generateGuid;\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n intercept(jQuery) {\r\n const originalAjax = jQuery.ajax;\r\n const intercept = (url, options) => {\r\n options = options || {};\r\n\r\n if (_.isObject(url)) {\r\n options = url;\r\n } else if (_.isString(url)) {\r\n options.url = url;\r\n }\r\n\r\n // add requestId to url\r\n const requestId = this.generateRid();\r\n if (this.shouldAddRequestId(options.dataType, options.url)) {\r\n options.url = urijs(options.url).setQuery('ReqId', requestId).toString();\r\n }\r\n\r\n const activity = this.scenario.ajaxStubActivity.create();\r\n const ajaxEventInterceptor = new AjaxEventInterceptor(\r\n options,\r\n requestId,\r\n this.stubOptions,\r\n this.eventHandler,\r\n activity\r\n );\r\n ajaxEventInterceptor.triggerEventInterceptors();\r\n\r\n return originalAjax.call(jQuery, options);\r\n };\r\n\r\n globalInterceptInstance = intercept;\r\n\r\n jQuery.ajax = (url, options) => (globalInterceptInstance === intercept ?\r\n intercept(url, options) :\r\n originalAjax.call(jQuery, url, options));\r\n }\r\n\r\n shouldAddRequestId(dataType, url) {\r\n const urlInLowerCase = _.isString(url) ? url.toLowerCase() : '';\r\n\r\n return _.isString(url) &&\r\n urlInLowerCase.indexOf('reqid') === -1 &&\r\n (_.isUndefined(dataType) || dataType !== 'script') &&\r\n urlInLowerCase.indexOf('scripts/') === -1;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__45__;","import _ from 'underscore';\r\n\r\nconst event = {\r\n BEFORESEND: 'beforeSend', SUCCESS: 'success', COMPLETE: 'complete', ERROR: 'error',\r\n};\r\n\r\n/**\r\n * AjaxInterceptor - Intercepts ajax events (beforeSend, success, error, complete)\r\n */\r\nexport class AjaxEventInterceptor {\r\n /**\r\n * @param {object} options - options from ajax call\r\n * @param {object} requestId - request id\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} activity - activity to be used by the ajax logging calls\r\n */\r\n constructor(options, requestId, stubOptions, eventHandler, activity) {\r\n this.options = options;\r\n this.requestId = requestId;\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.activity = activity;\r\n }\r\n\r\n triggerEventInterceptors() {\r\n const pageTrackingId = _.result(this.stubOptions, 'pageTrackingId');\r\n const ajaxContext = {\r\n stubOptions: this.stubOptions,\r\n url: this.options.url,\r\n requestId: this.requestId,\r\n pageTrackingId,\r\n requestResult: true,\r\n httpMethod: this.options.type,\r\n error: '',\r\n ajaxStartTime: 0,\r\n ajaxRenderStartTime: 0,\r\n entityCount: this.stubOptions.getPageSize(this.options.data),\r\n activity: this.activity,\r\n };\r\n\r\n if (this.eventHandler.beforeSendHandler) this.interceptBeforeSend(this.options, ajaxContext);\r\n if (this.eventHandler.successHandler) this.interceptSuccess(this.options, ajaxContext);\r\n if (this.eventHandler.errorHandler) this.interceptError(this.options, ajaxContext);\r\n if (this.eventHandler.completeHandler) this.interceptComplete(this.options, ajaxContext);\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n interceptBeforeSend(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.BEFORESEND])) {\r\n ajaxOptions[event.BEFORESEND] = (...args) => {\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.BEFORESEND])) {\r\n const originalEventHandler = ajaxOptions[event.BEFORESEND];\r\n ajaxOptions[event.BEFORESEND] = function onBeforeSend(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n if (originalRet && _.isFunction(originalRet.onBeforeSendDone)) {\r\n return originalRet.onBeforeSendDone(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptSuccess(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.SUCCESS])) {\r\n ajaxOptions[event.SUCCESS] = (...args) => {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.SUCCESS])) {\r\n const originalEventHandler = ajaxOptions[event.SUCCESS];\r\n ajaxOptions[event.SUCCESS] = function onSuccess(...args) {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptError(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.ERROR])) {\r\n ajaxOptions[event.ERROR] = (...args) => {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.ERROR])) {\r\n const originalEventHandler = ajaxOptions[event.ERROR];\r\n ajaxOptions[event.ERROR] = function onError(...args) {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptComplete(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.COMPLETE])) {\r\n ajaxOptions[event.COMPLETE] = (...args) => {\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.COMPLETE])) {\r\n const originalEventHandler = ajaxOptions[event.COMPLETE];\r\n ajaxOptions[event.COMPLETE] = function onComplete(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n static handleException(func, api, requestId, activity, message) {\r\n return function wrappedFunc(...args) {\r\n const context = this;\r\n let error = !_.isUndefined(message) ? `${message}: ` : '';\r\n try {\r\n return func.apply(context, args);\r\n } catch (ex) {\r\n if (!ex.message) {\r\n error += ex.toString();\r\n } else if (!ex.stack) {\r\n error += ex.message;\r\n } else {\r\n error += `${ex.message}\\tStackTrace: ${ex.stack}`;\r\n }\r\n activity.error(error, api, requestId);\r\n\r\n throw ex;\r\n }\r\n };\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { AjaxEventHandler } from './ajax-event-handler';\r\n\r\nconst defaultStubOptions = {\r\n objectsToStub: [$],\r\n serverErrorCodes: [-1],\r\n detectError(respData, serverErrorCodes) {\r\n const result = {\r\n pass: true,\r\n };\r\n\r\n if (respData &&\r\n respData.Errors &&\r\n respData.Errors[0] &&\r\n respData.Errors[0].Code &&\r\n _.isArray(serverErrorCodes) &&\r\n _.contains(serverErrorCodes, respData.Errors[0].Code)) {\r\n result.pass = false;\r\n result.message = respData.Errors[0].Message;\r\n result.impactUser = true;\r\n }\r\n return result;\r\n },\r\n getEntityCount(respData) {\r\n if (respData && respData.Records) {\r\n return respData.Records.RowCount;\r\n }\r\n return -1;\r\n },\r\n getPageSize(requestData) {\r\n const pageSizeParam = '.PageSize';\r\n if (_.isObject(requestData) && requestData.BiDateRange) {\r\n const keys = _.keys(requestData);\r\n const pageSizeProp = _.find(keys, key => key.length > pageSizeParam.length &&\r\n key.substr(key.length - pageSizeParam.length) === pageSizeParam);\r\n return requestData[pageSizeProp];\r\n }\r\n return -1;\r\n },\r\n};\r\n\r\n// default ajax event handler\r\nconst ajaxEventHandler = new AjaxEventHandler();\r\n\r\nexport const defaultConfig = {\r\n stubOptions: defaultStubOptions,\r\n eventHandler: ajaxEventHandler,\r\n};\r\n\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__48__;","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * AjaxEventHandler - contains event handlers for ajax events (beforeSend, success, error, complete)\r\n * The consuming application can override the handlers here by extending from this base handler\r\n * and pass in a custom AjaxEventHandler when instantiating the AjaxStub\r\n */\r\nexport class AjaxEventHandler {\r\n constructor(options = {}) {\r\n this.errorMappers = options.errorMappers || [];\r\n this.shouldAddHeaders = options.shouldAddHeaders || _.constant(true);\r\n }\r\n\r\n /**\r\n * Handler for the ajax beforeSend event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n beforeSendHandler(ajaxContext, [jqXHR]) {\r\n /* eslint-disable no-param-reassign */\r\n ajaxContext.ajaxStartTime = getTimestamp();\r\n\r\n if (this.shouldAddHeaders(ajaxContext) === true) {\r\n const applicationName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'applicationName', 'bingadsweb');\r\n const featureName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'featureName', null);\r\n\r\n jqXHR.setRequestHeader('x-ms-requestid', ajaxContext.requestId);\r\n // eslint-disable-next-line no-unused-expressions\r\n ajaxContext.pageTrackingId && jqXHR.setRequestHeader('x-ms-pagetrackingid', ajaxContext.pageTrackingId);\r\n jqXHR.setRequestHeader('x-ms-applicationname', applicationName);\r\n jqXHR.setRequestHeader('x-ms-lcid', ajaxContext.stubOptions.lcid);\r\n jqXHR.setRequestHeader('lcid', ajaxContext.stubOptions.lcid);\r\n if (featureName) {\r\n jqXHR.setRequestHeader('x-ms-featurename', featureName);\r\n }\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n true,\r\n ajaxContext.httpMethod,\r\n 0,\r\n true,\r\n '',\r\n ajaxContext.entityCount\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax success event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the success ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n successHandler(ajaxContext, [data, textStatus, jqXHR]) { // eslint-disable-line no-unused-vars\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n const result = ajaxContext.stubOptions.detectError(data);\r\n\r\n if (!result.pass) {\r\n ajaxContext.requestResult = false;\r\n ajaxContext.error = result.message;\r\n\r\n ajaxContext.activity.error(\r\n ajaxContext.error,\r\n ajaxContext.url,\r\n ajaxContext.requestId,\r\n result.impactUser,\r\n ajaxContext.httpMethod\r\n );\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult,\r\n this.constructor.getServerPerf(jqXHR),\r\n ajaxContext.entityCount\r\n );\r\n\r\n ajaxContext.entityCount = ajaxContext.stubOptions.getEntityCount(data);\r\n ajaxContext.ajaxRenderStartTime = getTimestamp();\r\n }\r\n\r\n /**\r\n * Handler to execute after the ajax success callback.\r\n * It's only purpose is to measure ajaxRender time.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @returns {undefined} - no returns\r\n */\r\n successRenderHandler(ajaxContext) {\r\n if (ajaxContext.requestResult === true) {\r\n const renderTimeTaken = getTimestamp() - ajaxContext.ajaxRenderStartTime;\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n renderTimeTaken,\r\n ajaxContext.requestResult,\r\n '',\r\n ajaxContext.entityCount,\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Handler for the ajax error event.\r\n * This may need to be overriden by the application to handle expected errors.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the error ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n errorHandler(ajaxContext, [jqXHR, textStatus, errorThrown]) {\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n\r\n if (jqXHR.status !== 0) {\r\n ajaxContext.requestResult = false;\r\n\r\n ajaxContext.error = `Ajax error [${jqXHR.status}]`;\r\n\r\n if (textStatus && $.trim(textStatus) !== '') {\r\n ajaxContext.error += (`, ${textStatus}`);\r\n // Log jqXHR.responseText when it is not 200 (which means will enter errorHandler)\r\n if (jqXHR.responseText && $.trim(jqXHR.responseText) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseText}`);\r\n } else if (jqXHR.responseXML && $.trim(jqXHR.responseXML) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseXML}`);\r\n }\r\n }\r\n\r\n if (errorThrown && $.trim(errorThrown) !== '') {\r\n ajaxContext.error += (`, ${errorThrown}`);\r\n }\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n case 404:\r\n // If error maps to a user error, log at trace level\r\n if (this.isUserError(ajaxContext, jqXHR, textStatus, errorThrown)) {\r\n ajaxContext.requestResult = true;\r\n }\r\n break;\r\n case 401:\r\n // Log 401 unauthorized error at trace level\r\n ajaxContext.requestResult = true;\r\n break;\r\n default:\r\n ajaxContext.requestResult = false;\r\n }\r\n\r\n if (ajaxContext.requestResult === false) {\r\n ajaxContext.activity.error(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, '', ajaxContext.httpMethod);\r\n } else {\r\n ajaxContext.activity.trace(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, ajaxContext.httpMethod);\r\n }\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax complete event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n completeHandler(ajaxContext, [jqXHR]) { // eslint-disable-line no-unused-vars\r\n // do nothing\r\n }\r\n\r\n /**\r\n * private method to check if ajax error maps to an user error\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {object} jqXHR - jqXHR passed to the ajax callback\r\n * @param {object} textStatus - textStatus passed to the ajax callback\r\n * @param {object} errorThrown - errorThrown passed to the ajax callback\r\n * @returns {bool} - if error is an user error\r\n */\r\n isUserError(ajaxContext, jqXHR, textStatus, errorThrown) {\r\n return _.any(this.errorMappers, errorMapper => errorMapper.check(\r\n ajaxContext,\r\n jqXHR,\r\n textStatus,\r\n errorThrown\r\n ));\r\n }\r\n\r\n static getServerPerf(jqXHR) {\r\n if (jqXHR && _.isFunction(jqXHR.getResponseHeader)) {\r\n const perfTimings = jqXHR.getResponseHeader('PerfTimings');\r\n if (perfTimings) {\r\n return perfTimings;\r\n }\r\n const odataPerf = {};\r\n _.each(\r\n ['x-ms-mte2eelapsedtimems', 'x-ms-odataapie2eelapsedtimems', 'x-ms-odataapionlye2eelapsedtimems'],\r\n (header) => {\r\n const value = jqXHR.getResponseHeader(header);\r\n if (value) {\r\n odataPerf[header] = value;\r\n }\r\n }\r\n );\r\n\r\n if (jqXHR.responseJSON) {\r\n const key = '@ns.cacheobjectused';\r\n odataPerf[key] = jqXHR.responseJSON[key];\r\n\r\n const keyUnfilteredCount = '@ns.unfiltered.count';\r\n odataPerf[keyUnfilteredCount] = jqXHR.responseJSON[keyUnfilteredCount];\r\n\r\n const keyOdataCount = '@odata.count';\r\n odataPerf[keyOdataCount] = jqXHR.responseJSON[keyOdataCount];\r\n }\r\n\r\n return JSON.stringify(odataPerf);\r\n }\r\n return '';\r\n }\r\n}\r\n","/**\r\n * Pre-defined schema used for Ajax Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'ajaxStubScenario',\r\n value: 'Ajax Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'ajaxStubActivity',\r\n value: 'Ajax Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","import _ from 'underscore';\r\nimport StackTrace from 'stacktrace-js';\r\nimport Promise from 'bluebird';\r\nimport { schema } from './error-stub-schema';\r\n\r\nfunction getStackStringFromStackFrames(stackFrames) {\r\n const stackLines = _.map(stackFrames, frame => [\r\n frame.getFunctionName() || '', ' (',\r\n frame.getFileName(), ':',\r\n frame.getLineNumber(), ':',\r\n frame.getColumnNumber(), ')',\r\n ].join('')).join('\\n');\r\n\r\n return stackLines;\r\n}\r\n\r\n// By default, stacktrace-js loads source maps synchronously. This is not good for performance.\r\nexport function asyncAjaxOverride(url) {\r\n return new Promise((resolve, reject) => {\r\n const req = new XMLHttpRequest();\r\n req.open('get', url, true); // Third parameter true for async call\r\n req.onerror = reject;\r\n req.onreadystatechange = function onreadystatechange() {\r\n if (req.readyState === 4) {\r\n if ((req.status >= 200 && req.status < 300) ||\r\n (url.substr(0, 7) === 'file://' && req.responseText)) {\r\n resolve(req.responseText);\r\n } else {\r\n reject(new Error(`HTTP status: ${req.status} retrieving ${url}`));\r\n }\r\n }\r\n };\r\n req.send();\r\n });\r\n}\r\n\r\n/**\r\n * ErrorStub class - Creates a window.onerror stub that can be used by Instrumentation\r\n */\r\nexport class ErrorStub {\r\n /**\r\n * @param {object} options - contains instrumentation for logging\r\n */\r\n constructor(options = {}) {\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n this.logUnhandledPromiseRejections = options.logUnhandledPromiseRejections || false;\r\n this.skipStackTraceResolutionForPromiseRejections = options.skipStackTraceResolutionForPromiseRejections;\r\n\r\n this.isExpectedUnhandledPromiseError = options.isExpectedUnhandledPromiseError;\r\n this.stackTraceOptions = {\r\n ajax: asyncAjaxOverride, // by default it uses synchroneous ajax\r\n };\r\n }\r\n\r\n init() {\r\n this.intercept();\r\n }\r\n\r\n intercept() {\r\n window.onerror = (errorMsg, url, lineNumber, column, errorObj) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handleError(errorMsg, url, lineNumber, column, errorObj, activity);\r\n\r\n return true;\r\n };\r\n\r\n if (this.logUnhandledPromiseRejections) {\r\n window.addEventListener('unhandledrejection', (promiseRejection) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handlePromiseRejection(promiseRejection, activity);\r\n });\r\n }\r\n }\r\n\r\n handleError(errorMsg, url, lineNumber, column, errorObj, activity) {\r\n let errorMessage = `${errorMsg}\\tScript: ${url} Line: ${lineNumber}`;\r\n if (!_.isUndefined(column)) {\r\n errorMessage += ` Column: ${column}`;\r\n }\r\n return StackTrace.fromError(errorObj, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n if (_.isObject(errorObj) && _.has(errorObj, 'stack')) {\r\n errorMessage += ` StackTrace: ${errorObj.stack}\\n [StackTrace Error: ${ex}]`;\r\n }\r\n }).finally(() => {\r\n errorMessage += `\\tCurrentURL: ${window.location.href}\\tPreviousURL: ${document.referrer ? document.referrer : 'Unknown'}`;\r\n\r\n const perviousRoute = window.history.state && window.history.state.state ?\r\n window.history.state.state.previousRoute : null;\r\n\r\n if (perviousRoute) {\r\n errorMessage += `\\tPreviousRoute: ${perviousRoute}`;\r\n }\r\n\r\n activity.error(errorMessage, 'onerror');\r\n });\r\n }\r\n\r\n handlePromiseRejection(promiseRejectionEvent, activity) {\r\n let errorMessage = 'Unhandled promise rejection;';\r\n\r\n const logError = (message) => {\r\n if (this.isExpectedUnhandledPromiseError && this.isExpectedUnhandledPromiseError(message)) {\r\n activity.trace(message, 'onunhandledrejection');\r\n } else {\r\n activity.error(message, 'onunhandledrejection');\r\n }\r\n return Promise.resolve();\r\n };\r\n\r\n // Bluebird stores these properties in .detail while native promise stores these properties at top level\r\n const { promise, reason } = promiseRejectionEvent.detail || promiseRejectionEvent;\r\n\r\n // Reason is an Error-like object\r\n if (reason && (reason.message || reason.stack)) {\r\n const { message, stack } = reason;\r\n if (this.skipStackTraceResolutionForPromiseRejections) {\r\n errorMessage += ` Message: ${message}; StackTrace: ${stack}`;\r\n return logError(errorMessage);\r\n }\r\n\r\n return StackTrace.fromError(reason, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` Message: ${message}; StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n errorMessage += `${message} at ${stack}\\n [StackTrace Error: ${ex}]`;\r\n }).finally(() => {\r\n logError(errorMessage);\r\n });\r\n }\r\n\r\n // Use bluebird's stack trace if available\r\n errorMessage += `Non error object thrown; Reason: ${JSON.stringify(reason)}; StackTrace: ${_.get(promise, '_trace.stack')};`;\r\n logError(errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.errorStubScenario = instr.errorStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__52__;","module.exports = __WEBPACK_EXTERNAL_MODULE__53__;","/**\r\n * Pre-defined schema used for Error Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'errorStubScenario',\r\n value: 'Error Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'errorStubActivity',\r\n value: 'Error Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","export { Instrumentation } from './src/instrumentation';\r\nexport { Logger } from './src/loggers/logger';\r\nexport { constants } from './src/constants';\r\n","import _ from 'underscore';\r\nimport { getDefaultConfig } from './default-config';\r\nimport { LoggingService } from './logging-service';\r\nimport { LogTransmitter } from './log-transmitter';\r\n\r\n/**\r\n * Class representing Instrumentation\r\n */\r\nexport class Instrumentation {\r\n /**\r\n * Create an instance of Instrumentation\r\n * @param {object} config - should contain a config of loggers/processors/listeners:\r\n * loggers - specify custom loggers to override or add to the default trace, perf, error loggers.\r\n * processors - specify custom log processors to modify or enrich the logs.\r\n * listeners - specify listeners to write logs to.\r\n * isDebugMode - specify if it's in debug mode or not. Default to false. It will throw error\r\n * if (scenario, activity) pair has already been registered before in debug mode\r\n */\r\n constructor(config = {}) {\r\n this.setup(config);\r\n\r\n // scenarioContext maintains the current scenario in use.\r\n this.scenarioContext = {};\r\n\r\n this.initTransmissionService(this.scenarioContext);\r\n\r\n this.initLoggingService();\r\n }\r\n\r\n setup(config) {\r\n const defaultConfig = getDefaultConfig();\r\n this.loggers = _.defaults(config.loggers || {}, defaultConfig.loggers);\r\n this.processors = _.defaults(config.processors || {}, defaultConfig.processors);\r\n this.listeners = _.defaults(config.listeners || {}, defaultConfig.listeners);\r\n this.isDebugMode = config.isDebugMode || defaultConfig.isDebugMode;\r\n\r\n window.addEventListener('unload', () => this.stop());\r\n }\r\n\r\n stop() {\r\n this.beforeStop();\r\n this.logTransmitter.stop();\r\n }\r\n\r\n initTransmissionService(scenarioContext) {\r\n this.logTransmitter = new LogTransmitter({\r\n scenarioContext,\r\n processors: this.processors,\r\n listeners: this.listeners,\r\n });\r\n this.writeRawLog = rawLogs => this.logTransmitter.transmit(rawLogs);\r\n }\r\n\r\n initLoggingService() {\r\n _.each(this.loggers, (logger) => {\r\n logger.logTransmitter = this.logTransmitter; // eslint-disable-line no-param-reassign\r\n });\r\n this.loggingService = new LoggingService({\r\n loggers: this.loggers,\r\n isDebugMode: this.isDebugMode,\r\n });\r\n }\r\n\r\n /**\r\n * adds specified scenarios on to the instrumentation instance\r\n * @param {object} scenarioSchema - schema that specifies the scenarios to be added\r\n * @returns {Instrumentation} - return self for chaining\r\n */\r\n addScenario(scenarioSchema) {\r\n _.extend(this, this.loggingService.parseSchema(scenarioSchema));\r\n return this;\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - activity instance ready to call logger methods\r\n * usage would be: instrumentation.createScenarioAndActivity(\"scenario\", \"activity\")\r\n * DO NOT use this if the scenario is created multiple times, in which case\r\n * the scenarioId would be different\r\n * .signal(\"something happened\")\r\n */\r\n createScenarioAndActivity(scenarioContext) {\r\n const { parentScenario, scenarioName, activityName } = scenarioContext;\r\n\r\n // build the scenario schema with activity\r\n const schema = {\r\n scenario: [\r\n {\r\n name: scenarioName,\r\n value: scenarioName,\r\n activity: activityName ? [\r\n activityName,\r\n ] : [],\r\n },\r\n ],\r\n };\r\n this.addScenario(schema);\r\n const scenario = this[scenarioName].create(parentScenario);\r\n const activity = activityName ? scenario[activityName].create() : undefined;\r\n return {\r\n scenario,\r\n activity,\r\n };\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - scenario instance\r\n */\r\n createScenario(scenarioContext) {\r\n return this.createScenarioAndActivity(scenarioContext).scenario;\r\n }\r\n\r\n /**\r\n * method for custom logic to be run before the instrumentation service exits\r\n * can be overridden\r\n * @returns {undefined} - no returns\r\n */\r\n beforeStop() {\r\n _.noop();\r\n }\r\n\r\n get ScenarioContext() {\r\n return this.scenarioContext;\r\n }\r\n}\r\n","import { TraceLogger } from './loggers/trace-logger';\r\nimport { PerfLogger } from './loggers/perf-logger';\r\nimport { ErrorLogger } from './loggers/error-logger';\r\nimport { AjaxLogger } from './loggers/ajax-logger';\r\nimport { ScenarioProcessor } from './processors/scenario-processor';\r\nimport { SubstrateLogger } from './loggers/substrate-logger';\r\n\r\nexport function getDefaultConfig() {\r\n // default loggers\r\n const traceLogger = new TraceLogger();\r\n const perfLogger = new PerfLogger();\r\n const errorLogger = new ErrorLogger();\r\n const ajaxLogger = new AjaxLogger();\r\n const substrateLogger = new SubstrateLogger();\r\n\r\n // default processors\r\n const scenarioProcessor = new ScenarioProcessor();\r\n\r\n return {\r\n isDebugMode: false,\r\n loggers: {\r\n traceLogger, errorLogger, perfLogger, ajaxLogger, substrateLogger,\r\n },\r\n processors: { scenarioProcessor },\r\n listeners: {},\r\n };\r\n}\r\n\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Trace Logger\r\n */\r\nexport class TraceLogger extends Logger {\r\n /**\r\n * trace - logs passed in args as trace logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the trace log method\r\n * @returns {undefined} - no returns\r\n */\r\n trace(scenario, activity, parentScenario, [message, api, requestId, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.TRACE,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['trace'];\r\n }\r\n}\r\n","export const constants = {\r\n IMPACTUSER: {\r\n True: true,\r\n False: false,\r\n NA: null,\r\n },\r\n LOGLEVEL: {\r\n INFO: {\r\n name: 'Info',\r\n value: 0,\r\n },\r\n DEBUG: {\r\n name: 'Debug',\r\n value: 1,\r\n },\r\n VERBOSE: {\r\n name: 'Verbose',\r\n value: 2,\r\n },\r\n },\r\n LOGCATEGORY: {\r\n PERFORMANCE: 'ClientPerf',\r\n ERROR: 'ApplicationErrorClientScript',\r\n TRACE: 'ClientTrace',\r\n SUBSTRATE: 'Substrate',\r\n },\r\n ENTRYTYPE: {\r\n SCENARIO: 'Scenario',\r\n ACTIVITY: 'Activity',\r\n AJAX: 'Ajax',\r\n AJAXRENDER: 'AjaxRender',\r\n METHOD: 'Method',\r\n MESSAGE: 'Message',\r\n },\r\n};\r\n","/**\r\n * Base Logger\r\n */\r\nexport class Logger {\r\n /**\r\n * log - transmits logs to the log transmitter\r\n * @param {object} rawLogs - raw logs to be transmitted\r\n * @returns {undefined} - no returns\r\n */\r\n log(rawLogs) {\r\n this.transmitter.transmit(rawLogs);\r\n }\r\n\r\n getLogMethods() {\r\n throw new Error('Not Implemented');\r\n }\r\n\r\n set logTransmitter(logTransmitter) {\r\n this.transmitter = logTransmitter;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getUtcTime, getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Perf Logger\r\n */\r\nexport class PerfLogger extends Logger {\r\n /**\r\n * start - used to measure start of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n start(scenario, activity, parentScenario, [api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * stop - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - result and api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n stop(scenario, activity, parentScenario, [result, api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: false,\r\n timeStamp: getUtcTime(),\r\n pass: _.isUndefined(result) ? true : result,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * monitor - can be used to monitor and measure the duration of a function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is to be monitored and duration measured\r\n * @returns {undefined} - no returns\r\n */\r\n monitor(scenario, activity, parentScenario, [func, context]) {\r\n const originalFunc = context[func];\r\n\r\n if (!_.isFunction(originalFunc)) {\r\n return;\r\n }\r\n\r\n context[func] = (...args) => { // eslint-disable-line no-param-reassign\r\n const t0 = getTimestamp();\r\n\r\n const result = originalFunc.apply(context, args);\r\n\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n super.log({\r\n api: originalFunc.name,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * monitorAsync - can be used to measure the duration of a promise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is async and returns a promise\r\n * @returns {undefined} - returns a promise with perf markers\r\n */\r\n monitorAsync(scenario, activity, parentScenario, [promise]) {\r\n const t0 = getTimestamp();\r\n\r\n // log monitor start\r\n super.log({\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n const onPromiseDone = () => {\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n // log monitor stop\r\n super.log({\r\n isMethodEnter: false,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n /**\r\n * perf - logs passed in args as perf logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the perf log method\r\n * @returns {undefined} - no returns\r\n */\r\n perf(scenario, activity, parentScenario, [message, api]) {\r\n super.log({\r\n api,\r\n message,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['start', 'stop', 'monitor', 'monitorAsync', 'perf'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * Default Error Logger\r\n */\r\nexport class ErrorLogger extends Logger {\r\n /**\r\n * error - logs passed in args as error logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the error log method\r\n * @returns {undefined} - no returns\r\n */\r\n error(scenario, activity, parentScenario, [message, api, requestId, impactUser, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n impactUser: impactUser || constants.IMPACTUSER.NA,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.ERROR,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['error'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Ajax Logger - internal logger that can used by for logging Ajax calls\r\n */\r\nexport class AjaxLogger extends Logger {\r\n /**\r\n * ajax - logs passed in args as ajax logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the ajax log method\r\n * @returns {undefined} - no returns\r\n */\r\n ajax(scenario, activity, parentScenario, [requestId, api,\r\n isMethodEnter, httpMethod, timeTaken, pass, message, entityCount, includeRendering]) {\r\n super.log({\r\n requestId,\r\n api,\r\n isMethodEnter,\r\n httpMethod,\r\n timeTaken,\r\n pass,\r\n message,\r\n entityCount,\r\n entryType: includeRendering === true ?\r\n constants.ENTRYTYPE.AJAXRENDER :\r\n constants.ENTRYTYPE.AJAX,\r\n timeStamp: getUtcTime(),\r\n logLevel: constants.LOGLEVEL.INFO,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['ajax'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * ScenarioProcessor class responsible for enriching logs with scenario/activity information\r\n */\r\nexport class ScenarioProcessor {\r\n process(rawLogs) {\r\n if (!_.has(rawLogs, 'scenario')) {\r\n return rawLogs;\r\n }\r\n\r\n let logs = _.extend(rawLogs, {\r\n activityId: rawLogs.activity.id,\r\n activityName: rawLogs.activity.value,\r\n scenarioId: rawLogs.scenario.id,\r\n scenarioName: rawLogs.scenario.value,\r\n parentScenarioId: rawLogs.parentScenario && rawLogs.parentScenario.id,\r\n parentScenarioName: rawLogs.parentScenario && rawLogs.parentScenario.value,\r\n });\r\n\r\n // drop activity/scenario/parentScenarioScenario since we've already extracted the needed info\r\n logs = _.omit(logs, 'activity', 'scenario', 'parentScenario');\r\n\r\n return logs;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Substrate Logger to log events for user behavior analysis\r\n * Key data entries include\r\n * Sn: scenario name\r\n * SceId: scenario id, this is re-generated whenever a scenario is created\r\n * An: activity name\r\n * ActId: activity id, this is re-generated when an activity is created\r\n * Mes: a custom message for the signal\r\n * Dur: time taken for the signal\r\n */\r\nexport class SubstrateLogger extends Logger {\r\n /**\r\n * startSignal - used to measure start of a signal\r\n * @param {object} scenario - scenario that defines the activity\r\n * @param {object} activity - activity that invoked the log method\r\n * @returns {undefined} - no returns\r\n */\r\n startSignal(scenario, activity) {\r\n if (!scenario || !activity) {\r\n return;\r\n }\r\n activity.startTime = new Date();\r\n }\r\n\r\n /**\r\n * stopSignal - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {boolean} trackDuration - indicate if the signal needs to track time taken\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n stopSignal(scenario, activity, parentScenario, [message, api, trackDuration = true]) {\r\n if (!scenario || !activity || (trackDuration && !activity.startTime)) {\r\n return;\r\n }\r\n\r\n const endTime = new Date();\r\n super.log({\r\n timeStamp: trackDuration ? activity.startTime.toJSON() : endTime.toJSON(),\r\n timeTaken: trackDuration ? (endTime - activity.startTime) : 0,\r\n logCategory: constants.LOGCATEGORY.SUBSTRATE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n message,\r\n api,\r\n });\r\n }\r\n\r\n /**\r\n * signal - an atomic signal that has start and stop paired automatically\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n signal(scenario, activity, parentScenario, [message, api]) {\r\n this.stopSignal(scenario, activity, parentScenario, [message, api, false]);\r\n }\r\n\r\n /**\r\n * withSignalSync - caller provides a function\r\n * start and stop are measure at start and stop of the function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} action - caller provided function as the signal\r\n * action may return message as custom message\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalSync(scenario, activity, parentScenario, [action]) {\r\n this.startSignal(scenario, activity);\r\n const actionReturn = action();\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n actionReturn ? [actionReturn.message, actionReturn.api] : []\r\n );\r\n return actionReturn;\r\n }\r\n\r\n /**\r\n * withSignalAsync - async version of withSignalAsync, caller provides a promise\r\n * start and stop are measure at start and stop of the prmoise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} prmoise - caller provided promise as the signal\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalAsync(scenario, activity, parentScenario, [promise]) {\r\n this.startSignal(scenario, activity);\r\n const onPromiseDone = (promiseReturn) => {\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n promiseReturn ? [promiseReturn.message, promiseReturn.api] : []\r\n );\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n getLogMethods() {\r\n return ['startSignal', 'stopSignal', 'signal', 'withSignalSync', 'withSignalAsync'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ScenarioFactory } from './scenario-factory';\r\n\r\n/**\r\n * LoggingService class responsible for setting up scenarioFactories\r\n */\r\nexport class LoggingService {\r\n /**\r\n * @param {object} options - contains the loggers/debugMode to be used\r\n */\r\n constructor(options) {\r\n this.loggers = options.loggers;\r\n this.isDebugMode = options.isDebugMode;\r\n // Record (scenario, activity) map for duplication check in debug mode\r\n this.registry = this.isDebugMode ? {} : undefined;\r\n }\r\n\r\n checkSchemaDuplication(scenarios) {\r\n /* eslint-disable no-restricted-syntax */\r\n if (this.isDebugMode && this.registry !== undefined) {\r\n for (const scenario of scenarios) {\r\n const { name: scenarioName, activity: activities } = scenario;\r\n // eslint-disable-next-line no-undef\r\n this.registry[scenarioName] = this.registry[scenarioName] || new Set();\r\n\r\n for (const { name: activityName } of activities) {\r\n if (this.registry[scenarioName].has(activityName)) {\r\n throw new Error(`[Debug] Scenario: ${scenarioName} Activity: ${activityName} already registered.`);\r\n }\r\n this.registry[scenarioName].add(activityName);\r\n }\r\n }\r\n }\r\n /* eslint-enable no-restricted-syntax */\r\n }\r\n\r\n parseSchema(scenarioSchema) {\r\n const scenarios = scenarioSchema.scenario;\r\n this.checkSchemaDuplication(scenarios);\r\n const scenarioFactories = {};\r\n _.each(scenarios, (scenario) => {\r\n scenarioFactories[scenario.name] = new ScenarioFactory(scenario, this.loggers);\r\n });\r\n return scenarioFactories;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ActivityFactory } from './activity-factory';\r\n\r\n/**\r\n * Scenario class to create an instance of a Scenario\r\n */\r\nclass Scenario {\r\n constructor(scenarioSchema, loggers, parentScenario) {\r\n this.value = scenarioSchema.value;\r\n this.name = scenarioSchema.name;\r\n this.id = generateGuid();\r\n this.setting = scenarioSchema.setting;\r\n this.loggers = loggers;\r\n this.parentScenario = parentScenario;\r\n\r\n const activities = scenarioSchema.activity;\r\n _.each(activities, (activity) => {\r\n this[(typeof activity === 'string') ? activity : activity.name] = new ActivityFactory(this, activity, loggers, parentScenario);\r\n });\r\n }\r\n\r\n createActivity(activityName) {\r\n return new ActivityFactory(this, activityName, this.loggers, this.parentScenario).create();\r\n }\r\n}\r\n\r\n/**\r\n* ScenarioFactory class responsible for creating Scenario\r\n*/\r\nexport class ScenarioFactory {\r\n /**\r\n * @param {object} scenarioSchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n */\r\n constructor(scenarioSchema, loggers) {\r\n this.scenarioSchema = scenarioSchema;\r\n this.loggers = loggers;\r\n }\r\n\r\n create(parentScenario) {\r\n return new Scenario(this.scenarioSchema, this.loggers, parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Activity class to create an instance of an Activity\r\n */\r\nclass Activity {\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n const simpleActivity = (typeof activitySchema === 'string');\r\n this.name = simpleActivity ? activitySchema : activitySchema.name;\r\n this.value = simpleActivity ? activitySchema : activitySchema.value;\r\n this.setting = simpleActivity ? undefined : activitySchema.setting;\r\n this.id = generateGuid();\r\n\r\n // Add logger methods on the activity\r\n _.each(loggers, (logger) => {\r\n const logMethods = logger.getLogMethods();\r\n _.each(logMethods, (logMethod) => {\r\n this[logMethod] = (...args) => logger[logMethod](scenario, this, parentScenario, args);\r\n });\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * ActivityFactory class responsible for creating Activity\r\n */\r\nexport class ActivityFactory {\r\n /**\r\n * @param {object} scenario - scenario the activity belongs to\r\n * @param {object} activitySchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n * @param {object} parentScenario - parentScenario of the scenario\r\n */\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n this.scenario = scenario;\r\n this.activitySchema = activitySchema;\r\n this.parentScenario = parentScenario;\r\n this.loggers = loggers;\r\n }\r\n\r\n create() {\r\n return new Activity(this.scenario, this.activitySchema, this.loggers, this.parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * LogTransmitter class responsible for transmitting logs to listeners\r\n */\r\nexport class LogTransmitter {\r\n /**\r\n * @param {object} options - has listeners, optional processors and scenarioContext\r\n */\r\n constructor(options = {}) {\r\n this.listeners = options.listeners;\r\n this.processors = options.processors;\r\n this.scenarioContext = options.scenarioContext;\r\n }\r\n\r\n /**\r\n * Updates shared scenario context every time we write, so it can be read(as parentScenario)\r\n * by internal activities when writing logs\r\n * @param {object} rawLogs - the raw logs being transmitted to the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n updateScenarioContext(rawLogs) {\r\n // Scenario is marked hidden for non user defined scenarios\r\n const isHiddenScenario = _.result(rawLogs.scenario.setting, 'hidden');\r\n if (!isHiddenScenario) {\r\n this.scenarioContext.id = rawLogs.scenario.id;\r\n this.scenarioContext.value = rawLogs.scenario.value;\r\n }\r\n }\r\n\r\n transmit(rawLogs) {\r\n if (this.stopped) {\r\n return;\r\n }\r\n\r\n if (_.has(rawLogs, 'scenario')) {\r\n this.updateScenarioContext(rawLogs);\r\n }\r\n\r\n // Pass the rawLogs through each procesor to enrich them\r\n let processedLogs = rawLogs;\r\n _.each(this.processors, (processor) => {\r\n processedLogs = processor.process(processedLogs);\r\n });\r\n\r\n _.each(this.listeners, listener => listener.write(processedLogs));\r\n }\r\n\r\n /**\r\n * Stop the log transmitter service by tearing down the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n stop() {\r\n _.each(this.listeners, (listener) => {\r\n listener.teardown();\r\n });\r\n this.stopped = true;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__123__;","export { ODataBaseAdapter } from './src/index';\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { odataQuery, odataUri, odataCast } from '@bingads-webui/odata-converter';\r\n\r\nfunction sendBatchRequest(definition, params, options) {\r\n const reqs = _.map(params, (param) => {\r\n const id = param.Id;\r\n const uri = odataUri.convert({ definition, options, id });\r\n\r\n return {\r\n type: options.action,\r\n url: uri,\r\n data: param,\r\n };\r\n });\r\n\r\n return odata.batch({ reqs, path: options.path }).then((response) => {\r\n if (_.isFunction(options.processResponse)) {\r\n options.processResponse(response);\r\n }\r\n return response;\r\n });\r\n}\r\n\r\nfunction getCommonOptions({\r\n ajaxOptions = {},\r\n urlParameters,\r\n host,\r\n path,\r\n headers,\r\n successCallback,\r\n state,\r\n oDataToken,\r\n} = {}) {\r\n const options = _.defaults({}, ajaxOptions);\r\n if (_.isObject(urlParameters)) {\r\n options.urlParameters = urlParameters;\r\n }\r\n if (host) {\r\n options.host = host;\r\n }\r\n if (path) {\r\n options.path = path;\r\n }\r\n if (oDataToken) {\r\n options.oDataToken = oDataToken;\r\n }\r\n if (headers) {\r\n options.headers = headers;\r\n }\r\n // [lizho] Remove this after related OData APIs are refactored.\r\n // This callback is to get response header for product offer/product group related OData APIs.\r\n if (_.isFunction(successCallback)) {\r\n options.success = successCallback\r\n }\r\n // \r\n if (state) {\r\n options.params = _.clone(state.attributes);\r\n }\r\n return options;\r\n}\r\n\r\nexport class ODataBaseAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource defintion that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n constructor(options = {}) {\r\n this.options = options;\r\n }\r\n\r\n convertQuery(queryParameters) {\r\n return odataQuery.convert(queryParameters);\r\n }\r\n\r\n create(definition, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n let data = odataCast.data({ data: attrs, definition, options });\r\n let urlParameters = options.urlParameters;\r\n\r\n // Below if block is for the calls being made without EDM models\r\n // This enables making \"POST\" calls with query parameters without edm.\r\n if (attrs.queryParams) {\r\n urlParameters = this.convertQuery(attrs.queryParams);\r\n data = _.omit(data, 'queryParams');\r\n }\r\n\r\n // Must resolve the promise with the created item\r\n // NOTICE: added ajaxOptions here.\r\n return odata\r\n .post(odataUri.convert({ definition, options }), _.defaults({ data, urlParameters }, getCommonOptions(options)));\r\n }\r\n\r\n find(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n let params = {};\r\n let queryParameters = options.queryParameters;\r\n\r\n if (_.isObject(queryParameters)) {\r\n params = { data: _.omit(this.convertQuery(queryParameters), '$top', '$count') };\r\n }\r\n\r\n params.path = options.path;\r\n\r\n // Must resolve the promise with the found item\r\n return odata.get(odataUri.convert({ definition, options, id, isFinding: true }), _.defaults(params, getCommonOptions(options)));\r\n }\r\n\r\n findAll(definition, params, options = {}) {\r\n // Must resolve the promise with the found items\r\n _.extendOwn(options, this.options);\r\n const filterOptions = options.filterOptions;\r\n\r\n // params.entitySet is flavored. options.entitySet is only surported for backward support.\r\n const queryEntitySet = get(params, 'query.entitySet');\r\n const entitySet = options.edmRootResourceIdentifier && queryEntitySet ?\r\n options.edmRootResourceIdentifier.identifyEntitySet(queryEntitySet) :\r\n get(options, 'entitySet');\r\n\r\n let request;\r\n\r\n if (entitySet && options.edm && get(entitySet, 'navigation.source.type') instanceof options.edm.types.ActionType) {\r\n request = odata\r\n .post(\r\n url.queryify(odataUri.convert({ definition, options, isFinding: true, entitySet }), this.convertQuery(_.extend({ filterOptions }, params)), options.ajaxOptions.customParameterizationFunc),\r\n _.defaults({ data: entitySet.navigation.parameters }, getCommonOptions(options))\r\n );\r\n\r\n options.cacheResponse = false;\r\n } else {\r\n request = odata\r\n .get(\r\n odataUri.convert({ definition, options, isFinding: true, entitySet }),\r\n _.defaults({ data: this.convertQuery(_.extend({ filterOptions }, params)) }, getCommonOptions(options))\r\n );\r\n }\r\n\r\n return request.then((res) => {\r\n if (!res) {\r\n return null;\r\n }\r\n\r\n const addPropertyTotalCount = (obj) => Object.defineProperty(obj, 'totalCount', {\r\n value: res['@odata.count'],\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = (obj) => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const queryId = _.uniqueId('query-');\r\n\r\n // if OData results is just an array of string, make it an object then assign the object to value.\r\n if (_.isString(_.first(res.value))) {\r\n res.value = _.map(res.value, item => ({ id: _.uniqueId('item-'), value: item }));\r\n }\r\n\r\n // JSData requires ID for every resource\r\n // Some calls to OData server won't return items with ID, or return items with an empty string as id\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(res.value, (item, index) => {\r\n if (!_.has(item, definition.idAttribute) || item[definition.idAttribute] === '') {\r\n item[definition.idAttribute] = `${queryId}-${index}`;\r\n }\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n if (options.cacheResponse) {\r\n options.afterInject = _.compose(\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n // if odata response payload is not wrapped in value property,\r\n // move the contents under res.value\r\n res.value = _.has(res, 'value') ? res.value : res;\r\n addProperties(res.value);\r\n }\r\n\r\n return res.value;\r\n }, (res) => {\r\n //in case of error, it returns statusText for caller\r\n return res.statusText;\r\n });\r\n }\r\n\r\n update(definition, id, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n const data = odataCast.data({ data: attrs, definition, options });\r\n\r\n return odata\r\n .patch(\r\n odataUri.convert({ definition, options, id }),\r\n // NOTICE: modified to replace app state/config\r\n _.defaults({ data }, getCommonOptions(options))\r\n );\r\n }\r\n updateAll(definition, attrs, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must resolve the promise with the updated items\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n\r\n destroy(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must return a promise\r\n return odata\r\n .delete(odataUri.convert({ definition, options, id }), getCommonOptions(options))\r\n .then(_.property('value'));\r\n }\r\n\r\n destroyAll(definition, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__39__;","module.exports = __WEBPACK_EXTERNAL_MODULE__40__;","\r\n\r\nexport { JsDataRestStore } from './src/jsDataRestStore';\r\n\r\nexport { JsDataRestAdapter } from './src/jsDataRestAdapter';\r\n","import JSData from 'js-data';\r\nimport { JsDataRestAdapter } from './jsDataRestAdapter';\r\n\r\n/**\r\n * This class is a extension of JSData DS(data store)\r\n * @param {object} restfulService - (required) a wrapper of ajax request\r\n */\r\nexport class JsDataRestStore extends JSData.DS {\r\n constructor({\r\n restfulService,\r\n }) {\r\n super().registerAdapter('rest', new JsDataRestAdapter({ restfulService }), { default: true });\r\n }\r\n\r\n /**\r\n * Define resource using JSData data store\r\n * @param {string} resourceName - (required) the name of resource\r\n * @param {object} uriPath - (required) the default uri path for each resource\r\n * @param {string} primaryKey - (optional) the primary key for the resource, default is 'id'\r\n *\r\n * @returns {object} the JsData resource\r\n */\r\n defineRestResource(resourceName, { uriPath, primaryKey = 'id' }) {\r\n if (this.definitions && this.definitions[resourceName]) {\r\n return this.definitions[resourceName];\r\n }\r\n return this.defineResource({\r\n name: resourceName,\r\n meta: { uriPath },\r\n idAttribute: primaryKey,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport URI from 'urijs';\r\n\r\n/**\r\n * Generate uri for restful ajax request\r\n * @param {object} definition - resource definition\r\n * @param {object} properties - query options collection\r\n * @param {object} options - options collection to help generate URL\r\n *\r\n * @returns {string} the uri for restful ajax request\r\n */\r\nconst generateUri = function generate(definition, properties, options) {\r\n let query = '';\r\n\r\n if (!_.isEmpty(properties)) {\r\n const queryParam = {};\r\n\r\n _.each(properties, (value, key) => {\r\n switch (key) {\r\n case 'orderBy':\r\n if (_.isString(value)) {\r\n queryParam.$orderby = `${value} asc`;\r\n } else if (_.isArray(value) && _.isArray(value[0]) && value[0].length > 1) {\r\n queryParam.$orderby = `${value[0][0]} ${value[0][1].toLowerCase()}`;\r\n } else if (_.isObject(value)) {\r\n const name = _.keys(value)[0];\r\n const direction = value[name] > 0 ? 'asc' : 'desc';\r\n\r\n queryParam.$orderby = `${name} ${direction}`;\r\n }\r\n break;\r\n // Todo: may need a better design of this part,using 'query' here is for compatibility.\r\n case 'query':\r\n _.extend(queryParam, value);\r\n break;\r\n case 'limit':\r\n if (!_.isNumber(value) || _.isNaN(value)) {\r\n throw new TypeError('limit must be a number and not NaN');\r\n } else if (value !== Number.MAX_VALUE) {\r\n queryParam.$top = value;\r\n }\r\n break;\r\n case 'offset':\r\n queryParam.$skip = value;\r\n break;\r\n default:\r\n queryParam[key] = value;\r\n break;\r\n }\r\n });\r\n query = `?${URI.buildQuery(queryParam, false, false)}`;\r\n }\r\n\r\n let path = definition.meta.uriPath;\r\n if (options && !_.isEmpty(options.pathExtension)) {\r\n _.each(options.pathExtension, (value, key) => {\r\n path = `${path}/${key}/${value}`;\r\n });\r\n }\r\n return `${path}${query}`;\r\n};\r\n\r\nconst checkAndAddPrimaryKey = (primaryKey, items) => {\r\n const queryId = _.uniqueId('query-');\r\n // JSData requires ID for every resource, some calls won't return items with ID\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(items, (item, index) => {\r\n if (!_.has(item, primaryKey)) {\r\n item[primaryKey] = `${queryId}-${index}`; // eslint-disable-line no-param-reassign\r\n }\r\n });\r\n return items;\r\n};\r\n\r\n/**\r\n * This class is a extension of JSData DS(data store)\r\n * @param {object} restfulService - (required) a wrapper of ajax request\r\n */\r\nexport class JsDataRestAdapter {\r\n constructor({\r\n restfulService,\r\n }) {\r\n this.restfulService = restfulService;\r\n }\r\n\r\n /**\r\n * implement of JSData API create\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} attrs - properties with which to create the item\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n create(definition, attrs, options) {\r\n // Must resolve the promise with the created item\r\n return this.restfulService.post(generateUri(definition, {}, options), attrs, options);\r\n }\r\n\r\n /**\r\n * implement of JSData API find\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to retrieve\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n find(definition, id, options) {\r\n // Must return a promise that resolves with the found item\r\n return this.restfulService.get(generateUri(definition, {\r\n [definition.idAttribute]: id,\r\n }, options), options);\r\n }\r\n\r\n /**\r\n * implement of JSData API findAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} params - query parameters for selecting items from the collection\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {Promise.} Promise of item list. ID will be added to item if it's missing\r\n * total and other properties will be added as well.\r\n */\r\n findAll(definition, params, options) {\r\n // Must return a promise that resolves with the found items\r\n return this.restfulService.get(generateUri(definition, params, options), options)\r\n .then((res) => {\r\n if (options && _.isFunction(options.preProcess)) {\r\n // eslint-disable-next-line no-param-reassign\r\n res = options.preProcess(res);\r\n }\r\n\r\n const addPropertyTotalCount = obj => Object.defineProperty(obj, 'totalCount', {\r\n value: res.total,\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = obj => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n // To handle different format response, some calls will return\r\n // {total: a number, value: a list of items},\r\n // For these cases we need change the value.\r\n const items = checkAndAddPrimaryKey(definition.idAttribute, _.has(res, 'value') ? res.value : res);\r\n\r\n if (res.value && options.cacheResponse) {\r\n options.afterInject = _.compose( // eslint-disable-line no-param-reassign\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n addProperties(items);\r\n }\r\n return items;\r\n });\r\n }\r\n\r\n /**\r\n * implement of JSData API update\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to update\r\n * @param {object} attrs - properties with which to update the item.\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n update(definition, id, attrs, options) {\r\n // Must return a promise that resolves with the update items\r\n return this.restfulService.patch(generateUri(definition, { id }, options), attrs, options);\r\n }\r\n\r\n /**\r\n * implement of JSData API updateAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} attrs - the attributes which to update the resource.\r\n * @param {object} [params] - query parameters for selecting which items to update. Default: {}.\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {Promise.} Promise of item list. ID will be added to item if it's missing\r\n */\r\n updateAll(definition, attrs, params, options) {\r\n return this.restfulService.patch(generateUri(definition, params, options), attrs, options)\r\n .then(res => checkAndAddPrimaryKey(definition.idAttribute, _.has(res, 'value') ? res.value : res));\r\n }\r\n\r\n /**\r\n * implement of JSData API destroy\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {string|number} id - primary key of the item to destroy\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n destroy(definition, id, options) {\r\n // Must return a promise\r\n return this.restfulService.delete(generateUri(definition, { id }, options), options);\r\n }\r\n\r\n /**\r\n * implement of JSData API destroyAll\r\n * @param {object} definition - is a resource definition that would\r\n * be returned by DS#defineResource\r\n * @param {object} params - query parameters for selecting which items to destroy\r\n * @param {object} [options] - would be options argument that was passed into\r\n * function DS method that is calling the adapter method\r\n *\r\n * @returns {promise} will return a promise\r\n */\r\n destroyAll(definition, params, options) {\r\n // Must return a promise\r\n return this.restfulService.delete(generateUri(definition, params, options), options);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__68__;","export { jsonTreeParse } from './src/parse';\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Rebuild tree structure using parsed text that represents the structure\r\n * Helper function, will not be exported through index\r\n * @param {array} nameList - parsed text that represents the structure\r\n * @param {object} tree - json object used to keep track of and store tree structure\r\n * @param {object} data - current node being processed, used to\r\n * maintain the original structure\r\n * @returns {object} parsed tree\r\n */\r\nexport function parseTree(nameList, tree, data) {\r\n let currentTree = tree;\r\n\r\n for (let nameIdx = 0; nameIdx < nameList.length; nameIdx += 1) {\r\n let matchingNode = null;\r\n\r\n // search for node matching current name\r\n for (let nodeIdx = 0; nodeIdx < currentTree.length; nodeIdx += 1) {\r\n if (nameList[nameIdx] === currentTree[nodeIdx].name) {\r\n matchingNode = currentTree[nodeIdx];\r\n break;\r\n }\r\n }\r\n\r\n // create new node with name if cannot find matching one\r\n if (_.isNull(matchingNode)) {\r\n matchingNode = {\r\n id: generateGuid(),\r\n name: nameList[nameIdx],\r\n children: [],\r\n data: null,\r\n };\r\n\r\n currentTree.push(matchingNode);\r\n }\r\n\r\n // bind data to node if the node is a leaf node\r\n if (nameIdx === (nameList.length - 1)) {\r\n matchingNode.data = data;\r\n }\r\n\r\n // keep searching the children of matching node\r\n currentTree = matchingNode.children;\r\n }\r\n\r\n return tree;\r\n}\r\n\r\n/**\r\n * Parse a json object based on given schema\r\n * @param {object} dataList - the original data usually in a flat list\r\n * @param {object} schema - indicate which field to looking for and the delimeter being used here\r\n * @returns {object} parsed tree\r\n */\r\nexport function jsonTreeParse(dataList, schema) {\r\n let tree = [];\r\n\r\n if (!_.isString(schema.field) || !_.isString(schema.delimeter)\r\n || _.isEmpty(schema.field) || _.isEmpty(schema.delimeter)) {\r\n return tree;\r\n }\r\n\r\n const delimeterRegex = new RegExp(`[^${schema.delimeter}]+`, 'g');\r\n const treeNameField = schema.field;\r\n\r\n for (let i = 0; i < dataList.length; i += 1) {\r\n const data = dataList[i];\r\n\r\n if (!_.isString(data[treeNameField])) {\r\n return tree;\r\n }\r\n\r\n const nameList = data[treeNameField].match(delimeterRegex);\r\n\r\n tree = parseTree(nameList, tree, data);\r\n }\r\n\r\n return tree;\r\n}\r\n","export { KeepAlive, keepAliveInstance } from './src';\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport * as urlUtil from '@bingads-webui/url-util';\r\nimport { http } from '@bingads-webui/http-util';\r\n\r\nconst checkFrequencyInMinutes = 5;\r\n\r\nfunction fullFillUrl(relativeUrl) {\r\n const domain = urlUtil.getDomain(window.location.href);\r\n return `${window.location.protocol}//${domain.replace(/ui\\./i, '')}${relativeUrl}`;\r\n}\r\n\r\nexport class KeepAlive {\r\n /**\r\n * initialize Keep Alive Class\r\n * @param {object} [deps] - provide dep injection for keep alive\r\n * @param {string} [url] - url to keep alive, if pass absolute url, rewrite url will be useless\r\n * @param {function} [reWriteUrl] - function to rewrite url when pass relative url\r\n * @param {number} [timeoutInMinutes] - user is idle but we keep session alive duration\r\n * @param {function} [unAuthCallBack] - call back when get 401 from keep alive\r\n * @returns {void}\r\n */\r\n constructor({\r\n deps = {\r\n httpUtil: http,\r\n },\r\n url = '/root/keepalive?__adcenterAJAX=true',\r\n requestOption = {\r\n converters: {\r\n 'text json': function (data) {\r\n if (_.isEmpty(data)) {\r\n return null;\r\n }\r\n return JSON.parse(data);\r\n },\r\n },\r\n xhrFields: {\r\n withCredentials: true,\r\n },\r\n contentType: 'application/x-www-form-urlencoded',\r\n },\r\n reWriteUrl = fullFillUrl,\r\n timeoutInMinutes = 240,\r\n unAuthCallBack = _.identity,\r\n }) {\r\n this.url = url;\r\n if (urlUtil.isRelativeUrl(url)) {\r\n this.url = reWriteUrl(url);\r\n }\r\n this.deps = deps;\r\n this.keepAliveTask = null;\r\n this.checkFrequency = checkFrequencyInMinutes * 1000 * 60;\r\n this.keepAliveCounter = 0;\r\n this.keepAliveMaxCount = timeoutInMinutes / checkFrequencyInMinutes;\r\n this.unAuthCallBack = unAuthCallBack;\r\n this.requestOption = requestOption;\r\n }\r\n\r\n issueKeepAliveRequest() {\r\n return this.deps.httpUtil.get(this.url, this.requestOption).then((data = {}) => {\r\n if (_.result(data, 'Error') === '401') {\r\n this.unAuthCallBack(data);\r\n return false;\r\n }\r\n return true;\r\n }).catch((reason) => {\r\n if (_.result(reason, 'status') === 200) {\r\n return true;\r\n }\r\n return false;\r\n }).then((result) => {\r\n if (result) {\r\n this.keepAliveCounter = this.keepAliveCounter + 1;\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n issueKeepAliveRequestWithExceptionHandling() {\r\n try {\r\n this.issueKeepAliveRequest();\r\n // eslint-disable-next-line no-empty\r\n } catch (e) {}\r\n }\r\n\r\n start() {\r\n this.stop();\r\n this.issueKeepAliveRequestWithExceptionHandling();\r\n this.keepAliveTask = setInterval(() => {\r\n if (this.keepAliveCounter <= this.keepAliveMaxCount) {\r\n this.issueKeepAliveRequestWithExceptionHandling();\r\n }\r\n }, this.checkFrequency);\r\n\r\n $(window).on('unload', () => this.stop());\r\n }\r\n\r\n stop() {\r\n if (this.keepAliveTask !== null) {\r\n clearInterval(this.keepAliveTask);\r\n this.keepAliveTask = null;\r\n }\r\n }\r\n\r\n refresh() {\r\n this.keepAliveCounter = 0;\r\n }\r\n}\r\n\r\nexport const keepAliveInstance = new KeepAlive({});\r\n","import { keyCode } from './src/keyCode';\r\nimport { keyName } from './src/keyName';\r\n\r\n\r\nexport { keyCode, keyName };\r\n","// The key is capitalized to be compatible with http://www.w3.org/TR/DOM-Level-3-Events-code.\r\n\r\n// Theoretically the properties should be named as keyCode (numeric) and code (string) to be\r\n// aligned with KeyboardEvent#keyCode and KeyboardEvent#code, but that would be confusing for people\r\n// that are not familiar with this story, and when KeyboardEvent#code is supported by the browser,\r\n// this component should be deprecated altogether, so let's use easy-to-understand property names\r\n// here.\r\n\r\n/**\r\n * Look up keyCode (KeyboardEvent#keyCode, numeric) with keyName (KeyboardEvent#code, string).\r\n * @example keyCode.Tab === 9\r\n * @return {number} The keyCode (KeyboardEvent#keyCode, numeric)\r\n */\r\n/* eslint-disable quote-props */\r\nexport const keyCode = {\r\n // Alpha-numeric\r\n 'Digit1': 0x31, // 49\r\n 'Digit2': 0x32, // 50\r\n 'Digit3': 0x33, // 51\r\n 'Digit4': 0x34, // 52\r\n 'Digit5': 0x35, // 53\r\n 'Digit6': 0x36, // 54\r\n 'Digit7': 0x37, // 55\r\n 'Digit8': 0x38, // 56\r\n 'Digit9': 0x39, // 57\r\n 'Digit0': 0x30, // 48\r\n 'KeyA': 0x41, // 65\r\n 'KeyB': 0x42, // 66\r\n 'KeyC': 0x43, // 67\r\n 'KeyD': 0x44, // 68\r\n 'KeyE': 0x45, // 69\r\n 'KeyF': 0x46, // 70\r\n 'KeyG': 0x47, // 71\r\n 'KeyH': 0x48, // 72\r\n 'KeyI': 0x49, // 73\r\n 'KeyJ': 0x4A, // 74\r\n 'KeyK': 0x4B, // 75\r\n 'KeyL': 0x4C, // 76\r\n 'KeyM': 0x4D, // 77\r\n 'KeyN': 0x4E, // 78\r\n 'KeyO': 0x4F, // 79\r\n 'KeyP': 0x50, // 80\r\n 'KeyQ': 0x51, // 81\r\n 'KeyR': 0x52, // 82\r\n 'KeyS': 0x53, // 83\r\n 'KeyT': 0x54, // 84\r\n 'KeyU': 0x55, // 85\r\n 'KeyV': 0x56, // 86\r\n 'KeyW': 0x57, // 87\r\n 'KeyX': 0x58, // 88\r\n 'KeyY': 0x59, // 89\r\n 'KeyZ': 0x5A, // 90\r\n\r\n // Punctuation\r\n 'Comma': 0xBC, // 188\r\n 'Period': 0xBE, // 190\r\n 'Semicolon': 0xBA, // 186\r\n 'Quote': 0xDE, // 222\r\n 'BracketLeft': 0xDB, // 219\r\n 'BracketRight': 0xDD, // 221\r\n 'Backquote': 0xC0, // 192\r\n 'Backslash': 0xDC, // 220\r\n 'Minus': 0xBD, // 189\r\n 'Equal': 0xBB, // 187\r\n 'IntlRo': 0xC1, // 193\r\n 'IntlYen': 0xFF, // 255\r\n\r\n // Modifiers\r\n 'AltLeft': 0x12, // 18\r\n 'AltRight': 0x12, // 18\r\n 'CapsLock': 0x14, // 20\r\n 'ControlLeft': 0x11, // 17\r\n 'ControlRight': 0x11, // 17\r\n 'OSLeft': 0x5B, // 91\r\n 'OSRight': 0x5C, // 92\r\n 'ShiftLeft': 0x10, // 16\r\n 'ShiftRight': 0x10, // 16\r\n\r\n // Non-printable\r\n 'ContextMenu': 0x5D, // 93\r\n 'Enter': 0x0D, // 13\r\n 'Space': 0x20, // 32\r\n 'Tab': 0x09, // 9\r\n 'Delete': 0x2E, // 46\r\n 'End': 0x23, // 35\r\n 'Home': 0x24, // 36\r\n 'Insert': 0x2D, // 45\r\n 'PageDown': 0x22, // 34\r\n 'PageUp': 0x21, // 33\r\n 'ArrowDown': 0x28, // 40\r\n 'ArrowLeft': 0x25, // 37\r\n 'ArrowRight': 0x27, // 39\r\n 'ArrowUp': 0x26, // 38\r\n 'Escape': 0x1B, // 27\r\n 'PrintScreen': 0x2C, // 44\r\n 'ScrollLock': 0x91, // 145\r\n 'Pause': 0x13, // 19\r\n\r\n // Functional\r\n 'F1': 0x70, // 112\r\n 'F2': 0x71, // 113\r\n 'F3': 0x72, // 114\r\n 'F4': 0x73, // 115\r\n 'F5': 0x74, // 116\r\n 'F6': 0x75, // 117\r\n 'F7': 0x76, // 118\r\n 'F8': 0x77, // 119\r\n 'F9': 0x78, // 120\r\n 'F10': 0x79, // 121\r\n 'F11': 0x7A, // 122\r\n 'F12': 0x7B, // 123\r\n 'F13': 0x7C, // 124\r\n 'F14': 0x7D, // 125\r\n 'F15': 0x7E, // 126\r\n 'F16': 0x7F, // 127\r\n 'F17': 0x80, // 128\r\n 'F18': 0x81, // 129\r\n 'F19': 0x82, // 130\r\n 'F20': 0x83, // 131\r\n 'F21': 0x84, // 132\r\n 'F22': 0x85, // 133\r\n 'F23': 0x86, // 134\r\n 'F24': 0x87, // 135\r\n\r\n // NumPad with NumLock on\r\n 'NumLock': 0x90, // 144\r\n 'Numpad0': 0x60, // 96\r\n 'Numpad1': 0x61, // 97\r\n 'Numpad2': 0x62, // 98\r\n 'Numpad3': 0x63, // 99\r\n 'Numpad4': 0x64, // 100\r\n 'Numpad5': 0x65, // 101\r\n 'Numpad6': 0x66, // 102\r\n 'Numpad7': 0x67, // 103\r\n 'Numpad8': 0x68, // 104\r\n 'Numpad9': 0x69, // 105\r\n 'NumpadAdd': 0x6B, // 107\r\n 'NumpadComma': 0xC2, // 194\r\n 'NumpadDecimal': 0x6E, // 110\r\n 'NumpadDivide': 0x6F, // 111\r\n 'NumpadEnter': 0x0D, // 13\r\n 'NumpadEqual': 0x0C, // 12\r\n 'NumpadMultiply': 0x6A, // 106\r\n 'NumpadSubtract': 0x6D, // 109\r\n\r\n // NumPad with NumLock off\r\n 'Numpad0-Insert': 0x2D, // 45\r\n 'Numpad1-End': 0x23, // 35\r\n 'Numpad2-ArrowDown': 0x28, // 40\r\n 'Numpad3-PageDown': 0x22, // 34\r\n 'Numpad4-ArrowLeft': 0x25, // 37\r\n 'Numpad5-Clear': 0x0C, // 12\r\n 'Numpad6-ArrowRight': 0x27, // 39\r\n 'Numpad7-Home': 0x24, // 36\r\n 'Numpad8-ArrowUp': 0x26, // 38\r\n 'Numpad9-PageUp': 0x21, // 33\r\n 'NumpadDecimal-Delete': 0x2E, // 46\r\n};\r\n/* eslint-enable quote-props */\r\n","import _ from 'underscore';\r\nimport { keyCode } from './keyCode';\r\n\r\n// The key is capitalized to be compatible with http://www.w3.org/TR/DOM-Level-3-Events-code.\r\n\r\n// Generate a readonly output.\r\n// Theoretically the properties should be named as keyCode (numeric) and code (string) to be\r\n// aligned with KeyboardEvent#keyCode and KeyboardEvent#code, but that would be confusing for people\r\n// that are not familiar with this story, and when KeyboardEvent#code is supported by the browser,\r\n// this component should be deprecated altogether, so let's use easy-to-understand property names\r\n// here.\r\n\r\nconst uniqueValues = object => _.object(_.unique(_.pairs(object), o => o[1]));\r\n\r\n/**\r\n * Look up keyName (KeyboardEvent#code, string) with keyCode (KeyboardEvent#keyCode, numeric).\r\n * @example keyName[9] === 'Tab'\r\n * @return {string} The name (KeyboardEvent#code, string)\r\n */\r\nexport const keyName = Object.create(\r\n Object.prototype,\r\n _.mapObject(_.invert(uniqueValues(keyCode)), val => ({\r\n enumerable: true,\r\n value: val,\r\n writable: false,\r\n }))\r\n);\r\n"],"names":["factory","self","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__23__","__WEBPACK_EXTERNAL_MODULE__110__","__WEBPACK_EXTERNAL_MODULE__111__","__WEBPACK_EXTERNAL_MODULE__112__","installedModules","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","locale","I18nModel","loadCLDRData","core","loadTimeZoneData","iana","setGlobalLocale","default","data","Cldr","attributes","language","region","script","_","find","contains","availableLocales","modern","load","__WEBPACK_EXTERNAL_MODULE__5__","InMemoryListener","Listener","constructor","options","super","this","formatters","filters","sink","init","isFunction","write","initialized","logMessage","filterLogs","formattedMsg","formatLogs","maxSize","logs","log","push","length","shift","items","SessionStorageSink","storageKey","Error","keyCache","existingItemsStr","window","sessionStorage","getItem","isEmpty","JSON","parse","forEach","addEventListener","setItemsOnUnload","setItem","stringify","__WEBPACK_EXTERNAL_MODULE__29__","stubOptions","defaults","defaultConfig","handler","eventHandler","setupScenario","instrumentation","interceptor","AjaxInterceptor","ajaxStubScenario","each","objectsToStub","objectToStub","intercept","instr","addScenario","schema","ScenarioContext","globalInterceptInstance","scenario","generateRid","generateGuid","jQuery","originalAjax","ajax","url","isObject","isString","requestId","shouldAddRequestId","dataType","setQuery","toString","activity","ajaxStubActivity","AjaxEventInterceptor","triggerEventInterceptors","urlInLowerCase","toLowerCase","indexOf","isUndefined","__WEBPACK_EXTERNAL_MODULE__45__","event","pageTrackingId","result","ajaxContext","requestResult","httpMethod","type","error","ajaxStartTime","ajaxRenderStartTime","entityCount","getPageSize","beforeSendHandler","interceptBeforeSend","successHandler","interceptSuccess","errorHandler","interceptError","completeHandler","interceptComplete","ajaxOptions","context","args","originalEventHandler","originalRet","handleException","apply","onBeforeSendDone","successRenderHandler","func","api","message","ex","stack","$","serverErrorCodes","detectError","respData","pass","Errors","Code","isArray","Message","impactUser","getEntityCount","Records","RowCount","requestData","pageSizeParam","BiDateRange","keys","substr","AjaxEventHandler","__WEBPACK_EXTERNAL_MODULE__48__","errorMappers","shouldAddHeaders","constant","jqXHR","getTimestamp","applicationName","ajaxStubOptions","featureName","setRequestHeader","lcid","textStatus","ajaxTimeTaken","getServerPerf","renderTimeTaken","errorThrown","status","trim","responseText","responseXML","isUserError","trace","any","errorMapper","check","getResponseHeader","perfTimings","odataPerf","header","responseJSON","keyUnfilteredCount","keyOdataCount","setting","hidden","getStackStringFromStackFrames","stackFrames","map","frame","getFunctionName","getFileName","getLineNumber","getColumnNumber","join","asyncAjaxOverride","Promise","resolve","reject","req","XMLHttpRequest","open","onerror","onreadystatechange","readyState","send","logUnhandledPromiseRejections","skipStackTraceResolutionForPromiseRejections","isExpectedUnhandledPromiseError","stackTraceOptions","errorMsg","lineNumber","column","errorObj","errorStubScenario","errorStubActivity","handleError","promiseRejection","handlePromiseRejection","errorMessage","StackTrace","fromError","then","catch","has","finally","location","href","document","referrer","perviousRoute","history","state","previousRoute","promiseRejectionEvent","logError","promise","reason","detail","__WEBPACK_EXTERNAL_MODULE__52__","__WEBPACK_EXTERNAL_MODULE__53__","config","setup","scenarioContext","initTransmissionService","initLoggingService","getDefaultConfig","loggers","processors","listeners","isDebugMode","stop","beforeStop","logTransmitter","LogTransmitter","writeRawLog","rawLogs","transmit","logger","loggingService","LoggingService","scenarioSchema","extend","parseSchema","createScenarioAndActivity","parentScenario","scenarioName","activityName","undefined","createScenario","noop","traceLogger","TraceLogger","perfLogger","PerfLogger","errorLogger","ErrorLogger","ajaxLogger","AjaxLogger","substrateLogger","SubstrateLogger","scenarioProcessor","ScenarioProcessor","Logger","logLevel","timeStamp","getUtcTime","logCategory","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","entryType","ENTRYTYPE","MESSAGE","getLogMethods","IMPACTUSER","True","False","NA","DEBUG","VERBOSE","PERFORMANCE","ERROR","SUBSTRATE","SCENARIO","ACTIVITY","AJAX","AJAXRENDER","METHOD","transmitter","start","isMethodEnter","monitor","originalFunc","t0","timeTaken","monitorAsync","onPromiseDone","perf","includeRendering","process","activityId","id","scenarioId","parentScenarioId","parentScenarioName","omit","startSignal","startTime","Date","stopSignal","trackDuration","endTime","toJSON","signal","withSignalSync","action","actionReturn","withSignalAsync","promiseReturn","registry","checkSchemaDuplication","scenarios","activities","Set","add","scenarioFactories","ScenarioFactory","Scenario","ActivityFactory","createActivity","Activity","activitySchema","simpleActivity","logMethods","logMethod","updateScenarioContext","stopped","processedLogs","processor","listener","teardown","__WEBPACK_EXTERNAL_MODULE__123__","sendBatchRequest","definition","params","reqs","param","Id","uri","odataUri","convert","odata","batch","path","response","processResponse","getCommonOptions","urlParameters","host","headers","successCallback","oDataToken","success","clone","ODataBaseAdapter","queryParameters","odataQuery","attrs","extendOwn","odataCast","queryParams","convertQuery","post","isFinding","request","filterOptions","queryEntitySet","entitySet","edmRootResourceIdentifier","identifyEntitySet","edm","types","ActionType","queryify","customParameterizationFunc","navigation","parameters","cacheResponse","res","queryId","uniqueId","first","item","index","idAttribute","addProperties","compose","obj","afterInject","identity","innerOptions","injected","statusText","patch","delete","__WEBPACK_EXTERNAL_MODULE__39__","__WEBPACK_EXTERNAL_MODULE__40__","JsDataRestStore","JSData","DS","restfulService","registerAdapter","JsDataRestAdapter","defineRestResource","resourceName","uriPath","primaryKey","definitions","defineResource","meta","generateUri","properties","query","queryParam","$orderby","direction","isNumber","isNaN","TypeError","Number","MAX_VALUE","$top","$skip","URI","buildQuery","pathExtension","checkAndAddPrimaryKey","findAll","preProcess","total","update","updateAll","destroy","destroyAll","__WEBPACK_EXTERNAL_MODULE__68__","dataList","tree","field","delimeter","delimeterRegex","RegExp","treeNameField","parseTree","match","nameList","currentTree","nameIdx","matchingNode","nodeIdx","isNull","children","fullFillUrl","relativeUrl","domain","urlUtil","getDomain","protocol","replace","KeepAlive","deps","httpUtil","http","requestOption","converters","xhrFields","withCredentials","contentType","reWriteUrl","timeoutInMinutes","unAuthCallBack","isRelativeUrl","keepAliveTask","checkFrequency","checkFrequencyInMinutes","keepAliveCounter","keepAliveMaxCount","issueKeepAliveRequest","issueKeepAliveRequestWithExceptionHandling","e","setInterval","on","clearInterval","refresh","keepAliveInstance","keyName","mapObject","invert","keyCode","unique","pairs","val","writable"],"sourceRoot":""}