@adtrackify/at-service-common 3.0.45 → 3.0.47

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 (227) hide show
  1. package/dist/cjs/__tests__/s3-client/compress-decompress.spec.d.ts +1 -1
  2. package/dist/cjs/__tests__/s3-client/compress-decompress.spec.js +16 -16
  3. package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  4. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +26 -26
  5. package/dist/cjs/clients/generic/cognito-client.d.ts +20 -20
  6. package/dist/cjs/clients/generic/cognito-client.js +164 -164
  7. package/dist/cjs/clients/generic/dynamodb-client.d.ts +17 -17
  8. package/dist/cjs/clients/generic/dynamodb-client.js +167 -167
  9. package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
  10. package/dist/cjs/clients/generic/eventbridge-client.js +49 -49
  11. package/dist/cjs/clients/generic/http-client.d.ts +88 -88
  12. package/dist/cjs/clients/generic/http-client.js +56 -56
  13. package/dist/cjs/clients/generic/index.d.ts +8 -8
  14. package/dist/cjs/clients/generic/index.js +24 -24
  15. package/dist/cjs/clients/generic/location-client.d.ts +8 -8
  16. package/dist/cjs/clients/generic/location-client.js +31 -31
  17. package/dist/cjs/clients/generic/s3-client.d.ts +16 -16
  18. package/dist/cjs/clients/generic/s3-client.js +110 -110
  19. package/dist/cjs/clients/generic/singlestore-db-client.d.ts +14 -14
  20. package/dist/cjs/clients/generic/singlestore-db-client.js +66 -66
  21. package/dist/cjs/clients/generic/sqs-client.d.ts +14 -14
  22. package/dist/cjs/clients/generic/sqs-client.js +38 -38
  23. package/dist/cjs/clients/index.d.ts +3 -3
  24. package/dist/cjs/clients/index.js +19 -19
  25. package/dist/cjs/clients/internal-api/accounts-client.d.ts +112 -112
  26. package/dist/cjs/clients/internal-api/accounts-client.js +117 -117
  27. package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
  28. package/dist/cjs/clients/internal-api/db-management-client.js +39 -39
  29. package/dist/cjs/clients/internal-api/destinations-client.d.ts +29 -29
  30. package/dist/cjs/clients/internal-api/destinations-client.js +54 -54
  31. package/dist/cjs/clients/internal-api/event-collector-client.d.ts +20 -20
  32. package/dist/cjs/clients/internal-api/event-collector-client.js +39 -39
  33. package/dist/cjs/clients/internal-api/identity-client.d.ts +17 -17
  34. package/dist/cjs/clients/internal-api/identity-client.js +75 -75
  35. package/dist/cjs/clients/internal-api/index.d.ts +7 -7
  36. package/dist/cjs/clients/internal-api/index.js +23 -23
  37. package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +34 -34
  38. package/dist/cjs/clients/internal-api/shopify-app-install-client.js +63 -63
  39. package/dist/cjs/clients/internal-api/users-auth-client.d.ts +31 -31
  40. package/dist/cjs/clients/internal-api/users-auth-client.js +92 -92
  41. package/dist/cjs/clients/third-party/index.d.ts +1 -1
  42. package/dist/cjs/clients/third-party/index.js +17 -17
  43. package/dist/cjs/clients/third-party/shopify-client.d.ts +198 -198
  44. package/dist/cjs/clients/third-party/shopify-client.js +150 -150
  45. package/dist/cjs/helpers/index.d.ts +4 -4
  46. package/dist/cjs/helpers/index.js +20 -20
  47. package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
  48. package/dist/cjs/helpers/input-validation-helper.js +23 -23
  49. package/dist/cjs/helpers/logging-helper.d.ts +15 -15
  50. package/dist/cjs/helpers/logging-helper.js +80 -80
  51. package/dist/cjs/helpers/response-helper.d.ts +15 -15
  52. package/dist/cjs/helpers/response-helper.js +42 -42
  53. package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
  54. package/dist/cjs/helpers/shopify-helper.js +28 -28
  55. package/dist/cjs/index.d.ts +5 -5
  56. package/dist/cjs/index.js +21 -21
  57. package/dist/cjs/libs/clickId-parser.d.ts +23 -23
  58. package/dist/cjs/libs/clickId-parser.js +49 -49
  59. package/dist/cjs/libs/compression.d.ts +2 -2
  60. package/dist/cjs/libs/compression.js +33 -33
  61. package/dist/cjs/libs/crypto.d.ts +1 -1
  62. package/dist/cjs/libs/crypto.js +12 -12
  63. package/dist/cjs/libs/dates.d.ts +6 -6
  64. package/dist/cjs/libs/dates.js +31 -31
  65. package/dist/cjs/libs/http-error.d.ts +21 -21
  66. package/dist/cjs/libs/http-error.js +59 -59
  67. package/dist/cjs/libs/http-status-codes.d.ts +58 -58
  68. package/dist/cjs/libs/http-status-codes.js +62 -62
  69. package/dist/cjs/libs/index.d.ts +9 -9
  70. package/dist/cjs/libs/index.js +25 -25
  71. package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
  72. package/dist/cjs/libs/referrer-parser/index.js +18 -18
  73. package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
  74. package/dist/cjs/libs/referrer-parser/referrer-data.js +4712 -4712
  75. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  76. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +128 -128
  77. package/dist/cjs/libs/url.d.ts +1 -1
  78. package/dist/cjs/libs/url.js +13 -13
  79. package/dist/cjs/services/db/destinations-service.d.ts +7 -7
  80. package/dist/cjs/services/db/destinations-service.js +35 -35
  81. package/dist/cjs/services/db/identity-cache-db-service.d.ts +23 -22
  82. package/dist/cjs/services/db/identity-cache-db-service.js +152 -68
  83. package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
  84. package/dist/cjs/services/db/index.d.ts +7 -7
  85. package/dist/cjs/services/db/index.js +23 -23
  86. package/dist/cjs/services/db/log-events-db-service.d.ts +11 -11
  87. package/dist/cjs/services/db/log-events-db-service.js +172 -172
  88. package/dist/cjs/services/db/purchased-contacts-db-service.d.ts +9 -9
  89. package/dist/cjs/services/db/purchased-contacts-db-service.js +38 -38
  90. package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +7 -7
  91. package/dist/cjs/services/db/shopify-app-installs-db-service.js +47 -47
  92. package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +9 -9
  93. package/dist/cjs/services/db/shopify-products-cache-db-service.js +64 -64
  94. package/dist/cjs/services/db/tracking-events-db-service.d.ts +20 -20
  95. package/dist/cjs/services/db/tracking-events-db-service.js +162 -162
  96. package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
  97. package/dist/cjs/services/eventbridge-integration-service.js +28 -28
  98. package/dist/cjs/services/index.d.ts +5 -5
  99. package/dist/cjs/services/index.js +21 -21
  100. package/dist/cjs/services/ipdata-lookup-service.d.ts +10 -10
  101. package/dist/cjs/services/ipdata-lookup-service.js +92 -92
  102. package/dist/cjs/services/log-event-service.d.ts +9 -9
  103. package/dist/cjs/services/log-event-service.js +56 -56
  104. package/dist/cjs/services/metric-event-service.d.ts +9 -9
  105. package/dist/cjs/services/metric-event-service.js +49 -49
  106. package/dist/cjs/types/api-response.d.ts +6 -6
  107. package/dist/cjs/types/api-response.js +2 -2
  108. package/dist/cjs/types/index.d.ts +1 -1
  109. package/dist/cjs/types/index.js +17 -17
  110. package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
  111. package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
  112. package/dist/cjs/types/internal-events/index.d.ts +1 -1
  113. package/dist/cjs/types/internal-events/index.js +17 -17
  114. package/dist/esm/__tests__/s3-client/compress-decompress.spec.d.ts +1 -1
  115. package/dist/esm/__tests__/s3-client/compress-decompress.spec.js +14 -14
  116. package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  117. package/dist/esm/__tests__/s3-client/s3-client.spec.js +24 -24
  118. package/dist/esm/clients/generic/cognito-client.d.ts +20 -20
  119. package/dist/esm/clients/generic/cognito-client.js +159 -159
  120. package/dist/esm/clients/generic/dynamodb-client.d.ts +17 -17
  121. package/dist/esm/clients/generic/dynamodb-client.js +163 -163
  122. package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
  123. package/dist/esm/clients/generic/eventbridge-client.js +45 -45
  124. package/dist/esm/clients/generic/http-client.d.ts +88 -88
  125. package/dist/esm/clients/generic/http-client.js +48 -48
  126. package/dist/esm/clients/generic/index.d.ts +8 -8
  127. package/dist/esm/clients/generic/index.js +8 -8
  128. package/dist/esm/clients/generic/location-client.d.ts +8 -8
  129. package/dist/esm/clients/generic/location-client.js +27 -27
  130. package/dist/esm/clients/generic/s3-client.d.ts +16 -16
  131. package/dist/esm/clients/generic/s3-client.js +106 -106
  132. package/dist/esm/clients/generic/singlestore-db-client.d.ts +14 -14
  133. package/dist/esm/clients/generic/singlestore-db-client.js +39 -39
  134. package/dist/esm/clients/generic/sqs-client.d.ts +14 -14
  135. package/dist/esm/clients/generic/sqs-client.js +34 -34
  136. package/dist/esm/clients/index.d.ts +3 -3
  137. package/dist/esm/clients/index.js +3 -3
  138. package/dist/esm/clients/internal-api/accounts-client.d.ts +112 -112
  139. package/dist/esm/clients/internal-api/accounts-client.js +113 -113
  140. package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
  141. package/dist/esm/clients/internal-api/db-management-client.js +32 -32
  142. package/dist/esm/clients/internal-api/destinations-client.d.ts +29 -29
  143. package/dist/esm/clients/internal-api/destinations-client.js +50 -50
  144. package/dist/esm/clients/internal-api/event-collector-client.d.ts +20 -20
  145. package/dist/esm/clients/internal-api/event-collector-client.js +32 -32
  146. package/dist/esm/clients/internal-api/identity-client.d.ts +17 -17
  147. package/dist/esm/clients/internal-api/identity-client.js +71 -71
  148. package/dist/esm/clients/internal-api/index.d.ts +7 -7
  149. package/dist/esm/clients/internal-api/index.js +7 -7
  150. package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +34 -34
  151. package/dist/esm/clients/internal-api/shopify-app-install-client.js +56 -56
  152. package/dist/esm/clients/internal-api/users-auth-client.d.ts +31 -31
  153. package/dist/esm/clients/internal-api/users-auth-client.js +88 -88
  154. package/dist/esm/clients/third-party/index.d.ts +1 -1
  155. package/dist/esm/clients/third-party/index.js +1 -1
  156. package/dist/esm/clients/third-party/shopify-client.d.ts +198 -198
  157. package/dist/esm/clients/third-party/shopify-client.js +146 -146
  158. package/dist/esm/helpers/index.d.ts +4 -4
  159. package/dist/esm/helpers/index.js +4 -4
  160. package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
  161. package/dist/esm/helpers/input-validation-helper.js +19 -19
  162. package/dist/esm/helpers/logging-helper.d.ts +15 -15
  163. package/dist/esm/helpers/logging-helper.js +53 -53
  164. package/dist/esm/helpers/response-helper.d.ts +15 -15
  165. package/dist/esm/helpers/response-helper.js +36 -36
  166. package/dist/esm/helpers/shopify-helper.d.ts +9 -9
  167. package/dist/esm/helpers/shopify-helper.js +23 -23
  168. package/dist/esm/index.d.ts +5 -5
  169. package/dist/esm/index.js +5 -5
  170. package/dist/esm/libs/clickId-parser.d.ts +23 -23
  171. package/dist/esm/libs/clickId-parser.js +45 -45
  172. package/dist/esm/libs/compression.d.ts +2 -2
  173. package/dist/esm/libs/compression.js +25 -25
  174. package/dist/esm/libs/crypto.d.ts +1 -1
  175. package/dist/esm/libs/crypto.js +5 -5
  176. package/dist/esm/libs/dates.d.ts +6 -6
  177. package/dist/esm/libs/dates.js +22 -22
  178. package/dist/esm/libs/http-error.d.ts +21 -21
  179. package/dist/esm/libs/http-error.js +55 -55
  180. package/dist/esm/libs/http-status-codes.d.ts +58 -58
  181. package/dist/esm/libs/http-status-codes.js +59 -59
  182. package/dist/esm/libs/index.d.ts +9 -9
  183. package/dist/esm/libs/index.js +9 -9
  184. package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
  185. package/dist/esm/libs/referrer-parser/index.js +2 -2
  186. package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
  187. package/dist/esm/libs/referrer-parser/referrer-data.js +4709 -4709
  188. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  189. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +121 -121
  190. package/dist/esm/libs/url.d.ts +1 -1
  191. package/dist/esm/libs/url.js +9 -9
  192. package/dist/esm/services/db/destinations-service.d.ts +7 -7
  193. package/dist/esm/services/db/destinations-service.js +31 -31
  194. package/dist/esm/services/db/identity-cache-db-service.d.ts +23 -22
  195. package/dist/esm/services/db/identity-cache-db-service.js +148 -64
  196. package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
  197. package/dist/esm/services/db/index.d.ts +7 -7
  198. package/dist/esm/services/db/index.js +7 -7
  199. package/dist/esm/services/db/log-events-db-service.d.ts +11 -11
  200. package/dist/esm/services/db/log-events-db-service.js +168 -168
  201. package/dist/esm/services/db/purchased-contacts-db-service.d.ts +9 -9
  202. package/dist/esm/services/db/purchased-contacts-db-service.js +34 -34
  203. package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +7 -7
  204. package/dist/esm/services/db/shopify-app-installs-db-service.js +43 -43
  205. package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +9 -9
  206. package/dist/esm/services/db/shopify-products-cache-db-service.js +60 -60
  207. package/dist/esm/services/db/tracking-events-db-service.d.ts +20 -20
  208. package/dist/esm/services/db/tracking-events-db-service.js +158 -158
  209. package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
  210. package/dist/esm/services/eventbridge-integration-service.js +24 -24
  211. package/dist/esm/services/index.d.ts +5 -5
  212. package/dist/esm/services/index.js +5 -5
  213. package/dist/esm/services/ipdata-lookup-service.d.ts +10 -10
  214. package/dist/esm/services/ipdata-lookup-service.js +87 -87
  215. package/dist/esm/services/log-event-service.d.ts +9 -9
  216. package/dist/esm/services/log-event-service.js +52 -52
  217. package/dist/esm/services/metric-event-service.d.ts +9 -9
  218. package/dist/esm/services/metric-event-service.js +45 -45
  219. package/dist/esm/types/api-response.d.ts +6 -6
  220. package/dist/esm/types/api-response.js +1 -1
  221. package/dist/esm/types/index.d.ts +1 -1
  222. package/dist/esm/types/index.js +1 -1
  223. package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
  224. package/dist/esm/types/internal-events/event-detail-types.js +24 -24
  225. package/dist/esm/types/internal-events/index.d.ts +1 -1
  226. package/dist/esm/types/internal-events/index.js +1 -1
  227. package/package.json +2 -2
