{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap","webpack:///./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","webpack:///./node_modules/@babel/runtime/helpers/classCallCheck.js","webpack:///./node_modules/@babel/runtime/helpers/createClass.js","webpack:///./node_modules/@babel/runtime/helpers/iterableToArray.js","webpack:///./node_modules/@babel/runtime/helpers/nonIterableSpread.js","webpack:///./node_modules/@babel/runtime/helpers/toConsumableArray.js","webpack:///./node_modules/@babel/runtime/helpers/typeof.js","webpack:///./node_modules/elc-logging/build/bundle.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/elc-universal-utils/src/UniversalUtils.ts","webpack:///./package.json","webpack:///./src/service-bus-topics/events/elc-ecomm.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-payment.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-appt-booking.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-cart.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-checkout.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-communications.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-forgot-password.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-offers.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-order-history.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-order.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-password-strength.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-prodcat.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-save-for-later.ts","webpack:///./node_modules/elc-universal-utils/src/BrowserStorage.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-search.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-sign-in.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-sign-up.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-stores.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-user-profile.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-analytics.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-vto.ts","webpack:///./src/service-bus-topics/events/fe-elc-service-ratings-reviews.ts","webpack:///./src/service-bus-topics/events/elc-care.ts","webpack:///./src/service-bus-topics/events/elc-ramp.ts","webpack:///./src/service-bus-topics/events/elc-video.ts","webpack:///./src/service-bus-topics/events/index.ts","webpack:///./src/ServiceBusDecorators.ts","webpack:///./src/service-bus-topics/queries/fe-elc-ecomm.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-cart.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-checkout.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-communications.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-offers.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-order-history.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-order.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-password-strength.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-payment.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-prodcat.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-save-for-later.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-sign-in.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-sign-up.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-user-profile.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-config-manager.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-translations.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-stores.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-appt-booking.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-legal.ts","webpack:///./src/service-bus-topics/queries/fe-elc-service-content.ts","webpack:///./src/service-bus-topics/queries/index.ts","webpack:///./src/service-bus-topics/commands/fe-elc-ecomm.ts","webpack:///./src/service-bus-topics/commands/fe-elc-service-cart.ts","webpack:///./src/service-bus-topics/commands/fe-elc-service-prodcat.ts","webpack:///./src/service-bus-topics/commands/fe-elc-service-sign-in.ts","webpack:///./src/service-bus-topics/commands/fe-elc-service-user-profile.ts","webpack:///./src/service-bus-topics/commands/fe-elc-service-order.ts","webpack:///./src/service-bus-topics/commands/index.ts","webpack:///./src/ServiceBus.tsx","webpack:///./src/index.ts"],"names":["root","factory","exports","module","define","amd","a","i","window","installedModules","jsonpScriptSrc","original_jsonpScriptSrc","patchJsonpScriptSrc","replaceSrc","Error","newSrc","apply","this","arguments","e","console","error","__webpack_require__","moduleId","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_arrayWithoutHoles","arr","Array","isArray","arr2","length","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_iterableToArray","iter","iterator","toString","from","_nonIterableSpread","arrayWithoutHoles","iterableToArray","nonIterableSpread","_toConsumableArray","_typeof2","obj","constructor","_typeof","default","u","setTimeout","clearTimeout","f","g","concat","run","C","fun","array","nextTick","push","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","process","type","__nwjs","navigator","userAgent","toLowerCase","match","document","documentElement","style","WebkitAppearance","firebug","exception","table","parseInt","RegExp","$1","useColors","namespace","humanize","diff","color","splice","replace","storage","setItem","removeItem","getItem","BROWSER","NODE_ENV","DEBUG","localStorage","formatArgs","save","load","colors","log","debug","formatters","j","JSON","stringify","message","charCodeAt","Math","abs","enabled","Number","Date","prev","curr","coerce","unshift","selectColor","destroy","extend","init","instances","indexOf","names","skips","split","substr","map","join","enable","test","substring","stack","disable","keys","forEach","String","exec","parseFloat","round","isFinite","long","errorDebugger","enhanceLogData","info","infoDebugger","warning","warningDebugger","event","eventDebugger","query","queryDebugger","command","commandDebugger","assign","triggerSource","serviceName","date","toUTCString","beforeEventListenerRegister","triggerType","beforeEmit","payload","afterEmit","beforeQueryRegister","beforeQuery","afterQuery","Function","self","global","PaymentStatus","SERVICE_STARTED","NAVIGATE","SESSION_EXPIRED","NAVIGATE_EXTERNAL_URL","OUTBOUND_CLICKED","PRODUCT_OUT_OF_STOCK","ORDER_PAYMENT_CONFIRMED","GUEST_ORDER_PAYMENT_CONFIRMED","REQUEST_LOGIN_AND_ASSOCIATE_ORDER","HOME_PAGE_LOADED","NAVIGATE_APPT_BOOKING_REQUESTED","NAVIGATE_STORES_REQUESTED","STORE_LOCATION_SELECTED","STORE_TOWN_SELECTED","APPOINTMENT_BOOKED","CART_BADGE_CLICKED","MOBILE_CART_BADGE_CLICKED","CART_SAMPLES_SET","CART_UPDATED","CART_VIEWED","CART_FAILURE","SHIPPING_OPTION_SELECTED","EDIT_ADDRESS_CLICKED","CONTINUE_AS_GUEST_CLICKED","GUEST_DESELECTED","CART_PAGE_VIEW","CART_PRODUCT_SKU_LIMIT_REACHED","SHOPPING_BAG_BUTTON_CLICKED","MANUAL_OFFER_CODE_APPLIED","REMOVE_ITEM","ITEM_ADDED","REVIEW_SCREEN_SUBMITTING","SAVE_FOR_LATER_REMOVE","CART_LOGGED_IN","SAMPLE_ADDED","CHANGE_LOCATION","OFFER_CODE_FAILED","NOT_ENOUGH_PRODUCTS","CART_PAYMENT_SOURCES_SET","PAYMENT_SUBMITTING","SHIPPING_SCREEN_SUBMITTING","BACK_HEADER_CLICKED","EXTERNAL_PAYMENT_ERROR_RESTORE_PROCESSED","CHECKOUT_SESSION_SAVED","SUBSCRIBED_FOR_EMAILS","PRODUCT_NOTIFY_ME_REQUEST","PRODUCT_NOTIFY_ME_REQUEST_SUCCESS","PRODUCT_NOTIFY_ME_REQUEST_FAILURE","PRODUCT_NOTIFY_ME_TRIGGERED","FORGOT_PASSWORD_SIGNIN_CLICK","PASSWORD_RESET","OFFERS_LOADED","APPLY_OFFER_CODE","OFFER_CODE_SUCCEDED","ORDER_HISTORY_REDIRECT","ORDER_DETAILS_CLICKED","ORDER_HISTORY_NO_ORDERS_LINK_CLICK","ORDER_CREATED","ORDER_CONFLICT","ORDER_FAILED","ORDER_CONFIRMATION_VIEW","ROUTE_NOT_FOUND","ORDER_CHECK","ORDER_ASSOCIATE","ORDER_ASSOCIATE_SUCCESS","ORDER_ASSOCIATE_FAILURE","PASSWORD_WITH_STRENGTH_CHANGED","TRANSACTION_FAILED","TRANSACTION_SUCCEDED","SHIPPING_SCREEN_FAILURE","PAYMENT_STRATEGY_CHANGED","PAYMENT_STRATEGY_LOAD","PAYMENT_STRATEGY_LOAD_DONE","PAYMENT_STRATEGY_SAVE","PAYMENT_STRATEGY_SAVE_DONE","PAYMENT_STRATEGY_AVAILABILITY_SET","PAYMENT_SUBMIT_REQUEST","FILTER_METHODS","MPP_PAGE_VIEWED","SPP_PAGE_VIEWED","PRODUCT_FULL_LOADED","SPP_POWER_REVIEWS_INIT","READ_REVIEWS_LINK_CLICKED","WRITE_REVIEWS_LINK_CLICKED","MPP_FILTERED","GRID_SORTED","GRID_FILTERED","PRODUCT_LOADED","PRODUCT_VIEWED","PRODUCT_CLICKED","PRODUCTS_FILTERED_AND_SORTED","SPP_PAGE_LOADED","SPP_SELECTION","PRODUCT_SHADE_SIZE_SELECTED","QUICK_VIEW_TRIGGERED","SKU_ENGRAVING_TRIGGERED","PRODUCT_SHADE_SELECTED","ADD_SKU_TO_COLLECTION_TRIGGERED","PRODUCT_INFO_POPUP_CTA_CLICKED","BrowserStorage","SAVE_FOR_LATER_ADD_BACK_TO_CART","SAVE_FOR_LATER_UPDATE_FAILED","SEARCH_PRODUCTS_QUERIED","SEARCH_TERM_SELECTED","AUTH_ATTEMPT","AUTH_FAILED","AUTH_SUCCEDED","FORGOT_PASSWORD_LINK_CLICK","SIGNED_OUT","UNAUTHORIZED_REQUEST","SIGN_UP_LINK_CLICKED","CREATE_ACCOUNT_ATTEMPT","CREATE_ACCOUNT_FAIL","CHANGE_EMAIL_LINK_CLICKED","REGISTRATION_CONFIRMED","SIGN_IN_LINK_CLICKED","BOOK_APPOINTMENT_CLICKED","GET_DIRECTIONS_CLICKED","SEARCH_ADDRESS_SUBMITTED","STORE_DETAILS_CLICKED","STORE_INFO_CLICKED","STORE_MARKER_CLICKED","STORE_PHONE_CLICKED","SHIPPING_ADDRESS_FILLED","ACCOUNT_SETTINGS_LINK_CLICK","CREATE_ACCOUNT_SUCCESS","LOGGED_IN_SUCCESSFUL","USER_LOADED","GUEST_FORM_VALIDITY_CHANGED","USER_PROFILE_CHANGED","GET_OPTIN_PROFILE_LOAD","SIGN_OUT_COMPLETED","ADDRESS_SELECTION_CHANGED","ADDRESS_SELECTION_VALIDITY_CHANGED","ADDRESS_EDIT_CHANGED","ADDRESS_EDIT_VALIDITY_CHANGED","FAVORITES_LOADED","FAVORITE_SELECTED","FAVORITE_STATUS_UPDATED","CONFIG_ANALYTICS","ANALYTICS_LOADED","ANALYTICS_PRODUCTS_VIEWED","ANALYTICS_PRODUCT_VIEWED","ANALYTICS_PAGE_VIEWED","VTO_CAMERA_CLOSED","VTO_CAMERA_FAILED","VTO_CAMERA_OPENED","VTO_COMPARE","VTO_COMPARE_DISABLED","VTO_CLOSED","VTO_ENGINE_CLOSED","VTO_LOADED","VTO_LOADING","VTO_KISS_DETECTED","VTO_OPENED","VTO_PAIR_SHADE_GRID_OPENED","VTO_PAIR_SHADE_SELECTED","VTO_PHOTO_LOADED","VTO_PHOTO_SAVED","VTO_RESET","VTO_VIDEO_LOADED","VTO_SHADE_FINDER_STARTED","VTO_SHADE_FINDER_COMPLETED","VTO_SHADE_FINDER_CANCELLED","VTO_SKIN_SHADE_FOUND","VTO_ZOOM","VTO_FOUNDATION_OVERLAY_TOGGLED","VTO_SKIN_CARE_OPENED","VTO_SKIN_CARE_CAMERA_OPENED","VTO_SKIN_CARE_CAMERA_FAILED","VTO_SKIN_CARE_CAMERA_CLOSED","VTO_SKIN_CARE_LOADING","VTO_SKIN_CARE_LOADED","VTO_SKIN_CARE_VIDEO_LOADED","VTO_SKIN_ANALYSIS_STARTED","VTO_SKIN_ANALYSIS_FINISHED","VTO_SKIN_BACK_TO_DETECTING","VTO_SKIN_CARE_CLOSED","VTO_SKIN_CARE_RESULT_LOADED","REVIEWS_HELPFUL_YES_CLICKED","REVIEWS_HELPFUL_NO_CLICKED","REVIEWS_FLAG_REVIEW_CLICKED","REVIEWS_SORT_BY_CHANGED","CARE_NAVIGATE_SIGN_IN","CARE_NAVIGATE_SIGN_UP","CARE_NAVIGATE_PASSWORD_FORGOT","CARE_NAVIGATE_PASSWORD_RESET_LINK_SENT","RAMP_SIGN_UP_SUBMITTED","RAMP_SIGN_UP_SUCCESSFUL","RAMP_SIGN_UP_FAILED","RAMP_LOG_IN_SUBMITTED","RAMP_LOG_IN_SUCCESSFUL","RAMP_LOG_IN_FAILED","VIDEO_READY","VIDEO_PLAY","VIDEO_PAUSE","VIDEO_END","events","getDecorators","globalServiceBus","evName","set","evt","commandProvider","queryName","queryToProvide","registerCommandProvider","watchQuery","__serviceBusDecorators__","registerWatchers","sname","registerQueryWatcher","newQueryResult","propertyName","queryProvider","registerQueryProvider","CONFIRM_REGISTRATION_TOKEN","CONFIRM_REGISTRATION_URL","RESET_PASSWORD_URL","GET_CURRENT_ROUTE","IS_CART_VALID","CHOICE_OF_SKUS_ITEMS_COUNT","CART_ITEMS_SUBTOTAL","CART_ITEMS_COUNT","CART_DIGITAL_SIGNATURE","SUCCESSFUL_OFFER_CODES","CART_SKUS_IDS","GET_CART","RECOMMENDED_PRODUCTS_SKUID_LIST","IS_SHIPPING_SCREEN_VALID","EMAIL_OPT_IN","GET_MANUAL_OFFER","FIRST_ORDER_DATE","FIRST_ORDER_VALUE","LAST_ORDER_DATE","LAST_ORDER_VALUE","ORDERS_AVG","TOTAL_COUNT_OF_ORDERS","TOTAL_SUM_OF_REVENUE","ORDER_SHIPPING_ADDRESS","GET_ORDER_DATA","IS_PASSWORD_VALID","IS_PAYMENT_SCREEN_VALID","GET_PRODUCTS","GET_PRODUCTS_V2","GET_PRODUCTS_V3","GET_REVIEW_PRODUCT","GET_SELECTED_FILTERS","GET_SORTBY_VALUE","GET_SKUS","SAVE_FOR_LATER_ITEMS_COUNT","IS_AUTHENTICATED","IS_EMAIL_JUST_VERIFIED","USER_ID","IS_SIGN_IN_FORM_OPEN","EMAIL_VERIFIED","GUEST_EMAIL","EMAIL","BIRTH_DATE","GET_USER_CREATION_DATE","GET_FORMATTED_ADDRESS","GET_CONFIG","GET_TRANSLATIONS","GET_STORE_INVENTORY","GET_APPT_BOOKING_ACCESS_TOKEN","GET_APPT_BOOKING_COUNTERS","LEGAL_ACCEPTANCE_TOKEN","TEMPLATES_CONTENT_GET","serviceQueries","CHANGE_ROUTE_PROFILE","CHANGE_ROUTE_SETTINGS","CHANGE_ROUTE_ORDER_HISTORY","CART_ADD_ITEM","CART_CLEAR_ERRORS","CART_CLEAR","CART_SET_SHIPPING_METHOD","CART_ADD_ADDRESSES","SAVE_FOR_LATER_ADD","CART_OVERLAY_SHOW","CART_OVERLAY_HIDE","UPDATE_INVENTORY","AUTH_UPDATE_DATA","SET_SIGN_IN_EMAIL","UPDATE_USER_DATA","CLEAR_USER_DATA","ACCOUNT_OVERLAY_SHOW","ACCOUNT_OVERLAY_HIDE","ADD_USER_ADDRESS","ORDER_CREATE","ORDER_UPDATE","serviceCommands","eraseCookie","cookie","setCookie","daysOrDate","expires","expirationDate","now","getCookie","nameEQ","ca","charAt","storageKey","storagePolling","callBack","storageValue","setInterval","latestValue","unsolvedQueries","hooks","logger","eventName","callback","startMark","runHooks","runOn","callbacks","eventWatchers","endMark","idx","applyHook","hook","hookObj","hookName","hookFn","hkCol","hasUnsolvedQueries","runEmit","commandName","runQuery","qp","queryProviders","find","resolveFn","queryPromise","Promise","resolve","promise","provider","context","then","result","runRegisterQueryProvider","filter","unsolvedProviderQueries","uq","executeUnsolvedQuery","queryWatcher","queryWatchers","queryCache","hookEvent","hookChain","args","executeHook","slice","dirtyCheckQueries","localQueryCache","qw","performance","mark","measure","Map","shift","next","hookArgs","packageJson","GlobalServiceBus","ServiceBusTopics","commands","queries","ElcServiceBus"],"mappings":"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","file":"bundle.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n \t// WebpackRequireFrom - monkey-patching\n \tif (typeof jsonpScriptSrc === 'function') {\n \t var original_jsonpScriptSrc = jsonpScriptSrc;\n \t function patchJsonpScriptSrc () {\n \t try {\n \t if (typeof replaceSrc !== \"function\") {\n \t throw new Error(\"WebpackRequireFrom: 'replaceSrc' is not a function or not available at runtime. See https://github.com/agoldis/webpack-require-from#troubleshooting\");\n \t }\n \t var newSrc = replaceSrc(original_jsonpScriptSrc.apply(this, arguments));\n \t if (!newSrc || typeof newSrc !== 'string') {\n \t throw new Error(\"WebpackRequireFrom: 'replaceSrc' does not return string. See https://github.com/agoldis/webpack-require-from#troubleshooting\");\n \t }\n \t return newSrc;\n \t } catch (e) {\n \t if (!false) {\n \t console.error(e);\n \t }\n \t return original_jsonpScriptSrc.apply(this, arguments);\n \t }\n \t }\n \t jsonpScriptSrc = patchJsonpScriptSrc\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n \t// WebpackRequireFrom\n \tObject.defineProperty(__webpack_require__, \"p\", {\n \t get: function () {\n \treturn \"elc-service-bus/\";\n \t }\n \t})\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","!function(e,n){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=n();else if(\"function\"==typeof define&&define.amd)define([],n);else{var t=n();for(var r in t)(\"object\"==typeof exports?exports:e)[r]=t[r]}}(window,(function(){return function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&n&&\"string\"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p=\"elc-logging/\",t(t.s=\"./src/index.ts\")}({\"../../node_modules/process/browser.js\":function(e,n){var t,r,o=e.exports={};function s(){throw new Error(\"setTimeout has not been defined\")}function i(){throw new Error(\"clearTimeout has not been defined\")}function u(e){if(t===setTimeout)return setTimeout(e,0);if((t===s||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}function c(e){if(r===clearTimeout)return clearTimeout(e);if((r===i||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{return r(e)}catch(n){try{return r.call(null,e)}catch(n){return r.call(this,e)}}}!function(){try{t=\"function\"==typeof setTimeout?setTimeout:s}catch(e){t=s}try{r=\"function\"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}}();var a,f=[],l=!1,g=-1;function d(){l&&a&&(l=!1,a.length?f=a.concat(f):g=-1,f.length&&m())}function m(){if(!l){var e=u(d);l=!0;for(var n=f.length;n;){for(a=f,f=[];++g1)for(var t=1;t=31||\"undefined\"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/))}function s(n){if(n[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+n[0]+(this.useColors?\"%c \":\" \")+\"+\"+e.exports.humanize(this.diff),!this.useColors)return;const t=\"color: \"+this.color;n.splice(1,0,t,\"color: inherit\");let r=0,o=0;n[0].replace(/%[a-zA-Z%]/g,e=>{\"%%\"!==e&&(r++,\"%c\"===e&&(o=r))}),n.splice(o,0,t)}function i(e){try{e?n.storage.setItem(\"debug\",e):n.storage.removeItem(\"debug\")}catch(e){}}function u(){let e;try{e=n.storage.getItem(\"debug\")}catch(e){}return!e&&void 0!==r&&\"env\"in r&&(e=Object({BROWSER:!0,NODE_ENV:\"production\"}).DEBUG),e}function c(){try{return localStorage}catch(e){}}n.formatArgs=s,n.save=i,n.load=u,n.useColors=o,n.storage=c(),n.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"],n.log=console.debug||console.log||(()=>{}),e.exports=t(\"./node_modules/debug/src/common.js\")(n);const{formatters:a}=e.exports;a.j=function(e){try{return JSON.stringify(e)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}}).call(this,t(\"../../node_modules/process/browser.js\"))},\"./node_modules/debug/src/common.js\":function(e,n,t){function r(e){function n(e){let n=0;for(let t=0;t{if(\"%%\"===n)return n;u++;const s=r.formatters[t];if(\"function\"==typeof s){const t=e[u];n=s.call(o,t),e.splice(u,1),u--}return n}),r.formatArgs.call(o,e);(o.log||r.log).apply(o,e)}return t.namespace=e,t.enabled=r.enabled(e),t.useColors=r.useColors(),t.color=r.selectColor(e),t.destroy=o,t.extend=s,\"function\"==typeof r.init&&r.init(t),r.instances.push(t),t}function o(){const e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}function s(e,n){const t=r(this.namespace+(void 0===n?\":\":n)+e);return t.log=this.log,t}function i(e){let n;r.save(e),r.names=[],r.skips=[];const t=(\"string\"==typeof e?e:\"\").split(/[\\s,]+/),o=t.length;for(n=0;n\"-\"+e)].join(\",\");return r.enable(\"\"),e}function c(e){if(\"*\"===e[e.length-1])return!0;let n,t;for(n=0,t=r.skips.length;n{r[n]=e[n]}),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=n,r.enable(r.load()),r}e.exports=r},\"./node_modules/ms/index.js\":function(e,n){var t=1e3,r=60*t,o=60*r,s=24*o,i=7*s,u=365.25*s;function c(e){if(!((e=String(e)).length>100)){var n=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(n){var c=parseFloat(n[1]);switch((n[2]||\"ms\").toLowerCase()){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return c*u;case\"weeks\":case\"week\":case\"w\":return c*i;case\"days\":case\"day\":case\"d\":return c*s;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return c*o;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return c*r;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return c*t;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return c;default:return}}}}function a(e){var n=Math.abs(e);return n>=s?Math.round(e/s)+\"d\":n>=o?Math.round(e/o)+\"h\":n>=r?Math.round(e/r)+\"m\":n>=t?Math.round(e/t)+\"s\":e+\"ms\"}function f(e){var n=Math.abs(e);return n>=s?l(e,n,s,\"day\"):n>=o?l(e,n,o,\"hour\"):n>=r?l(e,n,r,\"minute\"):n>=t?l(e,n,t,\"second\"):e+\" ms\"}function l(e,n,t,r){var o=n>=1.5*t;return Math.round(e/t)+\" \"+r+(o?\"s\":\"\")}e.exports=function(e,n){n=n||{};var t=typeof e;if(\"string\"===t&&e.length>0)return c(e);if(\"number\"===t&&isFinite(e))return n.long?f(e):a(e);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(e))}},\"./src/index.ts\":function(e,n,t){\"use strict\";t.r(n);var r=t(\"./node_modules/debug/src/browser.js\");function o(e,n){if(!(e instanceof n))throw new TypeError(\"Cannot call a class as a function\")}var s=function e(n){var t=this;o(this,e),this.error=function(e){t.errorDebugger&&t.errorDebugger(t.enhanceLogData(e))},this.info=function(e){t.infoDebugger&&t.infoDebugger(t.enhanceLogData(e))},this.warning=function(e){t.warningDebugger&&t.warningDebugger(t.enhanceLogData(e))},this.event=function(e){t.eventDebugger&&t.eventDebugger(t.enhanceLogData(e))},this.query=function(e){t.queryDebugger&&t.queryDebugger(t.enhanceLogData(e))},this.command=function(e){t.commandDebugger&&t.commandDebugger(t.enhanceLogData(e))},this.enhanceLogData=function(e){return Object.assign(Object.assign({},e),{triggerSource:t.serviceName,date:(new Date).toUTCString()})};var s=Object(r.debug)(n);this.serviceName=n,s.enabled&&(this.errorDebugger=s.extend(\"error\"),this.infoDebugger=s.extend(\"info\"),this.warningDebugger=s.extend(\"warning\"),this.eventDebugger=s.extend(\"event\"),this.queryDebugger=s.extend(\"query\"),this.commandDebugger=s.extend(\"command\"))},i=new s(\"service-bus\"),u=function(e){return{beforeEventListenerRegister:function(e,n,t){i.event({triggerType:e,message:\"beforeEventListenerRegister\"}),t(e,n)},beforeEmit:function(e,n,t){i.event({triggerType:e,payload:n,message:\"beforeEmit\"}),t(e,n)},afterEmit:function(e,n){i.event({triggerType:e,payload:n,message:\"afterEmit\"})},beforeQueryRegister:function(e,n,t,r){i.query({triggerType:e,message:\"beforeQueryRegister\"}),r&&r(e,n,t)},beforeQuery:function(e,n,t){return i.query({triggerType:e,payload:n,message:\"beforeQuery\"}),t(e,n)},afterQuery:function(e,n){i.query({triggerType:e,payload:n,message:\"afterQuery\"})}}};t.d(n,\"ServiceBusLogHook\",(function(){return u})),t.d(n,\"ELCLogger\",(function(){return s}))}})}));\n//# sourceMappingURL=bundle.js.map","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceBus } from 'elc-service-bus';\nimport { LoadableComponent } from '@loadable/component';\n\nexport const SERVICE_VIEW_CLASSNAME = 'elc-service-view-renderer';\nexport const SERVICE_VIEW_RENDERED_ATTRIBUTE = 'data-rendered-view';\nexport const MOBILE_VERSION_SELECTOR = 'js-mobile-version';\nexport const DESKTOP_VERSION_SELECTOR = 'js-desktop-version';\n\nexport type RegisteredComponent = () => Promise<{\n ['default']: React.ComponentType;\n}>;\n\nexport interface IComponent {\n componentName: string;\n component: LoadableComponent;\n viewController?(): IComponentViewController;\n}\n\nexport interface IComponentRegistry {\n [key: string]: IComponent;\n}\nexport interface ICachedComponentsRegistry {\n [key: string]: React.ComponentType;\n}\n\ninterface IObjectOfStrings {\n [key: string]: string;\n}\n\ninterface IServiceBusTopics {\n commands: IObjectOfStrings;\n events: IObjectOfStrings;\n queries: IObjectOfStrings;\n}\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 IServiceRegistryComponent {\n isLazy?: boolean;\n views?: string[];\n events?: string[];\n queries?: string[];\n name: string;\n version: string;\n isStarted: boolean;\n serviceBusController?: any;\n componentsRegistry: IComponentRegistry;\n cachedComponentsRegistry: ICachedComponentsRegistry;\n serviceInitializer: any;\n start(appConfig: any): Promise;\n register?(): void;\n getView(componentName: string): IComponent | undefined;\n setViewInCache(componentName: string, component: React.ComponentType): void;\n getViewFromCache(componentName: string): React.ComponentType;\n registerView(\n componentName: string,\n component: RegisteredComponent,\n viewController?: () => object\n ): void;\n}\n\ninterface IServiceRegistry {\n [key: string]: IServiceRegistryComponent;\n}\ninterface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n}\n\ninterface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\ninterface IRequestOptions {\n debounceInterval?: number;\n}\nexport type HeaderType = 'Business-Unit' | 'Authorization' | 'AuthorizationToken' | 'ClientId';\nexport type HeaderObject = { [key in HeaderType]?: string };\nexport type IHeaderSetter = () => Promise;\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 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\ninterface IDrupalSite {\n translations?: any;\n trackingDataLayer?: any;\n}\n\ninterface IComponentRenderer {\n init(initialMarkup?: string): void;\n}\n\ntype IObjectLike = { [key: string]: any } | null;\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 ComponentRenderer: IComponentRenderer;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n versions: IObjectOfStrings;\n getServiceVersions(): void;\n __ssr: boolean;\n }\n }\n\n // Augment Browser `window`\n interface Window {\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 registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n versions: IObjectOfStrings;\n getServiceVersions(): void;\n __ssr: boolean;\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 utag: IUtag;\n location: Location;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\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 =\n (isWebRendered && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n window;\n","module.exports = {\"name\":\"elc-service-bus\",\"version\":\"1.36.1\",\"description\":\"elc-service-bus component\",\"main\":\"./build/bundle.js\",\"types\":\"./typings/src/index.d.ts\",\"repository\":{\"type\":\"git\",\"url\":\"https://bitbucket.esteeonline.com/projects/STARDUST/repos/fe-elc-service-bus.git\"},\"scripts\":{\"test\":\"scripts test\",\"test:ci\":\"scripts test:ci\",\"build\":\"scripts build\",\"build:prod\":\"scripts build:prod\",\"eslint\":\"scripts eslint\",\"eslint:ci\":\"scripts eslint:ci\",\"stylelint\":\"scripts stylelint\",\"stylelint:ci\":\"scripts stylelint:ci\",\"prettier\":\"scripts prettier\",\"bundler:analyzer\":\"scripts bundler:analyzer\",\"cz\":\"npm run prettyquick && git add -A && scripts cz\",\"release\":\"npm run build:prod\",\"version:snapshot\":\"scripts version:snapshot > versions.txt\",\"danger\":\"scripts danger\",\"danger:ci\":\"scripts danger:ci\",\"pr\":\"yarn run build:prod && yarn run test:ci && yarn run stylelint:ci && yarn run danger:ci && yarn run sonarqube\",\"prettyquick\":\"pretty-quick\",\"sonarqube\":\"scripts sonarqube\"},\"author\":\"Softvision\",\"license\":\"Commercial\",\"dependencies\":{\"elc-logging\":\"^1.0.16\",\"elc-universal-utils\":\"^3.0.11\"},\"devDependencies\":{\"cross-env\":\"^5.0.1\",\"elc-scripts\":\"^1.23.0\",\"elc-service\":\"^5.0.30\",\"elc-service-bus\":\"^1.31.0\",\"mobx\":\"4.3.0\",\"mobx-react\":\"^6.2.5\",\"styled-components\":\"^3.3.2\",\"webpack\":\"4.23.1\"},\"config\":{\"cz-customizable\":{\"config\":\"node_modules/elc-scripts/config/commitizen/commitizen.config.js\"}},\"jestSonar\":{\"reportPath\":\"reports\",\"reportFile\":\"test-reporter.xml\",\"indent\":4},\"module\":\"./src/index.ts\"}","export const SERVICE_STARTED = 'service.started';\nexport const NAVIGATE = 'navigate';\nexport const SESSION_EXPIRED = 'session.expired';\nexport const NAVIGATE_EXTERNAL_URL = 'navigate.external.url';\nexport const OUTBOUND_CLICKED = 'outbound.clicked';\nexport const PRODUCT_OUT_OF_STOCK = 'product.out.of.stock';\nexport const ORDER_PAYMENT_CONFIRMED = 'order.payment.confirmed';\nexport const GUEST_ORDER_PAYMENT_CONFIRMED = 'guest.order.payment.confirmed';\nexport const REQUEST_LOGIN_AND_ASSOCIATE_ORDER = 'request.login.associate.order';\nexport const HOME_PAGE_LOADED = 'home.page.loaded';\nexport const NAVIGATE_APPT_BOOKING_REQUESTED = 'navigate.appt_booking.requested';\nexport const NAVIGATE_STORES_REQUESTED = 'mavigate.stores.requested';\n\nexport interface INavigate {\n currentRoute: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record | undefined;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n queryParams: Record | undefined;\n}\n\nexport interface IOrderPaymentConfirmedPayload {\n orderId: string;\n}\n\nexport interface IGuestOrderPaymentConfirmedPayload {\n orderId: string;\n guestToken: string;\n}\n\nexport interface IRequestLoginAndAssociateOrderEventData {\n orderId: string;\n guestToken: string;\n}\n\nexport interface IRequestNavigateApptBookingPayload {\n counterId?: string;\n}\n\nexport interface IServiceStarted {\n serviceName: string;\n}\n\nexport type ServiceElcEcommEvents = {\n [SERVICE_STARTED]: IServiceStarted;\n [NAVIGATE]: INavigate;\n [SESSION_EXPIRED]: undefined;\n [NAVIGATE_EXTERNAL_URL]: string;\n [OUTBOUND_CLICKED]: string;\n [PRODUCT_OUT_OF_STOCK]: undefined;\n [ORDER_PAYMENT_CONFIRMED]: IOrderPaymentConfirmedPayload;\n [GUEST_ORDER_PAYMENT_CONFIRMED]: IGuestOrderPaymentConfirmedPayload;\n [REQUEST_LOGIN_AND_ASSOCIATE_ORDER]: IRequestLoginAndAssociateOrderEventData;\n [HOME_PAGE_LOADED]: undefined;\n [NAVIGATE_APPT_BOOKING_REQUESTED]: IRequestNavigateApptBookingPayload;\n [NAVIGATE_STORES_REQUESTED]: undefined;\n};\n","export const TRANSACTION_FAILED = 'transaction.failed';\nexport const TRANSACTION_SUCCEDED = 'transaction.succeded';\nexport const SHIPPING_SCREEN_FAILURE = 'shipping.screen.failure';\nexport const PAYMENT_STRATEGY_CHANGED = 'payment.strategy.changed';\nexport const PAYMENT_STRATEGY_LOAD = 'payment.strategy.load';\nexport const PAYMENT_STRATEGY_LOAD_DONE = 'payment.strategy.load.done';\nexport const PAYMENT_STRATEGY_SAVE = 'payment.strategy.save';\nexport const PAYMENT_STRATEGY_SAVE_DONE = 'payment.strategy.save.done';\nexport const PAYMENT_STRATEGY_AVAILABILITY_SET = 'payment.strategy.availability.set';\nexport const PAYMENT_SUBMIT_REQUEST = 'payment.submit.request';\n\nenum PaymentStatus {\n AUTHORIZED = 'AUTHORIZED',\n PENDING = 'PENDING',\n REFUSED = 'REFUSED',\n UNKNOWN = 'UNKNOWN'\n}\n\ninterface IPaymentStrategyDetails {\n providerId: string;\n methodId: string;\n}\n\nexport interface ITransactionSuccededPayload {\n orderId: string;\n guestToken: string;\n paymentType: string;\n orderNumber: string;\n amount: number;\n info: string;\n tokenId?: string;\n status: PaymentStatus;\n paymentUrl: string | null;\n}\n\n/**\n * Triggered when the user changes the payment strategy.\n */\nexport interface IPaymentStrategyChangedEventData {\n /**\n * The logical name for the payment strategy.\n * If null then no payment strategy has been set.\n */\n name: string | null;\n\n /**\n * The payment provider id and method id pair used for the strategy\n */\n details: IPaymentStrategyDetails | null;\n\n /**\n * If set, the label for the 'Continue' checkout button.\n */\n continueCheckoutLabel?: string;\n}\n\nexport interface IPaymentStrategyLoadEventData {\n /**\n * The payment strategy name to restore to\n */\n name: string;\n\n /**\n * The load context\n */\n context: string;\n\n /**\n * Data used to restore the payment strategy\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n}\n\nexport interface IPaymentStrategyLoadDoneEventData {\n /**\n * The payment strategy name\n */\n name: string;\n\n /**\n * The context\n */\n context: string;\n\n /**\n * Operation success\n */\n success: boolean;\n}\n\nexport interface IPaymentStrategySaveEventData {\n /**\n * The name of the payment strategy to save\n */\n name: string;\n\n /**\n * The context for the save operation\n */\n context: string;\n}\n\nexport interface IPaymentStrategySaveDoneEventData {\n /**\n * Payment strategy name\n */\n name: string;\n\n /**\n * Serialized data or null in case of failure\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n data: any;\n\n /**\n * Operation context\n */\n context: string;\n\n /**\n * Operation success\n */\n success: boolean;\n}\n\nexport interface IPaymentSourceAvailability {\n name: string;\n enabled: boolean;\n}\n\nexport interface IPaymentStrategyAvailabilitySetEventData {\n paymentSources: IPaymentSourceAvailability[];\n}\n\nexport type ServicePaymentEvents = {\n [TRANSACTION_FAILED]: {};\n [TRANSACTION_SUCCEDED]: ITransactionSuccededPayload;\n [SHIPPING_SCREEN_FAILURE]: undefined;\n [PAYMENT_STRATEGY_CHANGED]: IPaymentStrategyChangedEventData;\n [PAYMENT_STRATEGY_LOAD]: IPaymentStrategyLoadEventData;\n [PAYMENT_STRATEGY_LOAD_DONE]: IPaymentStrategyLoadDoneEventData;\n [PAYMENT_STRATEGY_SAVE]: IPaymentStrategySaveEventData;\n [PAYMENT_STRATEGY_SAVE_DONE]: IPaymentStrategySaveDoneEventData;\n [PAYMENT_STRATEGY_AVAILABILITY_SET]: IPaymentStrategyAvailabilitySetEventData;\n [PAYMENT_SUBMIT_REQUEST]: undefined;\n};\n","export const STORE_LOCATION_SELECTED = 'store.location.selected';\nexport const STORE_TOWN_SELECTED = 'store.town.selected';\nexport const APPOINTMENT_BOOKED = 'appointment.booked';\n\nexport interface IStoreLocationSelectionData {\n storeId?: string;\n}\n\nexport interface IStoreTownSelectionData {\n town?: string;\n}\n\nexport interface IAppointmentBookedData {\n email: string;\n source: string;\n}\n\nexport type ServiceAppointmentBookingEvents = {\n [STORE_LOCATION_SELECTED]: IStoreLocationSelectionData | void;\n [STORE_TOWN_SELECTED]: IStoreTownSelectionData | void;\n [APPOINTMENT_BOOKED]: IAppointmentBookedData;\n};\n","import { ICart, IOfferMessage } from './CartInterfaces';\n\nexport const CART_BADGE_CLICKED = 'cart.badge.clicked';\nexport const MOBILE_CART_BADGE_CLICKED = 'mobile.cart.badge.clicked';\nexport const CART_SAMPLES_SET = 'cart.samples.set';\nexport const CART_UPDATED = 'cart.updated';\nexport const CART_VIEWED = 'cart.viewed';\nexport const CART_FAILURE = 'cart.failure';\nexport const SHIPPING_OPTION_SELECTED = 'shipping.option.selected';\nexport const EDIT_ADDRESS_CLICKED = 'edit.address.clicked';\nexport const CONTINUE_AS_GUEST_CLICKED = 'continue.as.guest.clicked';\nexport const GUEST_DESELECTED = 'guest.deselected';\nexport const CART_PAGE_VIEW = 'cart.page.view';\nexport const CART_PRODUCT_SKU_LIMIT_REACHED = 'cart.product.sku.limit.reached';\nexport const SHOPPING_BAG_BUTTON_CLICKED = 'shoppingbag.button.clicked';\nexport const MANUAL_OFFER_CODE_APPLIED = 'checkout.manualOfferCodeApplied';\nexport const REMOVE_ITEM = 'checkout.removeItem';\nexport const ITEM_ADDED = 'item.added';\nexport const REVIEW_SCREEN_SUBMITTING = 'review.screen.submitting';\nexport const SAVE_FOR_LATER_REMOVE = 'saveforlater.removeItem';\nexport const CART_LOGGED_IN = 'cart.logged.in';\nexport const SAMPLE_ADDED = 'sample.added';\nexport const CHANGE_LOCATION = 'change.location';\nexport const OFFER_CODE_FAILED = 'offer.code.failed';\nexport const NOT_ENOUGH_PRODUCTS = 'not.enough.products';\nexport const CART_PAYMENT_SOURCES_SET = 'cart.payment.methods.set';\n\nexport interface IContinueAsGuestEvent {\n source: string;\n email: string;\n}\n\nexport interface IGuestDeselectedEvent {\n guestEmail: string;\n}\n\nexport interface ILimitReachedEventData {\n itemMaxQuantity: number;\n}\n\nexport interface IRemoveItemEvent {\n skuId: string;\n}\n\nexport interface IAddItemEvent {\n skuId: string;\n quantity: number;\n}\n\nexport interface IRemoveSaveForLaterEvent {\n skuId: string;\n quantity: number;\n}\n\nexport interface IChangeLocation {\n redirectUrl: string;\n}\n\nexport interface ISamplesSetEvent {\n skuIds: string[];\n offerCode: string;\n offerType: string;\n}\n\nexport interface IPaymentMethodDescription {\n providerId: string;\n methodId: string;\n}\n\nexport interface ICartPaymentMethodsSetEventData {\n paymentSources: IPaymentMethodDescription[];\n}\n\nexport type ServiceCartEvents = {\n [CART_BADGE_CLICKED]: undefined;\n [MOBILE_CART_BADGE_CLICKED]: undefined;\n [CART_UPDATED]: ICart;\n [CART_VIEWED]: undefined;\n [CART_FAILURE]: ICart;\n [SHIPPING_OPTION_SELECTED]: undefined;\n [EDIT_ADDRESS_CLICKED]: undefined;\n [CONTINUE_AS_GUEST_CLICKED]: IContinueAsGuestEvent;\n [GUEST_DESELECTED]: IGuestDeselectedEvent;\n [CART_PAGE_VIEW]: undefined;\n [CART_PRODUCT_SKU_LIMIT_REACHED]: ILimitReachedEventData;\n [SHOPPING_BAG_BUTTON_CLICKED]: undefined;\n [MANUAL_OFFER_CODE_APPLIED]: undefined;\n [REMOVE_ITEM]: IRemoveItemEvent;\n [ITEM_ADDED]: IAddItemEvent;\n [REVIEW_SCREEN_SUBMITTING]: undefined;\n [SAVE_FOR_LATER_REMOVE]: IRemoveSaveForLaterEvent;\n [CART_LOGGED_IN]: undefined;\n [SAMPLE_ADDED]: undefined;\n [CHANGE_LOCATION]: IChangeLocation;\n // an undefined payload can occur on any network error or 500 codes\n [OFFER_CODE_FAILED]: IOfferMessage | undefined;\n [NOT_ENOUGH_PRODUCTS]: undefined;\n [CART_SAMPLES_SET]: ISamplesSetEvent;\n [CART_PAYMENT_SOURCES_SET]: ICartPaymentMethodsSetEventData;\n};\n","export const PAYMENT_SUBMITTING = 'payment.submitting';\nexport const SHIPPING_SCREEN_SUBMITTING = 'shipping.screen.submitting';\nexport const BACK_HEADER_CLICKED = 'back.header.clicked';\nexport const EXTERNAL_PAYMENT_ERROR_RESTORE_PROCESSED = 'external.payment.error.restore.processed';\nexport const CHECKOUT_SESSION_SAVED = 'checkout.session.saved';\n\nexport interface IPaymentSubmitting {\n orderId: string;\n orderNumber: string;\n guestToken: string;\n amount: number;\n billingAddress: IAddress;\n}\n\nexport interface IAddress {\n addressMetadataId: string;\n attributes: {\n [key: string]: string;\n };\n}\n\nexport interface IExternalPaymentErrorRestoreProcessedEventData {\n success: boolean;\n}\n\nexport type ServiceCheckoutEvents = {\n [PAYMENT_SUBMITTING]: IPaymentSubmitting;\n [SHIPPING_SCREEN_SUBMITTING]: undefined;\n [BACK_HEADER_CLICKED]: undefined;\n [EXTERNAL_PAYMENT_ERROR_RESTORE_PROCESSED]: IExternalPaymentErrorRestoreProcessedEventData;\n [CHECKOUT_SESSION_SAVED]: undefined;\n};\n","export const SUBSCRIBED_FOR_EMAILS = 'subscribed.for.emails';\nexport const PRODUCT_NOTIFY_ME_REQUEST = 'product_notify.request';\nexport const PRODUCT_NOTIFY_ME_REQUEST_SUCCESS = 'product_notify.request.success';\nexport const PRODUCT_NOTIFY_ME_REQUEST_FAILURE = 'product_notify.request.failure';\nexport const PRODUCT_NOTIFY_ME_TRIGGERED = 'product_notify.triggered';\n\nexport interface IProductNotifyMeTriggered {\n skuId: string;\n skuBaseId: string;\n}\n\nexport interface IProductNotifyMeRequestData {\n context?: string;\n skuId: string;\n skuBaseId: string;\n email: string;\n subscriptionType: string;\n}\n\n//eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface IProductNotifyMeRequestSuccessData extends IProductNotifyMeRequestData {}\n\nexport interface IProductNotifyMeRequestFailureData extends IProductNotifyMeRequestData {\n error?: string;\n}\n\nexport type ServiceCommunicationsEvents = {\n [SUBSCRIBED_FOR_EMAILS]: undefined;\n [PRODUCT_NOTIFY_ME_REQUEST]: IProductNotifyMeRequestData;\n [PRODUCT_NOTIFY_ME_REQUEST_SUCCESS]: IProductNotifyMeRequestSuccessData;\n [PRODUCT_NOTIFY_ME_REQUEST_FAILURE]: IProductNotifyMeRequestFailureData;\n [PRODUCT_NOTIFY_ME_TRIGGERED]: IProductNotifyMeTriggered;\n};\n","export const FORGOT_PASSWORD_SIGNIN_CLICK = 'forgot.password.signin.click';\nexport const PASSWORD_RESET = 'password.reset';\n\nexport type ServiceForgotPasswordEvents = {\n [FORGOT_PASSWORD_SIGNIN_CLICK]: undefined;\n [PASSWORD_RESET]: undefined;\n};\n","import { IOfferMessage } from './CartInterfaces';\n\nexport const OFFERS_LOADED = 'offers.loaded';\nexport const APPLY_OFFER_CODE = 'apply.offer.code';\nexport const OFFER_CODE_SUCCEDED = 'offer.code.succeded';\n\nexport interface IMessage {\n readonly threshold: string | null;\n readonly deferred: string | null;\n readonly success: string | null;\n readonly error: string | null;\n}\n\nexport type ServiceOffersEvents = {\n [OFFERS_LOADED]: IOfferMessage[];\n [APPLY_OFFER_CODE]: string;\n [OFFER_CODE_SUCCEDED]: {};\n};\n","export const ORDER_HISTORY_REDIRECT = 'order.history.redirect';\nexport const ORDER_DETAILS_CLICKED = 'order.details.clicked';\nexport const ORDER_HISTORY_NO_ORDERS_LINK_CLICK = 'order.history.no.orders.link.click';\nexport type ServiceOrderHistoryEvents = {\n [ORDER_HISTORY_REDIRECT]: undefined;\n [ORDER_DETAILS_CLICKED]: string;\n [ORDER_HISTORY_NO_ORDERS_LINK_CLICK]: undefined;\n};\n","export const ORDER_CREATED = 'order.created';\nexport const ORDER_CONFLICT = 'order.conflict';\nexport const ORDER_FAILED = 'order.failed';\nexport const ORDER_CONFIRMATION_VIEW = 'order.confirmation.page.landed';\nexport const ROUTE_NOT_FOUND = 'route.not.found';\nexport const ORDER_CHECK = 'order.check';\nexport const ORDER_ASSOCIATE = 'order.associate';\nexport const ORDER_ASSOCIATE_SUCCESS = 'order.associate.success';\nexport const ORDER_ASSOCIATE_FAILURE = 'order.associate.failure';\n\nexport interface IOrderAddress {\n addressMetadataId: string;\n attributes: {\n [key: string]: string;\n };\n}\n\nexport interface IOrderCreated {\n id: string;\n amount: number;\n token: string;\n\n billingAddress: IOrderAddress;\n shippingAddresses: IOrderAddress[];\n}\n\nexport type orderErrorCodeType = '402' | '409' | '';\n\nexport interface IOrderConflict {\n message: orderErrorCodeType;\n}\n\nexport interface IOrderCheckEventData {\n orderId: string;\n}\n\nexport interface IOrderDetail {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\nexport interface IOrderAssociateEventData {\n orderId: string;\n guestToken: string;\n}\n\nexport type ServiceOrderEvents = {\n [ORDER_CREATED]: IOrderCreated;\n [ORDER_CONFLICT]: IOrderConflict;\n [ORDER_FAILED]: IOrderDetail;\n [ORDER_CONFIRMATION_VIEW]: IOrderDetail;\n [ROUTE_NOT_FOUND]: undefined;\n [ORDER_CHECK]: IOrderCheckEventData;\n [ORDER_ASSOCIATE]: IOrderAssociateEventData;\n [ORDER_ASSOCIATE_SUCCESS]: IOrderAssociateEventData;\n [ORDER_ASSOCIATE_FAILURE]: IOrderAssociateEventData;\n};\n","export const PASSWORD_WITH_STRENGTH_CHANGED = 'password.with.strength.changed';\n\nexport interface IPasswordWithStrengthEvent {\n password: string;\n}\nexport type ServicePasswordStrengthEvents = {\n [PASSWORD_WITH_STRENGTH_CHANGED]: IPasswordWithStrengthEvent;\n};\n","export const MPP_PAGE_VIEWED = 'mpp.page.viewed';\nexport const SPP_PAGE_VIEWED = 'spp.page.viewed';\nexport const PRODUCT_FULL_LOADED = 'product.full.loaded';\nexport const SPP_POWER_REVIEWS_INIT = 'spp.powerReviews.init';\nexport const READ_REVIEWS_LINK_CLICKED = 'read.reviews.link.clicked';\nexport const WRITE_REVIEWS_LINK_CLICKED = 'write.reviews.link.clicked';\nexport const MPP_FILTERED = 'mpp.filtered';\nexport const GRID_SORTED = 'grid.sorted';\nexport const GRID_FILTERED = 'grid.filtered';\nexport const PRODUCT_LOADED = 'product.loaded';\nexport const PRODUCT_VIEWED = 'product.viewed';\nexport const PRODUCT_CLICKED = 'product.clicked';\nexport const PRODUCTS_FILTERED_AND_SORTED = 'product.filteredAndSorted';\nexport const SPP_PAGE_LOADED = 'spp.page.loaded';\nexport const SPP_SELECTION = 'spp.shade.size.selected';\nexport const PRODUCT_SHADE_SIZE_SELECTED = 'product.shadeSizeSelected';\nexport const QUICK_VIEW_TRIGGERED = 'quick.view.triggered';\nexport const SKU_ENGRAVING_TRIGGERED = 'sku.engraving.triggered';\nexport const PRODUCT_SHADE_SELECTED = 'product.shadeSelected';\nexport const ADD_SKU_TO_COLLECTION_TRIGGERED = 'sku.addToCollection';\nexport const PRODUCT_INFO_POPUP_CTA_CLICKED = 'product.infoPopupCtaClicked';\n\nenum FILTER_METHODS {\n filter = 'filter',\n sort = 'sort'\n}\n\nexport interface IAppliedFilter {\n category: string;\n option: string;\n}\n\nexport interface IMPPPageViewedEvent {\n skuIds: string[];\n}\ninterface IProductFullLoaded {\n productId: string;\n skuId: string;\n}\n\nexport interface IMppFiltered {\n method: FILTER_METHODS;\n}\nexport interface IGridFitlered {\n appliedFilters: IAppliedFilter[];\n}\n\nexport interface IGridSorted {\n appliedSort: string;\n}\n\nexport interface IProductInfoPopupPayload {\n dataField: string;\n level?: string;\n header?: string;\n}\n\nexport interface ISkuEngravingEvent {\n skuId: string;\n skuBaseId?: number;\n size: string;\n price: string;\n name: string;\n}\nexport type ServiceProdcatEvents = {\n [MPP_PAGE_VIEWED]: IMPPPageViewedEvent;\n [SPP_PAGE_VIEWED]: string;\n [PRODUCT_FULL_LOADED]: IProductFullLoaded;\n [SPP_POWER_REVIEWS_INIT]: string;\n [READ_REVIEWS_LINK_CLICKED]: { productId: string; displayName: string };\n [WRITE_REVIEWS_LINK_CLICKED]: { productId: string; displayName: string };\n [MPP_FILTERED]: IMppFiltered;\n [GRID_SORTED]: IGridSorted;\n [GRID_FILTERED]: IGridFitlered;\n [PRODUCT_LOADED]: string[];\n [PRODUCT_VIEWED]: { skuId: string };\n [PRODUCT_CLICKED]: { skuId: string; positionIndex: number };\n [PRODUCTS_FILTERED_AND_SORTED]: {};\n [SPP_PAGE_LOADED]: {};\n [SPP_SELECTION]: {};\n [PRODUCT_SHADE_SIZE_SELECTED]: {};\n [QUICK_VIEW_TRIGGERED]: { skuId: string; positionIndex: number };\n [SKU_ENGRAVING_TRIGGERED]: ISkuEngravingEvent;\n [PRODUCT_SHADE_SELECTED]: { skuId: string };\n [ADD_SKU_TO_COLLECTION_TRIGGERED]: { skuId: string; quantity?: number };\n [PRODUCT_INFO_POPUP_CTA_CLICKED]: IProductInfoPopupPayload;\n};\n","export const SAVE_FOR_LATER_ADD_BACK_TO_CART = 'saveforlater.addItemBack';\nexport const SAVE_FOR_LATER_UPDATE_FAILED = 'saveforlater.updateFailed';\nexport interface ISaveForLaterAddBackToCart {\n skuId: string;\n quantity: number;\n}\n\nexport type ServiceSaveForLaterEvents = {\n [SAVE_FOR_LATER_ADD_BACK_TO_CART]: ISaveForLaterAddBackToCart;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [SAVE_FOR_LATER_UPDATE_FAILED]: Record;\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","export const SEARCH_PRODUCTS_QUERIED = 'search.products.queried';\nexport const SEARCH_TERM_SELECTED = 'search.term.selected';\n\nexport interface ISearchProductsQueried {\n searchTerm: string;\n searchType?: string;\n skuIds?: string[];\n}\n\nexport interface ISearchTermSelected {\n searchTerm: string;\n}\n\nexport type ServiceSearchEvents = {\n [SEARCH_PRODUCTS_QUERIED]: ISearchProductsQueried;\n [SEARCH_TERM_SELECTED]: ISearchTermSelected;\n};\n","export const AUTH_ATTEMPT = 'authentication.attempt';\nexport const AUTH_FAILED = 'authentication.failed';\nexport const AUTH_SUCCEDED = 'authentication.succeded';\nexport const FORGOT_PASSWORD_LINK_CLICK = 'forgot.password.link.click';\nexport const SIGNED_OUT = 'authentication.signed-out';\nexport const UNAUTHORIZED_REQUEST = 'app.elc-unauthorized-request';\nexport const SIGN_UP_LINK_CLICKED = 'sign.up.link.clicked';\n\nexport interface IAuthSession {\n token: string;\n source: string;\n email: string;\n}\nexport interface IPayloadSignUpClick {\n urlRedirectOnSuccess?: string;\n}\nexport type ServiceSignInEvents = {\n [AUTH_ATTEMPT]: undefined;\n [AUTH_FAILED]: string;\n [AUTH_SUCCEDED]: IAuthSession | {};\n [FORGOT_PASSWORD_LINK_CLICK]: undefined;\n [SIGNED_OUT]: undefined;\n [UNAUTHORIZED_REQUEST]: undefined;\n [SIGN_UP_LINK_CLICKED]: IPayloadSignUpClick | void;\n};\n","export const CREATE_ACCOUNT_ATTEMPT = 'create.account.attempt';\nexport const CREATE_ACCOUNT_FAIL = 'create.account.fail';\nexport const CHANGE_EMAIL_LINK_CLICKED = 'change.email.link.clicked';\nexport const REGISTRATION_CONFIRMED = 'registration.confirmed';\nexport const SIGN_IN_LINK_CLICKED = 'sign.in.link.clicked';\n\nexport interface IPayloadSignInClick {\n urlRedirectOnSuccess?: string;\n}\nexport type ServiceSignUpEvents = {\n [CREATE_ACCOUNT_ATTEMPT]: {};\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [CREATE_ACCOUNT_FAIL]: any;\n [CHANGE_EMAIL_LINK_CLICKED]: undefined;\n [REGISTRATION_CONFIRMED]: undefined;\n [SIGN_IN_LINK_CLICKED]: IPayloadSignInClick | void;\n};\n","export const BOOK_APPOINTMENT_CLICKED = 'book.appointment.clicked';\nexport const GET_DIRECTIONS_CLICKED = 'get.directions.clicked';\nexport const SEARCH_ADDRESS_SUBMITTED = 'search.address.submited';\nexport const STORE_DETAILS_CLICKED = 'store.detail.clicked';\nexport const STORE_INFO_CLICKED = 'store.info.clicked';\nexport const STORE_MARKER_CLICKED = 'store.marker.clicked';\nexport const STORE_PHONE_CLICKED = 'store.phone.clicked';\n\nexport interface IStoreData {\n storeId?: string;\n storeName?: string | undefined;\n}\n\nexport interface ISearchAddress {\n address?: string | undefined;\n}\n\nexport type ServiceStoresEvents = {\n [BOOK_APPOINTMENT_CLICKED]: IStoreData | void;\n [GET_DIRECTIONS_CLICKED]: IStoreData | void;\n [SEARCH_ADDRESS_SUBMITTED]: ISearchAddress;\n [STORE_DETAILS_CLICKED]: IStoreData | void;\n [STORE_INFO_CLICKED]: IStoreData | void;\n [STORE_MARKER_CLICKED]: IStoreData | void;\n [STORE_PHONE_CLICKED]: IStoreData | void;\n};\n","export const SHIPPING_ADDRESS_FILLED = 'shipping.address.filled';\nexport const ACCOUNT_SETTINGS_LINK_CLICK = 'account.settings.link.click';\nexport const CREATE_ACCOUNT_SUCCESS = 'create.account.success';\nexport const LOGGED_IN_SUCCESSFUL = 'logged.in.successful';\nexport const USER_LOADED = 'user.loaded';\nexport const GUEST_FORM_VALIDITY_CHANGED = 'guest.form.validity.changed';\nexport const USER_PROFILE_CHANGED = 'user.profile.changed';\nexport const GET_OPTIN_PROFILE_LOAD = 'get.optin.profile.load';\nexport const SIGN_OUT_COMPLETED = 'sign.out.completed';\nexport const ADDRESS_SELECTION_CHANGED = 'address.selection.changed';\nexport const ADDRESS_SELECTION_VALIDITY_CHANGED = 'address.selection.validity.changed';\nexport const ADDRESS_EDIT_CHANGED = 'address.edit.changed';\nexport const ADDRESS_EDIT_VALIDITY_CHANGED = 'address.edit.validity.changed';\nexport const FAVORITES_LOADED = 'user.favorites.loaded';\nexport const FAVORITE_SELECTED = 'user.favorite.selected';\nexport const FAVORITE_STATUS_UPDATED = 'user.favorite.status.updated';\n\nexport interface IAddressAttributes {\n [field: string]: string;\n}\n\nexport interface IAddress {\n id: string;\n isDefault?: boolean;\n addressMetadataId: string;\n attributes: IAddressAttributes;\n}\n\nexport interface IUserProfileChangedEventData {\n email: string;\n}\n\nexport interface IOptionProfileLoadEventData {\n email: string;\n source: string;\n}\n\nexport interface IValidityChangedEventData {\n isValid: boolean;\n}\n\nexport interface IAddressSelectionValidityChangedEventData {\n isValid: boolean;\n context: string;\n}\n\nexport interface IAddressSelectionChangedEventData {\n context: string;\n address: IAddress | null;\n isNew?: boolean;\n}\n\nexport interface IAddressEditChangedEventData {\n context: string;\n address: IAddress;\n}\n\nexport interface IAddressEditValidityChangedEventData {\n context: string;\n isValid: boolean;\n}\n\nexport interface IFavoriteSelectedEventData {\n skuBaseId: number;\n}\n\nexport interface IFavoritesLoadedEventData {\n skuBaseIds: number[];\n}\n\nexport interface IFavoriteStatusUpdatedEventData {\n skuBaseId: number;\n isFavorite?: boolean;\n isAlreadyAdded?: boolean;\n}\n\nexport type ServiceUserProfileEvents = {\n [ACCOUNT_SETTINGS_LINK_CLICK]: undefined;\n [CREATE_ACCOUNT_SUCCESS]: undefined;\n [LOGGED_IN_SUCCESSFUL]: undefined;\n [USER_LOADED]: undefined;\n [GUEST_FORM_VALIDITY_CHANGED]: IValidityChangedEventData;\n [USER_PROFILE_CHANGED]: IUserProfileChangedEventData;\n [SIGN_OUT_COMPLETED]: undefined;\n [GET_OPTIN_PROFILE_LOAD]: IOptionProfileLoadEventData;\n [ADDRESS_SELECTION_CHANGED]: IAddressSelectionChangedEventData;\n [ADDRESS_SELECTION_VALIDITY_CHANGED]: IAddressSelectionValidityChangedEventData;\n [ADDRESS_EDIT_CHANGED]: IAddressEditChangedEventData;\n [ADDRESS_EDIT_VALIDITY_CHANGED]: IAddressEditValidityChangedEventData;\n [FAVORITES_LOADED]: IFavoritesLoadedEventData;\n [FAVORITE_SELECTED]: IFavoriteSelectedEventData;\n [FAVORITE_STATUS_UPDATED]: IFavoriteStatusUpdatedEventData;\n};\n","// TODO: remove this once all sites are on elc-serivce-analytics@3.0\nexport const CONFIG_ANALYTICS = 'config.analytics';\nexport const ANALYTICS_LOADED = 'analytics.loaded';\nexport const ANALYTICS_PRODUCTS_VIEWED = 'analytics.products.viewed';\nexport const ANALYTICS_PRODUCT_VIEWED = 'analytics.product.viewed';\nexport const ANALYTICS_PAGE_VIEWED = 'analytics.page.viewed';\n\nexport interface IConfigAnalytics {\n enabled: boolean;\n}\n\nexport interface IProductsViewed {\n skuIds?: string[];\n productIds?: string[];\n productTags?: string[];\n}\n\nexport interface IProductViewed {\n skuId?: string;\n productId?: string;\n}\n\nexport type ServiceAnalyticsEvents = {\n [CONFIG_ANALYTICS]: IConfigAnalytics;\n [ANALYTICS_LOADED]: undefined;\n [ANALYTICS_PRODUCTS_VIEWED]: IProductsViewed;\n [ANALYTICS_PRODUCT_VIEWED]: IProductViewed;\n [ANALYTICS_PAGE_VIEWED]: undefined;\n};\n","export const VTO_CAMERA_CLOSED = 'vto.cameraClosed';\nexport const VTO_CAMERA_FAILED = 'vto.cameraFailed';\nexport const VTO_CAMERA_OPENED = 'vto.cameraOpened';\nexport const VTO_COMPARE = 'vto.compare';\nexport const VTO_COMPARE_DISABLED = 'vto.compareDisabled';\nexport const VTO_CLOSED = 'vto.closed';\nexport const VTO_ENGINE_CLOSED = 'vto.engineClosed';\nexport const VTO_LOADED = 'vto.loaded';\nexport const VTO_LOADING = 'vto.loading';\nexport const VTO_KISS_DETECTED = 'vto.kissDetected';\nexport const VTO_OPENED = 'vto.opened';\nexport const VTO_PAIR_SHADE_GRID_OPENED = 'vto.pairShadeGridOpened';\nexport const VTO_PAIR_SHADE_SELECTED = 'vto.pairShadeSelected';\nexport const VTO_PHOTO_LOADED = 'vto.photoLoaded';\nexport const VTO_PHOTO_SAVED = 'vto.photoSaved';\nexport const VTO_RESET = 'vto.reset';\nexport const VTO_VIDEO_LOADED = 'vto.videoLoaded';\nexport const VTO_SHADE_FINDER_STARTED = 'vto.shadeFinderStarted';\nexport const VTO_SHADE_FINDER_COMPLETED = 'vto.shadeFinderCompleted';\nexport const VTO_SHADE_FINDER_CANCELLED = 'vto.shadeFinderCancelled';\nexport const VTO_SKIN_SHADE_FOUND = 'vto.skinShadeFound';\nexport const VTO_ZOOM = 'vto.zoom';\nexport const VTO_FOUNDATION_OVERLAY_TOGGLED = 'vto.foundation.overlay.toggled';\n\nexport const VTO_SKIN_CARE_OPENED = 'vto.skin.care.opened';\nexport const VTO_SKIN_CARE_CAMERA_OPENED = 'vto.skin.care.cameraOpened';\nexport const VTO_SKIN_CARE_CAMERA_FAILED = 'vto.skin.care.cameraFailed';\nexport const VTO_SKIN_CARE_CAMERA_CLOSED = 'vto.skin.care.cameraClosed';\nexport const VTO_SKIN_CARE_LOADING = 'vto.skin.care.loading';\nexport const VTO_SKIN_CARE_LOADED = 'vto.skin.care.loaded';\nexport const VTO_SKIN_CARE_VIDEO_LOADED = 'vto.skin.care.videoLoaded';\nexport const VTO_SKIN_ANALYSIS_STARTED = 'vto.skin.care.analysisStarted';\nexport const VTO_SKIN_ANALYSIS_FINISHED = 'vto.skin.care.analysisFinished';\nexport const VTO_SKIN_BACK_TO_DETECTING = 'vto.skin.care.backToDetecting';\nexport const VTO_SKIN_CARE_CLOSED = 'vto.skin.care.closed';\nexport const VTO_SKIN_CARE_RESULT_LOADED = 'vto.skin.care.result.loaded';\n\nexport type ServiceVtoEvents = {\n [VTO_CAMERA_CLOSED]: undefined;\n [VTO_CAMERA_FAILED]: undefined;\n [VTO_CAMERA_OPENED]: undefined;\n [VTO_COMPARE]: undefined;\n [VTO_COMPARE_DISABLED]: undefined;\n [VTO_CLOSED]: undefined;\n [VTO_ENGINE_CLOSED]: undefined;\n [VTO_LOADED]: undefined;\n [VTO_LOADING]: undefined;\n [VTO_KISS_DETECTED]: undefined;\n [VTO_OPENED]: undefined;\n [VTO_PAIR_SHADE_GRID_OPENED]: undefined;\n [VTO_PAIR_SHADE_SELECTED]: undefined;\n [VTO_PHOTO_LOADED]: undefined;\n [VTO_PHOTO_SAVED]: undefined;\n [VTO_RESET]: undefined;\n [VTO_VIDEO_LOADED]: undefined;\n [VTO_SHADE_FINDER_STARTED]: undefined;\n [VTO_SHADE_FINDER_COMPLETED]: undefined;\n [VTO_SHADE_FINDER_CANCELLED]: undefined;\n [VTO_SKIN_SHADE_FOUND]: undefined;\n [VTO_ZOOM]: undefined;\n [VTO_FOUNDATION_OVERLAY_TOGGLED]: { isOverlayOpened: boolean };\n [VTO_SKIN_CARE_OPENED]: undefined;\n [VTO_SKIN_CARE_CAMERA_OPENED]: undefined;\n [VTO_SKIN_CARE_CAMERA_FAILED]: undefined;\n [VTO_SKIN_CARE_CAMERA_CLOSED]: undefined;\n [VTO_SKIN_CARE_LOADING]: undefined;\n [VTO_SKIN_CARE_LOADED]: undefined;\n [VTO_SKIN_CARE_VIDEO_LOADED]: undefined;\n [VTO_SKIN_ANALYSIS_STARTED]: undefined;\n [VTO_SKIN_ANALYSIS_FINISHED]: undefined;\n [VTO_SKIN_BACK_TO_DETECTING]: undefined;\n [VTO_SKIN_CARE_CLOSED]: undefined;\n [VTO_SKIN_CARE_CLOSED]: undefined;\n [VTO_SKIN_CARE_RESULT_LOADED]: undefined;\n};\n","export const REVIEWS_HELPFUL_YES_CLICKED = 'reviews.helpful.yes.clicked';\nexport const REVIEWS_HELPFUL_NO_CLICKED = 'reviews.helpful.no.clicked';\nexport const REVIEWS_FLAG_REVIEW_CLICKED = 'reviews.flag.review.clicked';\nexport const REVIEWS_SORT_BY_CHANGED = 'reviews.sort.by.changed';\n\nexport interface IReviewsPayload {\n productId: string;\n displayName: string;\n selectedValue?: string;\n}\n\nexport type ServiceRatingsReviewsEvents = {\n [REVIEWS_HELPFUL_YES_CLICKED]: IReviewsPayload;\n [REVIEWS_HELPFUL_NO_CLICKED]: IReviewsPayload;\n [REVIEWS_FLAG_REVIEW_CLICKED]: IReviewsPayload;\n [REVIEWS_SORT_BY_CHANGED]: IReviewsPayload;\n};\n","export const CARE_NAVIGATE_SIGN_IN = 'care.navigate.signIn';\nexport const CARE_NAVIGATE_SIGN_UP = 'care.navigate.signUp';\nexport const CARE_NAVIGATE_PASSWORD_FORGOT = 'care.navigate.passwordForgot';\nexport const CARE_NAVIGATE_PASSWORD_RESET_LINK_SENT = 'care.navigate.passwordResetLinkSent';\n\nexport type CareEvents = {\n [CARE_NAVIGATE_SIGN_IN]: undefined;\n [CARE_NAVIGATE_SIGN_UP]: undefined;\n [CARE_NAVIGATE_PASSWORD_FORGOT]: undefined;\n [CARE_NAVIGATE_PASSWORD_RESET_LINK_SENT]: undefined;\n};\n","export const RAMP_SIGN_UP_SUBMITTED = 'ramp.signup.submitted';\nexport const RAMP_SIGN_UP_SUCCESSFUL = 'ramp.signup.successful';\nexport const RAMP_SIGN_UP_FAILED = 'ramp.signup.failed';\nexport const RAMP_LOG_IN_SUBMITTED = 'ramp.login.submitted';\nexport const RAMP_LOG_IN_SUCCESSFUL = 'ramp.login.successful';\nexport const RAMP_LOG_IN_FAILED = 'ramp.login.failed';\n\nexport type RampEvents = {\n [RAMP_SIGN_UP_SUBMITTED]: {};\n [RAMP_SIGN_UP_SUCCESSFUL]: {};\n [RAMP_SIGN_UP_FAILED]: {};\n [RAMP_LOG_IN_SUBMITTED]: {};\n [RAMP_LOG_IN_SUCCESSFUL]: {};\n [RAMP_LOG_IN_FAILED]: {};\n};\n","export const VIDEO_READY = 'video.ready';\nexport const VIDEO_PLAY = 'video.play';\nexport const VIDEO_PAUSE = 'video.pause';\nexport const VIDEO_END = 'video.end';\n\nexport type VideoEvents = {\n [VIDEO_READY]: undefined;\n [VIDEO_PLAY]: undefined;\n [VIDEO_PAUSE]: undefined;\n [VIDEO_END]: undefined;\n};\n","import * as ElcEcommEvents from './elc-ecomm';\nimport * as ELCServiceAppointmentBookingEvents from './fe-elc-service-appt-booking';\nimport * as ElcServiceCartEvents from './fe-elc-service-cart';\nimport * as ElcServiceCheckoutEvents from './fe-elc-service-checkout';\nimport * as ElcServiceCommunicationsEvents from './fe-elc-service-communications';\nimport * as ElcServiceForgotPasswordEvents from './fe-elc-service-forgot-password';\nimport * as ElcServiceOffersEvents from './fe-elc-service-offers';\nimport * as ElcServiceOrderHistoryEvents from './fe-elc-service-order-history';\nimport * as ElcServiceOrderEvents from './fe-elc-service-order';\nimport * as ElcServicePasswordStrengthEvents from './fe-elc-service-password-strength';\nimport * as ElcServicePaymentEvents from './fe-elc-service-payment';\nimport * as ElcServiceProdcatEvents from './fe-elc-service-prodcat';\nimport * as ElcServiceSaveForLaterEvents from './fe-elc-service-save-for-later';\nimport * as ElcServiceSearchEvents from './fe-elc-service-search';\nimport * as ElcServiceSignInEvents from './fe-elc-service-sign-in';\nimport * as ElcServiceSignUpEvents from './fe-elc-service-sign-up';\nimport * as ElcServiceStoresEvents from './fe-elc-service-stores';\nimport * as ElcServiceUserProfileEvents from './fe-elc-service-user-profile';\nimport * as ElcServiceAnalyticsEvents from './fe-elc-service-analytics';\nimport * as ElcServiceVtoEvents from './fe-elc-service-vto';\nimport * as ElcServiceRatingsReviewsEvents from './fe-elc-service-ratings-reviews';\nimport * as ElcCareEvents from './elc-care';\nimport * as ElcRampEvents from './elc-ramp';\nimport * as ElcVideoEvents from './elc-video';\n\nconst events = {\n ...ElcEcommEvents,\n ...ELCServiceAppointmentBookingEvents,\n ...ElcServiceCartEvents,\n ...ElcServiceCheckoutEvents,\n ...ElcServiceCommunicationsEvents,\n ...ElcServiceForgotPasswordEvents,\n ...ElcServiceOffersEvents,\n ...ElcServiceOrderHistoryEvents,\n ...ElcServiceOrderEvents,\n ...ElcServicePasswordStrengthEvents,\n ...ElcServicePaymentEvents,\n ...ElcServiceProdcatEvents,\n ...ElcServiceSaveForLaterEvents,\n ...ElcServiceSearchEvents,\n ...ElcServiceSignInEvents,\n ...ElcServiceSignUpEvents,\n ...ElcServiceStoresEvents,\n ...ElcServiceUserProfileEvents,\n ...ElcServiceAnalyticsEvents,\n ...ElcServiceVtoEvents,\n ...ElcServiceRatingsReviewsEvents,\n ...ElcCareEvents,\n ...ElcRampEvents,\n ...ElcVideoEvents\n};\ntype ServiceEvents = ElcServiceCartEvents.ServiceCartEvents &\n ElcEcommEvents.ServiceElcEcommEvents &\n ELCServiceAppointmentBookingEvents.ServiceAppointmentBookingEvents &\n ElcServiceCheckoutEvents.ServiceCheckoutEvents &\n ElcServiceCommunicationsEvents.ServiceCommunicationsEvents &\n ElcServiceForgotPasswordEvents.ServiceForgotPasswordEvents &\n ElcServiceOffersEvents.ServiceOffersEvents &\n ElcServiceOrderHistoryEvents.ServiceOrderHistoryEvents &\n ElcServiceOrderEvents.ServiceOrderEvents &\n ElcServicePasswordStrengthEvents.ServicePasswordStrengthEvents &\n ElcServicePaymentEvents.ServicePaymentEvents &\n ElcServiceProdcatEvents.ServiceProdcatEvents &\n ElcServiceSaveForLaterEvents.ServiceSaveForLaterEvents &\n ElcServiceSearchEvents.ServiceSearchEvents &\n ElcServiceSignInEvents.ServiceSignInEvents &\n ElcServiceSignUpEvents.ServiceSignUpEvents &\n ElcServiceStoresEvents.ServiceStoresEvents &\n ElcServiceUserProfileEvents.ServiceUserProfileEvents &\n ElcServiceAnalyticsEvents.ServiceAnalyticsEvents &\n ElcServiceVtoEvents.ServiceVtoEvents &\n ElcServiceRatingsReviewsEvents.ServiceRatingsReviewsEvents &\n ElcCareEvents.CareEvents &\n ElcRampEvents.RampEvents &\n ElcVideoEvents.VideoEvents;\n\nexport { events, ServiceEvents };\n","import { ServiceBus } from './ServiceBus';\n/*\n * Decorator attached on object properties that watches for the result\n * of a certain query to change.\n */\ntype PrimitiveTypes = boolean | string | number | null | undefined;\nexport const getDecorators = (globalServiceBus: ServiceBus) => {\n const watchQuery = (name?: K) => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n key: string\n ) => {\n const queryName = name || key;\n target.__serviceBusDecorators__ = target.__serviceBusDecorators__ || {};\n const hasWatchingKey = target.__serviceBusDecorators__[queryName];\n if (!hasWatchingKey) {\n target.__serviceBusDecorators__[queryName] = key;\n }\n\n target.registerWatchers = function() {\n Object.keys(this.__serviceBusDecorators__).map(sname => {\n globalServiceBus.registerQueryWatcher(sname, (newQueryResult: PrimitiveTypes) => {\n const propertyName = this.__serviceBusDecorators__[sname];\n this[propertyName] = newQueryResult;\n });\n });\n };\n };\n\n /**\n * Method decorator used to mark a method as a query provider\n */\n const queryProvider = (queryName: K) => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n key: string,\n descriptor?: TypedPropertyDescriptor<() => PrimitiveTypes>\n ) => {\n const queryToProvide = queryName;\n if (!descriptor) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get() {\n return undefined;\n },\n set(value) {\n globalServiceBus.registerQueryProvider(\n queryToProvide,\n (payload: Q[K]): QR[K] => {\n return value.call(target, payload);\n }\n );\n }\n });\n }\n };\n\n /**\n * Method decorator used to mark a method as a command provider\n */\n const commandProvider = (queryName: K) => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n key: string,\n descriptor?: TypedPropertyDescriptor<() => CR[K]>\n ) => {\n const queryToProvide = queryName;\n if (!descriptor) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get() {\n return undefined;\n },\n set(value) {\n globalServiceBus.registerCommandProvider(\n queryToProvide,\n (payload: [C[K]]): CR[K] => {\n return value.call(target, payload);\n }\n );\n }\n });\n }\n };\n\n /*\n * Decorator attached on object properties that listens for a specified event\n * to happen\n */\n function on(evName: K) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (target: any, key: string, descriptor?: PropertyDescriptor) => {\n if (!descriptor) {\n Object.defineProperty(target, key, {\n configurable: true,\n enumerable: false,\n get() {\n return undefined;\n },\n set(value) {\n globalServiceBus.on(evName, (payload: E[K]) => {\n value.call(target, payload);\n });\n }\n });\n } else {\n globalServiceBus.on(evName, (payload: E[K]) => {\n descriptor.value.call(target, payload);\n });\n }\n };\n }\n\n /**\n * Method use to emit events on the global service bus\n */\n function emit(\n evt: K,\n ...payload: E[K] extends undefined ? [undefined?] : [E[K]]\n ) {\n globalServiceBus.emit(evt, payload[0]);\n }\n\n /**\n * Method use to query for data in an imperative manner\n */\n function query(\n name: K,\n ...payload: Q[K] extends undefined ? [undefined?] : [Q[K]]\n ): QR[K] {\n return globalServiceBus.query(name, payload[0]);\n }\n /**\n * Method use to command for data in an imperative manner\n */\n function command(\n name: K,\n ...payload: C[K] extends undefined ? [undefined?] : [C[K]]\n ): CR[K] {\n return globalServiceBus.command(name, payload[0]);\n }\n\n return {\n command,\n commandProvider,\n query,\n watchQuery,\n queryProvider,\n emit,\n on\n };\n};\n","export const CONFIRM_REGISTRATION_TOKEN = 'confirm.registration.token';\nexport const CONFIRM_REGISTRATION_URL = 'confirm.registration.url';\nexport const RESET_PASSWORD_URL = 'reset.password.url';\nexport const GET_CURRENT_ROUTE = 'get.current.route';\n\ntype ICurrentRoute = {\n currentRoute: string;\n params: { [key: string]: string };\n queryParams: { [key: string]: string };\n};\n\nexport type ServiceElcEcommQueries = {\n [CONFIRM_REGISTRATION_TOKEN]: undefined;\n [CONFIRM_REGISTRATION_URL]: undefined;\n [RESET_PASSWORD_URL]: undefined;\n [GET_CURRENT_ROUTE]: undefined;\n};\nexport type ServiceElcEcommQueriesResponseType = {\n [CONFIRM_REGISTRATION_TOKEN]: string;\n [CONFIRM_REGISTRATION_URL]: string;\n [RESET_PASSWORD_URL]: string;\n [GET_CURRENT_ROUTE]: ICurrentRoute;\n};\n","import { ICart } from '../events/CartInterfaces';\n\nexport const IS_CART_VALID = 'isCartValid';\nexport const CHOICE_OF_SKUS_ITEMS_COUNT = 'choiceOfSkusItemsCounts';\nexport const CART_ITEMS_SUBTOTAL = 'cart.items.subtotal';\nexport const CART_ITEMS_COUNT = 'cart.items.counter';\nexport const CART_DIGITAL_SIGNATURE = 'cart.digitalSignature';\nexport const SUCCESSFUL_OFFER_CODES = 'successful.offer.codes';\nexport const CART_SKUS_IDS = 'cart.skus.ids';\nexport const GET_CART = 'get.cart';\nexport const RECOMMENDED_PRODUCTS_SKUID_LIST = 'recommended.products.skuids.list';\n\nexport type ServiceCartQueries = {\n [IS_CART_VALID]: undefined;\n [CHOICE_OF_SKUS_ITEMS_COUNT]: undefined;\n [CART_ITEMS_SUBTOTAL]: undefined;\n [CART_ITEMS_COUNT]: undefined;\n [CART_DIGITAL_SIGNATURE]: undefined;\n [SUCCESSFUL_OFFER_CODES]: undefined;\n [CART_SKUS_IDS]: undefined;\n [GET_CART]: { asPlainText?: boolean };\n [RECOMMENDED_PRODUCTS_SKUID_LIST]: undefined;\n};\n\nexport type ServiceCartQueriesResponseType = {\n [IS_CART_VALID]: boolean;\n [CHOICE_OF_SKUS_ITEMS_COUNT]: number;\n [CART_ITEMS_SUBTOTAL]: number;\n [CART_ITEMS_COUNT]: number;\n [CART_DIGITAL_SIGNATURE]: string;\n [SUCCESSFUL_OFFER_CODES]: string[];\n [CART_SKUS_IDS]: string[];\n [GET_CART]: ICart | string;\n [RECOMMENDED_PRODUCTS_SKUID_LIST]: string[];\n};\n","export const IS_SHIPPING_SCREEN_VALID = 'isShippingScreenValid';\n\nexport type ServiceCheckoutQueries = {\n [IS_SHIPPING_SCREEN_VALID]: undefined;\n};\n\nexport type ServiceCheckoutQueriesResponseType = {\n [IS_SHIPPING_SCREEN_VALID]: boolean;\n};\n","export const EMAIL_OPT_IN = 'email.opt.in';\n\nexport interface IEmailOptIn {\n communicationType: string;\n emailAddress: string;\n emailSubscribed: boolean;\n id: string;\n source: string;\n}\n\nexport type ServiceCommunicationsQueriesResponseType = {\n [EMAIL_OPT_IN]: undefined;\n};\n\nexport type ServiceCommunicationsQueries = {\n [EMAIL_OPT_IN]: IEmailOptIn;\n};\n","export const GET_MANUAL_OFFER = 'get.manual.offer';\n\nexport interface IMessage {\n readonly threshold: string | null;\n readonly deferred: string | null;\n readonly success: string | null;\n readonly error: string | null;\n}\nexport interface IManualOffer {\n manualOfferCodeError: string;\n manualOfferMessages: IMessage;\n manualOfferCode: string;\n shouldDisplayMessage: boolean;\n hasOfferCodeError: boolean;\n offerCode: string;\n message: IMessage;\n offerType: string;\n}\nexport type ServiceOffersQueries = {\n [GET_MANUAL_OFFER]: undefined;\n};\n\nexport type ServiceOffersQueriesResponseType = {\n [GET_MANUAL_OFFER]: IManualOffer;\n};\n","export const FIRST_ORDER_DATE = 'first.order.date';\nexport const FIRST_ORDER_VALUE = 'first.order.value';\nexport const LAST_ORDER_DATE = 'last.order.date';\nexport const LAST_ORDER_VALUE = 'last.order.value';\nexport const ORDERS_AVG = 'orders.avg';\nexport const TOTAL_COUNT_OF_ORDERS = 'total.count.of.orders';\nexport const TOTAL_SUM_OF_REVENUE = 'total.sum.of.revenue';\nexport interface IStatus {\n external: string;\n internal: string;\n}\nexport interface ITotals {\n subTotalWithTax: number;\n subTotalWithoutTax: number;\n totalWithTax: number;\n totalWithoutTax: number;\n totalDiscounts: number;\n cartDiscounts: number;\n tax: number;\n taxPercent: number;\n totalQuantity: number;\n}\nexport interface IDeliveryStatus {\n backOrderNumber: string;\n carrier: string;\n deliveryQuantity: number;\n deliveryDate: string;\n itemId: string;\n remainingQuantity: number;\n trackingNumber: string;\n trackingUrl?: string;\n}\nexport interface IAddresses {\n addressType: string;\n id: string;\n attributes: IAttributes;\n}\nexport interface IAttributes {\n firstName: string;\n lastName: string;\n address: string;\n zipcode: string;\n city: string;\n mobileNumber: string;\n}\nexport interface IOrder {\n orderId: string;\n orderNumber: number;\n businessUnitId: string;\n created: string;\n ownerId: string;\n type: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n items: any;\n status: IStatus;\n totals: ITotals;\n email: string;\n deliveryStatuses: IDeliveryStatus[];\n addresses: IAddresses[];\n}\n\nexport interface IOrderHistoryCollection {\n orderHistoryData: IOrder[];\n temporaryOrders: IOrder[];\n temporaryOrdersLength: number;\n firstOrderDate: string | null;\n firstOrderValue: number;\n lastOrderDate: string | null;\n lastOrderValue: number;\n ordersAvg: number;\n totalSumOfRevenue: number;\n}\n\nexport type ServiceOrderHistoryQueries = {\n [FIRST_ORDER_DATE]: undefined;\n [FIRST_ORDER_VALUE]: undefined;\n [LAST_ORDER_DATE]: undefined;\n [LAST_ORDER_VALUE]: undefined;\n [ORDERS_AVG]: undefined;\n [TOTAL_COUNT_OF_ORDERS]: undefined;\n [TOTAL_SUM_OF_REVENUE]: undefined;\n};\n\nexport type ServiceOrderHistoryQueriesResponseType = {\n [FIRST_ORDER_DATE]: string | null;\n [FIRST_ORDER_VALUE]: number;\n [LAST_ORDER_DATE]: number;\n [LAST_ORDER_VALUE]: number;\n [ORDERS_AVG]: number;\n [TOTAL_COUNT_OF_ORDERS]: number;\n [TOTAL_SUM_OF_REVENUE]: number;\n};\n","export const ORDER_SHIPPING_ADDRESS = 'order.shipping.address';\nexport const GET_ORDER_DATA = 'get.order.data';\nexport interface IAddressesAttributes {\n firstLineAddress: string;\n address: string;\n address2?: string;\n city: string;\n country: string;\n firstName: string;\n lastName: string;\n mobileNumber: string;\n zipcode: string;\n}\n\nexport interface IAddresses {\n addressType: string;\n id: string;\n attributes: IAddressesAttributes;\n}\nexport interface IOrderDetail {\n order: {\n id: string;\n orderNumber: number;\n businessUnitId: string;\n created: Date;\n updated: Date;\n tcVersion: string;\n email: string;\n source: string;\n redirectUrl: string;\n status: {\n internal: string;\n external: string;\n };\n orderType: string;\n browserIP: string;\n testOrder: boolean;\n language: {\n id: string;\n name: string;\n isoCode: string;\n };\n currency: {\n id: string;\n name: string;\n isoCode: string;\n };\n addresses: IAddresses[];\n shippings: [\n {\n shippingAddress: {\n id?: string;\n attributes: {\n [field: string]: string;\n };\n addressMetadataId: string;\n };\n shippingInfo: {\n discountPercent: number;\n discountedPriceWithTax: number;\n discountedPriceWithoutTax: number;\n offerCode: string | null;\n priceWithTax: number;\n priceWithoutTax: number;\n tax: number;\n };\n shippingMethod: {\n id: string;\n name: string;\n skuId: string;\n price: number;\n };\n }\n ];\n shippingInfo: [\n {\n priceWithTax: number; //price of shipping; taxes included\n priceWithoutTax: number; //price of shipping; no taxes included\n discountedPriceWithTax: number; //price of shipping after applying shipping discounts; taxes included\n discountedPriceWithoutTax: number; //price of shipping after applying shipping discounts; taxes included\n discountPercent: number; //the discount percent applied to the shipping price\n tax: number; //the taxes calculated for shipping\n offerCode: string; //shipping promotion offer code; if one exists\n addressId: string;\n shippingId: string;\n }\n ];\n items: [\n {\n id: string;\n skuId: string;\n quantity: number;\n unitPriceWithoutTax: number; //price of the single item; no taxes included\n unitPriceWithTax: number; //price of the single item; taxes included\n discountedUnitPriceWithoutTax: number; //price of the single item; all discounts subtracted; no taxes included\n discountedUnitPriceWithTax: number; //price of the single item; all discounts subtracted; taxes included\n discountsPercent: number; //discount percent applied to price\n appliedPriceWithoutTax: number; //total price for this item (discountedPrice * quantity); no taxes included\n appliedPriceWithTax: number; //total price for this item (discountedPrice * quantity); taxes included\n taxAmount: number;\n productName: string;\n productImage: string;\n shades: string[];\n isHazmat: boolean;\n isShippable: boolean;\n tagId: string;\n tagName: string;\n }\n ];\n engraving: string[];\n giftwrap: string[];\n donation: {\n id: string;\n skuId: string;\n };\n totals: {\n subTotalWithTax: number; //cost of all items summed up (appliedPrice); taxes included\n subTotalWithoutTax: number; //cost of all items summed up (appliedPrice); no taxes included\n totalWithTax: number; //total price of the order(shipping; items; discounts; engraving etc); taxes included\n totalWithoutTax: number; //total price of the order(shipping; items; discounts; engraving etc); no taxes included\n totalDiscounts: number; //total discounts that have been applied\n cartDiscounts: number; //cart level discounts\n tax: number; //total taxes\n taxPercent: number; //tax percent that will be applied (VAT 16% for example)\n totalQuantity: number; //sum of quantity of all items\n };\n additionalInfo: Map;\n };\n billingAddresses: {\n [id: string]: {\n metadataId: string;\n attributes: {\n [field: string]: string;\n };\n };\n };\n orderEvents: [\n {\n orderId: string;\n ownerId: string;\n produced: Date;\n recorded: Date;\n source: string;\n orderDetails: string; // see https://confluence.esteeonline.com/display/ELP/Order+Events+Service for specific event models\n }\n ];\n paymentAmounts: {\n pending: number[]; // the amounts of the pending transactions\n declined: number[]; // the amounts of the declined transactions\n authorized: number[]; // the amounts of the authorized transactions (not captured)\n captured: number[]; // the amounts of the captured transactions\n cancelled: number[]; // the amounts of the (PP side) cancelled transactions\n };\n balance: {\n pending: number; // Order total value MINUS the value of ALL payment transactions authorized; captured or pending\n authorized: number; // Order total value MINUS the value of ALL authorized and captured transactions\n captured: number; // Order total value MINUS the value of ALL captured transactions\n };\n deliveryStatus: [\n {\n itemId: string;\n trackingNumber: string;\n deliveredQuantity: number;\n remainingQuantity: number;\n backOrderNumber: string;\n deliveryDate: string; // string representing a date in ISO8601 format\n carrier: string;\n }\n ];\n paymentMethods: string[];\n}\nexport interface IAddressesAttributes {\n firstLineAddress: string;\n address: string;\n address2?: string;\n city: string;\n country: string;\n firstName: string;\n lastName: string;\n mobileNumber: string;\n zipcode: string;\n}\nexport interface IOrderQueryData {\n orderId: string;\n guestToken: string;\n paymentType: string;\n}\nexport type ServiceOrderQueries = {\n [ORDER_SHIPPING_ADDRESS]: undefined;\n [GET_ORDER_DATA]: IOrderQueryData;\n};\n\nexport interface ISharedAddressAttributes {\n [field: string]: string;\n}\nexport interface ISharedAddress {\n addressMetadataId: string;\n attributes: ISharedAddressAttributes;\n}\n\nexport type ServiceOrderQueriesResponseType = {\n [ORDER_SHIPPING_ADDRESS]: ISharedAddress;\n [GET_ORDER_DATA]: Promise;\n};\n","export const IS_PASSWORD_VALID = 'isPasswordValid';\n\nexport type ServicePasswordStrengthQueries = {\n [IS_PASSWORD_VALID]: undefined;\n};\n\nexport type ServicePasswordStrengthQueriesResponseType = {\n [IS_PASSWORD_VALID]: boolean;\n};\n","export const IS_PAYMENT_SCREEN_VALID = 'isPaymentScreenValid';\n\nexport type ServicePaymentQueries = {\n [IS_PAYMENT_SCREEN_VALID]: undefined;\n};\n\nexport type ServicePaymentQueriesResponseType = {\n [IS_PAYMENT_SCREEN_VALID]: boolean;\n};\n","export const GET_PRODUCTS = 'getProducts';\nexport const GET_PRODUCTS_V2 = 'getProductsV2';\nexport const GET_PRODUCTS_V3 = 'getProductsV3';\nexport const GET_REVIEW_PRODUCT = 'getReviewProduct';\nexport const GET_SELECTED_FILTERS = 'get.selected.filters';\nexport const GET_SORTBY_VALUE = 'get.sortby.value';\nexport const GET_SKUS = 'getSkus';\n\nexport type ServiceProdcatQueries = {\n [GET_PRODUCTS]: {};\n [GET_PRODUCTS_V2]: {};\n [GET_PRODUCTS_V3]: {};\n [GET_REVIEW_PRODUCT]: {};\n [GET_SELECTED_FILTERS]: {};\n [GET_SORTBY_VALUE]: {};\n [GET_SKUS]: {};\n};\n\nexport type ServiceProdcatQueriesResponseType = {\n [GET_PRODUCTS]: {};\n [GET_PRODUCTS_V2]: {};\n [GET_PRODUCTS_V3]: {};\n [GET_REVIEW_PRODUCT]: {};\n [GET_SELECTED_FILTERS]: {};\n [GET_SORTBY_VALUE]: {};\n [GET_SKUS]: {};\n};\n","export const SAVE_FOR_LATER_ITEMS_COUNT = 'saveForLaterItemsCount';\n\nexport type ServiceSaveForLaterQueries = {\n [SAVE_FOR_LATER_ITEMS_COUNT]: undefined;\n};\n\nexport type ServiceSaveForLaterQueriesResponseType = {\n [SAVE_FOR_LATER_ITEMS_COUNT]: number;\n};\n","export const IS_AUTHENTICATED = 'isAuthenticated';\n\nexport type ServiceSignInQueries = {\n [IS_AUTHENTICATED]: undefined;\n};\n\nexport type ServiceSignInQueriesResponseType = {\n [IS_AUTHENTICATED]: boolean | '' | null;\n};\n","export const IS_EMAIL_JUST_VERIFIED = 'isEmailJustVerified';\n\nexport type ServiceSignUpQueries = {\n [IS_EMAIL_JUST_VERIFIED]: undefined;\n};\n\nexport type ServiceSignUpQueriesResponseType = {\n [IS_EMAIL_JUST_VERIFIED]: boolean;\n};\n","export const USER_ID = 'userId';\nexport const IS_SIGN_IN_FORM_OPEN = 'isSignInFormOpen';\nexport const EMAIL_VERIFIED = 'isEmailVerified';\nexport const GUEST_EMAIL = 'guestEmail';\nexport const EMAIL = 'email';\nexport const BIRTH_DATE = 'birth.date';\nexport const GET_USER_CREATION_DATE = 'get.user.creation.date';\nexport const GET_FORMATTED_ADDRESS = 'get.user.formatted.address';\n\nexport interface IGetFormattedAddress {\n metadataId: string;\n attributes: {\n [field: string]: string;\n };\n}\n\nexport type ServiceUserProfileQueries = {\n [USER_ID]: undefined;\n [IS_SIGN_IN_FORM_OPEN]: undefined;\n [EMAIL_VERIFIED]: undefined;\n [GUEST_EMAIL]: undefined;\n [EMAIL]: undefined;\n [BIRTH_DATE]: undefined;\n [GET_USER_CREATION_DATE]: undefined;\n [GET_FORMATTED_ADDRESS]: IGetFormattedAddress;\n};\n\nexport type ServiceUserProfileQueriesResponseType = {\n [USER_ID]: string;\n [IS_SIGN_IN_FORM_OPEN]: boolean;\n [EMAIL_VERIFIED]: boolean;\n [GUEST_EMAIL]: string;\n [EMAIL]: string;\n [BIRTH_DATE]: string;\n [GET_USER_CREATION_DATE]: string;\n [GET_FORMATTED_ADDRESS]: Promise;\n};\n","export const GET_CONFIG = 'get.config';\n\nexport type ServiceConfigManagerQueries = {\n [GET_CONFIG]: string[];\n};\nexport type ServiceConfigManagerQueriesResponseType = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [GET_CONFIG]: Promise<{ [key: string]: any }>;\n};\n","export const GET_TRANSLATIONS = 'get.translations';\n\nexport type ServiceTranslationsQueries = {\n [GET_TRANSLATIONS]: string[];\n};\nexport type ServiceTranslationsQueriesResponseType = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [GET_TRANSLATIONS]: Promise<{ [key: string]: any }>;\n};\n","export const GET_STORE_INVENTORY = 'GET_STORE_INVENTORY';\n\nexport interface IPayloadStoreInventoryRequest {\n skuId: string;\n radius: number;\n geolocation: {\n lat: number;\n lng: number;\n };\n}\n\nexport interface Door {\n DOOR_ID: number;\n DOORNAME: string;\n STORE_HOURS: string;\n STORE_TYPE: string;\n ADDRESS: string;\n ADDRESS2: string;\n STATE_OR_PROVINCE: string;\n CITY: string;\n COUNTRY: string;\n PHONE1: string;\n LONGITUDE: string;\n LATITUDE: string;\n DISTANCE: string;\n}\n\nexport interface StoreInventory {\n is_call: number;\n is_available: number;\n is_unavailable: number;\n available_qty: number;\n}\n\nexport interface DoorInventory {\n store_code: number;\n skus_onhand: {\n [skuiId: string]: StoreInventory;\n };\n}\n\nexport interface IPayloadStoreInventoryResponse {\n requestOptions: IPayloadStoreInventoryRequest;\n doors: number[];\n results: {\n [doorId: number]: Door;\n };\n door_inventory: {\n [doorId: number]: DoorInventory;\n };\n}\n\nexport type ServiceStoreInventoryQueries = {\n [GET_STORE_INVENTORY]: IPayloadStoreInventoryRequest;\n};\n\nexport type ServiceStoreInventoryQueriesResponseType = {\n [GET_STORE_INVENTORY]: Promise;\n};\n","export const GET_APPT_BOOKING_ACCESS_TOKEN = 'apptBooking.tokenAccess.get';\nexport const GET_APPT_BOOKING_COUNTERS = 'apptBooking.counters.get';\n\nexport interface ICounter {\n id: number;\n name: string;\n serviceIds: number[];\n counterLat: number;\n counterLng: number;\n town: string;\n address1: string;\n address2: string;\n phone: string;\n timeslotInterval: number;\n calendars: IApiCalendar[];\n maxAppointmentServices: number;\n}\n\nexport interface IApiTimeSlots {\n start_date: string;\n end_date: string;\n}\n\nexport interface IApiCalendar {\n timeslots: IApiTimeSlots[];\n}\n\nexport type ServiceApptBookingQueries = {\n [GET_APPT_BOOKING_ACCESS_TOKEN]: {};\n [GET_APPT_BOOKING_COUNTERS]: {};\n};\n\nexport type ServiceApptBookingQueriesResponseType = {\n [GET_APPT_BOOKING_ACCESS_TOKEN]: string;\n [GET_APPT_BOOKING_COUNTERS]: ICounter[];\n};\n","export const LEGAL_ACCEPTANCE_TOKEN = 'legal.acceptance.token';\n\n/**\n * Specification for getting a legal acceptance token\n */\nexport interface IGetLegalAcceptanceSpec {\n /**\n * The action name\n */\n action: string;\n\n /**\n * If true this is a request for a guest\n */\n guest?: boolean;\n\n /**\n * The owner for which the token is updated/created for\n */\n owner?: string;\n /**\n * The text the user sees in order to acknowledge the legal implications.\n * Ex: By pressing 'Submit' you agree with the Terms and Conditions.\n */\n acceptanceTag: string;\n}\n\nexport type ServiceLegalQueriesResponseType = {\n [LEGAL_ACCEPTANCE_TOKEN]: Promise;\n};\n\nexport type ServiceLegalQueries = {\n /**\n * Gets the legal acceptance query for a given action\n */\n [LEGAL_ACCEPTANCE_TOKEN]: IGetLegalAcceptanceSpec;\n};\n","export const TEMPLATES_CONTENT_GET = 'content.templates.get';\n\ninterface INodeTemplate {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n [key: string]: any;\n}\n\nexport type ServiceContentTemplatesQueries = {\n [TEMPLATES_CONTENT_GET]: { nodeId: number };\n};\n\nexport type ServiceContentTemplatesQueriesResponseType = {\n [TEMPLATES_CONTENT_GET]: Promise;\n};\n","import * as ElcEcommQueries from './fe-elc-ecomm';\nimport * as ElcServiceCartQueries from './fe-elc-service-cart';\nimport * as ElcServiceCheckoutQueries from './fe-elc-service-checkout';\nimport * as ElcServiceCommunicationsQueries from './fe-elc-service-communications';\nimport * as ElcServiceOffersQueries from './fe-elc-service-offers';\nimport * as ElcServiceOrderHistoryQueries from './fe-elc-service-order-history';\nimport * as ElcServiceOrderQueries from './fe-elc-service-order';\nimport * as ElcServicePasswordStrengthQueries from './fe-elc-service-password-strength';\nimport * as ElcServicePaymentQueries from './fe-elc-service-payment';\nimport * as ElcServiceProdcatQueries from './fe-elc-service-prodcat';\nimport * as ElcServiceSaveForLaterQueries from './fe-elc-service-save-for-later';\nimport * as ElcServiceSignInQueries from './fe-elc-service-sign-in';\nimport * as ElcServiceSignUpQueries from './fe-elc-service-sign-up';\nimport * as ElcServiceUserProfileQueries from './fe-elc-service-user-profile';\nimport * as ElcServiceConfigManagerQueries from './fe-elc-service-config-manager';\nimport * as ElcServiceTranslationsQueries from './fe-elc-service-translations';\nimport * as ElcServiceStoreQueries from './fe-elc-service-stores';\nimport * as ElcServiceApptBookingQueries from './fe-elc-service-appt-booking';\nimport * as ElcServiceLegalQueries from './fe-elc-service-legal';\nimport * as ElcServiceContentQueries from './fe-elc-service-content';\n\nconst serviceQueries = {\n ...ElcEcommQueries,\n ...ElcServiceCartQueries,\n ...ElcServiceCheckoutQueries,\n ...ElcServiceCommunicationsQueries,\n ...ElcServiceOffersQueries,\n ...ElcServiceOrderHistoryQueries,\n ...ElcServiceOrderQueries,\n ...ElcServicePasswordStrengthQueries,\n ...ElcServicePaymentQueries,\n ...ElcServiceProdcatQueries,\n ...ElcServiceSaveForLaterQueries,\n ...ElcServiceSignInQueries,\n ...ElcServiceSignUpQueries,\n ...ElcServiceUserProfileQueries,\n ...ElcServiceConfigManagerQueries,\n ...ElcServiceTranslationsQueries,\n ...ElcServiceStoreQueries,\n ...ElcServiceApptBookingQueries,\n ...ElcServiceLegalQueries,\n ...ElcServiceContentQueries\n};\n\ntype ServiceQueries = ElcServiceCartQueries.ServiceCartQueries &\n ElcEcommQueries.ServiceElcEcommQueries &\n ElcServiceCheckoutQueries.ServiceCheckoutQueries &\n ElcServiceCommunicationsQueries.ServiceCommunicationsQueries &\n ElcServiceOffersQueries.ServiceOffersQueries &\n ElcServiceOrderHistoryQueries.ServiceOrderHistoryQueries &\n ElcServiceOrderQueries.ServiceOrderQueries &\n ElcServicePasswordStrengthQueries.ServicePasswordStrengthQueries &\n ElcServicePaymentQueries.ServicePaymentQueries &\n ElcServiceProdcatQueries.ServiceProdcatQueries &\n ElcServiceSaveForLaterQueries.ServiceSaveForLaterQueries &\n ElcServiceSignInQueries.ServiceSignInQueries &\n ElcServiceSignUpQueries.ServiceSignUpQueries &\n ElcServiceTranslationsQueries.ServiceTranslationsQueries &\n ElcServiceConfigManagerQueries.ServiceConfigManagerQueries &\n ElcServiceUserProfileQueries.ServiceUserProfileQueries &\n ElcServiceStoreQueries.ServiceStoreInventoryQueries &\n ElcServiceApptBookingQueries.ServiceApptBookingQueries &\n ElcServiceLegalQueries.ServiceLegalQueries &\n ElcServiceContentQueries.ServiceContentTemplatesQueries;\ntype ServiceQueriesResponseType = ElcServiceCartQueries.ServiceCartQueriesResponseType &\n ElcEcommQueries.ServiceElcEcommQueriesResponseType &\n ElcServiceCheckoutQueries.ServiceCheckoutQueriesResponseType &\n ElcServiceCommunicationsQueries.ServiceCommunicationsQueriesResponseType &\n ElcServiceOffersQueries.ServiceOffersQueriesResponseType &\n ElcServiceOrderHistoryQueries.ServiceOrderHistoryQueriesResponseType &\n ElcServiceOrderQueries.ServiceOrderQueriesResponseType &\n ElcServicePasswordStrengthQueries.ServicePasswordStrengthQueriesResponseType &\n ElcServicePaymentQueries.ServicePaymentQueriesResponseType &\n ElcServiceProdcatQueries.ServiceProdcatQueriesResponseType &\n ElcServiceSaveForLaterQueries.ServiceSaveForLaterQueriesResponseType &\n ElcServiceSignInQueries.ServiceSignInQueriesResponseType &\n ElcServiceSignUpQueries.ServiceSignUpQueriesResponseType &\n ElcServiceTranslationsQueries.ServiceTranslationsQueriesResponseType &\n ElcServiceConfigManagerQueries.ServiceConfigManagerQueriesResponseType &\n ElcServiceUserProfileQueries.ServiceUserProfileQueriesResponseType &\n ElcServiceStoreQueries.ServiceStoreInventoryQueriesResponseType &\n ElcServiceApptBookingQueries.ServiceApptBookingQueriesResponseType &\n ElcServiceLegalQueries.ServiceLegalQueriesResponseType &\n ElcServiceContentQueries.ServiceContentTemplatesQueriesResponseType;\nexport { serviceQueries, ServiceQueries, ServiceQueriesResponseType };\n","export const CHANGE_ROUTE_PROFILE = 'change.route.profile';\nexport const CHANGE_ROUTE_SETTINGS = 'change.route.settings';\nexport const CHANGE_ROUTE_ORDER_HISTORY = 'change.route.orderHistory';\n\nexport type ServiceElcEcommCommands = {\n [CHANGE_ROUTE_PROFILE]: undefined;\n [CHANGE_ROUTE_SETTINGS]: undefined;\n [CHANGE_ROUTE_ORDER_HISTORY]: undefined;\n};\n\nexport type ServiceElcEcommCommandsReturnType = {\n [CHANGE_ROUTE_PROFILE]: undefined;\n [CHANGE_ROUTE_SETTINGS]: undefined;\n [CHANGE_ROUTE_ORDER_HISTORY]: undefined;\n};\n","export const CART_ADD_ITEM = 'cart.addItem';\nexport const CART_CLEAR_ERRORS = 'cart.clearErrors';\nexport const CART_CLEAR = 'cart.clear';\nexport const CART_SET_SHIPPING_METHOD = 'cart.setShippingMethod';\nexport const CART_ADD_ADDRESSES = 'cart.add.addresses';\nexport const SAVE_FOR_LATER_ADD = 'cart.save.for.later';\nexport const CART_OVERLAY_SHOW = 'cart.overlay.show';\nexport const CART_OVERLAY_HIDE = 'cart.overlay.hide';\nexport interface IAddressAttributes {\n [key: string]: string;\n}\nexport interface ICartAddress {\n addressMetadataId: string;\n attributes: IAddressAttributes;\n}\nexport interface ICartAddAddress {\n shippingAddresses: ICartAddress[];\n billingAddress: ICartAddress;\n}\nexport interface ISaveForLaterAdd {\n skuId: string;\n quantity: number;\n}\nexport type ServiceCartCommands = {\n [CART_ADD_ITEM]: { skuId: string; quantity?: number; replenishment?: number };\n [CART_CLEAR_ERRORS]: undefined;\n [CART_CLEAR]: undefined;\n [CART_SET_SHIPPING_METHOD]: string;\n [CART_ADD_ADDRESSES]: ICartAddAddress;\n [SAVE_FOR_LATER_ADD]: ISaveForLaterAdd;\n [CART_OVERLAY_SHOW]: undefined;\n [CART_OVERLAY_HIDE]: undefined;\n};\n\nexport type ServiceCartCommandsReturnType = {\n [CART_ADD_ITEM]: Promise;\n [CART_CLEAR_ERRORS]: undefined;\n [CART_CLEAR]: undefined;\n [CART_SET_SHIPPING_METHOD]: undefined;\n [CART_ADD_ADDRESSES]: Promise;\n [SAVE_FOR_LATER_ADD]: Promise;\n [CART_OVERLAY_SHOW]: Promise;\n [CART_OVERLAY_HIDE]: Promise;\n};\n","export const UPDATE_INVENTORY = 'update.inventory';\n\ninterface IInventoryStatus {\n inventory_status: number | string;\n}\n\nexport interface IInventoryStatuses {\n [key: string]: IInventoryStatus;\n}\n\nexport type ServiceProdcatCommands = {\n [UPDATE_INVENTORY]: IInventoryStatuses;\n};\n\nexport type ServiceProdcatCommandsReturnType = {\n [UPDATE_INVENTORY]: undefined;\n};\n","export const AUTH_UPDATE_DATA = 'auth.update.data';\nexport const SET_SIGN_IN_EMAIL = 'set.sign.in.email';\n\nexport interface IAuthUpdateData {\n token: string;\n source?: string;\n email?: string;\n expiration: number;\n}\n\nexport type ServiceSignInCommands = {\n [AUTH_UPDATE_DATA]: IAuthUpdateData;\n [SET_SIGN_IN_EMAIL]: { email: string };\n};\n\nexport type ServiceSignInCommandsReturnType = {\n [AUTH_UPDATE_DATA]: undefined;\n [SET_SIGN_IN_EMAIL]: undefined;\n};\n","export const UPDATE_USER_DATA = 'update.user.data';\nexport const CLEAR_USER_DATA = 'clear.user.data';\nexport const ACCOUNT_OVERLAY_SHOW = 'account.overlay.show';\nexport const ACCOUNT_OVERLAY_HIDE = 'account.overlay.hide';\nexport const ADD_USER_ADDRESS = 'account.add.user.address';\n\nexport interface IUpdateUserData {\n userId: string;\n userEmail: string;\n userRole: string;\n userCreationDate: string;\n}\n\nexport interface IUserAddressAttributes {\n [field: string]: string;\n}\n\nexport interface IUserAddress {\n addressIsDefault?: boolean;\n addressMetadataId: string;\n addressAttributes: IUserAddressAttributes;\n}\n\nexport type IAddUserAddressPayload = IUserAddress;\n\nexport type ServiceUserProfileCommands = {\n [UPDATE_USER_DATA]: IUpdateUserData;\n [CLEAR_USER_DATA]: undefined;\n [ACCOUNT_OVERLAY_SHOW]: undefined;\n [ACCOUNT_OVERLAY_HIDE]: undefined;\n [ADD_USER_ADDRESS]: IAddUserAddressPayload;\n};\n\nexport type ServiceUserProfileCommandsReturnType = {\n [UPDATE_USER_DATA]: undefined;\n [CLEAR_USER_DATA]: undefined;\n [ACCOUNT_OVERLAY_SHOW]: undefined;\n [ACCOUNT_OVERLAY_HIDE]: undefined;\n [ADD_USER_ADDRESS]: Promise;\n};\n","export const ORDER_CREATE = 'order.create';\nexport const ORDER_CHECK = 'order.check';\nexport const ORDER_UPDATE = 'order.update';\n\nexport type ServiceOrderCommands = {\n [ORDER_CREATE]: undefined;\n [ORDER_UPDATE]: undefined;\n};\n\nexport type ServiceOrderCommandsReturnType = {\n [ORDER_CREATE]: Promise;\n [ORDER_UPDATE]: undefined;\n};\n","import * as ElcEcommCommands from './fe-elc-ecomm';\nimport * as ElcServiceCartCommands from './fe-elc-service-cart';\nimport * as ElcServiceProdcatCommands from './fe-elc-service-prodcat';\nimport * as ElcServiceSignInCommands from './fe-elc-service-sign-in';\nimport * as ElcServiceUserProfileCommands from './fe-elc-service-user-profile';\nimport * as ElcServiceOrderCommands from './fe-elc-service-order';\n\nconst serviceCommands = {\n ...ElcEcommCommands,\n ...ElcServiceCartCommands,\n ...ElcServiceOrderCommands,\n ...ElcServiceProdcatCommands,\n ...ElcServiceSignInCommands,\n ...ElcServiceUserProfileCommands\n};\n\ntype ServiceCommands = ElcServiceCartCommands.ServiceCartCommands &\n ElcEcommCommands.ServiceElcEcommCommands &\n ElcServiceOrderCommands.ServiceOrderCommands &\n ElcServiceProdcatCommands.ServiceProdcatCommands &\n ElcServiceSignInCommands.ServiceSignInCommands &\n ElcServiceUserProfileCommands.ServiceUserProfileCommands;\n\ntype ServiceCommandsReturnType = ElcServiceCartCommands.ServiceCartCommandsReturnType &\n ElcEcommCommands.ServiceElcEcommCommandsReturnType &\n ElcServiceOrderCommands.ServiceOrderCommandsReturnType &\n ElcServiceProdcatCommands.ServiceProdcatCommandsReturnType &\n ElcServiceSignInCommands.ServiceSignInCommandsReturnType &\n ElcServiceUserProfileCommands.ServiceUserProfileCommandsReturnType;\n\nexport { serviceCommands, ServiceCommands, ServiceCommandsReturnType };\n","import { ELCLogger } from 'elc-logging';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface IQueryProvider {\n queryName: string;\n provider: Function;\n context: any;\n}\ninterface IQueryWatcher {\n queryName: string;\n queryWatcher: Function;\n}\n\ntype QueryCacheType = { [k: string]: boolean | number | string };\nexport interface IUnsolvedQuery {\n promise: Promise;\n resolve: Function;\n payload: any;\n queryName: keyof Q;\n}\n\ntype EventListener = Function;\ntype NextFnType = Function;\ntype PayloadType = any;\ninterface IHook {\n beforeEventListenerRegister?(event: string, listener?: EventListener, next?: NextFnType): void;\n beforeEmit?(action: string, payload?: PayloadType, next?: NextFnType): void;\n afterEmit?(event: string, payload?: PayloadType): void;\n beforeQueryRegister?(queryName: string, qp: IQueryProvider, next: NextFnType): void;\n beforeQuery?(queryName: string, payload?: PayloadType, next?: NextFnType): void;\n afterQuery?(queryName: string, payload?: PayloadType): void;\n}\ntype HooksFunction = (bus: ServiceBus) => IHook;\ntype HooksCollection = { [k: string]: Function[] };\n\nexport class ServiceBus {\n private eventWatchers: Map;\n private queryProviders: IQueryProvider[];\n private queryWatchers: IQueryWatcher[];\n private queryCache: QueryCacheType;\n private unsolvedQueries: IUnsolvedQuery[] = [];\n private hooks: HooksCollection = {};\n private logger: ELCLogger = new ELCLogger('elc-service-bus');\n\n constructor() {\n this.eventWatchers = new Map();\n this.queryProviders = [];\n this.queryWatchers = [];\n this.queryCache = {};\n // Hooks form a queue, in which the original function is the last in the queue\n this.hooks = {\n beforeEmit: [this.runEmit],\n beforeQuery: [this.runQuery],\n beforeEventListenerRegister: [this.runOn],\n beforeQueryRegister: [this.runRegisterQueryProvider]\n };\n setInterval(this.dirtyCheckQueries, 200);\n }\n public on = (eventName: K, callback: (payload: E[K]) => any) => {\n this.startMark(`on_event_${eventName}`);\n\n return this.runHooks('beforeEventListenerRegister', eventName, callback);\n };\n\n private runOn = (eventName: K, callback: (payload: E[K]) => any) => {\n if (!eventName) {\n throw new Error('Event name cannot be undefined while subscribing to ServiceBus');\n }\n if (!callback) {\n throw new Error('A callback is necessary while subscribing to ServiceBus');\n }\n\n let callbacks = this.eventWatchers.get(eventName);\n\n if (!callbacks) {\n callbacks = [];\n this.eventWatchers.set(eventName, callbacks);\n }\n\n if (callbacks) {\n const idx = callbacks.indexOf(callback);\n if (idx < 0) {\n callbacks.push(callback);\n }\n }\n\n this.endMark(`on_event_${eventName}`);\n };\n public off = (eventName: any, callback?: Function) => {\n if (callback) {\n const callbacks = this.eventWatchers.get(eventName);\n\n if (callbacks) {\n const idx = callbacks.indexOf(callback);\n if (idx >= 0) {\n callbacks.splice(idx, 1);\n\n if (callbacks.length === 0) {\n this.eventWatchers.delete(eventName);\n }\n }\n }\n } else {\n this.eventWatchers.delete(eventName);\n }\n };\n\n public applyHook = (hook: HooksFunction) => {\n const hookObj = hook(this as ServiceBus);\n Object.keys(hookObj).forEach((hookName: keyof IHook) => {\n const hookFn = hookObj[hookName] as any;\n this.hooks[hookName] = this.hooks[hookName] || [];\n const hkCol = this.hooks[hookName];\n if (hookFn && Array.isArray(hkCol)) {\n hkCol.unshift(hookFn);\n }\n });\n };\n\n public hasUnsolvedQueries = () => {\n return this.unsolvedQueries.length !== 0;\n };\n\n public emit = (eventName: K, payload?: E[K]) => {\n this.startMark(`emit_${eventName}`);\n this.runHooks('beforeEmit', eventName, payload);\n };\n\n private runEmit = (eventName: string, payload: any) => {\n const eventWatchers = this.eventWatchers.get(eventName);\n if (eventWatchers) {\n eventWatchers.forEach(c => {\n c(payload);\n });\n }\n this.runHooks('afterEmit', eventName, payload);\n this.endMark(`emit_${eventName}`);\n };\n\n public query = (queryName: K, payload?: Q[K]): QR[K] => {\n this.startMark(`query_${queryName}`);\n\n return this.runHooks('beforeQuery', queryName, payload);\n };\n public command = (commandName: K, payload?: C[K]): CR[K] => {\n this.startMark(`query_${commandName}`);\n\n return this.runHooks('beforeQuery', commandName, payload);\n };\n\n private runQuery = (queryName: K, payload?: Q[K]) => {\n const qp = this.queryProviders.find(p => p.queryName === queryName);\n if (!qp) {\n // eslint-disable-next-line no-new-func\n let resolveFn = new Function();\n const queryPromise = new Promise(resolve => {\n resolveFn = resolve;\n });\n\n this.unsolvedQueries.push({\n promise: queryPromise,\n resolve: resolveFn,\n payload,\n queryName\n });\n\n return queryPromise;\n }\n\n return Promise.resolve(qp.provider.call(qp.context, payload)).then(r =>\n this.afterQuery(qp, r, queryName as string)\n );\n };\n\n private afterQuery = (qp: IQueryProvider, result: any, queryName: string) => {\n this.runHooks('afterQuery', qp, result);\n this.endMark(`query_${queryName}`);\n\n return result;\n };\n\n public registerQueryProvider = (\n queryName: K,\n provider: (payload: Q[K]) => QR[K],\n context?: Record\n ) => {\n return this.runHooks('beforeQueryRegister', queryName, provider, context);\n };\n public registerCommandProvider = (\n commandName: K,\n provider: Function,\n context?: Record\n ) => {\n return this.runHooks('beforeQueryRegister', commandName, provider, context);\n };\n private runRegisterQueryProvider = (\n queryName: string,\n provider: Function,\n context?: Record\n ) => {\n const existingQueryProviders = this.queryProviders.filter(qp => qp.queryName === queryName);\n if (existingQueryProviders.length) {\n throw new Error(\n `Trying to register a query providerm but there is already a provider for query ${queryName}`\n );\n }\n this.queryProviders.push({ queryName, provider, context });\n\n const unsolvedProviderQueries = this.unsolvedQueries.filter(\n uq => uq.queryName === queryName\n );\n if (unsolvedProviderQueries.length) {\n unsolvedProviderQueries.forEach(this.executeUnsolvedQuery);\n this.unsolvedQueries = this.unsolvedQueries.filter(uq => uq.queryName !== queryName);\n }\n };\n\n public registerQueryWatcher = (queryName: any, queryWatcher: Function) => {\n this.queryWatchers.push({ queryName, queryWatcher });\n if (queryName in this.queryCache) {\n queryWatcher.call(null, this.queryCache[queryName]);\n }\n };\n\n private runHooks = (hookEvent: keyof IHook, ...args: any[]) => {\n const hookChain = this.hooks[hookEvent] || [];\n\n return this.executeHook(hookChain.slice(0), args);\n };\n private executeHook(hookChain: (Function | undefined)[], args: any) {\n const hookFn = hookChain.shift();\n if (typeof hookFn === 'function') {\n const isLastHook = hookChain.length === 0;\n const next = () => this.executeHook(hookChain.slice(0), args);\n const hookArgs = !isLastHook ? args.concat([next]) : args;\n\n return hookFn(...hookArgs);\n }\n }\n private executeUnsolvedQuery = ({ queryName, payload, resolve }: IUnsolvedQuery) => {\n const qp = this.queryProviders.find(p => p.queryName === queryName);\n if (qp) {\n return Promise.resolve(qp.provider.call(qp.context, payload)).then((r: any) => {\n resolve(this.afterQuery(qp, r, queryName as string));\n\n return r;\n });\n }\n };\n private dirtyCheckQueries = () => {\n const localQueryCache: QueryCacheType = {};\n this.queryWatchers.forEach(qw => {\n const { queryName, queryWatcher } = qw;\n const qp = this.queryProviders.find(p => p.queryName === queryName);\n const queryCache = this.queryCache;\n if (qp) {\n const resultPromise = Promise.resolve(\n localQueryCache[queryName] || qp.provider.call(qp.context)\n );\n void resultPromise.then(result => {\n if (result !== queryCache[queryName]) {\n queryWatcher.call(null, result);\n }\n localQueryCache[queryName] = result;\n });\n }\n });\n this.queryCache = localQueryCache;\n };\n\n private startMark = (name: string) => {\n performance.mark(`service_bus_${name}`);\n };\n\n private endMark = (name: string) => {\n try {\n performance.mark(`service_bus_${name}_end`);\n performance.measure(\n `service_bus_measure_${name}`,\n `service_bus_${name}`,\n `service_bus_${name}_end`\n );\n } catch (error) {\n this.logger.error({\n message: `[elc-service-bus]: ${error}`,\n triggerType: 'error'\n });\n }\n };\n}\n","import { events, ServiceEvents } from './service-bus-topics/events';\nimport { getDecorators as getPubSubDecorators } from './ServiceBusDecorators';\nconst packageJson = require('../package.json');\n\nimport {\n serviceQueries,\n ServiceQueries,\n ServiceQueriesResponseType\n} from './service-bus-topics/queries';\nimport {\n serviceCommands,\n ServiceCommands,\n ServiceCommandsReturnType\n} from './service-bus-topics/commands';\nimport { root } from 'elc-universal-utils';\nimport { ServiceBus } from './ServiceBus';\n\nroot.versions = root.versions || {};\nroot.versions[packageJson.name] = packageJson.version;\n\nif (root) {\n // @ts-ignore\n root.GlobalServiceBus = new ServiceBus<\n ServiceEvents,\n ServiceQueries,\n ServiceQueriesResponseType,\n ServiceCommands,\n ServiceCommandsReturnType\n >();\n}\n\nif (root) {\n root.ServiceBusTopics = {\n commands: serviceCommands,\n events,\n queries: serviceQueries\n };\n}\n\n// @ts-ignore\nconst GlobalServiceBus: ServiceBus<\n ServiceEvents,\n ServiceQueries,\n ServiceQueriesResponseType,\n ServiceCommands,\n ServiceCommandsReturnType\n> = root.GlobalServiceBus;\n\nconst {\n command,\n commandProvider,\n query,\n watchQuery,\n queryProvider,\n emit,\n on\n} = getPubSubDecorators<\n ServiceEvents,\n ServiceQueries,\n ServiceQueriesResponseType,\n ServiceCommands,\n ServiceCommandsReturnType\n>(GlobalServiceBus);\n\nexport {\n GlobalServiceBus,\n command,\n commandProvider,\n query,\n watchQuery,\n queryProvider,\n emit,\n on,\n serviceQueries,\n ServiceEvents,\n ServiceQueries,\n ServiceQueriesResponseType,\n ServiceCommands,\n ServiceCommandsReturnType,\n serviceCommands,\n events\n};\n\nconst ElcServiceBus = {\n GlobalServiceBus,\n command,\n commandProvider,\n query,\n watchQuery,\n queryProvider,\n emit,\n on,\n serviceQueries,\n serviceCommands,\n events\n};\n\nexport { ElcServiceBus };\n\nexport { ServiceBus, IQueryProvider } from './ServiceBus';\nexport { getDecorators } from './ServiceBusDecorators';\n"],"sourceRoot":""}