@adtrackify/at-service-common 5.1.2 → 5.1.3

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 (621) hide show
  1. package/dist/cjs/__tests__/clients/acuity-client.spec.js +20 -21
  2. package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -1
  3. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +86 -97
  4. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  5. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +95 -94
  6. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  7. package/dist/cjs/__tests__/clients/event-collector-client.spec.js +58 -58
  8. package/dist/cjs/__tests__/clients/event-collector-client.spec.js.map +1 -1
  9. package/dist/cjs/__tests__/clients/liveintent-client.spec.js +37 -0
  10. package/dist/cjs/__tests__/clients/liveintent-client.spec.js.map +1 -0
  11. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js +17 -18
  12. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  13. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +255 -273
  14. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  15. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +125 -137
  16. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  17. package/dist/cjs/__tests__/clients/sqs-client.spec.js +77 -78
  18. package/dist/cjs/__tests__/clients/sqs-client.spec.js.map +1 -1
  19. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +430 -431
  20. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  21. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +29 -30
  22. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  23. package/dist/cjs/__tests__/db/destinations-db-service.spec.js +47 -45
  24. package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -1
  25. package/dist/cjs/__tests__/db/products-db-service.spec.js +40 -41
  26. package/dist/cjs/__tests__/db/products-db-service.spec.js.map +1 -1
  27. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +26 -27
  28. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  29. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +37 -38
  30. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  31. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +35 -36
  32. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  33. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +27 -28
  34. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  35. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +64 -65
  36. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  37. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +18 -19
  38. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  39. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +23 -24
  40. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  41. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js +16 -17
  42. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  43. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js +42 -43
  44. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  45. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js +23 -24
  46. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  47. package/dist/cjs/__tests__/identity-cache/helpers.spec.js +114 -115
  48. package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
  49. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js +29 -30
  50. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  51. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +19 -20
  52. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  53. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +200 -223
  54. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  55. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +114 -123
  56. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  57. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js +107 -110
  58. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  59. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +31 -32
  60. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  61. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +47 -60
  62. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  63. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js +15 -16
  64. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  65. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +28 -35
  66. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  67. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +27 -28
  68. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  69. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +52 -74
  70. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  71. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
  72. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
  73. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  74. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +424 -403
  75. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  76. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +218 -219
  77. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  78. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +117 -118
  79. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  80. package/dist/cjs/__tests__/libs/compress-decompress.spec.js +7 -8
  81. package/dist/cjs/__tests__/libs/compress-decompress.spec.js.map +1 -1
  82. package/dist/cjs/__tests__/libs/contacts.spec.js +101 -102
  83. package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
  84. package/dist/cjs/__tests__/libs/currency.spec.js +56 -57
  85. package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
  86. package/dist/cjs/__tests__/libs/dates.spec.js +94 -82
  87. package/dist/cjs/__tests__/libs/dates.spec.js.map +1 -1
  88. package/dist/cjs/__tests__/libs/domain.spec.js +68 -69
  89. package/dist/cjs/__tests__/libs/domain.spec.js.map +1 -1
  90. package/dist/cjs/__tests__/libs/numbers.spec.js +249 -250
  91. package/dist/cjs/__tests__/libs/numbers.spec.js.map +1 -1
  92. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +16 -15
  93. package/dist/cjs/__tests__/s3-client/s3-client.spec.js.map +1 -1
  94. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +32 -35
  95. package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -1
  96. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js +14 -15
  97. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  98. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js +949 -1187
  99. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  100. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js +39 -40
  101. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  102. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js +204 -201
  103. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  104. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +174 -299
  105. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  106. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +39 -41
  107. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  108. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +22 -27
  109. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  110. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js +64 -67
  111. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  112. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js +51 -54
  113. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  114. package/dist/cjs/__tests__/services/liveintent-api-service.spec.js +67 -0
  115. package/dist/cjs/__tests__/services/liveintent-api-service.spec.js.map +1 -0
  116. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +9 -10
  117. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  118. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +58 -69
  119. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  120. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +31 -32
  121. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  122. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +64 -65
  123. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  124. package/dist/cjs/clients/generic/cognito-client.js +14 -14
  125. package/dist/cjs/clients/generic/cognito-client.js.map +1 -1
  126. package/dist/cjs/clients/generic/dynamodb-client.js +9 -9
  127. package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
  128. package/dist/cjs/clients/generic/eventbridge-client.js +2 -2
  129. package/dist/cjs/clients/generic/eventbridge-client.js.map +1 -1
  130. package/dist/cjs/clients/generic/http-client.js +5 -5
  131. package/dist/cjs/clients/generic/http-client.js.map +1 -1
  132. package/dist/cjs/clients/generic/lambda-invoke-client.js.map +1 -1
  133. package/dist/cjs/clients/generic/location-client.js +2 -2
  134. package/dist/cjs/clients/generic/location-client.js.map +1 -1
  135. package/dist/cjs/clients/generic/redis-client.js +2 -13
  136. package/dist/cjs/clients/generic/redis-client.js.map +1 -1
  137. package/dist/cjs/clients/generic/s3-client.d.ts +1 -0
  138. package/dist/cjs/clients/generic/s3-client.js +19 -19
  139. package/dist/cjs/clients/generic/s3-client.js.map +1 -1
  140. package/dist/cjs/clients/generic/singlestore-db-client.d.ts +2 -2
  141. package/dist/cjs/clients/generic/singlestore-db-client.js +8 -18
  142. package/dist/cjs/clients/generic/singlestore-db-client.js.map +1 -1
  143. package/dist/cjs/clients/generic/sqs-bundled-client.js +2 -2
  144. package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -1
  145. package/dist/cjs/clients/generic/sqs-bundled-client.types.js +1 -1
  146. package/dist/cjs/clients/generic/sqs-bundled-client.types.js.map +1 -1
  147. package/dist/cjs/clients/generic/sqs-client.d.ts +1 -1
  148. package/dist/cjs/clients/generic/sqs-client.js +2 -2
  149. package/dist/cjs/clients/generic/sqs-client.js.map +1 -1
  150. package/dist/cjs/clients/generic/sqs-unbundle.js +7 -6
  151. package/dist/cjs/clients/generic/sqs-unbundle.js.map +1 -1
  152. package/dist/cjs/clients/internal-api/accounts-client.js +14 -14
  153. package/dist/cjs/clients/internal-api/accounts-client.js.map +1 -1
  154. package/dist/cjs/clients/internal-api/cache-lambda-client.js.map +1 -1
  155. package/dist/cjs/clients/internal-api/db-management-client.js.map +1 -1
  156. package/dist/cjs/clients/internal-api/destinations-client.js +8 -8
  157. package/dist/cjs/clients/internal-api/destinations-client.js.map +1 -1
  158. package/dist/cjs/clients/internal-api/event-collector-client.js.map +1 -1
  159. package/dist/cjs/clients/internal-api/identity-client.js.map +1 -1
  160. package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
  161. package/dist/cjs/clients/internal-api/subscriptions-client.js.map +1 -1
  162. package/dist/cjs/clients/internal-api/users-auth-client.js +11 -11
  163. package/dist/cjs/clients/internal-api/users-auth-client.js.map +1 -1
  164. package/dist/cjs/clients/third-party/acuity-client.js.map +1 -1
  165. package/dist/cjs/clients/third-party/emailable-client.js.map +1 -1
  166. package/dist/cjs/clients/third-party/index.d.ts +1 -0
  167. package/dist/cjs/clients/third-party/index.js +1 -0
  168. package/dist/cjs/clients/third-party/index.js.map +1 -1
  169. package/dist/cjs/clients/third-party/liveintent-client.d.ts +11 -0
  170. package/dist/cjs/clients/third-party/liveintent-client.js +25 -0
  171. package/dist/cjs/clients/third-party/liveintent-client.js.map +1 -0
  172. package/dist/cjs/clients/third-party/loops-client.js.map +1 -1
  173. package/dist/cjs/clients/third-party/open-exchange-rates-client.js.map +1 -1
  174. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  175. package/dist/cjs/clients/third-party/shopify-client.js +15 -15
  176. package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
  177. package/dist/cjs/constants/sqs.js +5 -5
  178. package/dist/cjs/constants/sqs.js.map +1 -1
  179. package/dist/cjs/helpers/account-users-helper.js.map +1 -1
  180. package/dist/cjs/helpers/acuity-helper.js.map +1 -1
  181. package/dist/cjs/helpers/api-key-auth-helper.d.ts +1 -2
  182. package/dist/cjs/helpers/api-key-auth-helper.js.map +1 -1
  183. package/dist/cjs/helpers/api-key-authorizer-helper.js.map +1 -1
  184. package/dist/cjs/helpers/cognito-auth-helper.d.ts +1 -2
  185. package/dist/cjs/helpers/cognito-auth-helper.js.map +1 -1
  186. package/dist/cjs/helpers/input-validation-helper.d.ts +1 -1
  187. package/dist/cjs/helpers/input-validation-helper.js.map +1 -1
  188. package/dist/cjs/helpers/logging-helper.d.ts +5 -5
  189. package/dist/cjs/helpers/logging-helper.js +7 -17
  190. package/dist/cjs/helpers/logging-helper.js.map +1 -1
  191. package/dist/cjs/helpers/order-calculation-helper.js.map +1 -1
  192. package/dist/cjs/helpers/public-api-response-helper.js.map +1 -1
  193. package/dist/cjs/helpers/response-helper.js.map +1 -1
  194. package/dist/cjs/helpers/shopify-helper.js.map +1 -1
  195. package/dist/cjs/helpers/sqs-utils.js +4 -8
  196. package/dist/cjs/helpers/sqs-utils.js.map +1 -1
  197. package/dist/cjs/libs/api-router/public-api-router.d.ts +2 -2
  198. package/dist/cjs/libs/api-router/public-api-router.js.map +1 -1
  199. package/dist/cjs/libs/api-router/route-matcher.js.map +1 -1
  200. package/dist/cjs/libs/click-id-parser.js +1 -1
  201. package/dist/cjs/libs/click-id-parser.js.map +1 -1
  202. package/dist/cjs/libs/compression.d.ts +1 -1
  203. package/dist/cjs/libs/compression.js.map +1 -1
  204. package/dist/cjs/libs/contacts.js.map +1 -1
  205. package/dist/cjs/libs/cookie.js +1 -1
  206. package/dist/cjs/libs/cookie.js.map +1 -1
  207. package/dist/cjs/libs/crypto.js.map +1 -1
  208. package/dist/cjs/libs/csv.js.map +1 -1
  209. package/dist/cjs/libs/currency.js.map +1 -1
  210. package/dist/cjs/libs/dates.d.ts +1 -0
  211. package/dist/cjs/libs/dates.js +18 -1
  212. package/dist/cjs/libs/dates.js.map +1 -1
  213. package/dist/cjs/libs/domain.js.map +1 -1
  214. package/dist/cjs/libs/emails.js.map +1 -1
  215. package/dist/cjs/libs/http-error.js.map +1 -1
  216. package/dist/cjs/libs/http-status-codes.js +1 -1
  217. package/dist/cjs/libs/http-status-codes.js.map +1 -1
  218. package/dist/cjs/libs/numbers.js.map +1 -1
  219. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
  220. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +2 -2
  221. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  222. package/dist/cjs/libs/strings.js.map +1 -1
  223. package/dist/cjs/libs/traits.js.map +1 -1
  224. package/dist/cjs/libs/url.js.map +1 -1
  225. package/dist/cjs/services/acuity-api-service.js.map +1 -1
  226. package/dist/cjs/services/cache/product-cache-service.js.map +1 -1
  227. package/dist/cjs/services/cost/cost-calculation-types.js +2 -1
  228. package/dist/cjs/services/cost/cost-calculation-types.js.map +1 -1
  229. package/dist/cjs/services/cost/cost-calculator-service.js +10 -43
  230. package/dist/cjs/services/cost/cost-calculator-service.js.map +1 -1
  231. package/dist/cjs/services/cost/cost-currency-service.js.map +1 -1
  232. package/dist/cjs/services/cost/cost-filter-service.js +7 -16
  233. package/dist/cjs/services/cost/cost-filter-service.js.map +1 -1
  234. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js +9 -24
  235. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  236. package/dist/cjs/services/db/accounts-db-service.js.map +1 -1
  237. package/dist/cjs/services/db/api-keys-db-service.js.map +1 -1
  238. package/dist/cjs/services/db/contact-enrichments-db-service.js.map +1 -1
  239. package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -1
  240. package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
  241. package/dist/cjs/services/db/identity-cache-db-service.d.ts +1 -1
  242. package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
  243. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +1 -5
  244. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  245. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +7 -21
  246. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  247. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js +7 -7
  248. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js.map +1 -1
  249. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +3 -3
  250. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  251. package/dist/cjs/services/db/index.d.ts +0 -1
  252. package/dist/cjs/services/db/index.js +0 -1
  253. package/dist/cjs/services/db/index.js.map +1 -1
  254. package/dist/cjs/services/db/log-events-db-service.js.map +1 -1
  255. package/dist/cjs/services/db/pixels-db-service.js.map +1 -1
  256. package/dist/cjs/services/db/products-db-service.js +16 -45
  257. package/dist/cjs/services/db/products-db-service.js.map +1 -1
  258. package/dist/cjs/services/db/purchasable-contacts-db-service.js.map +1 -1
  259. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  260. package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
  261. package/dist/cjs/services/db/shopify-products-cache-db-service.js.map +1 -1
  262. package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
  263. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  264. package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -1
  265. package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -1
  266. package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
  267. package/dist/cjs/services/eventbridge-integration-service.js.map +1 -1
  268. package/dist/cjs/services/events/build-collect-queue-tracking-event.js +2 -2
  269. package/dist/cjs/services/events/build-collect-queue-tracking-event.js.map +1 -1
  270. package/dist/cjs/services/events/collect-queue-tracking-service.js.map +1 -1
  271. package/dist/cjs/services/events/log-event-service.js.map +1 -1
  272. package/dist/cjs/services/events/metric-event-service.js.map +1 -1
  273. package/dist/cjs/services/events/tracking-event-sqs-service.js.map +1 -1
  274. package/dist/cjs/services/generic-cache-service.js.map +1 -1
  275. package/dist/cjs/services/index.d.ts +1 -1
  276. package/dist/cjs/services/index.js +1 -1
  277. package/dist/cjs/services/index.js.map +1 -1
  278. package/dist/cjs/services/ipdata-lookup-service.d.ts +1 -1
  279. package/dist/cjs/services/ipdata-lookup-service.js.map +1 -1
  280. package/dist/cjs/services/liveintent-api-service.d.ts +15 -0
  281. package/dist/cjs/services/liveintent-api-service.js +59 -0
  282. package/dist/cjs/services/liveintent-api-service.js.map +1 -0
  283. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  284. package/dist/cjs/services/shopify/shopify-graphql-transformer.js +1 -1
  285. package/dist/cjs/services/shopify/shopify-graphql-transformer.js.map +1 -1
  286. package/dist/cjs/types/index.d.ts +1 -0
  287. package/dist/cjs/types/index.js +8 -17
  288. package/dist/cjs/types/index.js.map +1 -1
  289. package/dist/cjs/types/internal-events/event-detail-types.js +4 -4
  290. package/dist/cjs/types/internal-events/event-detail-types.js.map +1 -1
  291. package/dist/cjs/types/liveintent-types.d.ts +8 -0
  292. package/dist/cjs/types/liveintent-types.js +3 -0
  293. package/dist/cjs/types/liveintent-types.js.map +1 -0
  294. package/dist/cjs/types/public-api-types.js +1 -1
  295. package/dist/cjs/types/public-api-types.js.map +1 -1
  296. package/dist/cjs/types/shopify-graphql-types/admin.types.js +491 -491
  297. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  298. package/dist/cjs/types/shopify-rest-types.d.ts +1 -1
  299. package/dist/cjs/utils/compression.d.ts +2 -0
  300. package/dist/cjs/utils/compression.js +11 -11
  301. package/dist/cjs/utils/compression.js.map +1 -1
  302. package/dist/cjs/utils/custom-measure-formula-utils.js.map +1 -1
  303. package/dist/cjs/utils/retry-envelope.js +4 -3
  304. package/dist/cjs/utils/retry-envelope.js.map +1 -1
  305. package/dist/cjs/utils/size.js +3 -2
  306. package/dist/cjs/utils/size.js.map +1 -1
  307. package/dist/esm/__tests__/clients/acuity-client.spec.js +5 -6
  308. package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -1
  309. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +0 -1
  310. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  311. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +42 -41
  312. package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  313. package/dist/esm/__tests__/clients/event-collector-client.spec.js +18 -18
  314. package/dist/esm/__tests__/clients/event-collector-client.spec.js.map +1 -1
  315. package/dist/esm/__tests__/clients/liveintent-client.spec.js +35 -0
  316. package/dist/esm/__tests__/clients/liveintent-client.spec.js.map +1 -0
  317. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js +3 -4
  318. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  319. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +47 -55
  320. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  321. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +1 -3
  322. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  323. package/dist/esm/__tests__/clients/sqs-client.spec.js +21 -22
  324. package/dist/esm/__tests__/clients/sqs-client.spec.js.map +1 -1
  325. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +8 -9
  326. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  327. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +5 -6
  328. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  329. package/dist/esm/__tests__/db/destinations-db-service.spec.js +11 -9
  330. package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -1
  331. package/dist/esm/__tests__/db/products-db-service.spec.js +8 -9
  332. package/dist/esm/__tests__/db/products-db-service.spec.js.map +1 -1
  333. package/dist/esm/__tests__/db/shared-read-db-services.spec.js +6 -7
  334. package/dist/esm/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  335. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +12 -13
  336. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  337. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +11 -12
  338. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  339. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +6 -7
  340. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  341. package/dist/esm/__tests__/helpers/account-users-helper.spec.js +3 -4
  342. package/dist/esm/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  343. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +0 -1
  344. package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  345. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +3 -4
  346. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  347. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js +1 -2
  348. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  349. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js +4 -5
  350. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  351. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js +1 -2
  352. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  353. package/dist/esm/__tests__/identity-cache/helpers.spec.js +1 -2
  354. package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
  355. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js +15 -16
  356. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  357. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +1 -2
  358. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  359. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +29 -52
  360. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  361. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +31 -40
  362. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  363. package/dist/esm/__tests__/identity-cache/identity-client.spec.js +21 -24
  364. package/dist/esm/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  365. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +0 -1
  366. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  367. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +4 -17
  368. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  369. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js +0 -1
  370. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  371. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +2 -9
  372. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  373. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +0 -1
  374. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  375. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +7 -29
  376. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  377. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.d.ts +18 -14
  378. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js +30 -37
  379. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  380. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +37 -16
  381. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  382. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +5 -6
  383. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  384. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +9 -10
  385. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  386. package/dist/esm/__tests__/libs/compress-decompress.spec.js +1 -2
  387. package/dist/esm/__tests__/libs/compress-decompress.spec.js.map +1 -1
  388. package/dist/esm/__tests__/libs/contacts.spec.js +0 -1
  389. package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
  390. package/dist/esm/__tests__/libs/currency.spec.js +3 -4
  391. package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
  392. package/dist/esm/__tests__/libs/dates.spec.js +23 -11
  393. package/dist/esm/__tests__/libs/dates.spec.js.map +1 -1
  394. package/dist/esm/__tests__/libs/domain.spec.js +0 -1
  395. package/dist/esm/__tests__/libs/domain.spec.js.map +1 -1
  396. package/dist/esm/__tests__/libs/numbers.spec.js +0 -1
  397. package/dist/esm/__tests__/libs/numbers.spec.js.map +1 -1
  398. package/dist/esm/__tests__/s3-client/s3-client.spec.js +7 -6
  399. package/dist/esm/__tests__/s3-client/s3-client.spec.js.map +1 -1
  400. package/dist/esm/__tests__/services/acuity-api-service.spec.js +10 -13
  401. package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -1
  402. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js +0 -1
  403. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  404. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js +280 -518
  405. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  406. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js +3 -4
  407. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  408. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js +22 -19
  409. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  410. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +41 -133
  411. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  412. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +6 -8
  413. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  414. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +5 -10
  415. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  416. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js +14 -17
  417. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  418. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js +16 -19
  419. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  420. package/dist/esm/__tests__/services/liveintent-api-service.spec.js +65 -0
  421. package/dist/esm/__tests__/services/liveintent-api-service.spec.js.map +1 -0
  422. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +1 -2
  423. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  424. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +14 -15
  425. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  426. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +1 -2
  427. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  428. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +0 -1
  429. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  430. package/dist/esm/clients/generic/cognito-client.js +2 -2
  431. package/dist/esm/clients/generic/cognito-client.js.map +1 -1
  432. package/dist/esm/clients/generic/dynamodb-client.js +9 -9
  433. package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
  434. package/dist/esm/clients/generic/eventbridge-client.js +1 -1
  435. package/dist/esm/clients/generic/eventbridge-client.js.map +1 -1
  436. package/dist/esm/clients/generic/http-client.js +5 -5
  437. package/dist/esm/clients/generic/http-client.js.map +1 -1
  438. package/dist/esm/clients/generic/lambda-invoke-client.js.map +1 -1
  439. package/dist/esm/clients/generic/location-client.js +1 -1
  440. package/dist/esm/clients/generic/location-client.js.map +1 -1
  441. package/dist/esm/clients/generic/redis-client.js +2 -13
  442. package/dist/esm/clients/generic/redis-client.js.map +1 -1
  443. package/dist/esm/clients/generic/s3-client.d.ts +1 -0
  444. package/dist/esm/clients/generic/s3-client.js +1 -1
  445. package/dist/esm/clients/generic/s3-client.js.map +1 -1
  446. package/dist/esm/clients/generic/singlestore-db-client.d.ts +2 -2
  447. package/dist/esm/clients/generic/singlestore-db-client.js +1 -1
  448. package/dist/esm/clients/generic/singlestore-db-client.js.map +1 -1
  449. package/dist/esm/clients/generic/sqs-bundled-client.js +2 -2
  450. package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -1
  451. package/dist/esm/clients/generic/sqs-client.d.ts +1 -1
  452. package/dist/esm/clients/generic/sqs-client.js +2 -2
  453. package/dist/esm/clients/generic/sqs-client.js.map +1 -1
  454. package/dist/esm/clients/generic/sqs-unbundle.js +2 -2
  455. package/dist/esm/clients/generic/sqs-unbundle.js.map +1 -1
  456. package/dist/esm/clients/internal-api/accounts-client.js +1 -1
  457. package/dist/esm/clients/internal-api/accounts-client.js.map +1 -1
  458. package/dist/esm/clients/internal-api/cache-lambda-client.js.map +1 -1
  459. package/dist/esm/clients/internal-api/destinations-client.js +1 -1
  460. package/dist/esm/clients/internal-api/destinations-client.js.map +1 -1
  461. package/dist/esm/clients/internal-api/event-collector-client.js.map +1 -1
  462. package/dist/esm/clients/internal-api/identity-client.js.map +1 -1
  463. package/dist/esm/clients/internal-api/users-auth-client.js +1 -1
  464. package/dist/esm/clients/internal-api/users-auth-client.js.map +1 -1
  465. package/dist/esm/clients/third-party/emailable-client.js.map +1 -1
  466. package/dist/esm/clients/third-party/index.d.ts +1 -0
  467. package/dist/esm/clients/third-party/index.js +1 -0
  468. package/dist/esm/clients/third-party/index.js.map +1 -1
  469. package/dist/esm/clients/third-party/liveintent-client.d.ts +11 -0
  470. package/dist/esm/clients/third-party/liveintent-client.js +21 -0
  471. package/dist/esm/clients/third-party/liveintent-client.js.map +1 -0
  472. package/dist/esm/clients/third-party/loops-client.js.map +1 -1
  473. package/dist/esm/clients/third-party/open-exchange-rates-client.js.map +1 -1
  474. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +1 -1
  475. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  476. package/dist/esm/clients/third-party/shopify-client.js +1 -1
  477. package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
  478. package/dist/esm/constants/sqs.js +3 -3
  479. package/dist/esm/constants/sqs.js.map +1 -1
  480. package/dist/esm/helpers/account-users-helper.js.map +1 -1
  481. package/dist/esm/helpers/acuity-helper.js.map +1 -1
  482. package/dist/esm/helpers/api-key-auth-helper.d.ts +1 -2
  483. package/dist/esm/helpers/api-key-auth-helper.js.map +1 -1
  484. package/dist/esm/helpers/api-key-authorizer-helper.js.map +1 -1
  485. package/dist/esm/helpers/cognito-auth-helper.d.ts +1 -2
  486. package/dist/esm/helpers/cognito-auth-helper.js.map +1 -1
  487. package/dist/esm/helpers/input-validation-helper.d.ts +1 -1
  488. package/dist/esm/helpers/input-validation-helper.js.map +1 -1
  489. package/dist/esm/helpers/logging-helper.d.ts +5 -5
  490. package/dist/esm/helpers/logging-helper.js.map +1 -1
  491. package/dist/esm/helpers/order-calculation-helper.js.map +1 -1
  492. package/dist/esm/helpers/public-api-response-helper.js.map +1 -1
  493. package/dist/esm/helpers/response-helper.js.map +1 -1
  494. package/dist/esm/helpers/shopify-helper.js.map +1 -1
  495. package/dist/esm/helpers/sqs-utils.js +1 -6
  496. package/dist/esm/helpers/sqs-utils.js.map +1 -1
  497. package/dist/esm/libs/api-router/public-api-router.d.ts +2 -2
  498. package/dist/esm/libs/api-router/public-api-router.js.map +1 -1
  499. package/dist/esm/libs/api-router/route-matcher.js.map +1 -1
  500. package/dist/esm/libs/click-id-parser.js.map +1 -1
  501. package/dist/esm/libs/compression.d.ts +1 -1
  502. package/dist/esm/libs/compression.js.map +1 -1
  503. package/dist/esm/libs/contacts.js.map +1 -1
  504. package/dist/esm/libs/cookie.js.map +1 -1
  505. package/dist/esm/libs/csv.js.map +1 -1
  506. package/dist/esm/libs/currency.js.map +1 -1
  507. package/dist/esm/libs/dates.d.ts +1 -0
  508. package/dist/esm/libs/dates.js +16 -0
  509. package/dist/esm/libs/dates.js.map +1 -1
  510. package/dist/esm/libs/domain.js.map +1 -1
  511. package/dist/esm/libs/emails.js.map +1 -1
  512. package/dist/esm/libs/http-error.js.map +1 -1
  513. package/dist/esm/libs/numbers.js.map +1 -1
  514. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +1 -0
  515. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +2 -2
  516. package/dist/esm/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  517. package/dist/esm/libs/strings.js.map +1 -1
  518. package/dist/esm/libs/traits.js.map +1 -1
  519. package/dist/esm/services/acuity-api-service.js.map +1 -1
  520. package/dist/esm/services/cache/product-cache-service.js.map +1 -1
  521. package/dist/esm/services/cost/cost-calculation-types.js.map +1 -1
  522. package/dist/esm/services/cost/cost-calculator-service.js +10 -43
  523. package/dist/esm/services/cost/cost-calculator-service.js.map +1 -1
  524. package/dist/esm/services/cost/cost-currency-service.js.map +1 -1
  525. package/dist/esm/services/cost/cost-filter-service.js +7 -16
  526. package/dist/esm/services/cost/cost-filter-service.js.map +1 -1
  527. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js +9 -24
  528. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  529. package/dist/esm/services/db/accounts-db-service.js.map +1 -1
  530. package/dist/esm/services/db/api-keys-db-service.js.map +1 -1
  531. package/dist/esm/services/db/contact-enrichments-db-service.js.map +1 -1
  532. package/dist/esm/services/db/custom-measures-db-service.js.map +1 -1
  533. package/dist/esm/services/db/identity-cache-db-service.d.ts +1 -1
  534. package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
  535. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +2 -6
  536. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  537. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +8 -22
  538. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  539. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  540. package/dist/esm/services/db/index.d.ts +0 -1
  541. package/dist/esm/services/db/index.js +0 -1
  542. package/dist/esm/services/db/index.js.map +1 -1
  543. package/dist/esm/services/db/log-events-db-service.js.map +1 -1
  544. package/dist/esm/services/db/products-db-service.js +16 -45
  545. package/dist/esm/services/db/products-db-service.js.map +1 -1
  546. package/dist/esm/services/db/purchasable-contacts-db-service.js.map +1 -1
  547. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  548. package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
  549. package/dist/esm/services/db/shopify-products-cache-db-service.js.map +1 -1
  550. package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
  551. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  552. package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -1
  553. package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
  554. package/dist/esm/services/events/build-collect-queue-tracking-event.js.map +1 -1
  555. package/dist/esm/services/events/collect-queue-tracking-service.js +1 -1
  556. package/dist/esm/services/events/collect-queue-tracking-service.js.map +1 -1
  557. package/dist/esm/services/events/log-event-service.js.map +1 -1
  558. package/dist/esm/services/events/metric-event-service.js.map +1 -1
  559. package/dist/esm/services/events/tracking-event-sqs-service.js.map +1 -1
  560. package/dist/esm/services/generic-cache-service.js.map +1 -1
  561. package/dist/esm/services/index.d.ts +1 -1
  562. package/dist/esm/services/index.js +1 -1
  563. package/dist/esm/services/index.js.map +1 -1
  564. package/dist/esm/services/ipdata-lookup-service.d.ts +1 -1
  565. package/dist/esm/services/ipdata-lookup-service.js.map +1 -1
  566. package/dist/esm/services/liveintent-api-service.d.ts +15 -0
  567. package/dist/esm/services/liveintent-api-service.js +55 -0
  568. package/dist/esm/services/liveintent-api-service.js.map +1 -0
  569. package/dist/esm/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  570. package/dist/esm/services/shopify/shopify-graphql-transformer.js +1 -1
  571. package/dist/esm/services/shopify/shopify-graphql-transformer.js.map +1 -1
  572. package/dist/esm/types/index.d.ts +1 -0
  573. package/dist/esm/types/index.js +1 -0
  574. package/dist/esm/types/index.js.map +1 -1
  575. package/dist/esm/types/liveintent-types.d.ts +8 -0
  576. package/dist/esm/types/liveintent-types.js +2 -0
  577. package/dist/esm/types/liveintent-types.js.map +1 -0
  578. package/dist/esm/types/shopify-rest-types.d.ts +1 -1
  579. package/dist/esm/utils/compression.d.ts +2 -0
  580. package/dist/esm/utils/compression.js +3 -3
  581. package/dist/esm/utils/compression.js.map +1 -1
  582. package/dist/esm/utils/custom-measure-formula-utils.js.map +1 -1
  583. package/dist/esm/utils/retry-envelope.js.map +1 -1
  584. package/dist/esm/utils/size.js.map +1 -1
  585. package/package.json +136 -139
  586. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js +0 -21
  587. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
  588. package/dist/cjs/__tests__/clients/redis-client.spec.js +0 -79
  589. package/dist/cjs/__tests__/clients/redis-client.spec.js.map +0 -1
  590. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -40
  591. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
  592. package/dist/cjs/clients/third-party/exchange-rate-api-client.d.ts +0 -17
  593. package/dist/cjs/clients/third-party/exchange-rate-api-client.js +0 -20
  594. package/dist/cjs/clients/third-party/exchange-rate-api-client.js.map +0 -1
  595. package/dist/cjs/services/currency-exchange-rate-lookup-service.d.ts +0 -12
  596. package/dist/cjs/services/currency-exchange-rate-lookup-service.js +0 -98
  597. package/dist/cjs/services/currency-exchange-rate-lookup-service.js.map +0 -1
  598. package/dist/cjs/services/db/currency-exchange-rates-db-service.d.ts +0 -21
  599. package/dist/cjs/services/db/currency-exchange-rates-db-service.js +0 -40
  600. package/dist/cjs/services/db/currency-exchange-rates-db-service.js.map +0 -1
  601. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js +0 -19
  602. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js.map +0 -1
  603. package/dist/esm/__tests__/clients/redis-client.spec.d.ts +0 -1
  604. package/dist/esm/__tests__/clients/redis-client.spec.js +0 -77
  605. package/dist/esm/__tests__/clients/redis-client.spec.js.map +0 -1
  606. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +0 -1
  607. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js +0 -38
  608. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +0 -1
  609. package/dist/esm/clients/third-party/exchange-rate-api-client.d.ts +0 -17
  610. package/dist/esm/clients/third-party/exchange-rate-api-client.js +0 -16
  611. package/dist/esm/clients/third-party/exchange-rate-api-client.js.map +0 -1
  612. package/dist/esm/services/currency-exchange-rate-lookup-service.d.ts +0 -12
  613. package/dist/esm/services/currency-exchange-rate-lookup-service.js +0 -94
  614. package/dist/esm/services/currency-exchange-rate-lookup-service.js.map +0 -1
  615. package/dist/esm/services/db/currency-exchange-rates-db-service.d.ts +0 -21
  616. package/dist/esm/services/db/currency-exchange-rates-db-service.js +0 -36
  617. package/dist/esm/services/db/currency-exchange-rates-db-service.js.map +0 -1
  618. /package/dist/cjs/__tests__/clients/{client-timeout-inventory.spec.d.ts → liveintent-client.spec.d.ts} +0 -0
  619. /package/dist/cjs/__tests__/{clients/redis-client.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
  620. /package/dist/{cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts → esm/__tests__/clients/liveintent-client.spec.d.ts} +0 -0
  621. /package/dist/esm/__tests__/{clients/client-timeout-inventory.spec.d.ts → services/liveintent-api-service.spec.d.ts} +0 -0
@@ -1,14 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const vitest_1 = require("vitest");
4
3
  const at_tracking_event_types_1 = require("@adtrackify/at-tracking-event-types");
5
4
  const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
6
- (0, vitest_1.describe)('Identity Trait Merging Tests', () => {
7
- (0, vitest_1.afterEach)(() => {
8
- vitest_1.vi.resetModules();
5
+ describe('Identity Trait Merging Tests', () => {
6
+ afterEach(() => {
7
+ jest.resetModules();
9
8
  });
10
- (0, vitest_1.describe)('mergeIdentityTraits function', () => {
11
- (0, vitest_1.it)('should merge simple string arrays correctly', () => {
9
+ describe('mergeIdentityTraits function', () => {
10
+ it('should merge simple string arrays correctly', () => {
12
11
  const incomingTraits = {
13
12
  emails: ['new@email.com'],
14
13
  userIds: ['user1', 'user2'],
@@ -19,11 +18,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
19
18
  phones: ['+1234567890'],
20
19
  };
21
20
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
22
- (0, vitest_1.expect)(merged.emails).toEqual(['new@email.com', 'existing@email.com']);
23
- (0, vitest_1.expect)(merged.userIds).toEqual(['user1', 'user2', 'user3']);
24
- (0, vitest_1.expect)(merged.phones).toEqual(['+1234567890']);
21
+ expect(merged.emails).toEqual(['new@email.com', 'existing@email.com']);
22
+ expect(merged.userIds).toEqual(['user1', 'user2', 'user3']);
23
+ expect(merged.phones).toEqual(['+1234567890']);
25
24
  });
26
- (0, vitest_1.it)('should handle null and undefined values in arrays', () => {
25
+ it('should handle null and undefined values in arrays', () => {
27
26
  const incomingTraits = {
28
27
  emails: ['test@email.com', null, undefined],
29
28
  userIds: ['user1'],
@@ -33,11 +32,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
33
32
  userIds: null,
34
33
  };
35
34
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
36
- (0, vitest_1.expect)(merged.emails).toContain('test@email.com');
37
- (0, vitest_1.expect)(merged.emails).toContain('cached@email.com');
38
- (0, vitest_1.expect)(merged.userIds).toEqual(['user1']);
35
+ expect(merged.emails).toContain('test@email.com');
36
+ expect(merged.emails).toContain('cached@email.com');
37
+ expect(merged.userIds).toEqual(['user1']);
39
38
  });
40
- (0, vitest_1.it)('should merge addresses correctly', () => {
39
+ it('should merge addresses correctly', () => {
41
40
  const incomingTraits = {
42
41
  addresses: [
43
42
  {
@@ -61,13 +60,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
61
60
  ],
62
61
  };
63
62
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
64
- (0, vitest_1.expect)(merged.addresses).toHaveLength(2);
65
- (0, vitest_1.expect)(merged.addresses).toEqual(vitest_1.expect.arrayContaining([
66
- vitest_1.expect.objectContaining({ city: 'New York' }),
67
- vitest_1.expect.objectContaining({ city: 'Los Angeles' }),
63
+ expect(merged.addresses).toHaveLength(2);
64
+ expect(merged.addresses).toEqual(expect.arrayContaining([
65
+ expect.objectContaining({ city: 'New York' }),
66
+ expect.objectContaining({ city: 'Los Angeles' }),
68
67
  ]));
69
68
  });
70
- (0, vitest_1.it)('should merge click information correctly', () => {
69
+ it('should merge click information correctly', () => {
71
70
  const incomingTraits = {
72
71
  click: {
73
72
  fbp: 'fb.new.123',
@@ -83,30 +82,30 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
83
82
  },
84
83
  };
85
84
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
86
- (0, vitest_1.expect)(merged.click?.fbp).toBe('fb.new.123');
87
- (0, vitest_1.expect)(merged.click?.gclid).toBe('new_gclid');
88
- (0, vitest_1.expect)(merged.click?.fbpCollectedAt).toBe('2024-01-01T00:00:00.000Z');
89
- (0, vitest_1.expect)(merged.click?.fbclid).toBeUndefined();
85
+ expect(merged.click?.fbp).toBe('fb.new.123');
86
+ expect(merged.click?.gclid).toBe('new_gclid');
87
+ expect(merged.click?.fbpCollectedAt).toBe('2024-01-01T00:00:00.000Z');
88
+ expect(merged.click?.fbclid).toBeUndefined();
90
89
  });
91
- (0, vitest_1.it)('should handle empty traits correctly', () => {
90
+ it('should handle empty traits correctly', () => {
92
91
  const incomingTraits = {};
93
92
  const cachedTraits = {
94
93
  emails: ['cached@email.com'],
95
94
  userIds: ['user1'],
96
95
  };
97
96
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
98
- (0, vitest_1.expect)(merged.emails).toEqual(['cached@email.com']);
99
- (0, vitest_1.expect)(merged.userIds).toEqual(['user1']);
97
+ expect(merged.emails).toEqual(['cached@email.com']);
98
+ expect(merged.userIds).toEqual(['user1']);
100
99
  });
101
- (0, vitest_1.it)('should handle undefined traits correctly', () => {
100
+ it('should handle undefined traits correctly', () => {
102
101
  const merged1 = (0, at_shared_utils_1.mergeIdentityTraits)(undefined, { emails: ['test@email.com'] });
103
- (0, vitest_1.expect)(merged1.emails).toEqual(['test@email.com']);
102
+ expect(merged1.emails).toEqual(['test@email.com']);
104
103
  const merged2 = (0, at_shared_utils_1.mergeIdentityTraits)({ emails: ['test@email.com'] }, undefined);
105
- (0, vitest_1.expect)(merged2.emails).toEqual(['test@email.com']);
104
+ expect(merged2.emails).toEqual(['test@email.com']);
106
105
  const merged3 = (0, at_shared_utils_1.mergeIdentityTraits)(undefined, undefined);
107
- (0, vitest_1.expect)(merged3).toEqual({});
106
+ expect(merged3).toEqual({});
108
107
  });
109
- (0, vitest_1.it)('should preserve version information', () => {
108
+ it('should preserve version information', () => {
110
109
  const incomingTraits = {
111
110
  version: '3',
112
111
  emails: ['new@email.com'],
@@ -116,10 +115,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
116
115
  emails: ['old@email.com'],
117
116
  };
118
117
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
119
- (0, vitest_1.expect)(merged.version).toBe('3');
120
- (0, vitest_1.expect)(merged.emails).toEqual(['new@email.com', 'old@email.com']);
118
+ expect(merged.version).toBe('3');
119
+ expect(merged.emails).toEqual(['new@email.com', 'old@email.com']);
121
120
  });
122
- (0, vitest_1.it)('should handle complex nested objects', () => {
121
+ it('should handle complex nested objects', () => {
123
122
  const incomingTraits = {
124
123
  click: {
125
124
  googleClientInfos: [{ id: 'new1', clickId: 'click1', sessionId: 'session1' }],
@@ -131,13 +130,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
131
130
  },
132
131
  };
133
132
  const merged = (0, at_shared_utils_1.mergeIdentityTraits)(incomingTraits, cachedTraits);
134
- (0, vitest_1.expect)(merged.click?.googleClientInfos).toBeDefined();
135
- (0, vitest_1.expect)(Array.isArray(merged.click?.googleClientInfos)).toBe(true);
136
- (0, vitest_1.expect)(merged.click?.googleClientInfos).toEqual([{ id: 'cached1', clickId: 'click2', sessionId: 'session2' }]);
133
+ expect(merged.click?.googleClientInfos).toBeDefined();
134
+ expect(Array.isArray(merged.click?.googleClientInfos)).toBe(true);
135
+ expect(merged.click?.googleClientInfos).toEqual([{ id: 'cached1', clickId: 'click2', sessionId: 'session2' }]);
137
136
  });
138
137
  });
139
- (0, vitest_1.describe)('Integration: Merging + Staleness Checking', () => {
140
- (0, vitest_1.it)('should not be stale when merged identity matches cached identity', () => {
138
+ describe('Integration: Merging + Staleness Checking', () => {
139
+ it('should not be stale when merged identity matches cached identity', () => {
141
140
  const cachedIdentity = {
142
141
  identityId: 'test-id-123',
143
142
  traits: {
@@ -164,10 +163,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
164
163
  const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(incomingIdentity.traits, cachedIdentity.traits);
165
164
  const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
166
165
  const staleTracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, mergedIdentity);
167
- (0, vitest_1.expect)(staleTracker.isCacheStale).toBe(false);
168
- (0, vitest_1.expect)(mergedIdentity.traits?.emails).toEqual(['shared@email.com', 'cached@email.com']);
166
+ expect(staleTracker.isCacheStale).toBe(false);
167
+ expect(mergedIdentity.traits?.emails).toEqual(['shared@email.com', 'cached@email.com']);
169
168
  });
170
- (0, vitest_1.it)('should be stale when merged identity has new traits', () => {
169
+ it('should be stale when merged identity has new traits', () => {
171
170
  const cachedIdentity = {
172
171
  identityId: 'test-id-123',
173
172
  traits: {
@@ -185,17 +184,17 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
185
184
  const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(incomingIdentity.traits, cachedIdentity.traits);
186
185
  const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
187
186
  const staleTracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, mergedIdentity);
188
- (0, vitest_1.expect)(staleTracker.isCacheStale).toBe(true);
189
- (0, vitest_1.expect)(staleTracker.isEmailsStale).toBe(true);
187
+ expect(staleTracker.isCacheStale).toBe(true);
188
+ expect(staleTracker.isEmailsStale).toBe(true);
190
189
  });
191
190
  });
192
191
  });
193
- (0, vitest_1.describe)('Identity Cache Staleness Tests', () => {
194
- (0, vitest_1.afterEach)(() => {
195
- vitest_1.vi.resetModules();
192
+ describe('Identity Cache Staleness Tests', () => {
193
+ afterEach(() => {
194
+ jest.resetModules();
196
195
  });
197
- (0, vitest_1.describe)('isIdentityCacheStale function', () => {
198
- (0, vitest_1.it)('should detect identity ID changes', () => {
196
+ describe('isIdentityCacheStale function', () => {
197
+ it('should detect identity ID changes', () => {
199
198
  const cachedIdentity = {
200
199
  identityId: 'old-id',
201
200
  traits: { emails: ['test@email.com'] },
@@ -205,10 +204,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
205
204
  traits: { emails: ['test@email.com'] },
206
205
  };
207
206
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
208
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
209
- (0, vitest_1.expect)(result.isIdentityIdStale).toBe(true);
207
+ expect(result.isCacheStale).toBe(true);
208
+ expect(result.isIdentityIdStale).toBe(true);
210
209
  });
211
- (0, vitest_1.it)('should detect new emails', () => {
210
+ it('should detect new emails', () => {
212
211
  const cachedIdentity = {
213
212
  identityId: 'test-id',
214
213
  traits: { emails: ['old@email.com'] },
@@ -218,10 +217,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
218
217
  traits: { emails: ['old@email.com', 'new@email.com'] },
219
218
  };
220
219
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
221
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
222
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
220
+ expect(result.isCacheStale).toBe(true);
221
+ expect(result.isEmailsStale).toBe(true);
223
222
  });
224
- (0, vitest_1.it)('should detect new user IDs', () => {
223
+ it('should detect new user IDs', () => {
225
224
  const cachedIdentity = {
226
225
  identityId: 'test-id',
227
226
  traits: { userIds: ['user1'] },
@@ -231,10 +230,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
231
230
  traits: { userIds: ['user1', 'user2'] },
232
231
  };
233
232
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
234
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
235
- (0, vitest_1.expect)(result.isUserIdsStale).toBe(true);
233
+ expect(result.isCacheStale).toBe(true);
234
+ expect(result.isUserIdsStale).toBe(true);
236
235
  });
237
- (0, vitest_1.it)('should detect new phones', () => {
236
+ it('should detect new phones', () => {
238
237
  const cachedIdentity = {
239
238
  identityId: 'test-id',
240
239
  traits: { phones: ['+1234567890'] },
@@ -244,10 +243,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
244
243
  traits: { phones: ['+1234567890', '+9876543210'] },
245
244
  };
246
245
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
247
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
248
- (0, vitest_1.expect)(result.isPhonesStale).toBe(true);
246
+ expect(result.isCacheStale).toBe(true);
247
+ expect(result.isPhonesStale).toBe(true);
249
248
  });
250
- (0, vitest_1.it)('should detect new addresses (non-IP sourced)', () => {
249
+ it('should detect new addresses (non-IP sourced)', () => {
251
250
  const cachedIdentity = {
252
251
  identityId: 'test-id',
253
252
  traits: {
@@ -270,12 +269,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
270
269
  },
271
270
  };
272
271
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
273
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
274
- (0, vitest_1.expect)(result.isAddressesStale).toBe(true);
275
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
276
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
272
+ expect(result.isCacheStale).toBe(true);
273
+ expect(result.isAddressesStale).toBe(true);
274
+ expect(result.isNonIpAddressesStale).toBe(true);
275
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
277
276
  });
278
- (0, vitest_1.it)('should detect IP address changes but NOT mark cache stale (volatile trait)', () => {
277
+ it('should detect IP address changes but NOT mark cache stale (volatile trait)', () => {
279
278
  const cachedIdentity = {
280
279
  identityId: 'test-id',
281
280
  traits: { ipAddress: '192.168.1.1' },
@@ -285,11 +284,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
285
284
  traits: { ipAddress: '10.0.0.1' },
286
285
  };
287
286
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
288
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
289
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
290
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
287
+ expect(result.isCacheStale).toBe(false);
288
+ expect(result.isIpAddressStale).toBe(true);
289
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
291
290
  });
292
- (0, vitest_1.it)('should detect user agent changes but NOT mark cache stale (volatile trait)', () => {
291
+ it('should detect user agent changes but NOT mark cache stale (volatile trait)', () => {
293
292
  const cachedIdentity = {
294
293
  identityId: 'test-id',
295
294
  traits: { userAgent: 'Mozilla/5.0 (old browser)' },
@@ -299,11 +298,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
299
298
  traits: { userAgent: 'Mozilla/5.0 (new browser)' },
300
299
  };
301
300
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
302
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
303
- (0, vitest_1.expect)(result.isUserAgentStale).toBe(true);
304
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
301
+ expect(result.isCacheStale).toBe(false);
302
+ expect(result.isUserAgentStale).toBe(true);
303
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
305
304
  });
306
- (0, vitest_1.it)('should not be stale when no new information is provided', () => {
305
+ it('should not be stale when no new information is provided', () => {
307
306
  const cachedIdentity = {
308
307
  identityId: 'test-id',
309
308
  traits: {
@@ -320,9 +319,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
320
319
  },
321
320
  };
322
321
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
323
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
322
+ expect(result.isCacheStale).toBe(false);
324
323
  });
325
- (0, vitest_1.it)('should handle empty traits gracefully', () => {
324
+ it('should handle empty traits gracefully', () => {
326
325
  const cachedIdentity = {
327
326
  identityId: 'test-id',
328
327
  traits: {},
@@ -332,9 +331,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
332
331
  traits: {},
333
332
  };
334
333
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
335
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
334
+ expect(result.isCacheStale).toBe(false);
336
335
  });
337
- (0, vitest_1.it)('should handle undefined traits gracefully', () => {
336
+ it('should handle undefined traits gracefully', () => {
338
337
  const cachedIdentity = {
339
338
  identityId: 'test-id',
340
339
  };
@@ -342,9 +341,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
342
341
  identityId: 'test-id',
343
342
  };
344
343
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
345
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
344
+ expect(result.isCacheStale).toBe(false);
346
345
  });
347
- (0, vitest_1.it)('should detect multiple stale conditions (identity traits take priority over volatile)', () => {
346
+ it('should detect multiple stale conditions (identity traits take priority over volatile)', () => {
348
347
  const cachedIdentity = {
349
348
  identityId: 'test-id',
350
349
  traits: {
@@ -362,15 +361,15 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
362
361
  },
363
362
  };
364
363
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
365
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
366
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
367
- (0, vitest_1.expect)(result.isUserIdsStale).toBe(true);
368
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
369
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
364
+ expect(result.isCacheStale).toBe(true);
365
+ expect(result.isEmailsStale).toBe(true);
366
+ expect(result.isUserIdsStale).toBe(true);
367
+ expect(result.isIpAddressStale).toBe(true);
368
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
370
369
  });
371
370
  });
372
- (0, vitest_1.describe)('isClickInfosStale function', () => {
373
- (0, vitest_1.it)('should detect new FBC values', () => {
371
+ describe('isClickInfosStale function', () => {
372
+ it('should detect new FBC values', () => {
374
373
  const cachedClick = {
375
374
  fbc: 'fb.1.123.old_fbclid',
376
375
  };
@@ -378,9 +377,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
378
377
  fbc: 'fb.1.123.new_fbclid',
379
378
  };
380
379
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
381
- (0, vitest_1.expect)(result).toBe(true);
380
+ expect(result).toBe(true);
382
381
  });
383
- (0, vitest_1.it)('should detect new click IDs', () => {
382
+ it('should detect new click IDs', () => {
384
383
  const cachedClick = {
385
384
  gclid: 'old_gclid',
386
385
  };
@@ -388,9 +387,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
388
387
  gclid: 'new_gclid',
389
388
  };
390
389
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
391
- (0, vitest_1.expect)(result).toBe(true);
390
+ expect(result).toBe(true);
392
391
  });
393
- (0, vitest_1.it)('should ignore collection timestamps', () => {
392
+ it('should ignore collection timestamps', () => {
394
393
  const cachedClick = {
395
394
  fbp: 'fb.2.123.456',
396
395
  fbpCollectedAt: '2023-01-01T00:00:00.000Z',
@@ -400,9 +399,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
400
399
  fbpCollectedAt: '2024-01-01T00:00:00.000Z',
401
400
  };
402
401
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
403
- (0, vitest_1.expect)(result).toBe(false);
402
+ expect(result).toBe(false);
404
403
  });
405
- (0, vitest_1.it)('should ignore googleClientInfos', () => {
404
+ it('should ignore googleClientInfos', () => {
406
405
  const cachedClick = {
407
406
  googleClientInfos: [{ id: 'old', clickId: 'old_click' }],
408
407
  };
@@ -410,23 +409,23 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
410
409
  googleClientInfos: [{ id: 'new', clickId: 'new_click' }],
411
410
  };
412
411
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
413
- (0, vitest_1.expect)(result).toBe(false);
412
+ expect(result).toBe(false);
414
413
  });
415
- (0, vitest_1.it)('should handle empty click info', () => {
414
+ it('should handle empty click info', () => {
416
415
  const result = (0, at_shared_utils_1.isClickInfosStale)({}, {});
417
- (0, vitest_1.expect)(result).toBe(false);
416
+ expect(result).toBe(false);
418
417
  });
419
- (0, vitest_1.it)('should detect when incoming has new click info but cached is empty', () => {
418
+ it('should detect when incoming has new click info but cached is empty', () => {
420
419
  const cachedClick = {};
421
420
  const incomingClick = {
422
421
  fbp: 'fb.2.123.456',
423
422
  };
424
423
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
425
- (0, vitest_1.expect)(result).toBe(true);
424
+ expect(result).toBe(true);
426
425
  });
427
426
  });
428
- (0, vitest_1.describe)('Edge Cases and Error Handling', () => {
429
- (0, vitest_1.it)('should handle malformed FBC values gracefully', () => {
427
+ describe('Edge Cases and Error Handling', () => {
428
+ it('should handle malformed FBC values gracefully', () => {
430
429
  const cachedClick = {
431
430
  fbc: 'malformed_fbc',
432
431
  };
@@ -434,9 +433,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
434
433
  fbc: 'also_malformed',
435
434
  };
436
435
  const result = (0, at_shared_utils_1.isClickInfosStale)(cachedClick, incomingClick);
437
- (0, vitest_1.expect)(result).toBe(true);
436
+ expect(result).toBe(true);
438
437
  });
439
- (0, vitest_1.it)('should handle null/undefined arrays in traits', () => {
438
+ it('should handle null/undefined arrays in traits', () => {
440
439
  const cachedIdentity = {
441
440
  identityId: 'test-id',
442
441
  traits: {
@@ -452,11 +451,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
452
451
  },
453
452
  };
454
453
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
455
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
456
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
457
- (0, vitest_1.expect)(result.isUserIdsStale).toBe(true);
454
+ expect(result.isCacheStale).toBe(true);
455
+ expect(result.isEmailsStale).toBe(true);
456
+ expect(result.isUserIdsStale).toBe(true);
458
457
  });
459
- (0, vitest_1.it)('should handle arrays with null/undefined elements', () => {
458
+ it('should handle arrays with null/undefined elements', () => {
460
459
  const cachedIdentity = {
461
460
  identityId: 'test-id',
462
461
  traits: {
@@ -470,16 +469,16 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
470
469
  },
471
470
  };
472
471
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
473
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
474
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
472
+ expect(result.isCacheStale).toBe(true);
473
+ expect(result.isEmailsStale).toBe(true);
475
474
  });
476
- (0, vitest_1.it)('should handle error conditions gracefully', () => {
475
+ it('should handle error conditions gracefully', () => {
477
476
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(null, undefined);
478
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
477
+ expect(result.isCacheStale).toBe(false);
479
478
  });
480
479
  });
481
- (0, vitest_1.describe)('Comprehensive Scenario Tests', () => {
482
- (0, vitest_1.it)('should handle complex real-world scenario', () => {
480
+ describe('Comprehensive Scenario Tests', () => {
481
+ it('should handle complex real-world scenario', () => {
483
482
  const cachedIdentity = {
484
483
  identityId: '01HXRZ27H4TXWBBTRK09Q7APDP',
485
484
  traits: {
@@ -529,18 +528,18 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
529
528
  const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(cachedIdentity.traits, incomingIdentity.traits);
530
529
  const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
531
530
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, mergedIdentity);
532
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
533
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
534
- (0, vitest_1.expect)(result.isPhonesStale).toBe(true);
535
- (0, vitest_1.expect)(result.isClickInfosStale).toBe(true);
536
- (0, vitest_1.expect)(result.isAddressesStale).toBe(false);
537
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(false);
538
- (0, vitest_1.expect)(mergedIdentity.traits?.emails).toEqual(['user@domain.com', 'user.secondary@domain.com']);
539
- (0, vitest_1.expect)(mergedIdentity.traits?.phones).toEqual(['+1234567890']);
540
- (0, vitest_1.expect)(mergedIdentity.traits?.userIds).toEqual(['shopify_123']);
541
- (0, vitest_1.expect)(mergedIdentity.traits?.click?.gclid).toEqual('updated_gclid');
531
+ expect(result.isCacheStale).toBe(true);
532
+ expect(result.isEmailsStale).toBe(true);
533
+ expect(result.isPhonesStale).toBe(true);
534
+ expect(result.isClickInfosStale).toBe(true);
535
+ expect(result.isAddressesStale).toBe(false);
536
+ expect(result.isIpAddressStale).toBe(false);
537
+ expect(mergedIdentity.traits?.emails).toEqual(['user@domain.com', 'user.secondary@domain.com']);
538
+ expect(mergedIdentity.traits?.phones).toEqual(['+1234567890']);
539
+ expect(mergedIdentity.traits?.userIds).toEqual(['shopify_123']);
540
+ expect(mergedIdentity.traits?.click?.gclid).toEqual('updated_gclid');
542
541
  });
543
- (0, vitest_1.it)('should properly detect click staleness when click info actually differs', () => {
542
+ it('should properly detect click staleness when click info actually differs', () => {
544
543
  const cachedIdentity = {
545
544
  identityId: 'test-id',
546
545
  traits: {
@@ -562,10 +561,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
562
561
  const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(cachedIdentity.traits, incomingIdentity.traits);
563
562
  const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
564
563
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, mergedIdentity);
565
- (0, vitest_1.expect)(mergedTraits?.click?.gclid).toEqual('original_gclid');
566
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
564
+ expect(mergedTraits?.click?.gclid).toEqual('original_gclid');
565
+ expect(result.isCacheStale).toBe(false);
567
566
  });
568
- (0, vitest_1.it)('should handle scenario where cache is fresh', () => {
567
+ it('should handle scenario where cache is fresh', () => {
569
568
  const cachedIdentity = {
570
569
  identityId: 'test-id',
571
570
  traits: {
@@ -586,19 +585,19 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
586
585
  const mergedTraits = (0, at_shared_utils_1.mergeIdentityTraits)(cachedIdentity.traits, incomingIdentity.traits);
587
586
  const mergedIdentity = { ...incomingIdentity, traits: mergedTraits };
588
587
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, mergedIdentity);
589
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
590
- (0, vitest_1.expect)(mergedIdentity.traits?.emails).toEqual(['user@domain.com', 'secondary@domain.com']);
591
- (0, vitest_1.expect)(mergedIdentity.traits?.userIds).toEqual(['user1', 'user2']);
592
- (0, vitest_1.expect)(mergedIdentity.traits?.phones).toEqual(['+1234567890']);
588
+ expect(result.isCacheStale).toBe(false);
589
+ expect(mergedIdentity.traits?.emails).toEqual(['user@domain.com', 'secondary@domain.com']);
590
+ expect(mergedIdentity.traits?.userIds).toEqual(['user1', 'user2']);
591
+ expect(mergedIdentity.traits?.phones).toEqual(['+1234567890']);
593
592
  });
594
593
  });
595
594
  });
596
- (0, vitest_1.describe)('Three-Tier Staleness Model Tests', () => {
597
- (0, vitest_1.afterEach)(() => {
598
- vitest_1.vi.resetModules();
595
+ describe('Three-Tier Staleness Model Tests', () => {
596
+ afterEach(() => {
597
+ jest.resetModules();
599
598
  });
600
- (0, vitest_1.describe)('TIER 1: VOLATILE_ONLY (no action needed)', () => {
601
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only ipAddress is stale', () => {
599
+ describe('TIER 1: VOLATILE_ONLY (no action needed)', () => {
600
+ it('should return VOLATILE_ONLY tier when only ipAddress is stale', () => {
602
601
  const cachedIdentity = {
603
602
  identityId: 'test-id',
604
603
  traits: {
@@ -614,11 +613,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
614
613
  },
615
614
  };
616
615
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
617
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
618
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
619
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
616
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
617
+ expect(result.isCacheStale).toBe(false);
618
+ expect(result.isIpAddressStale).toBe(true);
620
619
  });
621
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only userAgent is stale', () => {
620
+ it('should return VOLATILE_ONLY tier when only userAgent is stale', () => {
622
621
  const cachedIdentity = {
623
622
  identityId: 'test-id',
624
623
  traits: {
@@ -634,16 +633,18 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
634
633
  },
635
634
  };
636
635
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
637
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
638
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
639
- (0, vitest_1.expect)(result.isUserAgentStale).toBe(true);
636
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
637
+ expect(result.isCacheStale).toBe(false);
638
+ expect(result.isUserAgentStale).toBe(true);
640
639
  });
641
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only IP-sourced addresses are stale', () => {
640
+ it('should return VOLATILE_ONLY tier when only IP-sourced addresses are stale', () => {
642
641
  const cachedIdentity = {
643
642
  identityId: 'test-id',
644
643
  traits: {
645
644
  emails: ['test@email.com'],
646
- addresses: [{ city: 'New York', country: 'USA', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
645
+ addresses: [
646
+ { city: 'New York', country: 'USA', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
647
+ ],
647
648
  },
648
649
  };
649
650
  const incomingIdentity = {
@@ -656,19 +657,21 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
656
657
  },
657
658
  };
658
659
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
659
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
660
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
661
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(true);
662
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(false);
660
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
661
+ expect(result.isCacheStale).toBe(false);
662
+ expect(result.isIpAddressesStale).toBe(true);
663
+ expect(result.isNonIpAddressesStale).toBe(false);
663
664
  });
664
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when multiple volatile traits are stale', () => {
665
+ it('should return VOLATILE_ONLY tier when multiple volatile traits are stale', () => {
665
666
  const cachedIdentity = {
666
667
  identityId: 'test-id',
667
668
  traits: {
668
669
  emails: ['test@email.com'],
669
670
  ipAddress: '192.168.1.1',
670
671
  userAgent: 'Mozilla/5.0 (old)',
671
- addresses: [{ city: 'New York', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
672
+ addresses: [
673
+ { city: 'New York', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
674
+ ],
672
675
  },
673
676
  };
674
677
  const incomingIdentity = {
@@ -677,19 +680,21 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
677
680
  emails: ['test@email.com'],
678
681
  ipAddress: '10.0.0.1',
679
682
  userAgent: 'Mozilla/5.0 (new)',
680
- addresses: [{ city: 'Chicago', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
683
+ addresses: [
684
+ { city: 'Chicago', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
685
+ ],
681
686
  },
682
687
  };
683
688
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
684
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
685
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
686
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
687
- (0, vitest_1.expect)(result.isUserAgentStale).toBe(true);
688
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(true);
689
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
690
+ expect(result.isCacheStale).toBe(false);
691
+ expect(result.isIpAddressStale).toBe(true);
692
+ expect(result.isUserAgentStale).toBe(true);
693
+ expect(result.isIpAddressesStale).toBe(true);
689
694
  });
690
695
  });
691
- (0, vitest_1.describe)('TIER 2: ADDRESS_UPDATE (cache write only, skip Neptune)', () => {
692
- (0, vitest_1.it)('should return ADDRESS_UPDATE tier when non-IP address is new', () => {
696
+ describe('TIER 2: ADDRESS_UPDATE (cache write only, skip Neptune)', () => {
697
+ it('should return ADDRESS_UPDATE tier when non-IP address is new', () => {
693
698
  const cachedIdentity = {
694
699
  identityId: 'test-id',
695
700
  traits: {
@@ -701,20 +706,24 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
701
706
  identityId: 'test-id',
702
707
  traits: {
703
708
  emails: ['test@email.com'],
704
- addresses: [{ city: 'Boston', province: 'MA', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT }],
709
+ addresses: [
710
+ { city: 'Boston', province: 'MA', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT },
711
+ ],
705
712
  },
706
713
  };
707
714
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
708
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
709
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
710
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
715
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
716
+ expect(result.isCacheStale).toBe(true);
717
+ expect(result.isNonIpAddressesStale).toBe(true);
711
718
  });
712
- (0, vitest_1.it)('should return ADDRESS_UPDATE tier when new input address added', () => {
719
+ it('should return ADDRESS_UPDATE tier when new input address added', () => {
713
720
  const cachedIdentity = {
714
721
  identityId: 'test-id',
715
722
  traits: {
716
723
  emails: ['test@email.com'],
717
- addresses: [{ city: 'New York', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT }],
724
+ addresses: [
725
+ { city: 'New York', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT },
726
+ ],
718
727
  },
719
728
  };
720
729
  const incomingIdentity = {
@@ -728,11 +737,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
728
737
  },
729
738
  };
730
739
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
731
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
732
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
733
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
740
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
741
+ expect(result.isCacheStale).toBe(true);
742
+ expect(result.isNonIpAddressesStale).toBe(true);
734
743
  });
735
- (0, vitest_1.it)('should return ADDRESS_UPDATE tier even when volatile traits are also stale', () => {
744
+ it('should return ADDRESS_UPDATE tier even when volatile traits are also stale', () => {
736
745
  const cachedIdentity = {
737
746
  identityId: 'test-id',
738
747
  traits: {
@@ -752,14 +761,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
752
761
  },
753
762
  };
754
763
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
755
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
756
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
757
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
758
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
764
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
765
+ expect(result.isCacheStale).toBe(true);
766
+ expect(result.isIpAddressStale).toBe(true);
767
+ expect(result.isNonIpAddressesStale).toBe(true);
759
768
  });
760
769
  });
761
- (0, vitest_1.describe)('TIER 3: IDENTITY_STALE (full Neptune resolution)', () => {
762
- (0, vitest_1.it)('should return IDENTITY_STALE tier when email is new', () => {
770
+ describe('TIER 3: IDENTITY_STALE (full Neptune resolution)', () => {
771
+ it('should return IDENTITY_STALE tier when email is new', () => {
763
772
  const cachedIdentity = {
764
773
  identityId: 'test-id',
765
774
  traits: {
@@ -773,11 +782,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
773
782
  },
774
783
  };
775
784
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
776
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
777
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
778
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
785
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
786
+ expect(result.isCacheStale).toBe(true);
787
+ expect(result.isEmailsStale).toBe(true);
779
788
  });
780
- (0, vitest_1.it)('should return IDENTITY_STALE tier when identityId changes', () => {
789
+ it('should return IDENTITY_STALE tier when identityId changes', () => {
781
790
  const cachedIdentity = {
782
791
  identityId: 'old-id',
783
792
  traits: { emails: ['test@email.com'] },
@@ -787,11 +796,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
787
796
  traits: { emails: ['test@email.com'] },
788
797
  };
789
798
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
790
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
791
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
792
- (0, vitest_1.expect)(result.isIdentityIdStale).toBe(true);
799
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
800
+ expect(result.isCacheStale).toBe(true);
801
+ expect(result.isIdentityIdStale).toBe(true);
793
802
  });
794
- (0, vitest_1.it)('should return IDENTITY_STALE tier when phone is new', () => {
803
+ it('should return IDENTITY_STALE tier when phone is new', () => {
795
804
  const cachedIdentity = {
796
805
  identityId: 'test-id',
797
806
  traits: { phones: ['+1234567890'] },
@@ -801,11 +810,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
801
810
  traits: { phones: ['+1234567890', '+9876543210'] },
802
811
  };
803
812
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
804
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
805
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
806
- (0, vitest_1.expect)(result.isPhonesStale).toBe(true);
813
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
814
+ expect(result.isCacheStale).toBe(true);
815
+ expect(result.isPhonesStale).toBe(true);
807
816
  });
808
- (0, vitest_1.it)('should return IDENTITY_STALE tier when click info changes', () => {
817
+ it('should return IDENTITY_STALE tier when click info changes', () => {
809
818
  const cachedIdentity = {
810
819
  identityId: 'test-id',
811
820
  traits: {
@@ -819,11 +828,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
819
828
  },
820
829
  };
821
830
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
822
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
823
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
824
- (0, vitest_1.expect)(result.isClickInfosStale).toBe(true);
831
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
832
+ expect(result.isCacheStale).toBe(true);
833
+ expect(result.isClickInfosStale).toBe(true);
825
834
  });
826
- (0, vitest_1.it)('should return IDENTITY_STALE tier when identity trait is stale even with ADDRESS_UPDATE', () => {
835
+ it('should return IDENTITY_STALE tier when identity trait is stale even with ADDRESS_UPDATE', () => {
827
836
  const cachedIdentity = {
828
837
  identityId: 'test-id',
829
838
  traits: {
@@ -841,12 +850,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
841
850
  },
842
851
  };
843
852
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
844
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
845
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
846
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
847
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
853
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
854
+ expect(result.isCacheStale).toBe(true);
855
+ expect(result.isEmailsStale).toBe(true);
856
+ expect(result.isNonIpAddressesStale).toBe(true);
848
857
  });
849
- (0, vitest_1.it)('should return IDENTITY_STALE tier when identity trait is stale even with VOLATILE_ONLY', () => {
858
+ it('should return IDENTITY_STALE tier when identity trait is stale even with VOLATILE_ONLY', () => {
850
859
  const cachedIdentity = {
851
860
  identityId: 'test-id',
852
861
  traits: {
@@ -862,14 +871,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
862
871
  },
863
872
  };
864
873
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
865
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
866
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
867
- (0, vitest_1.expect)(result.isEmailsStale).toBe(true);
868
- (0, vitest_1.expect)(result.isIpAddressStale).toBe(true);
874
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
875
+ expect(result.isCacheStale).toBe(true);
876
+ expect(result.isEmailsStale).toBe(true);
877
+ expect(result.isIpAddressStale).toBe(true);
869
878
  });
870
879
  });
871
- (0, vitest_1.describe)('TIER NONE: No staleness', () => {
872
- (0, vitest_1.it)('should return NONE tier when nothing is stale', () => {
880
+ describe('TIER NONE: No staleness', () => {
881
+ it('should return NONE tier when nothing is stale', () => {
873
882
  const cachedIdentity = {
874
883
  identityId: 'test-id',
875
884
  traits: {
@@ -887,10 +896,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
887
896
  },
888
897
  };
889
898
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
890
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
891
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
899
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
900
+ expect(result.isCacheStale).toBe(false);
892
901
  });
893
- (0, vitest_1.it)('should return NONE tier when incoming is subset of cached', () => {
902
+ it('should return NONE tier when incoming is subset of cached', () => {
894
903
  const cachedIdentity = {
895
904
  identityId: 'test-id',
896
905
  traits: {
@@ -905,16 +914,18 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
905
914
  },
906
915
  };
907
916
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
908
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
909
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
917
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
918
+ expect(result.isCacheStale).toBe(false);
910
919
  });
911
920
  });
912
- (0, vitest_1.describe)('Address source filtering', () => {
913
- (0, vitest_1.it)('should correctly identify IP-sourced addresses', () => {
921
+ describe('Address source filtering', () => {
922
+ it('should correctly identify IP-sourced addresses', () => {
914
923
  const cachedIdentity = {
915
924
  identityId: 'test-id',
916
925
  traits: {
917
- addresses: [{ city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
926
+ addresses: [
927
+ { city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
928
+ ],
918
929
  },
919
930
  };
920
931
  const incomingIdentity = {
@@ -926,15 +937,17 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
926
937
  },
927
938
  };
928
939
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
929
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(true);
930
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(false);
931
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
940
+ expect(result.isIpAddressesStale).toBe(true);
941
+ expect(result.isNonIpAddressesStale).toBe(false);
942
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
932
943
  });
933
- (0, vitest_1.it)('should correctly identify INPUT-sourced addresses', () => {
944
+ it('should correctly identify INPUT-sourced addresses', () => {
934
945
  const cachedIdentity = {
935
946
  identityId: 'test-id',
936
947
  traits: {
937
- addresses: [{ city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT }],
948
+ addresses: [
949
+ { city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT },
950
+ ],
938
951
  },
939
952
  };
940
953
  const incomingIdentity = {
@@ -947,11 +960,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
947
960
  },
948
961
  };
949
962
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
950
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(false);
951
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
952
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
963
+ expect(result.isIpAddressesStale).toBe(false);
964
+ expect(result.isNonIpAddressesStale).toBe(true);
965
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
953
966
  });
954
- (0, vitest_1.it)('should handle mixed address sources correctly', () => {
967
+ it('should handle mixed address sources correctly', () => {
955
968
  const cachedIdentity = {
956
969
  identityId: 'test-id',
957
970
  traits: {
@@ -972,12 +985,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
972
985
  },
973
986
  };
974
987
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
975
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(true);
976
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
977
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
978
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
988
+ expect(result.isIpAddressesStale).toBe(true);
989
+ expect(result.isNonIpAddressesStale).toBe(true);
990
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
991
+ expect(result.isCacheStale).toBe(true);
979
992
  });
980
- (0, vitest_1.it)('should handle addresses without source field (default to IP based on PII)', () => {
993
+ it('should handle addresses without source field (default to IP based on PII)', () => {
981
994
  const cachedIdentity = {
982
995
  identityId: 'test-id',
983
996
  traits: {
@@ -993,12 +1006,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
993
1006
  },
994
1007
  };
995
1008
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
996
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(true);
997
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(false);
998
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
999
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1009
+ expect(result.isIpAddressesStale).toBe(true);
1010
+ expect(result.isNonIpAddressesStale).toBe(false);
1011
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1012
+ expect(result.isCacheStale).toBe(false);
1000
1013
  });
1001
- (0, vitest_1.it)('should treat addresses without source but with PII as non-IP', () => {
1014
+ it('should treat addresses without source but with PII as non-IP', () => {
1002
1015
  const cachedIdentity = {
1003
1016
  identityId: 'test-id',
1004
1017
  traits: {
@@ -1014,34 +1027,38 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1014
1027
  },
1015
1028
  };
1016
1029
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1017
- (0, vitest_1.expect)(result.isNonIpAddressesStale).toBe(true);
1018
- (0, vitest_1.expect)(result.isIpAddressesStale).toBe(false);
1019
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1020
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1030
+ expect(result.isNonIpAddressesStale).toBe(true);
1031
+ expect(result.isIpAddressesStale).toBe(false);
1032
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1033
+ expect(result.isCacheStale).toBe(true);
1021
1034
  });
1022
1035
  });
1023
- (0, vitest_1.describe)('Backward compatibility', () => {
1024
- (0, vitest_1.it)('should maintain isAddressesStale for any address change', () => {
1036
+ describe('Backward compatibility', () => {
1037
+ it('should maintain isAddressesStale for any address change', () => {
1025
1038
  const cachedIdentity = {
1026
1039
  identityId: 'test-id',
1027
1040
  traits: {
1028
- addresses: [{ city: 'OldCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
1041
+ addresses: [
1042
+ { city: 'OldCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
1043
+ ],
1029
1044
  },
1030
1045
  };
1031
1046
  const incomingIdentity = {
1032
1047
  identityId: 'test-id',
1033
1048
  traits: {
1034
- addresses: [{ city: 'NewCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS }],
1049
+ addresses: [
1050
+ { city: 'NewCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.IP_ADDRESS },
1051
+ ],
1035
1052
  },
1036
1053
  };
1037
1054
  const result = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1038
- (0, vitest_1.expect)(result.isAddressesStale).toBe(true);
1039
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1055
+ expect(result.isAddressesStale).toBe(true);
1056
+ expect(result.isCacheStale).toBe(false);
1040
1057
  });
1041
1058
  });
1042
1059
  });
1043
- (0, vitest_1.describe)('extractStaleTraitNames function', () => {
1044
- (0, vitest_1.it)('should return empty array when nothing is stale', () => {
1060
+ describe('extractStaleTraitNames function', () => {
1061
+ it('should return empty array when nothing is stale', () => {
1045
1062
  const cachedIdentity = {
1046
1063
  identityId: 'test-id',
1047
1064
  traits: { emails: ['test@email.com'] },
@@ -1052,9 +1069,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1052
1069
  };
1053
1070
  const tracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1054
1071
  const staleTraits = (0, at_shared_utils_1.extractStaleTraitNames)(tracker);
1055
- (0, vitest_1.expect)(staleTraits).toEqual([]);
1072
+ expect(staleTraits).toEqual([]);
1056
1073
  });
1057
- (0, vitest_1.it)('should return identity-defining trait names when stale', () => {
1074
+ it('should return identity-defining trait names when stale', () => {
1058
1075
  const cachedIdentity = {
1059
1076
  identityId: 'test-id',
1060
1077
  traits: { emails: ['old@email.com'] },
@@ -1065,9 +1082,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1065
1082
  };
1066
1083
  const tracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1067
1084
  const staleTraits = (0, at_shared_utils_1.extractStaleTraitNames)(tracker);
1068
- (0, vitest_1.expect)(staleTraits).toContain('emails');
1085
+ expect(staleTraits).toContain('emails');
1069
1086
  });
1070
- (0, vitest_1.it)('should return multiple stale trait names', () => {
1087
+ it('should return multiple stale trait names', () => {
1071
1088
  const cachedIdentity = {
1072
1089
  identityId: 'test-id',
1073
1090
  traits: {
@@ -1084,10 +1101,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1084
1101
  };
1085
1102
  const tracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1086
1103
  const staleTraits = (0, at_shared_utils_1.extractStaleTraitNames)(tracker);
1087
- (0, vitest_1.expect)(staleTraits).toContain('emails');
1088
- (0, vitest_1.expect)(staleTraits).toContain('phones');
1104
+ expect(staleTraits).toContain('emails');
1105
+ expect(staleTraits).toContain('phones');
1089
1106
  });
1090
- (0, vitest_1.it)('should return volatile trait names when stale', () => {
1107
+ it('should return volatile trait names when stale', () => {
1091
1108
  const cachedIdentity = {
1092
1109
  identityId: 'test-id',
1093
1110
  traits: {
@@ -1104,13 +1121,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1104
1121
  };
1105
1122
  const tracker = (0, at_shared_utils_1.isIdentityCacheStale)(cachedIdentity, incomingIdentity);
1106
1123
  const staleTraits = (0, at_shared_utils_1.extractStaleTraitNames)(tracker);
1107
- (0, vitest_1.expect)(staleTraits).toContain('ipAddress');
1108
- (0, vitest_1.expect)(staleTraits).toContain('userAgent');
1124
+ expect(staleTraits).toContain('ipAddress');
1125
+ expect(staleTraits).toContain('userAgent');
1109
1126
  });
1110
1127
  });
1111
- (0, vitest_1.describe)('mergeAndComputeIdentityStaleness function', () => {
1112
- (0, vitest_1.describe)('NONE tier - cache is fresh', () => {
1113
- (0, vitest_1.it)('should return NONE tier when incoming is subset of cached', () => {
1128
+ describe('mergeAndComputeIdentityStaleness function', () => {
1129
+ describe('NONE tier - cache is fresh', () => {
1130
+ it('should return NONE tier when incoming is subset of cached', () => {
1114
1131
  const incomingIdentity = {
1115
1132
  identityId: 'test-id',
1116
1133
  traits: { emails: ['shared@email.com'] },
@@ -1123,13 +1140,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1123
1140
  },
1124
1141
  };
1125
1142
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1126
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1127
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1128
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1129
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toEqual(['shared@email.com', 'other@email.com']);
1130
- (0, vitest_1.expect)(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1143
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1144
+ expect(result.isCacheStale).toBe(false);
1145
+ expect(result.staleTraits).toEqual([]);
1146
+ expect(result.mergedIdentity.traits?.emails).toEqual(['shared@email.com', 'other@email.com']);
1147
+ expect(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1131
1148
  });
1132
- (0, vitest_1.it)('should return NONE tier when identities are identical', () => {
1149
+ it('should return NONE tier when identities are identical', () => {
1133
1150
  const incomingIdentity = {
1134
1151
  identityId: 'test-id',
1135
1152
  traits: {
@@ -1145,11 +1162,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1145
1162
  },
1146
1163
  };
1147
1164
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1148
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1149
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1150
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1165
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1166
+ expect(result.isCacheStale).toBe(false);
1167
+ expect(result.staleTraits).toEqual([]);
1151
1168
  });
1152
- (0, vitest_1.it)('should return NONE tier with identical click info', () => {
1169
+ it('should return NONE tier with identical click info', () => {
1153
1170
  const incomingIdentity = {
1154
1171
  identityId: 'test-id',
1155
1172
  traits: {
@@ -1165,12 +1182,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1165
1182
  },
1166
1183
  };
1167
1184
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1168
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1169
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1185
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1186
+ expect(result.isCacheStale).toBe(false);
1170
1187
  });
1171
1188
  });
1172
- (0, vitest_1.describe)('VOLATILE_ONLY tier - treat as cache hit', () => {
1173
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only ipAddress is new', () => {
1189
+ describe('VOLATILE_ONLY tier - treat as cache hit', () => {
1190
+ it('should return VOLATILE_ONLY tier when only ipAddress is new', () => {
1174
1191
  const incomingIdentity = {
1175
1192
  identityId: 'test-id',
1176
1193
  traits: {
@@ -1185,11 +1202,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1185
1202
  },
1186
1203
  };
1187
1204
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1188
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1189
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1190
- (0, vitest_1.expect)(result.staleTraits).toContain('ipAddress');
1205
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1206
+ expect(result.isCacheStale).toBe(false);
1207
+ expect(result.staleTraits).toContain('ipAddress');
1191
1208
  });
1192
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only userAgent is new', () => {
1209
+ it('should return VOLATILE_ONLY tier when only userAgent is new', () => {
1193
1210
  const incomingIdentity = {
1194
1211
  identityId: 'test-id',
1195
1212
  traits: {
@@ -1204,11 +1221,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1204
1221
  },
1205
1222
  };
1206
1223
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1207
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1208
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1209
- (0, vitest_1.expect)(result.staleTraits).toContain('userAgent');
1224
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1225
+ expect(result.isCacheStale).toBe(false);
1226
+ expect(result.staleTraits).toContain('userAgent');
1210
1227
  });
1211
- (0, vitest_1.it)('should return VOLATILE_ONLY tier when only IP-sourced address is new', () => {
1228
+ it('should return VOLATILE_ONLY tier when only IP-sourced address is new', () => {
1212
1229
  const incomingIdentity = {
1213
1230
  identityId: 'test-id',
1214
1231
  traits: {
@@ -1224,12 +1241,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1224
1241
  },
1225
1242
  };
1226
1243
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1227
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1228
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1244
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1245
+ expect(result.isCacheStale).toBe(false);
1229
1246
  });
1230
1247
  });
1231
- (0, vitest_1.describe)('ADDRESS_UPDATE tier - cache write only, skip Neptune', () => {
1232
- (0, vitest_1.it)('should return ADDRESS_UPDATE tier when non-IP address is new', () => {
1248
+ describe('ADDRESS_UPDATE tier - cache write only, skip Neptune', () => {
1249
+ it('should return ADDRESS_UPDATE tier when non-IP address is new', () => {
1233
1250
  const incomingIdentity = {
1234
1251
  identityId: 'test-id',
1235
1252
  traits: {
@@ -1245,11 +1262,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1245
1262
  },
1246
1263
  };
1247
1264
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1248
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1249
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1250
- (0, vitest_1.expect)(result.staleTraits).toContain('addresses');
1265
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1266
+ expect(result.isCacheStale).toBe(true);
1267
+ expect(result.staleTraits).toContain('addresses');
1251
1268
  });
1252
- (0, vitest_1.it)('should return ADDRESS_UPDATE even with volatile traits stale', () => {
1269
+ it('should return ADDRESS_UPDATE even with volatile traits stale', () => {
1253
1270
  const incomingIdentity = {
1254
1271
  identityId: 'test-id',
1255
1272
  traits: {
@@ -1267,12 +1284,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1267
1284
  },
1268
1285
  };
1269
1286
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1270
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1271
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1287
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1288
+ expect(result.isCacheStale).toBe(true);
1272
1289
  });
1273
1290
  });
1274
- (0, vitest_1.describe)('IDENTITY_STALE tier - full Neptune resolution', () => {
1275
- (0, vitest_1.it)('should return IDENTITY_STALE tier when email is new', () => {
1291
+ describe('IDENTITY_STALE tier - full Neptune resolution', () => {
1292
+ it('should return IDENTITY_STALE tier when email is new', () => {
1276
1293
  const incomingIdentity = {
1277
1294
  identityId: 'test-id',
1278
1295
  traits: { emails: ['old@email.com', 'new@email.com'] },
@@ -1282,11 +1299,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1282
1299
  traits: { emails: ['old@email.com'] },
1283
1300
  };
1284
1301
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1285
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1286
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1287
- (0, vitest_1.expect)(result.staleTraits).toContain('emails');
1302
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1303
+ expect(result.isCacheStale).toBe(true);
1304
+ expect(result.staleTraits).toContain('emails');
1288
1305
  });
1289
- (0, vitest_1.it)('should return IDENTITY_STALE tier when phone is new', () => {
1306
+ it('should return IDENTITY_STALE tier when phone is new', () => {
1290
1307
  const incomingIdentity = {
1291
1308
  identityId: 'test-id',
1292
1309
  traits: { phones: ['+1234567890', '+9876543210'] },
@@ -1296,11 +1313,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1296
1313
  traits: { phones: ['+1234567890'] },
1297
1314
  };
1298
1315
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1299
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1300
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1301
- (0, vitest_1.expect)(result.staleTraits).toContain('phones');
1316
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1317
+ expect(result.isCacheStale).toBe(true);
1318
+ expect(result.staleTraits).toContain('phones');
1302
1319
  });
1303
- (0, vitest_1.it)('should return IDENTITY_STALE tier when identityId changes', () => {
1320
+ it('should return IDENTITY_STALE tier when identityId changes', () => {
1304
1321
  const incomingIdentity = {
1305
1322
  identityId: 'new-id',
1306
1323
  traits: { emails: ['test@email.com'] },
@@ -1310,11 +1327,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1310
1327
  traits: { emails: ['test@email.com'] },
1311
1328
  };
1312
1329
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1313
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1314
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1315
- (0, vitest_1.expect)(result.staleTraits).toContain('identityId');
1330
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1331
+ expect(result.isCacheStale).toBe(true);
1332
+ expect(result.staleTraits).toContain('identityId');
1316
1333
  });
1317
- (0, vitest_1.it)('should return IDENTITY_STALE tier when click info is new', () => {
1334
+ it('should return IDENTITY_STALE tier when click info is new', () => {
1318
1335
  const incomingIdentity = {
1319
1336
  identityId: 'test-id',
1320
1337
  traits: { click: { gclid: 'new_gclid' } },
@@ -1324,11 +1341,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1324
1341
  traits: {},
1325
1342
  };
1326
1343
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1327
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1328
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1329
- (0, vitest_1.expect)(result.staleTraits).toContain('clickInfos');
1344
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1345
+ expect(result.isCacheStale).toBe(true);
1346
+ expect(result.staleTraits).toContain('clickInfos');
1330
1347
  });
1331
- (0, vitest_1.it)('should return IDENTITY_STALE even with ADDRESS_UPDATE also present', () => {
1348
+ it('should return IDENTITY_STALE even with ADDRESS_UPDATE also present', () => {
1332
1349
  const incomingIdentity = {
1333
1350
  identityId: 'test-id',
1334
1351
  traits: {
@@ -1344,14 +1361,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1344
1361
  },
1345
1362
  };
1346
1363
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1347
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1348
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1349
- (0, vitest_1.expect)(result.staleTraits).toContain('emails');
1350
- (0, vitest_1.expect)(result.staleTraits).toContain('addresses');
1364
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1365
+ expect(result.isCacheStale).toBe(true);
1366
+ expect(result.staleTraits).toContain('emails');
1367
+ expect(result.staleTraits).toContain('addresses');
1351
1368
  });
1352
1369
  });
1353
- (0, vitest_1.describe)('Merged identity structure', () => {
1354
- (0, vitest_1.it)('should preserve incoming identityId in merged identity', () => {
1370
+ describe('Merged identity structure', () => {
1371
+ it('should preserve incoming identityId in merged identity', () => {
1355
1372
  const incomingIdentity = {
1356
1373
  identityId: 'incoming-id',
1357
1374
  traits: { emails: ['test@email.com'] },
@@ -1361,9 +1378,9 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1361
1378
  traits: { phones: ['+1234567890'] },
1362
1379
  };
1363
1380
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1364
- (0, vitest_1.expect)(result.mergedIdentity.identityId).toBe('incoming-id');
1381
+ expect(result.mergedIdentity.identityId).toBe('incoming-id');
1365
1382
  });
1366
- (0, vitest_1.it)('should merge traits from both incoming and cached', () => {
1383
+ it('should merge traits from both incoming and cached', () => {
1367
1384
  const incomingIdentity = {
1368
1385
  identityId: 'test-id',
1369
1386
  traits: {
@@ -1379,14 +1396,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1379
1396
  },
1380
1397
  };
1381
1398
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1382
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toContain('incoming@email.com');
1383
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toContain('cached@email.com');
1384
- (0, vitest_1.expect)(result.mergedIdentity.traits?.userIds).toEqual(['user1']);
1385
- (0, vitest_1.expect)(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1399
+ expect(result.mergedIdentity.traits?.emails).toContain('incoming@email.com');
1400
+ expect(result.mergedIdentity.traits?.emails).toContain('cached@email.com');
1401
+ expect(result.mergedIdentity.traits?.userIds).toEqual(['user1']);
1402
+ expect(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1386
1403
  });
1387
1404
  });
1388
- (0, vitest_1.describe)('staleTracker output', () => {
1389
- (0, vitest_1.it)('should include full staleTracker with all flags', () => {
1405
+ describe('staleTracker output', () => {
1406
+ it('should include full staleTracker with all flags', () => {
1390
1407
  const incomingIdentity = {
1391
1408
  identityId: 'test-id',
1392
1409
  traits: {
@@ -1401,14 +1418,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1401
1418
  },
1402
1419
  };
1403
1420
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1404
- (0, vitest_1.expect)(result.staleTracker).toBeDefined();
1405
- (0, vitest_1.expect)(result.staleTracker.isEmailsStale).toBe(true);
1406
- (0, vitest_1.expect)(result.staleTracker.isIpAddressStale).toBe(true);
1407
- (0, vitest_1.expect)(result.staleTracker.isPhonesStale).toBe(false);
1421
+ expect(result.staleTracker).toBeDefined();
1422
+ expect(result.staleTracker.isEmailsStale).toBe(true);
1423
+ expect(result.staleTracker.isIpAddressStale).toBe(true);
1424
+ expect(result.staleTracker.isPhonesStale).toBe(false);
1408
1425
  });
1409
1426
  });
1410
- (0, vitest_1.describe)('Edge cases - empty traits', () => {
1411
- (0, vitest_1.it)('should handle empty traits on incoming identity', () => {
1427
+ describe('Edge cases - empty traits', () => {
1428
+ it('should handle empty traits on incoming identity', () => {
1412
1429
  const incomingIdentity = {
1413
1430
  identityId: 'test-id',
1414
1431
  traits: {},
@@ -1422,14 +1439,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1422
1439
  },
1423
1440
  };
1424
1441
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1425
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1426
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1427
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1428
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toEqual(['cached@email.com']);
1429
- (0, vitest_1.expect)(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1430
- (0, vitest_1.expect)(result.mergedIdentity.traits?.userIds).toEqual(['user1']);
1442
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1443
+ expect(result.isCacheStale).toBe(false);
1444
+ expect(result.staleTraits).toEqual([]);
1445
+ expect(result.mergedIdentity.traits?.emails).toEqual(['cached@email.com']);
1446
+ expect(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1447
+ expect(result.mergedIdentity.traits?.userIds).toEqual(['user1']);
1431
1448
  });
1432
- (0, vitest_1.it)('should handle empty traits on cached identity', () => {
1449
+ it('should handle empty traits on cached identity', () => {
1433
1450
  const incomingIdentity = {
1434
1451
  identityId: 'test-id',
1435
1452
  traits: {
@@ -1442,14 +1459,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1442
1459
  traits: {},
1443
1460
  };
1444
1461
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1445
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1446
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1447
- (0, vitest_1.expect)(result.staleTraits).toContain('emails');
1448
- (0, vitest_1.expect)(result.staleTraits).toContain('phones');
1449
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toEqual(['new@email.com']);
1450
- (0, vitest_1.expect)(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1462
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1463
+ expect(result.isCacheStale).toBe(true);
1464
+ expect(result.staleTraits).toContain('emails');
1465
+ expect(result.staleTraits).toContain('phones');
1466
+ expect(result.mergedIdentity.traits?.emails).toEqual(['new@email.com']);
1467
+ expect(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1451
1468
  });
1452
- (0, vitest_1.it)('should handle both identities with empty traits', () => {
1469
+ it('should handle both identities with empty traits', () => {
1453
1470
  const incomingIdentity = {
1454
1471
  identityId: 'test-id',
1455
1472
  traits: {},
@@ -1459,13 +1476,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1459
1476
  traits: {},
1460
1477
  };
1461
1478
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1462
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1463
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1464
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1479
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1480
+ expect(result.isCacheStale).toBe(false);
1481
+ expect(result.staleTraits).toEqual([]);
1465
1482
  });
1466
1483
  });
1467
- (0, vitest_1.describe)('Edge cases - null/undefined handling', () => {
1468
- (0, vitest_1.it)('should handle undefined traits on incoming identity', () => {
1484
+ describe('Edge cases - null/undefined handling', () => {
1485
+ it('should handle undefined traits on incoming identity', () => {
1469
1486
  const incomingIdentity = {
1470
1487
  identityId: 'test-id',
1471
1488
  };
@@ -1476,10 +1493,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1476
1493
  },
1477
1494
  };
1478
1495
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1479
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1480
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1496
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1497
+ expect(result.isCacheStale).toBe(false);
1481
1498
  });
1482
- (0, vitest_1.it)('should handle undefined traits on cached identity', () => {
1499
+ it('should handle undefined traits on cached identity', () => {
1483
1500
  const incomingIdentity = {
1484
1501
  identityId: 'test-id',
1485
1502
  traits: {
@@ -1490,11 +1507,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1490
1507
  identityId: 'test-id',
1491
1508
  };
1492
1509
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1493
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1494
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1495
- (0, vitest_1.expect)(result.staleTraits).toContain('emails');
1510
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1511
+ expect(result.isCacheStale).toBe(true);
1512
+ expect(result.staleTraits).toContain('emails');
1496
1513
  });
1497
- (0, vitest_1.it)('should handle both identities with undefined traits', () => {
1514
+ it('should handle both identities with undefined traits', () => {
1498
1515
  const incomingIdentity = {
1499
1516
  identityId: 'test-id',
1500
1517
  };
@@ -1502,11 +1519,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1502
1519
  identityId: 'test-id',
1503
1520
  };
1504
1521
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1505
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1506
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1507
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1522
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1523
+ expect(result.isCacheStale).toBe(false);
1524
+ expect(result.staleTraits).toEqual([]);
1508
1525
  });
1509
- (0, vitest_1.it)('should handle null values in array traits gracefully', () => {
1526
+ it('should handle null values in array traits gracefully', () => {
1510
1527
  const incomingIdentity = {
1511
1528
  identityId: 'test-id',
1512
1529
  traits: {
@@ -1520,12 +1537,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1520
1537
  },
1521
1538
  };
1522
1539
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1523
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1524
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1540
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1541
+ expect(result.isCacheStale).toBe(true);
1525
1542
  });
1526
1543
  });
1527
- (0, vitest_1.describe)('Edge cases - click trait merging', () => {
1528
- (0, vitest_1.it)('should detect staleness when incoming has new click info', () => {
1544
+ describe('Edge cases - click trait merging', () => {
1545
+ it('should detect staleness when incoming has new click info', () => {
1529
1546
  const incomingIdentity = {
1530
1547
  identityId: 'test-id',
1531
1548
  traits: {
@@ -1540,11 +1557,11 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1540
1557
  traits: {},
1541
1558
  };
1542
1559
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1543
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1544
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1545
- (0, vitest_1.expect)(result.staleTraits).toContain('clickInfos');
1560
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1561
+ expect(result.isCacheStale).toBe(true);
1562
+ expect(result.staleTraits).toContain('clickInfos');
1546
1563
  });
1547
- (0, vitest_1.it)('should preserve cached click info when merging', () => {
1564
+ it('should preserve cached click info when merging', () => {
1548
1565
  const incomingIdentity = {
1549
1566
  identityId: 'test-id',
1550
1567
  traits: {
@@ -1563,10 +1580,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1563
1580
  },
1564
1581
  };
1565
1582
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1566
- (0, vitest_1.expect)(result.mergedIdentity.traits?.click?.gclid).toBe('cached_gclid');
1567
- (0, vitest_1.expect)(result.mergedIdentity.traits?.click?.fbp).toBe('fb.1.cached.456');
1583
+ expect(result.mergedIdentity.traits?.click?.gclid).toBe('cached_gclid');
1584
+ expect(result.mergedIdentity.traits?.click?.fbp).toBe('fb.1.cached.456');
1568
1585
  });
1569
- (0, vitest_1.it)('should not be stale when click timestamps differ but values are same', () => {
1586
+ it('should not be stale when click timestamps differ but values are same', () => {
1570
1587
  const incomingIdentity = {
1571
1588
  identityId: 'test-id',
1572
1589
  traits: {
@@ -1586,10 +1603,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1586
1603
  },
1587
1604
  };
1588
1605
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1589
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1590
- (0, vitest_1.expect)(result.isCacheStale).toBe(false);
1606
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1607
+ expect(result.isCacheStale).toBe(false);
1591
1608
  });
1592
- (0, vitest_1.it)('should detect staleness when fbc changes (incoming has new fbc, cached has none)', () => {
1609
+ it('should detect staleness when fbc changes (incoming has new fbc, cached has none)', () => {
1593
1610
  const incomingIdentity = {
1594
1611
  identityId: 'test-id',
1595
1612
  traits: {
@@ -1605,13 +1622,13 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1605
1622
  },
1606
1623
  };
1607
1624
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1608
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1609
- (0, vitest_1.expect)(result.isCacheStale).toBe(true);
1610
- (0, vitest_1.expect)(result.staleTraits).toContain('clickInfos');
1625
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1626
+ expect(result.isCacheStale).toBe(true);
1627
+ expect(result.staleTraits).toContain('clickInfos');
1611
1628
  });
1612
1629
  });
1613
- (0, vitest_1.describe)('staleTraits extraction comprehensive tests', () => {
1614
- (0, vitest_1.it)('should return empty array when NONE tier', () => {
1630
+ describe('staleTraits extraction comprehensive tests', () => {
1631
+ it('should return empty array when NONE tier', () => {
1615
1632
  const incomingIdentity = {
1616
1633
  identityId: 'test-id',
1617
1634
  traits: { emails: ['test@email.com'] },
@@ -1621,10 +1638,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1621
1638
  traits: { emails: ['test@email.com', 'other@email.com'] },
1622
1639
  };
1623
1640
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1624
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1625
- (0, vitest_1.expect)(result.staleTraits).toEqual([]);
1641
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.NONE);
1642
+ expect(result.staleTraits).toEqual([]);
1626
1643
  });
1627
- (0, vitest_1.it)('should return volatile trait names for VOLATILE_ONLY tier', () => {
1644
+ it('should return volatile trait names for VOLATILE_ONLY tier', () => {
1628
1645
  const incomingIdentity = {
1629
1646
  identityId: 'test-id',
1630
1647
  traits: {
@@ -1640,12 +1657,12 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1640
1657
  },
1641
1658
  };
1642
1659
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1643
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1644
- (0, vitest_1.expect)(result.staleTraits).toContain('ipAddress');
1645
- (0, vitest_1.expect)(result.staleTraits).toContain('userAgent');
1646
- (0, vitest_1.expect)(result.staleTraits).not.toContain('emails');
1660
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.VOLATILE_ONLY);
1661
+ expect(result.staleTraits).toContain('ipAddress');
1662
+ expect(result.staleTraits).toContain('userAgent');
1663
+ expect(result.staleTraits).not.toContain('emails');
1647
1664
  });
1648
- (0, vitest_1.it)('should return address trait name for ADDRESS_UPDATE tier', () => {
1665
+ it('should return address trait name for ADDRESS_UPDATE tier', () => {
1649
1666
  const incomingIdentity = {
1650
1667
  identityId: 'test-id',
1651
1668
  traits: {
@@ -1661,10 +1678,10 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1661
1678
  },
1662
1679
  };
1663
1680
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1664
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1665
- (0, vitest_1.expect)(result.staleTraits).toContain('addresses');
1681
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.ADDRESS_UPDATE);
1682
+ expect(result.staleTraits).toContain('addresses');
1666
1683
  });
1667
- (0, vitest_1.it)('should return all stale identity trait names for IDENTITY_STALE tier', () => {
1684
+ it('should return all stale identity trait names for IDENTITY_STALE tier', () => {
1668
1685
  const incomingIdentity = {
1669
1686
  identityId: 'test-id',
1670
1687
  traits: {
@@ -1682,14 +1699,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1682
1699
  },
1683
1700
  };
1684
1701
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1685
- (0, vitest_1.expect)(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1686
- (0, vitest_1.expect)(result.staleTraits).toContain('emails');
1687
- (0, vitest_1.expect)(result.staleTraits).toContain('phones');
1688
- (0, vitest_1.expect)(result.staleTraits).toContain('userIds');
1702
+ expect(result.staleTier).toBe(at_shared_utils_1.IDENTITY_CACHE_STALENESS_TIER.IDENTITY_STALE);
1703
+ expect(result.staleTraits).toContain('emails');
1704
+ expect(result.staleTraits).toContain('phones');
1705
+ expect(result.staleTraits).toContain('userIds');
1689
1706
  });
1690
1707
  });
1691
- (0, vitest_1.describe)('Merge behavior verification', () => {
1692
- (0, vitest_1.it)('should merge incoming and cached array traits (emails, phones, userIds)', () => {
1708
+ describe('Merge behavior verification', () => {
1709
+ it('should merge incoming and cached array traits (emails, phones, userIds)', () => {
1693
1710
  const incomingIdentity = {
1694
1711
  identityId: 'incoming-id',
1695
1712
  traits: {
@@ -1706,14 +1723,14 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1706
1723
  },
1707
1724
  };
1708
1725
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1709
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toContain('incoming@email.com');
1710
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toContain('cached@email.com');
1711
- (0, vitest_1.expect)(result.mergedIdentity.traits?.emails).toContain('shared@email.com');
1712
- (0, vitest_1.expect)(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1713
- (0, vitest_1.expect)(result.mergedIdentity.traits?.userIds).toContain('incominguser');
1714
- (0, vitest_1.expect)(result.mergedIdentity.traits?.userIds).toContain('cacheduser');
1726
+ expect(result.mergedIdentity.traits?.emails).toContain('incoming@email.com');
1727
+ expect(result.mergedIdentity.traits?.emails).toContain('cached@email.com');
1728
+ expect(result.mergedIdentity.traits?.emails).toContain('shared@email.com');
1729
+ expect(result.mergedIdentity.traits?.phones).toEqual(['+1234567890']);
1730
+ expect(result.mergedIdentity.traits?.userIds).toContain('incominguser');
1731
+ expect(result.mergedIdentity.traits?.userIds).toContain('cacheduser');
1715
1732
  });
1716
- (0, vitest_1.it)('should preserve identityId from incoming identity', () => {
1733
+ it('should preserve identityId from incoming identity', () => {
1717
1734
  const incomingIdentity = {
1718
1735
  identityId: 'incoming-id-123',
1719
1736
  traits: { emails: ['test@email.com'] },
@@ -1723,26 +1740,30 @@ const at_shared_utils_1 = require("@adtrackify/at-shared-utils");
1723
1740
  traits: { phones: ['+1234567890'] },
1724
1741
  };
1725
1742
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1726
- (0, vitest_1.expect)(result.mergedIdentity.identityId).toBe('incoming-id-123');
1743
+ expect(result.mergedIdentity.identityId).toBe('incoming-id-123');
1727
1744
  });
1728
- (0, vitest_1.it)('should merge addresses from both identities', () => {
1745
+ it('should merge addresses from both identities', () => {
1729
1746
  const incomingIdentity = {
1730
1747
  identityId: 'test-id',
1731
1748
  traits: {
1732
- addresses: [{ city: 'IncomingCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT }],
1749
+ addresses: [
1750
+ { city: 'IncomingCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT },
1751
+ ],
1733
1752
  },
1734
1753
  };
1735
1754
  const cachedIdentity = {
1736
1755
  identityId: 'test-id',
1737
1756
  traits: {
1738
- addresses: [{ city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT }],
1757
+ addresses: [
1758
+ { city: 'CachedCity', s: at_tracking_event_types_1.ADDRESS_INFO_SOURCE.INPUT },
1759
+ ],
1739
1760
  },
1740
1761
  };
1741
1762
  const result = (0, at_shared_utils_1.mergeAndComputeIdentityStaleness)(incomingIdentity, cachedIdentity);
1742
- (0, vitest_1.expect)(result.mergedIdentity.traits?.addresses).toHaveLength(2);
1743
- (0, vitest_1.expect)(result.mergedIdentity.traits?.addresses).toEqual(vitest_1.expect.arrayContaining([
1744
- vitest_1.expect.objectContaining({ city: 'IncomingCity' }),
1745
- vitest_1.expect.objectContaining({ city: 'CachedCity' }),
1763
+ expect(result.mergedIdentity.traits?.addresses).toHaveLength(2);
1764
+ expect(result.mergedIdentity.traits?.addresses).toEqual(expect.arrayContaining([
1765
+ expect.objectContaining({ city: 'IncomingCity' }),
1766
+ expect.objectContaining({ city: 'CachedCity' }),
1746
1767
  ]));
1747
1768
  });
1748
1769
  });