@@ -1,20 +1,20 @@
1
- /// <reference types="node" />
2
- import url from 'url';
3
- export interface ReferrerDictionary {
4
- [domain: string]: {
5
- name: string;
6
- medium: string;
7
- params?: string[];
8
- };
9
- }
10
- export declare class Referrer {
11
- known: boolean;
12
- referrer: string | null;
13
- medium: string;
14
- search_parameter: string | null;
15
- search_term: string | string[] | null | undefined;
16
- referrers: any;
17
- uri?: url.UrlWithStringQuery;
18
- constructor(referrer_url?: string, current_url?: string);
19
- _lookup_referrer: (ref_host: string | null | undefined, ref_path: string | null, include_path: boolean) => any;
20
- }
1
+ /// <reference types="node" />
2
+ import url from 'url';
3
+ export interface ReferrerDictionary {
4
+ [domain: string]: {
5
+ name: string;
6
+ medium: string;
7
+ params?: string[];
8
+ };
9
+ }
10
+ export declare class Referrer {
11
+ known: boolean;
12
+ referrer: string | null;
13
+ medium: string;
14
+ search_parameter: string | null;
15
+ search_term: string | string[] | null | undefined;
16
+ referrers: any;
17
+ uri?: url.UrlWithStringQuery;
18
+ constructor(referrer_url?: string, current_url?: string);
19
+ _lookup_referrer: (ref_host: string | null | undefined, ref_path: string | null, include_path: boolean) => any;
20
+ }
@@ -1,122 +1,122 @@
1
- import url from 'url';
2
- import querystring from 'querystring';
3
- import { REFERRER_DATA } from './referrer-data.js';
4
- const REFERERS = loadReferrers(REFERRER_DATA);
5
- function loadReferrers(source) {
6
- const referrers_dict = {};
7
- for (const medium in source) {
8
- const conf_list = source[medium];
9
- for (const referrer_name in conf_list) {
10
- const config = conf_list[referrer_name];
11
- let params = null;
12
- if (config.parameters) {
13
- params = config.parameters.map(function (p) { return p.toLowerCase(); });
14
- }
15
- config.domains.forEach(function (domain) {
16
- referrers_dict[domain] = {
17
- 'name': referrer_name,
18
- 'medium': medium
19
- };
20
- if (params) {
21
- referrers_dict[domain]['params'] = params;
22
- }
23
- });
24
- }
25
- }
26
- return referrers_dict;
27
- }
28
- export class Referrer {
29
- known;
30
- referrer;
31
- medium;
32
- search_parameter;
33
- search_term;
34
- referrers;
35
- uri;
36
- constructor(referrer_url, current_url) {
37
- this.known = false;
38
- this.referrer = null;
39
- this.medium = 'unknown';
40
- this.search_parameter = null;
41
- this.search_term = null;
42
- if (!referrer_url) {
43
- this.medium = 'none';
44
- this.referrer = 'direct';
45
- return;
46
- }
47
- const ref_uri = url.parse(referrer_url);
48
- const ref_host = ref_uri.hostname;
49
- this.known = Boolean(~['http:', 'https:'].indexOf(ref_uri.protocol));
50
- this.uri = ref_uri;
51
- if (!this.known)
52
- return;
53
- if (current_url) {
54
- const curr_uri = url.parse(current_url);
55
- const curr_host = curr_uri.hostname;
56
- if (curr_host == ref_host) {
57
- this.medium = 'internal';
58
- this.referrer = 'internal';
59
- return;
60
- }
61
- }
62
- let referrer = this._lookup_referrer(ref_host, ref_uri.pathname, true);
63
- if (!referrer) {
64
- referrer = this._lookup_referrer(ref_host, ref_uri.pathname, false);
65
- if (!referrer) {
66
- this.medium = 'referral';
67
- this.referrer = ref_host;
68
- return;
69
- }
70
- }
71
- this.referrer = referrer['name'];
72
- this.medium = referrer['medium'];
73
- if (referrer['medium'] == 'search') {
74
- if (!referrer['params'])
75
- return;
76
- const pqs = querystring.parse(ref_uri?.query || '');
77
- for (const param in pqs) {
78
- const val = pqs[param];
79
- if (referrer['params'].indexOf(param.toLowerCase()) !== -1) {
80
- this.search_parameter = param;
81
- this.search_term = val;
82
- }
83
- }
84
- }
85
- }
86
- _lookup_referrer = (ref_host, ref_path, include_path) => {
87
- let referrer = null;
88
- if (include_path) {
89
- const hostpath = (ref_host ?? '') + (ref_path ?? '');
90
- referrer = REFERERS[hostpath];
91
- }
92
- else {
93
- referrer = REFERERS[ref_host ?? ''];
94
- }
95
- if (!referrer) {
96
- if (include_path) {
97
- const path_parts = ref_path?.split('/');
98
- if (path_parts && path_parts.length > 1) {
99
- try {
100
- referrer = REFERERS[ref_host + '/' + path_parts[1]];
101
- }
102
- catch (e) { }
103
- }
104
- }
105
- }
106
- if (!referrer) {
107
- try {
108
- const idx = (ref_host ?? '').indexOf('.');
109
- if (idx === -1)
110
- return null;
111
- const slicedHost = ref_host?.slice(idx + 1);
112
- return this._lookup_referrer(slicedHost, ref_path, include_path);
113
- }
114
- catch (e) {
115
- return null;
116
- }
117
- }
118
- else
119
- return referrer;
120
- };
121
- }
1
+ import url from 'url';
2
+ import querystring from 'querystring';
3
+ import { REFERRER_DATA } from './referrer-data.js';
4
+ const REFERERS = loadReferrers(REFERRER_DATA);
5
+ function loadReferrers(source) {
6
+ const referrers_dict = {};
7
+ for (const medium in source) {
8
+ const conf_list = source[medium];
9
+ for (const referrer_name in conf_list) {
10
+ const config = conf_list[referrer_name];
11
+ let params = null;
12
+ if (config.parameters) {
13
+ params = config.parameters.map(function (p) { return p.toLowerCase(); });
14
+ }
15
+ config.domains.forEach(function (domain) {
16
+ referrers_dict[domain] = {
17
+ 'name': referrer_name,
18
+ 'medium': medium
19
+ };
20
+ if (params) {
21
+ referrers_dict[domain]['params'] = params;
22
+ }
23
+ });
24
+ }
25
+ }
26
+ return referrers_dict;
27
+ }
28
+ export class Referrer {
29
+ known;
30
+ referrer;
31
+ medium;
32
+ search_parameter;
33
+ search_term;
34
+ referrers;
35
+ uri;
36
+ constructor(referrer_url, current_url) {
37
+ this.known = false;
38
+ this.referrer = null;
39
+ this.medium = 'unknown';
40
+ this.search_parameter = null;
41
+ this.search_term = null;
42
+ if (!referrer_url) {
43
+ this.medium = 'none';
44
+ this.referrer = 'direct';
45
+ return;
46
+ }
47
+ const ref_uri = url.parse(referrer_url);
48
+ const ref_host = ref_uri.hostname;
49
+ this.known = Boolean(~['http:', 'https:'].indexOf(ref_uri.protocol));
50
+ this.uri = ref_uri;
51
+ if (!this.known)
52
+ return;
53
+ if (current_url) {
54
+ const curr_uri = url.parse(current_url);
55
+ const curr_host = curr_uri.hostname;
56
+ if (curr_host == ref_host) {
57
+ this.medium = 'internal';
58
+ this.referrer = 'internal';
59
+ return;
60
+ }
61
+ }
62
+ let referrer = this._lookup_referrer(ref_host, ref_uri.pathname, true);
63
+ if (!referrer) {
64
+ referrer = this._lookup_referrer(ref_host, ref_uri.pathname, false);
65
+ if (!referrer) {
66
+ this.medium = 'referral';
67
+ this.referrer = ref_host;
68
+ return;
69
+ }
70
+ }
71
+ this.referrer = referrer['name'];
72
+ this.medium = referrer['medium'];
73
+ if (referrer['medium'] == 'search') {
74
+ if (!referrer['params'])
75
+ return;
76
+ const pqs = querystring.parse(ref_uri?.query || '');
77
+ for (const param in pqs) {
78
+ const val = pqs[param];
79
+ if (referrer['params'].indexOf(param.toLowerCase()) !== -1) {
80
+ this.search_parameter = param;
81
+ this.search_term = val;
82
+ }
83
+ }
84
+ }
85
+ }
86
+ _lookup_referrer = (ref_host, ref_path, include_path) => {
87
+ let referrer = null;
88
+ if (include_path) {
89
+ const hostpath = (ref_host ?? '') + (ref_path ?? '');
90
+ referrer = REFERERS[hostpath];
91
+ }
92
+ else {
93
+ referrer = REFERERS[ref_host ?? ''];
94
+ }
95
+ if (!referrer) {
96
+ if (include_path) {
97
+ const path_parts = ref_path?.split('/');
98
+ if (path_parts && path_parts.length > 1) {
99
+ try {
100
+ referrer = REFERERS[ref_host + '/' + path_parts[1]];
101
+ }
102
+ catch (e) { }
103
+ }
104
+ }
105
+ }
106
+ if (!referrer) {
107
+ try {
108
+ const idx = (ref_host ?? '').indexOf('.');
109
+ if (idx === -1)
110
+ return null;
111
+ const slicedHost = ref_host?.slice(idx + 1);
112
+ return this._lookup_referrer(slicedHost, ref_path, include_path);
113
+ }
114
+ catch (e) {
115
+ return null;
116
+ }
117
+ }
118
+ else
119
+ return referrer;
120
+ };
121
+ }
122
122
  //# sourceMappingURL=referrer-parser-util.js.map
