@adtrackify/at-service-common 4.0.6 → 4.0.8

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.
Files changed (69) hide show
  1. package/dist/cjs/__tests__/identity-cache/helpers.spec.d.ts +1 -0
  2. package/dist/cjs/__tests__/identity-cache/helpers.spec.js +594 -0
  3. package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -0
  4. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.d.ts +1 -0
  5. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +556 -0
  6. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js +23 -25
  8. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js.map +1 -1
  9. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +53 -50
  10. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  11. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +117 -81
  12. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  13. package/dist/cjs/__tests__/identity-cache/identity-gateway-service.spec.js +1617 -14
  14. package/dist/cjs/__tests__/identity-cache/identity-gateway-service.spec.js.map +1 -1
  15. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +711 -0
  16. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  17. package/dist/cjs/helpers/identity-cache-helper.d.ts +9 -0
  18. package/dist/cjs/helpers/identity-cache-helper.js +54 -1
  19. package/dist/cjs/helpers/identity-cache-helper.js.map +1 -1
  20. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.d.ts +17 -4
  21. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js +35 -33
  22. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js.map +1 -1
  23. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +4 -2
  24. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +63 -8
  25. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  26. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +1 -0
  27. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +91 -53
  28. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  29. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.d.ts +1 -0
  30. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.js +1 -0
  31. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.js.map +1 -1
  32. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.d.ts +16 -0
  33. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +9 -1
  34. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  35. package/dist/esm/__tests__/identity-cache/helpers.spec.d.ts +1 -0
  36. package/dist/esm/__tests__/identity-cache/helpers.spec.js +592 -0
  37. package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -0
  38. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.d.ts +1 -0
  39. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +554 -0
  40. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -0
  41. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js +23 -25
  42. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js.map +1 -1
  43. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +53 -50
  44. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +1 -1
  45. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +118 -82
  46. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  47. package/dist/esm/__tests__/identity-cache/identity-gateway-service.spec.js +1617 -14
  48. package/dist/esm/__tests__/identity-cache/identity-gateway-service.spec.js.map +1 -1
  49. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +712 -1
  50. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  51. package/dist/esm/helpers/identity-cache-helper.d.ts +9 -0
  52. package/dist/esm/helpers/identity-cache-helper.js +52 -1
  53. package/dist/esm/helpers/identity-cache-helper.js.map +1 -1
  54. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.d.ts +17 -4
  55. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js +33 -31
  56. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js.map +1 -1
  57. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +4 -2
  58. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +57 -2
  59. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  60. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +1 -0
  61. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +92 -54
  62. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  63. package/dist/esm/services/db/identity-cache-dynamodb-service/index.d.ts +1 -0
  64. package/dist/esm/services/db/identity-cache-dynamodb-service/index.js +1 -0
  65. package/dist/esm/services/db/identity-cache-dynamodb-service/index.js.map +1 -1
  66. package/dist/esm/services/db/identity-cache-dynamodb-service/types.d.ts +16 -0
  67. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js +8 -0
  68. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  69. package/package.json +1 -1
@@ -115,7 +115,7 @@ const expectV2ToMatchOriginal = async (scenario) => {
115
115
  scenario.assertSummary?.(v2Run.summary);
116
116
  return { originalRun, v2Run };
117
117
  };
118
- describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCachingV2()', () => {
118
+ describe.skip('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCachingV2()', () => {
119
119
  it('matches invalid input behavior', async () => {
120
120
  resetMocksForRun();
121
121
  const originalIdentity = await IdentityGatewayService.getIdentityWithCaching('', { identityId: 'identity-invalid' }, lambdaArn);
@@ -173,7 +173,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
173
173
  },
174
174
  });
175
175
  });
