{"version":3,"file":"diContainer.9675a7e55ad2bd5c0495.bundle.js","mappings":"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","sources":["webpack://elc-service-content/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-universal-utils/src/UniversalUtils.ts","webpack://elc-service-content/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-universal-utils/src/BrowserStorage.ts","webpack://elc-service-content/./node_modules/@estee/elc-drupal-api/node_modules/@estee/elc-service/src/Api.ts","webpack://elc-service-content/./node_modules/@estee/elc-drupal-api/src/DrupalApi.ts","webpack://elc-service-content/./node_modules/@estee/elc-service/src/ViewController.ts","webpack://elc-service-content/./node_modules/@estee/elc-service/src/decorators/Decorators.ts"],"sourcesContent":["/* 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 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 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 { 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 { observable } from 'mobx';\nimport {\n IComponentViewController,\n IViewControllerData,\n ViewControllerLoadedMethod\n} from '@estee/elc-universal-utils';\n\nexport class ViewController implements IComponentViewController {\n public id?: string;\n public dataState?: IViewControllerData;\n public loaded?: ViewControllerLoadedMethod;\n public configMergeStrategy?: Function;\n @observable public isLoading: boolean = true;\n\n public setSSRState = (data?: IViewControllerData) => {\n this.dataState = data;\n };\n\n public setId = (id?: string) => {\n this.id = id && btoa(unescape(encodeURIComponent(id)));\n };\n\n public get data(): IViewControllerData {\n return {};\n }\n}\n","import { Container } from 'hypo-container';\nexport const getDecorators = (container: Container) => ({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n lazyInject: (name?: string) => (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: any,\n key: string,\n descriptor?: PropertyDescriptor\n ) => {\n const resourceName = name || key;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const sbGetter = function (this: any) {\n const resource = container.get(resourceName);\n if (!resource) {\n throw new Error(`The requested ${resourceName} does not exists`);\n }\n\n return resource;\n };\n let propertyDescriptor = descriptor || {};\n if (!descriptor) {\n propertyDescriptor = {\n get: sbGetter\n };\n Object.defineProperty(target, key, propertyDescriptor);\n } else {\n propertyDescriptor.get = sbGetter;\n }\n }\n});\n"],"names":["self","window","g","BrowserStorage","eraseCookie","name","document","cookie","setCookie","value","daysOrDate","expires","Date","now","toUTCString","getCookie","nameEQ","ca","split","i","length","c","charAt","substring","indexOf","getItem","key","storageKey","e","console","error","setItem","removeItem","storagePolling","callBack","storageValue","setInterval","latestValue","AUTHORIZATION_HEADER_NAME","Api","constructor","configStore","serviceName","serviceVersion","delete","payload","response","data","reponseHeaders","this","httpTransport","handleError","get","debounceInterval","bypassCache","patch","post","put","requestType","originalPayload","logger","triggerType","TriggerType","message","context","subdomain","businessUnitId","ELCLogger","addHeader","header","addGlobalHeaders","removeHeader","headerName","removeGlobalHeader","setBearerToken","bearerToken","API_HOST_COOKIE","API_AUTH_COOKIE","DrupalApi","config","super","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","ViewController","isLoading","setSSRState","dataState","setId","id","btoa","unescape","encodeURIComponent","getDecorators","container","lazyInject","target","descriptor","resourceName","sbGetter","resource","Error","propertyDescriptor","Object","defineProperty"],"sourceRoot":""}