@adtrackify/at-service-common 3.0.35 → 3.0.37

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 (43) hide show
  1. package/dist/cjs/__tests__/s3-client/compress-decompress.spec.d.ts +1 -0
  2. package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js +17 -0
  3. package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js.map +1 -0
  4. package/dist/cjs/libs/compression.d.ts +2 -0
  5. package/dist/cjs/libs/compression.js +34 -0
  6. package/dist/cjs/libs/compression.js.map +1 -0
  7. package/dist/cjs/libs/index.d.ts +1 -0
  8. package/dist/cjs/libs/index.js +1 -0
  9. package/dist/cjs/libs/index.js.map +1 -1
  10. package/dist/cjs/services/db/index.d.ts +1 -1
  11. package/dist/cjs/services/db/index.js +1 -1
  12. package/dist/cjs/services/db/index.js.map +1 -1
  13. package/dist/cjs/services/db/log-events-db-service.d.ts +11 -0
  14. package/dist/cjs/services/db/log-events-db-service.js +172 -0
  15. package/dist/cjs/services/db/log-events-db-service.js.map +1 -0
  16. package/dist/cjs/services/db/tracking-events-db-service.d.ts +2 -1
  17. package/dist/cjs/services/db/tracking-events-db-service.js +39 -17
  18. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  19. package/dist/esm/__tests__/s3-client/compress-decompress.spec.d.ts +1 -0
  20. package/dist/esm/__tests__/s3-client/compress-decompress.spec.js +15 -0
  21. package/dist/esm/__tests__/s3-client/compress-decompress.spec.js.map +1 -0
  22. package/dist/esm/libs/compression.d.ts +2 -0
  23. package/dist/esm/libs/compression.js +26 -0
  24. package/dist/esm/libs/compression.js.map +1 -0
  25. package/dist/esm/libs/index.d.ts +1 -0
  26. package/dist/esm/libs/index.js +1 -0
  27. package/dist/esm/libs/index.js.map +1 -1
  28. package/dist/esm/services/db/index.d.ts +1 -1
  29. package/dist/esm/services/db/index.js +1 -1
  30. package/dist/esm/services/db/index.js.map +1 -1
  31. package/dist/esm/services/db/log-events-db-service.d.ts +11 -0
  32. package/dist/esm/services/db/log-events-db-service.js +168 -0
  33. package/dist/esm/services/db/log-events-db-service.js.map +1 -0
  34. package/dist/esm/services/db/tracking-events-db-service.d.ts +2 -1
  35. package/dist/esm/services/db/tracking-events-db-service.js +39 -17
  36. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  37. package/package.json +7 -5
  38. package/dist/cjs/services/db/log-events-data-service.d.ts +0 -6
  39. package/dist/cjs/services/db/log-events-data-service.js +0 -32
  40. package/dist/cjs/services/db/log-events-data-service.js.map +0 -1
  41. package/dist/esm/services/db/log-events-data-service.d.ts +0 -6
  42. package/dist/esm/services/db/log-events-data-service.js +0 -28
  43. package/dist/esm/services/db/log-events-data-service.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const compression_1 = require("../../libs/compression");
4
+ describe('compression, decompression unit tests', () => {
5
+ afterEach(() => {
6
+ jest.resetModules();
7
+ });
8
+ it('should compress json to string', () => {
9
+ const compressed = (0, compression_1.compressJSON)({ key1: 'value1', key2: 'value2' });
10
+ expect(compressed).toBe('eNqrVspOrTRUslIqS8wpTTVU0gHxjWB8I6VaAK3KCjs=');
11
+ });
12
+ it('should decompress string to json', () => {
13
+ const decompressed = (0, compression_1.decompressJSON)('eNqrVspOrTRUslIqS8wpTTVU0gHxjWB8I6VaAK3KCjs=');
14
+ expect(decompressed).toStrictEqual({ key1: 'value1', key2: 'value2' });
15
+ });
16
+ });
17
+ //# sourceMappingURL=compress-decompress.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-decompress.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/s3-client/compress-decompress.spec.ts"],"names":[],"mappings":";;AAKA,wDAAsE;AAGtE,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,IAAA,0BAAY,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAE1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,YAAY,GAAG,IAAA,4BAAc,EAAC,8CAA8C,CAAC,CAAC;QACpF,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const compressJSON: (jsonObject: any) => string | null;
2
+ export declare const decompressJSON: (compressedJSONString: string) => any | null;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.decompressJSON = exports.compressJSON = void 0;
7
+ const pako_1 = __importDefault(require("pako"));
8
+ const helpers_1 = require("../helpers");
9
+ const compressJSON = (jsonObject) => {
10
+ try {
11
+ const jsonString = JSON.stringify(jsonObject, null, '');
12
+ const deflatedData = pako_1.default.deflate(jsonString, { level: 9 });
13
+ const compressedJSONString = btoa(String.fromCharCode(...deflatedData));
14
+ return compressedJSONString;
15
+ }
16
+ catch (error) {
17
+ helpers_1.Logger.error('Failed to compress json', { error, jsonObject });
18
+ return null;
19
+ }
20
+ };
21
+ exports.compressJSON = compressJSON;
22
+ const decompressJSON = (compressedJSONString) => {
23
+ try {
24
+ const decodedData = Uint8Array.from(atob(compressedJSONString), c => c.charCodeAt(0));
25
+ const decompressedJSON = pako_1.default.inflate(decodedData, { to: 'string' });
26
+ return JSON.parse(decompressedJSON);
27
+ }
28
+ catch (error) {
29
+ helpers_1.Logger.error('Failed to decompress json', { error, compressedJSONString });
30
+ return null;
31
+ }
32
+ };
33
+ exports.decompressJSON = decompressJSON;
34
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/libs/compression.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,wCAAoC;AAE7B,MAAM,YAAY,GAAG,CAAC,UAAe,EAAiB,EAAE;IAC7D,IAAI;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QACxE,OAAO,oBAAoB,CAAC;KAC7B;IACD,OAAO,KAAK,EAAE;QACZ,gBAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAA;AAXY,QAAA,YAAY,gBAWxB;AAEM,MAAM,cAAc,GAAG,CAAC,oBAA4B,EAAc,EAAE;IACzE,IAAI;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,gBAAgB,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACrC;IACD,OAAO,KAAK,EAAE;QACZ,gBAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAA;AAVY,QAAA,cAAc,kBAU1B"}
@@ -6,3 +6,4 @@ export * from './http-status-codes.js';
6
6
  export * from './url.js';
7
7
  export * from './referrer-parser/index.js';
8
8
  export * from './clickId-parser.js';
9
+ export * from './compression.js';
@@ -22,4 +22,5 @@ __exportStar(require("./http-status-codes.js"), exports);
22
22
  __exportStar(require("./url.js"), exports);
23
23
  __exportStar(require("./referrer-parser/index.js"), exports);
24
24
  __exportStar(require("./clickId-parser.js"), exports);
