@adtrackify/at-service-common 3.0.27 → 3.0.28

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 (199) hide show
  1. package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  2. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +26 -26
  3. package/dist/cjs/clients/generic/cognito-client.d.ts +20 -20
  4. package/dist/cjs/clients/generic/cognito-client.js +164 -164
  5. package/dist/cjs/clients/generic/dynamodb-client.d.ts +16 -16
  6. package/dist/cjs/clients/generic/dynamodb-client.js +144 -144
  7. package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
  8. package/dist/cjs/clients/generic/eventbridge-client.js +49 -49
  9. package/dist/cjs/clients/generic/http-client.d.ts +88 -88
  10. package/dist/cjs/clients/generic/http-client.js +56 -56
  11. package/dist/cjs/clients/generic/index.d.ts +6 -6
  12. package/dist/cjs/clients/generic/index.js +22 -22
  13. package/dist/cjs/clients/generic/s3-client.d.ts +16 -16
  14. package/dist/cjs/clients/generic/s3-client.js +110 -110
  15. package/dist/cjs/clients/generic/sqs-client.d.ts +14 -14
  16. package/dist/cjs/clients/generic/sqs-client.js +38 -38
  17. package/dist/cjs/clients/index.d.ts +3 -3
  18. package/dist/cjs/clients/index.js +19 -19
  19. package/dist/cjs/clients/internal-api/accounts-client.d.ts +112 -112
  20. package/dist/cjs/clients/internal-api/accounts-client.js +117 -117
  21. package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
  22. package/dist/cjs/clients/internal-api/db-management-client.js +39 -39
  23. package/dist/cjs/clients/internal-api/destinations-client.d.ts +29 -29
  24. package/dist/cjs/clients/internal-api/destinations-client.js +54 -54
  25. package/dist/cjs/clients/internal-api/event-collector-client.d.ts +20 -20
  26. package/dist/cjs/clients/internal-api/event-collector-client.js +39 -39
  27. package/dist/cjs/clients/internal-api/identity-client.d.ts +17 -17
  28. package/dist/cjs/clients/internal-api/identity-client.js +75 -75
  29. package/dist/cjs/clients/internal-api/index.d.ts +7 -7
  30. package/dist/cjs/clients/internal-api/index.js +23 -23
  31. package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +34 -34
  32. package/dist/cjs/clients/internal-api/shopify-app-install-client.js +63 -63
  33. package/dist/cjs/clients/internal-api/users-auth-client.d.ts +31 -31
  34. package/dist/cjs/clients/internal-api/users-auth-client.js +92 -92
  35. package/dist/cjs/clients/third-party/index.d.ts +1 -1
  36. package/dist/cjs/clients/third-party/index.js +17 -17
  37. package/dist/cjs/clients/third-party/shopify-client.d.ts +198 -198
  38. package/dist/cjs/clients/third-party/shopify-client.js +150 -150
  39. package/dist/cjs/helpers/index.d.ts +4 -4
  40. package/dist/cjs/helpers/index.js +20 -20
  41. package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
  42. package/dist/cjs/helpers/input-validation-helper.js +23 -23
  43. package/dist/cjs/helpers/logging-helper.d.ts +15 -15
  44. package/dist/cjs/helpers/logging-helper.js +80 -80
  45. package/dist/cjs/helpers/response-helper.d.ts +15 -15
  46. package/dist/cjs/helpers/response-helper.js +42 -42
  47. package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
  48. package/dist/cjs/helpers/shopify-helper.js +28 -28
  49. package/dist/cjs/index.d.ts +5 -5
  50. package/dist/cjs/index.js +21 -21
  51. package/dist/cjs/libs/clickId-parser.d.ts +23 -23
  52. package/dist/cjs/libs/clickId-parser.js +49 -49
  53. package/dist/cjs/libs/crypto.d.ts +1 -1
  54. package/dist/cjs/libs/crypto.js +12 -12
  55. package/dist/cjs/libs/dates.d.ts +6 -6
  56. package/dist/cjs/libs/dates.js +31 -31
  57. package/dist/cjs/libs/http-error.d.ts +21 -21
  58. package/dist/cjs/libs/http-error.js +59 -59
  59. package/dist/cjs/libs/http-status-codes.d.ts +58 -58
  60. package/dist/cjs/libs/http-status-codes.js +62 -62
  61. package/dist/cjs/libs/index.d.ts +8 -8
  62. package/dist/cjs/libs/index.js +24 -24
  63. package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
  64. package/dist/cjs/libs/referrer-parser/index.js +18 -18
  65. package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
  66. package/dist/cjs/libs/referrer-parser/referrer-data.js +4712 -4712
  67. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  68. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +128 -128
  69. package/dist/cjs/libs/url.d.ts +1 -1
  70. package/dist/cjs/libs/url.js +13 -13
  71. package/dist/cjs/services/db/destinations-service.d.ts +7 -7
  72. package/dist/cjs/services/db/destinations-service.js +35 -35
  73. package/dist/cjs/services/db/index.d.ts +4 -4
  74. package/dist/cjs/services/db/index.js +20 -20
  75. package/dist/cjs/services/db/log-events-data-service.d.ts +6 -6
  76. package/dist/cjs/services/db/log-events-data-service.js +31 -31
  77. package/dist/cjs/services/db/purchased-contacts-db-service.d.ts +9 -9
  78. package/dist/cjs/services/db/purchased-contacts-db-service.js +38 -38
  79. package/dist/cjs/services/db/tracking-events-db-service.d.ts +17 -15
  80. package/dist/cjs/services/db/tracking-events-db-service.js +134 -123
  81. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  82. package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
  83. package/dist/cjs/services/eventbridge-integration-service.js +28 -28
  84. package/dist/cjs/services/index.d.ts +5 -5
  85. package/dist/cjs/services/index.js +21 -21
  86. package/dist/cjs/services/ipdata-lookup-service.d.ts +8 -8
  87. package/dist/cjs/services/ipdata-lookup-service.js +59 -59
  88. package/dist/cjs/services/log-event-service.d.ts +9 -9
  89. package/dist/cjs/services/log-event-service.js +56 -56
  90. package/dist/cjs/services/metric-event-service.d.ts +9 -9
  91. package/dist/cjs/services/metric-event-service.js +49 -49
  92. package/dist/cjs/types/api-response.d.ts +6 -6
  93. package/dist/cjs/types/api-response.js +2 -2
  94. package/dist/cjs/types/index.d.ts +1 -1
  95. package/dist/cjs/types/index.js +17 -17
  96. package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
  97. package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
  98. package/dist/cjs/types/internal-events/index.d.ts +1 -1
  99. package/dist/cjs/types/internal-events/index.js +17 -17
  100. package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  101. package/dist/esm/__tests__/s3-client/s3-client.spec.js +24 -24
  102. package/dist/esm/clients/generic/cognito-client.d.ts +20 -20
  103. package/dist/esm/clients/generic/cognito-client.js +159 -159
  104. package/dist/esm/clients/generic/dynamodb-client.d.ts +16 -16
  105. package/dist/esm/clients/generic/dynamodb-client.js +140 -140
  106. package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
  107. package/dist/esm/clients/generic/eventbridge-client.js +45 -45
  108. package/dist/esm/clients/generic/http-client.d.ts +88 -88
  109. package/dist/esm/clients/generic/http-client.js +48 -48
  110. package/dist/esm/clients/generic/index.d.ts +6 -6
  111. package/dist/esm/clients/generic/index.js +6 -6
  112. package/dist/esm/clients/generic/s3-client.d.ts +16 -16
  113. package/dist/esm/clients/generic/s3-client.js +106 -106
  114. package/dist/esm/clients/generic/sqs-client.d.ts +14 -14
  115. package/dist/esm/clients/generic/sqs-client.js +34 -34
  116. package/dist/esm/clients/index.d.ts +3 -3
  117. package/dist/esm/clients/index.js +3 -3
  118. package/dist/esm/clients/internal-api/accounts-client.d.ts +112 -112
  119. package/dist/esm/clients/internal-api/accounts-client.js +113 -113
  120. package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
  121. package/dist/esm/clients/internal-api/db-management-client.js +32 -32
  122. package/dist/esm/clients/internal-api/destinations-client.d.ts +29 -29
  123. package/dist/esm/clients/internal-api/destinations-client.js +50 -50
  124. package/dist/esm/clients/internal-api/event-collector-client.d.ts +20 -20
  125. package/dist/esm/clients/internal-api/event-collector-client.js +32 -32
  126. package/dist/esm/clients/internal-api/identity-client.d.ts +17 -17
  127. package/dist/esm/clients/internal-api/identity-client.js +71 -71
  128. package/dist/esm/clients/internal-api/index.d.ts +7 -7
  129. package/dist/esm/clients/internal-api/index.js +7 -7
  130. package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +34 -34
  131. package/dist/esm/clients/internal-api/shopify-app-install-client.js +56 -56
  132. package/dist/esm/clients/internal-api/users-auth-client.d.ts +31 -31
  133. package/dist/esm/clients/internal-api/users-auth-client.js +88 -88
  134. package/dist/esm/clients/third-party/index.d.ts +1 -1
  135. package/dist/esm/clients/third-party/index.js +1 -1
  136. package/dist/esm/clients/third-party/shopify-client.d.ts +198 -198
  137. package/dist/esm/clients/third-party/shopify-client.js +146 -146
  138. package/dist/esm/helpers/index.d.ts +4 -4
  139. package/dist/esm/helpers/index.js +4 -4
  140. package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
  141. package/dist/esm/helpers/input-validation-helper.js +19 -19
  142. package/dist/esm/helpers/logging-helper.d.ts +15 -15
  143. package/dist/esm/helpers/logging-helper.js +53 -53
  144. package/dist/esm/helpers/response-helper.d.ts +15 -15
  145. package/dist/esm/helpers/response-helper.js +36 -36
  146. package/dist/esm/helpers/shopify-helper.d.ts +9 -9
  147. package/dist/esm/helpers/shopify-helper.js +23 -23
  148. package/dist/esm/index.d.ts +5 -5
  149. package/dist/esm/index.js +5 -5
  150. package/dist/esm/libs/clickId-parser.d.ts +23 -23
  151. package/dist/esm/libs/clickId-parser.js +45 -45
  152. package/dist/esm/libs/crypto.d.ts +1 -1
  153. package/dist/esm/libs/crypto.js +5 -5
  154. package/dist/esm/libs/dates.d.ts +6 -6
  155. package/dist/esm/libs/dates.js +22 -22
  156. package/dist/esm/libs/http-error.d.ts +21 -21
  157. package/dist/esm/libs/http-error.js +55 -55
  158. package/dist/esm/libs/http-status-codes.d.ts +58 -58
  159. package/dist/esm/libs/http-status-codes.js +59 -59
  160. package/dist/esm/libs/index.d.ts +8 -8
  161. package/dist/esm/libs/index.js +8 -8
  162. package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
  163. package/dist/esm/libs/referrer-parser/index.js +2 -2
  164. package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
  165. package/dist/esm/libs/referrer-parser/referrer-data.js +4709 -4709
  166. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  167. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +121 -121
  168. package/dist/esm/libs/url.d.ts +1 -1
  169. package/dist/esm/libs/url.js +9 -9
  170. package/dist/esm/services/db/destinations-service.d.ts +7 -7
  171. package/dist/esm/services/db/destinations-service.js +31 -31
  172. package/dist/esm/services/db/index.d.ts +4 -4
  173. package/dist/esm/services/db/index.js +4 -4
  174. package/dist/esm/services/db/log-events-data-service.d.ts +6 -6
  175. package/dist/esm/services/db/log-events-data-service.js +27 -27
  176. package/dist/esm/services/db/purchased-contacts-db-service.d.ts +9 -9
  177. package/dist/esm/services/db/purchased-contacts-db-service.js +34 -34
  178. package/dist/esm/services/db/tracking-events-db-service.d.ts +17 -15
  179. package/dist/esm/services/db/tracking-events-db-service.js +130 -119
  180. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  181. package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
  182. package/dist/esm/services/eventbridge-integration-service.js +24 -24
  183. package/dist/esm/services/index.d.ts +5 -5
  184. package/dist/esm/services/index.js +5 -5
  185. package/dist/esm/services/ipdata-lookup-service.d.ts +8 -8
  186. package/dist/esm/services/ipdata-lookup-service.js +55 -55
  187. package/dist/esm/services/log-event-service.d.ts +9 -9
  188. package/dist/esm/services/log-event-service.js +52 -52
  189. package/dist/esm/services/metric-event-service.d.ts +9 -9
  190. package/dist/esm/services/metric-event-service.js +45 -45
  191. package/dist/esm/types/api-response.d.ts +6 -6
  192. package/dist/esm/types/api-response.js +1 -1
  193. package/dist/esm/types/index.d.ts +1 -1
  194. package/dist/esm/types/index.js +1 -1
  195. package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
  196. package/dist/esm/types/internal-events/event-detail-types.js +24 -24
  197. package/dist/esm/types/internal-events/index.d.ts +1 -1
  198. package/dist/esm/types/internal-events/index.js +1 -1
  199. package/package.json +1 -1
