{"version":3,"file":"bundle.js","mappings":"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","sources":["webpack://elc-service-translations/webpack/runtime/load script","webpack://elc-service-translations/./node_modules/@estee/elc-service/src/Service/ServiceManager/ServiceManager.ts","webpack://elc-service-translations/./node_modules/@estee/elc-universal-utils/src/UniversalUtils.ts","webpack://elc-service-translations/./node_modules/@estee/elc-universal-utils/src/Service/ServiceUtils.ts","webpack://elc-service-translations/./node_modules/@estee/elc-universal-utils/src/BrowserStorage.ts","webpack://elc-service-translations/./src/service-setup/ServiceBusController.ts","webpack://elc-service-translations/./node_modules/@estee/elc-service/node_modules/@estee/elc-universal-utils/src/UniversalUtils.ts","webpack://elc-service-translations/./node_modules/@estee/elc-service/node_modules/@estee/elc-universal-utils/src/BrowserStorage.ts","webpack://elc-service-translations/./node_modules/@estee/elc-service/src/Service/BaseService.ts","webpack://elc-service-translations/./src/service-setup/TranslationsService.ts","webpack://elc-service-translations/external var [\"ElcRuntime\",\"HypoContainer\"]","webpack://elc-service-translations/external var [\"ElcRuntime\",\"HttpTransport\"]","webpack://elc-service-translations/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-universal-utils/src/UniversalUtils.ts","webpack://elc-service-translations/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-universal-utils/src/BrowserStorage.ts","webpack://elc-service-translations/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-service/src/Api.ts","webpack://elc-service-translations/./node_modules/@estee/elc-drupal-api/src/DrupalApi.ts","webpack://elc-service-translations/./src/api/TranslationsApiSdk.ts","webpack://elc-service-translations/external var [\"ElcRuntime\",\"mobx\"]","webpack://elc-service-translations/./src/service-setup/ConfigStore.tsx","webpack://elc-service-translations/./src/internal/repositories/TranslationsRepository.ts","webpack://elc-service-translations/./src/service-setup/diContainer.tsx","webpack://elc-service-translations/external var \"ElcServiceBus\"","webpack://elc-service-translations/external var [\"ElcRuntime\",\"ELCLogger\"]","webpack://elc-service-translations/webpack/bootstrap","webpack://elc-service-translations/webpack/runtime/compat get default export","webpack://elc-service-translations/webpack/runtime/define property getters","webpack://elc-service-translations/webpack/runtime/ensure chunk","webpack://elc-service-translations/webpack/runtime/get javascript chunk filename","webpack://elc-service-translations/webpack/runtime/global","webpack://elc-service-translations/webpack/runtime/hasOwnProperty shorthand","webpack://elc-service-translations/webpack/runtime/make namespace object","webpack://elc-service-translations/webpack/runtime/publicPath","webpack://elc-service-translations/webpack/runtime/jsonp chunk loading","webpack://elc-service-translations/webpack/container-entry","webpack://elc-service-translations/./src/index.ts"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"elc-service-translations:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import {\n ServiceQueries,\n query,\n serviceQueries,\n ServiceEvents,\n ServiceCommands,\n events,\n on,\n emit\n} from '@estee/elc-service-bus';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\nimport { ViewController } from '../../ViewController';\nimport { ServiceBusController } from '../ServiceBusController';\nimport { BaseService } from '../BaseService';\nimport { IAppConfig } from '@estee/elc-universal-utils';\n\ntype diContainerType = { get(key: string): T };\nexport type ContainerImport = () => Promise<{ diContainer: diContainerType }>;\n\nexport type ServiceBusControllerBody = ServiceBusController & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: Promise<(...args: any[]) => any> | Function | any;\n} & { onEcommStarted(): void };\n\ninterface IServiceStartParams {\n serviceName: string;\n diContainerImport: ContainerImport;\n serviceKey: string;\n serviceBusControllerKey?: string;\n serviceBus?: {\n serviceBusBaseClass?: ServiceBusControllerBody;\n createServiceBusMethod?(): void;\n }\n}\n\nexport class ServiceManagerClass {\n public serviceName: string;\n private containerImport: ContainerImport;\n private diContainer: diContainerType;\n private serviceKey: string;\n private service: BaseService;\n private serviceBusControllerKey?: string;\n private serviceBusBaseClass?: ServiceBusControllerBody;\n private logger: ELCLogger;\n private ecommStarted: boolean = false;\n private startPromise: Promise;\n\n get serviceHasStarted(): boolean {\n return Boolean(this.service && this.service.isStarted);\n }\n\n getContainer = async () => {\n if (!this.diContainer) {\n this.diContainer = (await this.containerImport()).diContainer;\n }\n\n return this.diContainer;\n };\n\n handleServiceBusError = () => {\n throw new Error(`\n ServiceBus hasn't been provided to ServiceManager at setServiceStartParams method.\n ServiceBus: ${this.serviceBusBaseClass ? 'ServiceBus found' : this.serviceBusBaseClass}.\n ServiceBusKey: (${this.serviceBusControllerKey})\n `);\n };\n\n getServiceBusController = async () => {\n let serviceBus;\n try {\n await this.startService();\n\n const diContainer = await this.getContainer();\n\n serviceBus = diContainer.get(\n this.serviceBusControllerKey as string\n );\n\n if (!serviceBus) {\n throw new Error('ServiceBusController not found inside diContainer');\n }\n } catch (error) {\n this.logger.error({\n triggerType: TriggerType.render,\n message: error.message,\n payload: { error }\n });\n }\n\n return serviceBus as ServiceBusController;\n };\n\n setServiceStartParams = ({\n serviceName,\n diContainerImport,\n serviceKey,\n serviceBusControllerKey,\n serviceBus\n }: IServiceStartParams) => {\n this.serviceName = serviceName;\n this.containerImport = diContainerImport;\n this.serviceKey = serviceKey;\n this.serviceBusControllerKey = serviceBusControllerKey;\n this.logger = new ELCLogger({ serviceName });\n this.serviceBusBaseClass = serviceBus?.serviceBusBaseClass;\n serviceBus?.createServiceBusMethod?.();\n };\n\n getServiceBusControllerMethod = (functionName: string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n async (...args: any[]) => {\n const srvBusController = await this.getServiceBusController();\n\n const method = (srvBusController as ServiceBusControllerBody)[functionName] as Function;\n\n return method.call(null, ...args);\n };\n\n setDecoratorOnFunction = (decorator: Function) => {\n return ([triggerKey, functionName]: [\n triggerKey: keyof ServiceQueries | keyof ServiceEvents | keyof ServiceCommands,\n functionName: string\n ]) => {\n if (!this.serviceBusBaseClass || !this.serviceBusControllerKey) {\n this.handleServiceBusError();\n } else {\n decorator(triggerKey)(this.serviceBusBaseClass.__proto__, functionName);\n this.serviceBusBaseClass[functionName] = this.getServiceBusControllerMethod(\n functionName\n );\n }\n };\n };\n\n setDecoratorOnProperty = (decorator: Function) => {\n return ([keyName, queryName]: [keyName: string, queryName?: string]) => {\n if (!this.serviceBusBaseClass || !this.serviceBusControllerKey) {\n this.handleServiceBusError();\n } else {\n decorator(queryName)(this.serviceBusBaseClass.__proto__, keyName);\n\n Object.defineProperty(this.serviceBusBaseClass.__proto__, keyName, {\n configurable: true,\n enumerable: true,\n set(value) {\n return this.getServiceBusController().then(\n (srvBusController: ServiceBusController) => {\n // @ts-ignore\n srvBusController[keyName] = value;\n }\n );\n }\n });\n }\n };\n };\n\n @on(events.ECOMM_STARTED, { replay: true })\n public setEcommHasStarted = () => {\n this.ecommStarted = true;\n };\n\n onStart = (cb: (error?: Error) => void, ecommConfig?: IAppConfig) => async () => {\n let error: Error | undefined;\n try {\n if (this.serviceHasStarted) {\n cb();\n\n return;\n }\n if (!ecommConfig && !this.ecommStarted) {\n return;\n }\n\n await this.getContainer();\n this.service = this.diContainer.get(this.serviceKey);\n\n let serviceConfig = ecommConfig;\n\n if (!serviceConfig) {\n const config = (await query(serviceQueries.GET_CONFIG, ['ecommConfig'])) as\n | { ecommConfig?: IAppConfig }\n | undefined;\n\n // If ecommConfig is not available then EcommApp hasn't started yet\n if (!config || !config.ecommConfig) {\n throw new Error('EcommConfig not found');\n }\n\n serviceConfig = config.ecommConfig;\n }\n\n await this.service.start(serviceConfig);\n emit(events.SERVICE_STARTED, { serviceName: this.serviceName });\n } catch (err) {\n error = err;\n this.logger.error({\n triggerType: TriggerType.render,\n message: err.message,\n payload: {\n error: err\n }\n });\n } finally {\n cb(error);\n }\n };\n\n startService = (ecommConfig?: IAppConfig) => {\n if (!this.startPromise) {\n this.startPromise = new Promise((resolve, reject) => {\n let timeoutId: NodeJS.Timeout | null = null;\n timeoutId = setInterval(\n this.onStart((error?: Error) => {\n if (timeoutId) {\n clearInterval(timeoutId);\n }\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n }, ecommConfig),\n 200\n );\n });\n }\n\n return this.startPromise;\n };\n\n getController = (controllerKey?: string): ViewController | undefined => {\n if (!this.diContainer) {\n const message = \"Can't request controller without starting the service first\";\n\n this.logger.error({\n triggerType: TriggerType.render,\n message,\n payload: {\n serviceName: this.serviceName,\n context: {\n method: 'getController method on ServiceManager'\n }\n }\n });\n\n throw new Error(message);\n }\n\n const controller = controllerKey\n ? this.diContainer.get(controllerKey)\n : undefined;\n\n return controller;\n };\n}\n\nexport const ServiceManager = new ServiceManagerClass();\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceBus } from '@estee/elc-service-bus';\nimport {\n IServiceRegistry,\n IComponentViewController,\n IEcommApp,\n AllServicesTypes\n} from './Service/ServiceUtils';\n\nexport const MOBILE_VERSION_SELECTOR = 'js-mobile-version';\nexport const DESKTOP_VERSION_SELECTOR = 'js-desktop-version';\n\nexport interface ISingleServiceInfo {\n [key: string]: string;\n}\n\nexport interface IServiceInfo {\n [name: string]: ISingleServiceInfo;\n}\n\nexport type ArrayMinOne = {\n 0: T;\n} & T[];\n\ninterface IObjectOfStrings {\n [key: string]: string;\n}\n\ninterface IServiceBusTopics {\n commands: IObjectOfStrings;\n events: IObjectOfStrings;\n queries: IObjectOfStrings;\n}\n\nexport interface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n}\n\nexport interface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\n\nexport interface IRequestOptions {\n debounceInterval?: number;\n}\n\nexport type HeaderType = 'Business-Unit' | 'Authorization' | 'AuthorizationToken' | 'ClientId';\nexport type HeaderObject = { [key in HeaderType]?: string };\nexport type IHeaderSetter = () => Promise;\nexport type IRequestTransformerConfig = { url: string } & RequestInit;\nexport type IRequestTransformer = (config: IRequestTransformerConfig) => Promise;\n\nexport interface IHttpTransport {\n getStaticGlobalHeaders(): HeaderObject;\n setBaseUrl(baseUrl: string): void;\n addGlobalHeaders(headers: HeaderObject): void;\n removeGlobalHeader(headerName: string): void;\n addGlobalHeaderSetter(setter: IHeaderSetter): void;\n removeGlobalHeaderSetter(setter: IHeaderSetter): void;\n addRequestTransformer(transformer: IRequestTransformer): void;\n removeRequestTransformer(transformer: IRequestTransformer): void;\n delete(payload: string | IPayload): Promise;\n post(payload: IPayload): Promise;\n patch(payload: IPayload): Promise;\n put(payload: IPayload): Promise;\n get(payload: string | IGetPayload, IRequestOptions?: IRequestOptions): Promise;\n readonly isAuthFailureHandlingEnabled: boolean;\n setAuthFailureHandlingEnabled(enabled: boolean): void;\n}\n\nexport interface IUtagData {\n [key: string]: string | string[] | undefined | boolean | number | null | number[];\n}\nexport interface IUtagCfgOvrd {\n noview: boolean;\n dom_complete?: boolean;\n lowerqp?: boolean;\n noload?: boolean | number;\n nocookie?: boolean;\n readywait?: boolean | number;\n waittimer?: number;\n}\nexport interface IUtag {\n link(data: IUtagData, cb?: Function): void;\n view(data: IUtagData, cb?: Function): void;\n}\n\nexport interface IFrontendLogger {\n isEnabled?: boolean;\n loggedServices?: {\n [key: string]: {\n isEnabled?: boolean;\n };\n };\n}\n\ninterface ILoggerApiSDK {\n sendLog: Function;\n}\ninterface IDrupalSite {\n translations?: any;\n trackingDataLayer?: any;\n client?: {\n subdomain?: string;\n isMobile?: number;\n };\n frontendLogger?: IFrontendLogger;\n}\nexport type AnyObject = { [key: string]: any };\ntype ITranslationsCollection = { [key: string]: string | IObjectOfStrings };\ntype ViewDataPreloader = {\n addConfigs(configs: AnyObject): void;\n addTranslations(translations: ITranslationsCollection): void;\n getPreloadedConfigs(arg: string[]): AnyObject | null;\n getPreloadedTranslations(arg: string[]): ITranslationsCollection | null;\n preload(): Promise;\n registerTranslationFieldsToPreload(fields?: string[]): void;\n registerConfigFieldsToPreload(fields?: string[]): void;\n};\ninterface IComponentRenderer {\n init(): Promise;\n getDataPreloader(): ViewDataPreloader | null;\n setDataPreloader(arg: ViewDataPreloader): void;\n}\n\ntype IObjectLike = { [key: string]: any } | null;\nexport interface IViewManager {\n loadComponent(): Promise;\n module: React.ComponentType | null;\n controllerFromView: IComponentViewController | null;\n}\nexport interface IViewsManager {\n lazyServicesStarted: boolean;\n getViewManager(viewName: string): IViewManager;\n startService(service: AllServicesTypes): Promise;\n startLazyServices(): Promise;\n}\ndeclare global {\n // Augment Node.js `global`\n namespace NodeJS {\n interface Global {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n site?: IDrupalSite;\n location: Location;\n navigator: Navigator;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n serviceInfo: IServiceInfo;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(\n message: string,\n url: string,\n line: number,\n column: number,\n error: Error\n ): boolean;\n env: string;\n buid: string;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n }\n\n // Augment Browser `window`\n interface Window {\n EcommApp?: IEcommApp;\n ServiceBusTopics: IServiceBusTopics;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n replaceSrc(originalSrc: string): string;\n utag_data: any;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n site?: IDrupalSite;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(message: string, url: string, line: number, column: number, error: Error): boolean;\n env: string;\n buid: string;\n serviceInfo: IServiceInfo;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n\n // Augment Web Worker `self`\n interface WorkerGlobalScope {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n }\n}\n\nexport const isWebRendered = typeof self === 'object' && self.self === self;\n\nexport const root: NodeJS.Global | Window = typeof window === 'undefined' ? global : window;\n\nexport const setupServiceInfo = (serviceInfo: ISingleServiceInfo) => {\n const { name, ...rest } = serviceInfo;\n\n root.serviceInfo = root.serviceInfo || {};\n root.serviceInfo[name] = rest;\n};\n\nexport enum ISandboxEnvironment {\n LIVE = 'live',\n FEATURE = 'feature',\n DEV = 'dev',\n STAGE = 'stage',\n CMS = 'cms',\n PERSONAL = 'personal',\n PRODUCTION = 'production'\n}\n\nexport const getSandboxEnvironment: () => string = () => {\n let urlParts = root.location.hostname.split('.');\n const { LIVE, FEATURE, DEV, STAGE, CMS, PERSONAL } = ISandboxEnvironment;\n\n urlParts = urlParts.filter(part => !['www', 'm'].includes(part));\n const isLive = !(urlParts[0] === 'c') && !(urlParts[0] === 'e');\n\n return isLive\n ? LIVE\n : urlParts.includes(FEATURE)\n ? FEATURE\n : urlParts.includes(DEV)\n ? DEV\n : urlParts.includes(STAGE)\n ? STAGE\n : urlParts.includes(CMS)\n ? CMS\n : PERSONAL;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { LoadableComponent } from '@loadable/component';\n\nexport const SERVICE_VIEW_CLASSNAME = 'elc-service-view-renderer';\nexport const SERVICE_VIEW_RENDERED_ATTRIBUTE = 'data-rendered-view';\n\nexport function getModuleFederatedName(serviceName: string) {\n return serviceName.replace(/-/g, '_');\n}\n\nexport interface ICachedComponentsRegistry {\n [key: string]: React.ComponentType;\n}\n\nexport type RegisteredComponent = () => Promise<{\n ['default']: React.ComponentType;\n}>;\n\ntype AnyObject = { [key: string]: any };\n\nexport interface IAppConfig extends AnyObject {\n env?: string;\n businessUnitId?: string;\n}\n\nexport type ServiceInitializer = (config: IAppConfig) => Promise | void;\n\nexport interface IViewControllerData {\n [key: string]: any;\n}\n\nexport type ViewControllerLoadedMethod = (...args: any[]) => Promise;\n\nexport interface IComponentViewController {\n id?: string;\n loaded?: ViewControllerLoadedMethod;\n data?: IViewControllerData;\n dataState?: IViewControllerData;\n configMergeStrategy?: Function;\n initialize?(...args: any[]): void;\n handleState?(...args: any[]): void;\n setSSRState(data: IViewControllerData): void;\n setId(id: string): void;\n isLoading: boolean;\n}\n\nexport interface IComponent {\n componentName: string;\n component: LoadableComponent;\n viewController?(): IComponentViewController;\n}\n\nexport interface IComponentRegistry {\n [key: string]: IComponent;\n}\n\nexport interface IFederatedService {\n isStarted: true;\n name: string;\n version: string;\n views: string[];\n}\n\ndeclare class EcommApp {\n isStarted: boolean;\n name: string;\n start(appConfig: any): Promise;\n // @TODO: SDFEFND-4051 Removing this method will require a refactor on Drupal side\n register(): void;\n}\n\nexport type IEcommApp = typeof EcommApp;\n\ninterface IBaseServiceRegistryComp {\n isStarted: boolean;\n name: string;\n isLazy?: boolean;\n start(appConfig: IAppConfig): Promise;\n startPromise?: Promise;\n version: string;\n views: string[];\n}\n\nexport type IManifestService = {\n events: string[];\n queries: string[];\n};\n\ntype BaseServiceRegistryComponent = {\n cachedComponentsRegistry: ICachedComponentsRegistry;\n componentsRegistry: IComponentRegistry;\n getView(componentName: string): IComponent | null;\n getViewFromCache(componentName: string): React.ComponentType | null;\n registerView(\n componentName: string,\n component: RegisteredComponent,\n viewController?: () => IComponentViewController\n ): void;\n serviceInitializer: ServiceInitializer;\n serviceBusController?: any;\n setViewInCache(componentName: string, component: React.ComponentType): void;\n};\n// Exported object by the createServiceManifest method\nexport type IManifestServiceRegistryComp = IBaseServiceRegistryComp & IManifestService;\n// Service exported by the register method after applying the manifest\nexport type ILazyServiceRegistryComponent = BaseServiceRegistryComponent &\n IManifestServiceRegistryComp;\n// Service exported by the register method if manifest is not applied (non lazy service)\nexport type IServiceRegistryComponent = BaseServiceRegistryComponent & IBaseServiceRegistryComp;\n\n// Remove after SDFEFND-1853\n// Exported from older versions of the register method (elc-service < v7)\nexport interface IOlderServiceRegistryComponent\n extends Omit<\n IServiceRegistryComponent,\n 'getView' | 'start' | 'views' | 'isLazy' | 'startPromise'\n > {\n getView(componentName: string): IComponent | undefined;\n start(appConfig: IAppConfig): Promise;\n // These keys doesn't exist but this will avoid TS errors\n views?: string[];\n isLazy?: boolean;\n}\n\nexport type AllUpdatedServicesTypes =\n | ILazyServiceRegistryComponent\n | IManifestServiceRegistryComp\n | IServiceRegistryComponent;\n\nexport type AllServicesTypes =\n | AllUpdatedServicesTypes\n | IFederatedService\n | IOlderServiceRegistryComponent;\n\nexport interface IServiceRegistry {\n [key: string]: AllServicesTypes;\n}\n","export type storageKeyType = 'localStorage' | 'sessionStorage';\nexport namespace BrowserStorage {\n export function eraseCookie(name: string) {\n document.cookie = `${name}=; Max-Age=-99999999;`;\n }\n\n export function setCookie(name: string, value: string, daysOrDate: number | Date) {\n let expires = '';\n if (daysOrDate) {\n const expirationDate =\n typeof daysOrDate === 'number'\n ? new Date(Date.now() + daysOrDate * 24 * 60 * 60 * 1000)\n : daysOrDate;\n expires = `; expires=${expirationDate.toUTCString()}`;\n }\n document.cookie = `${name}=${value || ''}${expires};path=/`;\n }\n\n export function getCookie(name: string) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n }\n\n export function getItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n if (window[storageKey].getItem(key) !== null) {\n return window[storageKey].getItem(key);\n }\n } catch (e) {\n console.error(e);\n\n return getCookie(key);\n }\n }\n\n export function setItem(\n key: string,\n value: string,\n storageKey: storageKeyType = 'localStorage'\n ) {\n try {\n window[storageKey].setItem(key, value);\n } catch (e) {\n console.error(e);\n setCookie(key, value, 20);\n }\n }\n\n export function removeItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n window[storageKey].removeItem(key);\n } catch (e) {\n console.error(e);\n eraseCookie(key);\n }\n }\n\n export function storagePolling(key: string, callBack: Function) {\n let storageValue = getItem(key);\n\n const checkForKeyChange = () => {\n const latestValue = getItem(key);\n\n if (storageValue !== latestValue) {\n storageValue = latestValue;\n callBack(latestValue);\n }\n };\n\n return setInterval(checkForKeyChange, 2000);\n }\n}\n","import { queryProvider, serviceQueries } from '@estee/elc-service-bus';\nimport { TranslationsRepository } from '~repositories/TranslationsRepository';\n\nexport class ServiceBusController {\n // eslint-disable-next-line @typescript-eslint/no-parameter-properties\n constructor(private translationsRepository: TranslationsRepository) {}\n\n @queryProvider(serviceQueries.GET_TRANSLATIONS)\n public loadTranslations = async (payload: string[]) => {\n const translations = await this.translationsRepository.getTranslations(payload);\n\n return translations;\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceBus } from '@estee/elc-service-bus';\nimport {\n IServiceRegistry,\n IComponentViewController,\n IEcommApp,\n AllServicesTypes\n} from './Service/ServiceUtils';\n\nexport const MOBILE_VERSION_SELECTOR = 'js-mobile-version';\nexport const DESKTOP_VERSION_SELECTOR = 'js-desktop-version';\n\nexport interface ISingleServiceInfo {\n [key: string]: string;\n}\n\nexport interface IServiceInfo {\n [name: string]: ISingleServiceInfo;\n}\n\nexport type ArrayMinOne = {\n 0: T;\n} & T[];\n\ninterface IObjectOfStrings {\n [key: string]: string;\n}\n\ninterface IServiceBusTopics {\n commands: IObjectOfStrings;\n events: IObjectOfStrings;\n queries: IObjectOfStrings;\n}\n\nexport interface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n}\n\nexport interface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\n\nexport interface IRequestOptions {\n debounceInterval?: number;\n}\n\nexport type HeaderType = 'Business-Unit' | 'Authorization' | 'AuthorizationToken' | 'ClientId';\nexport type HeaderObject = { [key in HeaderType]?: string };\nexport type IHeaderSetter = () => Promise;\nexport type IRequestTransformerConfig = { url: string } & RequestInit;\nexport type IRequestTransformer = (config: IRequestTransformerConfig) => Promise;\n\nexport interface IHttpTransport {\n getStaticGlobalHeaders(): HeaderObject;\n setBaseUrl(baseUrl: string): void;\n addGlobalHeaders(headers: HeaderObject): void;\n removeGlobalHeader(headerName: string): void;\n addGlobalHeaderSetter(setter: IHeaderSetter): void;\n removeGlobalHeaderSetter(setter: IHeaderSetter): void;\n addRequestTransformer(transformer: IRequestTransformer): void;\n removeRequestTransformer(transformer: IRequestTransformer): void;\n delete(payload: string | IPayload): Promise;\n post(payload: IPayload): Promise;\n patch(payload: IPayload): Promise;\n put(payload: IPayload): Promise;\n get(payload: string | IGetPayload, IRequestOptions?: IRequestOptions): Promise;\n readonly isAuthFailureHandlingEnabled: boolean;\n setAuthFailureHandlingEnabled(enabled: boolean): void;\n}\n\nexport interface IUtagData {\n [key: string]: string | string[] | undefined | boolean | number | null | number[];\n}\nexport interface IUtagCfgOvrd {\n noview: boolean;\n dom_complete?: boolean;\n lowerqp?: boolean;\n noload?: boolean | number;\n nocookie?: boolean;\n readywait?: boolean | number;\n waittimer?: number;\n}\nexport interface IUtag {\n link(data: IUtagData, cb?: Function): void;\n view(data: IUtagData, cb?: Function): void;\n}\n\nexport interface IFrontendLogger {\n isEnabled?: boolean;\n loggedServices?: {\n [key: string]: {\n isEnabled?: boolean;\n };\n };\n}\n\ninterface ILoggerApiSDK {\n sendLog: Function;\n}\ninterface IDrupalSite {\n translations?: any;\n trackingDataLayer?: any;\n client?: {\n subdomain?: string;\n isMobile?: number;\n };\n frontendLogger?: IFrontendLogger;\n}\nexport type AnyObject = { [key: string]: any };\ntype ITranslationsCollection = { [key: string]: string | IObjectOfStrings };\ntype ViewDataPreloader = {\n addConfigs(configs: AnyObject): void;\n addTranslations(translations: ITranslationsCollection): void;\n getPreloadedConfigs(arg: string[]): AnyObject | null;\n getPreloadedTranslations(arg: string[]): ITranslationsCollection | null;\n preload(): Promise;\n registerTranslationFieldsToPreload(fields?: string[]): void;\n registerConfigFieldsToPreload(fields?: string[]): void;\n};\ninterface IComponentRenderer {\n init(): Promise;\n getDataPreloader(): ViewDataPreloader | null;\n setDataPreloader(arg: ViewDataPreloader): void;\n}\n\ntype IObjectLike = { [key: string]: any } | null;\nexport interface IViewManager {\n loadComponent(): Promise;\n module: React.ComponentType | null;\n controllerFromView: IComponentViewController | null;\n}\nexport interface IViewsManager {\n lazyServicesStarted: boolean;\n getViewManager(viewName: string): IViewManager;\n startService(service: AllServicesTypes): Promise;\n startLazyServices(): Promise;\n}\ndeclare global {\n // Augment Node.js `global`\n namespace NodeJS {\n interface Global {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n site?: IDrupalSite;\n location: Location;\n navigator: Navigator;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n serviceInfo: IServiceInfo;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(\n message: string,\n url: string,\n line: number,\n column: number,\n error: Error\n ): boolean;\n env: string;\n buid: string;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n }\n\n // Augment Browser `window`\n interface Window {\n EcommApp?: IEcommApp;\n ServiceBusTopics: IServiceBusTopics;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n replaceSrc(originalSrc: string): string;\n utag_data: any;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n site?: IDrupalSite;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(message: string, url: string, line: number, column: number, error: Error): boolean;\n env: string;\n buid: string;\n serviceInfo: IServiceInfo;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n\n // Augment Web Worker `self`\n interface WorkerGlobalScope {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n }\n}\n\nexport const isWebRendered = typeof self === 'object' && self.self === self;\n\nexport const root: NodeJS.Global | Window = typeof window === 'undefined' ? global : window;\n\nexport const setupServiceInfo = (serviceInfo: ISingleServiceInfo) => {\n const { name, ...rest } = serviceInfo;\n\n root.serviceInfo = root.serviceInfo || {};\n root.serviceInfo[name] = rest;\n};\n\nexport enum ISandboxEnvironment {\n LIVE = 'live',\n FEATURE = 'feature',\n DEV = 'dev',\n STAGE = 'stage',\n CMS = 'cms',\n PERSONAL = 'personal',\n PRODUCTION = 'production'\n}\n\nexport const getSandboxEnvironment: () => string = () => {\n let urlParts = root.location.hostname.split('.');\n const { LIVE, FEATURE, DEV, STAGE, CMS, PERSONAL } = ISandboxEnvironment;\n\n urlParts = urlParts.filter(part => !['www', 'm'].includes(part));\n const isLive = !(urlParts[0] === 'c') && !(urlParts[0] === 'e');\n\n return isLive\n ? LIVE\n : urlParts.includes(FEATURE)\n ? FEATURE\n : urlParts.includes(DEV)\n ? DEV\n : urlParts.includes(STAGE)\n ? STAGE\n : urlParts.includes(CMS)\n ? CMS\n : PERSONAL;\n};\n","export type storageKeyType = 'localStorage' | 'sessionStorage';\nexport namespace BrowserStorage {\n export function eraseCookie(name: string) {\n document.cookie = `${name}=; Max-Age=-99999999;`;\n }\n\n export function setCookie(name: string, value: string, daysOrDate: number | Date) {\n let expires = '';\n if (daysOrDate) {\n const expirationDate =\n typeof daysOrDate === 'number'\n ? new Date(Date.now() + daysOrDate * 24 * 60 * 60 * 1000)\n : daysOrDate;\n expires = `; expires=${expirationDate.toUTCString()}`;\n }\n document.cookie = `${name}=${value || ''}${expires};path=/`;\n }\n\n export function getCookie(name: string) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n }\n\n export function getItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n if (window[storageKey].getItem(key) !== null) {\n return window[storageKey].getItem(key);\n }\n } catch (e) {\n console.error(e);\n\n return getCookie(key);\n }\n }\n\n export function setItem(\n key: string,\n value: string,\n storageKey: storageKeyType = 'localStorage'\n ) {\n try {\n window[storageKey].setItem(key, value);\n } catch (e) {\n console.error(e);\n setCookie(key, value, 20);\n }\n }\n\n export function removeItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n window[storageKey].removeItem(key);\n } catch (e) {\n console.error(e);\n eraseCookie(key);\n }\n }\n\n export function storagePolling(key: string, callBack: Function) {\n let storageValue = getItem(key);\n\n const checkForKeyChange = () => {\n const latestValue = getItem(key);\n\n if (storageValue !== latestValue) {\n storageValue = latestValue;\n callBack(latestValue);\n }\n };\n\n return setInterval(checkForKeyChange, 2000);\n }\n}\n","import {\n IAppConfig,\n IFederatedService,\n ServiceInitializer,\n root\n} from '@estee/elc-universal-utils';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\n\nroot.ServiceRegistry = root.ServiceRegistry || {};\n\nconst noop = async () => {};\n\nexport abstract class BaseService {\n private startPromise: Promise;\n public isStarted: boolean = false;\n protected logger: ELCLogger;\n\n static setViews(serviceName: string, name: string, version: string, views: string[]) {\n root.ServiceRegistry[serviceName] = {\n name,\n version,\n views,\n isStarted: true\n } as IFederatedService;\n }\n\n constructor(\n public name: string,\n protected version: string,\n protected serviceInitializer: ServiceInitializer | null = null\n ) {}\n\n private async initializeService(appConfig: IAppConfig): Promise {\n try {\n const initializer = this.serviceInitializer || noop;\n await initializer(appConfig);\n this.isStarted = true;\n } catch (error) {\n this.logger.error({\n message: `Could not start service ${this.name}`,\n triggerType: TriggerType.render,\n payload: {\n error,\n context: {\n serviceRegistry: root.ServiceRegistry\n }\n }\n });\n } finally {\n this.isStarted = true;\n }\n }\n\n public start(appConfig: IAppConfig): Promise {\n if (!this.startPromise && !this.isStarted) {\n this.logger =\n this.logger ||\n new ELCLogger({\n serviceName: this.name,\n environment: appConfig.env || root.env,\n buid: appConfig.businessUnitId || root.buid,\n serviceVersion: this.version\n });\n\n this.startPromise = this.initializeService(appConfig);\n }\n\n return this.startPromise;\n }\n}\n","import { BaseService } from '@estee/elc-service';\nimport { ServiceInitializer } from '@estee/elc-universal-utils';\n\nconst { name, version } = __serviceInfo__;\n\nexport class TranslationsService extends BaseService {\n constructor(serviceInitializer: ServiceInitializer) {\n super(name, version, serviceInitializer);\n }\n}\n\nexport default {\n configStore: 'CONFIG_STORE',\n httpTransport: 'HTTP_TRANSPORT',\n translationsApiSdk: 'API_SDK',\n translationsRepository: 'TRANSLATIONS_REPOSITORY',\n translationsService: 'TRANSLATIONS_SERVICE',\n serviceBusController: 'SERVICE_BUS_CONTROLLER'\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = ElcRuntime.HypoContainer;","const __WEBPACK_NAMESPACE_OBJECT__ = ElcRuntime.HttpTransport;","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ServiceBus } from '@estee/elc-service-bus';\nimport {\n IServiceRegistry,\n IComponentViewController,\n AllServicesTypes\n} from './Service/ServiceUtils';\n\nexport const MOBILE_VERSION_SELECTOR = 'js-mobile-version';\nexport const DESKTOP_VERSION_SELECTOR = 'js-desktop-version';\n\nexport interface ISingleServiceInfo {\n [key: string]: string;\n}\n\nexport interface IServiceInfo {\n [name: string]: ISingleServiceInfo;\n}\n\nexport type ArrayMinOne = {\n 0: T;\n} & T[];\n\ninterface IObjectOfStrings {\n [key: string]: string;\n}\n\ninterface IServiceBusTopics {\n commands: IObjectOfStrings;\n events: IObjectOfStrings;\n queries: IObjectOfStrings;\n}\n\nexport interface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n}\n\nexport interface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\n\nexport interface IRequestOptions {\n debounceInterval?: number;\n}\n\nexport type HeaderType = 'Business-Unit' | 'Authorization' | 'AuthorizationToken' | 'ClientId';\nexport type HeaderObject = { [key in HeaderType]?: string };\nexport type IHeaderSetter = () => Promise;\nexport type IRequestTransformerConfig = { url: string } & RequestInit;\nexport type IRequestTransformer = (config: IRequestTransformerConfig) => Promise;\n\nexport interface IHttpTransport {\n getStaticGlobalHeaders(): HeaderObject;\n setBaseUrl(baseUrl: string): void;\n addGlobalHeaders(headers: HeaderObject): void;\n removeGlobalHeader(headerName: string): void;\n addGlobalHeaderSetter(setter: IHeaderSetter): void;\n removeGlobalHeaderSetter(setter: IHeaderSetter): void;\n addRequestTransformer(transformer: IRequestTransformer): void;\n removeRequestTransformer(transformer: IRequestTransformer): void;\n delete(payload: string | IPayload): Promise;\n post(payload: IPayload): Promise;\n patch(payload: IPayload): Promise;\n put(payload: IPayload): Promise;\n get(payload: string | IGetPayload, IRequestOptions?: IRequestOptions): Promise;\n readonly isAuthFailureHandlingEnabled: boolean;\n setAuthFailureHandlingEnabled(enabled: boolean): void;\n}\n\nexport interface IUtagData {\n [key: string]: string | string[] | undefined | boolean | number | null | number[];\n}\nexport interface IUtagCfgOvrd {\n noview: boolean;\n dom_complete?: boolean;\n lowerqp?: boolean;\n noload?: boolean | number;\n nocookie?: boolean;\n readywait?: boolean | number;\n waittimer?: number;\n}\nexport interface IUtag {\n link(data: IUtagData, cb?: Function): void;\n view(data: IUtagData, cb?: Function): void;\n}\n\nexport interface IFrontendLogger {\n isEnabled?: boolean;\n loggedServices?: {\n [key: string]: {\n isEnabled?: boolean;\n };\n };\n}\n\ninterface ILoggerApiSDK {\n sendLog: Function;\n}\ninterface IDrupalSite {\n translations?: any;\n trackingDataLayer?: any;\n client?: {\n subdomain?: string;\n isMobile?: number;\n };\n frontendLogger?: IFrontendLogger;\n}\nexport type AnyObject = { [key: string]: any };\ntype ITranslationsCollection = { [key: string]: string | IObjectOfStrings };\ntype ViewDataPreloader = {\n addConfigs(configs: AnyObject): void;\n addTranslations(translations: ITranslationsCollection): void;\n getPreloadedConfigs(arg: string[]): AnyObject | null;\n getPreloadedTranslations(arg: string[]): ITranslationsCollection | null;\n preload(): Promise;\n registerTranslationFieldsToPreload(fields?: string[]): void;\n registerConfigFieldsToPreload(fields?: string[]): void;\n};\ninterface IComponentRenderer {\n init(): Promise;\n getDataPreloader(): ViewDataPreloader | null;\n setDataPreloader(arg: ViewDataPreloader): void;\n}\n\ntype IObjectLike = { [key: string]: any } | null;\nexport interface IViewManager {\n loadComponent(): Promise;\n module: React.ComponentType | null;\n controllerFromView: IComponentViewController | null;\n}\nexport interface IViewsManager {\n lazyServicesStarted: boolean;\n getViewManager(viewName: string): IViewManager;\n startService(service: AllServicesTypes): Promise;\n startLazyServices(): Promise;\n}\ndeclare global {\n // Augment Node.js `global`\n namespace NodeJS {\n interface Global {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n site?: IDrupalSite;\n location: Location;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n serviceInfo: IServiceInfo;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(\n message: string,\n url: string,\n line: number,\n column: number,\n error: Error\n ): boolean;\n env: string;\n buid: string;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n }\n\n // Augment Browser `window`\n interface Window {\n ServiceBusTopics: IServiceBusTopics;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n replaceSrc(originalSrc: string): string;\n utag_data: any;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n site?: IDrupalSite;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n getServiceVersions(): void;\n __ssr: boolean;\n onerror(message: string, url: string, line: number, column: number, error: Error): boolean;\n env: string;\n buid: string;\n serviceInfo: IServiceInfo;\n loggerApiSDK: ILoggerApiSDK;\n requestIdleCallback: Function;\n cancelIdleCallback: Function;\n }\n\n // Augment Web Worker `self`\n interface WorkerGlobalScope {\n ServiceBusTopics: IServiceBusTopics;\n ServiceRegistry: IServiceRegistry;\n GlobalServiceBus: ServiceBus;\n HttpTransport: IHttpTransport;\n __translationsCache__: { [key: string]: string };\n __configsCache__: { [key: string]: any };\n getPreloadedConfigs(fields?: string[]): IObjectLike;\n addConfigs(configs: object): void;\n getPreloadedTranslations(fields?: string[]): IObjectLike;\n addTranslations(translations: object): void;\n replaceSrc(originalSrc: string): string;\n utag_data: IUtagData;\n utag_cfg_ovrd: IUtagCfgOvrd;\n utag: IUtag;\n location: Location;\n addEventListener(a: string, b: Function): void;\n ComponentRenderer: IComponentRenderer;\n ViewsManager: IViewsManager;\n registerTranslationFieldsToPreload: Function;\n registerConfigFieldsToPreload: Function;\n }\n}\n\nexport const isWebRendered = typeof self === 'object' && self.self === self;\n\nexport const root: NodeJS.Global | Window =\n (isWebRendered && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n window;\n\nexport const setupServiceInfo = (serviceInfo: ISingleServiceInfo) => {\n const { name, ...rest } = serviceInfo;\n\n root.serviceInfo = root.serviceInfo || {};\n root.serviceInfo[name] = rest;\n};\n\nexport enum ISandboxEnvironment {\n LIVE = 'live',\n FEATURE = 'feature',\n DEV = 'dev',\n STAGE = 'stage',\n CMS = 'cms',\n PERSONAL = 'personal',\n PRODUCTION = 'production'\n}\n\nexport const getSandboxEnvironment: () => string = () => {\n let urlParts = root.location.hostname.split('.');\n const { LIVE, FEATURE, DEV, STAGE, CMS, PERSONAL } = ISandboxEnvironment;\n\n urlParts = urlParts.filter(part => !['www', 'm'].includes(part));\n const isLive = !(urlParts[0] === 'c') && !(urlParts[0] === 'e');\n\n return isLive\n ? LIVE\n : urlParts.includes(FEATURE)\n ? FEATURE\n : urlParts.includes(DEV)\n ? DEV\n : urlParts.includes(STAGE)\n ? STAGE\n : urlParts.includes(CMS)\n ? CMS\n : PERSONAL;\n};\n","export type storageKeyType = 'localStorage' | 'sessionStorage';\nexport namespace BrowserStorage {\n export function eraseCookie(name: string) {\n document.cookie = `${name}=; Max-Age=-99999999;`;\n }\n\n export function setCookie(name: string, value: string, daysOrDate: number | Date) {\n let expires = '';\n if (daysOrDate) {\n const expirationDate =\n typeof daysOrDate === 'number'\n ? new Date(Date.now() + daysOrDate * 24 * 60 * 60 * 1000)\n : daysOrDate;\n expires = `; expires=${expirationDate.toUTCString()}`;\n }\n document.cookie = `${name}=${value || ''}${expires};path=/`;\n }\n\n export function getCookie(name: string) {\n const nameEQ = `${name}=`;\n const ca = document.cookie.split(';');\n // eslint-disable-next-line @typescript-eslint/prefer-for-of\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) {\n return c.substring(nameEQ.length, c.length);\n }\n }\n\n return null;\n }\n\n export function getItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n if (window[storageKey].getItem(key) !== null) {\n return window[storageKey].getItem(key);\n }\n } catch (e) {\n console.error(e);\n\n return getCookie(key);\n }\n }\n\n export function setItem(\n key: string,\n value: string,\n storageKey: storageKeyType = 'localStorage'\n ) {\n try {\n window[storageKey].setItem(key, value);\n } catch (e) {\n console.error(e);\n setCookie(key, value, 20);\n }\n }\n\n export function removeItem(key: string, storageKey: storageKeyType = 'localStorage') {\n try {\n window[storageKey].removeItem(key);\n } catch (e) {\n console.error(e);\n eraseCookie(key);\n }\n }\n\n export function storagePolling(key: string, callBack: Function) {\n let storageValue = getItem(key);\n\n const checkForKeyChange = () => {\n const latestValue = getItem(key);\n\n if (storageValue !== latestValue) {\n storageValue = latestValue;\n callBack(latestValue);\n }\n };\n\n return setInterval(checkForKeyChange, 2000);\n }\n}\n","import { HeaderType, HeaderObject, root } from '@estee/elc-universal-utils';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\n\nexport const AUTHORIZATION_HEADER_NAME = 'AuthorizationToken';\nexport const BUSINESS_UNIT_HEADER_NAME = 'Business-Unit';\n\nexport interface IError {\n status: number;\n}\nexport interface IDataMapperOperations {\n [key: string]: Function | undefined;\n request?(request: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [k: string]: any;\n }): {};\n response?(response: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [k: string]: any;\n }): {};\n}\nexport interface IDataMappings {\n [key: string]: IDataMapperOperations;\n}\nexport interface IResponse {\n data: T;\n reponseHeaders: Headers | {};\n}\nexport interface IPayload {\n url: string;\n body?: {};\n options?: {};\n headers?: {};\n returnAsPlainText?: boolean;\n}\nexport interface IGetPayload {\n url: string;\n options?: {};\n headers?: {};\n params?: {};\n}\nexport interface IRequestOptions {\n debounceInterval?: number;\n bypassCache?: boolean;\n}\nexport interface IHttpTransport {\n addGlobalHeaders(header: HeaderObject): void;\n removeGlobalHeader(headerName: string): 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}\nexport interface IDataMapper {\n // eslint-disable-next-line @typescript-eslint/ban-types\n mapRequest(name: string, request: Object): {};\n // eslint-disable-next-line @typescript-eslint/ban-types\n mapResponse(name: string, response: Object): {};\n dataMappings?: IDataMappings;\n}\n\nexport interface IConfig {\n cartId?: string;\n httpTransport: IHttpTransport;\n dataMapper?: IDataMapper;\n businessUnitId?: string;\n drupalDomain?: string;\n}\n\nexport class Api {\n protected bearerToken: string;\n protected httpTransport: IHttpTransport;\n protected businessUnitId: string | undefined;\n private logger: ELCLogger;\n\n constructor(configStore: IConfig, serviceName: string, serviceVersion: string) {\n this.httpTransport = configStore.httpTransport;\n this.businessUnitId = configStore.businessUnitId;\n this.logger = new ELCLogger({ serviceName, serviceVersion });\n }\n\n public addHeader(header: HeaderObject) {\n this.httpTransport.addGlobalHeaders(header);\n }\n\n public removeHeader(headerName: HeaderType) {\n this.httpTransport.removeGlobalHeader(headerName);\n }\n\n public setBearerToken(bearerToken: string) {\n if (bearerToken) {\n this.addHeader({\n [AUTHORIZATION_HEADER_NAME]: `${bearerToken}`\n });\n } else {\n this.removeHeader(AUTHORIZATION_HEADER_NAME);\n }\n }\n protected delete = async (payload: IPayload) => {\n let response: IResponse = { data: {} as T, reponseHeaders: {} };\n\n try {\n response = await this.httpTransport.delete(payload);\n } catch (e) {\n this.handleError(e, 'delete', payload);\n }\n\n return response;\n };\n\n protected get = async (\n payload: IGetPayload | string,\n { debounceInterval = 200, bypassCache = false }: IRequestOptions = {}\n ) => {\n let response: IResponse = { data: {} as T, reponseHeaders: {} };\n\n try {\n response = await this.httpTransport.get(payload, {\n debounceInterval,\n bypassCache\n });\n } catch (e) {\n this.handleError(e, 'get', payload);\n }\n\n return response;\n };\n\n protected patch = async (payload: IPayload) => {\n let response: IResponse = { data: {} as T, reponseHeaders: {} };\n\n try {\n response = await this.httpTransport.patch(payload);\n } catch (e) {\n this.handleError(e, 'patch', payload);\n }\n\n return response;\n };\n\n protected post = async (payload: IPayload) => {\n let response: IResponse = { data: {} as T, reponseHeaders: {} };\n try {\n response = await this.httpTransport.post(payload);\n } catch (e) {\n this.handleError(e, 'post', payload);\n }\n\n return response;\n };\n protected put = async (payload: IPayload) => {\n let response: IResponse = { data: {} as T, reponseHeaders: {} };\n\n try {\n response = await this.httpTransport.put(payload);\n } catch (e) {\n this.handleError(e, 'put', payload);\n }\n\n return response;\n };\n\n private handleError = (e: Error, requestType: string, originalPayload: IPayload | string) => {\n this.logger.error({\n triggerType: TriggerType.api,\n message: `${e}`,\n payload: {\n context: {\n subdomain: root.site && root.site.client && root.site.client.subdomain,\n originalPayload,\n requestType\n },\n error: e\n }\n });\n };\n}\n","import { Api, IConfig } from '@estee/elc-service';\nimport { root, BrowserStorage } from '@estee/elc-universal-utils';\n\nconst API_HOST_COOKIE = 'ELC_API_HOST';\nconst API_AUTH_COOKIE = 'ELC_API_AUTH';\nconst REV_TAG_COOKIE = 'ELC_SITE_TAG';\nconst LOCALHOST = 'localhost';\nconst AUTOTEST_DOMAIN = 'api.elco.cloud';\nconst MOBILE_CHANNEL = 'mobile';\n\nexport interface IDrupalDefaultHeaders {\n Authorization?: string;\n Host?: string;\n}\n\ninterface IDrupalAPIFetch {\n url: string;\n headers?: {};\n}\n\nexport class DrupalApi extends Api {\n protected apiHost: string;\n protected channel: string;\n protected revTag: string;\n protected static drupalDomain: string;\n\n constructor(config: IConfig, serviceName: string, serviceVersion: string) {\n super(config, serviceName, serviceVersion);\n DrupalApi.drupalDomain = config.drupalDomain || '';\n this.apiHost = DrupalApi.getApiHost();\n this.channel = DrupalApi.getChannel();\n this.revTag = DrupalApi.getRevTag();\n }\n\n protected fetch = async ({ url, headers = {} }: IDrupalAPIFetch) => {\n const combinedHeaders = {\n ...DrupalApi.getHeaders(),\n ...headers\n };\n\n if (DrupalApi.useApiCookies() && (!DrupalApi.getApiHost() || !DrupalApi.getApiAuth())) {\n DrupalApi.displayMessages();\n\n return { data: {}, headers: null };\n }\n\n return this.get(\n {\n url,\n headers: combinedHeaders\n },\n { debounceInterval: 100 }\n );\n };\n\n private static displayMessages(): void {\n console.warn(\n '%cATTENTION!',\n 'font-weight: bold; font-size: 50px; color: red; text-shadow: 3px 3px 0 rgb(217,31,38), 6px 6px 0 rgb(226,91,14), 9px 9px 0 rgb(245,221,8), 12px 12px 0 rgb(5,148,68), 15px 15px 0 rgb(2,135,206), 18px 18px 0 rgb(4,77,145), 21px 21px 0 rgb(42,21,113)'\n );\n console.warn(\n `%cDrupalApi: %cmissing ${API_HOST_COOKIE} and/or ${API_AUTH_COOKIE} cookies (elc-drupal-api)`,\n 'font-weight: bold',\n 'font-weight: normal'\n );\n }\n\n private static isLocalhost(): boolean {\n return root.location && root.location.hostname.indexOf(LOCALHOST) > -1;\n }\n\n private static isAutotest(): boolean {\n return root.location && root.location.hostname.indexOf(AUTOTEST_DOMAIN) > -1;\n }\n\n private static useApiCookies(): boolean {\n return (DrupalApi.isLocalhost() || DrupalApi.isAutotest()) && !DrupalApi.drupalDomain;\n }\n\n private static getHeaders(): IDrupalDefaultHeaders {\n const headers: IDrupalDefaultHeaders = {};\n\n if (DrupalApi.getApiAuth()) {\n headers.Authorization = `Basic ${Buffer.from(DrupalApi.getApiAuth()).toString(\n 'base64'\n )}`;\n }\n\n return headers;\n }\n\n private static getApiHost(): string {\n const host = BrowserStorage.getCookie(API_HOST_COOKIE);\n\n return DrupalApi.useApiCookies() && !!host ? host : '';\n }\n\n private static getApiAuth(): string {\n const auth = BrowserStorage.getCookie(API_AUTH_COOKIE);\n\n return DrupalApi.useApiCookies() && !!auth ? auth : '';\n }\n\n private static getChannel(): string {\n return root.location && root.location.host.search(/m[tmp]*\\./) > -1\n ? MOBILE_CHANNEL\n : '';\n }\n\n private static getRevTag(): string {\n const revisionTag = BrowserStorage.getCookie(REV_TAG_COOKIE);\n\n return !!revisionTag ? revisionTag : '';\n }\n}\n","import { DrupalApi } from '@estee/elc-drupal-api';\nimport { IConfig, ITranslationsCollections } from '@estee/elc-service';\n\nconst { name, version } = __serviceInfo__;\n\nexport class TranslationsApiSdk extends DrupalApi {\n private translationsApiBasePath: string = 'elc_api/translations';\n private drupalDomain: string;\n\n constructor(config: IConfig) {\n super(config, name, version);\n this.drupalDomain = config.drupalDomain || '';\n }\n\n public fetchTranslations = async (payload: string[]) => {\n const url = this.getApiUrl(payload);\n const response = await this.fetch({ url });\n\n return response.data;\n };\n\n private static doCleanRequestPayload(payload: string[]) {\n return payload\n .sort()\n .map((p) => `${p}:*`)\n .join('&');\n }\n\n private getApiUrl(payload: string[]): string {\n const cleanPayload = TranslationsApiSdk.doCleanRequestPayload(payload);\n const host = this.drupalDomain || this.apiHost;\n const channel = this.channel;\n const tag = this.revTag;\n const args = [host, this.translationsApiBasePath, cleanPayload];\n const extras = [`buid:${this.businessUnitId}`];\n\n if (channel) {\n extras.push(`channel:${channel}`);\n }\n\n if (tag) {\n extras.push(`rev_tag:${tag}`);\n }\n\n args.push(extras.join('&'));\n\n return args.join('/');\n }\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = ElcRuntime.mobx;","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { observable, action } from 'mobx';\n\nexport class ConfigStore {\n @observable public config: any;\n\n constructor(config: any) {\n this.updateConfig(config);\n }\n\n @action\n public updateConfig(config: any) {\n this.config = { ...config };\n }\n}\n","import { root } from '@estee/elc-universal-utils';\nimport { ELCLogger, TriggerType } from '@estee/elc-logging';\nimport { ITranslationsCollection, ITranslationsCollections } from '@estee/elc-service';\nimport { TranslationsApiSdk } from '~api/TranslationsApiSdk';\nimport { ConfigStore } from '~setup/ConfigStore';\nimport { diContainer } from '~setup/diContainer';\nimport serviceNames from '~setup/TranslationsService';\n\nconst { name, version } = __serviceInfo__;\n\nexport interface ITranslationRepositoryConfig {\n configStore: ConfigStore;\n}\n\n/**\n * Given an array of requested fields, this generates the legacy format for\n * which an API request can be generated.\n *\n * Input:\n * ['addToWishlist', 'taxNumberErrorMessage']\n *\n * Output:\n * {\n * elc_product: {\n * add_to_wishlist: ''\n * },\n * elc_errors: {\n * taxNumberErrorMessage: ''\n * }\n * }\n *\n * @param fieldsRequested Array of field names requested from the component\n * @param fullDataMap Output from getTranslationsMap, persisted from the repository\n */\nconst generateLegacyFormat = (fieldsRequested: string[], fullDataMap: ITranslationsCollection) => {\n return fieldsRequested.reduce((accumulator: ITranslationsCollections, field: string) => {\n if (!fullDataMap[field]) {\n return accumulator;\n }\n\n const key = fullDataMap[field] as string;\n\n const [collectionName, collectionKey] = key.split('.');\n\n if (!(collectionName in accumulator)) {\n accumulator[collectionName] = {};\n }\n accumulator[collectionName][collectionKey] = '';\n\n return accumulator;\n }, {});\n};\n\n/**\n * Convert the exported translations mapping files (ex: elc_product.ts) into a single\n * large object of key/value pairs.\n *\n * Example:\n * {\n * addToWishlist: \"elc_product.add_to_wishlist\",\n * taxNumberErrorMessage: \"elc_errors.taxNumberErrorMessage\"\n * }\n */\nconst getTranslationsMap = (translationsCollections: ITranslationsCollections) => {\n return Object.keys(translationsCollections).reduce>(\n (accum, collectionName) => {\n Object.keys(translationsCollections[collectionName]).reduce>(\n (data, key) => {\n const legacyKey = translationsCollections[collectionName][key];\n\n if (legacyKey.indexOf('.') !== -1) {\n throw new Error('Invalid key name. Keys must not contain periods.');\n }\n\n data[key] = `${collectionName}.${legacyKey}`;\n\n return data;\n },\n accum\n );\n\n return accum;\n },\n {}\n );\n};\n\nexport class TranslationsRepository {\n private translations: ITranslationsCollections = {};\n private translationsCollections: ITranslationsCollections;\n private translationsApiSdk: TranslationsApiSdk;\n private translationMapping: ITranslationsCollection;\n private config: ITranslationRepositoryConfig;\n private logger: ELCLogger = new ELCLogger({\n serviceName: name,\n environment: root.env,\n buid: root.buid,\n serviceVersion: version\n });\n private windowTranslations: Promise;\n private getTranslationsMapping = () => import('../translation-mappings');\n\n constructor() {\n this.translationsApiSdk = diContainer.get(serviceNames.translationsApiSdk);\n this.getTranslationsMapping()\n .then(({ translationsCollections }) => {\n this.translationsCollections = translationsCollections;\n this.translationMapping = getTranslationsMap(translationsCollections);\n })\n .catch((error) => {\n this.logger.error({\n triggerType: TriggerType.api,\n message: 'Error getting translations collections',\n payload: { error }\n });\n });\n this.config = {\n configStore: diContainer.get(serviceNames.configStore)\n };\n this.windowTranslations = this.processTranslationsFromWindow().catch((error) => {\n this.logger.error({\n triggerType: TriggerType.api,\n message: 'Error getting translations from window',\n payload: { error }\n });\n\n return this.translations;\n });\n }\n\n private processTranslationsFromWindow = async () => {\n // Load collections from window.site.translations, if available\n let data = this.loadFromWindow;\n\n if (Object.keys(data).length === 0) {\n await this.getTranslationsMapping();\n // Load missing collections from the API and keep them in memory\n data = await this.loadFromApi(Object.keys(this.translationsCollections));\n root.site = { translations: data };\n }\n\n this.setTranslations(data);\n\n return data;\n };\n\n /**\n * Get translations for the query provider service\n *\n * @param fieldsRequested Fields to retrieve\n *\n * @return Regular object of key/value pairs with translations\n */\n public getTranslations = async (fieldsRequested: string[]): Promise<{}> => {\n fieldsRequested.sort();\n\n if (fieldsRequested.length === 0) {\n const error = new Error('Requested translations fields are empty');\n this.logger.error({\n message: error.message,\n triggerType: TriggerType.translation,\n payload: {\n error\n }\n });\n\n return {};\n }\n\n await this.getTranslationsMapping();\n await this.hydrateTranslations(fieldsRequested);\n\n return fieldsRequested.reduce((accumulator: ITranslationsCollection, field: string) => {\n Object.defineProperty(accumulator, field, {\n value: this.getFieldValue(field),\n writable: false,\n enumerable: true\n });\n\n return accumulator;\n }, {});\n };\n\n /**\n * Given a field lookup key (ex. 'product.add_to_bag'), get the hydrated\n * value from the persistent data storage\n *\n * @param field Field lookup key\n */\n private getFieldValue = (field: string): string => {\n const { translations } = this;\n const fieldMap = field in this.translationMapping ? this.translationMapping[field] : false;\n\n if (!fieldMap) {\n const error = new Error(`Translation field ${field} not found`);\n this.logger.warning({\n message: error.message,\n triggerType: TriggerType.translation,\n payload: {\n error\n }\n });\n\n return '';\n }\n\n const [collectionName, legacyFieldName] = fieldMap.split('.');\n if (collectionName in translations && legacyFieldName in translations[collectionName]) {\n return translations[collectionName][legacyFieldName];\n }\n\n return '';\n };\n\n /**\n * Central method of hydrating translations from multiple sources\n *\n * @param fieldsRequested Field names to retrieve\n */\n private hydrateTranslations = async (fieldsRequested: string[]): Promise => {\n const payload = generateLegacyFormat(fieldsRequested, this.translationMapping);\n\n // Use the payload to set the initial translations dataset\n this.setTranslations(payload);\n\n // In case fetch hasn't finished yet\n const windowTranslations = await this.windowTranslations;\n this.setTranslations(windowTranslations);\n\n // Do final cleanup on the translations datasets\n const data = this.cleanTranslations();\n this.setTranslations(data);\n };\n\n /**\n * Hydrate the translations given a new legacy format dataset\n */\n private setTranslations(data: ITranslationsCollections): void {\n Object.entries(data).forEach(([collectionName, collectionValue]) => {\n Object.defineProperty(this.translations, collectionName, {\n value: {\n ...this.translations[collectionName],\n ...collectionValue\n },\n writable: true,\n enumerable: true\n });\n });\n }\n\n private addDefaultVals(collectionName: string, collection: ITranslationsCollection) {\n const { configStore } = this.config;\n const showPlaceholder =\n configStore.config && configStore.config.showTranslationsPlaceholder !== false;\n\n // Add \":: ::\" values to any missing items based on AppEcomm config\n return Object.entries(collection).reduce(\n (accumulator, [collectionKey, collectionValue]) => {\n if (!collectionValue) {\n Object.defineProperty(accumulator, collectionKey, {\n value: showPlaceholder ? `::${collectionName}.${collectionKey}::` : '',\n writable: true,\n enumerable: true\n });\n }\n\n return accumulator;\n },\n {}\n );\n }\n\n /**\n * Helper function to clean up empty translation strings\n * This replaces any blank values with \":: ::\"\n */\n private cleanTranslations(): ITranslationsCollections {\n return Object.entries(this.translations).reduce(\n (accumulator: ITranslationsCollections, [collectionName, collectionValue]) => {\n const newCollection = (\n this.addDefaultVals(collectionName, collectionValue)\n );\n\n accumulator[collectionName] = {\n ...collectionValue,\n ...newCollection\n };\n\n return accumulator;\n },\n {}\n );\n }\n\n /**\n * Load translations from site.translations.\n * Note: no need to pass the array of collections here since\n * we just hydrate with all data.\n */\n get loadFromWindow(): ITranslationsCollections {\n return (root && root.site && root.site.translations) || {};\n }\n\n /**\n * Load translations using the API when all other options have been exhausted\n *\n * @param collections Array of collection names\n */\n private loadFromApi = (collections: string[]) => {\n return this.translationsApiSdk.fetchTranslations(collections);\n };\n}\n","import { Container } from 'hypo-container';\nimport { HttpTransport } from '@estee/elc-http-transport';\nimport { ServiceManager } from '@estee/elc-service';\nimport { IAppConfig } from '@estee/elc-universal-utils';\nimport { TranslationsApiSdk } from '~api/TranslationsApiSdk';\nimport { ConfigStore } from './ConfigStore';\nimport { TranslationsRepository } from '~repositories/TranslationsRepository';\nimport serviceNames, { TranslationsService } from './TranslationsService';\nimport { ServiceBusController } from './ServiceBusController';\n\nexport const diContainer = new Container();\n\nconst setConfig = (configJSON: IAppConfig) => {\n diContainer.config = configJSON;\n};\n\ndiContainer\n .register(\n serviceNames.configStore,\n diContainer.factory((c) => new ConfigStore(c.config))\n )\n .register(serviceNames.httpTransport, (c) => {\n const configStore = c.get(serviceNames.configStore);\n const httpTransport = new HttpTransport();\n httpTransport.setBaseUrl(configStore.baseUrl);\n\n return httpTransport;\n })\n .register(serviceNames.translationsApiSdk, (c) => {\n const configStore = c.get(serviceNames.configStore);\n const httpTransport = c.get(serviceNames.httpTransport);\n const config = {\n businessUnitId: configStore.config.businessUnitId,\n httpTransport,\n drupalDomain: configStore.config.drupalDomain || ''\n };\n\n return new TranslationsApiSdk(config);\n })\n .register(serviceNames.translationsRepository, () => new TranslationsRepository())\n .register(\n serviceNames.serviceBusController,\n (c) => new ServiceBusController(c.get(serviceNames.translationsRepository))\n )\n .register(\n serviceNames.translationsService,\n (c) =>\n new TranslationsService((config: IAppConfig) => {\n setConfig(config);\n\n return c.get(serviceNames.serviceBusController);\n })\n );\n\nexport const serviceStarter = ServiceManager.startService;\n","module.exports = ElcServiceBus;","module.exports = ElcRuntime.ELCLogger;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + \"4b8cab276414e18a8bef\" + \".bundle.js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) scriptUrl = scripts[scripts.length - 1].src\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t\"elc_service_translations\": 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkelc_service_translations\"] = self[\"webpackChunkelc_service_translations\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","var moduleMap = {\n\t\"./diContainer\": () => {\n\t\treturn Promise.resolve().then(() => (() => ((__webpack_require__(\"./src/service-setup/diContainer.tsx\")))));\n\t}\n};\nvar get = (module, getScope) => {\n\t__webpack_require__.R = getScope;\n\tgetScope = (\n\t\t__webpack_require__.o(moduleMap, module)\n\t\t\t? moduleMap[module]()\n\t\t\t: Promise.resolve().then(() => {\n\t\t\t\tthrow new Error('Module \"' + module + '\" does not exist in container.');\n\t\t\t})\n\t);\n\t__webpack_require__.R = undefined;\n\treturn getScope;\n};\nvar init = (shareScope, initScope) => {\n\tif (!__webpack_require__.S) return;\n\tvar name = \"default\"\n\tvar oldScope = __webpack_require__.S[name];\n\tif(oldScope && oldScope !== shareScope) throw new Error(\"Container initialization failed as it has already been initialized with a different share scope\");\n\t__webpack_require__.S[name] = shareScope;\n\treturn __webpack_require__.I(name, initScope);\n};\n\n// This exports getters to disallow modifications\n__webpack_require__.d(exports, {\n\tget: () => (get),\n\tinit: () => (init)\n});","/* eslint-disable no-restricted-syntax */\nimport { setupServiceInfo, getModuleFederatedName } from '@estee/elc-universal-utils';\nimport { ServiceManager } from '@estee/elc-service';\nimport serviceNames, { TranslationsService } from '~setup/TranslationsService';\nimport '~setup/ServiceBusController';\nimport '~setup/diContainer';\n\nsetupServiceInfo(__serviceInfo__);\nconst { name, version } = __serviceInfo__;\n\nTranslationsService.setViews(name, getModuleFederatedName(name), version, []);\n\nServiceManager.setServiceStartParams({\n serviceName: name,\n diContainerImport: () => import('~setup/diContainer'),\n serviceKey: serviceNames.translationsService\n});\n"],"names":["inProgress","dataWebpackPrefix","ServiceManagerClass","ecommStarted","getContainer","this","diContainer","containerImport","handleServiceBusError","Error","serviceBusBaseClass","serviceBusControllerKey","getServiceBusController","serviceBus","startService","get","error","logger","triggerType","TriggerType","message","payload","setServiceStartParams","serviceName","diContainerImport","serviceKey","ELCLogger","createServiceBusMethod","getServiceBusControllerMethod","functionName","args","call","setDecoratorOnFunction","decorator","triggerKey","__proto__","setDecoratorOnProperty","keyName","queryName","Object","defineProperty","configurable","enumerable","set","value","then","srvBusController","setEcommHasStarted","onStart","cb","ecommConfig","serviceHasStarted","service","serviceConfig","config","query","serviceQueries","start","emit","events","err","startPromise","Promise","resolve","reject","timeoutId","setInterval","clearInterval","getController","controllerKey","context","method","Boolean","isStarted","on","replay","ServiceManager","self","window","g","setupServiceInfo","serviceInfo","name","rest","getModuleFederatedName","replace","BrowserStorage","eraseCookie","document","cookie","setCookie","daysOrDate","expires","Date","now","toUTCString","getCookie","nameEQ","ca","split","i","length","c","charAt","substring","indexOf","getItem","key","storageKey","e","console","setItem","removeItem","storagePolling","callBack","storageValue","latestValue","ServiceBusController","constructor","translationsRepository","loadTranslations","getTranslations","queryProvider","noop","BaseService","version","serviceInitializer","setViews","views","initializeService","appConfig","initializer","serviceRegistry","environment","env","buid","businessUnitId","serviceVersion","TranslationsService","super","configStore","httpTransport","translationsApiSdk","translationsService","serviceBusController","ElcRuntime","HypoContainer","HttpTransport","global","AUTHORIZATION_HEADER_NAME","Api","delete","response","data","reponseHeaders","handleError","debounceInterval","bypassCache","patch","post","put","requestType","originalPayload","subdomain","addHeader","header","addGlobalHeaders","removeHeader","headerName","removeGlobalHeader","setBearerToken","bearerToken","API_HOST_COOKIE","API_AUTH_COOKIE","DrupalApi","fetch","url","headers","combinedHeaders","getHeaders","useApiCookies","getApiHost","getApiAuth","displayMessages","drupalDomain","apiHost","channel","getChannel","revTag","getRevTag","warn","isLocalhost","isAutotest","Authorization","Buffer","from","toString","host","auth","revisionTag","TranslationsApiSdk","translationsApiBasePath","fetchTranslations","getApiUrl","doCleanRequestPayload","sort","map","p","join","cleanPayload","tag","extras","push","mobx","ConfigStore","updateConfig","TranslationsRepository","translations","getTranslationsMapping","processTranslationsFromWindow","loadFromWindow","keys","loadFromApi","translationsCollections","setTranslations","fieldsRequested","hydrateTranslations","reduce","accumulator","field","getFieldValue","writable","fieldMap","translationMapping","warning","collectionName","legacyFieldName","fullDataMap","collectionKey","generateLegacyFormat","windowTranslations","cleanTranslations","collections","accum","legacyKey","getTranslationsMap","catch","entries","forEach","collectionValue","addDefaultVals","collection","showPlaceholder","showTranslationsPlaceholder","newCollection","Container","register","factory","setBaseUrl","baseUrl","configJSON","serviceStarter","module","exports","ElcServiceBus","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","m","n","getter","__esModule","d","a","definition","o","f","chunkId","all","promises","u","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","type","target","head","appendChild","r","Symbol","toStringTag","scriptUrl","importScripts","location","currentScript","installedChunks","j","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","id","chunkLoadingGlobal","moduleMap","init","getScope","R","shareScope","initScope","S","oldScope","I"],"sourceRoot":""}