{"version":3,"file":"bundle.js","mappings":"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","sources":["webpack://pg-service-cart/webpack/runtime/create fake namespace object","webpack://pg-service-cart/webpack/runtime/load script","webpack://pg-service-cart/webpack/runtime/remotes loading","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/misc.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/debug-build.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/logger.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/constants.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/debug-build.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/is.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/syncpromise.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/eventProcessors.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/object.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/session.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/scope.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/hub.js","webpack://pg-service-cart/./node_modules/@sentry/core/esm/exports.js","webpack://pg-service-cart/./node_modules/@estee/elc-logging/src/ELCLogger.ts","webpack://pg-service-cart/./node_modules/@estee/elc-service/src/Service/ServiceManager/ViewsManager.ts","webpack://pg-service-cart/./node_modules/@estee/elc-service/node_modules/@estee/elc-telemetry/src/ErrorBoundary.tsx","webpack://pg-service-cart/./node_modules/@estee/elc-service/src/Service/ServiceManager/BaseComponent.tsx","webpack://pg-service-cart/./node_modules/@estee/elc-service/src/Service/ServiceManager/ServiceManager.ts","webpack://pg-service-cart/./node_modules/@estee/elc-universal-utils/src/UniversalUtils.ts","webpack://pg-service-cart/./node_modules/@estee/elc-universal-utils/src/Service/ServiceUtils.ts","webpack://pg-service-cart/./node_modules/@estee/elc-universal-utils/src/BrowserStorage.ts","webpack://pg-service-cart/./node_modules/@estee/elc-universal-utils/src/Service/ServiceVersion.ts","webpack://pg-service-cart/./src/utils/normalizeConfigs.ts","webpack://pg-service-cart/./src/SharedComponents/configs.ts","webpack://pg-service-cart/./src/exported/CartPage/index.ts","webpack://pg-service-cart/./src/exported/CartSidebar/index.ts","webpack://pg-service-cart/./node_modules/@estee/elc-service-view-names/src/index.ts","webpack://pg-service-cart/./src/internal/utils/isVulcan.ts","webpack://pg-service-cart/./node_modules/@estee/elc-service/src/Service/BaseService.ts","webpack://pg-service-cart/./src/service-setup/CartService.ts","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/node.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/env.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/time.js","webpack://pg-service-cart/./node_modules/@sentry/core/node_modules/@sentry/utils/esm/worldwide.js","webpack://pg-service-cart/./node_modules/debug/node_modules/ms/index.js","webpack://pg-service-cart/./node_modules/debug/src/browser.js","webpack://pg-service-cart/./node_modules/debug/src/common.js","webpack://pg-service-cart/./node_modules/odiff/odiff.js","webpack://pg-service-cart/./node_modules/process/browser.js","webpack://pg-service-cart/external script \"elc_service_translations@elc_service_translations\"","webpack://pg-service-cart/external script \"pg_service_offers@pg_service_offers\"","webpack://pg-service-cart/external var \"ElcServiceBus\"","webpack://pg-service-cart/external var [\"ElcRuntime\",\"HttpTransport\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"HypoContainer\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"React\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"ReactDom\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"mobx\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"mobxReact\"]","webpack://pg-service-cart/external var [\"ElcRuntime\",\"styled5\"]","webpack://pg-service-cart/webpack/bootstrap","webpack://pg-service-cart/webpack/runtime/compat get default export","webpack://pg-service-cart/webpack/runtime/define property getters","webpack://pg-service-cart/webpack/runtime/ensure chunk","webpack://pg-service-cart/webpack/runtime/get javascript chunk filename","webpack://pg-service-cart/webpack/runtime/global","webpack://pg-service-cart/webpack/runtime/harmony module decorator","webpack://pg-service-cart/webpack/runtime/hasOwnProperty shorthand","webpack://pg-service-cart/webpack/runtime/make namespace object","webpack://pg-service-cart/webpack/runtime/sharing","webpack://pg-service-cart/webpack/runtime/publicPath","webpack://pg-service-cart/webpack/runtime/jsonp chunk loading","webpack://pg-service-cart/./src/service-setup/vulcan/translations.ts","webpack://pg-service-cart/./node_modules/@estee/elc-service/src/Service/ServiceBusController.ts","webpack://pg-service-cart/./src/service-setup/ServiceBus.ts","webpack://pg-service-cart/./src/service-setup/vulcan/serviceBus.ts","webpack://pg-service-cart/./src/service-setup/vulcan.ts","webpack://pg-service-cart/webpack/container-entry"],"sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"pg-service-cart:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var chunkMapping = {\n\t\"webpack_container_remote_elc_service_translations_diContainer\": [\n\t\t\"webpack/container/remote/elc_service_translations/diContainer\"\n\t],\n\t\"src_api_CartAPI_CartHook_ts-src_internal_views_DiscountView_DiscountView_tsx-src_internal_vie-980bfe\": [\n\t\t\"webpack/container/remote/pg_service_offers/cart-sidebar-offer-code-module\"\n\t],\n\t\"src_exported_CartSidebar_CartSidebar_tsx\": [\n\t\t\"webpack/container/remote/pg_service_offers/cart-sidebar-cart-offers\",\n\t\t\"webpack/container/remote/pg_service_offers/cart-sidebar-offers-tab\"\n\t],\n\t\"src_exported_CartPage_CartPage_tsx\": [\n\t\t\"webpack/container/remote/pg_service_offers/samplesComponent\"\n\t]\n};\nvar idToExternalAndNameMapping = {\n\t\"webpack/container/remote/elc_service_translations/diContainer\": [\n\t\t\"default\",\n\t\t\"./diContainer\",\n\t\t\"webpack/container/reference/elc_service_translations\"\n\t],\n\t\"webpack/container/remote/pg_service_offers/cart-sidebar-offer-code-module\": [\n\t\t\"default\",\n\t\t\"./cart-sidebar-offer-code-module\",\n\t\t\"webpack/container/reference/pg_service_offers\"\n\t],\n\t\"webpack/container/remote/pg_service_offers/cart-sidebar-cart-offers\": [\n\t\t\"default\",\n\t\t\"./cart-sidebar-cart-offers\",\n\t\t\"webpack/container/reference/pg_service_offers\"\n\t],\n\t\"webpack/container/remote/pg_service_offers/cart-sidebar-offers-tab\": [\n\t\t\"default\",\n\t\t\"./cart-sidebar-offers-tab\",\n\t\t\"webpack/container/reference/pg_service_offers\"\n\t],\n\t\"webpack/container/remote/pg_service_offers/samplesComponent\": [\n\t\t\"default\",\n\t\t\"./samplesComponent\",\n\t\t\"webpack/container/reference/pg_service_offers\"\n\t]\n};\n__webpack_require__.f.remotes = (chunkId, promises) => {\n\tif(__webpack_require__.o(chunkMapping, chunkId)) {\n\t\tchunkMapping[chunkId].forEach((id) => {\n\t\t\tvar getScope = __webpack_require__.R;\n\t\t\tif(!getScope) getScope = [];\n\t\t\tvar data = idToExternalAndNameMapping[id];\n\t\t\tif(getScope.indexOf(data) >= 0) return;\n\t\t\tgetScope.push(data);\n\t\t\tif(data.p) return promises.push(data.p);\n\t\t\tvar onError = (error) => {\n\t\t\t\tif(!error) error = new Error(\"Container missing\");\n\t\t\t\tif(typeof error.message === \"string\")\n\t\t\t\t\terror.message += '\\nwhile loading \"' + data[1] + '\" from ' + data[2];\n\t\t\t\t__webpack_require__.m[id] = () => {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t\tdata.p = 0;\n\t\t\t};\n\t\t\tvar handleFunction = (fn, arg1, arg2, d, next, first) => {\n\t\t\t\ttry {\n\t\t\t\t\tvar promise = fn(arg1, arg2);\n\t\t\t\t\tif(promise && promise.then) {\n\t\t\t\t\t\tvar p = promise.then((result) => (next(result, d)), onError);\n\t\t\t\t\t\tif(first) promises.push(data.p = p); else return p;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn next(promise, d, first);\n\t\t\t\t\t}\n\t\t\t\t} catch(error) {\n\t\t\t\t\tonError(error);\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar onExternal = (external, _, first) => (external ? handleFunction(__webpack_require__.I, data[0], 0, external, onInitialized, first) : onError());\n\t\t\tvar onInitialized = (_, external, first) => (handleFunction(external.get, data[1], getScope, 0, onFactory, first));\n\t\t\tvar onFactory = (factory) => {\n\t\t\t\tdata.p = 1;\n\t\t\t\t__webpack_require__.m[id] = (module) => {\n\t\t\t\t\tmodule.exports = factory();\n\t\t\t\t}\n\t\t\t};\n\t\t\thandleFunction(__webpack_require__, data[2], 0, 0, onExternal, 1);\n\t\t});\n\t}\n}","import { addNonEnumerableProperty } from './object.js';\nimport { snipLine } from './string.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nfunction uuid4() {\n const gbl = GLOBAL_OBJ ;\n const crypto = gbl.crypto || gbl.msCrypto;\n\n let getRandomByte = () => Math.random() * 16;\n try {\n if (crypto && crypto.randomUUID) {\n return crypto.randomUUID().replace(/-/g, '');\n }\n if (crypto && crypto.getRandomValues) {\n getRandomByte = () => crypto.getRandomValues(new Uint8Array(1))[0];\n }\n } catch (_) {\n // some runtimes can crash invoking crypto\n // https://github.com/getsentry/sentry-javascript/issues/8935\n }\n\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n // Concatenating the following numbers as strings results in '10000000100040008000100000000000'\n return (([1e7] ) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, c =>\n // eslint-disable-next-line no-bitwise\n ((c ) ^ ((getRandomByte() & 15) >> ((c ) / 4))).toString(16),\n );\n}\n\nfunction getFirstException(event) {\n return event.exception && event.exception.values ? event.exception.values[0] : undefined;\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nfunction getEventDescription(event) {\n const { message, event_id: eventId } = event;\n if (message) {\n return message;\n }\n\n const firstException = getFirstException(event);\n if (firstException) {\n if (firstException.type && firstException.value) {\n return `${firstException.type}: ${firstException.value}`;\n }\n return firstException.type || firstException.value || eventId || '';\n }\n return eventId || '';\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nfunction addExceptionTypeValue(event, value, type) {\n const exception = (event.exception = event.exception || {});\n const values = (exception.values = exception.values || []);\n const firstException = (values[0] = values[0] || {});\n if (!firstException.value) {\n firstException.value = value || '';\n }\n if (!firstException.type) {\n firstException.type = type || 'Error';\n }\n}\n\n/**\n * Adds exception mechanism data to a given event. Uses defaults if the second parameter is not passed.\n *\n * @param event The event to modify.\n * @param newMechanism Mechanism data to add to the event.\n * @hidden\n */\nfunction addExceptionMechanism(event, newMechanism) {\n const firstException = getFirstException(event);\n if (!firstException) {\n return;\n }\n\n const defaultMechanism = { type: 'generic', handled: true };\n const currentMechanism = firstException.mechanism;\n firstException.mechanism = { ...defaultMechanism, ...currentMechanism, ...newMechanism };\n\n if (newMechanism && 'data' in newMechanism) {\n const mergedData = { ...(currentMechanism && currentMechanism.data), ...newMechanism.data };\n firstException.mechanism.data = mergedData;\n }\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP =\n /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nfunction parseSemver(input) {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nfunction addContextToFrame(lines, frame, linesOfContext = 5) {\n // When there is no line number in the frame, attaching context is nonsensical and will even break grouping\n if (frame.lineno === undefined) {\n return;\n }\n\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines - 1, frame.lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line) => snipLine(line, 0));\n}\n\n/**\n * Checks whether or not we've already captured the given exception (note: not an identical exception - the very object\n * in question), and marks it captured if not.\n *\n * This is useful because it's possible for an error to get captured by more than one mechanism. After we intercept and\n * record an error, we rethrow it (assuming we've intercepted it before it's reached the top-level global handlers), so\n * that we don't interfere with whatever effects the error might have had were the SDK not there. At that point, because\n * the error has been rethrown, it's possible for it to bubble up to some other code we've instrumented. If it's not\n * caught after that, it will bubble all the way up to the global handlers (which of course we also instrument). This\n * function helps us ensure that even if we encounter the same error more than once, we only record it the first time we\n * see it.\n *\n * Note: It will ignore primitives (always return `false` and not mark them as seen), as properties can't be set on\n * them. {@link: Object.objectify} can be used on exceptions to convert any that are primitives into their equivalent\n * object wrapper forms so that this check will always work. However, because we need to flag the exact object which\n * will get rethrown, and because that rethrowing happens outside of the event processing pipeline, the objectification\n * must be done before the exception captured.\n *\n * @param A thrown exception to check or flag as having been seen\n * @returns `true` if the exception has already been captured, `false` if not (with the side effect of marking it seen)\n */\nfunction checkOrSetAlreadyCaught(exception) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (exception && (exception ).__sentry_captured__) {\n return true;\n }\n\n try {\n // set it this way rather than by assignment so that it's not ennumerable and therefore isn't recorded by the\n // `ExtraErrorData` integration\n addNonEnumerableProperty(exception , '__sentry_captured__', true);\n } catch (err) {\n // `exception` is a primitive, so we can't mark it seen\n }\n\n return false;\n}\n\n/**\n * Checks whether the given input is already an array, and if it isn't, wraps it in one.\n *\n * @param maybeArray Input to turn into an array, if necessary\n * @returns The input, if already an array, or an array with the input as the only element, if not\n */\nfunction arrayify(maybeArray) {\n return Array.isArray(maybeArray) ? maybeArray : [maybeArray];\n}\n\nexport { addContextToFrame, addExceptionMechanism, addExceptionTypeValue, arrayify, checkOrSetAlreadyCaught, getEventDescription, parseSemver, uuid4 };\n//# sourceMappingURL=misc.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { DEBUG_BUILD } from './debug-build.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\nconst CONSOLE_LEVELS = [\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'log',\n 'assert',\n 'trace',\n] ;\n\n/** This may be mutated by the console instrumentation. */\nconst originalConsoleMethods\n\n = {};\n\n/** JSDoc */\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nfunction consoleSandbox(callback) {\n if (!('console' in GLOBAL_OBJ)) {\n return callback();\n }\n\n const console = GLOBAL_OBJ.console ;\n const wrappedFuncs = {};\n\n const wrappedLevels = Object.keys(originalConsoleMethods) ;\n\n // Restore all wrapped console methods\n wrappedLevels.forEach(level => {\n const originalConsoleMethod = originalConsoleMethods[level] ;\n wrappedFuncs[level] = console[level] ;\n console[level] = originalConsoleMethod;\n });\n\n try {\n return callback();\n } finally {\n // Revert restoration to wrapped state\n wrappedLevels.forEach(level => {\n console[level] = wrappedFuncs[level] ;\n });\n }\n}\n\nfunction makeLogger() {\n let enabled = false;\n const logger = {\n enable: () => {\n enabled = true;\n },\n disable: () => {\n enabled = false;\n },\n isEnabled: () => enabled,\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n logger[name] = (...args) => {\n if (enabled) {\n consoleSandbox(() => {\n GLOBAL_OBJ.console[name](`${PREFIX}[${name}]:`, ...args);\n });\n }\n };\n });\n } else {\n CONSOLE_LEVELS.forEach(name => {\n logger[name] = () => undefined;\n });\n }\n\n return logger ;\n}\n\nconst logger = makeLogger();\n\nexport { CONSOLE_LEVELS, consoleSandbox, logger, originalConsoleMethods };\n//# sourceMappingURL=logger.js.map\n","const DEFAULT_ENVIRONMENT = 'production';\n\nexport { DEFAULT_ENVIRONMENT };\n//# sourceMappingURL=constants.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","// eslint-disable-next-line @typescript-eslint/unbound-method\nconst objectToString = Object.prototype.toString;\n\n/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isError(wat) {\n switch (objectToString.call(wat)) {\n case '[object Error]':\n case '[object Exception]':\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n/**\n * Checks whether given value is an instance of the given built-in class.\n *\n * @param wat The value to be checked\n * @param className\n * @returns A boolean representing the result.\n */\nfunction isBuiltin(wat, className) {\n return objectToString.call(wat) === `[object ${className}]`;\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isErrorEvent(wat) {\n return isBuiltin(wat, 'ErrorEvent');\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMError(wat) {\n return isBuiltin(wat, 'DOMError');\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isDOMException(wat) {\n return isBuiltin(wat, 'DOMException');\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isString(wat) {\n return isBuiltin(wat, 'String');\n}\n\n/**\n * Checks whether given value is a primitive (undefined, null, number, boolean, string, bigint, symbol)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPrimitive(wat) {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isPlainObject(wat) {\n return isBuiltin(wat, 'Object');\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isEvent(wat) {\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isElement(wat) {\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isRegExp(wat) {\n return isBuiltin(wat, 'RegExp');\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nfunction isThenable(wat) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isSyntheticEvent(wat) {\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n\n/**\n * Checks whether given value is NaN\n * {@link isNaN}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isNaN(wat) {\n return typeof wat === 'number' && wat !== wat;\n}\n\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nfunction isInstanceOf(wat, base) {\n try {\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n\n/**\n * Checks whether given value's type is a Vue ViewModel.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nfunction isVueViewModel(wat) {\n // Not using Object.prototype.toString because in Vue 3 it would read the instance's Symbol(Symbol.toStringTag) property.\n return !!(typeof wat === 'object' && wat !== null && ((wat ).__isVue || (wat )._isVue));\n}\n\nexport { isDOMError, isDOMException, isElement, isError, isErrorEvent, isEvent, isInstanceOf, isNaN, isPlainObject, isPrimitive, isRegExp, isString, isSyntheticEvent, isThenable, isVueViewModel };\n//# sourceMappingURL=is.js.map\n","import { isThenable } from './is.js';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\n/** SyncPromise internal states */\nvar States; (function (States) {\n /** Pending */\n const PENDING = 0; States[States[\"PENDING\"] = PENDING] = \"PENDING\";\n /** Resolved / OK */\n const RESOLVED = 1; States[States[\"RESOLVED\"] = RESOLVED] = \"RESOLVED\";\n /** Rejected / Error */\n const REJECTED = 2; States[States[\"REJECTED\"] = REJECTED] = \"REJECTED\";\n})(States || (States = {}));\n\n// Overloads so we can call resolvedSyncPromise without arguments and generic argument\n\n/**\n * Creates a resolved sync promise.\n *\n * @param value the value to resolve the promise with\n * @returns the resolved sync promise\n */\nfunction resolvedSyncPromise(value) {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n}\n\n/**\n * Creates a rejected sync promise.\n *\n * @param value the value to reject the promise with\n * @returns the rejected sync promise\n */\nfunction rejectedSyncPromise(reason) {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise {\n\n constructor(\n executor,\n ) {SyncPromise.prototype.__init.call(this);SyncPromise.prototype.__init2.call(this);SyncPromise.prototype.__init3.call(this);SyncPromise.prototype.__init4.call(this);\n this._state = States.PENDING;\n this._handlers = [];\n\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n then(\n onfulfilled,\n onrejected,\n ) {\n return new SyncPromise((resolve, reject) => {\n this._handlers.push([\n false,\n result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result );\n } else {\n try {\n resolve(onfulfilled(result));\n } catch (e) {\n reject(e);\n }\n }\n },\n reason => {\n if (!onrejected) {\n reject(reason);\n } else {\n try {\n resolve(onrejected(reason));\n } catch (e) {\n reject(e);\n }\n }\n },\n ]);\n this._executeHandlers();\n });\n }\n\n /** JSDoc */\n catch(\n onrejected,\n ) {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n finally(onfinally) {\n return new SyncPromise((resolve, reject) => {\n let val;\n let isRejected;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve(val );\n });\n });\n }\n\n /** JSDoc */\n __init() {this._resolve = (value) => {\n this._setResult(States.RESOLVED, value);\n };}\n\n /** JSDoc */\n __init2() {this._reject = (reason) => {\n this._setResult(States.REJECTED, reason);\n };}\n\n /** JSDoc */\n __init3() {this._setResult = (state, value) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n void (value ).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };}\n\n /** JSDoc */\n __init4() {this._executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler[0]) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n handler[1](this._value );\n }\n\n if (this._state === States.REJECTED) {\n handler[2](this._value);\n }\n\n handler[0] = true;\n });\n };}\n}\n\nexport { SyncPromise, rejectedSyncPromise, resolvedSyncPromise };\n//# sourceMappingURL=syncpromise.js.map\n","import { getGlobalSingleton, SyncPromise, logger, isThenable } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\n\n/**\n * Returns the global event processors.\n */\nfunction getGlobalEventProcessors() {\n return getGlobalSingleton('globalEventProcessors', () => []);\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nfunction addGlobalEventProcessor(callback) {\n getGlobalEventProcessors().push(callback);\n}\n\n/**\n * Process an array of event processors, returning the processed event (or `null` if the event was dropped).\n */\nfunction notifyEventProcessors(\n processors,\n event,\n hint,\n index = 0,\n) {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) ;\n\n DEBUG_BUILD && processor.id && result === null && logger.log(`Event processor \"${processor.id}\" dropped event`);\n\n if (isThenable(result)) {\n void result\n .then(final => notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n void notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n}\n\nexport { addGlobalEventProcessor, getGlobalEventProcessors, notifyEventProcessors };\n//# sourceMappingURL=eventProcessors.js.map\n","import { htmlTreeAsString } from './browser.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { isError, isEvent, isInstanceOf, isElement, isPlainObject, isPrimitive } from './is.js';\nimport { logger } from './logger.js';\nimport { truncate } from './string.js';\n\n/**\n * Replace a method in an object with a wrapped version of itself.\n *\n * @param source An object that contains a method to be wrapped.\n * @param name The name of the method to be wrapped.\n * @param replacementFactory A higher-order function that takes the original version of the given method and returns a\n * wrapped version. Note: The function returned by `replacementFactory` needs to be a non-arrow function, in order to\n * preserve the correct value of `this`, and the original method must be called using `origMethod.call(this, )` or `origMethod.apply(this, [])` (rather than being called directly), again to preserve `this`.\n * @returns void\n */\nfunction fill(source, name, replacementFactory) {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] ;\n const wrapped = replacementFactory(original) ;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n if (typeof wrapped === 'function') {\n markFunctionWrapped(wrapped, original);\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Defines a non-enumerable property on the given object.\n *\n * @param obj The object on which to set the property\n * @param name The name of the property to be set\n * @param value The value to which to set the property\n */\nfunction addNonEnumerableProperty(obj, name, value) {\n try {\n Object.defineProperty(obj, name, {\n // enumerable: false, // the default, so we can save on bundle size by not explicitly setting it\n value: value,\n writable: true,\n configurable: true,\n });\n } catch (o_O) {\n DEBUG_BUILD && logger.log(`Failed to add non-enumerable property \"${name}\" to object`, obj);\n }\n}\n\n/**\n * Remembers the original function on the wrapped function and\n * patches up the prototype.\n *\n * @param wrapped the wrapper function\n * @param original the original function that gets wrapped\n */\nfunction markFunctionWrapped(wrapped, original) {\n try {\n const proto = original.prototype || {};\n wrapped.prototype = original.prototype = proto;\n addNonEnumerableProperty(wrapped, '__sentry_original__', original);\n } catch (o_O) {} // eslint-disable-line no-empty\n}\n\n/**\n * This extracts the original function if available. See\n * `markFunctionWrapped` for more information.\n *\n * @param func the function to unwrap\n * @returns the unwrapped version of the function if available.\n */\nfunction getOriginalFunction(func) {\n return func.__sentry_original__;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nfunction urlEncode(object) {\n return Object.keys(object)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`)\n .join('&');\n}\n\n/**\n * Transforms any `Error` or `Event` into a plain object with all of their enumerable properties, and some of their\n * non-enumerable properties attached.\n *\n * @param value Initial source that we have to transform in order for it to be usable by the serializer\n * @returns An Event or Error turned into an object - or the value argurment itself, when value is neither an Event nor\n * an Error.\n */\nfunction convertToPlainObject(\n value,\n)\n\n {\n if (isError(value)) {\n return {\n message: value.message,\n name: value.name,\n stack: value.stack,\n ...getOwnProperties(value),\n };\n } else if (isEvent(value)) {\n const newObj\n\n = {\n type: value.type,\n target: serializeEventTarget(value.target),\n currentTarget: serializeEventTarget(value.currentTarget),\n ...getOwnProperties(value),\n };\n\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n newObj.detail = value.detail;\n }\n\n return newObj;\n } else {\n return value;\n }\n}\n\n/** Creates a string representation of the target of an `Event` object */\nfunction serializeEventTarget(target) {\n try {\n return isElement(target) ? htmlTreeAsString(target) : Object.prototype.toString.call(target);\n } catch (_oO) {\n return '';\n }\n}\n\n/** Filters out all but an object's own properties */\nfunction getOwnProperties(obj) {\n if (typeof obj === 'object' && obj !== null) {\n const extractedProps = {};\n for (const property in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, property)) {\n extractedProps[property] = (obj )[property];\n }\n }\n return extractedProps;\n } else {\n return {};\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nfunction extractExceptionKeysForMessage(exception, maxLength = 40) {\n const keys = Object.keys(convertToPlainObject(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return a new object having removed all fields whose value was `undefined`.\n * Works recursively on objects and arrays.\n *\n * Attention: This function keeps circular references in the returned object.\n */\nfunction dropUndefinedKeys(inputValue) {\n // This map keeps track of what already visited nodes map to.\n // Our Set - based memoBuilder doesn't work here because we want to the output object to have the same circular\n // references as the input object.\n const memoizationMap = new Map();\n\n // This function just proxies `_dropUndefinedKeys` to keep the `memoBuilder` out of this function's API\n return _dropUndefinedKeys(inputValue, memoizationMap);\n}\n\nfunction _dropUndefinedKeys(inputValue, memoizationMap) {\n if (isPlainObject(inputValue)) {\n // If this node has already been visited due to a circular reference, return the object it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = {};\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n for (const key of Object.keys(inputValue)) {\n if (typeof inputValue[key] !== 'undefined') {\n returnValue[key] = _dropUndefinedKeys(inputValue[key], memoizationMap);\n }\n }\n\n return returnValue ;\n }\n\n if (Array.isArray(inputValue)) {\n // If this node has already been visited due to a circular reference, return the array it was mapped to in the new object\n const memoVal = memoizationMap.get(inputValue);\n if (memoVal !== undefined) {\n return memoVal ;\n }\n\n const returnValue = [];\n // Store the mapping of this value in case we visit it again, in case of circular data\n memoizationMap.set(inputValue, returnValue);\n\n inputValue.forEach((item) => {\n returnValue.push(_dropUndefinedKeys(item, memoizationMap));\n });\n\n return returnValue ;\n }\n\n return inputValue;\n}\n\n/**\n * Ensure that something is an object.\n *\n * Turns `undefined` and `null` into `String`s and all other primitives into instances of their respective wrapper\n * classes (String, Boolean, Number, etc.). Acts as the identity function on non-primitives.\n *\n * @param wat The subject of the objectification\n * @returns A version of `wat` which can safely be used with `Object` class methods\n */\nfunction objectify(wat) {\n let objectified;\n switch (true) {\n case wat === undefined || wat === null:\n objectified = new String(wat);\n break;\n\n // Though symbols and bigints do have wrapper classes (`Symbol` and `BigInt`, respectively), for whatever reason\n // those classes don't have constructors which can be used with the `new` keyword. We therefore need to cast each as\n // an object in order to wrap it.\n case typeof wat === 'symbol' || typeof wat === 'bigint':\n objectified = Object(wat);\n break;\n\n // this will catch the remaining primitives: `String`, `Number`, and `Boolean`\n case isPrimitive(wat):\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n objectified = new (wat ).constructor(wat);\n break;\n\n // by process of elimination, at this point we know that `wat` must already be an object\n default:\n objectified = wat;\n break;\n }\n return objectified;\n}\n\nexport { addNonEnumerableProperty, convertToPlainObject, dropUndefinedKeys, extractExceptionKeysForMessage, fill, getOriginalFunction, markFunctionWrapped, objectify, urlEncode };\n//# sourceMappingURL=object.js.map\n","import { timestampInSeconds, uuid4, dropUndefinedKeys } from '@sentry/utils';\n\n/**\n * Creates a new `Session` object by setting certain default parameters. If optional @param context\n * is passed, the passed properties are applied to the session object.\n *\n * @param context (optional) additional properties to be applied to the returned session object\n *\n * @returns a new `Session` object\n */\nfunction makeSession(context) {\n // Both timestamp and started are in seconds since the UNIX epoch.\n const startingTime = timestampInSeconds();\n\n const session = {\n sid: uuid4(),\n init: true,\n timestamp: startingTime,\n started: startingTime,\n duration: 0,\n status: 'ok',\n errors: 0,\n ignoreDuration: false,\n toJSON: () => sessionToJSON(session),\n };\n\n if (context) {\n updateSession(session, context);\n }\n\n return session;\n}\n\n/**\n * Updates a session object with the properties passed in the context.\n *\n * Note that this function mutates the passed object and returns void.\n * (Had to do this instead of returning a new and updated session because closing and sending a session\n * makes an update to the session after it was passed to the sending logic.\n * @see BaseClient.captureSession )\n *\n * @param session the `Session` to update\n * @param context the `SessionContext` holding the properties that should be updated in @param session\n */\n// eslint-disable-next-line complexity\nfunction updateSession(session, context = {}) {\n if (context.user) {\n if (!session.ipAddress && context.user.ip_address) {\n session.ipAddress = context.user.ip_address;\n }\n\n if (!session.did && !context.did) {\n session.did = context.user.id || context.user.email || context.user.username;\n }\n }\n\n session.timestamp = context.timestamp || timestampInSeconds();\n\n if (context.abnormal_mechanism) {\n session.abnormal_mechanism = context.abnormal_mechanism;\n }\n\n if (context.ignoreDuration) {\n session.ignoreDuration = context.ignoreDuration;\n }\n if (context.sid) {\n // Good enough uuid validation. — Kamil\n session.sid = context.sid.length === 32 ? context.sid : uuid4();\n }\n if (context.init !== undefined) {\n session.init = context.init;\n }\n if (!session.did && context.did) {\n session.did = `${context.did}`;\n }\n if (typeof context.started === 'number') {\n session.started = context.started;\n }\n if (session.ignoreDuration) {\n session.duration = undefined;\n } else if (typeof context.duration === 'number') {\n session.duration = context.duration;\n } else {\n const duration = session.timestamp - session.started;\n session.duration = duration >= 0 ? duration : 0;\n }\n if (context.release) {\n session.release = context.release;\n }\n if (context.environment) {\n session.environment = context.environment;\n }\n if (!session.ipAddress && context.ipAddress) {\n session.ipAddress = context.ipAddress;\n }\n if (!session.userAgent && context.userAgent) {\n session.userAgent = context.userAgent;\n }\n if (typeof context.errors === 'number') {\n session.errors = context.errors;\n }\n if (context.status) {\n session.status = context.status;\n }\n}\n\n/**\n * Closes a session by setting its status and updating the session object with it.\n * Internally calls `updateSession` to update the passed session object.\n *\n * Note that this function mutates the passed session (@see updateSession for explanation).\n *\n * @param session the `Session` object to be closed\n * @param status the `SessionStatus` with which the session was closed. If you don't pass a status,\n * this function will keep the previously set status, unless it was `'ok'` in which case\n * it is changed to `'exited'`.\n */\nfunction closeSession(session, status) {\n let context = {};\n if (status) {\n context = { status };\n } else if (session.status === 'ok') {\n context = { status: 'exited' };\n }\n\n updateSession(session, context);\n}\n\n/**\n * Serializes a passed session object to a JSON object with a slightly different structure.\n * This is necessary because the Sentry backend requires a slightly different schema of a session\n * than the one the JS SDKs use internally.\n *\n * @param session the session to be converted\n *\n * @returns a JSON object of the passed session\n */\nfunction sessionToJSON(session) {\n return dropUndefinedKeys({\n sid: `${session.sid}`,\n init: session.init,\n // Make sure that sec is converted to ms for date constructor\n started: new Date(session.started * 1000).toISOString(),\n timestamp: new Date(session.timestamp * 1000).toISOString(),\n status: session.status,\n errors: session.errors,\n did: typeof session.did === 'number' || typeof session.did === 'string' ? `${session.did}` : undefined,\n duration: session.duration,\n abnormal_mechanism: session.abnormal_mechanism,\n attrs: {\n release: session.release,\n environment: session.environment,\n ip_address: session.ipAddress,\n user_agent: session.userAgent,\n },\n });\n}\n\nexport { closeSession, makeSession, updateSession };\n//# sourceMappingURL=session.js.map\n","import { isPlainObject, dateTimestampInSeconds, arrayify, uuid4 } from '@sentry/utils';\nimport { notifyEventProcessors, getGlobalEventProcessors } from './eventProcessors.js';\nimport { updateSession } from './session.js';\n\n/**\n * Default value for maximum number of breadcrumbs added to an event.\n */\nconst DEFAULT_MAX_BREADCRUMBS = 100;\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nclass Scope {\n /** Flag if notifying is happening. */\n\n /** Callback for client to receive scope changes. */\n\n /** Callback list that will be called after {@link applyToEvent}. */\n\n /** Array of breadcrumbs. */\n\n /** User */\n\n /** Tags */\n\n /** Extra */\n\n /** Contexts */\n\n /** Attachments */\n\n /** Propagation Context for distributed tracing */\n\n /**\n * A place to stash data which is needed at some point in the SDK's event processing pipeline but which shouldn't get\n * sent to Sentry\n */\n\n /** Fingerprint */\n\n /** Severity */\n // eslint-disable-next-line deprecation/deprecation\n\n /** Transaction Name */\n\n /** Span */\n\n /** Session */\n\n /** Request Mode Session Status */\n\n // NOTE: Any field which gets added here should get added not only to the constructor but also to the `clone` method.\n\n constructor() {\n this._notifyingListeners = false;\n this._scopeListeners = [];\n this._eventProcessors = [];\n this._breadcrumbs = [];\n this._attachments = [];\n this._user = {};\n this._tags = {};\n this._extra = {};\n this._contexts = {};\n this._sdkProcessingMetadata = {};\n this._propagationContext = generatePropagationContext();\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n static clone(scope) {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._contexts = { ...scope._contexts };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._session = scope._session;\n newScope._transactionName = scope._transactionName;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n newScope._requestSession = scope._requestSession;\n newScope._attachments = [...scope._attachments];\n newScope._sdkProcessingMetadata = { ...scope._sdkProcessingMetadata };\n newScope._propagationContext = { ...scope._propagationContext };\n }\n return newScope;\n }\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n addScopeListener(callback) {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n addEventProcessor(callback) {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this._user = user || {};\n if (this._session) {\n updateSession(this._session, { user });\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getUser() {\n return this._user;\n }\n\n /**\n * @inheritDoc\n */\n getRequestSession() {\n return this._requestSession;\n }\n\n /**\n * @inheritDoc\n */\n setRequestSession(requestSession) {\n this._requestSession = requestSession;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setFingerprint(fingerprint) {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setLevel(\n // eslint-disable-next-line deprecation/deprecation\n level,\n ) {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setTransactionName(name) {\n this._transactionName = name;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setSpan(span) {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSpan() {\n return this._span;\n }\n\n /**\n * @inheritDoc\n */\n getTransaction() {\n // Often, this span (if it exists at all) will be a transaction, but it's not guaranteed to be. Regardless, it will\n // have a pointer to the currently-active transaction.\n const span = this.getSpan();\n return span && span.transaction;\n }\n\n /**\n * @inheritDoc\n */\n setSession(session) {\n if (!session) {\n delete this._session;\n } else {\n this._session = session;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getSession() {\n return this._session;\n }\n\n /**\n * @inheritDoc\n */\n update(captureContext) {\n if (!captureContext) {\n return this;\n }\n\n if (typeof captureContext === 'function') {\n const updatedScope = (captureContext )(this);\n return updatedScope instanceof Scope ? updatedScope : this;\n }\n\n if (captureContext instanceof Scope) {\n this._tags = { ...this._tags, ...captureContext._tags };\n this._extra = { ...this._extra, ...captureContext._extra };\n this._contexts = { ...this._contexts, ...captureContext._contexts };\n if (captureContext._user && Object.keys(captureContext._user).length) {\n this._user = captureContext._user;\n }\n if (captureContext._level) {\n this._level = captureContext._level;\n }\n if (captureContext._fingerprint) {\n this._fingerprint = captureContext._fingerprint;\n }\n if (captureContext._requestSession) {\n this._requestSession = captureContext._requestSession;\n }\n if (captureContext._propagationContext) {\n this._propagationContext = captureContext._propagationContext;\n }\n } else if (isPlainObject(captureContext)) {\n // eslint-disable-next-line no-param-reassign\n captureContext = captureContext ;\n this._tags = { ...this._tags, ...captureContext.tags };\n this._extra = { ...this._extra, ...captureContext.extra };\n this._contexts = { ...this._contexts, ...captureContext.contexts };\n if (captureContext.user) {\n this._user = captureContext.user;\n }\n if (captureContext.level) {\n this._level = captureContext.level;\n }\n if (captureContext.fingerprint) {\n this._fingerprint = captureContext.fingerprint;\n }\n if (captureContext.requestSession) {\n this._requestSession = captureContext.requestSession;\n }\n if (captureContext.propagationContext) {\n this._propagationContext = captureContext.propagationContext;\n }\n }\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n clear() {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._contexts = {};\n this._level = undefined;\n this._transactionName = undefined;\n this._fingerprint = undefined;\n this._requestSession = undefined;\n this._span = undefined;\n this._session = undefined;\n this._notifyScopeListeners();\n this._attachments = [];\n this._propagationContext = generatePropagationContext();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, maxBreadcrumbs) {\n const maxCrumbs = typeof maxBreadcrumbs === 'number' ? maxBreadcrumbs : DEFAULT_MAX_BREADCRUMBS;\n\n // No data has been changed, so don't notify scope listeners\n if (maxCrumbs <= 0) {\n return this;\n }\n\n const mergedBreadcrumb = {\n timestamp: dateTimestampInSeconds(),\n ...breadcrumb,\n };\n\n const breadcrumbs = this._breadcrumbs;\n breadcrumbs.push(mergedBreadcrumb);\n this._breadcrumbs = breadcrumbs.length > maxCrumbs ? breadcrumbs.slice(-maxCrumbs) : breadcrumbs;\n\n this._notifyScopeListeners();\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getLastBreadcrumb() {\n return this._breadcrumbs[this._breadcrumbs.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n clearBreadcrumbs() {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n addAttachment(attachment) {\n this._attachments.push(attachment);\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getAttachments() {\n return this._attachments;\n }\n\n /**\n * @inheritDoc\n */\n clearAttachments() {\n this._attachments = [];\n return this;\n }\n\n /**\n * Applies data from the scope to the event and runs all event processors on it.\n *\n * @param event Event\n * @param hint Object containing additional information about the original exception, for use by the event processors.\n * @hidden\n */\n applyToEvent(\n event,\n hint = {},\n additionalEventProcessors,\n ) {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._contexts && Object.keys(this._contexts).length) {\n event.contexts = { ...this._contexts, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transactionName) {\n event.transaction = this._transactionName;\n }\n\n // We want to set the trace context for normal events only if there isn't already\n // a trace context on the event. There is a product feature in place where we link\n // errors with transaction and it relies on that.\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n const transaction = this._span.transaction;\n if (transaction) {\n event.sdkProcessingMetadata = {\n dynamicSamplingContext: transaction.getDynamicSamplingContext(),\n ...event.sdkProcessingMetadata,\n };\n const transactionName = transaction.name;\n if (transactionName) {\n event.tags = { transaction: transactionName, ...event.tags };\n }\n }\n }\n\n this._applyFingerprint(event);\n\n const scopeBreadcrumbs = this._getBreadcrumbs();\n const breadcrumbs = [...(event.breadcrumbs || []), ...scopeBreadcrumbs];\n event.breadcrumbs = breadcrumbs.length > 0 ? breadcrumbs : undefined;\n\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n ...this._sdkProcessingMetadata,\n propagationContext: this._propagationContext,\n };\n\n // TODO (v8): Update this order to be: Global > Client > Scope\n return notifyEventProcessors(\n [...(additionalEventProcessors || []), ...getGlobalEventProcessors(), ...this._eventProcessors],\n event,\n hint,\n );\n }\n\n /**\n * Add data which will be accessible during event processing but won't get sent to Sentry\n */\n setSDKProcessingMetadata(newData) {\n this._sdkProcessingMetadata = { ...this._sdkProcessingMetadata, ...newData };\n\n return this;\n }\n\n /**\n * @inheritDoc\n */\n setPropagationContext(context) {\n this._propagationContext = context;\n return this;\n }\n\n /**\n * @inheritDoc\n */\n getPropagationContext() {\n return this._propagationContext;\n }\n\n /**\n * Get the breadcrumbs for this scope.\n */\n _getBreadcrumbs() {\n return this._breadcrumbs;\n }\n\n /**\n * This will be called on every set call.\n */\n _notifyScopeListeners() {\n // We need this check for this._notifyingListeners to be able to work on scope during updates\n // If this check is not here we'll produce endless recursion when something is done with the scope\n // during the callback.\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n }\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n _applyFingerprint(event) {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint ? arrayify(event.fingerprint) : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n}\n\nfunction generatePropagationContext() {\n return {\n traceId: uuid4(),\n spanId: uuid4().substring(16),\n };\n}\n\nexport { Scope };\n//# sourceMappingURL=scope.js.map\n","import { uuid4, dateTimestampInSeconds, consoleSandbox, logger, GLOBAL_OBJ, getGlobalSingleton } from '@sentry/utils';\nimport { DEFAULT_ENVIRONMENT } from './constants.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { Scope } from './scope.js';\nimport { closeSession, makeSession, updateSession } from './session.js';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be increased when the global interface\n * changes and new methods are introduced.\n *\n * @hidden\n */\nconst API_VERSION = 4;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nclass Hub {\n /** Is a {@link Layer}[] containing the client and scope */\n\n /** Contains the last event id of a captured event. */\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n constructor(client, scope = new Scope(), _version = API_VERSION) {this._version = _version;\n this._stack = [{ scope }];\n if (client) {\n this.bindClient(client);\n }\n }\n\n /**\n * @inheritDoc\n */\n isOlderThan(version) {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n bindClient(client) {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n pushScope() {\n // We want to clone the content of prev scope\n const scope = Scope.clone(this.getScope());\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n popScope() {\n if (this.getStack().length <= 1) return false;\n return !!this.getStack().pop();\n }\n\n /**\n * @inheritDoc\n */\n withScope(callback) {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n getClient() {\n return this.getStackTop().client ;\n }\n\n /** Returns the scope of the top stack. */\n getScope() {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n getStack() {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n getStackTop() {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error('Sentry syntheticException');\n this._withClient((client, scope) => {\n client.captureException(\n exception,\n {\n originalException: exception,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level,\n hint,\n ) {\n const eventId = (this._lastEventId = hint && hint.event_id ? hint.event_id : uuid4());\n const syntheticException = new Error(message);\n this._withClient((client, scope) => {\n client.captureMessage(\n message,\n level,\n {\n originalException: message,\n syntheticException,\n ...hint,\n event_id: eventId,\n },\n scope,\n );\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint) {\n const eventId = hint && hint.event_id ? hint.event_id : uuid4();\n if (!event.type) {\n this._lastEventId = eventId;\n }\n\n this._withClient((client, scope) => {\n client.captureEvent(event, { ...hint, event_id: eventId }, scope);\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n lastEventId() {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n addBreadcrumb(breadcrumb, hint) {\n const { scope, client } = this.getStackTop();\n\n if (!client) return;\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (client.getOptions && client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) return;\n\n const timestamp = dateTimestampInSeconds();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) )\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) return;\n\n if (client.emit) {\n client.emit('beforeAddBreadcrumb', finalBreadcrumb, hint);\n }\n\n scope.addBreadcrumb(finalBreadcrumb, maxBreadcrumbs);\n }\n\n /**\n * @inheritDoc\n */\n setUser(user) {\n this.getScope().setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n setTags(tags) {\n this.getScope().setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n setExtras(extras) {\n this.getScope().setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n setTag(key, value) {\n this.getScope().setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n setExtra(key, extra) {\n this.getScope().setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setContext(name, context) {\n this.getScope().setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n configureScope(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n run(callback) {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n getIntegration(integration) {\n const client = this.getClient();\n if (!client) return null;\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n DEBUG_BUILD && logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n startTransaction(context, customSamplingContext) {\n const result = this._callExtensionMethod('startTransaction', context, customSamplingContext);\n\n if (DEBUG_BUILD && !result) {\n const client = this.getClient();\n if (!client) {\n logger.warn(\n \"Tracing extension 'startTransaction' is missing. You should 'init' the SDK before calling 'startTransaction'\",\n );\n } else {\n logger.warn(`Tracing extension 'startTransaction' has not been added. Call 'addTracingExtensions' before calling 'init':\nSentry.addTracingExtensions();\nSentry.init({...});\n`);\n }\n }\n\n return result;\n }\n\n /**\n * @inheritDoc\n */\n traceHeaders() {\n return this._callExtensionMethod('traceHeaders');\n }\n\n /**\n * @inheritDoc\n */\n captureSession(endSession = false) {\n // both send the update and pull the session from the scope\n if (endSession) {\n return this.endSession();\n }\n\n // only send the update\n this._sendSessionUpdate();\n }\n\n /**\n * @inheritDoc\n */\n endSession() {\n const layer = this.getStackTop();\n const scope = layer.scope;\n const session = scope.getSession();\n if (session) {\n closeSession(session);\n }\n this._sendSessionUpdate();\n\n // the session is over; take it off of the scope\n scope.setSession();\n }\n\n /**\n * @inheritDoc\n */\n startSession(context) {\n const { scope, client } = this.getStackTop();\n const { release, environment = DEFAULT_ENVIRONMENT } = (client && client.getOptions()) || {};\n\n // Will fetch userAgent if called from browser sdk\n const { userAgent } = GLOBAL_OBJ.navigator || {};\n\n const session = makeSession({\n release,\n environment,\n user: scope.getUser(),\n ...(userAgent && { userAgent }),\n ...context,\n });\n\n // End existing session if there's one\n const currentSession = scope.getSession && scope.getSession();\n if (currentSession && currentSession.status === 'ok') {\n updateSession(currentSession, { status: 'exited' });\n }\n this.endSession();\n\n // Afterwards we set the new session on the scope\n scope.setSession(session);\n\n return session;\n }\n\n /**\n * Returns if default PII should be sent to Sentry and propagated in ourgoing requests\n * when Tracing is used.\n */\n shouldSendDefaultPii() {\n const client = this.getClient();\n const options = client && client.getOptions();\n return Boolean(options && options.sendDefaultPii);\n }\n\n /**\n * Sends the current Session on the scope\n */\n _sendSessionUpdate() {\n const { scope, client } = this.getStackTop();\n\n const session = scope.getSession();\n if (session && client && client.captureSession) {\n client.captureSession(session);\n }\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n _withClient(callback) {\n const { scope, client } = this.getStackTop();\n if (client) {\n callback(client, scope);\n }\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-expect-error Function lacks ending return statement and return type does not include 'undefined'. ts(2366)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _callExtensionMethod(method, ...args) {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n DEBUG_BUILD && logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/**\n * Returns the global shim registry.\n *\n * FIXME: This function is problematic, because despite always returning a valid Carrier,\n * it has an optional `__SENTRY__` property, which then in turn requires us to always perform an unnecessary check\n * at the call-site. We always access the carrier through this function, so we can guarantee that `__SENTRY__` is there.\n **/\nfunction getMainCarrier() {\n GLOBAL_OBJ.__SENTRY__ = GLOBAL_OBJ.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return GLOBAL_OBJ;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nfunction makeMain(hub) {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nfunction getCurrentHub() {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n const hub = registry.__SENTRY__.acs.getCurrentHub();\n\n if (hub) {\n return hub;\n }\n }\n\n // Return hub that lives on a global object\n return getGlobalHub(registry);\n}\n\nfunction getGlobalHub(registry = getMainCarrier()) {\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * If the carrier does not contain a hub, a new hub is created with the global hub client and scope.\n */\nfunction ensureHubOnCarrier(carrier, parent = getGlobalHub()) {\n // If there's no hub on current domain, or it's an old API, assign a new one\n if (!hasHubOnCarrier(carrier) || getHubFromCarrier(carrier).isOlderThan(API_VERSION)) {\n const globalHubTopStack = parent.getStackTop();\n setHubOnCarrier(carrier, new Hub(globalHubTopStack.client, Scope.clone(globalHubTopStack.scope)));\n }\n}\n\n/**\n * @private Private API with no semver guarantees!\n *\n * Sets the global async context strategy\n */\nfunction setAsyncContextStrategy(strategy) {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n registry.__SENTRY__ = registry.__SENTRY__ || {};\n registry.__SENTRY__.acs = strategy;\n}\n\n/**\n * Runs the supplied callback in its own async context. Async Context strategies are defined per SDK.\n *\n * @param callback The callback to run in its own async context\n * @param options Options to pass to the async context strategy\n * @returns The result of the callback\n */\nfunction runWithAsyncContext(callback, options = {}) {\n const registry = getMainCarrier();\n\n if (registry.__SENTRY__ && registry.__SENTRY__.acs) {\n return registry.__SENTRY__.acs.runWithAsyncContext(callback, options);\n }\n\n // if there was no strategy, fallback to just calling the callback\n return callback();\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier) {\n return !!(carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub);\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nfunction getHubFromCarrier(carrier) {\n return getGlobalSingleton('hub', () => new Hub(), carrier);\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n * @returns A boolean indicating success or failure\n */\nfunction setHubOnCarrier(carrier, hub) {\n if (!carrier) return false;\n const __SENTRY__ = (carrier.__SENTRY__ = carrier.__SENTRY__ || {});\n __SENTRY__.hub = hub;\n return true;\n}\n\nexport { API_VERSION, Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier };\n//# sourceMappingURL=hub.js.map\n","import { logger, uuid4, timestampInSeconds, isThenable } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { getCurrentHub } from './hub.js';\nimport { parseEventHintOrCaptureContext } from './utils/prepareEvent.js';\n\n// Note: All functions in this file are typed with a return value of `ReturnType`,\n// where HUB_FUNCTION is some method on the Hub class.\n//\n// This is done to make sure the top level SDK methods stay in sync with the hub methods.\n// Although every method here has an explicit return type, some of them (that map to void returns) do not\n// contain `return` keywords. This is done to save on bundle size, as `return` is not minifiable.\n\n/**\n * Captures an exception event and sends it to Sentry.\n * This accepts an event hint as optional second parameter.\n * Alternatively, you can also pass a CaptureContext directly as second parameter.\n */\nfunction captureException(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exception,\n hint,\n) {\n return getCurrentHub().captureException(exception, parseEventHintOrCaptureContext(hint));\n}\n\n/**\n * Captures a message event and sends it to Sentry.\n *\n * @param message The message to send to Sentry.\n * @param Severity Define the level of the message.\n * @returns The generated eventId.\n */\nfunction captureMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n captureContext,\n) {\n // This is necessary to provide explicit scopes upgrade, without changing the original\n // arity of the `captureMessage(message, level)` method.\n const level = typeof captureContext === 'string' ? captureContext : undefined;\n const context = typeof captureContext !== 'string' ? { captureContext } : undefined;\n return getCurrentHub().captureMessage(message, level, context);\n}\n\n/**\n * Captures a manually created event and sends it to Sentry.\n *\n * @param event The event to send to Sentry.\n * @returns The generated eventId.\n */\nfunction captureEvent(event, hint) {\n return getCurrentHub().captureEvent(event, hint);\n}\n\n/**\n * Callback to set context information onto the scope.\n * @param callback Callback function that receives Scope.\n */\nfunction configureScope(callback) {\n getCurrentHub().configureScope(callback);\n}\n\n/**\n * Records a new breadcrumb which will be attached to future events.\n *\n * Breadcrumbs will be added to subsequent events to provide more context on\n * user's actions prior to an error or crash.\n *\n * @param breadcrumb The breadcrumb to record.\n */\nfunction addBreadcrumb(breadcrumb) {\n getCurrentHub().addBreadcrumb(breadcrumb);\n}\n\n/**\n * Sets context data with the given name.\n * @param name of the context\n * @param context Any kind of data. This data will be normalized.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setContext(name, context) {\n getCurrentHub().setContext(name, context);\n}\n\n/**\n * Set an object that will be merged sent as extra data with the event.\n * @param extras Extras object to merge into current context.\n */\nfunction setExtras(extras) {\n getCurrentHub().setExtras(extras);\n}\n\n/**\n * Set key:value that will be sent as extra data with the event.\n * @param key String of extra\n * @param extra Any kind of data. This data will be normalized.\n */\nfunction setExtra(key, extra) {\n getCurrentHub().setExtra(key, extra);\n}\n\n/**\n * Set an object that will be merged sent as tags data with the event.\n * @param tags Tags context object to merge into current context.\n */\nfunction setTags(tags) {\n getCurrentHub().setTags(tags);\n}\n\n/**\n * Set key:value that will be sent as tags data with the event.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key String key of tag\n * @param value Value of tag\n */\nfunction setTag(key, value) {\n getCurrentHub().setTag(key, value);\n}\n\n/**\n * Updates user context information for future events.\n *\n * @param user User context object to be set in the current context. Pass `null` to unset the user.\n */\nfunction setUser(user) {\n getCurrentHub().setUser(user);\n}\n\n/**\n * Creates a new scope with and executes the given operation within.\n * The scope is automatically removed once the operation\n * finishes or throws.\n *\n * This is essentially a convenience function for:\n *\n * pushScope();\n * callback();\n * popScope();\n *\n * @param callback that will be enclosed into push/popScope.\n */\nfunction withScope(callback) {\n getCurrentHub().withScope(callback);\n}\n\n/**\n * Starts a new `Transaction` and returns it. This is the entry point to manual tracing instrumentation.\n *\n * A tree structure can be built by adding child spans to the transaction, and child spans to other spans. To start a\n * new child span within the transaction or any span, call the respective `.startChild()` method.\n *\n * Every child span must be finished before the transaction is finished, otherwise the unfinished spans are discarded.\n *\n * The transaction must be finished with a call to its `.finish()` method, at which point the transaction with all its\n * finished child spans will be sent to Sentry.\n *\n * NOTE: This function should only be used for *manual* instrumentation. Auto-instrumentation should call\n * `startTransaction` directly on the hub.\n *\n * @param context Properties of the new `Transaction`.\n * @param customSamplingContext Information given to the transaction sampling function (along with context-dependent\n * default values). See {@link Options.tracesSampler}.\n *\n * @returns The transaction which was just started\n */\nfunction startTransaction(\n context,\n customSamplingContext,\n) {\n return getCurrentHub().startTransaction({ ...context }, customSamplingContext);\n}\n\n/**\n * Create a cron monitor check in and send it to Sentry.\n *\n * @param checkIn An object that describes a check in.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction captureCheckIn(checkIn, upsertMonitorConfig) {\n const hub = getCurrentHub();\n const scope = hub.getScope();\n const client = hub.getClient();\n if (!client) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. No client defined.');\n } else if (!client.captureCheckIn) {\n DEBUG_BUILD && logger.warn('Cannot capture check-in. Client does not support sending check-ins.');\n } else {\n return client.captureCheckIn(checkIn, upsertMonitorConfig, scope);\n }\n\n return uuid4();\n}\n\n/**\n * Wraps a callback with a cron monitor check in. The check in will be sent to Sentry when the callback finishes.\n *\n * @param monitorSlug The distinct slug of the monitor.\n * @param upsertMonitorConfig An optional object that describes a monitor config. Use this if you want\n * to create a monitor automatically when sending a check in.\n */\nfunction withMonitor(\n monitorSlug,\n callback,\n upsertMonitorConfig,\n) {\n const checkInId = captureCheckIn({ monitorSlug, status: 'in_progress' }, upsertMonitorConfig);\n const now = timestampInSeconds();\n\n function finishCheckIn(status) {\n captureCheckIn({ monitorSlug, status, checkInId, duration: timestampInSeconds() - now });\n }\n\n let maybePromiseResult;\n try {\n maybePromiseResult = callback();\n } catch (e) {\n finishCheckIn('error');\n throw e;\n }\n\n if (isThenable(maybePromiseResult)) {\n Promise.resolve(maybePromiseResult).then(\n () => {\n finishCheckIn('ok');\n },\n () => {\n finishCheckIn('error');\n },\n );\n } else {\n finishCheckIn('ok');\n }\n\n return maybePromiseResult;\n}\n\n/**\n * Call `flush()` on the current client, if there is one. See {@link Client.flush}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue. Omitting this parameter will cause\n * the client to wait until all events are sent before resolving the promise.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function flush(timeout) {\n const client = getClient();\n if (client) {\n return client.flush(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * Call `close()` on the current client, if there is one. See {@link Client.close}.\n *\n * @param timeout Maximum time in ms the client should wait to flush its event queue before shutting down. Omitting this\n * parameter will cause the client to wait until all events are sent before disabling itself.\n * @returns A promise which resolves to `true` if the queue successfully drains before the timeout, or `false` if it\n * doesn't (or if there's no client defined).\n */\nasync function close(timeout) {\n const client = getClient();\n if (client) {\n return client.close(timeout);\n }\n DEBUG_BUILD && logger.warn('Cannot flush events and disable SDK. No client defined.');\n return Promise.resolve(false);\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nfunction lastEventId() {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * Get the currently active client.\n */\nfunction getClient() {\n return getCurrentHub().getClient();\n}\n\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, close, configureScope, flush, getClient, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startTransaction, withMonitor, withScope };\n//# sourceMappingURL=exports.js.map\n","import { debug, Debugger } from 'debug';\nimport { getSandboxEnvironment, root, ISandboxEnvironment } from '@estee/elc-universal-utils';\nimport * as Sentry from '@sentry/browser';\n\nexport interface IFullData {\n logdata: ILogData;\n level: string;\n config: IELCLogger;\n}\n\nexport interface IPayload {\n error?: Error;\n context?: object;\n serviceName?: string;\n serviceVersion?: string;\n}\n\nexport interface ILogData {\n triggerType: TriggerType;\n message: string;\n payload?: IPayload;\n}\n\nexport enum TriggerType {\n runtimeError = 'runtimeError',\n api = 'api',\n graphqlApi = 'graphqlApi',\n render = 'render',\n serviceBus = 'serviceBus',\n config = 'config',\n translation = 'translation',\n other = 'other'\n}\n\nexport interface IELCLogger {\n serviceName: string;\n serviceVersion?: string;\n environment?: string;\n buid?: string;\n}\n\nexport class ELCLogger {\n private config: IELCLogger;\n\n private errorDebugger?: Debugger;\n private infoDebugger?: Debugger;\n private warningDebugger?: Debugger;\n private eventDebugger?: Debugger;\n private queryDebugger?: Debugger;\n private commandDebugger?: Debugger;\n\n constructor(config: IELCLogger) {\n this.config = config;\n const logger = debug(this.config.serviceName);\n\n this.errorDebugger = logger.extend('error');\n this.infoDebugger = logger.extend('info');\n this.warningDebugger = logger.extend('warning');\n this.eventDebugger = logger.extend('event');\n this.queryDebugger = logger.extend('query');\n this.commandDebugger = logger.extend('command');\n }\n\n public error = async (logdata: ILogData) => {\n if (this.errorDebugger) {\n this.errorDebugger(this.enhanceLogData(logdata));\n }\n\n const isProd =\n this.config.environment === ISandboxEnvironment.PRODUCTION ||\n root.env === ISandboxEnvironment.PRODUCTION;\n\n if ((isProd && getSandboxEnvironment() === ISandboxEnvironment.LIVE) || !isProd) {\n return this.sendLog(logdata, 'error');\n }\n };\n\n public info = (logdata: ILogData) => {\n if (this.infoDebugger) {\n this.infoDebugger(this.enhanceLogData(logdata));\n }\n };\n\n public warning = (logdata: ILogData) => {\n if (this.warningDebugger) {\n this.warningDebugger(this.enhanceLogData(logdata));\n }\n };\n\n public event = (logdata: ILogData) => {\n if (this.eventDebugger) {\n this.eventDebugger(this.enhanceLogData(logdata));\n }\n };\n\n public query = (logdata: ILogData) => {\n if (this.queryDebugger) {\n this.queryDebugger(this.enhanceLogData(logdata));\n }\n };\n\n public command = (logdata: ILogData) => {\n if (this.commandDebugger) {\n this.commandDebugger(this.enhanceLogData(logdata));\n }\n };\n\n private enhanceLogData = (logdata: ILogData) => ({\n ...logdata,\n triggerSource: this.config.serviceName,\n date: new Date().toUTCString()\n });\n // @ts-ignore\n private async sendLog(logdata: ILogData, level: string) {\n try {\n root.__SENTRY__\n ? Sentry.captureMessage(JSON.stringify(logdata))\n : console.info('Logging failed because Sentry is not available');\n } catch (e) {\n if (this.errorDebugger) {\n this.errorDebugger(\n this.enhanceLogData({\n message: 'Could not send log',\n triggerType: TriggerType.api,\n payload: {\n error: e,\n context: logdata\n }\n })\n );\n }\n }\n }\n}\n","export type ImportStatement = () => Promise<{\n default: React.ComponentClass;\n}>;\n\nexport class ViewsManager {\n private views: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: React.ComponentClass | undefined;\n } = {};\n\n public async loadAndSaveModule(viewName: string, importMethod: ImportStatement) {\n try {\n if (!this.views[viewName]) {\n const module = await importMethod();\n\n this.views[viewName] = module.default;\n }\n } catch (error) {\n console.error(error);\n }\n }\n\n public getView(viewName: string) {\n return this.views[viewName];\n }\n}\n\nexport default new ViewsManager();\n","import * as React from 'react';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\nimport { root, getServiceVersion } from '@estee/elc-universal-utils';\n\ninterface IProps {\n children: JSX.Element | null;\n serviceName: string;\n name: string;\n}\n\ninterface IState {\n error?: Error;\n}\n\nexport class ErrorBoundary extends React.Component {\n private logger: ELCLogger;\n\n constructor(props: IProps) {\n super(props);\n this.state = { error: undefined };\n this.logger = new ELCLogger({\n serviceName: props.serviceName,\n buid: root.buid || '',\n environment: root.env || '',\n serviceVersion: getServiceVersion(props.serviceName) || ''\n });\n }\n\n static getDerivedStateFromError(error?: Error) {\n return { error };\n }\n\n public componentDidCatch(error?: Error) {\n this.logger.error({\n triggerType: TriggerType.render,\n message: `Error caught in external view ${this.props.name}`,\n payload: {\n error: error,\n context: { serviceRegistry: root.ServiceRegistry }\n }\n });\n }\n\n public render() {\n return this.state.error ? null : this.props.children;\n }\n}\n","import * as React from 'react';\nimport { ServiceManager } from './ServiceManager';\nimport { ViewController } from '../../ViewController';\nimport ViewsManager, { ImportStatement } from './ViewsManager';\nimport { ErrorBoundary } from '@estee/elc-telemetry';\n\ntype ExportedViewState = {\n viewController?: ViewController;\n component: React.ComponentClass | undefined;\n};\n\ntype RemoveViewController = Omit;\ntype ExportedViewProps = {\n config?: object;\n translations?: object;\n viewController?: ViewController;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} & { [key: string]: any };\n\nexport function convertToExportedView(\n WrappedComponentImport: ImportStatement,\n viewName: string,\n controllerKey?: string\n) {\n return class extends React.Component, ExportedViewState> {\n static controllerName = controllerKey;\n\n constructor(props: RemoveViewController) {\n super(props);\n\n const controller = ServiceManager.serviceHasStarted\n ? ServiceManager.getController(controllerKey)\n : undefined;\n\n this.state = {\n viewController: controller,\n component: ViewsManager.getView(viewName)\n };\n }\n\n public async componentDidMount() {\n try {\n if (!ServiceManager.serviceHasStarted) {\n await ServiceManager.startService();\n }\n await ViewsManager.loadAndSaveModule(viewName, WrappedComponentImport);\n\n this.setState({\n viewController: ServiceManager.getController(controllerKey),\n component: ViewsManager.getView(viewName)\n });\n } catch (error) {\n console.error(error);\n }\n }\n\n render() {\n const Component = this.state.component as React.ComponentClass;\n\n if (!ServiceManager.serviceHasStarted || !Component) {\n return null;\n }\n\n return (\n \n \n \n );\n }\n };\n}\n","import {\n ServiceQueries,\n query,\n serviceQueries,\n ServiceEvents,\n ServiceCommands,\n events,\n on,\n emit\n} from '@estee/elc-service-bus';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\nimport { ViewController } from '../../ViewController';\nimport { ServiceBusController } from '../ServiceBusController';\nimport { BaseService } from '../BaseService';\nimport { IAppConfig } from '@estee/elc-universal-utils';\n\ntype diContainerType = { get(key: string): T };\nexport type ContainerImport = () => Promise<{ diContainer: diContainerType }>;\n\nexport type ServiceBusControllerBody = ServiceBusController & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: Promise<(...args: any[]) => any> | Function | any;\n} & { onEcommStarted(): void };\n\ninterface IServiceStartParams {\n serviceName: string;\n diContainerImport: ContainerImport;\n serviceKey: string;\n serviceBusControllerKey?: string;\n serviceBus?: {\n serviceBusBaseClass?: ServiceBusControllerBody;\n createServiceBusMethod?(): void;\n };\n}\n\nexport class ServiceManagerClass {\n public serviceName: string;\n private containerImport: ContainerImport;\n private diContainer: diContainerType;\n private serviceKey: string;\n private service: BaseService;\n private serviceBusControllerKey?: string;\n private serviceBusBaseClass?: ServiceBusControllerBody;\n private logger: ELCLogger;\n private ecommStarted: boolean = false;\n private startPromise: Promise;\n\n get serviceHasStarted(): boolean {\n return Boolean(this.service && this.service.isStarted);\n }\n\n getContainer = async () => {\n if (!this.diContainer) {\n this.diContainer = (await this.containerImport()).diContainer;\n }\n\n return this.diContainer;\n };\n\n handleServiceBusError = () => {\n throw new Error(`\n ServiceBus hasn't been provided to ServiceManager at setServiceStartParams method.\n ServiceBus: ${this.serviceBusBaseClass ? 'ServiceBus found' : this.serviceBusBaseClass}.\n ServiceBusKey: (${this.serviceBusControllerKey})\n `);\n };\n\n getServiceBusController = async () => {\n let serviceBus;\n try {\n await this.startService();\n\n const diContainer = await this.getContainer();\n\n serviceBus = diContainer.get(\n this.serviceBusControllerKey as string\n );\n\n if (!serviceBus) {\n throw new Error('ServiceBusController not found inside diContainer');\n }\n } catch (error) {\n this.logger.error({\n triggerType: TriggerType.render,\n message: error.message,\n payload: { error }\n });\n }\n\n return serviceBus as ServiceBusController;\n };\n\n setServiceStartParams = ({\n serviceName,\n diContainerImport,\n serviceKey,\n serviceBusControllerKey,\n serviceBus\n }: IServiceStartParams) => {\n this.serviceName = serviceName;\n this.containerImport = diContainerImport;\n this.serviceKey = serviceKey;\n this.serviceBusControllerKey = serviceBusControllerKey;\n this.logger = new ELCLogger({ serviceName });\n this.serviceBusBaseClass = serviceBus?.serviceBusBaseClass;\n serviceBus?.createServiceBusMethod?.();\n };\n\n getServiceBusControllerMethod = (functionName: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async (...args: any[]) => {\n const srvBusController = await this.getServiceBusController();\n\n const method = (srvBusController as ServiceBusControllerBody)[functionName] as Function;\n\n return method.call(null, ...args);\n };\n\n setDecoratorOnFunction = (decorator: Function) => {\n return ([triggerKey, functionName]: [\n triggerKey: keyof ServiceQueries | keyof ServiceEvents | keyof ServiceCommands,\n functionName: string\n ]) => {\n if (!this.serviceBusBaseClass || !this.serviceBusControllerKey) {\n this.handleServiceBusError();\n } else {\n decorator(triggerKey)(this.serviceBusBaseClass.__proto__, functionName);\n this.serviceBusBaseClass[functionName] = this.getServiceBusControllerMethod(\n functionName\n );\n }\n };\n };\n\n setDecoratorOnProperty = (decorator: Function) => {\n return ([keyName, queryName]: [keyName: string, queryName?: string]) => {\n if (!this.serviceBusBaseClass || !this.serviceBusControllerKey) {\n this.handleServiceBusError();\n } else {\n decorator(queryName)(this.serviceBusBaseClass.__proto__, keyName);\n\n Object.defineProperty(this.serviceBusBaseClass.__proto__, keyName, {\n configurable: true,\n enumerable: true,\n set(value) {\n return this.getServiceBusController().then(\n (srvBusController: ServiceBusController) => {\n // @ts-ignore\n srvBusController[keyName] = value;\n }\n );\n }\n });\n }\n };\n };\n\n @on(events.ECOMM_STARTED, { replay: true })\n public setEcommHasStarted = () => {\n this.ecommStarted = true;\n };\n\n onStart = (cb: (error?: Error) => void, ecommConfig?: IAppConfig) => async () => {\n let error: Error | undefined;\n try {\n if (this.serviceHasStarted) {\n cb();\n\n return;\n }\n if (!ecommConfig && !this.ecommStarted) {\n return;\n }\n\n await this.getContainer();\n this.service = this.diContainer.get(this.serviceKey);\n\n let serviceConfig = ecommConfig;\n\n if (!serviceConfig) {\n const config = (await query(serviceQueries.GET_CONFIG, ['ecommConfig'])) as\n | { ecommConfig?: IAppConfig }\n | undefined;\n\n // If ecommConfig is not available then EcommApp hasn't started yet\n if (!config || !config.ecommConfig) {\n throw new Error('EcommConfig not found');\n }\n\n serviceConfig = config.ecommConfig;\n }\n\n await this.service.start(serviceConfig);\n emit(events.SERVICE_STARTED, { serviceName: this.serviceName });\n } catch (err) {\n error = err;\n this.logger.error({\n triggerType: TriggerType.render,\n message: err.message,\n payload: {\n error: err\n }\n });\n } finally {\n cb(error);\n }\n };\n\n startService = (ecommConfig?: IAppConfig) => {\n if (!this.startPromise) {\n this.startPromise = new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n timeoutId = setInterval(\n this.onStart((error?: Error) => {\n if (timeoutId) {\n clearInterval(timeoutId);\n }\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n }, ecommConfig),\n 200\n );\n });\n }\n\n return this.startPromise;\n };\n\n getController = (controllerKey?: string): ViewController | undefined => {\n if (!this.diContainer) {\n const message = \"Can't request controller without starting the service first\";\n\n this.logger.error({\n triggerType: TriggerType.render,\n message,\n payload: {\n serviceName: this.serviceName,\n context: {\n method: 'getController method on ServiceManager'\n }\n }\n });\n\n throw new Error(message);\n }\n\n const controller = controllerKey\n ? this.diContainer.get(controllerKey)\n : undefined;\n\n return controller;\n };\n}\n\nexport const ServiceManager = new ServiceManagerClass();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceBus } from '@estee/elc-service-bus';\nimport {\n IServiceRegistry,\n IComponentViewController,\n IEcommApp,\n AllServicesTypes\n} from './Service/ServiceUtils';\n\nexport const MOBILE_VERSION_SELECTOR = 'js-mobile-version';\nexport const DESKTOP_VERSION_SELECTOR = 'js-desktop-version';\n\nexport interface ISingleServiceInfo {\n [key: string]: string;\n}\n\nexport interface IServiceInfo {\n [name: string]: ISingleServiceInfo;\n}\n\nexport type ArrayMinOne = {\n 0: T;\n} & T[];\n\ninterface IObjectOfStrings {\n [key: string]: string;\n}\n\ninterface IServiceBusTopics {\n commands: IObjectOfStrings;\n events: IObjectOfStrings;\n queries: IObjectOfStrings;\n}\n\nexport interface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n}\n\nexport interface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\n\nexport interface IRequestOptions {\n debounceInterval?: number;\n}\n\nexport type HeaderType = 'Business-Unit' | 'Authorization' | 'AuthorizationToken' | 'ClientId';\nexport type HeaderObject = { [key in HeaderType]?: string };\nexport type IHeaderSetter = () => Promise;\nexport type IRequestTransformerConfig = { url: string } & RequestInit;\nexport type IRequestTransformer = (config: IRequestTransformerConfig) => Promise;\n\nexport interface IHttpTransport {\n getStaticGlobalHeaders(): HeaderObject;\n setBaseUrl(baseUrl: string): void;\n addGlobalHeaders(headers: HeaderObject): void;\n removeGlobalHeader(headerName: string): void;\n addGlobalHeaderSetter(setter: IHeaderSetter): void;\n removeGlobalHeaderSetter(setter: IHeaderSetter): void;\n addRequestTransformer(transformer: IRequestTransformer): void;\n removeRequestTransformer(transformer: IRequestTransformer): void;\n delete(payload: string | IPayload): Promise;\n post(payload: IPayload): Promise;\n patch(payload: IPayload): Promise;\n put(payload: IPayload): Promise;\n get(payload: string | IGetPayload, IRequestOptions?: IRequestOptions): Promise;\n readonly isAuthFailureHandlingEnabled: boolean;\n setAuthFailureHandlingEnabled(enabled: boolean): void;\n}\n\nexport interface IUtagData {\n [key: string]: string | string[] | undefined | boolean | number | null | number[];\n}\nexport interface IUtagCfgOvrd {\n noview: boolean;\n dom_complete?: boolean;\n lowerqp?: boolean;\n noload?: boolean | number;\n nocookie?: boolean;\n readywait?: boolean | number;\n waittimer?: number;\n}\nexport interface IUtag {\n link(data: IUtagData, cb?: Function): void;\n view(data: IUtagData, cb?: Function): void;\n}\n\nexport interface IFrontendLogger {\n isEnabled?: boolean;\n loggedServices?: {\n [key: string]: {\n isEnabled?: boolean;\n };\n };\n}\n\ninterface ILoggerApiSDK {\n sendLog: Function;\n}\ninterface IDrupalSite {\n translations?: any;\n trackingDataLayer?: any;\n client?: {\n subdomain?: string;\n isMobile?: number;\n };\n frontendLogger?: IFrontendLogger;\n}\nexport type AnyObject = { [key: string]: any };\ntype ITranslationsCollection = { [key: string]: string | IObjectOfStrings };\ntype ViewDataPreloader = {\n addConfigs(configs: AnyObject): void;\n addTranslations(translations: ITranslationsCollection): void;\n getPreloadedConfigs(arg: string[]): AnyObject | null;\n getPreloadedTranslations(arg: string[]): ITranslationsCollection | null;\n preload(): Promise;\n registerTranslationFieldsToPreload(fields?: string[]): void;\n registerConfigFieldsToPreload(fields?: string[]): void;\n};\ninterface IComponentRenderer {\n init(): Promise;\n getDataPreloader(): ViewDataPreloader | null;\n setDataPreloader(arg: ViewDataPreloader): void;\n}\n\ntype IObjectLike = { [key: string]: any } | null;\nexport interface IViewManager {\n loadComponent(): Promise;\n module: React.ComponentType | null;\n controllerFromView: IComponentViewController | null;\n}\nexport interface IViewsManager {\n lazyServicesStarted: boolean;\n getViewManager(viewName: string): IViewManager;\n startService(service: AllServicesTypes): Promise;\n startLazyServices(): Promise;\n}\ndeclare global {\n // Augment Node.js `global`\n namespace NodeJS {\n interface Global {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n site?: IDrupalSite;\n location: Location;\n navigator: Navigator;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n serviceInfo: IServiceInfo;\n getServiceVersions(): void;\n __ssr: boolean;\n __SENTRY__: IObjectLike;\n onerror(\n message: string,\n url: string,\n line: number,\n column: number,\n error: Error\n ): boolean;\n env: string;\n buid: string;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n }\n\n // Augment Browser `window`\n interface Window {\n EcommApp?: IEcommApp;\n ServiceBusTopics: IServiceBusTopics;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n replaceSrc(originalSrc: string): string;\n utag_data: any;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n site?: IDrupalSite;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(message: string, url: string, line: number, column: number, error: Error): boolean;\n env: string;\n buid: string;\n serviceInfo: IServiceInfo;\n __SENTRY__: IObjectLike;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n\n // Augment Web Worker `self`\n interface WorkerGlobalScope {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n __SENTRY__: IObjectLike;\n utag: IUtag;\n location: Location;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n }\n}\n\nexport const isWebRendered = typeof self === 'object' && self.self === self;\n\nexport const root: NodeJS.Global | Window = typeof window === 'undefined' ? global : window;\n\nexport const setupServiceInfo = (serviceInfo: ISingleServiceInfo) => {\n const { name, ...rest } = serviceInfo;\n\n root.serviceInfo = root.serviceInfo || {};\n root.serviceInfo[name] = rest;\n};\n\nexport enum ISandboxEnvironment {\n LIVE = 'live',\n FEATURE = 'feature',\n DEV = 'dev',\n STAGE = 'stage',\n CMS = 'cms',\n PERSONAL = 'personal',\n PRODUCTION = 'production'\n}\n\nexport const getSandboxEnvironment: () => string = () => {\n let urlParts = root.location.hostname.split('.');\n const { LIVE, FEATURE, DEV, STAGE, CMS, PERSONAL } = ISandboxEnvironment;\n\n urlParts = urlParts.filter(part => !['www', 'm'].includes(part));\n const isLive = !(urlParts[0] === 'c') && !(urlParts[0] === 'e');\n\n return isLive\n ? LIVE\n : urlParts.includes(FEATURE)\n ? FEATURE\n : urlParts.includes(DEV)\n ? DEV\n : urlParts.includes(STAGE)\n ? STAGE\n : urlParts.includes(CMS)\n ? CMS\n : PERSONAL;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { LoadableComponent } from '@loadable/component';\n\nexport const SERVICE_VIEW_CLASSNAME = 'elc-service-view-renderer';\nexport const SERVICE_VIEW_RENDERED_ATTRIBUTE = 'data-rendered-view';\n\nexport function getModuleFederatedName(serviceName: string) {\n return serviceName.replace(/-/g, '_');\n}\n\nexport interface ICachedComponentsRegistry {\n [key: string]: React.ComponentType;\n}\n\nexport type RegisteredComponent = () => Promise<{\n ['default']: React.ComponentType;\n}>;\n\ntype AnyObject = { [key: string]: any };\n\nexport interface IAppConfig extends AnyObject {\n env?: string;\n businessUnitId?: string;\n}\n\nexport type ServiceInitializer = (config: IAppConfig) => Promise | void;\n\nexport interface IViewControllerData {\n [key: string]: any;\n}\n\nexport type ViewControllerLoadedMethod = (...args: any[]) => Promise;\n\nexport interface IComponentViewController {\n id?: string;\n loaded?: ViewControllerLoadedMethod;\n data?: IViewControllerData;\n dataState?: IViewControllerData;\n configMergeStrategy?: Function;\n initialize?(...args: any[]): void;\n handleState?(...args: any[]): void;\n setSSRState(data: IViewControllerData): void;\n setId(id: string): void;\n isLoading: boolean;\n}\n\nexport interface IComponent {\n componentName: string;\n component: LoadableComponent;\n viewController?(): IComponentViewController;\n}\n\nexport interface IComponentRegistry {\n [key: string]: IComponent;\n}\n\nexport interface IFederatedService {\n isStarted: true;\n name: string;\n version: string;\n views: string[];\n}\n\ndeclare class EcommApp {\n isStarted: boolean;\n name: string;\n start(appConfig: any): Promise;\n // @TODO: SDFEFND-4051 Removing this method will require a refactor on Drupal side\n register(): void;\n}\n\nexport type IEcommApp = typeof EcommApp;\n\ninterface IBaseServiceRegistryComp {\n isStarted: boolean;\n name: string;\n isLazy?: boolean;\n start(appConfig: IAppConfig): Promise;\n startPromise?: Promise;\n version: string;\n views: string[];\n}\n\nexport type IManifestService = {\n events: string[];\n queries: string[];\n};\n\ntype BaseServiceRegistryComponent = {\n cachedComponentsRegistry: ICachedComponentsRegistry;\n componentsRegistry: IComponentRegistry;\n getView(componentName: string): IComponent | null;\n getViewFromCache(componentName: string): React.ComponentType | null;\n registerView(\n componentName: string,\n component: RegisteredComponent,\n viewController?: () => IComponentViewController\n ): void;\n serviceInitializer: ServiceInitializer;\n serviceBusController?: any;\n setViewInCache(componentName: string, component: React.ComponentType): void;\n};\n// Exported object by the createServiceManifest method\nexport type IManifestServiceRegistryComp = IBaseServiceRegistryComp & IManifestService;\n// Service exported by the register method after applying the manifest\nexport type ILazyServiceRegistryComponent = BaseServiceRegistryComponent &\n IManifestServiceRegistryComp;\n// Service exported by the register method if manifest is not applied (non lazy service)\nexport type IServiceRegistryComponent = BaseServiceRegistryComponent & IBaseServiceRegistryComp;\n\n// Remove after SDFEFND-1853\n// Exported from older versions of the register method (elc-service < v7)\nexport interface IOlderServiceRegistryComponent\n extends Omit<\n IServiceRegistryComponent,\n 'getView' | 'start' | 'views' | 'isLazy' | 'startPromise'\n > {\n getView(componentName: string): IComponent | undefined;\n start(appConfig: IAppConfig): Promise;\n // These keys doesn't exist but this will avoid TS errors\n views?: string[];\n isLazy?: boolean;\n}\n\nexport type AllUpdatedServicesTypes =\n | ILazyServiceRegistryComponent\n | IManifestServiceRegistryComp\n | IServiceRegistryComponent;\n\nexport type AllServicesTypes =\n | AllUpdatedServicesTypes\n | IFederatedService\n | IOlderServiceRegistryComponent;\n\nexport interface IServiceRegistry {\n [key: string]: AllServicesTypes;\n}\n","export type storageKeyType = 'localStorage' | 'sessionStorage';\nexport namespace BrowserStorage {\n export function eraseCookie(name: string) {\n document.cookie = `${name}=; Max-Age=-99999999;`;\n }\n\n export function setCookie(name: string, value: string, daysOrDate: number | Date) {\n let expires = '';\n if (daysOrDate) {\n const expirationDate =\n typeof daysOrDate === 'number'\n ? new Date(Date.now() + daysOrDate * 24 * 60 * 60 * 1000)\n : daysOrDate;\n expires = `; expires=${expirationDate.toUTCString()}`;\n }\n document.cookie = `${name}=${value || ''}${expires};path=/`;\n }\n\n export function getCookie(name: string) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n }\n\n export function getItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n if (window[storageKey].getItem(key) !== null) {\n return window[storageKey].getItem(key);\n }\n } catch (e) {\n console.error(e);\n\n return getCookie(key);\n }\n }\n\n export function setItem(\n key: string,\n value: string,\n storageKey: storageKeyType = 'localStorage'\n ) {\n try {\n window[storageKey].setItem(key, value);\n } catch (e) {\n console.error(e);\n setCookie(key, value, 20);\n }\n }\n\n export function removeItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n window[storageKey].removeItem(key);\n } catch (e) {\n console.error(e);\n eraseCookie(key);\n }\n }\n\n export function storagePolling(key: string, callBack: Function) {\n let storageValue = getItem(key);\n\n const checkForKeyChange = () => {\n const latestValue = getItem(key);\n\n if (storageValue !== latestValue) {\n storageValue = latestValue;\n callBack(latestValue);\n }\n };\n\n return setInterval(checkForKeyChange, 2000);\n }\n}\n","import { root, ISingleServiceInfo } from '../UniversalUtils';\n\nconst extractServiceVersion = (serviceInfo: ISingleServiceInfo) =>\n serviceInfo && serviceInfo.version;\n\nconst searchForServiceInfo = (serviceName: string) => {\n root.serviceInfo = root.serviceInfo || {};\n root.ServiceRegistry = root.ServiceRegistry || {};\n\n return root.serviceInfo[serviceName] || root.ServiceRegistry[serviceName];\n};\n\nexport const getServiceVersion = (serviceName: string, fallback: string = '') =>\n extractServiceVersion(searchForServiceInfo(serviceName)) || fallback;\n","const snakeToCamel = (str: string) =>\n str\n .toLowerCase()\n .replace(/([-_][a-z])/g, (group) => group.toUpperCase().replace('-', '').replace('_', ''));\n\nexport const normalizeConfigs = (config: Object) =>\n Object.entries(config).reduce((acc, [_key, value]) => {\n const key = snakeToCamel(_key);\n\n return { ...acc, [key]: value };\n }, {});\n","import type { ICartSidebarServiceConfig } from '~domain/entities/Config/IConfig';\nimport { normalizeConfigs } from '../utils/normalizeConfigs';\n\ntype SiteConfig = {\n perlgem: Record;\n stardust: Record;\n cart?: ICartSidebarServiceConfig;\n};\n\nconst emptyDefaultConfig = {\n perlgem: {},\n stardust: {}\n};\n\nconst defaultConfigs = {\n checkoutUrl: '/',\n displayGiftwrapItemsInCart: false,\n enableDiscountModule: false,\n enableDonations: false,\n enableEstimatedTotals: false,\n enableKitDetails: false,\n enableOfferCodeModule: false,\n enableOffersTab: false,\n enableRecommendedForYou: false,\n enableReplenishment: false,\n enabled: true,\n goShoppingUrl: '/',\n displayGiftWrapItems: true,\n displayEngravedItems: true,\n isReadOnly: false,\n itemMaxQuantity: 6,\n enableOfferCodeField: false,\n expandableEstimatedTotals: false,\n collection: {\n enabled: false,\n collectionName: 'favorites'\n },\n offersCarouselRules: [\n {\n enabled: 1,\n maxDisplayThreshold: '100',\n minDisplayThreshold: '0',\n offerTypesToShow: 'samples_step_up',\n ruleType: 'Check Next Offer',\n sortOrder: '1'\n },\n {\n enabled: 1,\n maxDisplayThreshold: '100',\n minDisplayThreshold: '0',\n offerTypesToShow: 'samples',\n ruleType: 'Check Next Offer',\n sortOrder: '2'\n }\n ]\n};\n\nexport function getConfig() {\n // @ts-ignore\n const { cartConfig } = window.site;\n\n const {\n perlgem,\n stardust,\n cart,\n offers,\n currency,\n recommendations\n // @ts-ignore\n } = cartConfig || window.site?.config || (emptyDefaultConfig as SiteConfig);\n\n const normalizedCartConfig = normalizeConfigs({\n ...cart,\n ...offers,\n ...currency,\n ...recommendations\n }) as ICartSidebarServiceConfig;\n\n const siteConfig = {\n // @ts-ignore\n ...window.site?.config,\n ...defaultConfigs,\n ...normalizedCartConfig,\n perlgem,\n stardust\n };\n\n return {\n ...siteConfig,\n ...siteConfig.cart\n };\n}\n","import { convertToExportedView } from '@estee/elc-service';\nimport { ICartPage } from '~exported/CartPage/ICartPage';\n\nexport type INTERFACE = ICartPage;\n\n/*eslint no-restricted-syntax: [\"off\"]*/\n// @ts-ignore\nexport default convertToExportedView(() => import('./CartPage'), 'cart-page');\n","import { convertToExportedView } from '@estee/elc-service';\nimport { CART_SIDEBAR } from '@estee/elc-service-view-names';\nimport { serviceNames } from '~setup/CartService';\nimport ICartSidebar from './ICartSidebar';\n\nexport type INTERFACE = ICartSidebar;\n\n/*eslint no-restricted-syntax: [\"off\"]*/\n// @ts-ignore\nexport default convertToExportedView(\n () => import('./CartSidebar'),\n CART_SIDEBAR,\n serviceNames.cartSidebarViewController\n);\n","export const OFFERS_TO_DISPLAY = 'offers-to-display';\nexport const ORDER_ERROR_MESSAGE = 'order-error-message';\nexport const PAYMENT_METHODS = 'payment-methods';\nexport const PAYMENT_INFORMATION = 'payment-information';\nexport const FORGOT_PASSWORD = 'forgot-password';\nexport const RESET_PASSWORD = 'reset-password';\nexport const AUTOMATIC_OFFERS = 'automatic-offers';\nexport const THRESHOLD_MESSAGES = 'threshold-messages';\nexport const MANUAL_OFFER = 'manual-offer';\nexport const ORDER_CONFIRMATION_COMPONENT = 'order-confirmation-component';\nexport const PASSWORD_STRENGTH = 'password-strength';\nexport const SAVE_FOR_LATER_LIST = 'save-for-later-list';\nexport const SIGN_IN_FORM = 'sign-in-form';\n\nexport const SIGN_UP_FORM = 'sign-up-form';\nexport const CHANGE_PASSWORD = 'change-password';\nexport const CHANGE_EMAIL = 'change-email';\nexport const EMAIL_VERIFICATION = 'email-verification';\nexport const CONFIRM_REGISTRATION = 'confirm-registration';\n\nexport const ACCOUNT_DASHBOARD = 'account-dashboard';\nexport const ACCOUNT_LANDING_SCREEN = 'account-landing-screen';\nexport const ACCOUNT_LATEST_ORDER = 'account-latest-order';\nexport const ACCOUNT_ORDER_INFORMATION = 'account-order-information';\nexport const ACCOUNT_OVERLAY = 'account-overlay';\nexport const ACCOUNT_PAST_ORDER_STATUS_MENU = 'account-past-order-status-menu';\nexport const ACCOUNT_SIDEBAR = 'account-sidebar';\nexport const ACCOUNT_SIDEBAR_LOYALTY = 'account-sidebar-loyalty';\n\nexport const USER_PROFILE = 'user-profile';\nexport const USER_PROFILE_WELCOME = 'user-profile-welcome';\nexport const USER_PROFILE_CARD = 'user-profile-card';\n\nexport const ADDRESS_FORM = 'address-form';\nexport const ADDRESS_LIST = 'address-list';\nexport const FORMATTED_ADDRESS = 'formatted-address';\nexport const RETURN_USER_EMAIL = 'return-user-email';\nexport const USER_EMAIL = 'user-email';\nexport const USER_EMAIL_WITH_OPT_IN = 'user-email-with-opt-in';\nexport const SIGN_OUT_LINK = 'sign-out-link';\nexport const CART_ITEMS = 'cart-items';\nexport const CART_ORDER_SUMMARY = 'cart-order-summary';\nexport const CART_MERGE = 'cart-merge';\nexport const ACCOUNT_INFO = 'account-info';\nexport const PRODUCT_GRID = 'product-grid';\nexport const PRODUCT_FULL = 'product-full';\nexport const PRODUCT_FULL_ORDERABLE = 'product-full-orderable';\nexport const CART_OVERLAY = 'cart-overlay';\nexport const CART_ICON_BUTTON = 'cart-icon-button';\nexport const ORDER_HISTORY = 'order-history';\nexport const ORDER_DETAILS = 'order-details';\nexport const ORDER_HISTORY_COUNTER_BUTTONS = 'order-history-counter-buttons';\nexport const ORDER_HISTORY_TEMPORARY_MODULE = 'order-history-temporary-module';\nexport const ACCOUNT_INFO_LINK = 'account-info-link';\nexport const SIGN_IN_NAV_LINK = 'sign-in-nav-link';\n\nexport const CART_SIDEBAR = 'cart-sidebar';\nexport const CART_SIDEBAR_OFFERS_TAB = 'cart-sidebar-offers-tab';\nexport const CART_SIDEBAR_CART_OFFERS = 'cart-sidebar-cart-offers';\nexport const CART_SIDEBAR_OFFER_CODE_MODULE = 'cart-sidebar-offer-code-module';\n\nexport const EMAIL_OPT_IN = 'email-opt-in';\nexport const VIEW_EMAIL_OPT_IN = 'view-email-opt-in';\nexport const HELPFUL_LINKS = 'helpful-links';\n\nexport const SIGN_UP_SCREEN = 'sign-up-screen';\nexport const SIGN_IN_SCREEN = 'sign-in-screen';\nexport const ORDER_CONFIRMATION_SCREEN = 'order-confirmation-screen';\nexport const ORDER_ASSOCIATION_SCREEN = 'order-association-screen';\nexport const EXTERNAL_PAYMENT_ERROR_SCREEN = 'external-payment-error-screen';\nexport const PAYMENT_SCREEN = 'payment-screen';\nexport const PAYMENT_NAME = 'payment-name';\nexport const PAYMENT_ICON = 'payment-icon';\nexport const CHECKOUT_HEADER = 'checkout-header';\nexport const CHECKOUT_FOOTER = 'checkout-footer';\nexport const SHIPPING_SCREEN = 'shipping-screen';\nexport const SHOPPING_BAG_PAGE = 'shopping-bag-page';\nexport const PRODUCT_BRIEF = 'product-brief';\nexport const PRODUCT_QUICKVIEW = 'product-quickview';\nexport const SHIPPING_METHODS = 'shipping-methods';\nexport const HOME_DELIVERY_OPTIONS = 'home-delivery-options';\nexport const DELIVERY_TOUT = 'delivery-tout';\nexport const ELC_CHECKOUT = 'elc-checkout';\nexport const ELC_ACCOUNT = 'elc-account';\nexport const STYLEGUIDE = 'style-guide';\nexport const PRODUCT_NOTIFY_ME = 'product-notify-me';\nexport const CHOICE_OF_SKUS_LIST = 'choice-of-skus-list';\nexport const PRODUCT_CROSS_SELL = 'product-cross-sell';\nexport const PRODUCT_ADD_TO_BAG = 'product-add-to-bag';\nexport const PRODUCT_SHADESVIEW = 'product-shadesview';\nexport const PRODUCT_SIZE_PICKER = 'product-size-picker';\nexport const PRODUCT_QUANTITY_SELECTOR = 'product-quantity-selector';\nexport const PRODUCT_SHADE_PICKER = 'product-shade-picker';\nexport const PRODUCT_MEDIA_CAROUSEL_NAV = 'product-media-carousel-nav';\nexport const PRODUCT_SHADE_PICKER_BUTTON = 'product-shade-picker-button';\nexport const PRODUCT_RATING = 'product-rating';\nexport const PRODUCT_RATING_WRAPPER = 'product-rating-wrapper';\nexport const PRODUCT_REVIEWS = 'product-reviews';\nexport const REVIEW_DETAILS = 'review-details';\nexport const PRODUCT_CTA = 'product-cta';\nexport const PRODUCT_SHADES_SIDEBAR = 'product-shades-sidebar';\nexport const PRODUCT_BASIC_INFO = 'product-basic-info';\nexport const PRODUCT_BASIC_CTA = 'product-basic-cta';\nexport const PRODUCT_COMPARISON_MODULE = 'product-comparison-module';\n\nexport const CONTENT_BLOCK = 'content-block';\nexport const BASIC_TOUT = 'elc-basic-tout-v1';\nexport const VIDEO_TOUT_YOUTUBE = 'elc-video-tout-youtube-v1';\nexport const VIDEO_TOUT_MP4_FILE = 'elc-video-tout-mp4-file-v1';\nexport const THIRD_PARTY_TOUT = 'elc-third-party-tout-v1';\nexport const VTO_FOUNDATION_OVERLAY = 'elc-vto-foundation-overlay-v1';\n\nexport const OLAPIC_WIDGET = 'ugc-olapic-widget';\n\nexport const VTO = 'vto';\nexport const VTO_CTA_BUTTON = 'vto-cta-button';\nexport const VTO_SKIN_CARE = 'vto-skin-care';\n\nexport const SMARTGIFT = 'smartgift';\n\nexport const STORES = 'stores';\nexport const STORES_DIRECTORY = 'stores-directory';\nexport const SEARCH_RESULTS = 'search-results';\nexport const SEARCH_GNAV_INPUT_FIELD = 'search-gnav-input-field';\nexport const VOICE_SEARCH = 'voice-search';\nexport const STORE_DETAILS = 'store-details';\nexport const FIND_IN_STORE_BUTTON = 'find-in-store-button';\nexport const FIND_IN_STORE_MODAL = 'find-in-store-modal';\nexport const PICK_UP_IN_STORE = 'pick-up-in-store';\n\nexport const STYLEGUIDE_TYPOGRAPHY = 'styleguide-typography';\nexport const STYLEGUIDE_BUTTONS = 'styleguide-buttons';\nexport const STYLEGUIDE_INPUTS = 'styleguide-inputs';\nexport const STYLEGUIDE_COMPONENTS = 'styleguide-components';\n\nexport const ELC_RAMP = 'elc-ramp';\n\nexport const CARE_LANDING = 'elc-care-landing';\nexport const ORDER_TRACKING = 'order-tracking';\nexport const AUTO_REPLENISH = 'auto-replenish';\n","//@ts-ignore\nexport const isVulcan = () => window._platform === 'vulcan';\n","import {\n IAppConfig,\n IFederatedService,\n ServiceInitializer,\n root\n} from '@estee/elc-universal-utils';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\n\nroot.ServiceRegistry = root.ServiceRegistry || {};\n\nconst noop = async () => {};\n\nexport abstract class BaseService {\n private startPromise: Promise;\n public isStarted: boolean = false;\n protected logger: ELCLogger;\n\n static setViews(serviceName: string, name: string, version: string, views: string[]) {\n root.ServiceRegistry[serviceName] = {\n name,\n version,\n views,\n isStarted: true\n } as IFederatedService;\n }\n\n constructor(\n public name: string,\n protected version: string,\n protected serviceInitializer: ServiceInitializer | null = null\n ) {}\n\n private async initializeService(appConfig: IAppConfig): Promise {\n try {\n const initializer = this.serviceInitializer || noop;\n await initializer(appConfig);\n this.isStarted = true;\n } catch (error) {\n this.logger.error({\n message: `Could not start service ${this.name}`,\n triggerType: TriggerType.render,\n payload: {\n error,\n context: {\n serviceRegistry: root.ServiceRegistry\n }\n }\n });\n } finally {\n this.isStarted = true;\n }\n }\n\n public start(appConfig: IAppConfig): Promise {\n if (!this.startPromise && !this.isStarted) {\n this.logger =\n this.logger ||\n new ELCLogger({\n serviceName: this.name,\n environment: appConfig.env || root.env,\n buid: appConfig.businessUnitId || root.buid,\n serviceVersion: this.version\n });\n\n this.startPromise = this.initializeService(appConfig);\n }\n\n return this.startPromise;\n }\n}\n","import { ServiceInitializer } from '@estee/elc-universal-utils';\nimport { BaseService } from '@estee/elc-service';\nimport { isVulcan } from '~utils/isVulcan';\nimport { getConfig } from '../SharedComponents/configs';\nimport Config from '../internal/domain/entities/Config/Config';\n\nexport const serviceNames = {\n config: 'CART_SIDEBAR_CONFIG',\n configStore: 'CART_SIDEBAR_CONFIG_STORE',\n configRepository: 'CART_SIDEBAR_CONFIG_REPOSITORY',\n cartService: 'CART_SERVICE',\n cartSidebar: 'CART_SIDEBAR',\n cartEntity: 'CART_ENTITY',\n cartRepository: 'CART_REPOSITORY',\n recommendedItemsRepository: 'RECOMMENDED_ITEMS_REPOSITORY',\n cartSidebarViewController: 'CART_SIDEBAR_VIEW_CONTROLLER',\n recommendedItemsViewController: 'RECOMMENDED_ITEMS_VIEW_CONTROLLER',\n replenishmentViewController: 'REPLENISHMENT_VIEW_CONTROLLER',\n donationsViewController: 'DONATIONS_VIEW_CONTROLLER',\n priceFormatter: 'PRICE_FORMATTER',\n serviceBusController: 'SERVICE_BUS_CONTROLLER',\n httpTransport: 'HTTP_TRANSPORT',\n collectionRepository: 'COLLECTION_REPOSITORY',\n sentryService: 'SENTRY_SERVICE'\n};\n\nconst { name, version } = __serviceInfo__;\n\nasync function vulcanSetup() {\n try {\n const siteConfig = getConfig();\n\n const getDiContainer = () => import('~setup/diContainer');\n\n const { diContainer, setConfig } = await getDiContainer();\n\n const diContainerConfig: Config = diContainer.get(serviceNames.config);\n if (!diContainerConfig.config) {\n setConfig(siteConfig);\n }\n diContainerConfig.updateConfig(siteConfig);\n } catch (error) {\n console.error('Failed to initialize cart setup', JSON.stringify(error));\n }\n}\n\nexport class CartService extends BaseService {\n constructor(serviceInitializer: ServiceInitializer) {\n const fn = !isVulcan() ? serviceInitializer : vulcanSetup;\n\n super(name, version, fn);\n }\n}\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n try {\n const { cwd } = dynamicRequire(module, 'process');\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","/*\n * This module exists for optimizations in the build process through rollup and terser. We define some global\n * constants, which can be overridden during build. By guarding certain pieces of code with functions that return these\n * constants, we can control whether or not they appear in the final bundle. (Any code guarded by a false condition will\n * never run, and will hence be dropped during treeshaking.) The two primary uses for this are stripping out calls to\n * `logger` and preventing node-related code from appearing in browser bundles.\n *\n * Attention:\n * This file should not be used to define constants/flags that are intended to be used for tree-shaking conducted by\n * users. These flags should live in their respective packages, as we identified user tooling (specifically webpack)\n * having issues tree-shaking these constants across package boundaries.\n * An example for this is the __SENTRY_DEBUG__ constant. It is declared in each package individually because we want\n * users to be able to shake away expressions that it guards.\n */\n\n/**\n * Figures out if we're building a browser bundle.\n *\n * @returns true if this is a browser bundle build.\n */\nfunction isBrowserBundle() {\n return typeof __SENTRY_BROWSER_BUNDLE__ !== 'undefined' && !!__SENTRY_BROWSER_BUNDLE__;\n}\n\n/**\n * Get source of SDK.\n */\nfunction getSDKSource() {\n // @ts-expect-error \"npm\" is injected by rollup during build process\n return \"npm\";\n}\n\nexport { getSDKSource, isBrowserBundle };\n//# sourceMappingURL=env.js.map\n","import { isNodeEnv, dynamicRequire } from './node.js';\nimport { getGlobalObject } from './worldwide.js';\n\n// eslint-disable-next-line deprecation/deprecation\nconst WINDOW = getGlobalObject();\n\n/**\n * An object that can return the current timestamp in seconds since the UNIX epoch.\n */\n\n/**\n * A TimestampSource implementation for environments that do not support the Performance Web API natively.\n *\n * Note that this TimestampSource does not use a monotonic clock. A call to `nowSeconds` may return a timestamp earlier\n * than a previously returned value. We do not try to emulate a monotonic behavior in order to facilitate debugging. It\n * is more obvious to explain \"why does my span have negative duration\" than \"why my spans have zero duration\".\n */\nconst dateTimestampSource = {\n nowSeconds: () => Date.now() / 1000,\n};\n\n/**\n * A partial definition of the [Performance Web API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Performance}\n * for accessing a high-resolution monotonic clock.\n */\n\n/**\n * Returns a wrapper around the native Performance API browser implementation, or undefined for browsers that do not\n * support the API.\n *\n * Wrapping the native API works around differences in behavior from different browsers.\n */\nfunction getBrowserPerformance() {\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n return undefined;\n }\n\n // Replace performance.timeOrigin with our own timeOrigin based on Date.now().\n //\n // This is a partial workaround for browsers reporting performance.timeOrigin such that performance.timeOrigin +\n // performance.now() gives a date arbitrarily in the past.\n //\n // Additionally, computing timeOrigin in this way fills the gap for browsers where performance.timeOrigin is\n // undefined.\n //\n // The assumption that performance.timeOrigin + performance.now() ~= Date.now() is flawed, but we depend on it to\n // interact with data coming out of performance entries.\n //\n // Note that despite recommendations against it in the spec, browsers implement the Performance API with a clock that\n // might stop when the computer is asleep (and perhaps under other circumstances). Such behavior causes\n // performance.timeOrigin + performance.now() to have an arbitrary skew over Date.now(). In laptop computers, we have\n // observed skews that can be as long as days, weeks or months.\n //\n // See https://github.com/getsentry/sentry-javascript/issues/2590.\n //\n // BUG: despite our best intentions, this workaround has its limitations. It mostly addresses timings of pageload\n // transactions, but ignores the skew built up over time that can aversely affect timestamps of navigation\n // transactions of long-lived web pages.\n const timeOrigin = Date.now() - performance.now();\n\n return {\n now: () => performance.now(),\n timeOrigin,\n };\n}\n\n/**\n * Returns the native Performance API implementation from Node.js. Returns undefined in old Node.js versions that don't\n * implement the API.\n */\nfunction getNodePerformance() {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') ;\n return perfHooks.performance;\n } catch (_) {\n return undefined;\n }\n}\n\n/**\n * The Performance API implementation for the current platform, if available.\n */\nconst platformPerformance = isNodeEnv() ? getNodePerformance() : getBrowserPerformance();\n\nconst timestampSource =\n platformPerformance === undefined\n ? dateTimestampSource\n : {\n nowSeconds: () => (platformPerformance.timeOrigin + platformPerformance.now()) / 1000,\n };\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using the Date API.\n */\nconst dateTimestampInSeconds = dateTimestampSource.nowSeconds.bind(dateTimestampSource);\n\n/**\n * Returns a timestamp in seconds since the UNIX epoch using either the Performance or Date APIs, depending on the\n * availability of the Performance API.\n *\n * See `usingPerformanceAPI` to test whether the Performance API is used.\n *\n * BUG: Note that because of how browsers implement the Performance API, the clock might stop when the computer is\n * asleep. This creates a skew between `dateTimestampInSeconds` and `timestampInSeconds`. The\n * skew can grow to arbitrary amounts like days, weeks or months.\n * See https://github.com/getsentry/sentry-javascript/issues/2590.\n */\nconst timestampInSeconds = timestampSource.nowSeconds.bind(timestampSource);\n\n/**\n * Re-exported with an old name for backwards-compatibility.\n * TODO (v8): Remove this\n *\n * @deprecated Use `timestampInSeconds` instead.\n */\nconst timestampWithMs = timestampInSeconds;\n\n/**\n * A boolean that is true when timestampInSeconds uses the Performance API to produce monotonic timestamps.\n */\nconst usingPerformanceAPI = platformPerformance !== undefined;\n\n/**\n * Internal helper to store what is the source of browserPerformanceTimeOrigin below. For debugging only.\n */\nlet _browserPerformanceTimeOriginMode;\n\n/**\n * The number of milliseconds since the UNIX epoch. This value is only usable in a browser, and only when the\n * performance API is available.\n */\nconst browserPerformanceTimeOrigin = (() => {\n // Unfortunately browsers may report an inaccurate time origin data, through either performance.timeOrigin or\n // performance.timing.navigationStart, which results in poor results in performance data. We only treat time origin\n // data as reliable if they are within a reasonable threshold of the current time.\n\n const { performance } = WINDOW;\n if (!performance || !performance.now) {\n _browserPerformanceTimeOriginMode = 'none';\n return undefined;\n }\n\n const threshold = 3600 * 1000;\n const performanceNow = performance.now();\n const dateNow = Date.now();\n\n // if timeOrigin isn't available set delta to threshold so it isn't used\n const timeOriginDelta = performance.timeOrigin\n ? Math.abs(performance.timeOrigin + performanceNow - dateNow)\n : threshold;\n const timeOriginIsReliable = timeOriginDelta < threshold;\n\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // Also as of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always\n // a valid fallback. In the absence of an initial time provided by the browser, fallback to the current time from the\n // Date API.\n // eslint-disable-next-line deprecation/deprecation\n const navigationStart = performance.timing && performance.timing.navigationStart;\n const hasNavigationStart = typeof navigationStart === 'number';\n // if navigationStart isn't available set delta to threshold so it isn't used\n const navigationStartDelta = hasNavigationStart ? Math.abs(navigationStart + performanceNow - dateNow) : threshold;\n const navigationStartIsReliable = navigationStartDelta < threshold;\n\n if (timeOriginIsReliable || navigationStartIsReliable) {\n // Use the more reliable time origin\n if (timeOriginDelta <= navigationStartDelta) {\n _browserPerformanceTimeOriginMode = 'timeOrigin';\n return performance.timeOrigin;\n } else {\n _browserPerformanceTimeOriginMode = 'navigationStart';\n return navigationStart;\n }\n }\n\n // Either both timeOrigin and navigationStart are skewed or neither is available, fallback to Date.\n _browserPerformanceTimeOriginMode = 'dateNow';\n return dateNow;\n})();\n\nexport { _browserPerformanceTimeOriginMode, browserPerformanceTimeOrigin, dateTimestampInSeconds, timestampInSeconds, timestampWithMs, usingPerformanceAPI };\n//# sourceMappingURL=time.js.map\n","/** Internal global with common properties and Sentry extensions */\n\n// The code below for 'isGlobalObj' and 'GLOBAL_OBJ' was copied from core-js before modification\n// https://github.com/zloirock/core-js/blob/1b944df55282cdc99c90db5f49eb0b6eda2cc0a3/packages/core-js/internals/global.js\n// core-js has the following licence:\n//\n// Copyright (c) 2014-2022 Denis Pushkarev\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/** Returns 'obj' if it's the global object, otherwise returns undefined */\nfunction isGlobalObj(obj) {\n return obj && obj.Math == Math ? obj : undefined;\n}\n\n/** Get's the global object for the current JavaScript runtime */\nconst GLOBAL_OBJ =\n (typeof globalThis == 'object' && isGlobalObj(globalThis)) ||\n // eslint-disable-next-line no-restricted-globals\n (typeof window == 'object' && isGlobalObj(window)) ||\n (typeof self == 'object' && isGlobalObj(self)) ||\n (typeof global == 'object' && isGlobalObj(global)) ||\n (function () {\n return this;\n })() ||\n {};\n\n/**\n * @deprecated Use GLOBAL_OBJ instead or WINDOW from @sentry/browser. This will be removed in v8\n */\nfunction getGlobalObject() {\n return GLOBAL_OBJ ;\n}\n\n/**\n * Returns a global singleton contained in the global `__SENTRY__` object.\n *\n * If the singleton doesn't already exist in `__SENTRY__`, it will be created using the given factory\n * function and added to the `__SENTRY__` object.\n *\n * @param name name of the global singleton on __SENTRY__\n * @param creator creator Factory function to create the singleton if it doesn't already exist on `__SENTRY__`\n * @param obj (Optional) The global object on which to look for `__SENTRY__`, if not `GLOBAL_OBJ`'s return value\n * @returns the singleton\n */\nfunction getGlobalSingleton(name, creator, obj) {\n const gbl = (obj || GLOBAL_OBJ) ;\n const __SENTRY__ = (gbl.__SENTRY__ = gbl.__SENTRY__ || {});\n const singleton = __SENTRY__[name] || (__SENTRY__[name] = creator());\n return singleton;\n}\n\nexport { GLOBAL_OBJ, getGlobalObject, getGlobalSingleton };\n//# sourceMappingURL=worldwide.js.map\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => enableOverride === null ? createDebug.enabled(namespace) : enableOverride,\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","\"use strict\";\n\n/* Copyright (c) 2013 Billy Tetrud - Free to use for any purpose: MIT License*/\n// gets the changes that need to happen to a to change it into b\n// returns an object with the members\n // type\n // property\n // value\n // values\n // count\nmodule.exports = function(a,b) {\n var results = []\n diffInternal(a,b,results,[])\n return results\n}\n\nvar diffInternal = function(a,b,acc,base) {\n if(a === b || Number.isNaN(a)&&Number.isNaN(b)) {\n return;\n } else if(a instanceof Array && b instanceof Array) {\n var an=a.length-1,bn=b.length-1\n while(an >= 0 && bn >= 0) { // Loop backwards (so that making changes in order will work correctly).\n if(equal(a[an], b[bn])) {\n an--; bn--;\n } else {\n var indexes = findMatchIndexes(equal, a,b, an,bn, 0, 0)\n\n // Loop backwards from the point at which the lists are not equal and find which elements can be matched\n // as similar or can be expressed as additions, changes, or removals.\n var anInner=an,bnInner=bn\n while(anInner > indexes.a && bnInner > indexes.b) {\n if(similar(a[anInner], b[bnInner])) {\n // get change for that element\n diffInternal(a[anInner],b[bnInner],acc, base.concat([anInner]))\n anInner--; bnInner--;\n } else {\n var indexesInner = findMatchIndexes(similar, a,b, anInner,bnInner, indexes.a+1, indexes.b+1)\n\n var numberPulled = anInner-indexesInner.a\n var numberPushed = bnInner-indexesInner.b\n\n if(numberPulled === 1 && numberPushed === 1) {\n set(acc, base.concat(indexesInner.a+1), b[indexesInner.b+1]) // set the one\n } else if(numberPulled === 1 && numberPushed === 2) {\n // set one, push the other\n add(acc, base,indexesInner.a+2, b.slice(indexesInner.b+2, bnInner+1))\n set(acc, base.concat(indexesInner.a+1), b[indexesInner.b+1])\n } else if(numberPulled === 2 && numberPushed === 1) {\n // set one, pull the other\n rm(acc, base, indexesInner.a+2, 1, a)\n set(acc, base.concat(indexesInner.a+1), b[indexesInner.b+1])\n } else if(numberPulled === 2 && numberPushed === 2) {\n set(acc, base.concat(indexesInner.a+2), b[indexesInner.b+2])\n set(acc, base.concat(indexesInner.a+1), b[indexesInner.b+1])\n } else {\n if(numberPulled > 0) { // if there were some elements pulled\n rm(acc, base, indexesInner.a+1, numberPulled, a)\n }\n if(numberPushed > 0) { // if there were some elements pushed\n add(acc, base,indexesInner.a+1, b.slice(indexesInner.b+1, bnInner+1))\n }\n }\n\n anInner = indexesInner.a\n bnInner = indexesInner.b\n }\n }\n if(anInner > indexes.a) { // more to pull\n rm(acc, base, indexes.a+1, anInner-indexes.a, a)\n } else if(bnInner > indexes.b) { // more to push\n add(acc, base, anInner+1, b.slice(indexes.b+1, bnInner+1))\n }\n\n an = indexes.a\n bn = indexes.b\n }\n }\n\n if(an >= 0) { // more to pull\n rm(acc, base, 0, an+1, a)\n } else if(bn >= 0) { // more to push\n add(acc, base,0, b.slice(0, bn+1))\n }\n\n } else if(a instanceof Date && b instanceof Date) {\n if(a.getTime() !== b.getTime()) {\n set(acc, base, b)\n }\n } else if(a instanceof Object && b instanceof Object) {\n var keyMap = merge(arrayToMap(Object.keys(a)), arrayToMap(Object.keys(b)))\n for(var key in keyMap) {\n var path = base.concat([key])\n if(key in a && !(key in b)) {\n unset(acc, path)\n } else {\n diffInternal(a[key],b[key],acc, path)\n }\n }\n } else {\n set(acc, base, b)\n }\n\n // adds a 'set' type to the changeList\n function set(changeList, property, value) {\n changeList.push({\n type:'set',\n path: property,\n val: value\n })\n }\n\n // adds an 'unset' type to the changeList\n function unset(changeList, property) {\n changeList.push({\n type:'unset',\n path: property\n })\n }\n\n // Adds an 'rm' type to the changeList.\n // index - The index to remove at.\n // count - The number of items to remove from that index. The indexes to remove count up from the index.\n function rm(changeList, property, index, count, a) {\n var finalIndex =\n changeList.push({\n type:'rm',\n path: property,\n index: index,\n num: count,\n vals: a.slice(index, index + count)\n })\n }\n\n // adds an 'add' type to the changeList\n function add(changeList, property, index, values) {\n changeList.push({\n type:'add',\n path: property,\n index: index,\n vals: values\n })\n }\n}\n\nmodule.exports.similar = similar\nmodule.exports.equal = equal\n\n\n// Finds and returns the closest indexes in a and b that match starting with divergenceIndex\n// Note: loops backwards like the rest of this stuff\n// Returns the index beyond the first element (aSubMin-1 or bSubMin-1) for each if there is no match\n// Parameters:\n // compareFn - determines what matches (returns true if the arguments match)\n // a,b - two arrays to compare\n // divergenceIndexA,divergenceIndexB - the two positions of a and b to start comparing from\n // aSubMin,bSubMin - the two positions to compare until\nfunction findMatchIndexes(compareFn, a,b, divergenceIndexA,divergenceIndexB, aSubMin, bSubMin) {\n var maxNForA = divergenceIndexA-aSubMin\n var maxNForB = divergenceIndexB-bSubMin\n var maxN = Math.max(maxNForA, maxNForB)\n for(var n=1; n<=maxN; n++) {\n var newestA = a[divergenceIndexA-n] // the current item farthest from the divergence index being compared\n var newestB = b[divergenceIndexB-n]\n\n if(n<=maxNForB && n<=maxNForA && compareFn(newestA, newestB)) {\n return {a:divergenceIndexA-n, b:divergenceIndexB-n}\n }\n\n for(var j=0; j= 2 && notEqual > tenPercent || notEqual === a.length) {\n return false\n }\n\n notEqual++\n }\n }\n // else\n return true\n\n } else if(a instanceof Object) {\n if(!(b instanceof Object))\n return false\n\n var keyMap = merge(arrayToMap(Object.keys(a)), arrayToMap(Object.keys(b)))\n var keyLength = Object.keys(keyMap).length\n var tenPercent = keyLength / 10\n var notEqual = 0\n for(var key in keyMap) {\n var aVal = a[key]\n var bVal = b[key]\n\n if(!equal(aVal,bVal)) {\n if(notEqual >= 2 && notEqual > tenPercent || notEqual+1 === keyLength) {\n return false\n }\n\n notEqual++\n }\n }\n // else\n return true\n\n } else {\n return a===b || Number.isNaN(a) && Number.isNaN(b)\n }\n}\n\n// compares arrays and objects for value equality (all elements and members must match)\nfunction equal(a,b) {\n if(a instanceof Array) {\n if(!(b instanceof Array))\n return false\n if(a.length !== b.length) {\n return false\n } else {\n for(var n=0; n 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","var __webpack_error__ = new Error();\nmodule.exports = new Promise((resolve, reject) => {\n\tif(typeof elc_service_translations !== \"undefined\") return resolve();\n\t__webpack_require__.l(\"elc_service_translations\", (event) => {\n\t\tif(typeof elc_service_translations !== \"undefined\") return resolve();\n\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\tvar realSrc = event && event.target && event.target.src;\n\t\t__webpack_error__.message = 'Loading script failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t__webpack_error__.name = 'ScriptExternalLoadError';\n\t\t__webpack_error__.type = errorType;\n\t\t__webpack_error__.request = realSrc;\n\t\treject(__webpack_error__);\n\t}, \"elc_service_translations\");\n}).then(() => (elc_service_translations));","var __webpack_error__ = new Error();\nmodule.exports = new Promise((resolve, reject) => {\n\tif(typeof pg_service_offers !== \"undefined\") return resolve();\n\t__webpack_require__.l(\"pg_service_offers\", (event) => {\n\t\tif(typeof pg_service_offers !== \"undefined\") return resolve();\n\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\tvar realSrc = event && event.target && event.target.src;\n\t\t__webpack_error__.message = 'Loading script failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t__webpack_error__.name = 'ScriptExternalLoadError';\n\t\t__webpack_error__.type = errorType;\n\t\t__webpack_error__.request = realSrc;\n\t\treject(__webpack_error__);\n\t}, \"pg_service_offers\");\n}).then(() => (pg_service_offers));","module.exports = ElcServiceBus;","module.exports = ElcRuntime.HttpTransport;","module.exports = ElcRuntime.HypoContainer;","module.exports = ElcRuntime.React;","module.exports = ElcRuntime.ReactDom;","module.exports = ElcRuntime.mobx;","module.exports = ElcRuntime.mobxReact;","module.exports = ElcRuntime.styled5;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"vendors-node_modules_estee_elc-formatters_src_business-unit-id-parser_BusinessUnitIdParser_ts-a5e166\":\"0036b9e77f44e1c490e9\",\"diContainer\":\"e7afaf7c16ad012bf703\",\"webpack_container_remote_elc_service_translations_diContainer\":\"d18dc74fbe4a92fc4ca6\",\"vendors-node_modules_estee_elc-base-theme_src_ContentSpacing_ts-node_modules_estee_elc-button-172c1c\":\"15a05a01c2652f239c8c\",\"vendors-node_modules_estee_elc-icons_src_views_EmptyCartIcon_tsx-node_modules_estee_elc-icons-80109c\":\"28b7229ba05f81c8384a\",\"src_api_CartAPI_CartHook_ts-src_internal_views_DiscountView_DiscountView_tsx-src_internal_vie-980bfe\":\"b652e2018be8aa09a1ad\",\"src_exported_CartSidebar_CartSidebar_tsx\":\"825fa45484e02466107f\",\"src_exported_CartPage_CartPage_tsx\":\"ce67cdd9f3917aa9319b\"}[chunkId] + \".bundle.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.S = {};\nvar initPromises = {};\nvar initTokens = {};\n__webpack_require__.I = (name, initScope) => {\n\tif(!initScope) initScope = [];\n\t// handling circular init calls\n\tvar initToken = initTokens[name];\n\tif(!initToken) initToken = initTokens[name] = {};\n\tif(initScope.indexOf(initToken) >= 0) return;\n\tinitScope.push(initToken);\n\t// only runs once\n\tif(initPromises[name]) return initPromises[name];\n\t// creates a new share scope if needed\n\tif(!__webpack_require__.o(__webpack_require__.S, name)) __webpack_require__.S[name] = {};\n\t// runs all init snippets from all modules reachable\n\tvar scope = __webpack_require__.S[name];\n\tvar warn = (msg) => (typeof console !== \"undefined\" && console.warn && console.warn(msg));\n\tvar uniqueName = \"pg-service-cart\";\n\tvar register = (name, version, factory, eager) => {\n\t\tvar versions = scope[name] = scope[name] || {};\n\t\tvar activeVersion = versions[version];\n\t\tif(!activeVersion || (!activeVersion.loaded && (!eager != !activeVersion.eager ? eager : uniqueName > activeVersion.from))) versions[version] = { get: factory, from: uniqueName, eager: !!eager };\n\t};\n\tvar initExternal = (id) => {\n\t\tvar handleError = (err) => (warn(\"Initialization of sharing external failed: \" + err));\n\t\ttry {\n\t\t\tvar module = __webpack_require__(id);\n\t\t\tif(!module) return;\n\t\t\tvar initFn = (module) => (module && module.init && module.init(__webpack_require__.S[name], initScope))\n\t\t\tif(module.then) return promises.push(module.then(initFn, handleError));\n\t\t\tvar initResult = initFn(module);\n\t\t\tif(initResult && initResult.then) return promises.push(initResult['catch'](handleError));\n\t\t} catch(err) { handleError(err); }\n\t}\n\tvar promises = [];\n\tswitch(name) {\n\t\tcase \"default\": {\n\t\t\tinitExternal(\"webpack/container/reference/elc_service_translations\");\n\t\t\tinitExternal(\"webpack/container/reference/pg_service_offers\");\n\t\t}\n\t\tbreak;\n\t}\n\tif(!promises.length) return initPromises[name] = 1;\n\treturn initPromises[name] = Promise.all(promises).then(() => (initPromises[name] = 1));\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"pg_service_cart\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(\"webpack_container_remote_elc_service_translations_diContainer\" != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkpg_service_cart\"] = self[\"webpackChunkpg_service_cart\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import { emit, events } from '@estee/elc-service-bus';\n\ntype BaseConfig = {\n baseUrl: string;\n businessUnitId: string;\n clientId: string;\n environment: string;\n};\n\nexport const startTranslations = async (stardustServiceConfig: BaseConfig) => {\n const config: BaseConfig = stardustServiceConfig || {};\n\n // @ts-ignore\n const translations = await (() => import('elc_service_translations/diContainer'))();\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n await translations.serviceStarter(config);\n\n emit(events.ECOMM_STARTED);\n};\n","export abstract class ServiceBusController {\n // This method is created at runtime when using \"watchQuery\" decorator from elc-service-bus\n protected registerWatchers: undefined | Function = undefined;\n\n constructor() {}\n}\n","import { ServiceManager, ServiceBusController, ServiceBusControllerBody } from '@estee/elc-service';\nimport {\n commandProvider,\n events,\n on,\n queryProvider,\n serviceCommands,\n serviceQueries\n} from '@estee/elc-service-bus';\n\nexport const queries = [[serviceQueries.GET_CART, 'getCart']];\nexport const onEvents = [\n [events.CART_UPDATED, 'showCartOverlay'],\n [events.OFFERS_LOADED, 'onOffersLoaded'],\n [events.CART_OVERLAY_OFFER_CLICKED, 'onOfferCodeApplied'],\n [events.CART_OVERLAY_ICON_CLICKED, 'cartOverlayIconClicked'],\n [events.OFFER_CODE_SUCCEDED, 'fetchedCart'],\n [events.OFFER_CODE_FAILED, 'fetchedCart']\n];\nexport const commands = [[serviceCommands.CART_OVERLAY_SHOW, 'showCartOverlay']];\n\nexport class ServiceBus extends ServiceBusController {\n @on(events.ECOMM_STARTED, { replay: true })\n public onEcommStarted = () => {\n const id = setInterval(() => {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n if (serviceBusBaseClass) {\n clearInterval(id);\n queries.forEach(ServiceManager.setDecoratorOnFunction(queryProvider));\n onEvents.forEach(ServiceManager.setDecoratorOnFunction(on));\n commands.forEach(ServiceManager.setDecoratorOnFunction(commandProvider));\n }\n }, 50);\n };\n}\n\nexport const serviceBusBaseClass = new ServiceBus() as ServiceBusController &\n ServiceBusControllerBody;\n","import ServiceBusController from '~setup/ServiceBusController';\nimport { commands, onEvents, queries } from '~setup/ServiceBus';\n\nlet controller: ServiceBusController | null = null;\n\nconst setController = async () => {\n // Revisit this, we should be consistent on usage, this doesn't decouple the service from the service bus,\n // it just breaks it on both vulcan and drupal.\n const getController = () => import('~setup/ServiceBusController');\n\n const _controller = await getController();\n controller = new _controller.default();\n};\n\nconst prependTitle = 'ServiceQuery';\n\nconst createServiceQuery = ([queryName, fn]: string[]) => {\n window.addEventListener(\n `${prependTitle}.query.${queryName}`,\n async ({ detail }: CustomEvent) => {\n await setController();\n // @ts-ignore\n const callback = controller && controller[fn];\n\n if (callback) {\n const response = { uid: detail.uid, response: callback(detail.options) };\n window.dispatchEvent(\n new CustomEvent(`${prependTitle}.response.${queryName}`, { detail: response })\n );\n }\n }\n );\n\n window.dispatchEvent(new CustomEvent(`${prependTitle}.ready.${queryName}`));\n};\n\nexport const setupVulcanServiceBus = () => {\n onEvents.forEach(([event, fn]) =>\n // @ts-ignore\n window.document.addEventListener(event, async ({ detail }) => {\n await setController();\n // @ts-ignore\n controller && controller[fn]?.(detail);\n })\n );\n\n queries.forEach(createServiceQuery);\n commands.forEach(createServiceQuery);\n};\n","import { startTranslations } from '~setup/vulcan/translations';\nimport { setupVulcanServiceBus } from '~setup/vulcan/serviceBus';\nimport '~exported/CartSidebar';\nimport '~exported/CartPage';\n\nimport { getModuleFederatedName, root, setupServiceInfo } from '@estee/elc-universal-utils';\nimport { ServiceManager } from '@estee/elc-service';\nimport { serviceNames, CartService } from '~setup/CartService';\nimport { serviceBusBaseClass } from '~setup/ServiceBus';\nimport { serviceQueries } from '@estee/elc-service-bus';\nimport { getConfig } from '../SharedComponents/configs';\n\nsetupServiceInfo(__serviceInfo__);\nconst { name, version } = __serviceInfo__;\nconst mfServiceName = getModuleFederatedName(name);\n\nCartService.setViews(name, mfServiceName, version, ['cart-drawer', 'cart-page']);\n\n// This can be removed after all pincer services support pincer-component-renderer\n// @ts-ignore\nroot.ServiceRegistry[name].isVulcan = true;\n\n// Mock ecommConfig which is used on Drupal\n// @ts-ignore\nServiceManager.ecommStarted = true;\ntry {\n root.GlobalServiceBus.registerQueryProvider(serviceQueries.GET_CONFIG, () => ({\n ecommConfig: getConfig()\n }));\n} catch (e) {\n console.warn(e);\n}\n\nServiceManager.setServiceStartParams({\n serviceName: name,\n diContainerImport: () => import('~setup/diContainer'),\n serviceKey: serviceNames.cartService,\n serviceBusControllerKey: serviceNames.serviceBusController,\n serviceBus: {\n serviceBusBaseClass\n }\n});\n\n(() => {\n startTranslations({ baseUrl: '', clientId: '', businessUnitId: '', environment: 'dev' });\n setupVulcanServiceBus();\n})();\n","var moduleMap = {\n\t\"./diContainer\": () => {\n\t\treturn Promise.all(/* diContainer */[__webpack_require__.e(\"vendors-node_modules_estee_elc-formatters_src_business-unit-id-parser_BusinessUnitIdParser_ts-a5e166\"), __webpack_require__.e(\"diContainer\")]).then(() => (() => ((__webpack_require__(\"./src/service-setup/diContainer.ts\")))));\n\t},\n\t\"./cart-drawer\": () => {\n\t\treturn Promise.resolve().then(() => (() => ((__webpack_require__(\"./src/exported/CartSidebar/index.ts\")))));\n\t},\n\t\"./cart-page\": () => {\n\t\treturn Promise.resolve().then(() => (() => ((__webpack_require__(\"./src/exported/CartPage/index.ts\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","chunkMapping","idToExternalAndNameMapping","gbl","crypto","msCrypto","getRandomByte","Math","random","randomUUID","replace","getRandomValues","Uint8Array","_","c","toString","__SENTRY_DEBUG__","CONSOLE_LEVELS","originalConsoleMethods","consoleSandbox","callback","console","wrappedFuncs","wrappedLevels","Object","keys","forEach","level","originalConsoleMethod","enabled","logger","enable","disable","isEnabled","name","args","makeLogger","DEFAULT_ENVIRONMENT","objectToString","prototype","isBuiltin","wat","className","call","isPlainObject","Boolean","then","States","SyncPromise","constructor","executor","__init","this","__init2","__init3","__init4","_state","PENDING","_handlers","_resolve","_reject","e","onfulfilled","onrejected","resolve","reject","push","result","reason","_executeHandlers","catch","val","finally","onfinally","isRejected","value","_setResult","RESOLVED","REJECTED","state","_value","cachedHandlers","slice","handler","getGlobalEventProcessors","notifyEventProcessors","processors","event","hint","index","processor","id","log","final","dropUndefinedKeys","inputValue","_dropUndefinedKeys","Map","memoizationMap","memoVal","get","undefined","returnValue","set","key","Array","isArray","item","makeSession","context","startingTime","time","session","sid","init","timestamp","started","duration","status","errors","ignoreDuration","toJSON","Date","toISOString","did","abnormal_mechanism","attrs","release","environment","ip_address","ipAddress","user_agent","userAgent","sessionToJSON","updateSession","user","email","username","length","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_attachments","_user","_tags","_extra","_contexts","_sdkProcessingMetadata","_propagationContext","generatePropagationContext","static","scope","newScope","_level","_span","_session","_transactionName","_fingerprint","_requestSession","addScopeListener","addEventProcessor","setUser","_notifyScopeListeners","getUser","getRequestSession","setRequestSession","requestSession","setTags","tags","setTag","setExtras","extras","setExtra","extra","setFingerprint","fingerprint","setLevel","setTransactionName","setContext","setSpan","span","getSpan","getTransaction","transaction","setSession","getSession","update","captureContext","updatedScope","contexts","propagationContext","clear","addBreadcrumb","breadcrumb","maxBreadcrumbs","maxCrumbs","mergedBreadcrumb","breadcrumbs","getLastBreadcrumb","clearBreadcrumbs","addAttachment","attachment","getAttachments","clearAttachments","applyToEvent","additionalEventProcessors","trace","getTraceContext","sdkProcessingMetadata","dynamicSamplingContext","getDynamicSamplingContext","transactionName","_applyFingerprint","scopeBreadcrumbs","_getBreadcrumbs","setSDKProcessingMetadata","newData","setPropagationContext","getPropagationContext","maybeArray","concat","traceId","spanId","substring","API_VERSION","DEFAULT_BREADCRUMBS","Hub","client","_version","_stack","bindClient","isOlderThan","version","getStackTop","setupIntegrations","pushScope","getScope","getStack","getClient","popScope","pop","withScope","captureException","exception","eventId","_lastEventId","event_id","syntheticException","Error","_withClient","originalException","captureMessage","message","captureEvent","type","lastEventId","beforeBreadcrumb","getOptions","finalBreadcrumb","emit","configureScope","run","oldHub","makeMain","getIntegration","integration","_oO","startTransaction","customSamplingContext","_callExtensionMethod","traceHeaders","captureSession","endSession","_sendSessionUpdate","closeSession","startSession","currentSession","shouldSendDefaultPii","options","sendDefaultPii","method","sentry","getMainCarrier","__SENTRY__","extensions","apply","hub","registry","getHubFromCarrier","setHubOnCarrier","getGlobalHub","hasHubOnCarrier","carrier","acs","getCurrentHub","TriggerType","ELCLogger","config","error","logdata","errorDebugger","enhanceLogData","isProd","sendLog","info","infoDebugger","warning","warningDebugger","eventDebugger","query","queryDebugger","command","commandDebugger","triggerSource","serviceName","date","toUTCString","debug","extend","JSON","stringify","triggerType","payload","views","loadAndSaveModule","viewName","importMethod","module","default","getView","ErrorBoundary","props","super","buid","serviceVersion","componentDidCatch","serviceRegistry","render","children","convertToExportedView","WrappedComponentImport","controllerKey","controller","ServiceManager","viewController","component","componentDidMount","setState","Component","controllerName","ServiceManagerClass","ecommStarted","getContainer","diContainer","containerImport","handleServiceBusError","serviceBusBaseClass","serviceBusControllerKey","getServiceBusController","serviceBus","startService","setServiceStartParams","diContainerImport","serviceKey","createServiceBusMethod","getServiceBusControllerMethod","functionName","setDecoratorOnFunction","decorator","triggerKey","__proto__","setDecoratorOnProperty","keyName","queryName","defineProperty","configurable","enumerable","srvBusController","setEcommHasStarted","onStart","cb","ecommConfig","serviceHasStarted","service","serviceConfig","serviceQueries","start","events","err","startPromise","Promise","timeoutId","setInterval","clearInterval","getController","isStarted","on","replay","self","window","g","setupServiceInfo","serviceInfo","rest","ISandboxEnvironment","getSandboxEnvironment","urlParts","location","hostname","split","LIVE","FEATURE","DEV","STAGE","CMS","PERSONAL","filter","part","includes","getModuleFederatedName","BrowserStorage","eraseCookie","document","cookie","setCookie","daysOrDate","expires","now","getCookie","nameEQ","ca","i","charAt","indexOf","getItem","storageKey","setItem","removeItem","storagePolling","callBack","storageValue","latestValue","getServiceVersion","fallback","extractServiceVersion","searchForServiceInfo","normalizeConfigs","entries","reduce","acc","_key","toLowerCase","group","toUpperCase","emptyDefaultConfig","perlgem","stardust","defaultConfigs","checkoutUrl","displayGiftwrapItemsInCart","enableDiscountModule","enableDonations","enableEstimatedTotals","enableKitDetails","enableOfferCodeModule","enableOffersTab","enableRecommendedForYou","enableReplenishment","goShoppingUrl","displayGiftWrapItems","displayEngravedItems","isReadOnly","itemMaxQuantity","enableOfferCodeField","expandableEstimatedTotals","collection","collectionName","offersCarouselRules","maxDisplayThreshold","minDisplayThreshold","offerTypesToShow","ruleType","sortOrder","getConfig","cartConfig","site","cart","offers","currency","recommendations","normalizedCartConfig","siteConfig","isVulcan","_platform","noop","BaseService","serviceInitializer","initializeService","appConfig","initializer","env","businessUnitId","serviceNames","configStore","configRepository","cartService","cartSidebar","cartEntity","cartRepository","recommendedItemsRepository","cartSidebarViewController","recommendedItemsViewController","replenishmentViewController","donationsViewController","priceFormatter","serviceBusController","httpTransport","collectionRepository","sentryService","vulcanSetup","getDiContainer","setConfig","diContainerConfig","updateConfig","CartService","fn","isNodeEnv","__SENTRY_BROWSER_BUNDLE__","process","dynamicRequire","mod","request","require","WINDOW","dateTimestampSource","nowSeconds","platformPerformance","performance","getNodePerformance","timeOrigin","getBrowserPerformance","timestampSource","dateTimestampInSeconds","bind","timestampInSeconds","_browserPerformanceTimeOriginMode","threshold","performanceNow","dateNow","timeOriginDelta","abs","timeOriginIsReliable","navigationStart","timing","navigationStartDelta","isGlobalObj","obj","GLOBAL_OBJ","globalThis","getGlobalObject","getGlobalSingleton","creator","s","m","h","d","w","y","plural","ms","msAbs","n","isPlural","round","exports","str","String","match","exec","parseFloat","parse","isFinite","long","fmtLong","fmtShort","formatArgs","useColors","namespace","humanize","diff","color","splice","lastC","save","namespaces","storage","load","r","DEBUG","__nwjs","navigator","documentElement","style","WebkitAppearance","firebug","table","parseInt","RegExp","$1","localStorage","localstorage","destroy","warned","warn","colors","formatters","j","v","createDebug","prevTime","enableOverride","curr","Number","prev","coerce","unshift","format","formatter","selectColor","delimiter","newDebug","toNamespace","regexp","stack","names","map","skips","join","len","substr","test","hash","charCodeAt","a","b","results","diffInternal","base","property","isNaN","an","bn","equal","indexes","findMatchIndexes","anInner","bnInner","similar","indexesInner","numberPulled","numberPushed","add","rm","getTime","keyMap","merge","arrayToMap","path","changeList","count","num","vals","values","compareFn","divergenceIndexA","divergenceIndexB","aSubMin","bSubMin","maxNForA","maxNForB","maxN","max","newestA","newestB","elemA","elemB","tenPercent","notEqual","keyLength","aKeys","bKeys","array","obj1","obj2","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","marker","runClearTimeout","Item","nextTick","arguments","title","browser","argv","versions","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","__webpack_error__","elc_service_translations","__webpack_require__","l","errorType","realSrc","target","src","pg_service_offers","ElcServiceBus","ElcRuntime","HttpTransport","HypoContainer","React","ReactDom","mobx","mobxReact","styled5","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","getter","__esModule","getPrototypeOf","t","mode","ns","create","def","current","getOwnPropertyNames","definition","o","f","chunkId","all","promises","u","Function","hmd","prop","hasOwnProperty","url","done","script","needAttach","scripts","getElementsByTagName","getAttribute","createElement","charset","nc","setAttribute","onScriptComplete","onerror","onload","doneFns","parentNode","removeChild","head","appendChild","Symbol","toStringTag","remotes","R","data","p","onError","handleFunction","arg1","arg2","next","first","promise","onInitialized","external","onFactory","factory","I","S","initPromises","initTokens","initScope","initToken","initExternal","handleError","msg","initFn","initResult","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","startTranslations","stardustServiceConfig","translations","serviceStarter","ServiceBusController","registerWatchers","queries","onEvents","commands","serviceCommands","ServiceBus","onEcommStarted","queryProvider","commandProvider","setController","_controller","prependTitle","createServiceQuery","addEventListener","detail","response","uid","dispatchEvent","CustomEvent","mfServiceName","baseUrl","clientId","moduleMap","shareScope","oldScope"],"sourceRoot":""}