@repobit/dex-target 2.13.1 → 2.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [2.13.2](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@2.13.1...@repobit/dex-target@2.13.2) (2026-02-27)
7
+
8
+ **Note:** Version bump only for package @repobit/dex-target
9
+
10
+
11
+
12
+
13
+
6
14
  ## [2.13.1](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@2.13.0...@repobit/dex-target@2.13.1) (2026-02-27)
7
15
 
8
16
  **Note:** Version bump only for package @repobit/dex-target
package/README.md CHANGED
@@ -170,12 +170,15 @@ Use getContentFragment to fetch an HTML offer for a single mbox and return it as
170
170
 
171
171
  ```typescript
172
172
  const fragment = await target.getContentFragment({ mboxName: 'html-mbox' });
173
- document.body.replaceChildren(fragment);
173
+ if (fragment) {
174
+ document.body.replaceChildren(fragment);
175
+ }
174
176
  ```
175
177
 
176
178
  Notes:
177
179
  - This method is intended for mboxes that return HTML content.
178
180
  - Script execution depends on the host environment. In browsers, inline scripts execute when inserted into the live DOM.
181
+ - If the mbox itself does not get data, the returned fragment will be null.
179
182
 
180
183
 
181
184
  ### Aborting Requests
@@ -95,6 +95,6 @@ export default class Target {
95
95
  mboxName: string;
96
96
  parameters?: MboxParameters;
97
97
  profileParameters?: MboxProfileParameters;
98
- }): Promise<DocumentFragment>;
98
+ }): Promise<DocumentFragment | null>;
99
99
  }
100
100
  export {};
package/dist/src/index.js CHANGED
@@ -263,7 +263,7 @@ export default class Target {
263
263
  });
264
264
  return fragment;
265
265
  }
266
- return fragment;
266
+ return null;
267
267
  }
268
268
  }