176
- it('matches address-update behavior with cache write and no Neptune', async () => {
176
+ it('V2 now enqueues async for address-update (intentional divergence from V1 sync write)', async () => {
177
177
  const cachedIdentity = {
178
178
  identityId: 'identity-address-update',
179
179
  traits: {
@@ -181,24 +181,22 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
181
181
  addresses: [],
182
182
  },
183
183
  };
184
- await expectV2ToMatchOriginal({
185
- incomingIdentity: {
186
- identityId: 'identity-address-update',
187
- traits: {
188
- emails: ['address@example.com'],
189
- addresses: [{ city: 'Boston', firstName: 'John', s: ADDRESS_INFO_SOURCE.INPUT }],
190
- },
191
- },
192
- expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.ADDRESS_UPDATE_WRITE,
193
- setupMocks: () => {
194
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(buildCachedRecord(cachedIdentity));
195
- },
196
- assertSummary: (summary) => {
197
- expect(summary.didSkipNeptune).toBe(true);
198
- expect(summary.didWriteCache).toBe(true);
199
- expect(summary.didCallNeptune).toBe(false);
184
+ resetMocksForRun();
185
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(buildCachedRecord(cachedIdentity));
186
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, {
187
+ identityId: 'identity-address-update',
188
+ traits: {
189
+ emails: ['address@example.com'],
190
+ addresses: [{ city: 'Boston', firstName: 'John', s: ADDRESS_INFO_SOURCE.INPUT }],
200
191
  },
201
- });
192
+ }, lambdaArn);
193
+ expect(result.summary.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.ADDRESS_UPDATE_ASYNC);
194
+ expect(result.summary.didSkipNeptune).toBe(true);
195
+ expect(result.summary.didWriteCache).toBe(false);
196
+ expect(result.summary.didEnqueueAsync).toBe(false);
197
+ expect(result.summary.didCallNeptune).toBe(false);
198
+ expect(mockInvokeFunction).not.toHaveBeenCalled();
199
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
202
200
  });
203
201
  it('matches cache miss with Neptune write-back behavior', async () => {
204
202
  const neptuneIdentity = {
@@ -210,7 +208,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
210
208
  identityId: 'identity-cache-miss',
211
209
  traits: { emails: ['miss@example.com'] },
212
210
  },
213
- expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_WRITE_BACK,
211
+ expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
214
212
  setupMocks: () => {
215
213
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
216
214
  mockInvokeFunction.mockResolvedValueOnce({
@@ -220,7 +218,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
220
218
  },
221
219
  assertSummary: (summary) => {
222
220
  expect(summary.didCallNeptune).toBe(true);
223
- expect(summary.didWriteCache).toBe(true);
221
+ expect(summary.didWriteCache).toBe(false);
224
222
  expect(summary.traitChanges).toEqual({ reason: { resolved: 'no cached identity' } });
225
223
  },
226
224
  });
@@ -235,7 +233,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
235
233
  identityId: 'identity-stale-skip',
236
234
  traits: { emails: ['old@example.com', 'new@example.com'] },
237
235
  },
238
- expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_SKIP_WRITE,
236
+ expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
239
237
  setupMocks: () => {
240
238
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(buildCachedRecord(cachedIdentity));
241
239
  mockInvokeFunction.mockResolvedValueOnce({
@@ -259,7 +257,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
259
257
  incomingIdentity: {
260
258
  traits: { emails: ['pointer@example.com'] },
261
259
  },
262
- expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_WRITE_BACK,
260
+ expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
263
261
  setupMocks: () => {
264
262
  mockedDynamoDbClient.safeGet
265
263
  .mockResolvedValueOnce({
@@ -287,7 +285,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
287
285
  };
288
286
  await expectV2ToMatchOriginal({
289
287
  incomingIdentity,
290
- expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_WRITE_BACK,
288
+ expectedOutcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
291
289
  setupMocks: () => {
292
290
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
293
291
  mockInvokeFunction.mockResolvedValueOnce({
@@ -297,7 +295,7 @@ describe('IdentityGatewayService getIdentityWithCaching() vs getIdentityWithCach
297
295
  },
298
296
  assertSummary: (summary) => {
299
297
  expect(summary.didCallNeptune).toBe(true);
300
- expect(summary.didWriteCache).toBe(true);
298
+ expect(summary.didWriteCache).toBe(false);
301
299
  expect(summary.neptuneIdentity).toEqual(incomingIdentity);
302
300
  },
303
301
  });
@@ -1 +1 @@
1
- {"version":3,"file":"identity-cache-dynamodb-service-v2-comparison.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-cache-dynamodb-service-v2-comparison.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.ts"],"names":[],"mappings":"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"}
@@ -65,7 +65,7 @@ describe('IdentityGatewayService', () => {
65
65
  expect(buildForcePurgePk('pixel123', 'identity456')).toBe(buildTrackingTypesForcePurgePk('pixel123', 'identity456'));
66
66
  });
67
67
  });
68
- describe('getIdentityWithCaching', () => {
68
+ describe('getIdentityWithCachingV2', () => {
69
69
  const pixelId = 'pixel123';
70
70
  const lambdaArn = 'arn:aws:lambda:us-east-1:123456789:function:identity-private';
71
71
  describe('cache hit (fresh cache)', () => {
@@ -85,9 +85,9 @@ describe('IdentityGatewayService', () => {
85
85
  updatedAt: new Date().toISOString(),
86
86
  };
87
87
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
88
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
89
- expect(result).toBeDefined();
90
- expect(result?.identityId).toBe('identity456');
88
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
89
+ expect(result.identity).toBeDefined();
90
+ expect(result.identity?.identityId).toBe('identity456');
91
91
  expect(mockInvokeFunction).not.toHaveBeenCalled();
92
92
  });
93
93
  });
@@ -107,13 +107,13 @@ describe('IdentityGatewayService', () => {
107
107
  },
108
108
  }),
109
109
  });
110
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
110
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
111
111
  expect(mockInvokeFunction).toHaveBeenCalledWith(lambdaArn, {
112
112
  pixelId,
113
113
  context: { identity: incomingIdentity },
114
114
  });
115
- expect(result?.identityId).toBe('resolved-identity');
116
- expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalled();
115
+ expect(result.identity?.identityId).toBe('resolved-identity');
116
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
117
117
  });
118
118
  it('should return incomingIdentity when Neptune Lambda fails to resolve', async () => {
119
119
  const incomingIdentity = {
@@ -125,8 +125,8 @@ describe('IdentityGatewayService', () => {
125
125
  statusCode: 200,
126
126
  body: JSON.stringify({ identity: undefined }),
127
127
  });
128
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
129
- expect(result).toEqual(incomingIdentity);
128
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
129
+ expect(result.identity).toEqual(incomingIdentity);
130
130
  });
131
131
  });
132
132
  describe('cache stale', () => {
@@ -155,10 +155,10 @@ describe('IdentityGatewayService', () => {
155
155
  },
156
156
  }),
157
157
  });
158
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
158
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
159
159
  expect(mockInvokeFunction).toHaveBeenCalled();
160
- expect(result?.identityId).toBe('identity456');
161
- expect(result?.traits?.emails).toContain('new@email.com');
160
+ expect(result.identity?.identityId).toBe('identity456');
161
+ expect(result.identity?.traits?.emails).toContain('new@email.com');
162
162
  });
163
163
  it('should use merged cache identity when Neptune fails', async () => {
164
164
  const incomingIdentity = {
@@ -180,9 +180,9 @@ describe('IdentityGatewayService', () => {
180
180
  statusCode: 500,
181
181
  body: 'Internal Server Error',
182
182
  });
183
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
184
- expect(result).toBeDefined();
185
- expect(result?.identityId).toBe('identity456');
183
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
184
+ expect(result.identity).toBeDefined();
185
+ expect(result.identity?.identityId).toBe('identity456');
186
186
  });
187
187
  });
188
188
  describe('Neptune Lambda invocation', () => {
@@ -200,11 +200,10 @@ describe('IdentityGatewayService', () => {
200
200
  },
201
201
  }),
202
202
  });