@@ -1 +1 @@
1
- export declare const mapObjectToQueryString: (inputObj: any) => string;
1
+ export declare const mapObjectToQueryString: (inputObj: any) => string;
@@ -1,10 +1,10 @@
1
- export const mapObjectToQueryString = (inputObj) => {
2
- const qsp = Object.entries(inputObj).sort((a, b) => a[0] < b[0] ? -1 : 1);
3
- const urlParams = new URLSearchParams();
4
- qsp.map(p => {
5
- urlParams.append(p[0], p[1]);
6
- });
7
- const qs = urlParams.toString();
8
- return qs;
9
- };
1
+ export const mapObjectToQueryString = (inputObj) => {
2
+ const qsp = Object.entries(inputObj).sort((a, b) => a[0] < b[0] ? -1 : 1);
3
+ const urlParams = new URLSearchParams();
4
+ qsp.map(p => {
5
+ urlParams.append(p[0], p[1]);
6
+ });
7
+ const qs = urlParams.toString();
8
+ return qs;
9
+ };
10
10
  //# sourceMappingURL=url.js.map
@@ -1,7 +1,7 @@
1
- import { Destination } from '@adtrackify/at-tracking-event-types';
2
- export declare class DestinationsService {
3
- TABLE_NAME: string;
4
- constructor(tableName: string);
5
- getDestinationsByPixel: (indexName: string, pixelId: string) => Promise<Destination[]>;
6
- getDestinationsByAccountId: (indexName: string, accountId: string) => Promise<Destination[]>;
7
- }
1
+ import { Destination } from '@adtrackify/at-tracking-event-types';
2
+ export declare class DestinationsService {
3
+ TABLE_NAME: string;
4
+ constructor(tableName: string);
5
+ getDestinationsByPixel: (indexName: string, pixelId: string) => Promise<Destination[]>;
6
+ getDestinationsByAccountId: (indexName: string, accountId: string) => Promise<Destination[]>;
7
+ }
@@ -1,32 +1,32 @@
1
- import { DynamoDbClient } from '../../clients';
2
- export class DestinationsService {
3
- TABLE_NAME;
4
- constructor(tableName) {
5
- this.TABLE_NAME = tableName;
6
- }
7
- getDestinationsByPixel = async (indexName, pixelId) => {
8
- const query = {
9
- TableName: this.TABLE_NAME,
10
- IndexName: indexName,
11
- KeyConditionExpression: 'pixelId = :pixelId',
12
- ExpressionAttributeValues: {
13
- ':pixelId': pixelId,
14
- },
15
- };
16
- const destinations = await DynamoDbClient.queryAll(query);
17
- return destinations || [];
18
- };
19
- getDestinationsByAccountId = async (indexName, accountId) => {
20
- const query = {
21
- TableName: this.TABLE_NAME,
22
- IndexName: indexName,
23
- KeyConditionExpression: 'accountId = :accountId',
24
- ExpressionAttributeValues: {
25
- ':accountId': accountId,
26
- },
27
- };
28
- const destinations = await DynamoDbClient.queryAll(query);
29
- return destinations || [];
30
- };
31
- }
1
+ import { DynamoDbClient } from '../../clients';
2
+ export class DestinationsService {
3
+ TABLE_NAME;
4
+ constructor(tableName) {
5
+ this.TABLE_NAME = tableName;
6
+ }
7
+ getDestinationsByPixel = async (indexName, pixelId) => {
8
+ const query = {
9
+ TableName: this.TABLE_NAME,
10
+ IndexName: indexName,
11
+ KeyConditionExpression: 'pixelId = :pixelId',
12
+ ExpressionAttributeValues: {
13
+ ':pixelId': pixelId,
14
+ },
15
+ };
16
+ const destinations = await DynamoDbClient.queryAll(query);
17
+ return destinations || [];
18
+ };
19
+ getDestinationsByAccountId = async (indexName, accountId) => {
20
+ const query = {
21
+ TableName: this.TABLE_NAME,
22
+ IndexName: indexName,
23
+ KeyConditionExpression: 'accountId = :accountId',
24
+ ExpressionAttributeValues: {
25
+ ':accountId': accountId,
26
+ },
27
+ };
28
+ const destinations = await DynamoDbClient.queryAll(query);
29
+ return destinations || [];
30
+ };
31
+ }
32
32
  //# sourceMappingURL=destinations-service.js.map
