@adtrackify/at-service-common 3.0.8 → 3.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,5 @@
1
1
  import { ApiResponse } from '../../types/api-response.js';
2
2
  import { Query, QueryResponse } from '@adtrackify/at-tracking-event-types';
3
- export interface LatestSessionResponseData {
4
- identityId?: string;
5
- sessionId?: string;
6
- }
7
3
  export declare class DbMgmtClient {
8
4
  BASE_API_URL: string;
9
5
  DB_MGMT_API_KEY: string;
@@ -18,6 +14,5 @@ export declare class DbMgmtClient {
18
14
  };
19
15
  };
20
16
  getClient: () => any;
21
- getLatestSession: (pixelId: string, ipAddress: string, userAgent: string, domain: string) => Promise<ApiResponse<LatestSessionResponseData>>;
22
17
  query: (query: Query) => Promise<ApiResponse<QueryResponse>>;
23
18
  }
@@ -29,12 +29,6 @@ class DbMgmtClient {
29
29
  this.client = this.client ?? (0, http_client_js_1.axiosHttpService)(this.getConfig());
30
30
  return this.client;
31
31
  };
32
- getLatestSession = async (pixelId, ipAddress, userAgent, domain) => {
33
- const client = this.getClient();
34
- const response = await client.post('/query/session', { pixelId, ipAddress, userAgent: domain });
35
- lambda_log_1.default.debug('getLatestSession', { response });
36
- return response;
37
- };
38
32
  query = async (query) => {
39
33
  const client = this.getClient();
40
34
  const response = await client.post('/query', query);
@@ -1 +1 @@
1
- {"version":3,"file":"db-management-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/db-management-client.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA6B;AAE7B,8DAA6D;AAO7D,MAAa,YAAY;IAChB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,MAAM,CAAM;IACnB,YAAY,UAAkB,EAAE,YAAoB;QAClD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAAC,YAAY,UAAU,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI,CAAC,eAAe;iBAClC;aACF;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,GAAG,GAAG,EAAE;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,iCAAgB,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,SAAiB,EAAE,MAAc,EAAmD,EAAE;QAClJ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,oBAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,OAAO,QAAkD,CAAC;IAC5D,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,EAAE,KAAY,EAAuC,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,oBAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,OAAO,QAAsC,CAAC;IAChD,CAAC,CAAC;CACH;AAvCD,oCAuCC"}
1
+ {"version":3,"file":"db-management-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/db-management-client.ts"],"names":[],"mappings":";;;;;;AAAA,4DAA6B;AAE7B,8DAA6D;AAG7D,MAAa,YAAY;IAChB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,MAAM,CAAM;IACnB,YAAY,UAAkB,EAAE,YAAoB;QAClD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAAC,YAAY,UAAU,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI,CAAC,eAAe;iBAClC;aACF;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,GAAG,GAAG,EAAE;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,iCAAgB,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,EAAE,KAAY,EAAuC,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,oBAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,OAAO,QAAsC,CAAC;IAChD,CAAC,CAAC;CACH;AAhCD,oCAgCC"}
@@ -1,10 +1,17 @@
1
1
  import { EventContext } from '@adtrackify/at-tracking-event-types';
2
+ import { GenericHttpClient } from '../generic';
3
+ export interface AddPurchasedTraitsResponse {
4
+ identityId: string;
5
+ purchasedTraitsId: string;
6
+ }
2
7
  export declare class IdentityClient {
3
- client: any;
4
- getConfig: () => {
5
- baseURL: string;
6
- };
8
+ private BASE_API_URL;
9
+ private IDENTITY_API_KEY?;
10
+ client: GenericHttpClient;
11
+ constructor(baseApiUrl: string, identityApiKey?: string);
12
+ getConfig: () => any;
7
13
  private _getClient;
8
14
  private _getIdentity;
9
15
  getIdentity: (pixelId: string, eventContext: EventContext | undefined) => Promise<any>;
16
+ identityAddPurchasedTraits: (pixelId: string, identityId: string, traits: any) => Promise<AddPurchasedTraitsResponse | null>;
10
17
  }
