@adtrackify/at-service-common 4.0.9 → 4.0.10
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/dist/cjs/__tests__/identity-cache/helpers.spec.js +4 -4
- package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +15 -15
- package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +4 -4
- package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +140 -141
- package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
- package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +79 -79
- package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
- package/dist/cjs/helpers/index.d.ts +0 -1
- package/dist/cjs/helpers/index.js +0 -1
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-db-service.js +4 -4
- package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.d.ts +1 -2
- package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js +5 -6
- package/dist/cjs/services/db/identity-cache-dynamodb-service/helpers.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +8 -8
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +6 -5
- package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
- package/dist/cjs/services/db/identity-cache-dynamodb-service/types.d.ts +1 -1
- package/dist/esm/__tests__/identity-cache/helpers.spec.js +1 -1
- package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +1 -1
- package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +1 -2
- package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
- package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +1 -1
- package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
- package/dist/esm/helpers/index.d.ts +0 -1
- package/dist/esm/helpers/index.js +0 -1
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/services/db/identity-cache-db-service.js +1 -1
- package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.d.ts +1 -2
- package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js +1 -2
- package/dist/esm/services/db/identity-cache-dynamodb-service/helpers.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +3 -3
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +3 -2
- package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
- package/dist/esm/services/db/identity-cache-dynamodb-service/types.d.ts +1 -1
- package/package.json +2 -2
- package/dist/cjs/helpers/identity-cache-helper.d.ts +0 -39
- package/dist/cjs/helpers/identity-cache-helper.js +0 -307
- package/dist/cjs/helpers/identity-cache-helper.js.map +0 -1
- package/dist/esm/helpers/identity-cache-helper.d.ts +0 -39
- package/dist/esm/helpers/identity-cache-helper.js +0 -300
- package/dist/esm/helpers/identity-cache-helper.js.map +0 -1
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mergeAndComputeIdentityStaleness = exports.extractStaleTraitNames = exports.isClickInfosStale = exports.isIdentityCacheStale = exports.IDENTITY_CACHE_STALENESS_TIER = void 0;
|
|
4
|
-
const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
|
|
5
|
-
const at_tracking_event_types_1 = require("@adtrackify/at-tracking-event-types");
|
|
6
|
-
const logging_helper_1 = require("./logging-helper");
|
|
7
|
-
var IDENTITY_CACHE_STALENESS_TIER;
|
|
8
|
-
(function (IDENTITY_CACHE_STALENESS_TIER) {
|
|
9
|
-
IDENTITY_CACHE_STALENESS_TIER["NONE"] = "none";
|
|
10
|
-
IDENTITY_CACHE_STALENESS_TIER["VOLATILE_ONLY"] = "volatile_only";
|
|
11
|
-
IDENTITY_CACHE_STALENESS_TIER["ADDRESS_UPDATE"] = "address_update";
|
|
12
|
-
IDENTITY_CACHE_STALENESS_TIER["IDENTITY_STALE"] = "identity_stale";
|
|
13
|
-
})(IDENTITY_CACHE_STALENESS_TIER = exports.IDENTITY_CACHE_STALENESS_TIER || (exports.IDENTITY_CACHE_STALENESS_TIER = {}));
|
|
14
|
-
const createInitialTracker = (cachedTraits, incomingTraits) => ({
|
|
15
|
-
cachedTraits,
|
|
16
|
-
incomingTraits,
|
|
17
|
-
isIdentityIdStale: false,
|
|
18
|
-
isUserIdsStale: false,
|
|
19
|
-
isIdsStale: false,
|
|
20
|
-
isEmailsStale: false,
|
|
21
|
-
isPhonesStale: false,
|
|
22
|
-
isShopifyYIdsStale: false,
|
|
23
|
-
isGendersStale: false,
|
|
24
|
-
isDobsStale: false,
|
|
25
|
-
isAddressesStale: false,
|
|
26
|
-
isIpAddressesStale: false,
|
|
27
|
-
isNonIpAddressesStale: false,
|
|
28
|
-
isClickInfosStale: false,
|
|
29
|
-
isIpAddressStale: false,
|
|
30
|
-
isUserAgentStale: false,
|
|
31
|
-
isThirdPartyContactsStale: false,
|
|
32
|
-
isCacheStale: false,
|
|
33
|
-
staleTier: IDENTITY_CACHE_STALENESS_TIER.NONE,
|
|
34
|
-
});
|
|
35
|
-
const markStaleTraitOnly = (tracker, trackerKey, logMessage) => {
|
|
36
|
-
logging_helper_1.Logger.debug(`IdentityCache - identity cache check - ${logMessage}`, {
|
|
37
|
-
cachedTraits: tracker.cachedTraits,
|
|
38
|
-
incomingTraits: tracker.incomingTraits,
|
|
39
|
-
});
|
|
40
|
-
tracker[trackerKey] = true;
|
|
41
|
-
};
|
|
42
|
-
const isAddressIpSourced = (addr) => {
|
|
43
|
-
if (addr?.s !== undefined) {
|
|
44
|
-
return addr.s === at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS;
|
|
45
|
-
}
|
|
46
|
-
const hasPii = Boolean(addr?.firstName || addr?.lastName || addr?.email || addr?.phone);
|
|
47
|
-
return !hasPii;
|
|
48
|
-
};
|
|
49
|
-
const filterAddressesBySource = (addresses, isIpSource) => {
|
|
50
|
-
return addresses.filter((addr) => {
|
|
51
|
-
const addressIsIp = isAddressIpSourced(addr);
|
|
52
|
-
return isIpSource ? addressIsIp : !addressIsIp;
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
const hasNewNonIpAddress = (cachedAddresses, incomingAddresses) => {
|
|
56
|
-
const cachedNonIp = filterAddressesBySource(cachedAddresses, false);
|
|
57
|
-
const incomingNonIp = filterAddressesBySource(incomingAddresses, false);
|
|
58
|
-
return (0, at_shared_utils_1.hasNewAddress)(cachedNonIp, incomingNonIp);
|
|
59
|
-
};
|
|
60
|
-
const hasNewIpAddress = (cachedAddresses, incomingAddresses) => {
|
|
61
|
-
const cachedIp = filterAddressesBySource(cachedAddresses, true);
|
|
62
|
-
const incomingIp = filterAddressesBySource(incomingAddresses, true);
|
|
63
|
-
return (0, at_shared_utils_1.hasNewAddress)(cachedIp, incomingIp);
|
|
64
|
-
};
|
|
65
|
-
const checkScalarTraitChanged = (cachedValue, incomingValue) => Boolean(incomingValue && cachedValue !== incomingValue);
|
|
66
|
-
const computeStaleTier = (tracker) => {
|
|
67
|
-
const hasIdentityStale = tracker.isIdentityIdStale ||
|
|
68
|
-
tracker.isUserIdsStale ||
|
|
69
|
-
tracker.isIdsStale ||
|
|
70
|
-
tracker.isEmailsStale ||
|
|
71
|
-
tracker.isPhonesStale ||
|
|
72
|
-
tracker.isShopifyYIdsStale ||
|
|
73
|
-
tracker.isGendersStale ||
|
|
74
|
-
tracker.isDobsStale ||
|
|
75
|
-
tracker.isClickInfosStale ||
|
|
76
|
-
tracker.isThirdPartyContactsStale;
|
|
77
|
-
if (hasIdentityStale) {
|
|
78
|
-
return IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE;
|
|
79
|
-
}
|
|
80
|
-
if (tracker.isNonIpAddressesStale) {
|
|
81
|
-
return IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE;
|
|
82
|
-
}
|
|
83
|
-
const hasVolatileStale = tracker.isIpAddressStale || tracker.isUserAgentStale || tracker.isIpAddressesStale;
|
|
84
|
-
if (hasVolatileStale) {
|
|
85
|
-
return IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY;
|
|
86
|
-
}
|
|
87
|
-
return IDENTITY_CACHE_STALENESS_TIER.NONE;
|
|
88
|
-
};
|
|
89
|
-
const isIdentityCacheStale = (identityCache, incomingIdentity) => {
|
|
90
|
-
try {
|
|
91
|
-
const cachedTraits = identityCache?.traits ?? {};
|
|
92
|
-
const incomingTraits = incomingIdentity?.traits ?? {};
|
|
93
|
-
const tracker = createInitialTracker(cachedTraits, incomingTraits);
|
|
94
|
-
const cachedAddresses = cachedTraits?.addresses ?? [];
|
|
95
|
-
const incomingAddresses = incomingTraits?.addresses ?? [];
|
|
96
|
-
const identityChecks = [
|
|
97
|
-
{
|
|
98
|
-
trackerKey: 'isIdentityIdStale',
|
|
99
|
-
logMessage: 'identityId changed',
|
|
100
|
-
isStale: () => identityCache?.identityId !== incomingIdentity?.identityId,
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
trackerKey: 'isUserIdsStale',
|
|
104
|
-
logMessage: 'userIds changed',
|
|
105
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.userIds ?? [], incomingTraits?.userIds ?? []),
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
trackerKey: 'isIdsStale',
|
|
109
|
-
logMessage: 'ids changed',
|
|
110
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.ids ?? [], incomingTraits?.ids ?? []),
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
trackerKey: 'isEmailsStale',
|
|
114
|
-
logMessage: 'emails changed',
|
|
115
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.emails ?? [], incomingTraits?.emails ?? []),
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
trackerKey: 'isPhonesStale',
|
|
119
|
-
logMessage: 'phones changed',
|
|
120
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.phones ?? [], incomingTraits?.phones ?? []),
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
trackerKey: 'isShopifyYIdsStale',
|
|
124
|
-
logMessage: 'shopify Y ids changed',
|
|
125
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.shopifyYIds ?? [], incomingTraits?.shopifyYIds ?? []),
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
trackerKey: 'isGendersStale',
|
|
129
|
-
logMessage: 'genders changed',
|
|
130
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.genders ?? [], incomingTraits?.genders ?? []),
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
trackerKey: 'isDobsStale',
|
|
134
|
-
logMessage: 'dobs changed',
|
|
135
|
-
isStale: () => (0, at_shared_utils_1.hasNewTrait)(cachedTraits?.dobs ?? [], incomingTraits?.dobs ?? []),
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
trackerKey: 'isClickInfosStale',
|
|
139
|
-
logMessage: 'clickInfos changed',
|
|
140
|
-
isStale: () => (0, exports.isClickInfosStale)(cachedTraits?.click ?? {}, incomingTraits?.click ?? {}),
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
trackerKey: 'isThirdPartyContactsStale',
|
|
144
|
-
logMessage: 'thirdPartyContacts changed',
|
|
145
|
-
isStale: () => (0, at_shared_utils_1.hasNewThirdPartyContact)(cachedTraits?.tpc ?? [], incomingTraits?.tpc ?? []),
|
|
146
|
-
},
|
|
147
|
-
];
|
|
148
|
-
const addressChecks = [
|
|
149
|
-
{
|
|
150
|
-
trackerKey: 'isNonIpAddressesStale',
|
|
151
|
-
logMessage: 'non-IP address changed',
|
|
152
|
-
isStale: () => hasNewNonIpAddress(cachedAddresses, incomingAddresses),
|
|
153
|
-
isAddressUpdate: true,
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
trackerKey: 'isIpAddressesStale',
|
|
157
|
-
logMessage: 'IP-sourced address changed',
|
|
158
|
-
isStale: () => hasNewIpAddress(cachedAddresses, incomingAddresses),
|
|
159
|
-
isVolatile: true,
|
|
160
|
-
},
|
|
161
|
-
];
|
|
162
|
-
const volatileChecks = [
|
|
163
|
-
{
|
|
164
|
-
trackerKey: 'isIpAddressStale',
|
|
165
|
-
logMessage: 'ipAddress changed',
|
|
166
|
-
isStale: () => checkScalarTraitChanged(cachedTraits?.ipAddress, incomingTraits?.ipAddress),
|
|
167
|
-
isVolatile: true,
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
trackerKey: 'isUserAgentStale',
|
|
171
|
-
logMessage: 'userAgent changed',
|
|
172
|
-
isStale: () => checkScalarTraitChanged(cachedTraits?.userAgent, incomingTraits?.userAgent),
|
|
173
|
-
isVolatile: true,
|
|
174
|
-
},
|
|
175
|
-
];
|
|
176
|
-
const allChecks = [...identityChecks, ...addressChecks, ...volatileChecks];
|
|
177
|
-
for (const check of allChecks) {
|
|
178
|
-
if (check.isStale()) {
|
|
179
|
-
markStaleTraitOnly(tracker, check.trackerKey, check.logMessage);
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
tracker.isAddressesStale = tracker.isIpAddressesStale || tracker.isNonIpAddressesStale;
|
|
183
|
-
tracker.staleTier = computeStaleTier(tracker);
|
|
184
|
-
tracker.isCacheStale =
|
|
185
|
-
tracker.staleTier === IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE ||
|
|
186
|
-
tracker.staleTier === IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE;
|
|
187
|
-
if (tracker.staleTier !== IDENTITY_CACHE_STALENESS_TIER.NONE) {
|
|
188
|
-
logging_helper_1.Logger.debug('IdentityCache - identity cache staleness check complete', {
|
|
189
|
-
staleTier: tracker.staleTier,
|
|
190
|
-
isCacheStale: tracker.isCacheStale,
|
|
191
|
-
identityCacheStaleTracker: tracker,
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
return tracker;
|
|
195
|
-
}
|
|
196
|
-
catch (error) {
|
|
197
|
-
logging_helper_1.Logger.error('IdentityCache - error checking if identity cache is stale', {
|
|
198
|
-
error,
|
|
199
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
200
|
-
});
|
|
201
|
-
const errorTracker = createInitialTracker({}, {});
|
|
202
|
-
errorTracker.isCacheStale = true;
|
|
203
|
-
errorTracker.staleTier = IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE;
|
|
204
|
-
return errorTracker;
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
exports.isIdentityCacheStale = isIdentityCacheStale;
|
|
208
|
-
const shouldSkipClickKey = (key) => key === 'googleClientInfos' || key.includes('CollectedAt');
|
|
209
|
-
const extractFbclid = (fbc) => fbc?.split('.')?.[3];
|
|
210
|
-
const isFbcStale = (cachedFbc, incomingFbc) => {
|
|
211
|
-
if (incomingFbc && !cachedFbc) {
|
|
212
|
-
return true;
|
|
213
|
-
}
|
|
214
|
-
if (!incomingFbc || !cachedFbc || incomingFbc === cachedFbc) {
|
|
215
|
-
return false;
|
|
216
|
-
}
|
|
217
|
-
const incomingFbclid = extractFbclid(incomingFbc);
|
|
218
|
-
const cachedFbclid = extractFbclid(cachedFbc);
|
|
219
|
-
return !incomingFbclid || !cachedFbclid || incomingFbclid !== cachedFbclid;
|
|
220
|
-
};
|
|
221
|
-
const isGenericClickKeyStale = (cachedValue, incomingValue) => (Boolean(incomingValue) && !cachedValue) || incomingValue !== cachedValue;
|
|
222
|
-
const isClickInfosStale = (cachedClick, incomingClick) => {
|
|
223
|
-
try {
|
|
224
|
-
const cleanedCachedClick = (0, at_shared_utils_1.removeEmptyFields)(cachedClick);
|
|
225
|
-
const cleanedIncomingClick = (0, at_shared_utils_1.removeEmptyFields)(incomingClick);
|
|
226
|
-
const incomingKeys = Object.keys(cleanedIncomingClick);
|
|
227
|
-
const staleKeys = [];
|
|
228
|
-
for (const key of incomingKeys) {
|
|
229
|
-
if (shouldSkipClickKey(key)) {
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
const cachedValue = cleanedCachedClick?.[key];
|
|
233
|
-
const incomingValue = cleanedIncomingClick?.[key];
|
|
234
|
-
const isStale = key === 'fbc'
|
|
235
|
-
? isFbcStale(cachedValue, incomingValue)
|
|
236
|
-
: isGenericClickKeyStale(cachedValue, incomingValue);
|
|
237
|
-
if (isStale) {
|
|
238
|
-
staleKeys.push(key);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
if (staleKeys.length > 0) {
|
|
242
|
-
logging_helper_1.Logger.debug('IdentityCache - identity cache miss - clickInfos changed', {
|
|
243
|
-
cleanedCachedClick,
|
|
244
|
-
cleanedIncomingClick,
|
|
245
|
-
staleKeys,
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
return staleKeys.length > 0;
|
|
249
|
-
}
|
|
250
|
-
catch (error) {
|
|
251
|
-
logging_helper_1.Logger.error('IdentityCache - error checking if click infos are stale - assuming stale', {
|
|
252
|
-
error,
|
|
253
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
254
|
-
});
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
};
|
|
258
|
-
exports.isClickInfosStale = isClickInfosStale;
|
|
259
|
-
function extractStaleTraitNames(tracker) {
|
|
260
|
-
const staleTraits = [];
|
|
261
|
-
if (tracker.isIdentityIdStale)
|
|
262
|
-
staleTraits.push('identityId');
|
|
263
|
-
if (tracker.isUserIdsStale)
|
|
264
|
-
staleTraits.push('userIds');
|
|
265
|
-
if (tracker.isIdsStale)
|
|
266
|
-
staleTraits.push('ids');
|
|
267
|
-
if (tracker.isEmailsStale)
|
|
268
|
-
staleTraits.push('emails');
|
|
269
|
-
if (tracker.isPhonesStale)
|
|
270
|
-
staleTraits.push('phones');
|
|
271
|
-
if (tracker.isShopifyYIdsStale)
|
|
272
|
-
staleTraits.push('shopifyYIds');
|
|
273
|
-
if (tracker.isGendersStale)
|
|
274
|
-
staleTraits.push('genders');
|
|
275
|
-
if (tracker.isDobsStale)
|
|
276
|
-
staleTraits.push('dobs');
|
|
277
|
-
if (tracker.isAddressesStale)
|
|
278
|
-
staleTraits.push('addresses');
|
|
279
|
-
if (tracker.isClickInfosStale)
|
|
280
|
-
staleTraits.push('clickInfos');
|
|
281
|
-
if (tracker.isIpAddressStale)
|
|
282
|
-
staleTraits.push('ipAddress');
|
|
283
|
-
if (tracker.isUserAgentStale)
|
|
284
|
-
staleTraits.push('userAgent');
|
|
285
|
-
if (tracker.isThirdPartyContactsStale)
|
|
286
|
-
staleTraits.push('thirdPartyContacts');
|
|
287
|
-
return staleTraits;
|
|
288
|
-
}
|
|
289
|
-
exports.extractStaleTraitNames = extractStaleTraitNames;
|
|
290
|
-
function mergeAndComputeIdentityStaleness(incomingIdentity, cachedOrResolvedIdentity) {
|
|
291
|
-
const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(incomingIdentity.traits, cachedOrResolvedIdentity.traits);
|
|
292
|
-
const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
|
|
293
|
-
const staleTracker = (0, exports.isIdentityCacheStale)(cachedOrResolvedIdentity, incomingIdentity);
|
|
294
|
-
const staleTier = staleTracker.staleTier;
|
|
295
|
-
const isCacheStale = staleTier !== IDENTITY_CACHE_STALENESS_TIER.NONE &&
|
|
296
|
-
staleTier !== IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY;
|
|
297
|
-
const staleTraits = extractStaleTraitNames(staleTracker);
|
|
298
|
-
return {
|
|
299
|
-
mergedIdentity,
|
|
300
|
-
staleTracker,
|
|
301
|
-
staleTier,
|
|
302
|
-
isCacheStale,
|
|
303
|
-
staleTraits,
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
exports.mergeAndComputeIdentityStaleness = mergeAndComputeIdentityStaleness;
|
|
307
|
-
//# sourceMappingURL=identity-cache-helper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity-cache-helper.js","sourceRoot":"","sources":["../../../src/helpers/identity-cache-helper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { AdClickInfo, EventIdentity, EventIdentityTraits } from '@adtrackify/at-tracking-event-types';
|
|
2
|
-
export declare enum IDENTITY_CACHE_STALENESS_TIER {
|
|
3
|
-
NONE = "none",
|
|
4
|
-
VOLATILE_ONLY = "volatile_only",
|
|
5
|
-
ADDRESS_UPDATE = "address_update",
|
|
6
|
-
IDENTITY_STALE = "identity_stale"
|
|
7
|
-
}
|
|
8
|
-
export interface IdentityCacheStaleTracker {
|
|
9
|
-
cachedTraits: EventIdentityTraits;
|
|
10
|
-
incomingTraits: EventIdentityTraits;
|
|
11
|
-
isIdentityIdStale: boolean;
|
|
12
|
-
isUserIdsStale: boolean;
|
|
13
|
-
isIdsStale: boolean;
|
|
14
|
-
isEmailsStale: boolean;
|
|
15
|
-
isPhonesStale: boolean;
|
|
16
|
-
isShopifyYIdsStale: boolean;
|
|
17
|
-
isGendersStale: boolean;
|
|
18
|
-
isDobsStale: boolean;
|
|
19
|
-
isAddressesStale: boolean;
|
|
20
|
-
isIpAddressesStale: boolean;
|
|
21
|
-
isNonIpAddressesStale: boolean;
|
|
22
|
-
isClickInfosStale: boolean;
|
|
23
|
-
isIpAddressStale: boolean;
|
|
24
|
-
isUserAgentStale: boolean;
|
|
25
|
-
isThirdPartyContactsStale: boolean;
|
|
26
|
-
isCacheStale: boolean;
|
|
27
|
-
staleTier: IDENTITY_CACHE_STALENESS_TIER;
|
|
28
|
-
}
|
|
29
|
-
export declare const isIdentityCacheStale: (identityCache: EventIdentity, incomingIdentity: EventIdentity) => IdentityCacheStaleTracker;
|
|
30
|
-
export declare const isClickInfosStale: (cachedClick: AdClickInfo, incomingClick: AdClickInfo) => boolean;
|
|
31
|
-
export declare function extractStaleTraitNames(tracker: IdentityCacheStaleTracker): string[];
|
|
32
|
-
export interface MergeAndComputeIdentityStalenessResult {
|
|
33
|
-
mergedIdentity: EventIdentity;
|
|
34
|
-
staleTracker: IdentityCacheStaleTracker;
|
|
35
|
-
staleTier: IDENTITY_CACHE_STALENESS_TIER;
|
|
36
|
-
isCacheStale: boolean;
|
|
37
|
-
staleTraits: string[];
|
|
38
|
-
}
|
|
39
|
-
export declare function mergeAndComputeIdentityStaleness(incomingIdentity: EventIdentity, cachedOrResolvedIdentity: EventIdentity): MergeAndComputeIdentityStalenessResult;
|
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
import { hasNewTrait, hasNewAddress, removeEmptyFields, mergeIdentityTraits, hasNewThirdPartyContact } from '@adtrackify/at-shared-utils';
|
|
2
|
-
import { ADDRESS_INFO_SOURCE, } from '@adtrackify/at-tracking-event-types';
|
|
3
|
-
import { Logger } from './logging-helper';
|
|
4
|
-
export var IDENTITY_CACHE_STALENESS_TIER;
|
|
5
|
-
(function (IDENTITY_CACHE_STALENESS_TIER) {
|
|
6
|
-
IDENTITY_CACHE_STALENESS_TIER["NONE"] = "none";
|
|
7
|
-
IDENTITY_CACHE_STALENESS_TIER["VOLATILE_ONLY"] = "volatile_only";
|
|
8
|
-
IDENTITY_CACHE_STALENESS_TIER["ADDRESS_UPDATE"] = "address_update";
|
|
9
|
-
IDENTITY_CACHE_STALENESS_TIER["IDENTITY_STALE"] = "identity_stale";
|
|
10
|
-
})(IDENTITY_CACHE_STALENESS_TIER || (IDENTITY_CACHE_STALENESS_TIER = {}));
|
|
11
|
-
const createInitialTracker = (cachedTraits, incomingTraits) => ({
|
|
12
|
-
cachedTraits,
|
|
13
|
-
incomingTraits,
|
|
14
|
-
isIdentityIdStale: false,
|
|
15
|
-
isUserIdsStale: false,
|
|
16
|
-
isIdsStale: false,
|
|
17
|
-
isEmailsStale: false,
|
|
18
|
-
isPhonesStale: false,
|
|
19
|
-
isShopifyYIdsStale: false,
|
|
20
|
-
isGendersStale: false,
|
|
21
|
-
isDobsStale: false,
|
|
22
|
-
isAddressesStale: false,
|
|
23
|
-
isIpAddressesStale: false,
|
|
24
|
-
isNonIpAddressesStale: false,
|
|
25
|
-
isClickInfosStale: false,
|
|
26
|
-
isIpAddressStale: false,
|
|
27
|
-
isUserAgentStale: false,
|
|
28
|
-
isThirdPartyContactsStale: false,
|
|
29
|
-
isCacheStale: false,
|
|
30
|
-
staleTier: IDENTITY_CACHE_STALENESS_TIER.NONE,
|
|
31
|
-
});
|
|
32
|
-
const markStaleTraitOnly = (tracker, trackerKey, logMessage) => {
|
|
33
|
-
Logger.debug(`IdentityCache - identity cache check - ${logMessage}`, {
|
|
34
|
-
cachedTraits: tracker.cachedTraits,
|
|
35
|
-
incomingTraits: tracker.incomingTraits,
|
|
36
|
-
});
|
|
37
|
-
tracker[trackerKey] = true;
|
|
38
|
-
};
|
|
39
|
-
const isAddressIpSourced = (addr) => {
|
|
40
|
-
if (addr?.s !== undefined) {
|
|
41
|
-
return addr.s === ADDRESS_INFO_SOURCE.IP_ADDRESS;
|
|
42
|
-
}
|
|
43
|
-
const hasPii = Boolean(addr?.firstName || addr?.lastName || addr?.email || addr?.phone);
|
|
44
|
-
return !hasPii;
|
|
45
|
-
};
|
|
46
|
-
const filterAddressesBySource = (addresses, isIpSource) => {
|
|
47
|
-
return addresses.filter((addr) => {
|
|
48
|
-
const addressIsIp = isAddressIpSourced(addr);
|
|
49
|
-
return isIpSource ? addressIsIp : !addressIsIp;
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
const hasNewNonIpAddress = (cachedAddresses, incomingAddresses) => {
|
|
53
|
-
const cachedNonIp = filterAddressesBySource(cachedAddresses, false);
|
|
54
|
-
const incomingNonIp = filterAddressesBySource(incomingAddresses, false);
|
|
55
|
-
return hasNewAddress(cachedNonIp, incomingNonIp);
|
|
56
|
-
};
|
|
57
|
-
const hasNewIpAddress = (cachedAddresses, incomingAddresses) => {
|
|
58
|
-
const cachedIp = filterAddressesBySource(cachedAddresses, true);
|
|
59
|
-
const incomingIp = filterAddressesBySource(incomingAddresses, true);
|
|
60
|
-
return hasNewAddress(cachedIp, incomingIp);
|
|
61
|
-
};
|
|
62
|
-
const checkScalarTraitChanged = (cachedValue, incomingValue) => Boolean(incomingValue && cachedValue !== incomingValue);
|
|
63
|
-
const computeStaleTier = (tracker) => {
|
|
64
|
-
const hasIdentityStale = tracker.isIdentityIdStale ||
|
|
65
|
-
tracker.isUserIdsStale ||
|
|
66
|
-
tracker.isIdsStale ||
|
|
67
|
-
tracker.isEmailsStale ||
|
|
68
|
-
tracker.isPhonesStale ||
|
|
69
|
-
tracker.isShopifyYIdsStale ||
|
|
70
|
-
tracker.isGendersStale ||
|
|
71
|
-
tracker.isDobsStale ||
|
|
72
|
-
tracker.isClickInfosStale ||
|
|
73
|
-
tracker.isThirdPartyContactsStale;
|
|
74
|
-
if (hasIdentityStale) {
|
|
75
|
-
return IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE;
|
|
76
|
-
}
|
|
77
|
-
if (tracker.isNonIpAddressesStale) {
|
|
78
|
-
return IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE;
|
|
79
|
-
}
|
|
80
|
-
const hasVolatileStale = tracker.isIpAddressStale || tracker.isUserAgentStale || tracker.isIpAddressesStale;
|
|
81
|
-
if (hasVolatileStale) {
|
|
82
|
-
return IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY;
|
|
83
|
-
}
|
|
84
|
-
return IDENTITY_CACHE_STALENESS_TIER.NONE;
|
|
85
|
-
};
|
|
86
|
-
export const isIdentityCacheStale = (identityCache, incomingIdentity) => {
|
|
87
|
-
try {
|
|
88
|
-
const cachedTraits = identityCache?.traits ?? {};
|
|
89
|
-
const incomingTraits = incomingIdentity?.traits ?? {};
|
|
90
|
-
const tracker = createInitialTracker(cachedTraits, incomingTraits);
|
|
91
|
-
const cachedAddresses = cachedTraits?.addresses ?? [];
|
|
92
|
-
const incomingAddresses = incomingTraits?.addresses ?? [];
|
|
93
|
-
const identityChecks = [
|
|
94
|
-
{
|
|
95
|
-
trackerKey: 'isIdentityIdStale',
|
|
96
|
-
logMessage: 'identityId changed',
|
|
97
|
-
isStale: () => identityCache?.identityId !== incomingIdentity?.identityId,
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
trackerKey: 'isUserIdsStale',
|
|
101
|
-
logMessage: 'userIds changed',
|
|
102
|
-
isStale: () => hasNewTrait(cachedTraits?.userIds ?? [], incomingTraits?.userIds ?? []),
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
trackerKey: 'isIdsStale',
|
|
106
|
-
logMessage: 'ids changed',
|
|
107
|
-
isStale: () => hasNewTrait(cachedTraits?.ids ?? [], incomingTraits?.ids ?? []),
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
trackerKey: 'isEmailsStale',
|
|
111
|
-
logMessage: 'emails changed',
|
|
112
|
-
isStale: () => hasNewTrait(cachedTraits?.emails ?? [], incomingTraits?.emails ?? []),
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
trackerKey: 'isPhonesStale',
|
|
116
|
-
logMessage: 'phones changed',
|
|
117
|
-
isStale: () => hasNewTrait(cachedTraits?.phones ?? [], incomingTraits?.phones ?? []),
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
trackerKey: 'isShopifyYIdsStale',
|
|
121
|
-
logMessage: 'shopify Y ids changed',
|
|
122
|
-
isStale: () => hasNewTrait(cachedTraits?.shopifyYIds ?? [], incomingTraits?.shopifyYIds ?? []),
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
trackerKey: 'isGendersStale',
|
|
126
|
-
logMessage: 'genders changed',
|
|
127
|
-
isStale: () => hasNewTrait(cachedTraits?.genders ?? [], incomingTraits?.genders ?? []),
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
trackerKey: 'isDobsStale',
|
|
131
|
-
logMessage: 'dobs changed',
|
|
132
|
-
isStale: () => hasNewTrait(cachedTraits?.dobs ?? [], incomingTraits?.dobs ?? []),
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
trackerKey: 'isClickInfosStale',
|
|
136
|
-
logMessage: 'clickInfos changed',
|
|
137
|
-
isStale: () => isClickInfosStale(cachedTraits?.click ?? {}, incomingTraits?.click ?? {}),
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
trackerKey: 'isThirdPartyContactsStale',
|
|
141
|
-
logMessage: 'thirdPartyContacts changed',
|
|
142
|
-
isStale: () => hasNewThirdPartyContact(cachedTraits?.tpc ?? [], incomingTraits?.tpc ?? []),
|
|
143
|
-
},
|
|
144
|
-
];
|
|
145
|
-
const addressChecks = [
|
|
146
|
-
{
|
|
147
|
-
trackerKey: 'isNonIpAddressesStale',
|
|
148
|
-
logMessage: 'non-IP address changed',
|
|
149
|
-
isStale: () => hasNewNonIpAddress(cachedAddresses, incomingAddresses),
|
|
150
|
-
isAddressUpdate: true,
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
trackerKey: 'isIpAddressesStale',
|
|
154
|
-
logMessage: 'IP-sourced address changed',
|
|
155
|
-
isStale: () => hasNewIpAddress(cachedAddresses, incomingAddresses),
|
|
156
|
-
isVolatile: true,
|
|
157
|
-
},
|
|
158
|
-
];
|
|
159
|
-
const volatileChecks = [
|
|
160
|
-
{
|
|
161
|
-
trackerKey: 'isIpAddressStale',
|
|
162
|
-
logMessage: 'ipAddress changed',
|
|
163
|
-
isStale: () => checkScalarTraitChanged(cachedTraits?.ipAddress, incomingTraits?.ipAddress),
|
|
164
|
-
isVolatile: true,
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
trackerKey: 'isUserAgentStale',
|
|
168
|
-
logMessage: 'userAgent changed',
|
|
169
|
-
isStale: () => checkScalarTraitChanged(cachedTraits?.userAgent, incomingTraits?.userAgent),
|
|
170
|
-
isVolatile: true,
|
|
171
|
-
},
|
|
172
|
-
];
|
|
173
|
-
const allChecks = [...identityChecks, ...addressChecks, ...volatileChecks];
|
|
174
|
-
for (const check of allChecks) {
|
|
175
|
-
if (check.isStale()) {
|
|
176
|
-
markStaleTraitOnly(tracker, check.trackerKey, check.logMessage);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
tracker.isAddressesStale = tracker.isIpAddressesStale || tracker.isNonIpAddressesStale;
|
|
180
|
-
tracker.staleTier = computeStaleTier(tracker);
|
|
181
|
-
tracker.isCacheStale =
|
|
182
|
-
tracker.staleTier === IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE ||
|
|
183
|
-
tracker.staleTier === IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE;
|
|
184
|
-
if (tracker.staleTier !== IDENTITY_CACHE_STALENESS_TIER.NONE) {
|
|
185
|
-
Logger.debug('IdentityCache - identity cache staleness check complete', {
|
|
186
|
-
staleTier: tracker.staleTier,
|
|
187
|
-
isCacheStale: tracker.isCacheStale,
|
|
188
|
-
identityCacheStaleTracker: tracker,
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
return tracker;
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
Logger.error('IdentityCache - error checking if identity cache is stale', {
|
|
195
|
-
error,
|
|
196
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
197
|
-
});
|
|
198
|
-
const errorTracker = createInitialTracker({}, {});
|
|
199
|
-
errorTracker.isCacheStale = true;
|
|
200
|
-
errorTracker.staleTier = IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE;
|
|
201
|
-
return errorTracker;
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
const shouldSkipClickKey = (key) => key === 'googleClientInfos' || key.includes('CollectedAt');
|
|
205
|
-
const extractFbclid = (fbc) => fbc?.split('.')?.[3];
|
|
206
|
-
const isFbcStale = (cachedFbc, incomingFbc) => {
|
|
207
|
-
if (incomingFbc && !cachedFbc) {
|
|
208
|
-
return true;
|
|
209
|
-
}
|
|
210
|
-
if (!incomingFbc || !cachedFbc || incomingFbc === cachedFbc) {
|
|
211
|
-
return false;
|
|
212
|
-
}
|
|
213
|
-
const incomingFbclid = extractFbclid(incomingFbc);
|
|
214
|
-
const cachedFbclid = extractFbclid(cachedFbc);
|
|
215
|
-
return !incomingFbclid || !cachedFbclid || incomingFbclid !== cachedFbclid;
|
|
216
|
-
};
|
|
217
|
-
const isGenericClickKeyStale = (cachedValue, incomingValue) => (Boolean(incomingValue) && !cachedValue) || incomingValue !== cachedValue;
|
|
218
|
-
export const isClickInfosStale = (cachedClick, incomingClick) => {
|
|
219
|
-
try {
|
|
220
|
-
const cleanedCachedClick = removeEmptyFields(cachedClick);
|
|
221
|
-
const cleanedIncomingClick = removeEmptyFields(incomingClick);
|
|
222
|
-
const incomingKeys = Object.keys(cleanedIncomingClick);
|
|
223
|
-
const staleKeys = [];
|
|
224
|
-
for (const key of incomingKeys) {
|
|
225
|
-
if (shouldSkipClickKey(key)) {
|
|
226
|
-
continue;
|
|
227
|
-
}
|
|
228
|
-
const cachedValue = cleanedCachedClick?.[key];
|
|
229
|
-
const incomingValue = cleanedIncomingClick?.[key];
|
|
230
|
-
const isStale = key === 'fbc'
|
|
231
|
-
? isFbcStale(cachedValue, incomingValue)
|
|
232
|
-
: isGenericClickKeyStale(cachedValue, incomingValue);
|
|
233
|
-
if (isStale) {
|
|
234
|
-
staleKeys.push(key);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
if (staleKeys.length > 0) {
|
|
238
|
-
Logger.debug('IdentityCache - identity cache miss - clickInfos changed', {
|
|
239
|
-
cleanedCachedClick,
|
|
240
|
-
cleanedIncomingClick,
|
|
241
|
-
staleKeys,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
return staleKeys.length > 0;
|
|
245
|
-
}
|
|
246
|
-
catch (error) {
|
|
247
|
-
Logger.error('IdentityCache - error checking if click infos are stale - assuming stale', {
|
|
248
|
-
error,
|
|
249
|
-
errorMessage: error instanceof Error ? error.message : String(error),
|
|
250
|
-
});
|
|
251
|
-
return true;
|
|
252
|
-
}
|
|
253
|
-
};
|
|
254
|
-
export function extractStaleTraitNames(tracker) {
|
|
255
|
-
const staleTraits = [];
|
|
256
|
-
if (tracker.isIdentityIdStale)
|
|
257
|
-
staleTraits.push('identityId');
|
|
258
|
-
if (tracker.isUserIdsStale)
|
|
259
|
-
staleTraits.push('userIds');
|
|
260
|
-
if (tracker.isIdsStale)
|
|
261
|
-
staleTraits.push('ids');
|
|
262
|
-
if (tracker.isEmailsStale)
|
|
263
|
-
staleTraits.push('emails');
|
|
264
|
-
if (tracker.isPhonesStale)
|
|
265
|
-
staleTraits.push('phones');
|
|
266
|
-
if (tracker.isShopifyYIdsStale)
|
|
267
|
-
staleTraits.push('shopifyYIds');
|
|
268
|
-
if (tracker.isGendersStale)
|
|
269
|
-
staleTraits.push('genders');
|
|
270
|
-
if (tracker.isDobsStale)
|
|
271
|
-
staleTraits.push('dobs');
|
|
272
|
-
if (tracker.isAddressesStale)
|
|
273
|
-
staleTraits.push('addresses');
|
|
274
|
-
if (tracker.isClickInfosStale)
|
|
275
|
-
staleTraits.push('clickInfos');
|
|
276
|
-
if (tracker.isIpAddressStale)
|
|
277
|
-
staleTraits.push('ipAddress');
|
|
278
|
-
if (tracker.isUserAgentStale)
|
|
279
|
-
staleTraits.push('userAgent');
|
|
280
|
-
if (tracker.isThirdPartyContactsStale)
|
|
281
|
-
staleTraits.push('thirdPartyContacts');
|
|
282
|
-
return staleTraits;
|
|
283
|
-
}
|
|
284
|
-
export function mergeAndComputeIdentityStaleness(incomingIdentity, cachedOrResolvedIdentity) {
|
|
285
|
-
const mergedTraits = mergeIdentityTraits(incomingIdentity.traits, cachedOrResolvedIdentity.traits);
|
|
286
|
-
const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
|
|
287
|
-
const staleTracker = isIdentityCacheStale(cachedOrResolvedIdentity, incomingIdentity);
|
|
288
|
-
const staleTier = staleTracker.staleTier;
|
|
289
|
-
const isCacheStale = staleTier !== IDENTITY_CACHE_STALENESS_TIER.NONE &&
|
|
290
|
-
staleTier !== IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY;
|
|
291
|
-
const staleTraits = extractStaleTraitNames(staleTracker);
|
|
292
|
-
return {
|
|
293
|
-
mergedIdentity,
|
|
294
|
-
staleTracker,
|
|
295
|
-
staleTier,
|
|
296
|
-
isCacheStale,
|
|
297
|
-
staleTraits,
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
//# sourceMappingURL=identity-cache-helper.js.map
|