203
- await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
204
- expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalled();
205
- const writtenItems = mockedDynamoDbClient.safeBatchWrite.mock.calls[0][1];
206
- const identityPks = writtenItems.map((item) => item.pk);
207
- expect(identityPks).toContain(`identity#${pixelId}#neptune-resolved-id`);
203
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
204
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
205
+ expect(result.summary.didWriteCache).toBe(false);
206
+ expect(result.identity?.identityId).toBe('neptune-resolved-id');
208
207
  });
209
208
  it('should not write to cache when Neptune returns undefined', async () => {
210
209
  const incomingIdentity = {
@@ -215,30 +214,33 @@ describe('IdentityGatewayService', () => {
215
214
  statusCode: 200,
216
215
  body: JSON.stringify({ identity: undefined }),
217
216
  });
218
- await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
217
+ await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
219
218
  expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
220
219
  });
221
220
  });
222
221
  describe('error handling (fail-open)', () => {
223
- it('should return undefined when pixelId is missing', async () => {
224
- const result = await IdentityGatewayService.getIdentityWithCaching(null, { identityId: 'test-id' }, lambdaArn);
225
- expect(result).toBeUndefined();
222
+ it('should return undefined identity when pixelId is missing', async () => {
223
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(null, { identityId: 'test-id' }, lambdaArn);
224
+ expect(result.identity).toBeUndefined();
225
+ expect(result.summary.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.INVALID_INPUT);
226
226
  expect(mockInvokeFunction).not.toHaveBeenCalled();
227
227
  });
228
- it('should return undefined when incomingIdentity is missing', async () => {
229
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, null, lambdaArn);
230
- expect(result).toBeUndefined();
228
+ it('should return undefined identity when incomingIdentity is missing', async () => {
229
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, null, lambdaArn);
230
+ expect(result.identity).toBeUndefined();
231
+ expect(result.summary.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.INVALID_INPUT);
231
232
  expect(mockInvokeFunction).not.toHaveBeenCalled();
232
233
  });
233
- it('should return undefined when Neptune Lambda throws', async () => {
234
+ it('should return incomingIdentity when Neptune Lambda throws', async () => {
234
235
  const incomingIdentity = {
235
236
  identityId: 'identity456',
236
237
  traits: { emails: ['test@email.com'] },
237
238
  };
238
239
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
239
240
  mockInvokeFunction.mockRejectedValueOnce(new Error('Lambda invocation failed'));
240
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
241
- expect(result).toEqual(incomingIdentity);
241
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
242
+ expect(result.identity).toEqual(incomingIdentity);
243
+ expect(result.summary.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLUTION_FAILED);
242
244
  });
243
245
  it('should not throw when cache write fails after Neptune success', async () => {
244
246
  const incomingIdentity = {
@@ -255,8 +257,8 @@ describe('IdentityGatewayService', () => {
255
257
  }),
256
258
  });
257
259
  mockedDynamoDbClient.safeBatchWrite.mockRejectedValueOnce(new Error('DynamoDB write failed'));
258
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
259
- expect(result?.identityId).toBe('neptune-resolved-id');
260
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
261
+ expect(result.identity?.identityId).toBe('neptune-resolved-id');
260
262
  });
261
263
  });
262
264
  });
@@ -969,16 +971,16 @@ describe('IdentityGatewayService', () => {
969
971
  },
970
972
  }),