25
+ __exportStar(require("./compression.js"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8CAA4B;AAC5B,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,2CAAyB;AACzB,6DAA2C;AAC3C,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,8CAA4B;AAC5B,6CAA2B;AAC3B,kDAAgC;AAChC,yDAAuC;AACvC,2CAAyB;AACzB,6DAA2C;AAC3C,sDAAoC;AACpC,mDAAiC"}
@@ -1,4 +1,4 @@
1
1
  export * from './destinations-service.js';
2
- export * from './log-events-data-service.js';
2
+ export * from './log-events-db-service.js';
3
3
  export * from './purchased-contacts-db-service.js';
4
4
  export * from './tracking-events-db-service.js';
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./destinations-service.js"), exports);
18
- __exportStar(require("./log-events-data-service.js"), exports);
18
+ __exportStar(require("./log-events-db-service.js"), exports);
19
19
  __exportStar(require("./purchased-contacts-db-service.js"), exports);
20
20
  __exportStar(require("./tracking-events-db-service.js"), exports);
21
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,+DAA6C;AAC7C,qEAAmD;AACnD,kEAAgD"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,6DAA2C;AAC3C,qEAAmD;AACnD,kEAAgD"}
@@ -0,0 +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
+ }
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogEventsDbService = void 0;
4
+ const clients_1 = require("../../clients");
5
+ const luxon_1 = require("luxon");
6
+ const libs_1 = require("../../libs");
7
+ class LogEventsDbService {
8
+ TABLE_NAME;
9
+ constructor(tableName) {
10
+ this.TABLE_NAME = tableName;
11
+ }
12
+ processResult = (logEventRecord) => {
13
+ if (logEventRecord?.logEventCompressed) {
14
+ const logEventDecompressed = (0, libs_1.decompressJSON)(logEventRecord.logEventCompressed);
15
+ if (logEventDecompressed) {
16
+ logEventRecord.logEvent = logEventDecompressed;
17
+ delete logEventRecord.logEventCompressed;
18
+ }
19
+ }
20
+ const destinationErrorType = logEventRecord?.logEvent?.data?.facebookErrorType;
21
+ const destinationErrorMessage = logEventRecord?.logEvent?.data?.facebookErrorMessage;
22
+ const destinationErrorCode = logEventRecord?.logEvent?.data?.facebookErrorCode;
23
+ return {
24
+ eventId: logEventRecord.eventId,
25
+ eventName: logEventRecord.eventName,
26
+ pixelId: logEventRecord.pixelId,
27
+ source: logEventRecord.source,
28
+ service: logEventRecord.service,
29
+ logLevel: logEventRecord.logLevel,
30
+ logGroup: logEventRecord.logGroup,
31
+ destination: logEventRecord?.destination ?? logEventRecord?.logEvent?.data?.destination,
32
+ destinationId: logEventRecord?.destinationId,
33
+ trackingEventName: logEventRecord?.trackingEventName ?? logEventRecord?.logEvent?.data?.eventName,
34
+ destinationTrackingEventName: logEventRecord?.destinationTrackingEventName ?? logEventRecord?.logEvent?.data?.destinationEventName,
35
+ responseCode: logEventRecord?.responseCode,
36
+ errorCode: logEventRecord?.errorCode ?? logEventRecord?.logEvent?.data?.code,
37
+ errorMessage: logEventRecord?.errorMessage ?? this.buildLogEventErrorMessage(destinationErrorType, destinationErrorMessage, destinationErrorCode),
38
+ sentAtEpoch: logEventRecord?.sentAtEpoch,
39
+ collectedAt: logEventRecord?.collectedAt,
40
+ expiredAt: logEventRecord?.expiredAt,
41
+ };
42
+ };
43
+ processResults = (logEventRecords) => {
44
+ return logEventRecords.map((logEventRecord) => this.processResult(logEventRecord));
45
+ };
46
+ getLogEventsByDestinationId = async (indexName, pixelId, destinationId, limit, afterCollectedAt) => {
47
+ const query = {
48
+ TableName: this.TABLE_NAME,
49
+ IndexName: indexName,
50
+ FilterExpression: 'destinationId = :destinationId',
51
+ KeyConditionExpression: 'pixelId = :pixelId',
52
+ ExpressionAttributeValues: {
53
+ ':pixelId': pixelId,
54
+ ':destinationId': destinationId
55
+ },
56
+ ScanIndexForward: false,
57
+ };
58
+ if (limit) {
59
+ query.Limit = limit;
60
+ }
61
+ if (afterCollectedAt) {
62
+ query.KeyConditionExpression += ' and collectedAt > :collectedAt';
63
+ query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
64
+ }
65
+ const result = await clients_1.DynamoDbClient.query(query);
66
+ const logEventRecords = (result?.Items ?? []);
67
+ return this.processResults(logEventRecords);
68
+ };
69
+ getEventDebugLogs = async (indexName, pixelId, logLevel, destinations, sources, eventNames) => {
70
+ const afterTime = luxon_1.DateTime.utc().minus({ minutes: 30 }).toJSDate().toISOString();
71
+ let searchQuery = '';
72
+ const expressionAttributeValues = {};
73
+ if (destinations) {
74
+ searchQuery += `#logEvent.#data.#destination IN (${destinations.map((destination, index) => (`:destination${index}`)).join(', ')})`;
75
+ destinations.forEach((destination, index) => {
76
+ expressionAttributeValues[`:destination${index}`] = destination;
77
+ });
78
+ }
79
+ if (logLevel) {
80
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} logLevel = :logLevel `;
81
+ expressionAttributeValues[':logLevel'] = logLevel;
82
+ }
83
+ if (sources) {
84
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} #source IN (${sources.map((_, index) => (`:source${index}`)).join(', ')})`;
85
+ sources.forEach((source, index) => {
86
+ expressionAttributeValues[`:source${index}`] = source;
87
+ });
88
+ }
89
+ if (eventNames) {
90
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} #logEvent.#data.#eventName IN (${eventNames.map((_, index) => (`:eventName${index}`)).join(', ')})`;
91
+ eventNames.forEach((eventName, index) => {
92
+ expressionAttributeValues[`:eventName${index}`] = eventName;
93
+ });
94
+ }
95
+ const params = {
96
+ TableName: this.TABLE_NAME,
97
+ IndexName: indexName,
98
+ KeyConditionExpression: 'pixelId = :pixelId and collectedAt > :collectedAt ',
99
+ FilterExpression: searchQuery,
100
+ ExpressionAttributeValues: {
101
+ ':pixelId': pixelId,
102
+ ':collectedAt': afterTime,
103
+ ...expressionAttributeValues,
104
+ },
105
+ ScanIndexForward: false,
106
+ Limit: 500,
107
+ };
108
+ if (expressionAttributeValues[':destination0']) {
109
+ params['ExpressionAttributeNames'] = {
110
+ '#logEvent': 'logEvent',
111
+ '#data': 'data',
112
+ '#destination': 'destination',
113
+ };
114
+ }
115
+ if (expressionAttributeValues[':source0']) {
116
+ params['ExpressionAttributeNames'] = {
117
+ ...params['ExpressionAttributeNames'],
118
+ '#source': 'source'
119
+ };
120
+ }
121
+ if (expressionAttributeValues[':eventName0']) {
122
+ params['ExpressionAttributeNames'] = {
123
+ ...params['ExpressionAttributeNames'],
124
+ '#logEvent': 'logEvent',
125
+ '#data': 'data',
126
+ '#eventName': 'eventName'
127
+ };
128
+ }
129
+ const result = await clients_1.DynamoDbClient.query(params);
130
+ const logEventRecords = (result?.Items ?? []);
131
+ return this.processResults(logEventRecords);
132
+ };
133
+ putLogEvent = async (logEvent, logGroup, ttlInMinutes) => {
134
+ const logEventCopy = JSON.parse(JSON.stringify(logEvent));
135
+ delete logEventCopy?.data?.logStorage;
136
+ const expiredAt = luxon_1.DateTime.now().plus({ minutes: ttlInMinutes ?? 15 }).toSeconds();
137
+ const logEventRecord = {
138
+ eventId: logEventCopy.id,
139
+ eventName: logEventCopy.name,
140
+ pixelId: logEventCopy.pixelId,
141
+ source: logEventCopy.data?.source || '',
142
+ service: logEventCopy.data?.service || '',
143
+ logLevel: logEventCopy.data.logLevel,
144
+ logGroup,
145
+ destination: logEventCopy?.data?.destination,
146
+ destinationId: logEventCopy.data?.destinationId,
147
+ trackingEventName: logEventCopy?.data?.eventName,
148
+ destinationTrackingEventName: logEventCopy?.data?.destinationEventName,
149
+ responseCode: logEventCopy?.data?.responseCode,
150
+ errorCode: logEventCopy?.data?.errorCode,
151
+ errorMessage: this.buildLogEventErrorMessage(logEventCopy?.data?.destinationErrorType, logEventCopy?.data?.destinationErrorMessage, logEventCopy?.data?.destinationErrorCode),
152
+ collectedAt: logEventCopy?.collectedAt,
153
+ expiredAt,
154
+ };
155
+ return await clients_1.DynamoDbClient.safePut(this.TABLE_NAME, logEventRecord);
156
+ };
157
+ buildLogEventErrorMessage = (destinationErrorType, destinationErrorMessage, destinationErrorCode) => {
158
+ let errorMessage = '';
159
+ if (destinationErrorType) {
160
+ errorMessage += destinationErrorType;
161
+ }
162
+ if (destinationErrorMessage) {
163
+ errorMessage += ` ${destinationErrorMessage}`;
164
+ }
165
+ if (destinationErrorCode) {
166
+ errorMessage += ` code: ${destinationErrorCode}`;
167
+ }
168
+ return errorMessage.trim();
169
+ };
170
+ }
171
+ exports.LogEventsDbService = LogEventsDbService;
172
+ //# sourceMappingURL=log-events-db-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/log-events-db-service.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,12 @@ export declare class TrackingEventsDbService {
9
9
  TABLE_NAME: string;
