@adtrackify/at-service-common 3.0.46 → 3.0.49
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__/s3-client/compress-decompress.spec.d.ts +1 -1
- package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js +16 -16
- package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
- package/dist/cjs/__tests__/s3-client/s3-client.spec.js +26 -26
- package/dist/cjs/clients/generic/cognito-client.d.ts +20 -20
- package/dist/cjs/clients/generic/cognito-client.js +164 -164
- package/dist/cjs/clients/generic/dynamodb-client.d.ts +17 -17
- package/dist/cjs/clients/generic/dynamodb-client.js +167 -167
- package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
- package/dist/cjs/clients/generic/eventbridge-client.js +49 -49
- package/dist/cjs/clients/generic/http-client.d.ts +88 -88
- package/dist/cjs/clients/generic/http-client.js +56 -56
- package/dist/cjs/clients/generic/index.d.ts +8 -8
- package/dist/cjs/clients/generic/index.js +24 -24
- package/dist/cjs/clients/generic/location-client.d.ts +8 -8
- package/dist/cjs/clients/generic/location-client.js +31 -31
- package/dist/cjs/clients/generic/s3-client.d.ts +16 -16
- package/dist/cjs/clients/generic/s3-client.js +110 -110
- package/dist/cjs/clients/generic/singlestore-db-client.d.ts +14 -14
- package/dist/cjs/clients/generic/singlestore-db-client.js +66 -66
- package/dist/cjs/clients/generic/sqs-client.d.ts +14 -14
- package/dist/cjs/clients/generic/sqs-client.js +38 -38
- package/dist/cjs/clients/index.d.ts +3 -3
- package/dist/cjs/clients/index.js +19 -19
- package/dist/cjs/clients/internal-api/accounts-client.d.ts +112 -112
- package/dist/cjs/clients/internal-api/accounts-client.js +117 -117
- package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
- package/dist/cjs/clients/internal-api/db-management-client.js +39 -39
- package/dist/cjs/clients/internal-api/destinations-client.d.ts +29 -29
- package/dist/cjs/clients/internal-api/destinations-client.js +54 -54
- package/dist/cjs/clients/internal-api/event-collector-client.d.ts +20 -20
- package/dist/cjs/clients/internal-api/event-collector-client.js +39 -39
- package/dist/cjs/clients/internal-api/identity-client.d.ts +17 -17
- package/dist/cjs/clients/internal-api/identity-client.js +75 -75
- package/dist/cjs/clients/internal-api/index.d.ts +7 -7
- package/dist/cjs/clients/internal-api/index.js +23 -23
- package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +34 -34
- package/dist/cjs/clients/internal-api/shopify-app-install-client.js +63 -63
- package/dist/cjs/clients/internal-api/users-auth-client.d.ts +31 -31
- package/dist/cjs/clients/internal-api/users-auth-client.js +92 -92
- package/dist/cjs/clients/third-party/index.d.ts +1 -1
- package/dist/cjs/clients/third-party/index.js +17 -17
- package/dist/cjs/clients/third-party/shopify-client.d.ts +198 -198
- package/dist/cjs/clients/third-party/shopify-client.js +150 -150
- package/dist/cjs/helpers/index.d.ts +4 -4
- package/dist/cjs/helpers/index.js +20 -20
- package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
- package/dist/cjs/helpers/input-validation-helper.js +23 -23
- package/dist/cjs/helpers/logging-helper.d.ts +15 -15
- package/dist/cjs/helpers/logging-helper.js +80 -80
- package/dist/cjs/helpers/response-helper.d.ts +15 -15
- package/dist/cjs/helpers/response-helper.js +42 -42
- package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
- package/dist/cjs/helpers/shopify-helper.js +28 -28
- package/dist/cjs/index.d.ts +5 -5
- package/dist/cjs/index.js +21 -21
- package/dist/cjs/libs/clickId-parser.d.ts +23 -23
- package/dist/cjs/libs/clickId-parser.js +49 -49
- package/dist/cjs/libs/compression.d.ts +2 -2
- package/dist/cjs/libs/compression.js +33 -33
- package/dist/cjs/libs/crypto.d.ts +1 -1
- package/dist/cjs/libs/crypto.js +12 -12
- package/dist/cjs/libs/dates.d.ts +6 -6
- package/dist/cjs/libs/dates.js +31 -31
- package/dist/cjs/libs/http-error.d.ts +21 -21
- package/dist/cjs/libs/http-error.js +59 -59
- package/dist/cjs/libs/http-status-codes.d.ts +58 -58
- package/dist/cjs/libs/http-status-codes.js +62 -62
- package/dist/cjs/libs/index.d.ts +9 -9
- package/dist/cjs/libs/index.js +25 -25
- package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
- package/dist/cjs/libs/referrer-parser/index.js +18 -18
- package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
- package/dist/cjs/libs/referrer-parser/referrer-data.js +4712 -4712
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
- package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +128 -128
- package/dist/cjs/libs/url.d.ts +1 -1
- package/dist/cjs/libs/url.js +13 -13
- package/dist/cjs/services/db/destinations-service.d.ts +7 -7
- package/dist/cjs/services/db/destinations-service.js +35 -35
- package/dist/cjs/services/db/identity-cache-db-service.d.ts +23 -22
- package/dist/cjs/services/db/identity-cache-db-service.js +162 -73
- package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/cjs/services/db/index.d.ts +7 -7
- package/dist/cjs/services/db/index.js +23 -23
- package/dist/cjs/services/db/log-events-db-service.d.ts +11 -11
- package/dist/cjs/services/db/log-events-db-service.js +172 -172
- package/dist/cjs/services/db/purchased-contacts-db-service.d.ts +9 -9
- package/dist/cjs/services/db/purchased-contacts-db-service.js +38 -38
- package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +7 -7
- package/dist/cjs/services/db/shopify-app-installs-db-service.js +47 -47
- package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +9 -9
- package/dist/cjs/services/db/shopify-products-cache-db-service.js +64 -64
- package/dist/cjs/services/db/tracking-events-db-service.d.ts +20 -20
- package/dist/cjs/services/db/tracking-events-db-service.js +162 -162
- package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
- package/dist/cjs/services/eventbridge-integration-service.js +28 -28
- package/dist/cjs/services/index.d.ts +5 -5
- package/dist/cjs/services/index.js +21 -21
- package/dist/cjs/services/ipdata-lookup-service.d.ts +10 -10
- package/dist/cjs/services/ipdata-lookup-service.js +92 -92
- package/dist/cjs/services/log-event-service.d.ts +9 -9
- package/dist/cjs/services/log-event-service.js +56 -56
- package/dist/cjs/services/metric-event-service.d.ts +9 -9
- package/dist/cjs/services/metric-event-service.js +49 -49
- package/dist/cjs/types/api-response.d.ts +6 -6
- package/dist/cjs/types/api-response.js +2 -2
- package/dist/cjs/types/index.d.ts +1 -1
- package/dist/cjs/types/index.js +17 -17
- package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
- package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
- package/dist/cjs/types/internal-events/index.d.ts +1 -1
- package/dist/cjs/types/internal-events/index.js +17 -17
- package/dist/esm/__tests__/s3-client/compress-decompress.spec.d.ts +1 -1
- package/dist/esm/__tests__/s3-client/compress-decompress.spec.js +14 -14
- package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
- package/dist/esm/__tests__/s3-client/s3-client.spec.js +24 -24
- package/dist/esm/clients/generic/cognito-client.d.ts +20 -20
- package/dist/esm/clients/generic/cognito-client.js +159 -159
- package/dist/esm/clients/generic/dynamodb-client.d.ts +17 -17
- package/dist/esm/clients/generic/dynamodb-client.js +163 -163
- package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
- package/dist/esm/clients/generic/eventbridge-client.js +45 -45
- package/dist/esm/clients/generic/http-client.d.ts +88 -88
- package/dist/esm/clients/generic/http-client.js +48 -48
- package/dist/esm/clients/generic/index.d.ts +8 -8
- package/dist/esm/clients/generic/index.js +8 -8
- package/dist/esm/clients/generic/location-client.d.ts +8 -8
- package/dist/esm/clients/generic/location-client.js +27 -27
- package/dist/esm/clients/generic/s3-client.d.ts +16 -16
- package/dist/esm/clients/generic/s3-client.js +106 -106
- package/dist/esm/clients/generic/singlestore-db-client.d.ts +14 -14
- package/dist/esm/clients/generic/singlestore-db-client.js +39 -39
- package/dist/esm/clients/generic/sqs-client.d.ts +14 -14
- package/dist/esm/clients/generic/sqs-client.js +34 -34
- package/dist/esm/clients/index.d.ts +3 -3
- package/dist/esm/clients/index.js +3 -3
- package/dist/esm/clients/internal-api/accounts-client.d.ts +112 -112
- package/dist/esm/clients/internal-api/accounts-client.js +113 -113
- package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
- package/dist/esm/clients/internal-api/db-management-client.js +32 -32
- package/dist/esm/clients/internal-api/destinations-client.d.ts +29 -29
- package/dist/esm/clients/internal-api/destinations-client.js +50 -50
- package/dist/esm/clients/internal-api/event-collector-client.d.ts +20 -20
- package/dist/esm/clients/internal-api/event-collector-client.js +32 -32
- package/dist/esm/clients/internal-api/identity-client.d.ts +17 -17
- package/dist/esm/clients/internal-api/identity-client.js +71 -71
- package/dist/esm/clients/internal-api/index.d.ts +7 -7
- package/dist/esm/clients/internal-api/index.js +7 -7
- package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +34 -34
- package/dist/esm/clients/internal-api/shopify-app-install-client.js +56 -56
- package/dist/esm/clients/internal-api/users-auth-client.d.ts +31 -31
- package/dist/esm/clients/internal-api/users-auth-client.js +88 -88
- package/dist/esm/clients/third-party/index.d.ts +1 -1
- package/dist/esm/clients/third-party/index.js +1 -1
- package/dist/esm/clients/third-party/shopify-client.d.ts +198 -198
- package/dist/esm/clients/third-party/shopify-client.js +146 -146
- package/dist/esm/helpers/index.d.ts +4 -4
- package/dist/esm/helpers/index.js +4 -4
- package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
- package/dist/esm/helpers/input-validation-helper.js +19 -19
- package/dist/esm/helpers/logging-helper.d.ts +15 -15
- package/dist/esm/helpers/logging-helper.js +53 -53
- package/dist/esm/helpers/response-helper.d.ts +15 -15
- package/dist/esm/helpers/response-helper.js +36 -36
- package/dist/esm/helpers/shopify-helper.d.ts +9 -9
- package/dist/esm/helpers/shopify-helper.js +23 -23
- package/dist/esm/index.d.ts +5 -5
- package/dist/esm/index.js +5 -5
- package/dist/esm/libs/clickId-parser.d.ts +23 -23
- package/dist/esm/libs/clickId-parser.js +45 -45
- package/dist/esm/libs/compression.d.ts +2 -2
- package/dist/esm/libs/compression.js +25 -25
- package/dist/esm/libs/crypto.d.ts +1 -1
- package/dist/esm/libs/crypto.js +5 -5
- package/dist/esm/libs/dates.d.ts +6 -6
- package/dist/esm/libs/dates.js +22 -22
- package/dist/esm/libs/http-error.d.ts +21 -21
- package/dist/esm/libs/http-error.js +55 -55
- package/dist/esm/libs/http-status-codes.d.ts +58 -58
- package/dist/esm/libs/http-status-codes.js +59 -59
- package/dist/esm/libs/index.d.ts +9 -9
- package/dist/esm/libs/index.js +9 -9
- package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
- package/dist/esm/libs/referrer-parser/index.js +2 -2
- package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
- package/dist/esm/libs/referrer-parser/referrer-data.js +4709 -4709
- package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
- package/dist/esm/libs/referrer-parser/referrer-parser-util.js +121 -121
- package/dist/esm/libs/url.d.ts +1 -1
- package/dist/esm/libs/url.js +9 -9
- package/dist/esm/services/db/destinations-service.d.ts +7 -7
- package/dist/esm/services/db/destinations-service.js +31 -31
- package/dist/esm/services/db/identity-cache-db-service.d.ts +23 -22
- package/dist/esm/services/db/identity-cache-db-service.js +158 -69
- package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
- package/dist/esm/services/db/index.d.ts +7 -7
- package/dist/esm/services/db/index.js +7 -7
- package/dist/esm/services/db/log-events-db-service.d.ts +11 -11
- package/dist/esm/services/db/log-events-db-service.js +168 -168
- package/dist/esm/services/db/purchased-contacts-db-service.d.ts +9 -9
- package/dist/esm/services/db/purchased-contacts-db-service.js +34 -34
- package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +7 -7
- package/dist/esm/services/db/shopify-app-installs-db-service.js +43 -43
- package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +9 -9
- package/dist/esm/services/db/shopify-products-cache-db-service.js +60 -60
- package/dist/esm/services/db/tracking-events-db-service.d.ts +20 -20
- package/dist/esm/services/db/tracking-events-db-service.js +158 -158
- package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
- package/dist/esm/services/eventbridge-integration-service.js +24 -24
- package/dist/esm/services/index.d.ts +5 -5
- package/dist/esm/services/index.js +5 -5
- package/dist/esm/services/ipdata-lookup-service.d.ts +10 -10
- package/dist/esm/services/ipdata-lookup-service.js +87 -87
- package/dist/esm/services/log-event-service.d.ts +9 -9
- package/dist/esm/services/log-event-service.js +52 -52
- package/dist/esm/services/metric-event-service.d.ts +9 -9
- package/dist/esm/services/metric-event-service.js +45 -45
- package/dist/esm/types/api-response.d.ts +6 -6
- package/dist/esm/types/api-response.js +1 -1
- package/dist/esm/types/index.d.ts +1 -1
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
- package/dist/esm/types/internal-events/event-detail-types.js +24 -24
- package/dist/esm/types/internal-events/index.d.ts +1 -1
- package/dist/esm/types/internal-events/index.js +1 -1
- package/package.json +2 -2
|
@@ -1,70 +1,159 @@
|
|
|
1
|
-
import { DateTime } from 'luxon';
|
|
2
|
-
import { DynamoDbClient, IdentityClient } from '../../clients';
|
|
3
|
-
import { getCurrentTimestamp } from '../../libs';
|
|
4
|
-
import {
|
|
5
|
-
import { Logger } from '../../helpers';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
this.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
if (
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
import { DateTime } from 'luxon';
|
|
2
|
+
import { DynamoDbClient, IdentityClient } from '../../clients';
|
|
3
|
+
import { getCurrentTimestamp } from '../../libs';
|
|
4
|
+
import { hasNewAddress, hasNewIncomingClickInfo, hasNewTrait } from '@adtrackify/at-shared-utils';
|
|
5
|
+
import { Logger } from '../../helpers';
|
|
6
|
+
const DEFAULT_CACHE_TTL_IN_MONTHS = 6;
|
|
7
|
+
export class IdentityCacheDbService {
|
|
8
|
+
TABLE_NAME;
|
|
9
|
+
TABLE_KEY;
|
|
10
|
+
TTL_IN_MONTHS;
|
|
11
|
+
identityClient;
|
|
12
|
+
constructor(tableName, tableKey, baseApiUrl, cacheTtlInMonths) {
|
|
13
|
+
this.TABLE_NAME = tableName;
|
|
14
|
+
this.TABLE_KEY = tableKey;
|
|
15
|
+
if (cacheTtlInMonths) {
|
|
16
|
+
this.TTL_IN_MONTHS = cacheTtlInMonths;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
this.TTL_IN_MONTHS = DEFAULT_CACHE_TTL_IN_MONTHS;
|
|
20
|
+
}
|
|
21
|
+
this.identityClient = new IdentityClient(baseApiUrl);
|
|
22
|
+
}
|
|
23
|
+
getIdentityWithCaching = async (pixelId, incomingIdentity = {}, cacheExpiryInSeconds) => {
|
|
24
|
+
const identityCache = incomingIdentity?.identityId ? await this.getIdentityCache(incomingIdentity?.identityId) : undefined;
|
|
25
|
+
let resolvedIdentity = identityCache?.response;
|
|
26
|
+
let updateCache = false;
|
|
27
|
+
if (!identityCache || !resolvedIdentity) {
|
|
28
|
+
resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
|
|
29
|
+
updateCache = true;
|
|
30
|
+
}
|
|
31
|
+
else if (identityCache) {
|
|
32
|
+
let hasExpired = false;
|
|
33
|
+
if (cacheExpiryInSeconds) {
|
|
34
|
+
const updatedAt = DateTime.fromISO(identityCache.updatedAt);
|
|
35
|
+
const currentTime = DateTime.now();
|
|
36
|
+
const timeSinceLastUpdate = currentTime.diff(updatedAt, 'seconds').toObject().seconds;
|
|
37
|
+
hasExpired = (timeSinceLastUpdate && (timeSinceLastUpdate > cacheExpiryInSeconds)) || false;
|
|
38
|
+
}
|
|
39
|
+
if (hasExpired) {
|
|
40
|
+
Logger.warn('Cache expired based on custom expiry time', { identityCache });
|
|
41
|
+
resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
|
|
42
|
+
updateCache = true;
|
|
43
|
+
}
|
|
44
|
+
else if (this.isIdentityCacheStale(identityCache, incomingIdentity)) {
|
|
45
|
+
Logger.warn('identity cache miss - record exists but stale', { identityCache, incomingIdentity });
|
|
46
|
+
resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
|
|
47
|
+
updateCache = true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (updateCache && resolvedIdentity) {
|
|
51
|
+
await this.updateIdentityCache(incomingIdentity, resolvedIdentity);
|
|
52
|
+
}
|
|
53
|
+
if (!resolvedIdentity) {
|
|
54
|
+
Logger.error('No identity found', { pixelId, incomingIdentity });
|
|
55
|
+
}
|
|
56
|
+
return resolvedIdentity;
|
|
57
|
+
};
|
|
58
|
+
updateIdentityCache = async (request, response) => {
|
|
59
|
+
const identityCacheKeys = [];
|
|
60
|
+
if (request?.identityId && identityCacheKeys.indexOf(request?.identityId) === -1) {
|
|
61
|
+
identityCacheKeys.push(request?.identityId);
|
|
62
|
+
}
|
|
63
|
+
if (response?.identityId && identityCacheKeys.indexOf(response?.identityId) === -1) {
|
|
64
|
+
identityCacheKeys.push(response?.identityId);
|
|
65
|
+
}
|
|
66
|
+
for (let i = 0; i < identityCacheKeys.length; i++) {
|
|
67
|
+
let cachedIdentity = await this.getIdentityCache(identityCacheKeys[i]);
|
|
68
|
+
if (cachedIdentity) {
|
|
69
|
+
cachedIdentity.request = request;
|
|
70
|
+
cachedIdentity.response = response;
|
|
71
|
+
cachedIdentity.updatedAt = getCurrentTimestamp();
|
|
72
|
+
cachedIdentity.expiresAt = DateTime.now().plus({ months: this.TTL_IN_MONTHS }).toSeconds();
|
|
73
|
+
await this.putIdentityCache(cachedIdentity);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
cachedIdentity = {
|
|
77
|
+
identityId: identityCacheKeys[i],
|
|
78
|
+
request,
|
|
79
|
+
response,
|
|
80
|
+
createdAt: getCurrentTimestamp(),
|
|
81
|
+
updatedAt: getCurrentTimestamp(),
|
|
82
|
+
expiresAt: DateTime.now().plus({ months: this.TTL_IN_MONTHS }).toSeconds()
|
|
83
|
+
};
|
|
84
|
+
await this.putIdentityCache(cachedIdentity);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
putIdentityCache = async (identityCache) => {
|
|
89
|
+
Logger.warn('putting identity cache', { identityCache });
|
|
90
|
+
return await DynamoDbClient.safePut(this.TABLE_NAME, identityCache);
|
|
91
|
+
};
|
|
92
|
+
getIdentityCache = async (identityId) => {
|
|
93
|
+
return await DynamoDbClient.safeGet(this.TABLE_NAME, this.TABLE_KEY, identityId);
|
|
94
|
+
};
|
|
95
|
+
deleteIdentityCache = async (identityId) => {
|
|
96
|
+
return await DynamoDbClient.safeDelete(this.TABLE_NAME, this.TABLE_KEY, identityId);
|
|
97
|
+
};
|
|
98
|
+
isIdentityCacheStale(identityCache, incomingIdentity) {
|
|
99
|
+
try {
|
|
100
|
+
const cachedTraits = identityCache.response?.traits ?? {};
|
|
101
|
+
const incomingTraits = incomingIdentity?.traits ?? {};
|
|
102
|
+
const isNewUserIds = hasNewTrait(cachedTraits?.userIds ?? [], incomingTraits?.userIds ?? []);
|
|
103
|
+
if (isNewUserIds) {
|
|
104
|
+
Logger.warn('identity cache miss - userIds changed', { cachedTraits, incomingTraits });
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
const isNewIds = hasNewTrait(cachedTraits?.ids ?? [], incomingTraits?.ids ?? []);
|
|
108
|
+
if (isNewIds) {
|
|
109
|
+
Logger.warn('identity cache miss - ids changed', { cachedTraits, incomingTraits });
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
const isNewEmails = hasNewTrait(cachedTraits?.emails ?? [], incomingTraits?.emails ?? []);
|
|
113
|
+
if (isNewEmails) {
|
|
114
|
+
Logger.warn('identity cache miss - emails changed', { cachedTraits, incomingTraits });
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
const isNewPhones = hasNewTrait(cachedTraits?.phones ?? [], incomingTraits?.phones ?? []);
|
|
118
|
+
if (isNewPhones) {
|
|
119
|
+
Logger.warn('identity cache miss - phones changed', { cachedTraits, incomingTraits });
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
const isNewShopifyYIds = hasNewTrait(cachedTraits?.shopifyYIds ?? [], incomingTraits?.shopifyYIds ?? []);
|
|
123
|
+
if (isNewShopifyYIds) {
|
|
124
|
+
Logger.warn('identity cache miss - shopify Y ids changed', { cachedTraits, incomingTraits });
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
const isNewGenders = hasNewTrait(cachedTraits?.genders ?? [], incomingTraits?.genders ?? []);
|
|
128
|
+
if (isNewGenders) {
|
|
129
|
+
Logger.warn('identity cache miss - genders changed', { cachedTraits, incomingTraits });
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
const isNewDobs = hasNewTrait(cachedTraits?.dobs ?? [], incomingTraits?.dobs ?? []);
|
|
133
|
+
if (isNewDobs) {
|
|
134
|
+
Logger.warn('identity cache miss - dobs changed', { cachedTraits, incomingTraits });
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
const isNewAddress = hasNewAddress(cachedTraits?.addresses ?? [], incomingTraits?.addresses ?? []);
|
|
138
|
+
if (isNewAddress) {
|
|
139
|
+
Logger.warn('identity cache miss - address changed', { cachedTraits, incomingTraits });
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
const isNewClick = hasNewIncomingClickInfo(cachedTraits?.click ?? {}, incomingTraits?.click ?? {});
|
|
143
|
+
if (isNewClick) {
|
|
144
|
+
Logger.warn('identity cache miss - clickInfos changed', { cachedTraits, incomingTraits });
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
if ((incomingTraits?.ipAddress && cachedTraits?.ipAddress !== incomingTraits?.ipAddress) || (incomingTraits?.userAgent && cachedTraits?.userAgent !== incomingTraits?.userAgent)) {
|
|
148
|
+
Logger.warn('identity cache miss - ip/userAgent changed', { cachedTraits, incomingTraits });
|
|
149
|
+
return true;
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
Logger.error('Error while checking if identity cache is stale', { error });
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
70
159
|
//# sourceMappingURL=identity-cache-db-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"identity-cache-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/identity-cache-db-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './destinations-service.js';
|
|
2
|
-
export * from './log-events-db-service.js';
|
|
3
|
-
export * from './purchased-contacts-db-service.js';
|
|
4
|
-
export * from './tracking-events-db-service.js';
|
|
5
|
-
export * from './shopify-products-cache-db-service.js';
|
|
6
|
-
export * from './shopify-app-installs-db-service.js';
|
|
7
|
-
export * from './identity-cache-db-service.js';
|
|
1
|
+
export * from './destinations-service.js';
|
|
2
|
+
export * from './log-events-db-service.js';
|
|
3
|
+
export * from './purchased-contacts-db-service.js';
|
|
4
|
+
export * from './tracking-events-db-service.js';
|
|
5
|
+
export * from './shopify-products-cache-db-service.js';
|
|
6
|
+
export * from './shopify-app-installs-db-service.js';
|
|
7
|
+
export * from './identity-cache-db-service.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from './destinations-service.js';
|
|
2
|
-
export * from './log-events-db-service.js';
|
|
3
|
-
export * from './purchased-contacts-db-service.js';
|
|
4
|
-
export * from './tracking-events-db-service.js';
|
|
5
|
-
export * from './shopify-products-cache-db-service.js';
|
|
6
|
-
export * from './shopify-app-installs-db-service.js';
|
|
7
|
-
export * from './identity-cache-db-service.js';
|
|
1
|
+
export * from './destinations-service.js';
|
|
2
|
+
export * from './log-events-db-service.js';
|
|
3
|
+
export * from './purchased-contacts-db-service.js';
|
|
4
|
+
export * from './tracking-events-db-service.js';
|
|
5
|
+
export * from './shopify-products-cache-db-service.js';
|
|
6
|
+
export * from './shopify-app-installs-db-service.js';
|
|
7
|
+
export * from './identity-cache-db-service.js';
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { LogEvent, LogEventRecord } from '@adtrackify/at-tracking-event-types';
|
|
2
|
-
export declare class LogEventsDbService {
|
|
3
|
-
TABLE_NAME: string;
|
|
4
|
-
constructor(tableName: string);
|
|
5
|
-
private processResult;
|
|
6
|
-
private processResults;
|
|
7
|
-
getLogEventsByDestinationId: (indexName: string, pixelId: string, destinationId: string, limit?: number, afterCollectedAt?: string) => Promise<LogEventRecord[]>;
|
|
8
|
-
getEventDebugLogs: (indexName: string, pixelId: string, logLevel: string, destinations?: string[], sources?: string[], eventNames?: string[]) => Promise<LogEventRecord[]>;
|
|
9
|
-
putLogEvent: (logEvent: LogEvent, logGroup: string, ttlInMinutes?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
|
|
10
|
-
private buildLogEventErrorMessage;
|
|
11
|
-
}
|
|
1
|
+
import { LogEvent, LogEventRecord } from '@adtrackify/at-tracking-event-types';
|
|
2
|
+
export declare class LogEventsDbService {
|
|
3
|
+
TABLE_NAME: string;
|
|
4
|
+
constructor(tableName: string);
|
|
5
|
+
private processResult;
|
|
6
|
+
private processResults;
|
|
7
|
+
getLogEventsByDestinationId: (indexName: string, pixelId: string, destinationId: string, limit?: number, afterCollectedAt?: string) => Promise<LogEventRecord[]>;
|
|
8
|
+
getEventDebugLogs: (indexName: string, pixelId: string, logLevel: string, destinations?: string[], sources?: string[], eventNames?: string[]) => Promise<LogEventRecord[]>;
|
|
9
|
+
putLogEvent: (logEvent: LogEvent, logGroup: string, ttlInMinutes?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
|
|
10
|
+
private buildLogEventErrorMessage;
|
|
11
|
+
}
|