@repobit/dex-target 1.4.0 → 1.6.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 ADDED
@@ -0,0 +1,110 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [1.6.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.4.1...@repobit/dex-target@1.6.0) (2025-04-02)
7
+
8
+
9
+ ### Features
10
+
11
+ * **DEX-21820:** added package docs ([215639a](https://github.com/bitdefender/dex-core/commit/215639a57878fc6a14cffda3f5b76689f38ac1b6))
12
+ * **DEX-21820:** added target tests ([6436b75](https://github.com/bitdefender/dex-core/commit/6436b75ad1937da0f9bd932c86c3fe8ba0bf3d54))
13
+
14
+
15
+
16
+ ## [1.5.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.4.1...@repobit/dex-target@1.5.0) (2025-04-02)
17
+
18
+
19
+ ### Features
20
+
21
+ * **DEX-21820:** added package docs ([215639a](https://github.com/bitdefender/dex-core/commit/215639a57878fc6a14cffda3f5b76689f38ac1b6))
22
+ * **DEX-21820:** added target tests ([6436b75](https://github.com/bitdefender/dex-core/commit/6436b75ad1937da0f9bd932c86c3fe8ba0bf3d54))
23
+
24
+
25
+
26
+ ## [1.4.1](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.4.0...@repobit/dex-target@1.4.1) (2025-03-26)
27
+
28
+
29
+ ### Bug Fixes
30
+
31
+ * **DEX-21085:** add files to package json ([d1fa71f](https://github.com/bitdefender/dex-core/commit/d1fa71f4b89812fa306b7ec0104af52505e87491))
32
+
33
+
34
+
35
+ ## [1.4.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.3.0...@repobit/dex-target@1.4.0) (2025-03-26)
36
+
37
+
38
+ ### Features
39
+
40
+ * **DEX-21820:** added syntasa integration ([a2fb875](https://github.com/bitdefender/dex-core/commit/a2fb8756362b6affbf10b0c8affb390749c8a9df))
41
+
42
+
43
+
44
+ ## [1.3.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.2.0...@repobit/dex-target@1.3.0) (2025-03-25)
45
+
46
+
47
+ ### Features
48
+
49
+ * **DEX-22225:** created the data layer and updated target class ([390f327](https://github.com/bitdefender/dex-core/commit/390f327af376e8c70e37d14c5ffd699f60a17275))
50
+
51
+
52
+
53
+ ## [1.2.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.1.3...@repobit/dex-target@1.2.0) (2025-03-25)
54
+
55
+
56
+ ### Features
57
+
58
+ * **DEX-21805:** change jest to vitest ([8219cf8](https://github.com/bitdefender/dex-core/commit/8219cf88cef6c4290783bb80a8142be0195de13e))
59
+
60
+
61
+
62
+ ## [1.1.3](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.1.2...@repobit/dex-target@1.1.3) (2025-03-24)
63
+
64
+
65
+ ### Bug Fixes
66
+
67
+ * **DEX-21805:** add jsdom to jest ([c2d1d0b](https://github.com/bitdefender/dex-core/commit/c2d1d0bb0350df4f09f88cf64d3fec59e6a2815d))
68
+ * **DEX-21805:** move build dependecies to root ([e75bb59](https://github.com/bitdefender/dex-core/commit/e75bb59c6c215b6be8167ca136423e577ef10656))
69
+ * **DEX-21805:** update tsconfig for all packages ([01abd44](https://github.com/bitdefender/dex-core/commit/01abd4449f7c950116c3b5b76c6989299ab99aea))
70
+
71
+
72
+
73
+ ## [1.1.2](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@1.1.0...@repobit/dex-target@1.1.2) (2025-03-21)
74
+
75
+
76
+ ### Bug Fixes
77
+
78
+ * **DEX-21805:** fix package.json ([487e824](https://github.com/bitdefender/dex-core/commit/487e82449bd5a0e6cd959a509b4f9820952466b6))
79
+
80
+
81
+
82
+ # [1.1.0](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@0.1.1...@repobit/dex-target@1.1.0) (2025-02-28)
83
+
84
+
85
+ ### Features
86
+
87
+ * **DEX-21820:** bumped up version ([370a920](https://github.com/bitdefender/dex-core/commit/370a920f8e82bb75a71f324b73d841f09b8a942a))
88
+ * **DEX-21820:** changed license in package file ([07a93c4](https://github.com/bitdefender/dex-core/commit/07a93c457a9c2559bf1c3fe60c8ec0e823947370))
89
+
90
+
91
+
92
+
93
+
94
+ ## [0.1.1](https://github.com/bitdefender/dex-core/compare/@repobit/dex-target@0.1.0...@repobit/dex-target@0.1.1) (2025-02-28)
95
+
96
+ **Note:** Version bump only for package @repobit/dex-target
97
+
98
+
99
+
100
+
101
+
102
+ # 0.1.0 (2025-02-28)
103
+
104
+
105
+ ### Features
106
+
107
+ * **DEX-21820:** added abort controller logic to target package ([44429ed](https://github.com/bitdefender/dex-core/commit/44429ede0c102b22a522488328b5cef5c856e878))
108
+ * **DEX-21820:** added correct npm package organisation ([9dd27bf](https://github.com/bitdefender/dex-core/commit/9dd27bfaee52f3396cdd5a8fdefd3c1adbb0aad0))
109
+ * **DEX-21820:** added license ([853e965](https://github.com/bitdefender/dex-core/commit/853e965455613e97ee920694521d88c01f9dcf57))
110
+ * **DEX-21820:** updated the package docs and package-lock ([c70c000](https://github.com/bitdefender/dex-core/commit/c70c000492903242f34a2b5a42fc2699ba6664f6))
package/README.md CHANGED
@@ -1,11 +1,165 @@
1
- # `@bitdefender/dex-target`
1
+ # `@repobit/dex-target`
2
2
 
3
- > TODO: description
3
+ # Target Integration SDK Documentation
4
+
5
+ This document provides a comprehensive overview of the Target Integration SDK, outlining its purpose, key features, installation guidelines, and detailed information on its core components such as the main class, available methods, public properties and usability.
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ The Target Integration SDK is designed to simplify the integration process with Adobe Target and the Adobe Data Layer. It provides a centralized solution for managing visitor identity operations, sending events, appending visitor IDs to URLs, retrieving mbox offers, and fetching Customer Data Platform (CDP) data. The SDK encapsulates these operations within a single abstract class, ensuring that targeting functionalities are cleanly organized and maintainable in your application.
12
+
13
+ ---
14
+
15
+ ## Key Features
16
+
17
+ - **Adobe SDK base:**
18
+ This package is built on top of the `Adobe WebSDK` implementation and it makes use of the `alloy` methods in order to deliver mbox offers, define the identity of the user using the Adobe Cloud and append identity information onto external links.
19
+
20
+ - **Integration through proxy:**
21
+ The SDK initializes a global proxy to Adobe WebSDK's `alloy` called `alloyProxy`, ensuring that all Adobe Target-related operations are performed through a consistent interface and that early calls are queued up before they can be resolved by the WebSDK once Adobe Launch actually loads.
22
+
23
+ - **Visitor Identity Management:**
24
+ It handles asynchronous retrieval and caching of visitor identity information, ensuring that personalized experiences are based on accurate and up-to-date visitor data.
25
+
26
+ - **Dynamic URL Parameter Extraction:**
27
+ Automatically extracts URL query parameters from the current page, enabling seamless integration with targeting operations without manual parameter management.
28
+
29
+ - **CDP Data Processing:**
30
+ The SDK retrieves, processes, and integrates Customer Data Platform (CDP) data, which is then dispatched to the Adobe Data Layer for further analysis and personalization.
31
+
32
+ - **Offer Retrieval and Caching:**
33
+ Supports multiple configurations for retrieving mbox offers. It caches responses to avoid redundant network requests and optimizes the offer delivery process.
34
+
35
+ - **Abort Mechanism for Robust Operations:**
36
+ Utilizes an AbortController to cancel pending operations if needed, preventing issues when operations take longer than expected or if a page is unloaded.
37
+
38
+ ---
39
+
40
+ ## Installation
41
+
42
+ This package relies on external dependencies:
43
+ - @repobit/dex-data-layer
44
+ - @repobit/dex-utils
45
+
46
+ Install via npm or yarn:
47
+
48
+ ```bash
49
+ npm install @repobit/dex-target
50
+ ```
51
+
52
+ ---
53
+
54
+ ## Class: Target
55
+
56
+ The `Target` class is an abstract class that serves as the main entry point for Adobe Target integration. It is responsible for initializing Adobe Target operations, managing internal state, and providing methods to interact with Adobe Target functionalities.
57
+
58
+ ---
4
59
 
5
60
  ## Usage
6
61
 
62
+ ### Import the SDK
63
+ Simply import the `Target` class into your project. Since `Target` is an abstract class with static methods, there’s no need to create an instance. The module automatically sets up the global `window.alloyProxy` and begins fetching necessary data as soon as it is loaded.
64
+
65
+ ```typescript
66
+ import Target from '@repobit/dex-target';
7
67
  ```
8
- import Target from '@bitdefender/dex-target';
9
68
 
10
- // TODO: DEMONSTRATE API
69
+ ### Getting the config mbox
70
+ The `Config mbox` contains information regarding promotions, buy link and product information changes, as well as the useGeoIpPricing boolean value which specifies that the user locale should be used instead of the website locale. The type definition of the mbox is described below:
71
+
72
+ ```typescript
73
+ export type ConfigMbox = Partial<{
74
+ promotion: string,
75
+ products: {
76
+ [key: string]: {
77
+ [key: `${number}-${number}`]: Partial<{
78
+ extraParameters: {
79
+ key : string,
80
+ value: string
81
+ }[],
82
+ price : number,
83
+ discountedPrice: number,
84
+ buyLink : string
85
+ }>
86
+ }
87
+ },
88
+ useGeoIpPricing: boolean
89
+ }>;
90
+ ```
91
+
92
+ Usage:
93
+
94
+ ```typescript
95
+ Target.configMbox.then(configMboxData => {
96
+ console.log('Config data: ', configMboxData);
97
+ });
98
+ ```
99
+
100
+ ### Getting Visitor Info
101
+ The visitorInfo property returns a promise that resolves to the visitor’s identity details (such as ECID).
102
+
103
+ ```typescript
104
+ Target.visitorInfo.then(info => {
105
+ console.log('Visitor Info: ', info);
106
+ });
107
+ ```
108
+
109
+ ### Append Visitor IDs to a URL
110
+ Use the appendVisitorIDsTo method to append the Adobe Marketing Cloud (adobe_mc) identifier to any URL. This is useful for tracking and personalization.
111
+
112
+ ```typescript
113
+ Target.appendVisitorIDsTo('https://example.com')
114
+ .then((updatedUrl) => {
115
+ console.log('Updated URL:', updatedUrl);
116
+ });
11
117
  ```
118
+
119
+ ### Retrieve Offers
120
+ The getOffers method can be used to fetch Adobe Target offers. It supports both single and multiple mbox names, and accepts optional mbox and profile parameters. It is important to note that all getOffers calls made are cached, but the calls themselves will differ based on the parameters and profile parameters passed, not just by the mboxNames. So if you make a call for an mbox, then another one for same mbox, but you use differenet parameters or profile parameters, these will be cached separately since their scope will be different.
121
+
122
+ #### Single mbox example:
123
+
124
+ ```typescript
125
+ Target.getOffers({
126
+ mboxNames: 'config-mbox',
127
+ parameters: { customParam: 'value' },
128
+ profileParameters: { profile.custom: 'value' }
129
+ }).then(offer => {
130
+ console.log('Config Mbox Offer:', offer);
131
+ });
132
+ ```
133
+
134
+ #### Multiple mbox example:
135
+
136
+ ```typescript
137
+ Target.getOffers({
138
+ mboxNames: ['mbox1', 'mbox2'],
139
+ parameters: { customParam: 'value' },
140
+ profileParameters: { profile.custom: 'value' }
141
+ }).then(offers => {
142
+ console.log('Offers:', offers);
143
+ });
144
+ ```
145
+
146
+ Here the response type of offers will be something like this, instead of the actual data directly:
147
+
148
+ ```typescript
149
+ {
150
+ mbox1: {<data_object>},
151
+ mbox2: {<data_object>}
152
+ }
153
+ ```
154
+
155
+
156
+ ### Aborting Requests
157
+ If needed, abort all ongoing Target-related calls using the abort method. This is particularly useful when Target fails to load or if you need to cancel pending operations. This work well with the @repobit/dex-launch to cancel all alloy requests if the `Adobe Launch` does not load.
158
+
159
+ ```typescript
160
+ try {
161
+ Launch.load()
162
+ } catch (e) {
163
+ Target.abort()
164
+ }
165
+ ```
@@ -1,4 +1,4 @@
1
- import { AlloyFunction, ConfigMbox, GetIdentityResponse, MboxParameters, MboxProfileParameters } from "./typeDefinitions.js";
1
+ import { AlloyFunction, ConfigMbox, MboxParameters, MboxProfileParameters } from "./typeDefinitions.js";
2
2
  declare global {
3
3
  interface Window {
4
4
  alloyProxy: AlloyFunction;
@@ -30,7 +30,14 @@ export default abstract class Target {
30
30
  };
31
31
  useGeoIpPricing: boolean;
32
32
  }> | undefined>;
33
- static get visitorInfo(): Promise<GetIdentityResponse>;
33
+ static get visitorInfo(): Promise<Partial<{
34
+ edge: {
35
+ regionId?: number;
36
+ };
37
+ identity: {
38
+ ECID: string;
39
+ };
40
+ }>>;
34
41
  /** add adobe_mc parameter at the end of the url */
35
42
  static appendVisitorIDsTo(url: string): Promise<string>;
36
43
  /** abort all the Target calls for casese where Target does not load */
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { AdobeDataLayerService, CdpEvent } from "@repobit/dex-data-layer";
2
2
  import { Constants } from "@repobit/dex-utils";
3
- const w = window;
3
+ const _window = window;
4
4
  export default class Target {
5
5
  static urlParameters = this.getUrlParameters();
6
6
  static cachedMboxes = new Map();
@@ -21,7 +21,11 @@ export default class Target {
21
21
  window.alloyProxy.q = [];
22
22
  }
23
23
  this._configMbox = this.getOffers({ mboxNames: 'config-mbox' });
24
- this._visitorInfo = window.alloyProxy('getIdentity');
24
+ this._visitorInfo = new Promise((resolve) => {
25
+ window.alloyProxy("getIdentity").then(result => resolve(result))
26
+ .catch(() => resolve({}));
27
+ this.controller.signal?.addEventListener("abort", () => resolve({}));
28
+ });
25
29
  }
26
30
  /** get an object containing all the url query parameters */
27
31
  static getUrlParameters() {
@@ -39,17 +43,15 @@ export default class Target {
39
43
  return this._visitorInfo;
40
44
  }
41
45
  /** add adobe_mc parameter at the end of the url */
42
- static async appendVisitorIDsTo(url) {
43
- if (url.includes('adobe_mc')) {
44
- return url;
45
- }
46
- try {
47
- return (await window.alloyProxy("appendIdentityToUrl", { url })).url;
48
- }
49
- catch (e) {
50
- console.warn(e);
51
- return url;
46
+ static appendVisitorIDsTo(url) {
47
+ if (url.includes('adobe_mc') || this.controller.signal?.aborted) {
48
+ return Promise.resolve(url);
52
49
  }
50
+ return new Promise((resolve) => {
51
+ window.alloyProxy("appendIdentityToUrl", { url }).then(result => resolve(result.url))
52
+ .catch(() => resolve(url));
53
+ this.controller.signal?.addEventListener("abort", () => resolve(url));
54
+ });
53
55
  }
54
56
  /** abort all the Target calls for casese where Target does not load */
55
57
  static abort() {
@@ -57,7 +59,14 @@ export default class Target {
57
59
  }
58
60
  static async getCdpData() {
59
61
  try {
60
- const cdpDataCall = await fetch(`${Constants.PUBLIC_URL_ORIGIN}/cdp/${(await this._visitorInfo).identity.ECID}`);
62
+ let didCdpGetInstantiated = false;
63
+ const mcid = (await this._visitorInfo)?.identity?.ECID;
64
+ if (!_window.BD.cdpDataCall) {
65
+ _window.BD.cdpDataCall = fetch(`${Constants.PUBLIC_URL_ORIGIN}/cdp/${mcid}`);
66
+ didCdpGetInstantiated = true;
67
+ }
68
+ const cdpDataCall = await _window.BD.cdpDataCall;
69
+ /** @type {{auds: string[], mdl: {key: string, value: string}[], ub: any[] vid: string}} */
61
70
  const receivedCdpData = await cdpDataCall.json();
62
71
  let cdpData = {
63
72
  auds: receivedCdpData?.auds[0] || ''
@@ -68,7 +77,9 @@ export default class Target {
68
77
  return acc;
69
78
  }, cdpData);
70
79
  }
71
- AdobeDataLayerService.push(new CdpEvent(cdpData));
80
+ if (didCdpGetInstantiated) {
81
+ AdobeDataLayerService.push(new CdpEvent(cdpData));
82
+ }
72
83
  return cdpData;
73
84
  }
74
85
  catch (e) {
@@ -117,10 +128,10 @@ export default class Target {
117
128
  });
118
129
  this.controller.signal?.addEventListener("abort", reject);
119
130
  });
120
- this.cachedMboxes.set(`${mbox}_${JSON.stringify(parameters)}`, receivedMboxOfferCall);
131
+ this.cachedMboxes.set(`${mbox}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`, receivedMboxOfferCall);
121
132
  });
122
133
  }
123
- const mboxesPromises = mboxNames.map(mboxName => this.cachedMboxes.get(`${mboxName}_${JSON.stringify(parameters)}`));
134
+ const mboxesPromises = mboxNames.map(mboxName => this.cachedMboxes.get(`${mboxName}_${JSON.stringify(parameters)}_${JSON.stringify(profileParameters)}`));
124
135
  const resolvedMboxes = await Promise.allSettled(mboxesPromises);
125
136
  const offersResult = mboxNames.reduce((acc, mboxName, index) => {
126
137
  acc[mboxName] = resolvedMboxes[index].status === 'fulfilled' ? resolvedMboxes[index].value : undefined;
@@ -129,6 +140,6 @@ export default class Target {
129
140
  return mboxNames.length > 1 ? offersResult : offersResult[mboxNames[0]];
130
141
  }
131
142
  }
132
- w.BD = w.BD || {};
133
- w.BD.Target = Target;
143
+ _window.BD = _window.BD || {};
144
+ _window.BD.Target = Target;
134
145
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -87,14 +87,14 @@ export type AlloyAppendIdentityToUrlResponse = {
87
87
  export type AlloyApplyPropositionsResponse = {
88
88
  propositions: AlloyResponsePropositions[];
89
89
  };
90
- export type GetIdentityResponse = {
90
+ export type GetIdentityResponse = Partial<{
91
91
  edge: {
92
- regionId: number;
92
+ regionId?: number;
93
93
  };
94
94
  identity: {
95
95
  ECID: string;
96
96
  };
97
- };
97
+ }>;
98
98
  export type AlloyFunction = {
99
99
  (...args: SendEventCall): Promise<AlloySendEventResponse>;
100
100
  (...args: AppendIdentityToUrlCall): Promise<AlloyAppendIdentityToUrlResponse>;
package/package.json CHANGED
@@ -1,13 +1,16 @@
1
1
  {
2
2
  "name": "@repobit/dex-target",
3
- "version": "1.4.0",
3
+ "version": "1.6.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",
7
7
  "license": "MIT",
8
8
  "main": "dist/src/index.js",
9
9
  "files": [
10
- "dist/src"
10
+ "dist/src",
11
+ "README.md",
12
+ "CHANGELOG.md",
13
+ "LICENSE"
11
14
  ],
12
15
  "publishConfig": {
13
16
  "access": "public"
@@ -24,11 +27,14 @@
24
27
  "url": "https://github.com/bitdefender/dex-core/issues"
25
28
  },
26
29
  "dependencies": {
27
- "@repobit/dex-data-layer": "0.2.0",
28
- "@repobit/dex-utils": "0.6.0"
30
+ "@repobit/dex-data-layer": "0.2.1",
31
+ "@repobit/dex-utils": "0.6.1"
29
32
  },
30
33
  "module": "dist/src/index.js",
31
34
  "type": "module",
32
35
  "types": "dist/src/index.d.ts",
33
- "gitHead": "5391b27f1542572bf315961e3aecaa0b45b9b00d"
36
+ "volta": {
37
+ "node": "22.14.0"
38
+ },
39
+ "gitHead": "023c3635baa1d3b93ca2fa5876de81e383d34799"
34
40
  }