10
10
  KEY_NAME: string;
11
11
  constructor(tableName: string);
12
+ private processResult;
13
+ private processResults;
12
14
  getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
13
15
  getTrackingEventsByPixelIdEventName: (indexName: string, pixelId: string, eventName: string, limit?: number, afterCollectedAt?: string) => Promise<TrackingEventRecord[]>;
14
16
  getTrackingEventCountByPixelId: (indexName: string, pixelId: string, offsetInMinutes?: number) => Promise<number>;
15
17
  getTrackingEvent: (eventId: string) => Promise<TrackingEventRecord | null>;
16
18
  buildTrackingEventRecord: (trackingEvent: TrackingEvent, ttlInDays?: number) => TrackingEventRecord;
17
19
  putTrackingEvent: (trackingEvent: TrackingEvent, ttlInDays?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null | undefined>;
18
- putBatchTrackingEvents: (items: TrackingEventRecord[]) => Promise<void>;
19
20
  }
@@ -4,12 +4,26 @@ exports.TrackingEventsDbService = void 0;
4
4
  const clients_1 = require("../../clients");
5
5
  const helpers_1 = require("../../helpers");
6
6
  const luxon_1 = require("luxon");
7
+ const libs_1 = require("../../libs");
7
8
  class TrackingEventsDbService {
8
9
  TABLE_NAME;
9
10
  KEY_NAME = 'eventId';
10
11
  constructor(tableName) {
11
12
  this.TABLE_NAME = tableName;
12
13
  }
14
+ processResult = (trackingEventRecord) => {
15
+ if (trackingEventRecord?.trackingEventCompressed) {
16
+ const trackingEventDecompressed = (0, libs_1.decompressJSON)(trackingEventRecord.trackingEventCompressed);
17
+ if (trackingEventDecompressed) {
18
+ trackingEventRecord.trackingEvent = trackingEventDecompressed;
19
+ delete trackingEventRecord?.trackingEventCompressed;
20
+ }
21
+ }
22
+ return trackingEventRecord;
23
+ };
24
+ processResults = (trackingEventRecords) => {
25
+ return trackingEventRecords.map((trackingEventRecord) => this.processResult(trackingEventRecord));
26
+ };
13
27
  getLatestSessionByIpAddressUserAgent = async (indexName, ipAddressUserAgent, hostname) => {
14
28
  try {
15
29
  const params = {
@@ -39,6 +53,7 @@ class TrackingEventsDbService {
39
53
  });
40
54
  }
41
55
  if (trackingEventRecord) {
56
+ trackingEventRecord = this.processResult(trackingEventRecord);
42
57
  const trackingEvent = trackingEventRecord.trackingEvent;
43
58
  return {
44
59
  pixelId: trackingEvent?.pixelId,
@@ -73,8 +88,9 @@ class TrackingEventsDbService {
73
88
  query.KeyConditionExpression += ' and collectedAt > :collectedAt';
74
89
  query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
75
90
  }
76
- const trackingEventsResponse = await clients_1.DynamoDbClient.query(query);
77
- return trackingEventsResponse?.Items ?? [];
91
+ const result = await clients_1.DynamoDbClient.query(query);
92
+ const trackingEventRecords = (result?.Items ?? []);
93
+ return this.processResults(trackingEventRecords);
78
94
  };
79
95
  getTrackingEventCountByPixelId = async (indexName, pixelId, offsetInMinutes = 30) => {
80
96
  try {
@@ -98,8 +114,9 @@ class TrackingEventsDbService {
98
114
  };
99
115
  getTrackingEvent = async (eventId) => {
100
116
  try {
101
- const eventRecord = await clients_1.DynamoDbClient.safeGet(this.TABLE_NAME, this.KEY_NAME, eventId);
102
- return eventRecord;
117
+ let trackingEventRecord = await clients_1.DynamoDbClient.safeGet(this.TABLE_NAME, this.KEY_NAME, eventId);
118
+ trackingEventRecord = this.processResult(trackingEventRecord);
119
+ return trackingEventRecord;
103
120
  }
104
121
  catch (e) {
105
122
  helpers_1.Logger.error('Failed to getTrackingEvent', { e });
@@ -107,24 +124,32 @@ class TrackingEventsDbService {
107
124
  }
108
125
  };
109
126
  buildTrackingEventRecord = (trackingEvent, ttlInDays) => {
110
- const pageURL = trackingEvent?.context?.properties?.page?.url;
127
+ const trackingEventCopy = JSON.parse(JSON.stringify(trackingEvent));
128
+ delete trackingEventCopy?.context?.properties?.enrichment?.ipLookupResponse;
129
+ const pageURL = trackingEventCopy?.context?.properties?.page?.url;
111
130
  const parsedPageURL = new URL(pageURL);
112
131
  const hostname = parsedPageURL?.hostname;
113
132
  const trackingEventsTableTTLDays = ttlInDays || 15;
114
133
  const expiredAt = luxon_1.DateTime.now().plus({ days: trackingEventsTableTTLDays }).toSeconds();
115
134
  const trackingEventRecord = {
116
- eventId: trackingEvent.id,
117
- eventName: trackingEvent.name,
118
- trackingEvent,
119
- pixelId: trackingEvent?.pixelId,
120
- pixelIdEventName: `${trackingEvent.pixelId}_${trackingEvent.name}`,
121
- ipAddressUserAgent: `${trackingEvent.context?.properties?.ipAddress}_${trackingEvent.context?.properties?.userAgent}`,
135
+ eventId: trackingEventCopy.id,
136
+ eventName: trackingEventCopy.name,
137
+ pixelId: trackingEventCopy?.pixelId,
138
+ pixelIdEventName: `${trackingEventCopy.pixelId}_${trackingEventCopy.name}`,
139
+ ipAddressUserAgent: `${trackingEventCopy.context?.properties?.ipAddress}_${trackingEventCopy.context?.properties?.userAgent}`,
122
140
  hostname,
123
- identityId: trackingEvent?.context?.identity?.identityId,
124
- sessionId: trackingEvent?.context?.properties?.sessionId,
125
- collectedAt: trackingEvent.collectedAt,
141
+ identityId: trackingEventCopy?.context?.identity?.identityId,
142
+ sessionId: trackingEventCopy?.context?.properties?.sessionId,
143
+ collectedAt: trackingEventCopy.collectedAt,
126
144
  expiredAt,
127
145
  };
146
+ const trackingEventCompressed = (0, libs_1.compressJSON)(trackingEventCopy);
147
+ if (trackingEventCompressed) {
148
+ trackingEventRecord.trackingEventCompressed = trackingEventCompressed;
149
+ }
150
+ else {
151
+ trackingEventRecord.trackingEvent = trackingEventCopy;
152
+ }
128
153
  return trackingEventRecord;
129
154
  };
130
155
  putTrackingEvent = async (trackingEvent, ttlInDays) => {
@@ -133,9 +158,6 @@ class TrackingEventsDbService {
133
158
  const trackingEventRecord = this.buildTrackingEventRecord(trackingEvent, ttlInDays);
134
159
  return await clients_1.DynamoDbClient.safePut(this.TABLE_NAME, trackingEventRecord);
135
160
  };
136
- putBatchTrackingEvents = async (items) => {
137
- await clients_1.DynamoDbClient.safeBatchPut(this.TABLE_NAME, items);
138
- };
139
161
  }
140
162
  exports.TrackingEventsDbService = TrackingEventsDbService;
141
163
  //# sourceMappingURL=tracking-events-db-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-db-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracking-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-db-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { compressJSON, decompressJSON } from '../../libs/compression';
2
+ describe('compression, decompression unit tests', () => {
3
+ afterEach(() => {
4
+ jest.resetModules();
5
+ });
6
+ it('should compress json to string', () => {
7
+ const compressed = compressJSON({ key1: 'value1', key2: 'value2' });
8
+ expect(compressed).toBe('eNqrVspOrTRUslIqS8wpTTVU0gHxjWB8I6VaAK3KCjs=');
9
+ });
10
+ it('should decompress string to json', () => {
11
+ const decompressed = decompressJSON('eNqrVspOrTRUslIqS8wpTTVU0gHxjWB8I6VaAK3KCjs=');
12
+ expect(decompressed).toStrictEqual({ key1: 'value1', key2: 'value2' });
13
+ });
14
+ });
15
+ //# sourceMappingURL=compress-decompress.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compress-decompress.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/s3-client/compress-decompress.spec.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGtE,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,UAAU,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAE1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,YAAY,GAAG,cAAc,CAAC,8CAA8C,CAAC,CAAC;QACpF,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const compressJSON: (jsonObject: any) => string | null;
2
+ export declare const decompressJSON: (compressedJSONString: string) => any | null;
@@ -0,0 +1,26 @@
1
+ import Pako from 'pako';
2
+ import { Logger } from '../helpers';
3
+ export const compressJSON = (jsonObject) => {
4
+ try {
5
+ const jsonString = JSON.stringify(jsonObject, null, '');
6
+ const deflatedData = Pako.deflate(jsonString, { level: 9 });
7
+ const compressedJSONString = btoa(String.fromCharCode(...deflatedData));
8
+ return compressedJSONString;
9
+ }
10
+ catch (error) {
11
+ Logger.error('Failed to compress json', { error, jsonObject });
12
+ return null;
13
+ }
14
+ };
15
+ export const decompressJSON = (compressedJSONString) => {
16
+ try {
17
+ const decodedData = Uint8Array.from(atob(compressedJSONString), c => c.charCodeAt(0));
18
+ const decompressedJSON = Pako.inflate(decodedData, { to: 'string' });
19
+ return JSON.parse(decompressedJSON);
20
+ }
21
+ catch (error) {
22
+ Logger.error('Failed to decompress json', { error, compressedJSONString });
23
+ return null;
24
+ }
25
+ };
26
+ //# sourceMappingURL=compression.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compression.js","sourceRoot":"","sources":["../../../src/libs/compression.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,UAAe,EAAiB,EAAE;IAC7D,IAAI;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC;QACxE,OAAO,oBAAoB,CAAC;KAC7B;IACD,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,oBAA4B,EAAc,EAAE;IACzE,IAAI;QACF,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACrC;IACD,OAAO,KAAK,EAAE;QACZ,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;KACb;AACH,CAAC,CAAA"}
@@ -6,3 +6,4 @@ export * from './http-status-codes.js';
6
6
  export * from './url.js';
7
7
  export * from './referrer-parser/index.js';
8
8
  export * from './clickId-parser.js';
9
+ export * from './compression.js';
@@ -6,4 +6,5 @@ export * from './http-status-codes.js';
6
6
  export * from './url.js';
7
7
  export * from './referrer-parser/index.js';
8
8
  export * from './clickId-parser.js';
9
+ export * from './compression.js';
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export * from './destinations-service.js';
2
- export * from './log-events-data-service.js';
2
+ export * from './log-events-db-service.js';
3
3
  export * from './purchased-contacts-db-service.js';
4
4
  export * from './tracking-events-db-service.js';
@@ -1,5 +1,5 @@
1
1
  export * from './destinations-service.js';
2
- export * from './log-events-data-service.js';
2
+ export * from './log-events-db-service.js';
3
3
  export * from './purchased-contacts-db-service.js';
4
4
  export * from './tracking-events-db-service.js';
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/db/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oCAAoC,CAAC;AACnD,cAAc,iCAAiC,CAAC"}
@@ -0,0 +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
+ }
@@ -0,0 +1,168 @@
1
+ import { DynamoDbClient } from '../../clients';
2
+ import { DateTime } from 'luxon';
3
+ import { decompressJSON } from '../../libs';
4
+ export class LogEventsDbService {
5
+ TABLE_NAME;
6
+ constructor(tableName) {
7
+ this.TABLE_NAME = tableName;
8
+ }
9
+ processResult = (logEventRecord) => {
10
+ if (logEventRecord?.logEventCompressed) {
11
+ const logEventDecompressed = decompressJSON(logEventRecord.logEventCompressed);
12
+ if (logEventDecompressed) {
13
+ logEventRecord.logEvent = logEventDecompressed;
14
+ delete logEventRecord.logEventCompressed;
15
+ }
16
+ }
17
+ const destinationErrorType = logEventRecord?.logEvent?.data?.facebookErrorType;
18
+ const destinationErrorMessage = logEventRecord?.logEvent?.data?.facebookErrorMessage;
19
+ const destinationErrorCode = logEventRecord?.logEvent?.data?.facebookErrorCode;
20
+ return {
21
+ eventId: logEventRecord.eventId,
22
+ eventName: logEventRecord.eventName,
23
+ pixelId: logEventRecord.pixelId,
24
+ source: logEventRecord.source,
25
+ service: logEventRecord.service,
26
+ logLevel: logEventRecord.logLevel,
27
+ logGroup: logEventRecord.logGroup,
28
+ destination: logEventRecord?.destination ?? logEventRecord?.logEvent?.data?.destination,
29
+ destinationId: logEventRecord?.destinationId,
30
+ trackingEventName: logEventRecord?.trackingEventName ?? logEventRecord?.logEvent?.data?.eventName,
31
+ destinationTrackingEventName: logEventRecord?.destinationTrackingEventName ?? logEventRecord?.logEvent?.data?.destinationEventName,
32
+ responseCode: logEventRecord?.responseCode,
33
+ errorCode: logEventRecord?.errorCode ?? logEventRecord?.logEvent?.data?.code,
34
+ errorMessage: logEventRecord?.errorMessage ?? this.buildLogEventErrorMessage(destinationErrorType, destinationErrorMessage, destinationErrorCode),
35
+ sentAtEpoch: logEventRecord?.sentAtEpoch,
36
+ collectedAt: logEventRecord?.collectedAt,
37
+ expiredAt: logEventRecord?.expiredAt,
38
+ };
39
+ };
40
+ processResults = (logEventRecords) => {
41
+ return logEventRecords.map((logEventRecord) => this.processResult(logEventRecord));
42
+ };
43
+ getLogEventsByDestinationId = async (indexName, pixelId, destinationId, limit, afterCollectedAt) => {
44
+ const query = {
45
+ TableName: this.TABLE_NAME,
46
+ IndexName: indexName,
47
+ FilterExpression: 'destinationId = :destinationId',
48
+ KeyConditionExpression: 'pixelId = :pixelId',
49
+ ExpressionAttributeValues: {
50
+ ':pixelId': pixelId,
51
+ ':destinationId': destinationId
52
+ },
53
+ ScanIndexForward: false,
54
+ };
55
+ if (limit) {
56
+ query.Limit = limit;
57
+ }
58
+ if (afterCollectedAt) {
59
+ query.KeyConditionExpression += ' and collectedAt > :collectedAt';
60
+ query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
61
+ }
62
+ const result = await DynamoDbClient.query(query);
63
+ const logEventRecords = (result?.Items ?? []);
64
+ return this.processResults(logEventRecords);
65
+ };
66
+ getEventDebugLogs = async (indexName, pixelId, logLevel, destinations, sources, eventNames) => {
67
+ const afterTime = DateTime.utc().minus({ minutes: 30 }).toJSDate().toISOString();
68
+ let searchQuery = '';
69
+ const expressionAttributeValues = {};
70
+ if (destinations) {
71
+ searchQuery += `#logEvent.#data.#destination IN (${destinations.map((destination, index) => (`:destination${index}`)).join(', ')})`;
72
+ destinations.forEach((destination, index) => {
73
+ expressionAttributeValues[`:destination${index}`] = destination;
74
+ });
75
+ }
76
+ if (logLevel) {
77
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} logLevel = :logLevel `;
78
+ expressionAttributeValues[':logLevel'] = logLevel;
79
+ }
80
+ if (sources) {
81
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} #source IN (${sources.map((_, index) => (`:source${index}`)).join(', ')})`;
82
+ sources.forEach((source, index) => {
83
+ expressionAttributeValues[`:source${index}`] = source;
84
+ });
85
+ }
86
+ if (eventNames) {
87
+ searchQuery += `${searchQuery.length > 0 ? ' and ' : ' '} #logEvent.#data.#eventName IN (${eventNames.map((_, index) => (`:eventName${index}`)).join(', ')})`;
88
+ eventNames.forEach((eventName, index) => {
89
+ expressionAttributeValues[`:eventName${index}`] = eventName;
90
+ });
91
+ }
92
+ const params = {
93
+ TableName: this.TABLE_NAME,
94
+ IndexName: indexName,
95
+ KeyConditionExpression: 'pixelId = :pixelId and collectedAt > :collectedAt ',
96
+ FilterExpression: searchQuery,
97
+ ExpressionAttributeValues: {
98
+ ':pixelId': pixelId,
99
+ ':collectedAt': afterTime,
100
+ ...expressionAttributeValues,
101
+ },
102
+ ScanIndexForward: false,
103
+ Limit: 500,
104
+ };
105
+ if (expressionAttributeValues[':destination0']) {
106
+ params['ExpressionAttributeNames'] = {
107
+ '#logEvent': 'logEvent',
108
+ '#data': 'data',
109
+ '#destination': 'destination',
110
+ };
111
+ }
112
+ if (expressionAttributeValues[':source0']) {
113
+ params['ExpressionAttributeNames'] = {
114
+ ...params['ExpressionAttributeNames'],
115
+ '#source': 'source'
116
+ };
117
+ }
118
+ if (expressionAttributeValues[':eventName0']) {
119
+ params['ExpressionAttributeNames'] = {
120
+ ...params['ExpressionAttributeNames'],
121
+ '#logEvent': 'logEvent',
122
+ '#data': 'data',
123
+ '#eventName': 'eventName'
124
+ };
125
+ }
126
+ const result = await DynamoDbClient.query(params);
127
+ const logEventRecords = (result?.Items ?? []);
128
+ return this.processResults(logEventRecords);
129
+ };
130
+ putLogEvent = async (logEvent, logGroup, ttlInMinutes) => {
131
+ const logEventCopy = JSON.parse(JSON.stringify(logEvent));
132
+ delete logEventCopy?.data?.logStorage;
133
+ const expiredAt = DateTime.now().plus({ minutes: ttlInMinutes ?? 15 }).toSeconds();
134
+ const logEventRecord = {
135
+ eventId: logEventCopy.id,
136
+ eventName: logEventCopy.name,
137
+ pixelId: logEventCopy.pixelId,
138
+ source: logEventCopy.data?.source || '',
139
+ service: logEventCopy.data?.service || '',
140
+ logLevel: logEventCopy.data.logLevel,
141
+ logGroup,
142
+ destination: logEventCopy?.data?.destination,
143
+ destinationId: logEventCopy.data?.destinationId,
144
+ trackingEventName: logEventCopy?.data?.eventName,
145
+ destinationTrackingEventName: logEventCopy?.data?.destinationEventName,
146
+ responseCode: logEventCopy?.data?.responseCode,
147
+ errorCode: logEventCopy?.data?.errorCode,
148
+ errorMessage: this.buildLogEventErrorMessage(logEventCopy?.data?.destinationErrorType, logEventCopy?.data?.destinationErrorMessage, logEventCopy?.data?.destinationErrorCode),
149
+ collectedAt: logEventCopy?.collectedAt,
150
+ expiredAt,
151
+ };
152
+ return await DynamoDbClient.safePut(this.TABLE_NAME, logEventRecord);
153
+ };
154
+ buildLogEventErrorMessage = (destinationErrorType, destinationErrorMessage, destinationErrorCode) => {
155
+ let errorMessage = '';
156
+ if (destinationErrorType) {
157
+ errorMessage += destinationErrorType;
158
+ }
159
+ if (destinationErrorMessage) {
160
+ errorMessage += ` ${destinationErrorMessage}`;
161
+ }
162
+ if (destinationErrorCode) {
163
+ errorMessage += ` code: ${destinationErrorCode}`;
164
+ }
165
+ return errorMessage.trim();
166
+ };
167
+ }
168
+ //# sourceMappingURL=log-events-db-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/log-events-db-service.ts"],"names":[],"mappings":"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"}
@@ -9,11 +9,12 @@ export declare class TrackingEventsDbService {
9
9
  TABLE_NAME: string;
10
10
  KEY_NAME: string;
11
11
  constructor(tableName: string);
12
+ private processResult;
13
+ private processResults;
12
14
  getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
13
15
  getTrackingEventsByPixelIdEventName: (indexName: string, pixelId: string, eventName: string, limit?: number, afterCollectedAt?: string) => Promise<TrackingEventRecord[]>;
14
16
  getTrackingEventCountByPixelId: (indexName: string, pixelId: string, offsetInMinutes?: number) => Promise<number>;
15
17
  getTrackingEvent: (eventId: string) => Promise<TrackingEventRecord | null>;
16
18
  buildTrackingEventRecord: (trackingEvent: TrackingEvent, ttlInDays?: number) => TrackingEventRecord;
17
19
  putTrackingEvent: (trackingEvent: TrackingEvent, ttlInDays?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null | undefined>;
18
- putBatchTrackingEvents: (items: TrackingEventRecord[]) => Promise<void>;
19
20
  }
@@ -1,12 +1,26 @@
1
1
  import { DynamoDbClient } from '../../clients';
2
2
  import { Logger } from '../../helpers';
3
3
  import { DateTime } from 'luxon';
4
+ import { compressJSON, decompressJSON } from '../../libs';
4
5
  export class TrackingEventsDbService {
5
6
  TABLE_NAME;
6
7
  KEY_NAME = 'eventId';
7
8
  constructor(tableName) {
8
9
  this.TABLE_NAME = tableName;
9
10
  }
11
+ processResult = (trackingEventRecord) => {
12
+ if (trackingEventRecord?.trackingEventCompressed) {
13
+ const trackingEventDecompressed = decompressJSON(trackingEventRecord.trackingEventCompressed);
14
+ if (trackingEventDecompressed) {
15
+ trackingEventRecord.trackingEvent = trackingEventDecompressed;
16
+ delete trackingEventRecord?.trackingEventCompressed;
17
+ }
18
+ }
19
+ return trackingEventRecord;
20
+ };
21
+ processResults = (trackingEventRecords) => {
22
+ return trackingEventRecords.map((trackingEventRecord) => this.processResult(trackingEventRecord));
23
+ };
10
24
  getLatestSessionByIpAddressUserAgent = async (indexName, ipAddressUserAgent, hostname) => {
11
25
  try {
12
26
  const params = {
@@ -36,6 +50,7 @@ export class TrackingEventsDbService {
36
50
  });
37
51
  }
38
52
  if (trackingEventRecord) {
53
+ trackingEventRecord = this.processResult(trackingEventRecord);
39
54
  const trackingEvent = trackingEventRecord.trackingEvent;
40
55
  return {
41
56
  pixelId: trackingEvent?.pixelId,
@@ -70,8 +85,9 @@ export class TrackingEventsDbService {
70
85
  query.KeyConditionExpression += ' and collectedAt > :collectedAt';
71
86
  query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
72
87
  }
73
- const trackingEventsResponse = await DynamoDbClient.query(query);
74
- return trackingEventsResponse?.Items ?? [];
88
+ const result = await DynamoDbClient.query(query);
89
+ const trackingEventRecords = (result?.Items ?? []);
90
+ return this.processResults(trackingEventRecords);
75
91
  };
76
92
  getTrackingEventCountByPixelId = async (indexName, pixelId, offsetInMinutes = 30) => {
77
93
  try {
@@ -95,8 +111,9 @@ export class TrackingEventsDbService {
95
111
  };
96
112
  getTrackingEvent = async (eventId) => {
97
113
  try {
98
- const eventRecord = await DynamoDbClient.safeGet(this.TABLE_NAME, this.KEY_NAME, eventId);
99
- return eventRecord;
114
+ let trackingEventRecord = await DynamoDbClient.safeGet(this.TABLE_NAME, this.KEY_NAME, eventId);
115
+ trackingEventRecord = this.processResult(trackingEventRecord);
116
+ return trackingEventRecord;
100
117
  }
101
118
  catch (e) {
102
119
  Logger.error('Failed to getTrackingEvent', { e });
@@ -104,24 +121,32 @@ export class TrackingEventsDbService {
104
121
  }
105
122
  };
106
123
  buildTrackingEventRecord = (trackingEvent, ttlInDays) => {
107
- const pageURL = trackingEvent?.context?.properties?.page?.url;
124
+ const trackingEventCopy = JSON.parse(JSON.stringify(trackingEvent));
125
+ delete trackingEventCopy?.context?.properties?.enrichment?.ipLookupResponse;
126
+ const pageURL = trackingEventCopy?.context?.properties?.page?.url;
108
127
  const parsedPageURL = new URL(pageURL);
109
128
  const hostname = parsedPageURL?.hostname;
110
129
  const trackingEventsTableTTLDays = ttlInDays || 15;
111
130
  const expiredAt = DateTime.now().plus({ days: trackingEventsTableTTLDays }).toSeconds();
112
131
  const trackingEventRecord = {
113
- eventId: trackingEvent.id,
114
- eventName: trackingEvent.name,
115
- trackingEvent,
116
- pixelId: trackingEvent?.pixelId,
117
- pixelIdEventName: `${trackingEvent.pixelId}_${trackingEvent.name}`,
118
- ipAddressUserAgent: `${trackingEvent.context?.properties?.ipAddress}_${trackingEvent.context?.properties?.userAgent}`,
132
+ eventId: trackingEventCopy.id,
133
+ eventName: trackingEventCopy.name,
134
+ pixelId: trackingEventCopy?.pixelId,
135
+ pixelIdEventName: `${trackingEventCopy.pixelId}_${trackingEventCopy.name}`,
136
+ ipAddressUserAgent: `${trackingEventCopy.context?.properties?.ipAddress}_${trackingEventCopy.context?.properties?.userAgent}`,
119
137
  hostname,
120
- identityId: trackingEvent?.context?.identity?.identityId,
121
- sessionId: trackingEvent?.context?.properties?.sessionId,
122
- collectedAt: trackingEvent.collectedAt,
138
+ identityId: trackingEventCopy?.context?.identity?.identityId,
139
+ sessionId: trackingEventCopy?.context?.properties?.sessionId,
140
+ collectedAt: trackingEventCopy.collectedAt,
123
141
  expiredAt,
124
142
  };
143
+ const trackingEventCompressed = compressJSON(trackingEventCopy);
144
+ if (trackingEventCompressed) {
145
+ trackingEventRecord.trackingEventCompressed = trackingEventCompressed;
146
+ }
147
+ else {
148
+ trackingEventRecord.trackingEvent = trackingEventCopy;
149
+ }
125
150
  return trackingEventRecord;
126
151
  };
127
152
  putTrackingEvent = async (trackingEvent, ttlInDays) => {
@@ -130,8 +155,5 @@ export class TrackingEventsDbService {
130
155
  const trackingEventRecord = this.buildTrackingEventRecord(trackingEvent, ttlInDays);
131
156
  return await DynamoDbClient.safePut(this.TABLE_NAME, trackingEventRecord);
132
157
  };
133
- putBatchTrackingEvents = async (items) => {
134
- await DynamoDbClient.safeBatchPut(this.TABLE_NAME, items);
135
- };
136
158
  }
137
159
  //# sourceMappingURL=tracking-events-db-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-db-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AASjC,MAAM,OAAO,uBAAuB;IAC3B,UAAU,CAAS;IACnB,QAAQ,GAAG,SAAS,CAAC;IAC5B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,oCAAoC,GAAG,KAAK,EAAE,SAAiB,EAAE,kBAA0B,EAAE,QAAiB,EAAsC,EAAE;QAC3J,IAAI;YACF,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,SAAS,EAAE,SAAS;gBACpB,sBAAsB,EAAE,0CAA0C;gBAClE,yBAAyB,EAAE;oBACzB,qBAAqB,EAAE,kBAAkB;iBAC1C;gBACD,gBAAgB,EAAE,KAAK;aACxB,CAAA;YACD,MAAM,OAAO,GAAuB,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAEvE,IAAI,mBAAwB,CAAC;YAC7B,IAAI,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC9C,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;oBACrD,MAAM,cAAc,GAAkB,IAAI,CAAC,aAAa,CAAC;oBACzD,MAAM,SAAS,GAAW,IAAI,EAAE,QAAQ,CAAC;oBAEzC,IAAI,QAAQ,IAAI,SAAS,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;wBACtI,OAAO,IAAI,CAAC;qBACb;yBAAM,IAAI,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE;wBACvG,OAAO,IAAI,CAAC;qBACb;yBAAM;wBACL,OAAO,KAAK,CAAC;qBACd;gBACH,CAAC,CAAC,CAAA;aACH;YAED,IAAI,mBAAmB,EAAE;gBACvB,MAAM,aAAa,GAAkB,mBAAmB,CAAC,aAAa,CAAC;gBACvE,OAAO;oBACL,OAAO,EAAE,aAAa,EAAE,OAAO;oBAC/B,UAAU,EAAE,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU;oBACvD,SAAS,EAAE,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;oBACvD,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK;iBAChD,CAAA;aACF;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1E,OAAO,EAAE,CAAC;SACX;IACH,CAAC,CAAA;IAEM,mCAAmC,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAc,EAAE,gBAAyB,EAAkC,EAAE;QACtL,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,sCAAsC;YAC9D,yBAAyB,EAAE;gBACzB,mBAAmB,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE;aAC/C;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC;QACF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;YAClE,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;SACpE;QAED,MAAM,sBAAsB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,sBAAsB,EAAE,KAA8B,IAAI,EAAE,CAAC;IACtE,CAAC,CAAA;IAEM,8BAA8B,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,eAAe,GAAG,EAAE,EAAmB,EAAE;QAC1H,IAAI;YACF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,KAAK,EAAY,CAAC;YAE1F,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,SAAS,EAAE,SAAS;gBACpB,sBAAsB,EAAE,mDAAmD;gBAC3E,yBAAyB,EAAE;oBACzB,UAAU,EAAE,OAAO;oBACnB,cAAc,EAAE,YAAY;iBAC7B;aACF,CAAA;YACD,MAAM,OAAO,GAAuB,MAAM,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvE,OAAO,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC;SACV;IACH,CAAC,CAAA;IAEM,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,EAAE;QAClD,IAAI;YACF,MAAM,WAAW,GAAwB,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAwB,CAAC;YACtI,OAAO,WAAW,CAAC;SACpB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAA;IAEM,wBAAwB,GAAG,CAAC,aAA4B,EAAE,SAAkB,EAAE,EAAE;QACrF,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAa,CAAC;QACxE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,aAAa,EAAE,QAAQ,CAAC;QACzC,MAAM,0BAA0B,GAAG,SAAS,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QACxF,MAAM,mBAAmB,GAAwB;YAC/C,OAAO,EAAE,aAAa,CAAC,EAAE;YACzB,SAAS,EAAE,aAAa,CAAC,IAAI;YAC7B,aAAa;YACb,OAAO,EAAE,aAAa,EAAE,OAAO;YAC/B,gBAAgB,EAAE,GAAG,aAAa,CAAC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE;YAClE,kBAAkB,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;YACrH,QAAQ;YACR,UAAU,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAoB;YAClE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,SAAmB;YAClE,WAAW,EAAE,aAAa,CAAC,WAAqB;YAChD,SAAS;SACV,CAAA;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAA;IAEM,gBAAgB,GAAG,KAAK,EAAE,aAA4B,EAAE,SAAkB,EAAE,EAAE;QACnF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;YAAE,OAAO;QAC3G,MAAM,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACpF,OAAO,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC5E,CAAC,CAAA;IAEM,sBAAsB,GAAG,KAAK,EAAE,KAA4B,EAAE,EAAE;QACrE,MAAM,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAA;CACF"}
1
+ {"version":3,"file":"tracking-events-db-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-db-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtrackify/at-service-common",
3
- "version": "3.0.35",
3
+ "version": "3.0.37",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"
@@ -9,8 +9,8 @@
9
9
  "module": "./dist/esm/index.js",
10
10
  "type": "module",
11
11
  "engines": {
12
- "npm": ">=8.0.0 <10.4.0",
13
- "node": ">=16.0.0 <20.11.0"
12
+ "node": "20.x",
13
+ "npm": "10.x"
14
14
  },
15
15
  "scripts": {
16
16
  "clean": "rimraf dist",
@@ -35,7 +35,8 @@
35
35
  "prepublishOnly": "npm run tsc"
36
36
  },
37
37
  "dependencies": {
38
- "@adtrackify/at-shared-utils": "^3.0.24",
38
+ "@adtrackify/at-shared-utils": "^3.0.25",
39
+ "pako": "^2.1.0",
39
40
  "shopify-api-node": "^3.12.7"
40
41
  },
41
42
  "peerDependencies": {
@@ -50,7 +51,7 @@
50
51
  "uuid": "^9.0.0"
51
52
  },
52
53
  "devDependencies": {
53
- "@adtrackify/at-tracking-event-types": "^3.0.69",
54
+ "@adtrackify/at-tracking-event-types": "^3.0.79",
54
55
  "@aws-sdk/client-cognito-identity-provider": "^3.345.0",
55
56
  "@aws-sdk/client-dynamodb": "^3.345.0",
56
57
  "@aws-sdk/client-eventbridge": "^3.345.0",
@@ -65,6 +66,7 @@
65
66
  "@types/lambda-log": "^3.0.0",
66
67
  "@types/luxon": "^3.0.1",
67
68
  "@types/node": "^17.0.8",
69
+ "@types/pako": "^2.0.3",
68
70
  "@types/ua-parser-js": "^0.7.36",
69
71
  "@types/uuid": "^8.3.4",
70
72
  "@typescript-eslint/eslint-plugin": "^5.37.0",
@@ -1,6 +0,0 @@
1
- import { LogEventRecord } from '@adtrackify/at-tracking-event-types';
2
- export declare class LogEventsDataService {
3
- TABLE_NAME: string;
4
- constructor(tableName: string);
5
- getLogEventsByDestinationId: (indexName: string, destinationId: string, limit?: number, afterCollectedAt?: string) => Promise<LogEventRecord[]>;
6
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogEventsDataService = void 0;
4
- const clients_1 = require("../../clients");
5
- class LogEventsDataService {
6
- TABLE_NAME;
7
- constructor(tableName) {
8
- this.TABLE_NAME = tableName;
9
- }
10
- getLogEventsByDestinationId = async (indexName, destinationId, limit, afterCollectedAt) => {
11
- const query = {
12
- TableName: this.TABLE_NAME,
13
- IndexName: indexName,
14
- KeyConditionExpression: 'destinationId = :destinationId',
15
- ExpressionAttributeValues: {
16
- ':destinationId': destinationId,
17
- },
18
- ScanIndexForward: false,
19
- };
20
- if (limit) {
21
- query.Limit = limit;
22
- }
23
- if (afterCollectedAt) {
24
- query.KeyConditionExpression += ' and collectedAt > :collectedAt';
25
- query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
26
- }
27
- const logEventsResponse = await clients_1.DynamoDbClient.query(query);
28
- return logEventsResponse?.Items ?? [];
29
- };
30
- }
31
- exports.LogEventsDataService = LogEventsDataService;
32
- //# sourceMappingURL=log-events-data-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/log-events-data-service.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,MAAa,oBAAoB;IACxB,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,2BAA2B,GAAG,KAAK,EAAE,SAAiB,EAAE,aAAqB,EAAE,KAAc,EAAE,gBAAyB,EAA6B,EAAE;QAC5J,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,gCAAgC;YACxD,yBAAyB,EAAE;gBACzB,gBAAgB,EAAE,aAAa;aAChC;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC;QACF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;YAClE,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;SACpE;QAED,MAAM,iBAAiB,GAAG,MAAM,wBAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,iBAAiB,EAAE,KAAyB,IAAI,EAAE,CAAC;IAC5D,CAAC,CAAA;CACF;AA5BD,oDA4BC"}
@@ -1,6 +0,0 @@
1
- import { LogEventRecord } from '@adtrackify/at-tracking-event-types';
2
- export declare class LogEventsDataService {
3
- TABLE_NAME: string;
4
- constructor(tableName: string);
5
- getLogEventsByDestinationId: (indexName: string, destinationId: string, limit?: number, afterCollectedAt?: string) => Promise<LogEventRecord[]>;
6
- }
@@ -1,28 +0,0 @@
1
- import { DynamoDbClient } from '../../clients';
2
- export class LogEventsDataService {
3
- TABLE_NAME;
4
- constructor(tableName) {
5
- this.TABLE_NAME = tableName;
6
- }
7
- getLogEventsByDestinationId = async (indexName, destinationId, limit, afterCollectedAt) => {
8
- const query = {
9
- TableName: this.TABLE_NAME,
10
- IndexName: indexName,
11
- KeyConditionExpression: 'destinationId = :destinationId',
12
- ExpressionAttributeValues: {
13
- ':destinationId': destinationId,
14
- },
15
- ScanIndexForward: false,
16
- };
17
- if (limit) {
18
- query.Limit = limit;
19
- }
20
- if (afterCollectedAt) {
21
- query.KeyConditionExpression += ' and collectedAt > :collectedAt';
22
- query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
23
- }
24
- const logEventsResponse = await DynamoDbClient.query(query);
25
- return logEventsResponse?.Items ?? [];
26
- };
27
- }
28
- //# sourceMappingURL=log-events-data-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"log-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/log-events-data-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,OAAO,oBAAoB;IACxB,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,2BAA2B,GAAG,KAAK,EAAE,SAAiB,EAAE,aAAqB,EAAE,KAAc,EAAE,gBAAyB,EAA6B,EAAE;QAC5J,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,gCAAgC;YACxD,yBAAyB,EAAE;gBACzB,gBAAgB,EAAE,aAAa;aAChC;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC;QACF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;YAClE,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;SACpE;QAED,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5D,OAAO,iBAAiB,EAAE,KAAyB,IAAI,EAAE,CAAC;IAC5D,CAAC,CAAA;CACF"}