@@ -1,22 +1,23 @@
1
- import { EventIdentity } from '@adtrackify/at-tracking-event-types';
2
- import { IdentityClient } from '../../clients';
3
- export interface IdentityCache {
4
- identityId: string;
5
- request: EventIdentity;
6
- response: EventIdentity;
7
- createdAt: string;
8
- updatedAt: string;
9
- expiresAt: number;
10
- }
11
- export declare class IdentityCacheDbService {
12
- TABLE_NAME: string;
13
- TABLE_KEY: string;
14
- TTL_IN_MONTHS: number;
15
- identityClient: IdentityClient;
16
- constructor(tableName: string, tableKey: string, ttlInMonths: number, baseApiUrl: string, identityApiKey?: string);
17
- lookupIdentityCache: (pixelId: string, identityId: string, incomingIdentity: EventIdentity) => Promise<any>;
18
- putIdentityCache: (identityId: string, request: EventIdentity, response: EventIdentity) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
19
- updateIdentityCache: (identityId: string, request: EventIdentity, response: EventIdentity) => Promise<void>;
20
- getIdentityCache: (identityId: string) => Promise<IdentityCache>;
21
- deleteIdentityCache: (identityId: string) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput | null>;
22
- }
1
+ import { EventIdentity } from '@adtrackify/at-tracking-event-types';
2
+ import { IdentityClient } from '../../clients';
3
+ export interface IdentityCache {
4
+ identityId: string;
5
+ request: EventIdentity;
6
+ response: EventIdentity;
7
+ createdAt: string;
8
+ updatedAt: string;
9
+ expiresAt: number;
10
+ }
11
+ export declare class IdentityCacheDbService {
12
+ TABLE_NAME: string;
13
+ TABLE_KEY: string;
14
+ TTL_IN_MONTHS: number;
15
+ identityClient: IdentityClient;
16
+ constructor(tableName: string, tableKey: string, baseApiUrl: string, cacheTtlInMonths?: number);
17
+ getIdentityWithCaching: (pixelId: string, identityId: string, incomingIdentity: EventIdentity, cacheExpiryInSeconds?: number) => Promise<EventIdentity>;
18
+ updateIdentityCache: (identityId: string, request: EventIdentity, response: EventIdentity) => Promise<void>;
19
+ putIdentityCache: (identityCache: IdentityCache) => Promise<import("@aws-sdk/lib-dynamodb").PutCommandOutput | null>;
20
+ getIdentityCache: (identityId: string) => Promise<IdentityCache>;
21
+ deleteIdentityCache: (identityId: string) => Promise<import("@aws-sdk/lib-dynamodb").DeleteCommandOutput | null>;
22
+ isIdentityCacheStale(identityCache: IdentityCache, incomingIdentity: EventIdentity): boolean;
23
+ }
@@ -1,65 +1,149 @@
1
- import { DateTime } from 'luxon';
2
- import { DynamoDbClient, IdentityClient } from '../../clients';
3
- import { getCurrentTimestamp } from '../../libs';
4
- import { compareIdentityAndShouldUseCache } from '@adtrackify/at-shared-utils';
5
- import { Logger } from '../../helpers';
6
- export class IdentityCacheDbService {
7
- TABLE_NAME;
8
- TABLE_KEY;
9
- TTL_IN_MONTHS;
10
- identityClient;
11
- constructor(tableName, tableKey, ttlInMonths, baseApiUrl, identityApiKey) {
12
- this.TABLE_NAME = tableName;
13
- this.TABLE_KEY = tableKey;
14
- this.TTL_IN_MONTHS = ttlInMonths;
15
- this.identityClient = new IdentityClient(baseApiUrl, identityApiKey);
16
- }
17
- lookupIdentityCache = async (pixelId, identityId, incomingIdentity) => {
18
- const cachedIdentity = await this.getIdentityCache(identityId);
19
- if (cachedIdentity && compareIdentityAndShouldUseCache(cachedIdentity, incomingIdentity)) {
20
- Logger.debug('identity cache hit', { cachedIdentity, incomingIdentity });
21
- if (incomingIdentity?.traits?.emails && cachedIdentity?.response?.traits?.emails && incomingIdentity?.traits?.emails?.length !== cachedIdentity.response?.traits?.emails?.length) {
22
- Logger.warn('Incoming identity & response identity having different emails lengths', { incomingIdentity, cachedIdentity });
23
- }
24
- else if (incomingIdentity?.traits?.userIds && cachedIdentity?.response?.traits?.userIds && incomingIdentity?.traits?.userIds?.length !== cachedIdentity.response?.traits?.userIds?.length) {
25
- Logger.warn('Incoming identity & response identity having different userIds lengths', { incomingIdentity, cachedIdentity });
26
- }
27
- return cachedIdentity.response;
28
- }
29
- else if (cachedIdentity) {
30
- Logger.debug('identity cache miss - record exists but stale', { cachedIdentity, incomingIdentity });
31
- return await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
32
- }
33
- };
34
- putIdentityCache = async (identityId, request, response) => {
35
- const expiresAt = DateTime.now().plus({ months: this.TTL_IN_MONTHS }).toSeconds();
36
- const identityCache = {
37
- identityId,
38
- request,
39
- response,
40
- createdAt: getCurrentTimestamp(),
41
- updatedAt: getCurrentTimestamp(),
42
- expiresAt
43
- };
44
- return await DynamoDbClient.safePut(this.TABLE_NAME, identityCache);
45
- };
46
- updateIdentityCache = async (identityId, request, response) => {
47
- const cachedIdentity = await this.getIdentityCache(identityId);
48
- if (cachedIdentity) {
49
- cachedIdentity.request = request;
50
- cachedIdentity.response = response;
51
- cachedIdentity.updatedAt = getCurrentTimestamp();
52
- await DynamoDbClient.safePut(this.TABLE_NAME, cachedIdentity);
53
- }
54
- else {
55
- await this.putIdentityCache(identityId, request, response);
56
- }
57
- };
58
- getIdentityCache = async (identityId) => {
59
- return await DynamoDbClient.safeGet(this.TABLE_NAME, this.TABLE_KEY, identityId);
60
- };
61
- deleteIdentityCache = async (identityId) => {
62
- return await DynamoDbClient.safeDelete(this.TABLE_NAME, this.TABLE_KEY, identityId);
63
- };
64
- }
1
+ import { DateTime } from 'luxon';
2
+ import { DynamoDbClient, IdentityClient } from '../../clients';
3
+ import { getCurrentTimestamp } from '../../libs';
4
+ import { hasNewAddress, hasNewIncomingClickInfo, hasNewTrait } from '@adtrackify/at-shared-utils';
5
+ import { Logger } from '../../helpers';
6
+ const DEFAULT_CACHE_TTL_IN_MONTHS = 6;
7
+ export class IdentityCacheDbService {
8
+ TABLE_NAME;
9
+ TABLE_KEY;
10
+ TTL_IN_MONTHS;
11
+ identityClient;
12
+ constructor(tableName, tableKey, baseApiUrl, cacheTtlInMonths) {
13
+ this.TABLE_NAME = tableName;
14
+ this.TABLE_KEY = tableKey;
15
+ if (cacheTtlInMonths) {
16
+ this.TTL_IN_MONTHS = cacheTtlInMonths;
17
+ }
18
+ else {
19
+ this.TTL_IN_MONTHS = DEFAULT_CACHE_TTL_IN_MONTHS;
20
+ }
21
+ this.identityClient = new IdentityClient(baseApiUrl);
22
+ }
23
+ getIdentityWithCaching = async (pixelId, identityId, incomingIdentity, cacheExpiryInSeconds) => {
24
+ const cachedIdentity = await this.getIdentityCache(identityId);
25
+ let resolvedIdentity = cachedIdentity?.response;
26
+ if (!cachedIdentity) {
27
+ resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
28
+ }
29
+ else if (cachedIdentity) {
30
+ let hasExpired = false;
31
+ if (cacheExpiryInSeconds) {
32
+ const updatedAt = DateTime.fromISO(cachedIdentity.updatedAt);
33
+ const currentTime = DateTime.now();
34
+ const timeSinceLastUpdate = currentTime.diff(updatedAt, 'seconds').toObject().seconds;
35
+ hasExpired = (timeSinceLastUpdate && (timeSinceLastUpdate > cacheExpiryInSeconds)) || false;
36
+ }
37
+ if (hasExpired) {
38
+ Logger.warn('Cache expired based on custom expiry time', { cachedIdentity });
39
+ resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
40
+ }
41
+ else if (this.isIdentityCacheStale(cachedIdentity, incomingIdentity)) {
42
+ Logger.debug('identity cache miss - record exists but stale', { cachedIdentity, incomingIdentity });
43
+ resolvedIdentity = await this.identityClient.getIdentity(pixelId, { identity: incomingIdentity });
44
+ }
45
+ }
46
+ await this.updateIdentityCache(identityId, incomingIdentity, resolvedIdentity);
47
+ return resolvedIdentity;
48
+ };
49
+ updateIdentityCache = async (identityId, request, response) => {
50
+ const identityCacheKeys = [identityId];
51
+ if (request?.identityId && identityCacheKeys.indexOf(request?.identityId) === -1) {
52
+ identityCacheKeys.push(request?.identityId);
53
+ }
54
+ if (response?.identityId && identityCacheKeys.indexOf(response?.identityId) === -1) {
55
+ identityCacheKeys.push(response?.identityId);
56
+ }
57
+ for (let i = 0; i < identityCacheKeys.length; i++) {
58
+ let cachedIdentity = await this.getIdentityCache(identityCacheKeys[i]);
59
+ if (cachedIdentity) {
60
+ cachedIdentity.request = request;
61
+ cachedIdentity.response = response;
62
+ cachedIdentity.updatedAt = getCurrentTimestamp();
63
+ cachedIdentity.expiresAt = DateTime.now().plus({ months: this.TTL_IN_MONTHS }).toSeconds();
64
+ await this.putIdentityCache(cachedIdentity);
65
+ }
66
+ else {
67
+ cachedIdentity = {
68
+ identityId: identityCacheKeys[i],
69
+ request,
70
+ response,
71
+ createdAt: getCurrentTimestamp(),
72
+ updatedAt: getCurrentTimestamp(),
73
+ expiresAt: DateTime.now().plus({ months: this.TTL_IN_MONTHS }).toSeconds()
74
+ };
75
+ await this.putIdentityCache(cachedIdentity);
76
+ }
77
+ }
78
+ };
79
+ putIdentityCache = async (identityCache) => {
80
+ return await DynamoDbClient.safePut(this.TABLE_NAME, identityCache);
81
+ };
82
+ getIdentityCache = async (identityId) => {
83
+ return await DynamoDbClient.safeGet(this.TABLE_NAME, this.TABLE_KEY, identityId);
84
+ };
85
+ deleteIdentityCache = async (identityId) => {
86
+ return await DynamoDbClient.safeDelete(this.TABLE_NAME, this.TABLE_KEY, identityId);
87
+ };
88
+ isIdentityCacheStale(identityCache, incomingIdentity) {
89
+ try {
90
+ const cachedTraits = identityCache.response?.traits ?? {};
91
+ const incomingTraits = incomingIdentity?.traits ?? {};
92
+ const isNewUserIds = hasNewTrait(cachedTraits?.userIds ?? [], incomingTraits?.userIds ?? []);
93
+ if (isNewUserIds) {
94
+ Logger.warn('identity cache miss - userIds changed', { cachedTraits, incomingTraits });
95
+ return true;
96
+ }
97
+ const isNewIds = hasNewTrait(cachedTraits?.ids ?? [], incomingTraits?.ids ?? []);
98
+ if (isNewIds) {
99
+ Logger.warn('identity cache miss - ids changed', { cachedTraits, incomingTraits });
100
+ return true;
101
+ }
102
+ const isNewEmails = hasNewTrait(cachedTraits?.emails ?? [], incomingTraits?.emails ?? []);
103
+ if (isNewEmails) {
104
+ Logger.warn('identity cache miss - emails changed', { cachedTraits, incomingTraits });
105
+ return true;
106
+ }
107
+ const isNewPhones = hasNewTrait(cachedTraits?.phones ?? [], incomingTraits?.phones ?? []);
108
+ if (isNewPhones) {
109
+ Logger.warn('identity cache miss - phones changed', { cachedTraits, incomingTraits });
110
+ return true;
111
+ }
112
+ const isNewShopifyYIds = hasNewTrait(cachedTraits?.shopifyYIds ?? [], incomingTraits?.shopifyYIds ?? []);
113
+ if (isNewShopifyYIds) {
114
+ Logger.warn('identity cache miss - shopify Y ids changed', { cachedTraits, incomingTraits });
115
+ return true;
116
+ }
117
+ const isNewGenders = hasNewTrait(cachedTraits?.genders ?? [], incomingTraits?.genders ?? []);
118
+ if (isNewGenders) {
119
+ Logger.warn('identity cache miss - genders changed', { cachedTraits, incomingTraits });
120
+ return true;
121
+ }
122
+ const isNewDobs = hasNewTrait(cachedTraits?.dobs ?? [], incomingTraits?.dobs ?? []);
123
+ if (isNewDobs) {
124
+ Logger.warn('identity cache miss - dobs changed', { cachedTraits, incomingTraits });
125
+ return true;
126
+ }
127
+ const isNewAddress = hasNewAddress(cachedTraits?.addresses ?? [], incomingTraits?.addresses ?? []);
128
+ if (isNewAddress) {
129
+ Logger.warn('identity cache miss - address changed', { cachedTraits, incomingTraits });
130
+ return true;
131
+ }
132
+ const isNewClick = hasNewIncomingClickInfo(cachedTraits?.click ?? {}, incomingTraits?.click ?? {});
133
+ if (isNewClick) {
134
+ Logger.warn('identity cache miss - clickInfos changed', { cachedTraits, incomingTraits });
135
+ return true;
136
+ }
137
+ if ((incomingTraits?.ipAddress && cachedTraits?.ipAddress !== incomingTraits?.ipAddress) || (incomingTraits?.userAgent && cachedTraits?.userAgent !== incomingTraits?.userAgent)) {
138
+ Logger.warn('identity cache miss - ip/userAgent changed', { cachedTraits, incomingTraits });
139
+ return true;
140
+ }
141
+ return false;
142
+ }
143
+ catch (error) {
144
+ Logger.error('Error while checking if identity cache is stale', { error });
145
+ return true;
146
+ }
147
+ }
148
+ }
65
149
  //# sourceMappingURL=identity-cache-db-service.js.map