@@ -1,15 +1,17 @@
1
- import { AdClickInfo, TrackingEvent, TrackingEventRecord } from '@adtrackify/at-tracking-event-types';
2
- export interface LatestSessionResponseData {
3
- pixelId?: string;
4
- identityId?: string;
5
- sessionId?: string;
6
- click?: AdClickInfo;
7
- }
8
- export declare class TrackingEventsDbService {
9
- TABLE_NAME: string;
10
- constructor(tableName: string);
11
- getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
12
- getTrackingEventsByPixelIdEventName: (indexName: string, pixelId: string, eventName: string, limit?: number, afterCollectedAt?: string) => Promise<TrackingEventRecord[]>;
13
- getTrackingEventCountByPixelId: (indexName: string, pixelId: string, offsetInMinutes?: number) => Promise<number>;
14
- putTrackingEvent: (trackingEvent: TrackingEvent, ttlInDays?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null | undefined>;
15
- }
1
+ import { AdClickInfo, TrackingEvent, TrackingEventRecord } from '@adtrackify/at-tracking-event-types';
2
+ export interface LatestSessionResponseData {
3
+ pixelId?: string;
4
+ identityId?: string;
5
+ sessionId?: string;
6
+ click?: AdClickInfo;
7
+ }
8
+ export declare class TrackingEventsDbService {
9
+ TABLE_NAME: string;
10
+ KEY_NAME: string;
11
+ constructor(tableName: string);
12
+ getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
13
+ getTrackingEventsByPixelIdEventName: (indexName: string, pixelId: string, eventName: string, limit?: number, afterCollectedAt?: string) => Promise<TrackingEventRecord[]>;
14
+ getTrackingEventCountByPixelId: (indexName: string, pixelId: string, offsetInMinutes?: number) => Promise<number>;
15
+ getTrackingEvent: (eventId: string) => Promise<TrackingEventRecord | null>;
16
+ putTrackingEvent: (trackingEvent: TrackingEvent, ttlInDays?: number) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null | undefined>;
17
+ }
@@ -1,124 +1,135 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TrackingEventsDbService = void 0;
4
- const clients_1 = require("../../clients");
5
- const helpers_1 = require("../../helpers");
6
- const luxon_1 = require("luxon");
7
- class TrackingEventsDbService {
8
- TABLE_NAME;
9
- constructor(tableName) {
10
- this.TABLE_NAME = tableName;
11
- }
12
- getLatestSessionByIpAddressUserAgent = async (indexName, ipAddressUserAgent, hostname) => {
13
- try {
14
- const params = {
15
- TableName: this.TABLE_NAME,
16
- IndexName: indexName,
17
- KeyConditionExpression: 'ipAddressUserAgent = :ipAddressUserAgent',
18
- ExpressionAttributeValues: {
19
- ':ipAddressUserAgent': ipAddressUserAgent,
20
- },
21
- ScanIndexForward: false
22
- };
23
- const results = await clients_1.DynamoDbClient.query(params);
24
- let trackingEventRecord;
25
- if (results?.Items && results.Items.length > 0) {
26
- trackingEventRecord = results.Items.find((item) => {
27
- const _trackingEvent = item.trackingEvent;
28
- const _hostname = item?.hostname;
29
- if (hostname && _hostname === hostname && _trackingEvent.context?.identity?.identityId && _trackingEvent.context.properties?.sessionId) {
30
- return true;
31
- }
32
- else if (_trackingEvent.context?.identity?.identityId && _trackingEvent.context.properties?.sessionId) {
33
- return true;
34
- }
35
- else {
36
- return false;
37
- }
38
- });
39
- }
40
- if (trackingEventRecord) {
41
- const trackingEvent = trackingEventRecord.trackingEvent;
42
- return {
43
- pixelId: trackingEvent?.pixelId,
44
- identityId: trackingEvent.context?.identity?.identityId,
45
- sessionId: trackingEvent.context?.properties?.sessionId,
46
- click: trackingEvent.context?.properties?.click
47
- };
48
- }
49
- else {
50
- return {};
51
- }
52
- }
53
- catch (e) {
54
- helpers_1.Logger.error('Failed to getLastTrackingEventByIpAddressUserAgent', { e });
55
- return {};
56
- }
57
- };
58
- getTrackingEventsByPixelIdEventName = async (indexName, pixelId, eventName, limit, afterCollectedAt) => {
59
- const query = {
60
- TableName: this.TABLE_NAME,
61
- IndexName: indexName,
62
- KeyConditionExpression: 'pixelIdEventName = :pixelIdEventName',
63
- ExpressionAttributeValues: {
64
- ':pixelIdEventName': `${pixelId}_${eventName}`,
65
- },
66
- ScanIndexForward: false,
67
- };
68
- if (limit) {
69
- query.Limit = limit;
70
- }
71
- if (afterCollectedAt) {
72
- query.KeyConditionExpression += ' and collectedAt > :collectedAt';
73
- query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
74
- }
75
- const trackingEventsResponse = await clients_1.DynamoDbClient.query(query);
76
- return trackingEventsResponse?.Items ?? [];
77
- };
78
- getTrackingEventCountByPixelId = async (indexName, pixelId, offsetInMinutes = 30) => {
79
- try {
80
- const pastDateTime = luxon_1.DateTime.now().minus({ minutes: offsetInMinutes }).toISO();
81
- const params = {
82
- TableName: this.TABLE_NAME,
83
- IndexName: indexName,
84
- KeyConditionExpression: 'pixelId = :pixelId and collectedAt > :collectedAt',
85
- ExpressionAttributeValues: {
86
- ':pixelId': pixelId,
87
- ':collectedAt': pastDateTime
88
- }
89
- };
90
- const results = await clients_1.DynamoDbClient.query(params);
91
- return results?.Items?.length ?? 0;
92
- }
93
- catch (e) {
94
- helpers_1.Logger.error('Failed to getTrackingEventCountByPixelId', { e });
95
- return 0;
96
- }
97
- };
98
- putTrackingEvent = async (trackingEvent, ttlInDays) => {
99
- if (!trackingEvent.context?.properties?.ipAddress || !trackingEvent.context?.properties?.userAgent)
100
- return;
101
- const pageURL = trackingEvent?.context?.properties?.page?.url;
102
- const parsedPageURL = new URL(pageURL);
103
- const hostname = parsedPageURL?.hostname;
104
- const trackingEventsTableTTLDays = ttlInDays || 15;
105
- const expiredAt = luxon_1.DateTime.now().plus({ days: trackingEventsTableTTLDays }).toSeconds();
106
- const trackingEventRecord = {
107
- eventId: trackingEvent.id,
108
- eventName: trackingEvent.name,
109
- trackingEvent,
110
- pixelId: trackingEvent?.pixelId,
111
- pixelIdEventName: `${trackingEvent.pixelId}_${trackingEvent.name}`,
112
- ipAddressUserAgent: `${trackingEvent.context?.properties?.ipAddress}_${trackingEvent.context?.properties?.userAgent}`,
113
- hostname,
114
- identityId: trackingEvent?.context?.identity?.identityId,
115
- sessionId: trackingEvent?.context?.properties?.sessionId,
116
- collectedAt: trackingEvent.collectedAt,
117
- expiredAt,
118
- };
119
- helpers_1.Logger.debug('Put tracking event', { trackingEventRecord, expiredAtType: typeof expiredAt });
120
- return await clients_1.DynamoDbClient.safePut(this.TABLE_NAME, trackingEventRecord);
121
- };
122
- }
123
- exports.TrackingEventsDbService = TrackingEventsDbService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrackingEventsDbService = void 0;
4
+ const clients_1 = require("../../clients");
5
+ const helpers_1 = require("../../helpers");
6
+ const luxon_1 = require("luxon");
7
+ class TrackingEventsDbService {
8
+ TABLE_NAME;
9
+ KEY_NAME = 'eventId';
10
+ constructor(tableName) {
11
+ this.TABLE_NAME = tableName;
12
+ }
13
+ getLatestSessionByIpAddressUserAgent = async (indexName, ipAddressUserAgent, hostname) => {
14
+ try {
15
+ const params = {
16
+ TableName: this.TABLE_NAME,
17
+ IndexName: indexName,
18
+ KeyConditionExpression: 'ipAddressUserAgent = :ipAddressUserAgent',
19
+ ExpressionAttributeValues: {
20
+ ':ipAddressUserAgent': ipAddressUserAgent,
21
+ },
22
+ ScanIndexForward: false
23
+ };
24
+ const results = await clients_1.DynamoDbClient.query(params);
25
+ let trackingEventRecord;
26
+ if (results?.Items && results.Items.length > 0) {
27
+ trackingEventRecord = results.Items.find((item) => {
28
+ const _trackingEvent = item.trackingEvent;
29
+ const _hostname = item?.hostname;
30
+ if (hostname && _hostname === hostname && _trackingEvent.context?.identity?.identityId && _trackingEvent.context.properties?.sessionId) {
31
+ return true;
32
+ }
33
+ else if (_trackingEvent.context?.identity?.identityId && _trackingEvent.context.properties?.sessionId) {
34
+ return true;
35
+ }
36
+ else {
37
+ return false;
38
+ }
39
+ });
40
+ }
41
+ if (trackingEventRecord) {
42
+ const trackingEvent = trackingEventRecord.trackingEvent;
43
+ return {
44
+ pixelId: trackingEvent?.pixelId,
45
+ identityId: trackingEvent.context?.identity?.identityId,
46
+ sessionId: trackingEvent.context?.properties?.sessionId,
47
+ click: trackingEvent.context?.properties?.click
48
+ };
49
+ }
50
+ else {
51
+ return {};
52
+ }
53
+ }
54
+ catch (e) {
55
+ helpers_1.Logger.error('Failed to getLastTrackingEventByIpAddressUserAgent', { e });
56
+ return {};
57
+ }
58
+ };
59
+ getTrackingEventsByPixelIdEventName = async (indexName, pixelId, eventName, limit, afterCollectedAt) => {
60
+ const query = {
61
+ TableName: this.TABLE_NAME,
62
+ IndexName: indexName,
63
+ KeyConditionExpression: 'pixelIdEventName = :pixelIdEventName',
64
+ ExpressionAttributeValues: {
65
+ ':pixelIdEventName': `${pixelId}_${eventName}`,
66
+ },
67
+ ScanIndexForward: false,
68
+ };
69
+ if (limit) {
70
+ query.Limit = limit;
71
+ }
72
+ if (afterCollectedAt) {
73
+ query.KeyConditionExpression += ' and collectedAt > :collectedAt';
74
+ query.ExpressionAttributeValues[':collectedAt'] = afterCollectedAt;
75
+ }
76
+ const trackingEventsResponse = await clients_1.DynamoDbClient.query(query);
77
+ return trackingEventsResponse?.Items ?? [];
78
+ };
79
+ getTrackingEventCountByPixelId = async (indexName, pixelId, offsetInMinutes = 30) => {
80
+ try {
81
+ const pastDateTime = luxon_1.DateTime.now().minus({ minutes: offsetInMinutes }).toISO();
82
+ const params = {
83
+ TableName: this.TABLE_NAME,
84
+ IndexName: indexName,
85
+ KeyConditionExpression: 'pixelId = :pixelId and collectedAt > :collectedAt',
86
+ ExpressionAttributeValues: {
87
+ ':pixelId': pixelId,
88
+ ':collectedAt': pastDateTime
89
+ }
90
+ };
91
+ const results = await clients_1.DynamoDbClient.query(params);
92
+ return results?.Items?.length ?? 0;
93
+ }
94
+ catch (e) {
95
+ helpers_1.Logger.error('Failed to getTrackingEventCountByPixelId', { e });
96
+ return 0;
97
+ }
98
+ };
99
+ getTrackingEvent = async (eventId) => {
100
+ try {
101
+ const eventRecord = await clients_1.DynamoDbClient.safeGet(this.TABLE_NAME, this.KEY_NAME, eventId);
102
+ return eventRecord;
103
+ }
104
+ catch (e) {
105
+ helpers_1.Logger.error('Failed to getTrackingEvent', { e });
106
+ return null;
107
+ }
108
+ };
109
+ putTrackingEvent = async (trackingEvent, ttlInDays) => {
110
+ if (!trackingEvent.context?.properties?.ipAddress || !trackingEvent.context?.properties?.userAgent)
111
+ return;
112
+ const pageURL = trackingEvent?.context?.properties?.page?.url;
113
+ const parsedPageURL = new URL(pageURL);
114
+ const hostname = parsedPageURL?.hostname;
115
+ const trackingEventsTableTTLDays = ttlInDays || 15;
116
+ const expiredAt = luxon_1.DateTime.now().plus({ days: trackingEventsTableTTLDays }).toSeconds();
117
+ const trackingEventRecord = {
118
+ eventId: trackingEvent.id,
119
+ eventName: trackingEvent.name,
120
+ trackingEvent,
121
+ pixelId: trackingEvent?.pixelId,
122
+ pixelIdEventName: `${trackingEvent.pixelId}_${trackingEvent.name}`,
123
+ ipAddressUserAgent: `${trackingEvent.context?.properties?.ipAddress}_${trackingEvent.context?.properties?.userAgent}`,
124
+ hostname,
125
+ identityId: trackingEvent?.context?.identity?.identityId,
126
+ sessionId: trackingEvent?.context?.properties?.sessionId,
127
+ collectedAt: trackingEvent.collectedAt,
128
+ expiredAt,
129
+ };
130
+ helpers_1.Logger.debug('Put tracking event', { trackingEventRecord, expiredAtType: typeof expiredAt });
131
+ return await clients_1.DynamoDbClient.safePut(this.TABLE_NAME, trackingEventRecord);
132
+ };
133
+ }
134
+ exports.TrackingEventsDbService = TrackingEventsDbService;
124
135
  //# 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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"}
@@ -1,9 +1,9 @@
1
- import { EventBridgeClient } from '../clients/generic/eventbridge-client.js';
2
- import { Message, TemplatedMessage } from 'postmark';
3
- export declare class EventBridgeIntegrationService {
4
- eventBridgeClient: EventBridgeClient;
5
- EVENT_BUS_NAME: string;
6
- constructor(eventBusName: string);
7
- sendPostmarkEmailEvent: (eventSource: string, postmarkMessage: Message, postmarkServerToken: string) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
8
- sendPostmarkTemplatedEmailEvent: (eventSource: string, postmarkMessage: TemplatedMessage, postmarkServerToken: string) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
9
- }
1
+ import { EventBridgeClient } from '../clients/generic/eventbridge-client.js';
2
+ import { Message, TemplatedMessage } from 'postmark';
3
+ export declare class EventBridgeIntegrationService {
4
+ eventBridgeClient: EventBridgeClient;
5
+ EVENT_BUS_NAME: string;
6
+ constructor(eventBusName: string);
7
+ sendPostmarkEmailEvent: (eventSource: string, postmarkMessage: Message, postmarkServerToken: string) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
8
+ sendPostmarkTemplatedEmailEvent: (eventSource: string, postmarkMessage: TemplatedMessage, postmarkServerToken: string) => Promise<import("@aws-sdk/client-eventbridge").PutEventsCommandOutput>;
9
+ }
@@ -1,29 +1,29 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EventBridgeIntegrationService = void 0;
4
- const eventbridge_client_js_1 = require("../clients/generic/eventbridge-client.js");
5
- const event_detail_types_js_1 = require("../types/internal-events/event-detail-types.js");
6
- class EventBridgeIntegrationService {
7
- eventBridgeClient;
8
- EVENT_BUS_NAME;
9
- constructor(eventBusName) {
10
- this.eventBridgeClient = new eventbridge_client_js_1.EventBridgeClient(eventBusName);
11
- this.EVENT_BUS_NAME = eventBusName;
12
- }
13
- sendPostmarkEmailEvent = async (eventSource, postmarkMessage, postmarkServerToken) => {
14
- return await this.eventBridgeClient.buildAndSendEvent(eventSource, event_detail_types_js_1.ADTRACKIFY_EVENT_BRIDGE_EVENTS.SEND_POSTMARK_EMAIL, {
15
- postmarkMessage,
16
- postmarkRequestType: event_detail_types_js_1.PostmarkRequestType.SINGLE_EMAIL,
17
- postmarkServerToken
18
- });
19
- };
20
- sendPostmarkTemplatedEmailEvent = async (eventSource, postmarkMessage, postmarkServerToken) => {
21
- return await this.eventBridgeClient.buildAndSendEvent(eventSource, event_detail_types_js_1.ADTRACKIFY_EVENT_BRIDGE_EVENTS.SEND_POSTMARK_EMAIL, {
22
- postmarkMessage,
23
- postmarkRequestType: event_detail_types_js_1.PostmarkRequestType.TEMPLATE_EMAIL,
24
- postmarkServerToken
25
- });
26
- };
27
- }
28
- exports.EventBridgeIntegrationService = EventBridgeIntegrationService;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventBridgeIntegrationService = void 0;
4
+ const eventbridge_client_js_1 = require("../clients/generic/eventbridge-client.js");
5
+ const event_detail_types_js_1 = require("../types/internal-events/event-detail-types.js");
6
+ class EventBridgeIntegrationService {
7
+ eventBridgeClient;
8
+ EVENT_BUS_NAME;
9
+ constructor(eventBusName) {
10
+ this.eventBridgeClient = new eventbridge_client_js_1.EventBridgeClient(eventBusName);
11
+ this.EVENT_BUS_NAME = eventBusName;
12
+ }
13
+ sendPostmarkEmailEvent = async (eventSource, postmarkMessage, postmarkServerToken) => {
14
+ return await this.eventBridgeClient.buildAndSendEvent(eventSource, event_detail_types_js_1.ADTRACKIFY_EVENT_BRIDGE_EVENTS.SEND_POSTMARK_EMAIL, {
15
+ postmarkMessage,
16
+ postmarkRequestType: event_detail_types_js_1.PostmarkRequestType.SINGLE_EMAIL,
17
+ postmarkServerToken
18
+ });
19
+ };
20
+ sendPostmarkTemplatedEmailEvent = async (eventSource, postmarkMessage, postmarkServerToken) => {
21
+ return await this.eventBridgeClient.buildAndSendEvent(eventSource, event_detail_types_js_1.ADTRACKIFY_EVENT_BRIDGE_EVENTS.SEND_POSTMARK_EMAIL, {
22
+ postmarkMessage,
23
+ postmarkRequestType: event_detail_types_js_1.PostmarkRequestType.TEMPLATE_EMAIL,
24
+ postmarkServerToken
25
+ });
26
+ };
27
+ }
28
+ exports.EventBridgeIntegrationService = EventBridgeIntegrationService;
29
29
  //# sourceMappingURL=eventbridge-integration-service.js.map
@@ -1,5 +1,5 @@
1
- export * from './eventbridge-integration-service.js';
2
- export * from './ipdata-lookup-service.js';
3
- export * from './log-event-service.js';
4
- export * from './metric-event-service.js';
5
- export * from './db';
1
+ export * from './eventbridge-integration-service.js';
2
+ export * from './ipdata-lookup-service.js';
3
+ export * from './log-event-service.js';
4
+ export * from './metric-event-service.js';
5
+ export * from './db';
@@ -1,22 +1,22 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./eventbridge-integration-service.js"), exports);
18
- __exportStar(require("./ipdata-lookup-service.js"), exports);
19
- __exportStar(require("./log-event-service.js"), exports);
20
- __exportStar(require("./metric-event-service.js"), exports);
21
- __exportStar(require("./db"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./eventbridge-integration-service.js"), exports);
18
+ __exportStar(require("./ipdata-lookup-service.js"), exports);
19
+ __exportStar(require("./log-event-service.js"), exports);
20
+ __exportStar(require("./metric-event-service.js"), exports);
21
+ __exportStar(require("./db"), exports);
22
22
  //# sourceMappingURL=index.js.map
@@ -1,8 +1,8 @@
1
- import { IPDataResponse } from '@adtrackify/at-tracking-event-types';
2
- export interface IPLookupTableRecord {
3
- ipAddress: string;
4
- lookupResponse: IPDataResponse | null;
5
- createdAt: string;
6
- updatedAt: string;
7
- }
8
- export declare const lookupIP: (ipAddress: string) => Promise<IPDataResponse | null>;
1
+ import { IPDataResponse } from '@adtrackify/at-tracking-event-types';
2
+ export interface IPLookupTableRecord {
3
+ ipAddress: string;
4
+ lookupResponse: IPDataResponse | null;
5
+ createdAt: string;
6
+ updatedAt: string;
7
+ }
8
+ export declare const lookupIP: (ipAddress: string) => Promise<IPDataResponse | null>;
@@ -1,60 +1,60 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.lookupIP = void 0;
4
- const luxon_1 = require("luxon");
5
- const clients_1 = require("../clients");
6
- const helpers_1 = require("../helpers");
7
- const libs_1 = require("../libs");
8
- const net_1 = require("net");
9
- const API_KEY = 'aae45f1e1f97ecf79bdc2bef3e96ef71961c4cb977c3085429b421bc';
10
- const IP_LOOKUP_TABLE_NAME = process.env.IP_LOOKUP_TABLE_NAME;
11
- const getLookupApi = async (ipAddress) => {
12
- try {
13
- const client = (0, clients_1.axiosHttpService)();
14
- const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
15
- const res = await client.get(url);
16
- return res?.data;
17
- }
18
- catch (error) {
19
- helpers_1.Logger.error('IPData Lookup API Failed', { error });
20
- return null;
21
- }
22
- };
23
- const lookupIP = async (ipAddress) => {
24
- try {
25
- if (!ipAddress || (0, net_1.isIP)(ipAddress) === 0) {
26
- helpers_1.Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
27
- return null;
28
- }
29
- const cachedResult = await clients_1.DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
30
- const cacheExpirationDate = luxon_1.DateTime.utc().minus({ days: 2 }).toJSDate().toISOString();
31
- if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
32
- return cachedResult.lookupResponse;
33
- }
34
- const lookupResponse = await getLookupApi(ipAddress);
35
- let lookupTableRecord;
36
- if (cachedResult) {
37
- lookupTableRecord = {
38
- ...cachedResult,
39
- lookupResponse,
40
- updatedAt: (0, libs_1.getCurrentTimestamp)(),
41
- };
42
- }
43
- else {
44
- lookupTableRecord = {
45
- ipAddress,
46
- lookupResponse,
47
- createdAt: (0, libs_1.getCurrentTimestamp)(),
48
- updatedAt: (0, libs_1.getCurrentTimestamp)()
49
- };
50
- }
51
- await clients_1.DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, lookupTableRecord);
52
- return lookupResponse;
53
- }
54
- catch (e) {
55
- helpers_1.Logger.error('Failed to lookup IP', { error: e });
56
- return null;
57
- }
58
- };
59
- exports.lookupIP = lookupIP;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lookupIP = void 0;
4
+ const luxon_1 = require("luxon");
5
+ const clients_1 = require("../clients");
6
+ const helpers_1 = require("../helpers");
7
+ const libs_1 = require("../libs");
8
+ const net_1 = require("net");
9
+ const API_KEY = 'aae45f1e1f97ecf79bdc2bef3e96ef71961c4cb977c3085429b421bc';
10
+ const IP_LOOKUP_TABLE_NAME = process.env.IP_LOOKUP_TABLE_NAME;
11
+ const getLookupApi = async (ipAddress) => {
12
+ try {
13
+ const client = (0, clients_1.axiosHttpService)();
14
+ const url = `https://api.ipdata.co/${ipAddress}?api-key=${API_KEY}`;
15
+ const res = await client.get(url);
16
+ return res?.data;
17
+ }
18
+ catch (error) {
19
+ helpers_1.Logger.error('IPData Lookup API Failed', { error });
20
+ return null;
21
+ }
22
+ };
23
+ const lookupIP = async (ipAddress) => {
24
+ try {
25
+ if (!ipAddress || (0, net_1.isIP)(ipAddress) === 0) {
26
+ helpers_1.Logger.warn('Unable to lookup IP. Invalid Ip Address', { ipAddress });
27
+ return null;
28
+ }
29
+ const cachedResult = await clients_1.DynamoDbClient.safeGet(IP_LOOKUP_TABLE_NAME, 'ipAddress', ipAddress);
30
+ const cacheExpirationDate = luxon_1.DateTime.utc().minus({ days: 2 }).toJSDate().toISOString();
31
+ if (cachedResult && cachedResult?.updatedAt > cacheExpirationDate) {
32
+ return cachedResult.lookupResponse;
33
+ }
34
+ const lookupResponse = await getLookupApi(ipAddress);
35
+ let lookupTableRecord;
36
+ if (cachedResult) {
37
+ lookupTableRecord = {
38
+ ...cachedResult,
39
+ lookupResponse,
40
+ updatedAt: (0, libs_1.getCurrentTimestamp)(),
41
+ };
42
+ }
43
+ else {
44
+ lookupTableRecord = {
45
+ ipAddress,
46
+ lookupResponse,
47
+ createdAt: (0, libs_1.getCurrentTimestamp)(),
48
+ updatedAt: (0, libs_1.getCurrentTimestamp)()
49
+ };
50
+ }
51
+ await clients_1.DynamoDbClient.safePut(IP_LOOKUP_TABLE_NAME, lookupTableRecord);
52
+ return lookupResponse;
53
+ }
54
+ catch (e) {
55
+ helpers_1.Logger.error('Failed to lookup IP', { error: e });
56
+ return null;
57
+ }
58
+ };
59
+ exports.lookupIP = lookupIP;
60
60
  //# sourceMappingURL=ipdata-lookup-service.js.map
@@ -1,9 +1,9 @@
1
- import { EventContext, LOG_EVENT_NAME, LogEvent, LogEventData, LogLevel, LogStorage } from '@adtrackify/at-tracking-event-types';
2
- export declare class LogEventService {
3
- private eventBridgeClient;
4
- private eventDetail;
5
- constructor(eventBusName: string);
6
- log: (source: string, pixelId: string, context: EventContext, logEventName: LOG_EVENT_NAME, logEventData: LogEventData, logId?: string) => Promise<void>;
7
- buildLogEvent: (pixelId: string, context: EventContext, logEventName: LOG_EVENT_NAME, logEventData: LogEventData, logId?: string) => LogEvent;
8
- buildLogEventData: (source: string, service: string, logLevel: LogLevel, message: string, logData?: any, logStorage?: LogStorage) => LogEventData;
9
- }
1
+ import { EventContext, LOG_EVENT_NAME, LogEvent, LogEventData, LogLevel, LogStorage } from '@adtrackify/at-tracking-event-types';
2
+ export declare class LogEventService {
3
+ private eventBridgeClient;
4
+ private eventDetail;
5
+ constructor(eventBusName: string);
6
+ log: (source: string, pixelId: string, context: EventContext, logEventName: LOG_EVENT_NAME, logEventData: LogEventData, logId?: string) => Promise<void>;
7
+ buildLogEvent: (pixelId: string, context: EventContext, logEventName: LOG_EVENT_NAME, logEventData: LogEventData, logId?: string) => LogEvent;
8
+ buildLogEventData: (source: string, service: string, logLevel: LogLevel, message: string, logData?: any, logStorage?: LogStorage) => LogEventData;
9
+ }