advanced-logger
Version:
Advanced logger module extendable with plugins. Works in nodejs and browsers
1 lines • 64.6 kB
Source Map (JSON)
{"version":3,"sources":["../node_modules/fast-safe-stringify/index.js","../src/index.ts","../src/util/EventEmitter.ts","../node_modules/lodash-es/isObject.js","../node_modules/lodash-es/_freeGlobal.js","../node_modules/lodash-es/_root.js","../node_modules/lodash-es/now.js","../node_modules/lodash-es/_trimmedEndIndex.js","../node_modules/lodash-es/_baseTrim.js","../node_modules/lodash-es/_Symbol.js","../node_modules/lodash-es/_getRawTag.js","../node_modules/lodash-es/_objectToString.js","../node_modules/lodash-es/_baseGetTag.js","../node_modules/lodash-es/isObjectLike.js","../node_modules/lodash-es/isSymbol.js","../node_modules/lodash-es/toNumber.js","../node_modules/lodash-es/debounce.js","../node_modules/lodash-es/throttle.js","../src/util/LogUtils.ts","../src/enums/TransformationEnum.ts","../src/LogStore.ts","../src/AdvancedLogger.ts","../src/service/BaseRemoteService.ts","../src/util/http.ts","../src/service/ConsoleService.ts","../src/service/ElasticsearchService.ts","../src/service/LogglyService.ts","../src/service/SumologicService.ts","../src/strategy/InstantStrategy.ts","../src/strategy/OnBundleSizeStrategy.ts","../src/strategy/OnIntervalStrategy.ts","../src/strategy/OnRequestStrategy.ts","../src/strategy/HybridStrategy.ts"],"sourcesContent":["module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","import AdvancedLogger from \"./AdvancedLogger\";\nimport {TransformationEnum} from \"./enums/TransformationEnum\";\nimport BaseRemoteService from \"./service/BaseRemoteService\";\nimport ConsoleService from \"./service/ConsoleService\";\nimport ElasticsearchService from \"./service/ElasticsearchService\";\nimport LogglyService from \"./service/LogglyService\";\nimport SumologicService from \"./service/SumologicService\";\nimport InstantStrategy from \"./strategy/InstantStrategy\";\nimport OnBundleSizeStrategy from \"./strategy/OnBundleSizeStrategy\";\nimport OnIntervalStrategy from \"./strategy/OnIntervalStrategy\";\nimport OnRequestStrategy from \"./strategy/OnRequestStrategy\";\nimport HybridStrategy from \"./strategy/HybridStrategy\";\n\nconst strategy = {\n InstantStrategy,\n OnBundleSizeStrategy,\n OnRequestStrategy,\n OnIntervalStrategy,\n HybridStrategy\n};\n\nconst service = {\n BaseRemoteService,\n SumologicService,\n LogglyService,\n ConsoleService,\n ElasticsearchService\n};\n\nexport {\n AdvancedLogger,\n strategy,\n service,\n TransformationEnum\n};\n","type Listener = (...args: any[]) => void;\n\nexport class EventEmitter {\n private listeners = new Map<string, Set<Listener>>();\n\n on(event: string, fn: Listener): this {\n (this.listeners.get(event) ?? this.set(event)).add(fn);\n return this;\n }\n\n once(event: string, fn: Listener): this {\n const wrap: Listener = (...args) => {\n this.off(event, wrap);\n fn(...args);\n };\n return this.on(event, wrap);\n }\n\n off(event: string, fn: Listener): this {\n this.listeners.get(event)?.delete(fn);\n return this;\n }\n\n removeListener(event: string, fn: Listener): this {\n return this.off(event, fn);\n }\n\n emit(event: string, ...args: any[]): boolean {\n const set = this.listeners.get(event);\n if (!set || set.size === 0) {\n return false;\n }\n for (const fn of [...set]) {\n fn(...args);\n }\n return true;\n }\n\n removeAllListeners(event?: string): this {\n if (event) {\n this.listeners.delete(event);\n } else {\n this.listeners.clear();\n }\n return this;\n }\n\n private set(event: string): Set<Listener> {\n const s = new Set<Listener>();\n this.listeners.set(event, s);\n return s;\n }\n}\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nexport default isObject;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nexport default freeGlobal;\n","import freeGlobal from './_freeGlobal.js';\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nexport default root;\n","import root from './_root.js';\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nexport default now;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nexport default trimmedEndIndex;\n","import trimmedEndIndex from './_trimmedEndIndex.js';\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nexport default baseTrim;\n","import root from './_root.js';\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nexport default Symbol;\n","import Symbol from './_Symbol.js';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nexport default getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nexport default objectToString;\n","import Symbol from './_Symbol.js';\nimport getRawTag from './_getRawTag.js';\nimport objectToString from './_objectToString.js';\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nexport default baseGetTag;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nexport default isObjectLike;\n","import baseGetTag from './_baseGetTag.js';\nimport isObjectLike from './isObjectLike.js';\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nexport default isSymbol;\n","import baseTrim from './_baseTrim.js';\nimport isObject from './isObject.js';\nimport isSymbol from './isSymbol.js';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nexport default toNumber;\n","import isObject from './isObject.js';\nimport now from './now.js';\nimport toNumber from './toNumber.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nexport default debounce;\n","import debounce from './debounce.js';\nimport isObject from './isObject.js';\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nexport default throttle;\n","import IDefaultLogConfig from \"../interface/config/IDefaultLogConfig\";\n\nconst DELIMETER = \"-\";\n\nexport default {\n getLogIdByFields<T extends IDefaultLogConfig>(log: T, fields: string[]): string {\n return fields.map(field => `${field}${DELIMETER}${log[field]}`).join(DELIMETER);\n },\n\n /**\n * It is necessary to convert objects safely, otherwise we can lost the whole log bundle\n */\n tryJSONStringify<T>(obj: T): string {\n try {\n return JSON.stringify(obj);\n } catch (_) {\n //ignore the error\n return \"\";\n }\n }\n};\n","export enum TransformationEnum {\n RAPID_FIRE_GROUPING\n}\n","import {EventEmitter} from \"./util/EventEmitter\";\nimport type {DebouncedFunc} from \"lodash-es\";\nimport throttle from \"lodash-es/throttle\";\n\nimport LogUtils from \"./util/LogUtils\";\nimport {TransformationEnum} from \"./enums/TransformationEnum\";\nimport ILogStoreConfig from \"./interface/config/ILogStoreConfig\";\nimport IDestructable from \"./interface/IDestructable\";\nimport IGroupTransformation from \"./interface/IGroupTransformation\";\nimport IDefaultLogConfig from \"./interface/config/IDefaultLogConfig\";\n\nexport default class LogStore<T extends IDefaultLogConfig> implements IDestructable {\n /**\n * Subscribe in order to receive \"add\", \"cleared\" events\n */\n public readonly eventEmitter: EventEmitter;\n\n private readonly logs: T[];\n\n private readonly config: ILogStoreConfig;\n\n private readonly identityMap: Map<string, number>;\n\n private groupLeftIndex: number = -1;\n\n private readonly groupableConfig: IGroupTransformation | undefined;\n\n // todo Proper typing for method is needed\n private throttledOnGroupFinalize: DebouncedFunc<any> | undefined;\n\n constructor(config: ILogStoreConfig) {\n this.logs = [];\n this.eventEmitter = new EventEmitter();\n this.config = config;\n\n this.identityMap = new Map<string, number>();\n\n if (this.config.transformations) {\n const groupableConfig = this.config.transformations\n .find(value => value.type === TransformationEnum.RAPID_FIRE_GROUPING);\n\n if (groupableConfig) {\n this.groupableConfig = groupableConfig.configuration;\n\n this.throttledOnGroupFinalize = throttle(this.onGroupFinalize.bind(this),\n this.groupableConfig.interval, {trailing: true, leading: false});\n\n //todo Maybe, move to add method\n this.eventEmitter.on(\"add\", this.throttledOnGroupFinalize);\n }\n }\n }\n\n public add(log: T): void {\n if (this.groupableConfig) {\n const id = LogUtils.getLogIdByFields(log, this.groupableConfig.groupIdentityFields);\n\n if (!this.identityMap.has(id)) {\n this.logs.push(log);\n }\n\n this.onAddToGroup(log);\n } else {\n this.logs.push(log);\n }\n\n this.eventEmitter.emit(\"add\", {\n logCount: this.size()\n });\n }\n\n public clear(): void {\n this.logs.length = 0;\n this.eventEmitter.emit(\"clear\");\n }\n\n public getAll(): T[] {\n if (this.throttledOnGroupFinalize) {\n this.throttledOnGroupFinalize.flush();\n }\n\n return this.logs.slice();\n }\n\n public size(): number {\n return this.logs.length;\n }\n\n public destroy(): void {\n if (this.throttledOnGroupFinalize) {\n this.throttledOnGroupFinalize.cancel();\n }\n\n this.logs.splice(0);\n this.eventEmitter.removeAllListeners();\n }\n\n private onAddToGroup(log: T): void {\n const logId = LogUtils.getLogIdByFields(log, this.groupableConfig!.groupIdentityFields);\n\n if (this.identityMap.has(logId)) {\n const savedCounter = this.identityMap.get(logId);\n this.identityMap.set(logId, (savedCounter || 0) + 1);\n } else {\n this.identityMap.set(logId, 1);\n }\n }\n\n private onGroupFinalize(): void {\n // Apply grouping counters from Map to logs range from left index to the last\n const len = this.logs.length;\n\n if (len > 0) {\n for (let i = this.groupLeftIndex !== -1 ? this.groupLeftIndex : 0; i < len; i++) {\n const log = this.logs[i];\n const id = LogUtils.getLogIdByFields(log, this.groupableConfig!.groupIdentityFields);\n\n Object.assign(log, {[this.groupableConfig!.groupFieldName]: this.identityMap.has(id) ? this.identityMap.get(id) : 1});\n }\n }\n\n this.groupLeftIndex = len > 0 ? len - 1 : -1;\n this.identityMap.clear();\n }\n}\n","import IAddEventConfig from \"./interface/config/IAddEventConfig\";\nimport ILoggerConfig from \"./interface/config/ILoggerConfig\";\nimport IService from \"./interface/IService\";\nimport IStrategy from \"./interface/IStrategy\";\nimport IDefaultLogConfig from \"./interface/config/IDefaultLogConfig\";\nimport LogStore from \"./LogStore\";\n\n/**\n * Uses different strategies to submit logs to log server via Service facade.\n */\nexport default class AdvancedLogger<T extends IDefaultLogConfig> {\n private configuration: ILoggerConfig;\n private strategy: IStrategy;\n private service: IService;\n private logStore: LogStore<T>;\n\n constructor(configuration: ILoggerConfig) {\n this.configuration = configuration;\n this.logStore = new LogStore({transformations: this.configuration.transformations});\n this.strategy = this.configuration.strategy;\n this.service = this.configuration.service;\n\n // todo Where is it better to subscribe?\n this.logStore.eventEmitter.on(\"add\", this.onAdd.bind(this));\n this.logStore.eventEmitter.on(\"clear\", this.onClear.bind(this));\n this.logStore.eventEmitter.on(\"error\", this.onStoreError.bind(this));\n\n this.strategy.eventEmitter.on(\"send\", this.onSend.bind(this));\n this.strategy.eventEmitter.on(\"error\", this.onStrategyError.bind(this));\n }\n\n public log(log: T): void {\n this.logStore.add(log);\n }\n\n /**\n * Forces strategy to initiate logs sending\n */\n public sendAllLogs(): void {\n this.strategy.sendAll();\n }\n\n public destroy(): void {\n this.logStore.destroy();\n this.strategy.destroy();\n this.service.destroy();\n }\n\n private onStoreError(error: Error): void {\n console.error(error);\n }\n\n private onAdd(info: IAddEventConfig) {\n this.strategy.onAdd(info);\n }\n\n private onClear() {\n this.strategy.onClear();\n }\n\n private onStrategyError(error: Error): void {\n console.error(error);\n }\n\n private async onSend(): Promise<void> {\n if (this.logStore.size() > 0) {\n const logs = this.logStore.getAll();\n\n // We need to clear store as soon as we received request to send all logs\n this.logStore.clear();\n\n try {\n await this.service.sendAllLogs(logs);\n } catch (error) {\n console.error(error);\n }\n }\n }\n}\n","import stringify from \"fast-safe-stringify\";\n\nimport IDefaultLogConfig from \"../interface/config/IDefaultLogConfig\";\nimport IRequestConfig from \"../interface/config/IRequestConfig\";\nimport IServiceConfig from \"../interface/config/IServiceConfig\";\nimport IDestructable from \"../interface/IDestructable\";\nimport IService from \"../interface/IService\";\nimport http from \"../util/http\";\nimport LogUtils from \"../util/LogUtils\";\n\nexport default class BaseRemoteService implements IService, IDestructable {\n protected serviceConfig: IRequestConfig;\n protected defaultLogConfig: IDefaultLogConfig;\n\n constructor(config: IServiceConfig) {\n this.serviceConfig = {...config.serviceConfig};\n this.defaultLogConfig = {...config.defaultLogConfig};\n\n // optional serializer override\n if (config.serializer) {\n this.serializer = config.serializer as <T>(log: T) => string;\n }\n }\n\n public serializer<T>(log: T): string {\n return LogUtils.tryJSONStringify(log) || stringify(log);\n }\n\n public async sendAllLogs<T>(logs: T[]): Promise<Response> {\n const payload = await this.preparePayload(logs);\n const headers = this.getHeaders();\n\n try {\n return await http.request(this.serviceConfig, headers, payload);\n } catch (error) {\n if ((this.serviceConfig?.retryAttempts ?? 0) > 0) {\n return http.delayedRetry(\n this.serviceConfig?.retryAttempts ?? 0,\n this.serviceConfig?.retryInterval ?? 0,\n http.request.bind(this, this.serviceConfig, headers, payload)\n );\n } else {\n throw error;\n }\n }\n }\n\n public async preparePayload<T>(logs: T[]): Promise<string> {\n const resultList = logs.map(log => this.serializer({...this.defaultLogConfig, ...log}));\n return resultList.join(\"\\n\");\n }\n\n public destroy(): void {\n };\n\n /**\n * Returns object for headers config\n * @example\n * {\"Content-Type\": \"text/plain\"}\n */\n protected getHeaders(): { [propName: string]: string } {\n return {};\n }\n}\n","import IRequestConfig from \"../interface/config/IRequestConfig\";\n\nconst http = {\n async request(serviceConfig: IRequestConfig, headers: Record<string, string>, payload: string): Promise<Response> {\n const response = await fetch(serviceConfig.url, {\n method: serviceConfig.method,\n headers,\n body: payload\n });\n\n // fetch only rejects on network errors, so surface non-2xx responses\n // as errors to preserve the retry-on-failure contract.\n if (!response.ok) {\n throw new Error(`Request to ${serviceConfig.url} failed with status ${response.status}`);\n }\n\n return response;\n },\n\n delayedRetry(retries: number, delay: number, fn: () => Promise<Response>): Promise<Response> {\n return new Promise<Response>((resolve, reject) => {\n setTimeout(() => fn().then(resolve).catch(reject), delay);\n })\n .catch(error => retries > 1 ? http.delayedRetry(retries - 1, delay, fn) : Promise.reject(error));\n }\n};\n\nexport default http;\n","import IService from \"../interface/IService\";\n\n/**\n * Console reporting service for debugging purposes\n */\nexport default class ConsoleService implements IService {\n public async preparePayload<T>(logs: T[]): Promise<T[]> {\n return logs.map(log => this.serializer(log));\n }\n\n public async sendAllLogs<T>(logs: T[]): Promise<void> {\n console.log(logs);\n }\n\n public destroy(): void {\n //nothing to do here\n }\n\n public serializer<T>(log: T): T {\n return log;\n }\n}\n","import ILogMetaConfig from \"../interface/config/ILogMetaConfig\";\nimport BaseRemoteService from \"./BaseRemoteService\";\n\nconst DEFAULT_INDEX_FIELD = \"Index\";\nconst DEFAULT_INDEX_VALUE = \"index\";\n\nexport default class ElasticsearchService extends BaseRemoteService {\n public async preparePayload<T>(logs: T[]): Promise<string> {\n const resultList: string[] = [];\n logs.forEach(log => {\n const finalLog = {...this.defaultLogConfig, ...log};\n resultList.push(this.serializer(this.getLogMetaConfig(\n finalLog[this.serviceConfig.logMetaIndexField || DEFAULT_INDEX_FIELD])));\n resultList.push(this.serializer(finalLog));\n });\n\n return `${resultList.join(\"\\n\")}\\n`;\n }\n\n protected getHeaders(): {[propName: string]: string} {\n return {\n \"Content-Type\": \"application/json\"\n };\n }\n\n private getLogMetaConfig(index?: string): ILogMetaConfig {\n return {\n index: {\n _index: index || DEFAULT_INDEX_VALUE,\n _type: \"_doc\"\n }\n };\n }\n}\n","import BaseRemoteService from \"./BaseRemoteService\";\n\nexport default class LogglyService extends BaseRemoteService {\n protected getHeaders(): {[propName: string]: string} {\n return {\n \"Content-Type\": \"text/plain\"\n };\n }\n}\n","import ISumologicRequestConfig from \"../interface/config/ISumologicRequestConfig\";\nimport BaseRemoteService from \"./BaseRemoteService\";\n\nexport default class SumologicService extends BaseRemoteService {\n protected getHeaders(): {[propName: string]: string} {\n const serviceConfig = this.serviceConfig as ISumologicRequestConfig;\n return {\n \"Content-Type\": \"application/json\",\n //todo Optional?\n \"X-Sumo-Category\": serviceConfig.sourceCategory,\n //todo Optional?\n \"X-Sumo-Host\": serviceConfig.host,\n //todo Optional?\n \"X-Sumo-Name\": serviceConfig.sourceName\n };\n }\n}\n","import {EventEmitter} from \"../util/EventEmitter\";\n\nimport IAddEventConfig from \"../interface/config/IAddEventConfig\";\nimport IStrategy from \"./../interface/IStrategy\";\n\nexport default class InstantStrategy implements IStrategy {\n public eventEmitter: EventEmitter;\n\n constructor() {\n this.eventEmitter = new EventEmitter();\n }\n\n public onAdd(info?: IAddEventConfig): void {\n this.eventEmitter.emit(\"send\");\n //console.log(\"InstantStrategy#sent\");\n }\n\n public onClear(): void {\n // Ignore log list change\n //console.log(\"InstantStrategy#cleared\");\n }\n\n public sendAll(): void {\n // This strategy sends all logs separately\n }\n\n public destroy(): void {\n this.eventEmitter.removeAllListeners();\n }\n}\n","import {EventEmitter} from \"../util/EventEmitter\";\nimport IAddEventConfig from \"../interface/config/IAddEventConfig\";\nimport IStrategy from \"./../interface/IStrategy\";\n\nexport default class OnBundleSizeStrategy implements IStrategy {\n public eventEmitter: EventEmitter;\n\n /**\n * @type {number}\n */\n public MAX_BUNDLE_SIZE: number = 100;\n\n constructor(config: {maxBundle?: number}) {\n this.eventEmitter = new EventEmitter();\n\n if (config.maxBundle) {\n this.MAX_BUNDLE_SIZE = config.maxBundle;\n }\n }\n\n public onAdd(info: IAddEventConfig): void {\n if (info && info.logCount >= this.MAX_BUNDLE_SIZE) {\n this.eventEmitter.emit(\"send\");\n } else {\n //console.log(\"Not enough logs so far\");\n }\n }\n\n public onClear(): void {\n // Ignore log list change\n //console.log(\"OnBundleSizeStrategy#cleared\");\n }\n\n public sendAll(): void {\n this.eventEmitter.emit(\"send\");\n }\n\n public destroy(): void {\n this.eventEmitter.removeAllListeners();\n }\n}\n","import {EventEmitter} from \"../util/EventEmitter\";\nimport throttle from \"lodash-es/throttle\";\nimport IAddEventConfig from \"../interface/config/IAddEventConfig\";\nimport IStrategy from \"./../interface/IStrategy\";\n\nexport default class OnIntervalStrategy implements IStrategy {\n public eventEmitter: EventEmitter;\n public SEND_INTERVAL = 15000;\n\n private readonly intervalSend: ReturnType<typeof throttle>;\n\n constructor(config: {interval?: number}) {\n this.eventEmitter = new EventEmitter();\n\n if (config.interval) {\n this.SEND_INTERVAL = config.interval;\n }\n\n this.intervalSend = throttle(this.send.bind(this), this.SEND_INTERVAL, {leading: false, trailing: true});\n }\n\n public onAdd(info?: IAddEventConfig): void {\n if (info && info.logCount > 0) {\n this.intervalSend();\n }\n }\n\n public onClear(): void {\n // Ignore log list change\n //console.log(\"OnIntervalStrategy#cleared\");\n }\n\n public sendAll(): void {\n this.eventEmitter.emit(\"send\");\n }\n\n public destroy(): void {\n this.intervalSend.cancel();\n this.eventEmitter.removeAllListeners();\n }\n\n private send() {\n this.eventEmitter.emit(\"send\");\n }\n}\n","import {EventEmitter} from \"../util/EventEmitter\";\nimport IAddEventConfig from \"../interface/config/IAddEventConfig\";\nimport IStrategy from \"./../interface/IStrategy\";\n\nexport default class OnRequestStrategy implements IStrategy {\n public eventEmitter: EventEmitter;\n\n constructor() {\n this.eventEmitter = new EventEmitter();\n }\n\n public onAdd(info?: IAddEventConfig): void {\n // Ignore log list change\n }\n\n public onClear(): void {\n // Ignore log list change\n //console.log(\"OnRequestStrategy#cleared\");\n }\n\n public sendAll(): void {\n this.eventEmitter.emit(\"send\");\n }\n\n public destroy(): void {\n this.eventEmitter.removeAllListeners();\n }\n}\n","import {EventEmitter} from \"../util/EventEmitter\";\nimport throttle from \"lodash-es/throttle\";\nimport IAddEventConfig from \"../interface/config/IAddEventConfig\";\nimport IStrategy from \"./../interface/IStrategy\";\n\nexport default class HybridStrategy implements IStrategy {\n public eventEmitter: EventEmitter;\n public MAX_BUNDLE_SIZE: number = 100;\n public SEND_INTERVAL = 15000;\n\n private readonly intervalSend: ReturnType<typeof throttle>;\n\n constructor(config: {maxBundle?: number; interval?: number} = {}) {\n this.eventEmitter = new EventEmitter();\n\n if (config.maxBundle) {\n this.MAX_BUNDLE_SIZE = config.maxBundle;\n }\n\n if (config.interval) {\n this.SEND_INTERVAL = config.interval;\n }\n\n this.intervalSend = throttle(this.send.bind(this), this.SEND_INTERVAL, {leading: false, trailing: true});\n }\n\n public onAdd(info?: IAddEventConfig): void {\n if (!info) {\n return;\n }\n\n if (info.logCount >= this.MAX_BUNDLE_SIZE) {\n this.intervalSend.cancel();\n this.eventEmitter.emit(\"send\");\n } else if (info.logCount > 0) {\n this.intervalSend();\n }\n }\n\n public onClear(): void {\n // Ignore log list change\n }\n\n public sendAll(): void {\n this.eventEmitter.emit(\"send\");\n }\n\n public destroy(): void {\n this.intervalSend.cancel();\n this.eventEmitter.removeAllListeners();\n }\n\n private send() {\n this.eventEmitter.emit(\"send\");\n }\n}\n"],"mappings":"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","names":["exports","module","stringify","Symbol","objectProto","nativeObjectToString","symToStringTag","FUNC_ERROR_TEXT","TransformationEnum","stringify"]}