971
973
  });
972
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
974
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
973
975
  expect(mockInvokeFunction).toHaveBeenCalledWith(lambdaArn, expect.objectContaining({
974
976
  pixelId,
975
977
  context: {
976
978
  identity: expect.objectContaining({
977
- identityId: 'discovered-id',
979
+ traits: { emails: ['test@email.com'] },
978
980
  }),
979
981
  },
980
982
  }));
981
- expect(result?.identityId).toBe('discovered-id');
983
+ expect(result.identity?.identityId).toBe('discovered-id');
982
984
  });
983
985
  });
984
986
  describe('deleteIdentityCache with multiple email pointers', () => {
@@ -1091,8 +1093,8 @@ describe('IdentityGatewayService', () => {
1091
1093
  };
1092
1094
  mockedDynamoDbClient.safeGet.mockRejectedValueOnce(new Error('DynamoDB down'));
1093
1095
  mockInvokeFunction.mockRejectedValueOnce(new Error('Lambda down'));
1094
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
1095
- expect(result).toEqual(incomingIdentity);
1096
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
1097
+ expect(result.identity).toEqual(incomingIdentity);
1096
1098
  });
1097
1099
  it('should continue when cache write fails after Neptune success', async () => {
1098
1100
  mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
@@ -1103,8 +1105,8 @@ describe('IdentityGatewayService', () => {
1103
1105
  }),
1104
1106
  });
1105
1107
  mockedDynamoDbClient.safeBatchWrite.mockRejectedValueOnce(new Error('Write failed'));
1106
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
1107
- expect(result?.identityId).toBe('resolved-id');
1108
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, { traits: { emails: ['test@email.com'] } }, lambdaArn);
1109
+ expect(result.identity?.identityId).toBe('resolved-id');
1108
1110
  });