269
269
  window.BD = window.BD || {};
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { Constants } from '@repobit/dex-constants';\nimport { AdobeDataLayerService, AlloyResponsePropositions, CdpEvent, DecisionsDisplayedEvent, PageLoadStartedEvent } from '@repobit/dex-data-layer';\nimport {\n AlloyAppendIdentityToUrlResponse,\n AlloyApplyPropositionsResponse,\n AlloyFunction,\n AlloySendEventResponse,\n AppendIdentityToUrlCall,\n ApplyPropositionsCall,\n CdpData,\n CdpDataJson,\n ConfigMbox,\n GetIdentityCall,\n GetIdentityResponse,\n MboxParameters,\n MboxProfileParameters,\n SendEventCall,\n URLParameters\n} from './typeDefinitions';\n\ndeclare global {\n interface Window {\n alloyProxy: AlloyFunction;\n BD: {\n state: {\n cdpDataPromise: Promise<CdpData>\n }\n }\n }\n}\n\nif (!window.Promise.withResolvers) {\n window.Promise.withResolvers = function<T>() {\n let resolve, reject;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { resolve, reject, promise } as unknown as PromiseWithResolvers<T>;\n }\n}\n\ntype JsonObject = Record<string, unknown>\ntype JsonArray = unknown[]\n\nconst parseIfJsonObjectOrArray = <T = JsonObject | JsonArray> (\n value: unknown\n): T | string => {\n // already parsed\n if (typeof value === 'object' && value !== null) {\n return value as T\n }\n\n if (typeof value !== 'string') {\n return value as string\n }\n\n const trimmed = value.trim()\n\n // HTML bailout (A/B test content)\n if (trimmed.startsWith('<')) {\n return value\n }\n\n // only allow object or array shapes\n const looksLikeJson =\n (trimmed.startsWith('{') && trimmed.endsWith('}')) ||\n (trimmed.startsWith('[') && trimmed.endsWith(']'))\n\n if (!looksLikeJson) {\n return value\n }\n\n try {\n const parsed = JSON.parse(trimmed)\n\n // reject primitives\n if (typeof parsed === 'object' && parsed !== null) {\n return parsed as T\n }\n\n return value\n } catch {\n return value\n }\n}\n\ntype ParsedResult<T> =\n | { type: 'json'; value: T }\n | { type: 'string'; value: string }\n\nexport function parseIfJsonStrict<T = JsonObject | JsonArray>(\n value: unknown\n): ParsedResult<T> {\n const parsed = parseIfJsonObjectOrArray<T>(value)\n\n return typeof parsed === 'string'\n ? { type: 'string', value: parsed }\n : { type: 'json', value: parsed }\n}\n\nexport default class Target {\n private urlParameters : URLParameters;\n private profileUrlParameters: { [key: string]: string | undefined };\n private cachedMboxes : Map<string, Promise<AlloyResponsePropositions | undefined>>;\n private _configMbox : Promise<ConfigMbox | undefined>;\n private controller : AbortController = new AbortController();\n private _visitorInfo : Promise<GetIdentityResponse>;\n private cdpData : Promise<CdpData>;\n private pageLoadStarted : PageLoadStartedEvent | undefined;\n\n constructor(config?: Partial<{ pageLoadStartedEvent: PageLoadStartedEvent }>) {\n this.urlParameters = this.getUrlParameters();\n this.profileUrlParameters = this.transfromIntoProfileParameters(this.urlParameters);\n this.cachedMboxes = new Map();\n this.pageLoadStarted = config?.pageLoadStartedEvent;\n\n if (!window.alloyProxy) {\n function __alloy(...args: SendEventCall): Promise<AlloySendEventResponse>;\n function __alloy(...args: AppendIdentityToUrlCall): Promise<AlloyAppendIdentityToUrlResponse>;\n function __alloy(...args: ApplyPropositionsCall): Promise<AlloyApplyPropositionsResponse>;\n function __alloy(...args: GetIdentityCall): Promise<GetIdentityResponse>;\n function __alloy(...args: SendEventCall | AppendIdentityToUrlCall | ApplyPropositionsCall | GetIdentityCall):\n Promise<AlloySendEventResponse | AlloyAppendIdentityToUrlResponse | AlloyApplyPropositionsResponse | GetIdentityResponse> {\n return new Promise((resolve, reject) => {\n window.alloyProxy.q.push([resolve, reject, args]);\n });\n }\n\n window.alloyProxy = __alloy as AlloyFunction;\n window.alloyProxy.q = [];\n }\n\n // check for dotest=1 in URL. If it exists abort all target calls\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('dotest') === '1') {\n this.abort();\n }\n\n this._visitorInfo = new Promise((resolve) => {\n if (this.controller.signal?.aborted) {\n resolve({});\n }\n\n window.alloyProxy('getIdentity').then(result => resolve(result))\n .catch(() => resolve({}));\n this.controller.signal?.addEventListener('abort', () => resolve({}));\n });\n this.cdpData = config?.pageLoadStartedEvent && urlParams.get('dotest') !== '1'\n ? this.sendCdpData(config?.pageLoadStartedEvent)\n : Promise.resolve({} as CdpData);\n this._configMbox = this.getOffers({ mboxNames: 'config-mbox' });\n }\n\n /** get an object containing all the url query parameters */\n private getUrlParameters(): URLParameters {\n const urlParams = new URLSearchParams(window.location.search);\n const parameters: URLParameters = {};\n\n urlParams.forEach((value: string, key: string) => {\n parameters[key] = value;\n });\n\n return parameters;\n }\n\n public get configMbox() {\n return this._configMbox;\n }\n\n public get visitorInfo() {\n return this._visitorInfo;\n }\n\n /** add adobe_mc parameter at the end of the url */\n public appendVisitorIDsTo(url: string): Promise<string> {\n if (this.controller.signal?.aborted || url.includes('adobe_mc')) {\n return Promise.resolve(url);\n }\n\n return new Promise((resolve) => {\n window.alloyProxy('appendIdentityToUrl', { url }).then(result => resolve(result.url))\n .catch(() => resolve(url));\n this.controller.signal?.addEventListener('abort', () => resolve(url));\n });\n }\n\n /** abort all the Target calls for casese where Target does not load */\n public abort(): void {\n this.controller.abort();\n }\n\n public async sendCdpData(pageLoadStartedEvent: PageLoadStartedEvent): Promise<CdpData> {\n const cdpDataPromise = Promise.withResolvers<CdpData>();\n let cdpData: CdpData = {};\n if (window.BD.state.cdpDataPromise) {\n return await window.BD.state.cdpDataPromise;\n }\n window.BD.state.cdpDataPromise = cdpDataPromise.promise;\n\n try {\n const ecid = (await this.visitorInfo)?.identity?.ECID;\n const cdpDataCall = await fetch(\n `${Constants.PUBLIC_URL_ORIGIN}/cdp/`,\n {\n method: 'POST',\n body : JSON.stringify({\n mcvisid: ecid || '',\n ...pageLoadStartedEvent.page\n })\n }\n );\n\n /** @type {{auds: string[], mdl: {key: string, value: string}[], ub: any[] vid: string}} */\n const receivedCdpData: CdpDataJson = await cdpDataCall.json();\n cdpData = {\n auds: receivedCdpData?.auds[0] || ''\n };\n\n if (receivedCdpData.mdl) {\n cdpData = receivedCdpData?.mdl.reduce((acc, mdlValue) => {\n acc[mdlValue.key] = mdlValue.value;\n return acc;\n }, cdpData);\n }\n\n if (receivedCdpData.ub) {\n cdpData = receivedCdpData?.ub.reduce((acc, ubValue) => {\n acc[ubValue.key] = ubValue.value;\n return acc;\n }, cdpData);\n }\n\n AdobeDataLayerService.push(new CdpEvent(cdpData));\n } catch (e) {\n console.warn(e);\n }\n\n cdpDataPromise.resolve(cdpData);\n return cdpData;\n }\n\n private transfromIntoProfileParameters(object: { [key: string]: string | undefined }) {\n const profileObject: { [key: string]: string | undefined } = Object.keys(object).reduce((acc, key) => {\n acc[`profile.${key}`] = object[key];\n return acc;\n }, {} as { [key: string]: string | undefined });\n\n return profileObject;\n }\n\n public async getOffers(param: {\n mboxNames : 'config-mbox',\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<ConfigMbox | undefined>;\n public async getOffers(param: {\n mboxNames : string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<object | undefined>;\n public async getOffers(param: {\n mboxNames : string[],\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<Record<string, object | undefined>>;\n public async getOffers(param: {\n mboxNames : string[] | string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }) {\n let { mboxNames } = param;\n const isInitialyArray = Array.isArray(mboxNames);\n const { parameters, profileParameters } = param;\n if (!Array.isArray(mboxNames)) {\n mboxNames = [mboxNames];\n }\n\n const cdpData = await this.cdpData;\n if (this.controller.signal?.aborted) {\n return mboxNames.length > 1 ? {} : undefined;\n }\n\n const notRequestedMboxes = mboxNames.filter(\n mbox => !this.cachedMboxes.has(`${mbox}_${JSON.stringify(parameters)}`)\n );\n if (notRequestedMboxes.length) {\n const notRequestedOffersCall = window.alloyProxy('sendEvent', {\n type : 'decisioning.propositionFetch',\n decisionScopes: notRequestedMboxes,\n data : {\n '__adobe': {\n 'target': Object.assign(\n {},\n this.urlParameters,\n this.profileUrlParameters,\n parameters ? parameters : {},\n profileParameters ? profileParameters : {},\n cdpData,\n this.transfromIntoProfileParameters(cdpData)\n )\n }\n }\n });\n\n notRequestedOffersCall.then(result => {\n const htmlPropositions = result.propositions.filter(\n proposition => proposition?.items?.some(item => parseIfJsonStrict(item?.data?.content).type === 'string')\n );\n\n const jsonPropositions = result.propositions.filter(\n proposition => proposition?.items?.some(item => parseIfJsonStrict(item?.data?.content).type === 'json')\n ).map(proposition => {\n const { ...propositionCopy } = proposition;\n delete propositionCopy.items;\n delete propositionCopy.renderAttempted;\n return propositionCopy;\n });\n\n if (htmlPropositions.length) {\n window.alloyProxy('applyPropositions', {\n 'propositions': htmlPropositions,\n 'viewName' : this.pageLoadStarted?.page?.info?.name || window.location.pathname\n });\n }\n\n if (jsonPropositions.length) {\n AdobeDataLayerService.push(new DecisionsDisplayedEvent(jsonPropositions));\n }\n });\n\n notRequestedMboxes.forEach(mbox => {\n const receivedMboxOfferCall: Promise<AlloyResponsePropositions | undefined> = new Promise((resolve, reject) => {\n notRequestedOffersCall.then(result => {\n const mboxResult = result.propositions.find(\n (offer) => offer.scope === mbox\n );\n\n resolve(mboxResult);\n }).catch(e => {\n reject(e);\n });\n\n this.controller.signal?.addEventListener('abort', reject);\n });\n\n this.cachedMboxes.set(`${mbox}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`, receivedMboxOfferCall);\n });\n }\n\n const mboxesPromises = mboxNames.map(\n mboxName => this.cachedMboxes.get(`${mboxName}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`)\n );\n const resolvedMboxes = await Promise.allSettled(mboxesPromises);\n\n const offersResult = mboxNames.reduce((acc, mboxName, index) => {\n acc[mboxName] = resolvedMboxes[index].status === 'fulfilled' ? parseIfJsonObjectOrArray(resolvedMboxes[index].value?.items?.[0]?.data?.content) : undefined;\n return acc;\n }, {} as Record<string, string | object | undefined>);\n\n return isInitialyArray ? offersResult : offersResult[mboxNames[0]];\n }\n\n public async getMboxProposition<T extends object = object>(\n param: { mboxName: string, parameters?: MboxParameters, profileParameters?: MboxProfileParameters }\n ): Promise<AlloyResponsePropositions<T> | undefined> {\n return await this.cachedMboxes.get(\n `${param.mboxName}_${JSON.stringify(param.parameters)}_${JSON.stringify(param.profileParameters)}`\n ) as AlloyResponsePropositions<T> | undefined;\n }\n\n public async trackOffer(param: { id: AlloyResponsePropositions[\"id\"], scope: AlloyResponsePropositions[\"scope\"], scopeDetails: AlloyResponsePropositions[\"scopeDetails\"] }) {\n await window.alloyProxy('sendEvent', {\n type: 'decisioning.propositionInteract',\n xdm : {\n _experience: {\n decisioning: {\n propositions: [\n {\n id : param.id,\n scope : param.scope,\n scopeDetails: param.scopeDetails\n }\n ]\n }\n }\n }\n });\n }\n\n public async getContentFragment(param: {\n mboxName : string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<DocumentFragment> {\n const mboxData = await this.getOffers({ ...param, mboxNames: param.mboxName });\n const fragment = document.createDocumentFragment();\n if (typeof mboxData === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(mboxData, \"text/html\");\n\n fragment.append(...doc.body.childNodes);\n fragment.querySelectorAll(\"script\").forEach(oldScript => {\n const newScript = document.createElement(\"script\");\n [...oldScript.attributes].forEach(attr => newScript.setAttribute(attr.name, attr.value));\n newScript.textContent = oldScript.textContent;\n oldScript.replaceWith(newScript);\n });\n return fragment;\n }\n\n return fragment;\n }\n}\n\nwindow.BD = window.BD || {};\nwindow.BD.state = window.BD.state || {};\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAA6B,QAAQ,EAAE,uBAAuB,EAAwB,MAAM,yBAAyB,CAAC;AA8BpJ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IAClC,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG;QAC7B,IAAI,OAAO,EAAE,MAAM,CAAC;QACpB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC1C,OAAO,GAAG,GAAG,CAAC;YACd,MAAM,GAAG,GAAG,CAAC;QACf,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAwC,CAAC;IAC5E,CAAC,CAAA;AACH,CAAC;AAKD,MAAM,wBAAwB,GAAG,CAC/B,KAAc,EACF,EAAE;IACd,iBAAiB;IACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAU,CAAA;IACnB,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAe,CAAA;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAE5B,kCAAkC;IAClC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,oCAAoC;IACpC,MAAM,aAAa,GACjB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClD,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAEpD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAElC,oBAAoB;QACpB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,MAAW,CAAA;QACpB,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAMD,MAAM,UAAU,iBAAiB,CAC/B,KAAc;IAEd,MAAM,MAAM,GAAG,wBAAwB,CAAI,KAAK,CAAC,CAAA;IAEjD,OAAO,OAAO,MAAM,KAAK,QAAQ;QAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE;QACnC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,MAAM;IACjB,aAAa,CAAuB;IACpC,oBAAoB,CAAwC;IAC5D,YAAY,CAAsE;IAClF,WAAW,CAA2C;IACtD,UAAU,GAA8B,IAAI,eAAe,EAAE,CAAC;IAC9D,YAAY,CAAuC;IACnD,OAAO,CAAgC;IACvC,eAAe,CAAwC;IAE/D,YAAY,MAAgE;QAC1E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC7C,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpF,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,MAAM,EAAE,oBAAoB,CAAC;QAEpD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAKvB,SAAS,OAAO,CAAC,GAAG,IAAuF;gBAEzG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBACrC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACpD,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,UAAU,GAAG,OAAwB,CAAC;YAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;QAED,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;gBACpC,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC;YAED,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC7D,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,oBAAoB,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,GAAG;YAC5E,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,oBAAoB,CAAC;YAChD,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAa,CAAC,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,4DAA4D;IACpD,gBAAgB;QACtB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAkB,EAAE,CAAC;QAErC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE;YAC/C,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,mDAAmD;IAC5C,kBAAkB,CAAC,GAAW;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,CAAC,UAAU,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBAClF,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IAChE,KAAK;QACV,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,oBAA0C;QACjE,MAAM,cAAc,GAAG,OAAO,CAAC,aAAa,EAAW,CAAC;QACxD,IAAI,OAAO,GAAY,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO,MAAM,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC;QAC9C,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC;QAExD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC;YACtD,MAAM,WAAW,GAAG,MAAM,KAAK,CAC7B,GAAG,SAAS,CAAC,iBAAiB,OAAO,EACrC;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAI,IAAI,CAAC,SAAS,CAAC;oBACrB,OAAO,EAAE,IAAI,IAAI,EAAE;oBACnB,GAAG,oBAAoB,CAAC,IAAI;iBAC7B,CAAC;aACH,CACF,CAAC;YAEF,2FAA2F;YAC3F,MAAM,eAAe,GAAgB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;YAC9D,OAAO,GAAG;gBACR,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;aACrC,CAAC;YAEF,IAAI,eAAe,CAAC,GAAG,EAAE,CAAC;gBACxB,OAAO,GAAG,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;oBACtD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;oBACnC,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC;YAED,IAAI,eAAe,CAAC,EAAE,EAAE,CAAC;gBACvB,OAAO,GAAG,eAAe,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;oBACpD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC;oBACjC,OAAO,GAAG,CAAC;gBACb,CAAC,EAAE,OAAO,CAAC,CAAC;YACd,CAAC;YAED,qBAAqB,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,8BAA8B,CAAC,MAA6C;QAClF,MAAM,aAAa,GAA0C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnG,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA2C,CAAC,CAAC;QAEhD,OAAO,aAAa,CAAC;IACvB,CAAC;IAiBM,KAAK,CAAC,SAAS,CAAC,KAItB;QACC,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QAC1B,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/C,CAAC;QAED,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,CACzC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CACxE,CAAC;QACF,IAAI,kBAAkB,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;gBAC5D,IAAI,EAAY,8BAA8B;gBAC9C,cAAc,EAAE,kBAAkB;gBAClC,IAAI,EAAY;oBACd,SAAS,EAAE;wBACT,QAAQ,EAAE,MAAM,CAAC,MAAM,CACrB,EAAE,EACF,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,oBAAoB,EACzB,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAC5B,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC1C,OAAO,EACP,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAC7C;qBACF;iBACF;aACF,CAAC,CAAC;YAEH,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CACjD,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAC1G,CAAC;gBAEF,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CACjD,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CACxG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;oBAClB,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,WAAW,CAAC;oBAC3C,OAAO,eAAe,CAAC,KAAK,CAAC;oBAC7B,OAAO,eAAe,CAAC,eAAe,CAAC;oBACvC,OAAO,eAAe,CAAC;gBACzB,CAAC,CAAC,CAAC;gBAEH,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC5B,MAAM,CAAC,UAAU,CAAC,mBAAmB,EAAE;wBACrC,cAAc,EAAE,gBAAgB;wBAChC,UAAU,EAAM,IAAI,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ;qBACnF,CAAC,CAAC;gBACL,CAAC;gBAED,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC5B,qBAAqB,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5E,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAChC,MAAM,qBAAqB,GAAmD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;oBAC5G,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBACnC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CACzC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAChC,CAAC;wBAEF,OAAO,CAAC,UAAU,CAAC,CAAC;oBACtB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACX,MAAM,CAAC,CAAC,CAAC,CAAC;oBACZ,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC5D,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;YAC7H,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CACpH,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAEhE,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC7D,GAAG,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,wBAAwB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5J,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAiD,CAAC,CAAC;QAEtD,OAAO,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAC7B,KAAmG;QAEnG,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAChC,GAAG,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CACvD,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,KAAkJ;QACxK,MAAM,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,iCAAiC;YACvC,GAAG,EAAG;gBACJ,WAAW,EAAE;oBACX,WAAW,EAAE;wBACX,YAAY,EAAE;4BACZ;gCACE,EAAE,EAAY,KAAK,CAAC,EAAE;gCACtB,KAAK,EAAS,KAAK,CAAC,KAAK;gCACzB,YAAY,EAAE,KAAK,CAAC,YAAY;6BACjC;yBACF;qBACF;iBACF;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,KAI/B;QACC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACnD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAE1D,QAAQ,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACnD,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzF,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;gBAC9C,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;AAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC","sourcesContent":["import { Constants } from '@repobit/dex-constants';\nimport { AdobeDataLayerService, AlloyResponsePropositions, CdpEvent, DecisionsDisplayedEvent, PageLoadStartedEvent } from '@repobit/dex-data-layer';\nimport {\n AlloyAppendIdentityToUrlResponse,\n AlloyApplyPropositionsResponse,\n AlloyFunction,\n AlloySendEventResponse,\n AppendIdentityToUrlCall,\n ApplyPropositionsCall,\n CdpData,\n CdpDataJson,\n ConfigMbox,\n GetIdentityCall,\n GetIdentityResponse,\n MboxParameters,\n MboxProfileParameters,\n SendEventCall,\n URLParameters\n} from './typeDefinitions';\n\ndeclare global {\n interface Window {\n alloyProxy: AlloyFunction;\n BD: {\n state: {\n cdpDataPromise: Promise<CdpData>\n }\n }\n }\n}\n\nif (!window.Promise.withResolvers) {\n window.Promise.withResolvers = function<T>() {\n let resolve, reject;\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { resolve, reject, promise } as unknown as PromiseWithResolvers<T>;\n }\n}\n\ntype JsonObject = Record<string, unknown>\ntype JsonArray = unknown[]\n\nconst parseIfJsonObjectOrArray = <T = JsonObject | JsonArray> (\n value: unknown\n): T | string => {\n // already parsed\n if (typeof value === 'object' && value !== null) {\n return value as T\n }\n\n if (typeof value !== 'string') {\n return value as string\n }\n\n const trimmed = value.trim()\n\n // HTML bailout (A/B test content)\n if (trimmed.startsWith('<')) {\n return value\n }\n\n // only allow object or array shapes\n const looksLikeJson =\n (trimmed.startsWith('{') && trimmed.endsWith('}')) ||\n (trimmed.startsWith('[') && trimmed.endsWith(']'))\n\n if (!looksLikeJson) {\n return value\n }\n\n try {\n const parsed = JSON.parse(trimmed)\n\n // reject primitives\n if (typeof parsed === 'object' && parsed !== null) {\n return parsed as T\n }\n\n return value\n } catch {\n return value\n }\n}\n\ntype ParsedResult<T> =\n | { type: 'json'; value: T }\n | { type: 'string'; value: string }\n\nexport function parseIfJsonStrict<T = JsonObject | JsonArray>(\n value: unknown\n): ParsedResult<T> {\n const parsed = parseIfJsonObjectOrArray<T>(value)\n\n return typeof parsed === 'string'\n ? { type: 'string', value: parsed }\n : { type: 'json', value: parsed }\n}\n\nexport default class Target {\n private urlParameters : URLParameters;\n private profileUrlParameters: { [key: string]: string | undefined };\n private cachedMboxes : Map<string, Promise<AlloyResponsePropositions | undefined>>;\n private _configMbox : Promise<ConfigMbox | undefined>;\n private controller : AbortController = new AbortController();\n private _visitorInfo : Promise<GetIdentityResponse>;\n private cdpData : Promise<CdpData>;\n private pageLoadStarted : PageLoadStartedEvent | undefined;\n\n constructor(config?: Partial<{ pageLoadStartedEvent: PageLoadStartedEvent }>) {\n this.urlParameters = this.getUrlParameters();\n this.profileUrlParameters = this.transfromIntoProfileParameters(this.urlParameters);\n this.cachedMboxes = new Map();\n this.pageLoadStarted = config?.pageLoadStartedEvent;\n\n if (!window.alloyProxy) {\n function __alloy(...args: SendEventCall): Promise<AlloySendEventResponse>;\n function __alloy(...args: AppendIdentityToUrlCall): Promise<AlloyAppendIdentityToUrlResponse>;\n function __alloy(...args: ApplyPropositionsCall): Promise<AlloyApplyPropositionsResponse>;\n function __alloy(...args: GetIdentityCall): Promise<GetIdentityResponse>;\n function __alloy(...args: SendEventCall | AppendIdentityToUrlCall | ApplyPropositionsCall | GetIdentityCall):\n Promise<AlloySendEventResponse | AlloyAppendIdentityToUrlResponse | AlloyApplyPropositionsResponse | GetIdentityResponse> {\n return new Promise((resolve, reject) => {\n window.alloyProxy.q.push([resolve, reject, args]);\n });\n }\n\n window.alloyProxy = __alloy as AlloyFunction;\n window.alloyProxy.q = [];\n }\n\n // check for dotest=1 in URL. If it exists abort all target calls\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.get('dotest') === '1') {\n this.abort();\n }\n\n this._visitorInfo = new Promise((resolve) => {\n if (this.controller.signal?.aborted) {\n resolve({});\n }\n\n window.alloyProxy('getIdentity').then(result => resolve(result))\n .catch(() => resolve({}));\n this.controller.signal?.addEventListener('abort', () => resolve({}));\n });\n this.cdpData = config?.pageLoadStartedEvent && urlParams.get('dotest') !== '1'\n ? this.sendCdpData(config?.pageLoadStartedEvent)\n : Promise.resolve({} as CdpData);\n this._configMbox = this.getOffers({ mboxNames: 'config-mbox' });\n }\n\n /** get an object containing all the url query parameters */\n private getUrlParameters(): URLParameters {\n const urlParams = new URLSearchParams(window.location.search);\n const parameters: URLParameters = {};\n\n urlParams.forEach((value: string, key: string) => {\n parameters[key] = value;\n });\n\n return parameters;\n }\n\n public get configMbox() {\n return this._configMbox;\n }\n\n public get visitorInfo() {\n return this._visitorInfo;\n }\n\n /** add adobe_mc parameter at the end of the url */\n public appendVisitorIDsTo(url: string): Promise<string> {\n if (this.controller.signal?.aborted || url.includes('adobe_mc')) {\n return Promise.resolve(url);\n }\n\n return new Promise((resolve) => {\n window.alloyProxy('appendIdentityToUrl', { url }).then(result => resolve(result.url))\n .catch(() => resolve(url));\n this.controller.signal?.addEventListener('abort', () => resolve(url));\n });\n }\n\n /** abort all the Target calls for casese where Target does not load */\n public abort(): void {\n this.controller.abort();\n }\n\n public async sendCdpData(pageLoadStartedEvent: PageLoadStartedEvent): Promise<CdpData> {\n const cdpDataPromise = Promise.withResolvers<CdpData>();\n let cdpData: CdpData = {};\n if (window.BD.state.cdpDataPromise) {\n return await window.BD.state.cdpDataPromise;\n }\n window.BD.state.cdpDataPromise = cdpDataPromise.promise;\n\n try {\n const ecid = (await this.visitorInfo)?.identity?.ECID;\n const cdpDataCall = await fetch(\n `${Constants.PUBLIC_URL_ORIGIN}/cdp/`,\n {\n method: 'POST',\n body : JSON.stringify({\n mcvisid: ecid || '',\n ...pageLoadStartedEvent.page\n })\n }\n );\n\n /** @type {{auds: string[], mdl: {key: string, value: string}[], ub: any[] vid: string}} */\n const receivedCdpData: CdpDataJson = await cdpDataCall.json();\n cdpData = {\n auds: receivedCdpData?.auds[0] || ''\n };\n\n if (receivedCdpData.mdl) {\n cdpData = receivedCdpData?.mdl.reduce((acc, mdlValue) => {\n acc[mdlValue.key] = mdlValue.value;\n return acc;\n }, cdpData);\n }\n\n if (receivedCdpData.ub) {\n cdpData = receivedCdpData?.ub.reduce((acc, ubValue) => {\n acc[ubValue.key] = ubValue.value;\n return acc;\n }, cdpData);\n }\n\n AdobeDataLayerService.push(new CdpEvent(cdpData));\n } catch (e) {\n console.warn(e);\n }\n\n cdpDataPromise.resolve(cdpData);\n return cdpData;\n }\n\n private transfromIntoProfileParameters(object: { [key: string]: string | undefined }) {\n const profileObject: { [key: string]: string | undefined } = Object.keys(object).reduce((acc, key) => {\n acc[`profile.${key}`] = object[key];\n return acc;\n }, {} as { [key: string]: string | undefined });\n\n return profileObject;\n }\n\n public async getOffers(param: {\n mboxNames : 'config-mbox',\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<ConfigMbox | undefined>;\n public async getOffers(param: {\n mboxNames : string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<object | undefined>;\n public async getOffers(param: {\n mboxNames : string[],\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<Record<string, object | undefined>>;\n public async getOffers(param: {\n mboxNames : string[] | string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }) {\n let { mboxNames } = param;\n const isInitialyArray = Array.isArray(mboxNames);\n const { parameters, profileParameters } = param;\n if (!Array.isArray(mboxNames)) {\n mboxNames = [mboxNames];\n }\n\n const cdpData = await this.cdpData;\n if (this.controller.signal?.aborted) {\n return mboxNames.length > 1 ? {} : undefined;\n }\n\n const notRequestedMboxes = mboxNames.filter(\n mbox => !this.cachedMboxes.has(`${mbox}_${JSON.stringify(parameters)}`)\n );\n if (notRequestedMboxes.length) {\n const notRequestedOffersCall = window.alloyProxy('sendEvent', {\n type : 'decisioning.propositionFetch',\n decisionScopes: notRequestedMboxes,\n data : {\n '__adobe': {\n 'target': Object.assign(\n {},\n this.urlParameters,\n this.profileUrlParameters,\n parameters ? parameters : {},\n profileParameters ? profileParameters : {},\n cdpData,\n this.transfromIntoProfileParameters(cdpData)\n )\n }\n }\n });\n\n notRequestedOffersCall.then(result => {\n const htmlPropositions = result.propositions.filter(\n proposition => proposition?.items?.some(item => parseIfJsonStrict(item?.data?.content).type === 'string')\n );\n\n const jsonPropositions = result.propositions.filter(\n proposition => proposition?.items?.some(item => parseIfJsonStrict(item?.data?.content).type === 'json')\n ).map(proposition => {\n const { ...propositionCopy } = proposition;\n delete propositionCopy.items;\n delete propositionCopy.renderAttempted;\n return propositionCopy;\n });\n\n if (htmlPropositions.length) {\n window.alloyProxy('applyPropositions', {\n 'propositions': htmlPropositions,\n 'viewName' : this.pageLoadStarted?.page?.info?.name || window.location.pathname\n });\n }\n\n if (jsonPropositions.length) {\n AdobeDataLayerService.push(new DecisionsDisplayedEvent(jsonPropositions));\n }\n });\n\n notRequestedMboxes.forEach(mbox => {\n const receivedMboxOfferCall: Promise<AlloyResponsePropositions | undefined> = new Promise((resolve, reject) => {\n notRequestedOffersCall.then(result => {\n const mboxResult = result.propositions.find(\n (offer) => offer.scope === mbox\n );\n\n resolve(mboxResult);\n }).catch(e => {\n reject(e);\n });\n\n this.controller.signal?.addEventListener('abort', reject);\n });\n\n this.cachedMboxes.set(`${mbox}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`, receivedMboxOfferCall);\n });\n }\n\n const mboxesPromises = mboxNames.map(\n mboxName => this.cachedMboxes.get(`${mboxName}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`)\n );\n const resolvedMboxes = await Promise.allSettled(mboxesPromises);\n\n const offersResult = mboxNames.reduce((acc, mboxName, index) => {\n acc[mboxName] = resolvedMboxes[index].status === 'fulfilled' ? parseIfJsonObjectOrArray(resolvedMboxes[index].value?.items?.[0]?.data?.content) : undefined;\n return acc;\n }, {} as Record<string, string | object | undefined>);\n\n return isInitialyArray ? offersResult : offersResult[mboxNames[0]];\n }\n\n public async getMboxProposition<T extends object = object>(\n param: { mboxName: string, parameters?: MboxParameters, profileParameters?: MboxProfileParameters }\n ): Promise<AlloyResponsePropositions<T> | undefined> {\n return await this.cachedMboxes.get(\n `${param.mboxName}_${JSON.stringify(param.parameters)}_${JSON.stringify(param.profileParameters)}`\n ) as AlloyResponsePropositions<T> | undefined;\n }\n\n public async trackOffer(param: { id: AlloyResponsePropositions[\"id\"], scope: AlloyResponsePropositions[\"scope\"], scopeDetails: AlloyResponsePropositions[\"scopeDetails\"] }) {\n await window.alloyProxy('sendEvent', {\n type: 'decisioning.propositionInteract',\n xdm : {\n _experience: {\n decisioning: {\n propositions: [\n {\n id : param.id,\n scope : param.scope,\n scopeDetails: param.scopeDetails\n }\n ]\n }\n }\n }\n });\n }\n\n public async getContentFragment(param: {\n mboxName : string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<DocumentFragment | null> {\n const mboxData = await this.getOffers({ ...param, mboxNames: param.mboxName });\n const fragment = document.createDocumentFragment();\n if (typeof mboxData === 'string') {\n const parser = new DOMParser();\n const doc = parser.parseFromString(mboxData, \"text/html\");\n\n fragment.append(...doc.body.childNodes);\n fragment.querySelectorAll(\"script\").forEach(oldScript => {\n const newScript = document.createElement(\"script\");\n [...oldScript.attributes].forEach(attr => newScript.setAttribute(attr.name, attr.value));\n newScript.textContent = oldScript.textContent;\n oldScript.replaceWith(newScript);\n });\n return fragment;\n }\n\n return null;\n }\n}\n\nwindow.BD = window.BD || {};\nwindow.BD.state = window.BD.state || {};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@repobit/dex-target",
3
- "version": "2.13.1",
3
+ "version": "2.13.2",
4
4
  "description": "Client for Adobe Target",
5
5
  "author": "Constantin Ioan Mihai <iconstantin@bitdefender.com>",
6
6
  "homepage": "https://github.com/bitdefender/dex-core#readme",
@@ -39,5 +39,5 @@
39
39
  "devDependencies": {
40
40
  "@types/jsdom": "^28.0.0"
41
41
  },
42
- "gitHead": "a203e0b1e6f70d4b4b1beaed51ee1d8a7c1a1207"
42
+ "gitHead": "af8e55e6be97a11ff51e8053df2f8cc05fae8d04"
43
43
  }