@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.
- package/dist/cjs/__tests__/s3-client/compress-decompress.spec.d.ts +1 -0
- package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js +17 -0
- package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js.map +1 -0
- package/dist/cjs/libs/compression.d.ts +2 -0
- package/dist/cjs/libs/compression.js +34 -0
- package/dist/cjs/libs/compression.js.map +1 -0
- package/dist/cjs/libs/index.d.ts +1 -0
- package/dist/cjs/libs/index.js +1 -0
- package/dist/cjs/libs/index.js.map +1 -1
- package/dist/cjs/services/db/index.d.ts +1 -1
- package/dist/cjs/services/db/index.js +1 -1
- package/dist/cjs/services/db/index.js.map +1 -1
- package/dist/cjs/services/db/log-events-db-service.d.ts +11 -0
- package/dist/cjs/services/db/log-events-db-service.js +172 -0
- package/dist/cjs/services/db/log-events-db-service.js.map +1 -0
- package/dist/cjs/services/db/tracking-events-db-service.d.ts +2 -1
- package/dist/cjs/services/db/tracking-events-db-service.js +39 -17
- package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
- package/dist/esm/__tests__/s3-client/compress-decompress.spec.d.ts +1 -0
- package/dist/esm/__tests__/s3-client/compress-decompress.spec.js +15 -0
- package/dist/esm/__tests__/s3-client/compress-decompress.spec.js.map +1 -0
- package/dist/esm/libs/compression.d.ts +2 -0
- package/dist/esm/libs/compression.js +26 -0
- package/dist/esm/libs/compression.js.map +1 -0
- package/dist/esm/libs/index.d.ts +1 -0
- package/dist/esm/libs/index.js +1 -0
- package/dist/esm/libs/index.js.map +1 -1
- package/dist/esm/services/db/index.d.ts +1 -1
- package/dist/esm/services/db/index.js +1 -1
- package/dist/esm/services/db/index.js.map +1 -1
- package/dist/esm/services/db/log-events-db-service.d.ts +11 -0
- package/dist/esm/services/db/log-events-db-service.js +168 -0
- package/dist/esm/services/db/log-events-db-service.js.map +1 -0
- package/dist/esm/services/db/tracking-events-db-service.d.ts +2 -1
- package/dist/esm/services/db/tracking-events-db-service.js +39 -17
- package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
- package/package.json +7 -5
- package/dist/cjs/services/db/log-events-data-service.d.ts +0 -6
- package/dist/cjs/services/db/log-events-data-service.js +0 -32
- package/dist/cjs/services/db/log-events-data-service.js.map +0 -1
- package/dist/esm/services/db/log-events-data-service.d.ts +0 -6
- package/dist/esm/services/db/log-events-data-service.js +0 -28
- package/dist/esm/services/db/log-events-data-service.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -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,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"}
|
package/dist/cjs/libs/index.d.ts
CHANGED
package/dist/cjs/libs/index.js
CHANGED
|
@@ -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"}
|
|
@@ -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-
|
|
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
|
|
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":";;;AACA,2CAA+C;AAC/C,iCAAiC;AACjC,qCAA4C;AAE5C,MAAa,kBAAkB;IACtB,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,aAAa,GAAG,CAAC,cAA8B,EAAE,EAAE;QAEzD,IAAI,cAAc,EAAE,kBAAkB,EAAE;YAEtC,MAAM,oBAAoB,GAAG,IAAA,qBAAc,EAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;YAC/E,IAAI,oBAAoB,EAAE;gBAExB,cAAc,CAAC,QAAQ,GAAG,oBAAoB,CAAC;gBAE/C,OAAO,cAAc,CAAC,kBAAkB,CAAC;aAC1C;SACF;QAED,MAAM,oBAAoB,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC;QAE/E,MAAM,uBAAuB,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,CAAC;QAErF,MAAM,oBAAoB,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,iBAAiB,CAAC;QAC/E,OAAO;YACL,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,OAAO,EAAE,cAAc,CAAC,OAAO;YAC/B,QAAQ,EAAE,cAAc,CAAC,QAAQ;YACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ;YAEjC,WAAW,EAAE,cAAc,EAAE,WAAW,IAAI,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW;YACvF,aAAa,EAAE,cAAc,EAAE,aAAa;YAE5C,iBAAiB,EAAE,cAAc,EAAE,iBAAiB,IAAI,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS;YAEjG,4BAA4B,EAAE,cAAc,EAAE,4BAA4B,IAAI,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB;YAElI,YAAY,EAAE,cAAc,EAAE,YAAY;YAE1C,SAAS,EAAE,cAAc,EAAE,SAAS,IAAI,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI;YAC5E,YAAY,EAAE,cAAc,EAAE,YAAY,IAAI,IAAI,CAAC,yBAAyB,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,oBAAoB,CAAC;YACjJ,WAAW,EAAE,cAAc,EAAE,WAAW;YACxC,WAAW,EAAE,cAAc,EAAE,WAAW;YACxC,SAAS,EAAE,cAAc,EAAE,SAAS;SACrC,CAAC;IACJ,CAAC,CAAA;IAEO,cAAc,GAAG,CAAC,eAAiC,EAAE,EAAE;QAC7D,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,cAA8B,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;IACrG,CAAC,CAAA;IAEM,2BAA2B,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,aAAqB,EAAE,KAAc,EAAE,gBAAyB,EAA6B,EAAE;QAC7K,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,gBAAgB,EAAE,gCAAgC;YAClD,sBAAsB,EAAE,oBAAoB;YAC5C,yBAAyB,EAAE;gBACzB,UAAU,EAAE,OAAO;gBACnB,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,MAAM,GAAG,MAAM,wBAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAqB,CAAC;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAA;IAEM,iBAAiB,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,QAAgB,EAAE,YAAuB,EAAE,OAAkB,EAAE,UAAqB,EAA6B,EAAE;QACvL,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QACjF,IAAI,WAAW,GAAG,EAAE,CAAA;QACpB,MAAM,yBAAyB,GAAqB,EAAE,CAAC;QAEvD,IAAI,YAAY,EAAE;YAChB,WAAW,IAAI,oCAAoC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACnI,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;gBAC1C,yBAAyB,CAAC,eAAe,KAAK,EAAE,CAAC,GAAG,WAAW,CAAA;YACjE,CAAC,CAAC,CAAA;SACH;QAED,IAAI,QAAQ,EAAE;YACZ,WAAW,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAA;YAChF,yBAAyB,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAA;SAClD;QAED,IAAI,OAAO,EAAE;YACX,WAAW,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,gBAAgB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YACpI,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAChC,yBAAyB,CAAC,UAAU,KAAK,EAAE,CAAC,GAAG,MAAM,CAAA;YACvD,CAAC,CAAC,CAAA;SACH;QAED,IAAI,UAAU,EAAE;YACd,WAAW,IAAI,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,mCAAmC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YAC7J,UAAU,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;gBACtC,yBAAyB,CAAC,aAAa,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;YAC7D,CAAC,CAAC,CAAA;SACH;QAED,MAAM,MAAM,GAAqB;YAC/B,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,oDAAoD;YAC5E,gBAAgB,EAAE,WAAW;YAC7B,yBAAyB,EAAE;gBACzB,UAAU,EAAE,OAAO;gBACnB,cAAc,EAAE,SAAS;gBACzB,GAAG,yBAAyB;aAC7B;YACD,gBAAgB,EAAE,KAAK;YACvB,KAAK,EAAE,GAAG;SACX,CAAC;QAEF,IAAI,yBAAyB,CAAC,eAAe,CAAC,EAAE;YAC9C,MAAM,CAAC,0BAA0B,CAAC,GAAG;gBACnC,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,cAAc,EAAE,aAAa;aAC9B,CAAA;SACF;QAED,IAAI,yBAAyB,CAAC,UAAU,CAAC,EAAE;YACzC,MAAM,CAAC,0BAA0B,CAAC,GAAG;gBACnC,GAAG,MAAM,CAAC,0BAA0B,CAAC;gBACrC,SAAS,EAAE,QAAQ;aACpB,CAAA;SACF;QAED,IAAI,yBAAyB,CAAC,aAAa,CAAC,EAAE;YAC5C,MAAM,CAAC,0BAA0B,CAAC,GAAG;gBACnC,GAAG,MAAM,CAAC,0BAA0B,CAAC;gBACrC,WAAW,EAAE,UAAU;gBACvB,OAAO,EAAE,MAAM;gBACf,YAAY,EAAE,WAAW;aAC1B,CAAA;SACF;QAED,MAAM,MAAM,GAAG,MAAM,wBAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAqB,CAAC;QAClE,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;IAC9C,CAAC,CAAA;IAEM,WAAW,GAAG,KAAK,EAAE,QAAkB,EAAE,QAAgB,EAAE,YAAqB,EAAE,EAAE;QACzF,MAAM,YAAY,GAAa,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,OAAO,YAAY,EAAE,IAAI,EAAE,UAAU,CAAC;QAEtC,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC;QAEnF,MAAM,cAAc,GAAmB;YACrC,OAAO,EAAE,YAAY,CAAC,EAAE;YACxB,SAAS,EAAE,YAAY,CAAC,IAAI;YAC5B,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE;YACvC,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;YACzC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ;YACpC,QAAQ;YACR,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW;YAC5C,aAAa,EAAE,YAAY,CAAC,IAAI,EAAE,aAAa;YAC/C,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS;YAChD,4BAA4B,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB;YACtE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY;YAC9C,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS;YACxC,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,CAAC;YAC7K,WAAW,EAAE,YAAY,EAAE,WAAW;YACtC,SAAS;SACV,CAAC;QACF,OAAO,MAAM,wBAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACvE,CAAC,CAAA;IAEO,yBAAyB,GAAG,CAAC,oBAA4B,EAAE,uBAA+B,EAAE,oBAA4B,EAAU,EAAE;QAC1I,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,oBAAoB,EAAE;YACxB,YAAY,IAAI,oBAAoB,CAAC;SACtC;QACD,IAAI,uBAAuB,EAAE;YAC3B,YAAY,IAAI,IAAI,uBAAuB,EAAE,CAAC;SAC/C;QACD,IAAI,oBAAoB,EAAE;YACxB,YAAY,IAAI,UAAU,oBAAoB,EAAE,CAAC;SAClD;QACD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAA;CACF;AAlMD,gDAkMC"}
|
|
@@ -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
|
|
77
|
-
|
|
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
|
-
|
|
102
|
-
|
|
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
|
|
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:
|
|
117
|
-
eventName:
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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:
|
|
124
|
-
sessionId:
|
|
125
|
-
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":";;;AACA,2CAA+C;AAC/C,2CAAuC;AAEvC,iCAAiC;
|
|
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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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,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"}
|
package/dist/esm/libs/index.d.ts
CHANGED
package/dist/esm/libs/index.js
CHANGED
|
@@ -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,5 +1,5 @@
|
|
|
1
1
|
export * from './destinations-service.js';
|
|
2
|
-
export * from './log-events-
|
|
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,
|
|
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
|
|
74
|
-
|
|
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
|
-
|
|
99
|
-
|
|
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
|
|
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:
|
|
114
|
-
eventName:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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:
|
|
121
|
-
sessionId:
|
|
122
|
-
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;
|
|
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;AACjC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS1D,MAAM,OAAO,uBAAuB;IAC3B,UAAU,CAAS;IACnB,QAAQ,GAAG,SAAS,CAAC;IAE5B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEO,aAAa,GAAG,CAAC,mBAAwC,EAAE,EAAE;QACnE,IAAI,mBAAmB,EAAE,uBAAuB,EAAE;YAChD,MAAM,yBAAyB,GAAG,cAAc,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;YAC9F,IAAI,yBAAyB,EAAE;gBAC7B,mBAAmB,CAAC,aAAa,GAAG,yBAAyB,CAAC;gBAC9D,OAAO,mBAAmB,EAAE,uBAAuB,CAAC;aACrD;SACF;QACD,OAAO,mBAAmB,CAAC;IAC7B,CAAC,CAAA;IAEO,cAAc,GAAG,CAAC,oBAA2C,EAAE,EAAE;QACvE,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC,mBAAwC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzH,CAAC,CAAA;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,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;gBAC9D,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,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE,CAA0B,CAAC;QAC5E,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACnD,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,IAAI,mBAAmB,GAAwB,MAAM,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAwB,CAAC;YAC5I,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YAC9D,OAAO,mBAAmB,CAAC;SAC5B;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,iBAAiB,GAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACnF,OAAO,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAC;QAE5E,MAAM,OAAO,GAAG,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAa,CAAC;QAC5E,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;QAExF,MAAM,mBAAmB,GAAwB;YAC/C,OAAO,EAAE,iBAAiB,CAAC,EAAE;YAC7B,SAAS,EAAE,iBAAiB,CAAC,IAAI;YACjC,OAAO,EAAE,iBAAiB,EAAE,OAAO;YACnC,gBAAgB,EAAE,GAAG,iBAAiB,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,EAAE;YAC1E,kBAAkB,EAAE,GAAG,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;YAC7H,QAAQ;YACR,UAAU,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAoB;YACtE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,SAAmB;YACtE,WAAW,EAAE,iBAAiB,CAAC,WAAqB;YACpD,SAAS;SACV,CAAA;QAED,MAAM,uBAAuB,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAChE,IAAI,uBAAuB,EAAE;YAC3B,mBAAmB,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;SACvE;aACI;YACH,mBAAmB,CAAC,aAAa,GAAG,iBAAiB,CAAC;SACvD;QAED,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;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@adtrackify/at-service-common",
|
|
3
|
-
"version": "3.0.
|
|
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
|
-
"
|
|
13
|
-
"
|
|
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.
|
|
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.
|
|
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"}
|