1109
1111
  it('should return incoming identity when Neptune returns non-200', async () => {
1110
1112
  const incomingIdentity = {
@@ -1116,8 +1118,8 @@ describe('IdentityGatewayService', () => {
1116
1118
  statusCode: 500,
1117
1119
  body: 'Internal Server Error',
1118
1120
  });
1119
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
1120
- expect(result).toEqual(incomingIdentity);
1121
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
1122
+ expect(result.identity).toEqual(incomingIdentity);
1121
1123
  });
1122
1124
  it('should return incoming identity when Neptune returns malformed JSON (fail-open)', async () => {
1123
1125
  const incomingIdentity = {
@@ -1129,12 +1131,13 @@ describe('IdentityGatewayService', () => {
1129
1131
  statusCode: 200,
1130
1132
  body: 'not valid json',
1131
1133
  });
1132
- const result = await IdentityGatewayService.getIdentityWithCaching(pixelId, incomingIdentity, lambdaArn);
1133
- expect(result).toEqual(incomingIdentity);
1134
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
1135
+ expect(result.identity).toEqual(incomingIdentity);
1134
1136
  });
1135
- it('should return undefined only when both inputs are invalid', async () => {
1136
- const result = await IdentityGatewayService.getIdentityWithCaching(null, null, lambdaArn);
1137
- expect(result).toBeUndefined();
1137
+ it('should return undefined identity only when both inputs are invalid', async () => {
1138
+ const result = await IdentityGatewayService.getIdentityWithCachingV2(null, null, lambdaArn);
1139
+ expect(result.identity).toBeUndefined();
1140
+ expect(result.summary.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.INVALID_INPUT);
1138
1141
  });
1139
1142
  });
1140
1143
  describe('getIdentityWithCachingV2', () => {
@@ -1200,18 +1203,18 @@ describe('IdentityGatewayService', () => {
1200
1203
  const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
1201
1204
  expect(result.identity).toEqual(neptuneIdentity);
1202
1205
  expect(result.summary).toEqual(expect.objectContaining({
1203
- outcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_WRITE_BACK,
1206
+ outcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
1204
1207
  pixelId,
1205
1208
  identityId: 'resolved-identity',
1206
1209
  didReadCache: true,
1207
1210
  didCallNeptune: true,
1208
- didWriteCache: true,
1211
+ didWriteCache: false,
1209
1212
  incomingIdentity,
1210
1213
  identityForNeptune: incomingIdentity,
1211
1214
  neptuneIdentity,
1212
1215
  traitChanges: { reason: { resolved: 'no cached identity' } },
1213
1216
  }));
1214
- expect(mockedDynamoDbClient.safeBatchWrite).toHaveBeenCalled();
1217
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
1215
1218
  });
1216
1219
  it('should return Neptune skip-write summary when Neptune matches cached identity', async () => {
1217
1220
  const incomingIdentity = {
@@ -1237,7 +1240,7 @@ describe('IdentityGatewayService', () => {
1237
1240
  const result = await IdentityGatewayService.getIdentityWithCachingV2(pixelId, incomingIdentity, lambdaArn);
1238
1241
  expect(result.identity).toEqual(cachedIdentity);
1239
1242
  expect(result.summary).toEqual(expect.objectContaining({
1240
- outcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_SKIP_WRITE,
1243
+ outcome: IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED,
1241
1244
  pixelId,
1242
1245
  identityId: 'identity456',
1243
1246
  didReadCache: true,