@adtrackify/at-service-common 4.0.13 → 4.0.15

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 (109) hide show
  1. package/dist/cjs/__tests__/identity-cache/helpers.spec.js +37 -38
  2. package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +92 -349
  4. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js +360 -0
  6. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +138 -0
  8. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -0
  9. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +153 -0
  10. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -0
  11. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js +72 -0
  12. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -0
  13. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +89 -0
  14. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -0
  15. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +136 -0
  16. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -0
  17. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +224 -0
  18. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -0
  19. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.d.ts +28 -0
  20. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js +90 -0
  21. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -0
  22. package/dist/cjs/clients/internal-api/identity-client.d.ts +12 -2
  23. package/dist/cjs/clients/internal-api/identity-client.js +59 -13
  24. package/dist/cjs/clients/internal-api/identity-client.js.map +1 -1
  25. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +1 -7
  26. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +0 -305
  27. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  28. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +14 -14
  29. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +122 -330
  30. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  31. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.d.ts +0 -1
  32. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.js +0 -1
  33. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.js.map +1 -1
  34. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.d.ts +8 -158
  35. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +1 -15
  36. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  37. package/dist/esm/__tests__/identity-cache/helpers.spec.js +26 -27
  38. package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
  39. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +92 -349
  40. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  41. package/dist/esm/__tests__/identity-cache/identity-client.spec.js +358 -0
  42. package/dist/esm/__tests__/identity-cache/identity-client.spec.js.map +1 -0
  43. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.d.ts +1 -0
  44. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +136 -0
  45. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -0
  46. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.d.ts +1 -0
  47. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +151 -0
  48. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -0
  49. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.d.ts +1 -0
  50. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js +70 -0
  51. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -0
  52. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.d.ts +1 -0
  53. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +87 -0
  54. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -0
  55. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.d.ts +1 -0
  56. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +134 -0
  57. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -0
  58. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.d.ts +1 -0
  59. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +222 -0
  60. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -0
  61. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.d.ts +28 -0
  62. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js +83 -0
  63. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -0
  64. package/dist/esm/clients/internal-api/identity-client.d.ts +12 -2
  65. package/dist/esm/clients/internal-api/identity-client.js +60 -14
  66. package/dist/esm/clients/internal-api/identity-client.js.map +1 -1
  67. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +1 -7
  68. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +1 -303
  69. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  70. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +14 -14
  71. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +125 -330
  72. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  73. package/dist/esm/services/db/identity-cache-dynamodb-service/index.d.ts +0 -1
  74. package/dist/esm/services/db/identity-cache-dynamodb-service/index.js +0 -1
  75. package/dist/esm/services/db/identity-cache-dynamodb-service/index.js.map +1 -1
  76. package/dist/esm/services/db/identity-cache-dynamodb-service/types.d.ts +8 -158
  77. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js +0 -14
  78. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  79. package/package.json +2 -2
  80. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service-v2-comparison.spec.js +0 -646
  81. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service-v2-comparison.spec.js.map +0 -1
  82. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js +0 -325
  83. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js.map +0 -1
  84. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +0 -1286
  85. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +0 -1
  86. package/dist/cjs/__tests__/identity-cache/identity-gateway-service.spec.js +0 -2170
  87. package/dist/cjs/__tests__/identity-cache/identity-gateway-service.spec.js.map +0 -1
  88. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.d.ts +0 -26
  89. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js +0 -252
  90. package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js.map +0 -1
  91. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service-v2-comparison.spec.js +0 -644
  92. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service-v2-comparison.spec.js.map +0 -1
  93. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js +0 -323
  94. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.js.map +0 -1
  95. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +0 -1284
  96. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js.map +0 -1
  97. package/dist/esm/__tests__/identity-cache/identity-gateway-service.spec.js +0 -2168
  98. package/dist/esm/__tests__/identity-cache/identity-gateway-service.spec.js.map +0 -1
  99. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.d.ts +0 -26
  100. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js +0 -235
  101. package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js.map +0 -1
  102. /package/dist/cjs/__tests__/identity-cache/{identity-cache-dynamodb-db-service-v2-comparison.spec.d.ts → identity-client.spec.d.ts} +0 -0
  103. /package/dist/cjs/__tests__/identity-cache/{identity-cache-dynamodb-service-v2-comparison.spec.d.ts → identity-gateway-cache-hit.spec.d.ts} +0 -0
  104. /package/dist/cjs/__tests__/identity-cache/{identity-cache-dynamodb-service.spec.d.ts → identity-gateway-cache-miss.spec.d.ts} +0 -0
  105. /package/dist/cjs/__tests__/identity-cache/{identity-gateway-service.spec.d.ts → identity-gateway-constructor.spec.d.ts} +0 -0
  106. /package/dist/{esm/__tests__/identity-cache/identity-cache-dynamodb-db-service-v2-comparison.spec.d.ts → cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.d.ts} +0 -0
  107. /package/dist/{esm/__tests__/identity-cache/identity-cache-dynamodb-service-v2-comparison.spec.d.ts → cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.d.ts} +0 -0
  108. /package/dist/{esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.d.ts → cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.d.ts} +0 -0
  109. /package/dist/esm/__tests__/identity-cache/{identity-gateway-service.spec.d.ts → identity-client.spec.d.ts} +0 -0
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const identity_gateway_test_setup_js_1 = require("./identity-gateway-test-setup.js");
4
+ describe('IdentityGatewayService stale cache scenarios', () => {
5
+ const pixelId = identity_gateway_test_setup_js_1.TEST_PIXEL_ID;
6
+ beforeEach(() => {
7
+ (0, identity_gateway_test_setup_js_1.resetAllMocks)();
8
+ });
9
+ describe('identity-defining trait changes → Neptune', () => {
10
+ it('should call Neptune when new emails are added', async () => {
11
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
12
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'staleness-compute', {
13
+ emails: ['old@email.com'],
14
+ });
15
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
16
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
17
+ identityId: 'staleness-compute',
18
+ traits: { emails: ['old@email.com', 'new@email.com'] },
19
+ });
20
+ const incomingIdentity = {
21
+ identityId: 'staleness-compute',
22
+ traits: {
23
+ emails: ['old@email.com', 'new@email.com'],
24
+ },
25
+ };
26
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
27
+ expect(result.didCallNeptune).toBe(true);
28
+ expect(result.stalenessResult?.staleTraits).toContain('emails');
29
+ });
30
+ it('should not skip Neptune for IDENTITY_STALE tier', async () => {
31
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
32
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'call-neptune', {
33
+ emails: ['old@email.com'],
34
+ });
35
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
36
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
37
+ identityId: 'call-neptune',
38
+ traits: { emails: ['old@email.com', 'new@email.com'] },
39
+ });
40
+ const incomingIdentity = {
41
+ identityId: 'call-neptune',
42
+ traits: {
43
+ emails: ['old@email.com', 'new@email.com'],
44
+ },
45
+ };
46
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
47
+ expect(result.didSkipNeptune).toBe(false);
48
+ expect(result.didCallNeptune).toBe(true);
49
+ expect(identity_gateway_test_setup_js_1.mockGetIdentity).toHaveBeenCalled();
50
+ });
51
+ });
52
+ describe('Neptune resolution success', () => {
53
+ it('should return NEPTUNE_RESOLVED outcome', async () => {
54
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
55
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'stale-reason', {
56
+ emails: ['old@email.com'],
57
+ });
58
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
59
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
60
+ identityId: 'stale-reason',
61
+ traits: { emails: ['old@email.com', 'new@email.com'] },
62
+ });
63
+ const incomingIdentity = {
64
+ identityId: 'stale-reason',
65
+ traits: {
66
+ emails: ['old@email.com', 'new@email.com'],
67
+ },
68
+ };
69
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
70
+ expect(result.outcome).toBe(identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
71
+ });
72
+ it('should compute traitChanges between cached and Neptune identity', async () => {
73
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
74
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'trait-changes', {
75
+ emails: ['old@email.com'],
76
+ phones: ['555-old'],
77
+ });
78
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
79
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
80
+ identityId: 'trait-changes',
81
+ traits: {
82
+ emails: ['old@email.com', 'new@email.com'],
83
+ phones: ['555-old', '555-new'],
84
+ },
85
+ });
86
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'trait-changes', traits: { emails: ['old@email.com', 'new@email.com'] } });
87
+ expect(result.traitChanges).toBeDefined();
88
+ expect(result.traitChanges?.emails).toBeDefined();
89
+ });
90
+ it('should not write to cache (identity service handles writes)', async () => {
91
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
92
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'neptune-write', {
93
+ emails: ['old@email.com'],
94
+ });
95
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
96
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
97
+ identityId: 'neptune-write',
98
+ traits: {
99
+ emails: ['old@email.com', 'new@email.com'],
100
+ phones: ['555-neptune'],
101
+ },
102
+ });
103
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'neptune-write', traits: { emails: ['old@email.com', 'new@email.com'] } });
104
+ expect(result.didWriteCache).toBe(false);
105
+ expect(result.outcome).toBe(identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
106
+ expect(identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
107
+ });
108
+ it('should still return Neptune identity when it matches cached', async () => {
109
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
110
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'no-changes', {
111
+ emails: ['same@email.com'],
112
+ });
113
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
114
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
115
+ identityId: 'no-changes',
116
+ traits: { emails: ['same@email.com'] },
117
+ });
118
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'no-changes', traits: { emails: ['same@email.com', 'thought-new@email.com'] } });
119
+ expect(result.didCallNeptune).toBe(true);
120
+ expect(result.didWriteCache).toBe(false);
121
+ expect(result.outcome).toBe(identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
122
+ });
123
+ it('should strip address timestamps when comparing Neptune result', async () => {
124
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
125
+ const now = Date.now();
126
+ const cachedResponse = {
127
+ pk: `identity#${pixelId}#addr-timestamp`,
128
+ pixelId,
129
+ identityId: 'addr-timestamp',
130
+ response: {
131
+ identityId: 'addr-timestamp',
132
+ traits: {
133
+ emails: ['test@email.com'],
134
+ addresses: [{ city: 'NYC', cra: now - 1000, upa: now - 500 }],
135
+ },
136
+ },
137
+ updatedAt: new Date().toISOString(),
138
+ };
139
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
140
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockResolvedValueOnce({
141
+ identityId: 'addr-timestamp',
142
+ traits: {
143
+ emails: ['test@email.com'],
144
+ addresses: [{ city: 'NYC', cra: now, upa: now }],
145
+ },
146
+ });
147
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'addr-timestamp', traits: { emails: ['test@email.com', 'new@email.com'] } });
148
+ expect(result.didWriteCache).toBe(false);
149
+ expect(result.outcome).toBe(identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
150
+ });
151
+ });
152
+ describe('Neptune resolution failure', () => {
153
+ it('should return NEPTUNE_RESOLUTION_FAILED outcome', async () => {
154
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
155
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'neptune-throws', {
156
+ emails: ['old@email.com'],
157
+ });
158
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
159
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockRejectedValueOnce(new Error('Neptune invocation failed'));
160
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'neptune-throws', traits: { emails: ['old@email.com', 'new@email.com'] } });
161
+ expect(result.didCallNeptune).toBe(true);
162
+ expect(result.didWriteCache).toBe(false);
163
+ expect(result.outcome).toBe(identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLUTION_FAILED);
164
+ });
165
+ it('should return merged identity on Neptune failure (fail-open)', async () => {
166
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
167
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'neptune-throws', {
168
+ emails: ['old@email.com'],
169
+ });
170
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
171
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockRejectedValueOnce(new Error('Neptune invocation failed'));
172
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'neptune-throws', traits: { emails: ['old@email.com', 'new@email.com'] } });
173
+ expect(result.identity).toBeDefined();
174
+ expect(result.identity?.identityId).toBe('neptune-throws');
175
+ expect(result.identity?.traits?.emails).toEqual(['old@email.com', 'new@email.com']);
176
+ });
177
+ it('should not write to cache when Neptune fails', async () => {
178
+ const service = (0, identity_gateway_test_setup_js_1.createService)();
179
+ const cachedResponse = (0, identity_gateway_test_setup_js_1.createCachedIdentity)(pixelId, 'no-write-fail', {
180
+ emails: ['test@email.com'],
181
+ });
182
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
183
+ identity_gateway_test_setup_js_1.mockGetIdentity.mockRejectedValueOnce(new Error('Network error'));
184
+ const result = await service.resolveIdentityWithCaching(pixelId, { identityId: 'no-write-fail', traits: { emails: ['test@email.com', 'extra@email.com'] } });
185
+ expect(result.didWriteCache).toBe(false);
186
+ expect(identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
187
+ });
188
+ });
189
+ describe('address update path', () => {
190
+ it('should enqueue async update on address changes', async () => {
191
+ const service = (0, identity_gateway_test_setup_js_1.createServiceWithSqs)();
192
+ identity_gateway_test_setup_js_1.mockBuildAndSendMessage.mockResolvedValueOnce({ MessageId: 'test-msg-id' });
193
+ const cachedResponse = {
194
+ pk: `identity#${pixelId}#identity456`,
195
+ pixelId,
196
+ identityId: 'identity456',
197
+ response: {
198
+ identityId: 'identity456',
199
+ traits: {
200
+ emails: ['test@email.com'],
201
+ addresses: [{ city: 'Old City', upa: 1704067200000 }],
202
+ },
203
+ },
204
+ updatedAt: new Date().toISOString(),
205
+ };
206
+ identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
207
+ const identityWithNewAddress = {
208
+ identityId: 'identity456',
209
+ traits: {
210
+ emails: ['test@email.com'],
211
+ addresses: [{ city: 'New City', upa: 1717200000000 }],
212
+ },
213
+ };
214
+ const result = await service.resolveIdentityWithCaching(pixelId, identityWithNewAddress);
215
+ if (result.outcome === identity_gateway_test_setup_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME.ADDRESS_UPDATE_ASYNC) {
216
+ expect(result.didWriteCache).toBe(false);
217
+ expect(result.didEnqueueAsync).toBe(true);
218
+ expect(identity_gateway_test_setup_js_1.mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
219
+ expect(identity_gateway_test_setup_js_1.mockBuildAndSendMessage).toHaveBeenCalled();
220
+ }
221
+ });
222
+ });
223
+ });
224
+ //# sourceMappingURL=identity-gateway-stale-cache.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-gateway-stale-cache.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-gateway-stale-cache.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="jest" />
2
+ import { EventContext, EventIdentity, IdentityDynamoDbCache } from '@adtrackify/at-tracking-event-types';
3
+ export declare const mockLambdaInvokeFunction: jest.Mock<any, any>;
4
+ export declare const mockBuildAndSendMessage: jest.Mock<any, any>;
5
+ export declare const mockSQSClientConstructor: jest.Mock<any, any>;
6
+ export declare const mockGetIdentity: jest.Mock<any, any>;
7
+ import { IdentityGatewayService, IdentityGatewayServiceOptions } from '../../services/db/identity-cache-dynamodb-service/identity-gateway-service.js';
8
+ import { IDENTITY_CACHE_WITH_CACHING_OUTCOME } from '../../services/db/identity-cache-dynamodb-service/types.js';
9
+ import { DynamoDbClient, SQSClient } from '../../clients/index.js';
10
+ export declare const mockedDynamoDbClient: jest.Mocked<typeof DynamoDbClient>;
11
+ export declare const mockedLogger: jest.Mocked<{
12
+ log: (logLevel: string, msg: string | Error, meta?: object | undefined, tags?: string[] | undefined) => void;
13
+ debug: (msg: string, meta?: object | undefined, tags?: string[] | undefined) => void;
14
+ info: (msg: string, meta?: object | undefined, tags?: string[] | undefined) => void;
15
+ warn: (msg: string, meta?: object | undefined, tags?: string[] | undefined) => void;
16
+ error: (msg: string | Error, meta?: object | undefined, tags?: string[] | undefined) => void;
17
+ }>;
18
+ export declare const mockedSQSClient: jest.MockedClass<typeof SQSClient>;
19
+ export { IdentityGatewayService };
20
+ export { IDENTITY_CACHE_WITH_CACHING_OUTCOME };
21
+ export type { IdentityGatewayServiceOptions };
22
+ export type { EventContext, EventIdentity, IdentityDynamoDbCache };
23
+ export declare const TEST_PIXEL_ID = "pixel123";
24
+ export declare const TEST_LAMBDA_ARN = "arn:aws:lambda:us-east-1:123456789:function:identity-private";
25
+ export declare const createService: (options?: IdentityGatewayServiceOptions) => IdentityGatewayService;
26
+ export declare const createServiceWithSqs: (overrides?: Partial<IdentityGatewayServiceOptions>) => IdentityGatewayService;
27
+ export declare const resetAllMocks: () => void;
28
+ export declare const createCachedIdentity: (pixelId: string, identityId: string, traits: EventIdentity['traits'], updatedAt?: string) => IdentityDynamoDbCache;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createCachedIdentity = exports.resetAllMocks = exports.createServiceWithSqs = exports.createService = exports.TEST_LAMBDA_ARN = exports.TEST_PIXEL_ID = exports.IDENTITY_CACHE_WITH_CACHING_OUTCOME = exports.IdentityGatewayService = exports.mockedSQSClient = exports.mockedLogger = exports.mockedDynamoDbClient = exports.mockGetIdentity = exports.mockSQSClientConstructor = exports.mockBuildAndSendMessage = exports.mockLambdaInvokeFunction = void 0;
4
+ exports.mockLambdaInvokeFunction = jest.fn();
5
+ exports.mockBuildAndSendMessage = jest.fn();
6
+ exports.mockSQSClientConstructor = jest.fn();
7
+ exports.mockGetIdentity = jest.fn();
8
+ jest.mock('../../clients/index.js', () => ({
9
+ DynamoDbClient: {
10
+ safeGet: jest.fn(),
11
+ safePut: jest.fn(),
12
+ safeDelete: jest.fn(),
13
+ safeBatchGet: jest.fn(),
14
+ safeBatchWrite: jest.fn(),
15
+ safeQueryByGSI: jest.fn(),
16
+ batchWrite: jest.fn(),
17
+ },
18
+ LambdaInvokeClient: jest.fn().mockImplementation(() => ({
19
+ invokeFunction: exports.mockLambdaInvokeFunction,
20
+ })),
21
+ SQSClient: jest.fn().mockImplementation((_region, _accountId, _queueName) => {
22
+ (0, exports.mockSQSClientConstructor)(_region, _accountId, _queueName);
23
+ return {
24
+ buildAndSendMessage: exports.mockBuildAndSendMessage,
25
+ queueUrl: `https://sqs.${_region}.amazonaws.com/${_accountId}/${_queueName}`,
26
+ };
27
+ }),
28
+ }));
29
+ jest.mock('../../helpers/index.js', () => ({
30
+ Logger: {
31
+ debug: jest.fn(),
32
+ info: jest.fn(),
33
+ warn: jest.fn(),
34
+ error: jest.fn(),
35
+ },
36
+ }));
37
+ jest.mock('../../clients/internal-api/identity-client.js', () => ({
38
+ IdentityClient: jest.fn().mockImplementation(() => ({
39
+ getIdentity: exports.mockGetIdentity,
40
+ })),
41
+ }));
42
+ const identity_gateway_service_js_1 = require("../../services/db/identity-cache-dynamodb-service/identity-gateway-service.js");
43
+ Object.defineProperty(exports, "IdentityGatewayService", { enumerable: true, get: function () { return identity_gateway_service_js_1.IdentityGatewayService; } });
44
+ const types_js_1 = require("../../services/db/identity-cache-dynamodb-service/types.js");
45
+ Object.defineProperty(exports, "IDENTITY_CACHE_WITH_CACHING_OUTCOME", { enumerable: true, get: function () { return types_js_1.IDENTITY_CACHE_WITH_CACHING_OUTCOME; } });
46
+ const index_js_1 = require("../../clients/index.js");
47
+ const index_js_2 = require("../../helpers/index.js");
48
+ exports.mockedDynamoDbClient = index_js_1.DynamoDbClient;
49
+ exports.mockedLogger = index_js_2.Logger;
50
+ exports.mockedSQSClient = index_js_1.SQSClient;
51
+ exports.TEST_PIXEL_ID = 'pixel123';
52
+ exports.TEST_LAMBDA_ARN = 'arn:aws:lambda:us-east-1:123456789:function:identity-private';
53
+ const createService = (options = { identifyPrivateLambdaArn: exports.TEST_LAMBDA_ARN }) => {
54
+ return new identity_gateway_service_js_1.IdentityGatewayService(options);
55
+ };
56
+ exports.createService = createService;
57
+ const createServiceWithSqs = (overrides = {}) => {
58
+ return new identity_gateway_service_js_1.IdentityGatewayService({
59
+ identifyPrivateLambdaArn: exports.TEST_LAMBDA_ARN,
60
+ awsRegion: 'us-east-1',
61
+ awsAccountId: '123456789',
62
+ asyncUpdateQueueName: 'test-queue',
63
+ ...overrides,
64
+ });
65
+ };
66
+ exports.createServiceWithSqs = createServiceWithSqs;
67
+ const resetAllMocks = () => {
68
+ jest.clearAllMocks();
69
+ exports.mockedDynamoDbClient.safeGet.mockReset();
70
+ exports.mockedDynamoDbClient.safePut.mockReset();
71
+ exports.mockedDynamoDbClient.safeDelete.mockReset();
72
+ exports.mockedDynamoDbClient.safeBatchGet.mockReset();
73
+ exports.mockedDynamoDbClient.safeBatchWrite.mockReset();
74
+ exports.mockedDynamoDbClient.safeQueryByGSI.mockReset();
75
+ exports.mockedDynamoDbClient.batchWrite.mockReset();
76
+ exports.mockGetIdentity.mockReset();
77
+ exports.mockBuildAndSendMessage.mockReset();
78
+ exports.mockSQSClientConstructor.mockReset();
79
+ exports.mockedSQSClient.mockClear();
80
+ };
81
+ exports.resetAllMocks = resetAllMocks;
82
+ const createCachedIdentity = (pixelId, identityId, traits, updatedAt = new Date().toISOString()) => ({
83
+ pk: `identity#${pixelId}#${identityId}`,
84
+ pixelId,
85
+ identityId,
86
+ response: { identityId, traits },
87
+ updatedAt,
88
+ });
89
+ exports.createCachedIdentity = createCachedIdentity;
90
+ //# sourceMappingURL=identity-gateway-test-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-gateway-test-setup.js","sourceRoot":"","sources":["../../../../src/__tests__/identity-cache/identity-gateway-test-setup.ts"],"names":[],"mappings":";;;AASa,QAAA,wBAAwB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACrC,QAAA,uBAAuB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACpC,QAAA,wBAAwB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AACrC,QAAA,eAAe,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;AAGzC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,cAAc,EAAE;QACd,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;QAClB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;QACrB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;QACvB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE;QACzB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;KACtB;IACD,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QACtD,cAAc,EAAE,gCAAwB;KACzC,CAAC,CAAC;IACH,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,OAAe,EAAE,UAAkB,EAAE,UAAkB,EAAE,EAAE;QAClG,IAAA,gCAAwB,EAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,OAAO;YACL,mBAAmB,EAAE,+BAAuB;YAC5C,QAAQ,EAAE,eAAe,OAAO,kBAAkB,UAAU,IAAI,UAAU,EAAE;SAC7E,CAAC;IACJ,CAAC,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,EAAE;QACN,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE,CAAC,CAAC;IAChE,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,WAAW,EAAE,uBAAe;KAC7B,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AAGJ,+HAGuF;AAY9E,uGAdP,oDAAsB,OAcO;AAX/B,yFAEoE;AAU3D,oHAXP,8CAAmC,OAWO;AAT5C,qDAAmE;AACnE,qDAAgD;AAEnC,QAAA,oBAAoB,GAAG,yBAAoD,CAAC;AAC5E,QAAA,YAAY,GAAG,iBAAoC,CAAC;AACpD,QAAA,eAAe,GAAG,oBAA+C,CAAC;AASlE,QAAA,aAAa,GAAG,UAAU,CAAC;AAC3B,QAAA,eAAe,GAAG,8DAA8D,CAAC;AAKvF,MAAM,aAAa,GAAG,CAC3B,UAAyC,EAAE,wBAAwB,EAAE,uBAAe,EAAE,EAC9D,EAAE;IAC1B,OAAO,IAAI,oDAAsB,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB;AAKK,MAAM,oBAAoB,GAAG,CAClC,YAAoD,EAAE,EAC9B,EAAE;IAC1B,OAAO,IAAI,oDAAsB,CAAC;QAChC,wBAAwB,EAAE,uBAAe;QACzC,SAAS,EAAE,WAAW;QACtB,YAAY,EAAE,WAAW;QACzB,oBAAoB,EAAE,YAAY;QAClC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC,CAAC;AAVW,QAAA,oBAAoB,wBAU/B;AAKK,MAAM,aAAa,GAAG,GAAS,EAAE;IACtC,IAAI,CAAC,aAAa,EAAE,CAAC;IACrB,4BAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IACzC,4BAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IACzC,4BAAoB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAC5C,4BAAoB,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;IAC9C,4BAAoB,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAChD,4BAAoB,CAAC,cAAc,CAAC,SAAS,EAAE,CAAC;IAChD,4BAAoB,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAC5C,uBAAe,CAAC,SAAS,EAAE,CAAC;IAC5B,+BAAuB,CAAC,SAAS,EAAE,CAAC;IACpC,gCAAwB,CAAC,SAAS,EAAE,CAAC;IACrC,uBAAe,CAAC,SAAS,EAAE,CAAC;AAC9B,CAAC,CAAC;AAbW,QAAA,aAAa,iBAaxB;AAKK,MAAM,oBAAoB,GAAG,CAClC,OAAe,EACf,UAAkB,EAClB,MAA+B,EAC/B,YAAoB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EACrB,EAAE,CAAC,CAAC;IAC3B,EAAE,EAAE,YAAY,OAAO,IAAI,UAAU,EAAE;IACvC,OAAO;IACP,UAAU;IACV,QAAQ,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;IAChC,SAAS;CACV,CAAC,CAAC;AAXU,QAAA,oBAAoB,wBAW9B"}
@@ -14,18 +14,28 @@ export interface MergeIdentityResponse {
14
14
  export interface IdentityLookupByEmailResponse {
15
15
  identities: EventIdentity[];
16
16
  }
17
+ export interface IdentityClientOptions {
18
+ baseApiUrl: string;
19
+ identityApiKey?: string;
20
+ identifyPrivateLambdaArn?: string;
21
+ }
17
22
  export declare class IdentityClient {
18
23
  BASE_API_URL: string;
19
24
  SERVICE_API_ROOT_URL: string;
20
25
  IDENTITY_API_KEY?: string;
21
26
  client: GenericHttpClient;
22
- constructor(baseApiUrl: string, identityApiKey?: string);
27
+ private identifyPrivateLambdaArn?;
28
+ private lambdaInvokeClient?;
29
+ constructor(baseApiUrlOrOptions: string | IdentityClientOptions, identityApiKey?: string);
30
+ private getLambdaInvokeClient;
23
31
  getHeaders: () => {
24
32
  'x-api-key': string;
25
33
  } | {
26
34
  'x-api-key'?: undefined;
27
35
  };
28
- getIdentity: (pixelId: string, eventContext: EventContext | undefined, excludeThirdPartyContacts?: boolean) => Promise<any>;
36
+ getIdentity: (pixelId: string, eventContext: EventContext | undefined, excludeThirdPartyContacts?: boolean) => Promise<EventIdentity | null>;
37
+ private getIdentityViaLambda;
38
+ private getIdentityViaHttp;
29
39
  mergeIdentity: (pixelId: string, primaryIdentityId: string, secondaryIdentityId: string) => Promise<MergeIdentityResponse | null>;
30
40
  getIdentitiesByEmail: (email: string, pixelId?: string) => Promise<IdentityLookupByEmailResponse | null>;
31
41
  }
@@ -14,13 +14,28 @@ class IdentityClient {
14
14
  SERVICE_API_ROOT_URL;
15
15
  IDENTITY_API_KEY;
16
16
  client;
17
- constructor(baseApiUrl, identityApiKey) {
18
- this.BASE_API_URL = baseApiUrl;
19
- this.IDENTITY_API_KEY = identityApiKey;
17
+ identifyPrivateLambdaArn;
18
+ lambdaInvokeClient;
19
+ constructor(baseApiUrlOrOptions, identityApiKey) {
20
+ if (typeof baseApiUrlOrOptions === 'string') {
21
+ this.BASE_API_URL = baseApiUrlOrOptions;
22
+ this.IDENTITY_API_KEY = identityApiKey;
23
+ }
24
+ else {
25
+ this.BASE_API_URL = baseApiUrlOrOptions.baseApiUrl;
26
+ this.IDENTITY_API_KEY = baseApiUrlOrOptions.identityApiKey;
27
+ this.identifyPrivateLambdaArn = baseApiUrlOrOptions.identifyPrivateLambdaArn;
28
+ }
20
29
  this.SERVICE_API_ROOT_URL = `${this.BASE_API_URL}/identities`;
21
30
  this.client = client;
22
31
  this.client.setBaseUrl(this.SERVICE_API_ROOT_URL);
23
32
  }
33
+ getLambdaInvokeClient() {
34
+ if (!this.lambdaInvokeClient) {
35
+ this.lambdaInvokeClient = new generic_1.LambdaInvokeClient();
36
+ }
37
+ return this.lambdaInvokeClient;
38
+ }
24
39
  getHeaders = () => {
25
40
  if (this.IDENTITY_API_KEY) {
26
41
  return {
@@ -30,20 +45,51 @@ class IdentityClient {
30
45
  return {};
31
46
  };
32
47
  getIdentity = async (pixelId, eventContext, excludeThirdPartyContacts = false) => {
48
+ if (this.identifyPrivateLambdaArn) {
49
+ return this.getIdentityViaLambda(pixelId, eventContext);
50
+ }
51
+ return this.getIdentityViaHttp(pixelId, eventContext, excludeThirdPartyContacts);
52
+ };
53
+ getIdentityViaLambda = async (pixelId, eventContext) => {
33
54
  try {
34
- const identityResponse = await this.client.post('/', { pixelId, context: eventContext || {}, excludeThirdPartyContacts }, { headers: this.getHeaders() });
35
- if (identityResponse.status != libs_1.HttpStatusCodes.OK) {
36
- const msg = 'HTTP Status Code Failed while retrieving identity data';
37
- helpers_1.Logger.error(msg, { identityResponse });
38
- return null;
39
- }
40
- if (identityResponse.status === libs_1.HttpStatusCodes.OK) {
41
- return identityResponse?.data?.identity;
55
+ const lambdaClient = this.getLambdaInvokeClient();
56
+ const response = await lambdaClient.invokeFunction(this.identifyPrivateLambdaArn, {
57
+ pixelId,
58
+ context: eventContext ?? { identity: {} },
59
+ });
60
+ if (response?.statusCode === 200 && response?.body) {
61
+ const identifyResponse = JSON.parse(response.body);
62
+ return identifyResponse?.identity ?? null;
42
63
  }
64
+ return eventContext?.identity ?? null;
65
+ }
66
+ catch (error) {
67
+ helpers_1.Logger.error('IdentityClient - Lambda invoke failed', {
68
+ error,
69
+ errorMessage: error instanceof Error ? error.message : String(error),
70
+ pixelId,
71
+ });
43
72
  return null;
44
73
  }
45
- catch (e) {
46
- helpers_1.Logger.error('Error while retrieving identity', { error: e });
74
+ };
75
+ getIdentityViaHttp = async (pixelId, eventContext, excludeThirdPartyContacts) => {
76
+ try {
77
+ const identityResponse = await this.client.post('/', { pixelId, context: eventContext ?? {}, excludeThirdPartyContacts }, { headers: this.getHeaders() });
78
+ if (identityResponse.status !== libs_1.HttpStatusCodes.OK) {
79
+ helpers_1.Logger.error('IdentityClient - HTTP status code failed while retrieving identity', {
80
+ pixelId,
81
+ statusCode: identityResponse.status,
82
+ });
83
+ return null;
84
+ }
85
+ return identityResponse?.data?.identity ?? null;
86
+ }
87
+ catch (error) {
88
+ helpers_1.Logger.error('IdentityClient - HTTP request failed', {
89
+ error,
90
+ errorMessage: error instanceof Error ? error.message : String(error),
91
+ pixelId,
92
+ });
47
93
  return null;
48
94
  }
49
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,9 @@
1
1
  import { EventIdentity, IdentityMapDynamoDbCache } from '@adtrackify/at-tracking-event-types';
2
- import { IdentityCacheResult, IdentityCacheLookupResult, PureCacheLookupResult } from './types.js';
2
+ import { PureCacheLookupResult } from './types.js';
3
3
  export declare class IdentityCacheDynamoDbDbService {
4
- static getIdentityFromCache: (pixelId: string, incomingIdentity: EventIdentity) => Promise<IdentityCacheResult>;
5
- static getIdentityFromCacheV2: (pixelId: string, incomingIdentity: EventIdentity) => Promise<IdentityCacheLookupResult>;
6
4
  static getIdentityFromCachePure: (pixelId: string, incomingIdentity: EventIdentity) => Promise<PureCacheLookupResult>;
7
5
  private static resolveCacheByIdentityIdPure;
8
6
  private static resolveCacheByEmailPointerPure;
9
- private static resolveCacheByIdentityIdV2;
10
- private static applyPrimaryCacheHitState;
11
- private static createPrimaryCacheLookupResult;
12
- private static resolveCacheByEmailPointerV2;
13
7
  static getIdentityMap: (pixelId: string, identityId: string) => Promise<IdentityMapDynamoDbCache | undefined>;
14
8
  static getForcePurgeFlag: (pixelId: string, identityId: string) => Promise<boolean>;
15
9
  static updateIdentityCache: (pixelId: string, response: EventIdentity) => Promise<void>;