@@ -5,12 +5,27 @@ const libs_1 = require("../../libs");
5
5
  const generic_1 = require("../generic");
6
6
  const helpers_1 = require("../../helpers");
7
7
  class IdentityClient {
8
+ BASE_API_URL;
9
+ IDENTITY_API_KEY;
8
10
  client;
11
+ constructor(baseApiUrl, identityApiKey) {
12
+ this.BASE_API_URL = baseApiUrl;
13
+ this.IDENTITY_API_KEY = identityApiKey;
14
+ this.client = (0, generic_1.axiosHttpService)(this.getConfig());
15
+ }
9
16
  getConfig = () => {
10
- const IDENTITY_SERVICE_URL = `${process.env.BASE_API_URL}/identities`;
11
- return {
17
+ const IDENTITY_SERVICE_URL = `${this.BASE_API_URL}/identities`;
18
+ const params = {
12
19
  baseURL: IDENTITY_SERVICE_URL,
13
20
  };
21
+ if (this.IDENTITY_API_KEY) {
22
+ params.headers = {
23
+ common: {
24
+ 'x-api-key': this.IDENTITY_API_KEY,
25
+ },
26
+ };
27
+ }
28
+ return params;
14
29
  };
15
30
  _getClient = () => {
16
31
  this.client = this.client ?? (0, generic_1.axiosHttpService)(this.getConfig());
@@ -39,6 +54,23 @@ class IdentityClient {
39
54
  return null;
40
55
  }
41
56
  };
57
+ identityAddPurchasedTraits = async (pixelId, identityId, traits) => {
58
+ try {
59
+ const client = this._getClient();
60
+ const response = await client.post('/purchased-traits', { pixelId, identityId, traits });
61
+ if (response.status === libs_1.HttpStatusCodes.OK) {
62
+ return response.data;
63
+ }
64
+ else {
65
+ helpers_1.Logger.error('HTTP status code failed while adding purchased traits', { response });
66
+ return null;
67
+ }
68
+ }
69
+ catch (error) {
70
+ helpers_1.Logger.error('Error while adding purchased traits', { error });
71
+ return null;
72
+ }
73
+ };
42
74
  }
43
75
  exports.IdentityClient = IdentityClient;
44
76
  //# sourceMappingURL=identity-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":";;;AACA,qCAA6C;AAC7C,wCAA8C;AAC9C,2CAAuC;AAEvC,MAAa,cAAc;IAClB,MAAM,CAAM;IACZ,SAAS,GAAG,GAAG,EAAE;QACtB,MAAM,oBAAoB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,aAAa,CAAC;QACtE,OAAO;YACL,OAAO,EAAE,oBAAoB;SAC9B,CAAC;IACJ,CAAC,CAAC;IAEM,UAAU,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAA,0BAAgB,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEM,YAAY,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEK,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,YAAsC,EAAE,EAAE;QACrF,IAAI;YACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;YAE3F,IAAI,gBAAgB,CAAC,MAAM,IAAI,sBAAe,CAAC,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,wDAAwD,CAAC;gBACrE,gBAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,sBAAe,CAAC,EAAE,EAAE;gBAClD,OAAO,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC;aACzC;YAED,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,gBAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;CACH;AAxCD,wCAwCC"}
1
+ {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
- import { TrackingEventRecord } from '@adtrackify/at-tracking-event-types';
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
+ }
2
8
  export declare class TrackingEventsDataService {
3
9
  TABLE_NAME: string;
4
10
  constructor(tableName: string);
11
+ getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
5
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>;
6
15
  }
@@ -2,11 +2,59 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TrackingEventsDataService = void 0;
4
4
  const clients_1 = require("../../clients");
5
+ const helpers_1 = require("../../helpers");
6
+ const luxon_1 = require("luxon");
5
7
  class TrackingEventsDataService {
6
8
  TABLE_NAME;
7
9
  constructor(tableName) {
8
10
  this.TABLE_NAME = tableName;
9
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?.externalId && _trackingEvent.context.properties?.sessionId) {
30
+ return true;
31
+ }
32
+ else if (_trackingEvent.context?.externalId && _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?.externalId,
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
+ };
10
58
  getTrackingEventsByPixelIdEventName = async (indexName, pixelId, eventName, limit, afterCollectedAt) => {
11
59
  const query = {
12
60
  TableName: this.TABLE_NAME,
@@ -27,6 +75,50 @@ class TrackingEventsDataService {
27
75
  const trackingEventsResponse = await clients_1.DynamoDbClient.query(query);
28
76
  return trackingEventsResponse?.Items ?? [];
29
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?.externalId,
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
+ };
30
122
  }
31
123
  exports.TrackingEventsDataService = TrackingEventsDataService;
32
124
  //# sourceMappingURL=tracking-events-data-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-data-service.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAE/C,MAAa,yBAAyB;IAC7B,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,mCAAmC,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAc,EAAE,gBAAyB,EAAkC,EAAE;QACtL,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,sCAAsC;YAC9D,yBAAyB,EAAE;gBACzB,mBAAmB,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE;aAC/C;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC;QACF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;YAClE,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;SACpE;QAED,MAAM,sBAAsB,GAAG,MAAM,wBAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,sBAAsB,EAAE,KAA8B,IAAI,EAAE,CAAC;IACtE,CAAC,CAAA;CACF;AA5BD,8DA4BC"}
1
+ {"version":3,"file":"tracking-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-data-service.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,5 @@
1
1
  import { ApiResponse } from '../../types/api-response.js';
2
2
  import { Query, QueryResponse } from '@adtrackify/at-tracking-event-types';
3
- export interface LatestSessionResponseData {
4
- identityId?: string;
5
- sessionId?: string;
6
- }
7
3
  export declare class DbMgmtClient {
8
4
  BASE_API_URL: string;
9
5
  DB_MGMT_API_KEY: string;
@@ -18,6 +14,5 @@ export declare class DbMgmtClient {
18
14
  };
19
15
  };
20
16
  getClient: () => any;
21
- getLatestSession: (pixelId: string, ipAddress: string, userAgent: string, domain: string) => Promise<ApiResponse<LatestSessionResponseData>>;
22
17
  query: (query: Query) => Promise<ApiResponse<QueryResponse>>;
23
18
  }
@@ -23,12 +23,6 @@ export class DbMgmtClient {
23
23
  this.client = this.client ?? axiosHttpService(this.getConfig());
24
24
  return this.client;
25
25
  };
26
- getLatestSession = async (pixelId, ipAddress, userAgent, domain) => {
27
- const client = this.getClient();
28
- const response = await client.post('/query/session', { pixelId, ipAddress, userAgent: domain });
29
- log.debug('getLatestSession', { response });
30
- return response;
31
- };
32
26
  query = async (query) => {
33
27
  const client = this.getClient();
34
28
  const response = await client.post('/query', query);
@@ -1 +1 @@
1
- {"version":3,"file":"db-management-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/db-management-client.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAO7D,MAAM,OAAO,YAAY;IAChB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,MAAM,CAAM;IACnB,YAAY,UAAkB,EAAE,YAAoB;QAClD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAAC,YAAY,UAAU,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI,CAAC,eAAe;iBAClC;aACF;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,GAAG,GAAG,EAAE;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAiB,EAAE,SAAiB,EAAE,MAAc,EAAmD,EAAE;QAClJ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAChG,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5C,OAAO,QAAkD,CAAC;IAC5D,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,EAAE,KAAY,EAAuC,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,OAAO,QAAsC,CAAC;IAChD,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"db-management-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/db-management-client.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,MAAM,OAAO,YAAY;IAChB,YAAY,CAAS;IACrB,eAAe,CAAS;IACxB,MAAM,CAAM;IACnB,YAAY,UAAkB,EAAE,YAAoB;QAClD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC;IACtC,CAAC;IAED,SAAS,GAAG,GAAG,EAAE;QACf,MAAM,oBAAoB,GAAG,GAAG,IAAI,CAAC,YAAY,UAAU,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,oBAAoB;YAC7B,OAAO,EAAE;gBACP,MAAM,EAAE;oBACN,WAAW,EAAE,IAAI,CAAC,eAAe;iBAClC;aACF;SACF,CAAC;IACJ,CAAC,CAAC;IAEF,SAAS,GAAG,GAAG,EAAE;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,EAAE,KAAY,EAAuC,EAAE;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpC,OAAO,QAAsC,CAAC;IAChD,CAAC,CAAC;CACH"}
@@ -1,10 +1,17 @@
1
1
  import { EventContext } from '@adtrackify/at-tracking-event-types';
2
+ import { GenericHttpClient } from '../generic';
3
+ export interface AddPurchasedTraitsResponse {
4
+ identityId: string;
5
+ purchasedTraitsId: string;
6
+ }
2
7
  export declare class IdentityClient {
3
- client: any;
4
- getConfig: () => {
5
- baseURL: string;
6
- };
8
+ private BASE_API_URL;
9
+ private IDENTITY_API_KEY?;
10
+ client: GenericHttpClient;
11
+ constructor(baseApiUrl: string, identityApiKey?: string);
12
+ getConfig: () => any;
7
13
  private _getClient;
8
14
  private _getIdentity;
9
15
  getIdentity: (pixelId: string, eventContext: EventContext | undefined) => Promise<any>;
16
+ identityAddPurchasedTraits: (pixelId: string, identityId: string, traits: any) => Promise<AddPurchasedTraitsResponse | null>;
10
17
  }
@@ -2,12 +2,27 @@ import { HttpStatusCodes } from '../../libs';
2
2
  import { axiosHttpService } from '../generic';
3
3
  import { Logger } from '../../helpers';
4
4
  export class IdentityClient {
5
+ BASE_API_URL;
6
+ IDENTITY_API_KEY;
5
7
  client;
8
+ constructor(baseApiUrl, identityApiKey) {
9
+ this.BASE_API_URL = baseApiUrl;
10
+ this.IDENTITY_API_KEY = identityApiKey;
11
+ this.client = axiosHttpService(this.getConfig());
12
+ }
6
13
  getConfig = () => {
7
- const IDENTITY_SERVICE_URL = `${process.env.BASE_API_URL}/identities`;
8
- return {
14
+ const IDENTITY_SERVICE_URL = `${this.BASE_API_URL}/identities`;
15
+ const params = {
9
16
  baseURL: IDENTITY_SERVICE_URL,
10
17
  };
18
+ if (this.IDENTITY_API_KEY) {
19
+ params.headers = {
20
+ common: {
21
+ 'x-api-key': this.IDENTITY_API_KEY,
22
+ },
23
+ };
24
+ }
25
+ return params;
11
26
  };
12
27
  _getClient = () => {
13
28
  this.client = this.client ?? axiosHttpService(this.getConfig());
@@ -36,5 +51,22 @@ export class IdentityClient {
36
51
  return null;
37
52
  }
38
53
  };
54
+ identityAddPurchasedTraits = async (pixelId, identityId, traits) => {
55
+ try {
56
+ const client = this._getClient();
57
+ const response = await client.post('/purchased-traits', { pixelId, identityId, traits });
58
+ if (response.status === HttpStatusCodes.OK) {
59
+ return response.data;
60
+ }
61
+ else {
62
+ Logger.error('HTTP status code failed while adding purchased traits', { response });
63
+ return null;
64
+ }
65
+ }
66
+ catch (error) {
67
+ Logger.error('Error while adding purchased traits', { error });
68
+ return null;
69
+ }
70
+ };
39
71
  }
40
72
  //# sourceMappingURL=identity-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,OAAO,cAAc;IAClB,MAAM,CAAM;IACZ,SAAS,GAAG,GAAG,EAAE;QACtB,MAAM,oBAAoB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,aAAa,CAAC;QACtE,OAAO;YACL,OAAO,EAAE,oBAAoB;SAC9B,CAAC;IACJ,CAAC,CAAC;IAEM,UAAU,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC,CAAC;IAEM,YAAY,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEK,WAAW,GAAG,KAAK,EAAE,OAAe,EAAE,YAAsC,EAAE,EAAE;QACrF,IAAI;YACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;YAE3F,IAAI,gBAAgB,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,EAAE;gBACjD,MAAM,GAAG,GAAG,wDAAwD,CAAC;gBACrE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;gBACxC,OAAO,IAAI,CAAC;aACb;YAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,eAAe,CAAC,EAAE,EAAE;gBAClD,OAAO,gBAAgB,EAAE,IAAI,EAAE,QAAQ,CAAC;aACzC;YAED,OAAO,IAAI,CAAC;SACb;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7D,OAAO,IAAI,CAAC;SACb;IACH,CAAC,CAAC;CACH"}
1
+ {"version":3,"file":"identity-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/identity-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
- import { TrackingEventRecord } from '@adtrackify/at-tracking-event-types';
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
+ }
2
8
  export declare class TrackingEventsDataService {
3
9
  TABLE_NAME: string;
4
10
  constructor(tableName: string);
11
+ getLatestSessionByIpAddressUserAgent: (indexName: string, ipAddressUserAgent: string, hostname?: string) => Promise<LatestSessionResponseData>;
5
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>;
6
15
  }
@@ -1,9 +1,57 @@
1
1
  import { DynamoDbClient } from '../../clients';
2
+ import { Logger } from '../../helpers';
3
+ import { DateTime } from 'luxon';
2
4
  export class TrackingEventsDataService {
3
5
  TABLE_NAME;
4
6
  constructor(tableName) {
5
7
  this.TABLE_NAME = tableName;
6
8
  }
9
+ getLatestSessionByIpAddressUserAgent = async (indexName, ipAddressUserAgent, hostname) => {
10
+ try {
11
+ const params = {
12
+ TableName: this.TABLE_NAME,
13
+ IndexName: indexName,
14
+ KeyConditionExpression: 'ipAddressUserAgent = :ipAddressUserAgent',
15
+ ExpressionAttributeValues: {
16
+ ':ipAddressUserAgent': ipAddressUserAgent,
17
+ },
18
+ ScanIndexForward: false
19
+ };
20
+ const results = await DynamoDbClient.query(params);
21
+ let trackingEventRecord;
22
+ if (results?.Items && results.Items.length > 0) {
23
+ trackingEventRecord = results.Items.find((item) => {
24
+ const _trackingEvent = item.trackingEvent;
25
+ const _hostname = item?.hostname;
26
+ if (hostname && _hostname === hostname && _trackingEvent.context?.externalId && _trackingEvent.context.properties?.sessionId) {
27
+ return true;
28
+ }
29
+ else if (_trackingEvent.context?.externalId && _trackingEvent.context.properties?.sessionId) {
30
+ return true;
31
+ }
32
+ else {
33
+ return false;
34
+ }
35
+ });
36
+ }
37
+ if (trackingEventRecord) {
38
+ const trackingEvent = trackingEventRecord.trackingEvent;
39
+ return {
40
+ pixelId: trackingEvent?.pixelId,
41
+ identityId: trackingEvent.context?.externalId,
42
+ sessionId: trackingEvent.context?.properties?.sessionId,
43
+ click: trackingEvent.context?.properties?.click
44
+ };
45
+ }
46
+ else {
47
+ return {};
48
+ }
49
+ }
50
+ catch (e) {
51
+ Logger.error('Failed to getLastTrackingEventByIpAddressUserAgent', { e });
52
+ return {};
53
+ }
54
+ };
7
55
  getTrackingEventsByPixelIdEventName = async (indexName, pixelId, eventName, limit, afterCollectedAt) => {
8
56
  const query = {
9
57
  TableName: this.TABLE_NAME,
@@ -24,5 +72,49 @@ export class TrackingEventsDataService {
24
72
  const trackingEventsResponse = await DynamoDbClient.query(query);
25
73
  return trackingEventsResponse?.Items ?? [];
26
74
  };
75
+ getTrackingEventCountByPixelId = async (indexName, pixelId, offsetInMinutes = 30) => {
76
+ try {
77
+ const pastDateTime = DateTime.now().minus({ minutes: offsetInMinutes }).toISO();
78
+ const params = {
79
+ TableName: this.TABLE_NAME,
80
+ IndexName: indexName,
81
+ KeyConditionExpression: 'pixelId = :pixelId and collectedAt > :collectedAt',
82
+ ExpressionAttributeValues: {
83
+ ':pixelId': pixelId,
84
+ ':collectedAt': pastDateTime
85
+ }
86
+ };
87
+ const results = await DynamoDbClient.query(params);
88
+ return results?.Items?.length ?? 0;
89
+ }
90
+ catch (e) {
91
+ Logger.error('Failed to getTrackingEventCountByPixelId', { e });
92
+ return 0;
93
+ }
94
+ };
95
+ putTrackingEvent = async (trackingEvent, ttlInDays) => {
96
+ if (!trackingEvent.context?.properties?.ipAddress || !trackingEvent.context?.properties?.userAgent)
97
+ return;
98
+ const pageURL = trackingEvent?.context?.properties?.page?.url;
99
+ const parsedPageURL = new URL(pageURL);
100
+ const hostname = parsedPageURL?.hostname;
101
+ const trackingEventsTableTTLDays = ttlInDays || 15;
102
+ const expiredAt = DateTime.now().plus({ days: trackingEventsTableTTLDays }).toSeconds();
103
+ const trackingEventRecord = {
104
+ eventId: trackingEvent.id,
105
+ eventName: trackingEvent.name,
106
+ trackingEvent,
107
+ pixelId: trackingEvent?.pixelId,
108
+ pixelIdEventName: `${trackingEvent.pixelId}_${trackingEvent.name}`,
109
+ ipAddressUserAgent: `${trackingEvent.context?.properties?.ipAddress}_${trackingEvent.context?.properties?.userAgent}`,
110
+ hostname,
111
+ identityId: trackingEvent?.context?.externalId,
112
+ sessionId: trackingEvent?.context?.properties?.sessionId,
113
+ collectedAt: trackingEvent.collectedAt,
114
+ expiredAt,
115
+ };
116
+ Logger.debug('Put tracking event', { trackingEventRecord, expiredAtType: typeof expiredAt });
117
+ return await DynamoDbClient.safePut(this.TABLE_NAME, trackingEventRecord);
118
+ };
27
119
  }
28
120
  //# sourceMappingURL=tracking-events-data-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracking-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-data-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,OAAO,yBAAyB;IAC7B,UAAU,CAAS;IAE1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEM,mCAAmC,GAAG,KAAK,EAAE,SAAiB,EAAE,OAAe,EAAE,SAAiB,EAAE,KAAc,EAAE,gBAAyB,EAAkC,EAAE;QACtL,MAAM,KAAK,GAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,SAAS,EAAE,SAAS;YACpB,sBAAsB,EAAE,sCAAsC;YAC9D,yBAAyB,EAAE;gBACzB,mBAAmB,EAAE,GAAG,OAAO,IAAI,SAAS,EAAE;aAC/C;YACD,gBAAgB,EAAE,KAAK;SACxB,CAAC;QACF,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,IAAI,gBAAgB,EAAE;YACpB,KAAK,CAAC,sBAAsB,IAAI,iCAAiC,CAAC;YAClE,KAAK,CAAC,yBAAyB,CAAC,cAAc,CAAC,GAAG,gBAAgB,CAAC;SACpE;QAED,MAAM,sBAAsB,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,sBAAsB,EAAE,KAA8B,IAAI,EAAE,CAAC;IACtE,CAAC,CAAA;CACF"}
1
+ {"version":3,"file":"tracking-events-data-service.js","sourceRoot":"","sources":["../../../../src/services/db/tracking-events-data-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adtrackify/at-service-common",
3
- "version": "3.0.8",
3
+ "version": "3.0.10",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist/*"
@@ -50,7 +50,7 @@
50
50
  "uuid": "^9.0.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@adtrackify/at-tracking-event-types": "^3.0.24",
53
+ "@adtrackify/at-tracking-event-types": "^3.0.32",
54
54
  "@aws-sdk/client-cognito-identity-provider": "^3.345.0",
55
55
  "@aws-sdk/client-dynamodb": "^3.345.0",
56
56
  "@aws-sdk/client-eventbridge": "^3.345.0",