Skip to content

Commit f73593c

Browse files
authored
Expose targeting resolved_ids in resolved event (#213)
1 parent 486afff commit f73593c

3 files changed

Lines changed: 23 additions & 0 deletions

File tree

lib/core/events/cache-refresh.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const mock_configs = {
88
} as ResolvedConfig;
99

1010
const mock_response: TargetingResponse = {
11+
resolved_ids: ["resolved-id"],
1112
ortb2: {
1213
user: {
1314
eids: [
@@ -33,6 +34,7 @@ describe("sendTargetingUpdateEvent", () => {
3334

3435
expect(event.detail.instance).toBe("my-node");
3536
expect(event.detail.resolved).toBe(true);
37+
expect(event.detail.resolvedIDs).toEqual(["resolved-id"]);
3638
expect(event.detail.ortb2).toEqual(mock_response.ortb2);
3739
expect([...event.detail.provenance]).toEqual(["matcher-a", "matcher-b"]);
3840
});
@@ -68,4 +70,22 @@ describe("sendTargetingUpdateEvent", () => {
6870

6971
expect(event.detail.resolved).toBe(false); // false if no eids
7072
});
73+
74+
it("doesnt expose resolvedID when absent ", async () => {
75+
mock_response.ortb2.user = {};
76+
77+
const eventPromise = new Promise<CustomEvent>((resolve) => {
78+
window.addEventListener("optable-targeting:change", (event) => {
79+
resolve(event as CustomEvent);
80+
});
81+
});
82+
83+
const { resolved_ids: _ignore, ...response } = mock_response;
84+
85+
sendTargetingUpdateEvent(mock_configs, response);
86+
87+
const event = await eventPromise;
88+
89+
expect(event.detail.resolvedIDs).toEqual([]);
90+
});
7191
});

lib/core/events/cache-refresh.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ function sendTargetingUpdateEvent(config: ResolvedConfig, response: TargetingRes
1111
detail: {
1212
instance: config.node || config.host,
1313
resolved: !!response.ortb2?.user?.eids?.length,
14+
resolvedIDs: response.resolved_ids ?? [],
1415
ortb2: response.ortb2,
1516
provenance: new Set(matchers),
1617
},

lib/edge/targeting.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ type TargetingResponse = {
3030
audience?: AudienceIdentifiers[];
3131
user?: UserIdentifiers[];
3232
ortb2: { user: ortb2.User };
33+
// Identifiers that matched and were used to generate the targeting response.
34+
resolved_ids?: string[];
3335
};
3436

3537
async function Targeting(config: ResolvedConfig, req: TargetingRequest): Promise<TargetingResponse> {

0 commit comments

Comments
 (0)