@repobit/dex-target 2.12.10 → 2.13.0

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,15 @@
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.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@2.12.10...@repobit/dex-target@2.13.0) (2026-02-27)
7
+
8
+
9
+ ### Features
10
+
11
+ * **DEX-26346:** created initial implementation of getHTML function ([6f1d6c7](https://github.com/bitdefender/dex-core/commit/6f1d6c7a51a7f3e64095389ae11bb634b14396fa))
12
+
13
+
14
+
6
15
  ## [2.12.10](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@2.12.9...@repobit/dex-target@2.12.10) (2026-02-19)
7
16
 
8
17
  **Note:** Version bump only for package @repobit/dex-target
@@ -91,5 +91,10 @@ export default class Target {
91
91
  scope: AlloyResponsePropositions["scope"];
92
92
  scopeDetails: AlloyResponsePropositions["scopeDetails"];
93
93
  }): Promise<void>;
94
+ getHTML(param: {
95
+ mboxNames: string;
96
+ parameters?: MboxParameters;
97
+ profileParameters?: MboxProfileParameters;
98
+ }): Promise<DocumentFragment>;
94
99
  }
95
100
  export {};
package/dist/src/index.js CHANGED
@@ -248,6 +248,23 @@ export default class Target {
248
248
  }
249
249
  });
250
250
  }
251
+ async getHTML(param) {
252
+ const mboxData = await this.getOffers(param);
253
+ const fragment = document.createDocumentFragment();
254
+ if (typeof mboxData === 'string') {
255
+ const parser = new DOMParser();
256
+ const doc = parser.parseFromString(mboxData, "text/html");
257
+ fragment.append(...doc.body.childNodes);
258
+ fragment.querySelectorAll("script").forEach(oldScript => {
259
+ const newScript = document.createElement("script");
260
+ [...oldScript.attributes].forEach(attr => newScript.setAttribute(attr.name, attr.value));
261
+ newScript.textContent = oldScript.textContent;
262
+ oldScript.replaceWith(newScript);
263
+ });
264
+ return fragment;
265
+ }
266
+ return fragment;
267
+ }
251
268
  }
252
269
  window.BD = window.BD || {};
253
270
  window.BD.state = window.BD.state || {};
@@ -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\nwindow.BD = window.BD || {};\nwindow.BD.state = window.BD.state || {};\n"]}
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 getHTML(param: {\n mboxNames : string,\n parameters? : MboxParameters,\n profileParameters?: MboxProfileParameters\n }): Promise<DocumentFragment> {\n const mboxData = await this.getOffers(param);\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\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@repobit/dex-target",
3
- "version": "2.12.10",
3
+ "version": "2.13.0",
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",
@@ -36,5 +36,8 @@
36
36
  "volta": {
37
37
  "node": "22.14.0"
38
38
  },
39
- "gitHead": "b6ea1e176fb0f112af9404c330a5f38b61146e29"
39
+ "devDependencies": {
40
+ "@types/jsdom": "^28.0.0"
41
+ },
42
+ "gitHead": "643101b4bd0ca4a7086be6325c830dfbc096a706"
40
43
  }