@adtrackify/at-service-common 5.0.7 → 5.1.2

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 (1166) hide show
  1. package/dist/cjs/__tests__/clients/acuity-client.spec.d.ts +1 -1
  2. package/dist/cjs/__tests__/clients/acuity-client.spec.js +44 -43
  3. package/dist/cjs/__tests__/clients/acuity-client.spec.js.map +1 -1
  4. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.d.ts +1 -0
  5. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js +21 -0
  6. package/dist/cjs/__tests__/clients/client-timeout-inventory.spec.js.map +1 -0
  7. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.d.ts +1 -1
  8. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +365 -354
  9. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  10. package/dist/cjs/__tests__/clients/dynamodb-client.spec.d.ts +1 -1
  11. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +193 -194
  12. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  13. package/dist/cjs/__tests__/clients/event-collector-client.spec.d.ts +1 -1
  14. package/dist/cjs/__tests__/clients/event-collector-client.spec.js +227 -227
  15. package/dist/cjs/__tests__/clients/event-collector-client.spec.js.map +1 -1
  16. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.d.ts +1 -1
  17. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js +56 -55
  18. package/dist/cjs/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  19. package/dist/cjs/__tests__/clients/redis-client.spec.d.ts +1 -0
  20. package/dist/cjs/__tests__/clients/redis-client.spec.js +79 -0
  21. package/dist/cjs/__tests__/clients/redis-client.spec.js.map +1 -0
  22. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -1
  23. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +949 -931
  24. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  25. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -1
  26. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +575 -563
  27. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  28. package/dist/cjs/__tests__/clients/sqs-client.spec.d.ts +1 -1
  29. package/dist/cjs/__tests__/clients/sqs-client.spec.js +192 -191
  30. package/dist/cjs/__tests__/clients/sqs-client.spec.js.map +1 -1
  31. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.d.ts +1 -1
  32. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +1358 -1357
  33. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  34. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -1
  35. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +69 -68
  36. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  37. package/dist/cjs/__tests__/db/destinations-db-service.spec.d.ts +1 -1
  38. package/dist/cjs/__tests__/db/destinations-db-service.spec.js +123 -125
  39. package/dist/cjs/__tests__/db/destinations-db-service.spec.js.map +1 -1
  40. package/dist/cjs/__tests__/db/products-db-service.spec.d.ts +1 -1
  41. package/dist/cjs/__tests__/db/products-db-service.spec.js +90 -89
  42. package/dist/cjs/__tests__/db/products-db-service.spec.js.map +1 -1
  43. package/dist/cjs/__tests__/db/shared-read-db-services.spec.d.ts +1 -1
  44. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +90 -89
  45. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  46. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -1
  47. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +105 -104
  48. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  49. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.d.ts +1 -1
  50. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +96 -95
  51. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  52. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.d.ts +1 -1
  53. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +77 -76
  54. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  55. package/dist/cjs/__tests__/helpers/account-users-helper.spec.d.ts +1 -1
  56. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +221 -220
  57. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  58. package/dist/cjs/__tests__/helpers/acuity-helper.spec.d.ts +1 -1
  59. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +70 -69
  60. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  61. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -1
  62. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +83 -82
  63. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  64. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.d.ts +1 -1
  65. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js +47 -46
  66. package/dist/cjs/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  67. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.d.ts +1 -1
  68. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js +153 -152
  69. package/dist/cjs/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  70. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.d.ts +1 -1
  71. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js +61 -60
  72. package/dist/cjs/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  73. package/dist/cjs/__tests__/identity-cache/helpers.spec.d.ts +1 -1
  74. package/dist/cjs/__tests__/identity-cache/helpers.spec.js +593 -592
  75. package/dist/cjs/__tests__/identity-cache/helpers.spec.js.map +1 -1
  76. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.d.ts +1 -1
  77. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js +71 -70
  78. package/dist/cjs/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  79. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
  80. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +677 -676
  81. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  82. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.d.ts +1 -1
  83. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +750 -727
  84. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  85. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.d.ts +1 -1
  86. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +640 -631
  87. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  88. package/dist/cjs/__tests__/identity-cache/identity-client.spec.d.ts +1 -1
  89. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js +362 -359
  90. package/dist/cjs/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  91. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.d.ts +1 -1
  92. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +138 -137
  93. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  94. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.d.ts +1 -1
  95. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +165 -152
  96. package/dist/cjs/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  97. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.d.ts +1 -1
  98. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js +72 -71
  99. package/dist/cjs/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  100. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.d.ts +1 -1
  101. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +95 -88
  102. package/dist/cjs/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  103. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.d.ts +1 -1
  104. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +136 -135
  105. package/dist/cjs/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  106. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.d.ts +1 -1
  107. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +245 -223
  108. package/dist/cjs/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  109. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.d.ts +24 -28
  110. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js +96 -89
  111. package/dist/cjs/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  112. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.d.ts +1 -1
  113. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +1749 -1770
  114. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  115. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.d.ts +1 -1
  116. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +819 -818
  117. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  118. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -1
  119. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +585 -584
  120. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  121. package/dist/cjs/__tests__/libs/compress-decompress.spec.d.ts +1 -1
  122. package/dist/cjs/__tests__/libs/compress-decompress.spec.js +17 -16
  123. package/dist/cjs/__tests__/libs/compress-decompress.spec.js.map +1 -1
  124. package/dist/cjs/__tests__/libs/contacts.spec.d.ts +1 -1
  125. package/dist/cjs/__tests__/libs/contacts.spec.js +295 -294
  126. package/dist/cjs/__tests__/libs/contacts.spec.js.map +1 -1
  127. package/dist/cjs/__tests__/libs/currency.spec.d.ts +1 -1
  128. package/dist/cjs/__tests__/libs/currency.spec.js +221 -220
  129. package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
  130. package/dist/cjs/__tests__/libs/dates.spec.d.ts +1 -1
  131. package/dist/cjs/__tests__/libs/dates.spec.js +131 -130
  132. package/dist/cjs/__tests__/libs/dates.spec.js.map +1 -1
  133. package/dist/cjs/__tests__/libs/domain.spec.d.ts +1 -1
  134. package/dist/cjs/__tests__/libs/domain.spec.js +108 -107
  135. package/dist/cjs/__tests__/libs/domain.spec.js.map +1 -1
  136. package/dist/cjs/__tests__/libs/numbers.spec.d.ts +1 -1
  137. package/dist/cjs/__tests__/libs/numbers.spec.js +262 -261
  138. package/dist/cjs/__tests__/libs/numbers.spec.js.map +1 -1
  139. package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  140. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +32 -33
  141. package/dist/cjs/__tests__/s3-client/s3-client.spec.js.map +1 -1
  142. package/dist/cjs/__tests__/services/acuity-api-service.spec.d.ts +1 -1
  143. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +74 -71
  144. package/dist/cjs/__tests__/services/acuity-api-service.spec.js.map +1 -1
  145. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.d.ts +1 -1
  146. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js +24 -23
  147. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  148. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.d.ts +1 -1
  149. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js +3599 -3361
  150. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  151. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.d.ts +1 -1
  152. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js +115 -114
  153. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  154. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.d.ts +1 -1
  155. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js +465 -468
  156. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  157. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.d.ts +1 -1
  158. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +485 -360
  159. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  160. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +1 -1
  161. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js +39 -34
  162. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +1 -1
  163. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -1
  164. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +95 -93
  165. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  166. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -1
  167. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +62 -57
  168. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  169. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.d.ts +1 -1
  170. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js +232 -229
  171. package/dist/cjs/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  172. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.d.ts +1 -1
  173. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js +194 -191
  174. package/dist/cjs/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  175. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
  176. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +36 -35
  177. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  178. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -1
  179. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +192 -181
  180. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  181. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -1
  182. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +70 -69
  183. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  184. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -1
  185. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +147 -146
  186. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  187. package/dist/cjs/clients/generic/cognito-client.d.ts +23 -23
  188. package/dist/cjs/clients/generic/cognito-client.js +209 -209
  189. package/dist/cjs/clients/generic/cognito-client.js.map +1 -1
  190. package/dist/cjs/clients/generic/dynamodb-client.d.ts +20 -20
  191. package/dist/cjs/clients/generic/dynamodb-client.js +235 -235
  192. package/dist/cjs/clients/generic/dynamodb-client.js.map +1 -1
  193. package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
  194. package/dist/cjs/clients/generic/eventbridge-client.js +51 -51
  195. package/dist/cjs/clients/generic/eventbridge-client.js.map +1 -1
  196. package/dist/cjs/clients/generic/http-client.d.ts +14 -14
  197. package/dist/cjs/clients/generic/http-client.js +61 -61
  198. package/dist/cjs/clients/generic/http-client.js.map +1 -1
  199. package/dist/cjs/clients/generic/index.d.ts +13 -13
  200. package/dist/cjs/clients/generic/index.js +29 -29
  201. package/dist/cjs/clients/generic/lambda-invoke-client.d.ts +10 -10
  202. package/dist/cjs/clients/generic/lambda-invoke-client.js +39 -39
  203. package/dist/cjs/clients/generic/lambda-invoke-client.js.map +1 -1
  204. package/dist/cjs/clients/generic/location-client.d.ts +8 -8
  205. package/dist/cjs/clients/generic/location-client.js +31 -31
  206. package/dist/cjs/clients/generic/location-client.js.map +1 -1
  207. package/dist/cjs/clients/generic/redis-client.d.ts +33 -33
  208. package/dist/cjs/clients/generic/redis-client.js +202 -191
  209. package/dist/cjs/clients/generic/redis-client.js.map +1 -1
  210. package/dist/cjs/clients/generic/s3-client.d.ts +22 -23
  211. package/dist/cjs/clients/generic/s3-client.js +216 -216
  212. package/dist/cjs/clients/generic/s3-client.js.map +1 -1
  213. package/dist/cjs/clients/generic/singlestore-db-client.d.ts +21 -21
  214. package/dist/cjs/clients/generic/singlestore-db-client.js +102 -92
  215. package/dist/cjs/clients/generic/singlestore-db-client.js.map +1 -1
  216. package/dist/cjs/clients/generic/sqs-bundled-client.d.ts +15 -15
  217. package/dist/cjs/clients/generic/sqs-bundled-client.js +311 -311
  218. package/dist/cjs/clients/generic/sqs-bundled-client.js.map +1 -1
  219. package/dist/cjs/clients/generic/sqs-bundled-client.types.d.ts +53 -53
  220. package/dist/cjs/clients/generic/sqs-bundled-client.types.js +17 -17
  221. package/dist/cjs/clients/generic/sqs-bundled-client.types.js.map +1 -1
  222. package/dist/cjs/clients/generic/sqs-client.d.ts +53 -53
  223. package/dist/cjs/clients/generic/sqs-client.js +285 -285
  224. package/dist/cjs/clients/generic/sqs-client.js.map +1 -1
  225. package/dist/cjs/clients/generic/sqs-unbundle.d.ts +32 -32
  226. package/dist/cjs/clients/generic/sqs-unbundle.js +143 -144
  227. package/dist/cjs/clients/generic/sqs-unbundle.js.map +1 -1
  228. package/dist/cjs/clients/index.d.ts +3 -3
  229. package/dist/cjs/clients/index.js +19 -19
  230. package/dist/cjs/clients/internal-api/accounts-client.d.ts +91 -91
  231. package/dist/cjs/clients/internal-api/accounts-client.js +129 -129
  232. package/dist/cjs/clients/internal-api/accounts-client.js.map +1 -1
  233. package/dist/cjs/clients/internal-api/cache-lambda-client.d.ts +26 -26
  234. package/dist/cjs/clients/internal-api/cache-lambda-client.js +89 -89
  235. package/dist/cjs/clients/internal-api/cache-lambda-client.js.map +1 -1
  236. package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
  237. package/dist/cjs/clients/internal-api/db-management-client.js +36 -36
  238. package/dist/cjs/clients/internal-api/db-management-client.js.map +1 -1
  239. package/dist/cjs/clients/internal-api/destinations-client.d.ts +34 -34
  240. package/dist/cjs/clients/internal-api/destinations-client.js +79 -79
  241. package/dist/cjs/clients/internal-api/destinations-client.js.map +1 -1
  242. package/dist/cjs/clients/internal-api/event-collector-client.d.ts +122 -122
  243. package/dist/cjs/clients/internal-api/event-collector-client.js +78 -78
  244. package/dist/cjs/clients/internal-api/event-collector-client.js.map +1 -1
  245. package/dist/cjs/clients/internal-api/identity-client.d.ts +41 -41
  246. package/dist/cjs/clients/internal-api/identity-client.js +137 -137
  247. package/dist/cjs/clients/internal-api/identity-client.js.map +1 -1
  248. package/dist/cjs/clients/internal-api/index.d.ts +9 -9
  249. package/dist/cjs/clients/internal-api/index.js +25 -25
  250. package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +37 -37
  251. package/dist/cjs/clients/internal-api/shopify-app-install-client.js +81 -81
  252. package/dist/cjs/clients/internal-api/shopify-app-install-client.js.map +1 -1
  253. package/dist/cjs/clients/internal-api/subscriptions-client.d.ts +26 -26
  254. package/dist/cjs/clients/internal-api/subscriptions-client.js +77 -77
  255. package/dist/cjs/clients/internal-api/subscriptions-client.js.map +1 -1
  256. package/dist/cjs/clients/internal-api/users-auth-client.d.ts +35 -35
  257. package/dist/cjs/clients/internal-api/users-auth-client.js +110 -110
  258. package/dist/cjs/clients/internal-api/users-auth-client.js.map +1 -1
  259. package/dist/cjs/clients/third-party/acuity-client.d.ts +10 -10
  260. package/dist/cjs/clients/third-party/acuity-client.js +40 -40
  261. package/dist/cjs/clients/third-party/acuity-client.js.map +1 -1
  262. package/dist/cjs/clients/third-party/emailable-client.d.ts +7 -7
  263. package/dist/cjs/clients/third-party/emailable-client.js +25 -25
  264. package/dist/cjs/clients/third-party/emailable-client.js.map +1 -1
  265. package/dist/cjs/clients/third-party/exchange-rate-api-client.d.ts +17 -17
  266. package/dist/cjs/clients/third-party/exchange-rate-api-client.js +19 -19
  267. package/dist/cjs/clients/third-party/exchange-rate-api-client.js.map +1 -1
  268. package/dist/cjs/clients/third-party/index.d.ts +6 -6
  269. package/dist/cjs/clients/third-party/index.js +22 -22
  270. package/dist/cjs/clients/third-party/loops-client.d.ts +10 -10
  271. package/dist/cjs/clients/third-party/loops-client.js +30 -30
  272. package/dist/cjs/clients/third-party/loops-client.js.map +1 -1
  273. package/dist/cjs/clients/third-party/open-exchange-rates-client.d.ts +8 -8
  274. package/dist/cjs/clients/third-party/open-exchange-rates-client.js +27 -27
  275. package/dist/cjs/clients/third-party/open-exchange-rates-client.js.map +1 -1
  276. package/dist/cjs/clients/third-party/shopify/graphql-analytics-queries.d.ts +18 -18
  277. package/dist/cjs/clients/third-party/shopify/graphql-analytics-queries.js +22 -22
  278. package/dist/cjs/clients/third-party/shopify/graphql-order-queries.d.ts +25 -25
  279. package/dist/cjs/clients/third-party/shopify/graphql-order-queries.js +4 -4
  280. package/dist/cjs/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
  281. package/dist/cjs/clients/third-party/shopify/graphql-product-queries.js +5 -5
  282. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.d.ts +42 -42
  283. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js +352 -352
  284. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  285. package/dist/cjs/clients/third-party/shopify-client.d.ts +29 -29
  286. package/dist/cjs/clients/third-party/shopify-client.js +146 -146
  287. package/dist/cjs/clients/third-party/shopify-client.js.map +1 -1
  288. package/dist/cjs/constants/index.d.ts +1 -1
  289. package/dist/cjs/constants/index.js +17 -17
  290. package/dist/cjs/constants/sqs.d.ts +20 -20
  291. package/dist/cjs/constants/sqs.js +26 -26
  292. package/dist/cjs/constants/sqs.js.map +1 -1
  293. package/dist/cjs/helpers/account-users-helper.d.ts +2 -2
  294. package/dist/cjs/helpers/account-users-helper.js +22 -22
  295. package/dist/cjs/helpers/account-users-helper.js.map +1 -1
  296. package/dist/cjs/helpers/acuity-helper.d.ts +4 -4
  297. package/dist/cjs/helpers/acuity-helper.js +56 -56
  298. package/dist/cjs/helpers/acuity-helper.js.map +1 -1
  299. package/dist/cjs/helpers/api-key-auth-helper.d.ts +10 -9
  300. package/dist/cjs/helpers/api-key-auth-helper.js +40 -40
  301. package/dist/cjs/helpers/api-key-auth-helper.js.map +1 -1
  302. package/dist/cjs/helpers/api-key-authorizer-helper.d.ts +36 -36
  303. package/dist/cjs/helpers/api-key-authorizer-helper.js +87 -87
  304. package/dist/cjs/helpers/api-key-authorizer-helper.js.map +1 -1
  305. package/dist/cjs/helpers/cognito-auth-helper.d.ts +6 -5
  306. package/dist/cjs/helpers/cognito-auth-helper.js +14 -14
  307. package/dist/cjs/helpers/cognito-auth-helper.js.map +1 -1
  308. package/dist/cjs/helpers/index.d.ts +12 -12
  309. package/dist/cjs/helpers/index.js +28 -28
  310. package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
  311. package/dist/cjs/helpers/input-validation-helper.js +22 -22
  312. package/dist/cjs/helpers/input-validation-helper.js.map +1 -1
  313. package/dist/cjs/helpers/logging-helper.d.ts +16 -16
  314. package/dist/cjs/helpers/logging-helper.js +94 -84
  315. package/dist/cjs/helpers/logging-helper.js.map +1 -1
  316. package/dist/cjs/helpers/order-calculation-helper.d.ts +13 -13
  317. package/dist/cjs/helpers/order-calculation-helper.js +117 -117
  318. package/dist/cjs/helpers/order-calculation-helper.js.map +1 -1
  319. package/dist/cjs/helpers/public-api-response-helper.d.ts +21 -21
  320. package/dist/cjs/helpers/public-api-response-helper.js +45 -45
  321. package/dist/cjs/helpers/public-api-response-helper.js.map +1 -1
  322. package/dist/cjs/helpers/response-helper.d.ts +18 -18
  323. package/dist/cjs/helpers/response-helper.js +43 -43
  324. package/dist/cjs/helpers/response-helper.js.map +1 -1
  325. package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
  326. package/dist/cjs/helpers/shopify-helper.js +26 -26
  327. package/dist/cjs/helpers/shopify-helper.js.map +1 -1
  328. package/dist/cjs/helpers/sqs-utils.d.ts +6 -6
  329. package/dist/cjs/helpers/sqs-utils.js +18 -14
  330. package/dist/cjs/helpers/sqs-utils.js.map +1 -1
  331. package/dist/cjs/index.d.ts +7 -7
  332. package/dist/cjs/index.js +23 -23
  333. package/dist/cjs/libs/api-router/index.d.ts +2 -2
  334. package/dist/cjs/libs/api-router/index.js +18 -18
  335. package/dist/cjs/libs/api-router/public-api-router.d.ts +3 -3
  336. package/dist/cjs/libs/api-router/public-api-router.js +36 -36
  337. package/dist/cjs/libs/api-router/public-api-router.js.map +1 -1
  338. package/dist/cjs/libs/api-router/route-matcher.d.ts +21 -21
  339. package/dist/cjs/libs/api-router/route-matcher.js +36 -36
  340. package/dist/cjs/libs/api-router/route-matcher.js.map +1 -1
  341. package/dist/cjs/libs/click-id-parser.d.ts +23 -23
  342. package/dist/cjs/libs/click-id-parser.js +49 -49
  343. package/dist/cjs/libs/click-id-parser.js.map +1 -1
  344. package/dist/cjs/libs/compression.d.ts +2 -2
  345. package/dist/cjs/libs/compression.js +33 -33
  346. package/dist/cjs/libs/compression.js.map +1 -1
  347. package/dist/cjs/libs/contacts.d.ts +7 -7
  348. package/dist/cjs/libs/contacts.js +152 -152
  349. package/dist/cjs/libs/contacts.js.map +1 -1
  350. package/dist/cjs/libs/cookie.d.ts +17 -17
  351. package/dist/cjs/libs/cookie.js +76 -76
  352. package/dist/cjs/libs/cookie.js.map +1 -1
  353. package/dist/cjs/libs/crypto.d.ts +4 -4
  354. package/dist/cjs/libs/crypto.js +25 -25
  355. package/dist/cjs/libs/crypto.js.map +1 -1
  356. package/dist/cjs/libs/csv.d.ts +2 -2
  357. package/dist/cjs/libs/csv.js +35 -35
  358. package/dist/cjs/libs/csv.js.map +1 -1
  359. package/dist/cjs/libs/currency.d.ts +1 -1
  360. package/dist/cjs/libs/currency.js +29 -29
  361. package/dist/cjs/libs/currency.js.map +1 -1
  362. package/dist/cjs/libs/dates.d.ts +12 -12
  363. package/dist/cjs/libs/dates.js +96 -96
  364. package/dist/cjs/libs/dates.js.map +1 -1
  365. package/dist/cjs/libs/domain.d.ts +2 -2
  366. package/dist/cjs/libs/domain.js +38 -38
  367. package/dist/cjs/libs/domain.js.map +1 -1
  368. package/dist/cjs/libs/emails.d.ts +8 -8
  369. package/dist/cjs/libs/emails.js +154 -154
  370. package/dist/cjs/libs/emails.js.map +1 -1
  371. package/dist/cjs/libs/http-error.d.ts +21 -21
  372. package/dist/cjs/libs/http-error.js +63 -63
  373. package/dist/cjs/libs/http-error.js.map +1 -1
  374. package/dist/cjs/libs/http-status-codes.d.ts +58 -58
  375. package/dist/cjs/libs/http-status-codes.js +62 -62
  376. package/dist/cjs/libs/http-status-codes.js.map +1 -1
  377. package/dist/cjs/libs/index.d.ts +19 -19
  378. package/dist/cjs/libs/index.js +35 -35
  379. package/dist/cjs/libs/numbers.d.ts +1 -1
  380. package/dist/cjs/libs/numbers.js +15 -15
  381. package/dist/cjs/libs/numbers.js.map +1 -1
  382. package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
  383. package/dist/cjs/libs/referrer-parser/index.js +18 -18
  384. package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
  385. package/dist/cjs/libs/referrer-parser/referrer-data.js +3307 -3307
  386. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +19 -20
  387. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +131 -131
  388. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  389. package/dist/cjs/libs/strings.d.ts +3 -3
  390. package/dist/cjs/libs/strings.js +46 -46
  391. package/dist/cjs/libs/strings.js.map +1 -1
  392. package/dist/cjs/libs/traits.d.ts +6 -6
  393. package/dist/cjs/libs/traits.js +65 -65
  394. package/dist/cjs/libs/traits.js.map +1 -1
  395. package/dist/cjs/libs/url.d.ts +1 -1
  396. package/dist/cjs/libs/url.js +13 -13
  397. package/dist/cjs/libs/url.js.map +1 -1
  398. package/dist/cjs/services/acuity-api-service.d.ts +9 -9
  399. package/dist/cjs/services/acuity-api-service.js +73 -73
  400. package/dist/cjs/services/acuity-api-service.js.map +1 -1
  401. package/dist/cjs/services/cache/generic-cached-object.d.ts +5 -5
  402. package/dist/cjs/services/cache/generic-cached-object.js +2 -2
  403. package/dist/cjs/services/cache/index.d.ts +1 -1
  404. package/dist/cjs/services/cache/index.js +17 -17
  405. package/dist/cjs/services/cache/product-cache-service.d.ts +21 -21
  406. package/dist/cjs/services/cache/product-cache-service.js +76 -76
  407. package/dist/cjs/services/cache/product-cache-service.js.map +1 -1
  408. package/dist/cjs/services/cost/cost-calculation-types.d.ts +69 -69
  409. package/dist/cjs/services/cost/cost-calculation-types.js +18 -19
  410. package/dist/cjs/services/cost/cost-calculation-types.js.map +1 -1
  411. package/dist/cjs/services/cost/cost-calculator-service.d.ts +24 -24
  412. package/dist/cjs/services/cost/cost-calculator-service.js +495 -462
  413. package/dist/cjs/services/cost/cost-calculator-service.js.map +1 -1
  414. package/dist/cjs/services/cost/cost-currency-service.d.ts +6 -6
  415. package/dist/cjs/services/cost/cost-currency-service.js +87 -87
  416. package/dist/cjs/services/cost/cost-currency-service.js.map +1 -1
  417. package/dist/cjs/services/cost/cost-filter-service.d.ts +10 -10
  418. package/dist/cjs/services/cost/cost-filter-service.js +130 -121
  419. package/dist/cjs/services/cost/cost-filter-service.js.map +1 -1
  420. package/dist/cjs/services/cost/index.d.ts +5 -5
  421. package/dist/cjs/services/cost/index.js +21 -21
  422. package/dist/cjs/services/cost/order-cost/index.d.ts +2 -2
  423. package/dist/cjs/services/cost/order-cost/index.js +18 -18
  424. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.d.ts +23 -23
  425. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js +308 -293
  426. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  427. package/dist/cjs/services/cost/order-cost/order-cost-resolution-types.d.ts +31 -31
  428. package/dist/cjs/services/cost/order-cost/order-cost-resolution-types.js +2 -2
  429. package/dist/cjs/services/currency-exchange-rate-lookup-service.d.ts +12 -12
  430. package/dist/cjs/services/currency-exchange-rate-lookup-service.js +97 -94
  431. package/dist/cjs/services/currency-exchange-rate-lookup-service.js.map +1 -1
  432. package/dist/cjs/services/db/accounts-db-service.d.ts +9 -9
  433. package/dist/cjs/services/db/accounts-db-service.js +33 -33
  434. package/dist/cjs/services/db/accounts-db-service.js.map +1 -1
  435. package/dist/cjs/services/db/api-keys-db-service.d.ts +10 -10
  436. package/dist/cjs/services/db/api-keys-db-service.js +36 -36
  437. package/dist/cjs/services/db/api-keys-db-service.js.map +1 -1
  438. package/dist/cjs/services/db/contact-enrichments-db-service.d.ts +15 -15
  439. package/dist/cjs/services/db/contact-enrichments-db-service.js +94 -94
  440. package/dist/cjs/services/db/contact-enrichments-db-service.js.map +1 -1
  441. package/dist/cjs/services/db/currency-exchange-rates-db-service.d.ts +21 -21
  442. package/dist/cjs/services/db/currency-exchange-rates-db-service.js +39 -39
  443. package/dist/cjs/services/db/currency-exchange-rates-db-service.js.map +1 -1
  444. package/dist/cjs/services/db/custom-measures-db-service.d.ts +14 -14
  445. package/dist/cjs/services/db/custom-measures-db-service.js +48 -48
  446. package/dist/cjs/services/db/custom-measures-db-service.js.map +1 -1
  447. package/dist/cjs/services/db/destinations-db-service.d.ts +13 -13
  448. package/dist/cjs/services/db/destinations-db-service.js +74 -74
  449. package/dist/cjs/services/db/destinations-db-service.js.map +1 -1
  450. package/dist/cjs/services/db/identity-cache-db-service.d.ts +28 -28
  451. package/dist/cjs/services/db/identity-cache-db-service.js +320 -320
  452. package/dist/cjs/services/db/identity-cache-db-service.js.map +1 -1
  453. package/dist/cjs/services/db/identity-cache-dynamodb-service/constants.d.ts +3 -3
  454. package/dist/cjs/services/db/identity-cache-dynamodb-service/constants.js +6 -6
  455. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +25 -25
  456. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +529 -525
  457. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  458. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +23 -23
  459. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +236 -222
  460. package/dist/cjs/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  461. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.d.ts +4 -4
  462. package/dist/cjs/services/db/identity-cache-dynamodb-service/index.js +20 -20
  463. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.d.ts +12 -12
  464. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js +31 -31
  465. package/dist/cjs/services/db/identity-cache-dynamodb-service/key-builders.js.map +1 -1
  466. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.d.ts +82 -82
  467. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js +28 -28
  468. package/dist/cjs/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  469. package/dist/cjs/services/db/index.d.ts +22 -22
  470. package/dist/cjs/services/db/index.js +38 -38
  471. package/dist/cjs/services/db/log-events-db-service.d.ts +11 -11
  472. package/dist/cjs/services/db/log-events-db-service.js +181 -181
  473. package/dist/cjs/services/db/log-events-db-service.js.map +1 -1
  474. package/dist/cjs/services/db/pixels-db-service.d.ts +8 -8
  475. package/dist/cjs/services/db/pixels-db-service.js +35 -35
  476. package/dist/cjs/services/db/pixels-db-service.js.map +1 -1
  477. package/dist/cjs/services/db/products-db-service-types.d.ts +10 -10
  478. package/dist/cjs/services/db/products-db-service-types.js +2 -2
  479. package/dist/cjs/services/db/products-db-service.d.ts +19 -19
  480. package/dist/cjs/services/db/products-db-service.js +310 -281
  481. package/dist/cjs/services/db/products-db-service.js.map +1 -1
  482. package/dist/cjs/services/db/purchasable-contacts-db-service.d.ts +9 -9
  483. package/dist/cjs/services/db/purchasable-contacts-db-service.js +43 -43
  484. package/dist/cjs/services/db/purchasable-contacts-db-service.js.map +1 -1
  485. package/dist/cjs/services/db/purchased-contacts/index.d.ts +2 -2
  486. package/dist/cjs/services/db/purchased-contacts/index.js +18 -18
  487. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.d.ts +18 -18
  488. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js +152 -152
  489. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  490. package/dist/cjs/services/db/purchased-contacts/types.d.ts +11 -11
  491. package/dist/cjs/services/db/purchased-contacts/types.js +2 -2
  492. package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +10 -10
  493. package/dist/cjs/services/db/shopify-app-installs-db-service.js +52 -52
  494. package/dist/cjs/services/db/shopify-app-installs-db-service.js.map +1 -1
  495. package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +16 -16
  496. package/dist/cjs/services/db/shopify-products-cache-db-service.js +73 -73
  497. package/dist/cjs/services/db/shopify-products-cache-db-service.js.map +1 -1
  498. package/dist/cjs/services/db/subscriptions-db-service.d.ts +11 -11
  499. package/dist/cjs/services/db/subscriptions-db-service.js +38 -38
  500. package/dist/cjs/services/db/subscriptions-db-service.js.map +1 -1
  501. package/dist/cjs/services/db/tracking-events-db-service.d.ts +21 -21
  502. package/dist/cjs/services/db/tracking-events-db-service.js +188 -188
  503. package/dist/cjs/services/db/tracking-events-db-service.js.map +1 -1
  504. package/dist/cjs/services/db/user-accounts-db-service.d.ts +7 -7
  505. package/dist/cjs/services/db/user-accounts-db-service.js +17 -17
  506. package/dist/cjs/services/db/user-accounts-db-service.js.map +1 -1
  507. package/dist/cjs/services/email-verification/contact-email-verification-service.d.ts +7 -7
  508. package/dist/cjs/services/email-verification/contact-email-verification-service.js +101 -101
  509. package/dist/cjs/services/email-verification/contact-email-verification-service.js.map +1 -1
  510. package/dist/cjs/services/email-verification/email-verification-service.d.ts +19 -19
  511. package/dist/cjs/services/email-verification/email-verification-service.js +131 -131
  512. package/dist/cjs/services/email-verification/email-verification-service.js.map +1 -1
  513. package/dist/cjs/services/email-verification/index.d.ts +2 -2
  514. package/dist/cjs/services/email-verification/index.js +18 -18
  515. package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
  516. package/dist/cjs/services/eventbridge-integration-service.js +28 -28
  517. package/dist/cjs/services/eventbridge-integration-service.js.map +1 -1
  518. package/dist/cjs/services/events/build-collect-queue-tracking-event.d.ts +11 -11
  519. package/dist/cjs/services/events/build-collect-queue-tracking-event.js +23 -23
  520. package/dist/cjs/services/events/build-collect-queue-tracking-event.js.map +1 -1
  521. package/dist/cjs/services/events/collect-queue-tracking-service.d.ts +12 -12
  522. package/dist/cjs/services/events/collect-queue-tracking-service.js +22 -22
  523. package/dist/cjs/services/events/collect-queue-tracking-service.js.map +1 -1
  524. package/dist/cjs/services/events/index.d.ts +5 -5
  525. package/dist/cjs/services/events/index.js +21 -21
  526. package/dist/cjs/services/events/log-event-service.d.ts +19 -19
  527. package/dist/cjs/services/events/log-event-service.js +77 -77
  528. package/dist/cjs/services/events/log-event-service.js.map +1 -1
  529. package/dist/cjs/services/events/metric-event-service.d.ts +9 -9
  530. package/dist/cjs/services/events/metric-event-service.js +49 -49
  531. package/dist/cjs/services/events/metric-event-service.js.map +1 -1
  532. package/dist/cjs/services/events/tracking-event-sqs-service.d.ts +8 -8
  533. package/dist/cjs/services/events/tracking-event-sqs-service.js +36 -36
  534. package/dist/cjs/services/events/tracking-event-sqs-service.js.map +1 -1
  535. package/dist/cjs/services/generic-cache-service.d.ts +7 -7
  536. package/dist/cjs/services/generic-cache-service.js +33 -33
  537. package/dist/cjs/services/generic-cache-service.js.map +1 -1
  538. package/dist/cjs/services/index.d.ts +11 -11
  539. package/dist/cjs/services/index.js +27 -27
  540. package/dist/cjs/services/ipdata-lookup-service.d.ts +20 -20
  541. package/dist/cjs/services/ipdata-lookup-service.js +112 -112
  542. package/dist/cjs/services/ipdata-lookup-service.js.map +1 -1
  543. package/dist/cjs/services/shopify/index.d.ts +2 -2
  544. package/dist/cjs/services/shopify/index.js +18 -18
  545. package/dist/cjs/services/shopify/products/index.d.ts +1 -1
  546. package/dist/cjs/services/shopify/products/index.js +17 -17
  547. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
  548. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js +112 -112
  549. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  550. package/dist/cjs/services/shopify/shopify-graphql-transformer.d.ts +8 -8
  551. package/dist/cjs/services/shopify/shopify-graphql-transformer.js +141 -141
  552. package/dist/cjs/services/shopify/shopify-graphql-transformer.js.map +1 -1
  553. package/dist/cjs/types/acuity-types.d.ts +74 -74
  554. package/dist/cjs/types/acuity-types.js +2 -2
  555. package/dist/cjs/types/api-response.d.ts +6 -6
  556. package/dist/cjs/types/api-response.js +2 -2
  557. package/dist/cjs/types/index.d.ts +6 -6
  558. package/dist/cjs/types/index.js +45 -35
  559. package/dist/cjs/types/index.js.map +1 -1
  560. package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
  561. package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
  562. package/dist/cjs/types/internal-events/event-detail-types.js.map +1 -1
  563. package/dist/cjs/types/internal-events/index.d.ts +1 -1
  564. package/dist/cjs/types/internal-events/index.js +17 -17
  565. package/dist/cjs/types/open-exchange-rates-types.d.ts +10 -10
  566. package/dist/cjs/types/open-exchange-rates-types.js +2 -2
  567. package/dist/cjs/types/public-api-types.d.ts +24 -24
  568. package/dist/cjs/types/public-api-types.js +13 -13
  569. package/dist/cjs/types/public-api-types.js.map +1 -1
  570. package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +123 -123
  571. package/dist/cjs/types/shopify-graphql-types/admin.generated.js +2 -2
  572. package/dist/cjs/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
  573. package/dist/cjs/types/shopify-graphql-types/admin.types.js +5311 -5311
  574. package/dist/cjs/types/shopify-graphql-types/admin.types.js.map +1 -1
  575. package/dist/cjs/types/shopify-graphql-types/index.d.ts +2 -2
  576. package/dist/cjs/types/shopify-graphql-types/index.js +18 -18
  577. package/dist/cjs/types/shopify-rest-types.d.ts +767 -767
  578. package/dist/cjs/types/shopify-rest-types.js +2 -2
  579. package/dist/cjs/utils/compression.d.ts +34 -36
  580. package/dist/cjs/utils/compression.js +198 -198
  581. package/dist/cjs/utils/compression.js.map +1 -1
  582. package/dist/cjs/utils/custom-measure-formula-utils.d.ts +6 -6
  583. package/dist/cjs/utils/custom-measure-formula-utils.js +209 -209
  584. package/dist/cjs/utils/custom-measure-formula-utils.js.map +1 -1
  585. package/dist/cjs/utils/index.d.ts +4 -4
  586. package/dist/cjs/utils/index.js +20 -20
  587. package/dist/cjs/utils/retry-envelope.d.ts +12 -12
  588. package/dist/cjs/utils/retry-envelope.js +27 -28
  589. package/dist/cjs/utils/retry-envelope.js.map +1 -1
  590. package/dist/cjs/utils/size.d.ts +2 -2
  591. package/dist/cjs/utils/size.js +48 -49
  592. package/dist/cjs/utils/size.js.map +1 -1
  593. package/dist/esm/__tests__/clients/acuity-client.spec.d.ts +1 -1
  594. package/dist/esm/__tests__/clients/acuity-client.spec.js +42 -41
  595. package/dist/esm/__tests__/clients/acuity-client.spec.js.map +1 -1
  596. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.d.ts +1 -0
  597. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js +19 -0
  598. package/dist/esm/__tests__/clients/client-timeout-inventory.spec.js.map +1 -0
  599. package/dist/esm/__tests__/clients/cross-platform-compression.spec.d.ts +1 -1
  600. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +330 -329
  601. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js.map +1 -1
  602. package/dist/esm/__tests__/clients/dynamodb-client.spec.d.ts +1 -1
  603. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +191 -192
  604. package/dist/esm/__tests__/clients/dynamodb-client.spec.js.map +1 -1
  605. package/dist/esm/__tests__/clients/event-collector-client.spec.d.ts +1 -1
  606. package/dist/esm/__tests__/clients/event-collector-client.spec.js +225 -225
  607. package/dist/esm/__tests__/clients/event-collector-client.spec.js.map +1 -1
  608. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.d.ts +1 -1
  609. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js +54 -53
  610. package/dist/esm/__tests__/clients/open-exchange-rates-client.spec.js.map +1 -1
  611. package/dist/esm/__tests__/clients/redis-client.spec.d.ts +1 -0
  612. package/dist/esm/__tests__/clients/redis-client.spec.js +77 -0
  613. package/dist/esm/__tests__/clients/redis-client.spec.js.map +1 -0
  614. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -1
  615. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +914 -906
  616. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js.map +1 -1
  617. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -1
  618. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +540 -538
  619. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js.map +1 -1
  620. package/dist/esm/__tests__/clients/sqs-client.spec.d.ts +1 -1
  621. package/dist/esm/__tests__/clients/sqs-client.spec.js +190 -189
  622. package/dist/esm/__tests__/clients/sqs-client.spec.js.map +1 -1
  623. package/dist/esm/__tests__/clients/sqs-unbundle.spec.d.ts +1 -1
  624. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +1356 -1355
  625. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js.map +1 -1
  626. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -1
  627. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +67 -66
  628. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js.map +1 -1
  629. package/dist/esm/__tests__/db/destinations-db-service.spec.d.ts +1 -1
  630. package/dist/esm/__tests__/db/destinations-db-service.spec.js +121 -123
  631. package/dist/esm/__tests__/db/destinations-db-service.spec.js.map +1 -1
  632. package/dist/esm/__tests__/db/products-db-service.spec.d.ts +1 -1
  633. package/dist/esm/__tests__/db/products-db-service.spec.js +88 -87
  634. package/dist/esm/__tests__/db/products-db-service.spec.js.map +1 -1
  635. package/dist/esm/__tests__/db/shared-read-db-services.spec.d.ts +1 -1
  636. package/dist/esm/__tests__/db/shared-read-db-services.spec.js +88 -87
  637. package/dist/esm/__tests__/db/shared-read-db-services.spec.js.map +1 -1
  638. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -1
  639. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +103 -102
  640. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js.map +1 -1
  641. package/dist/esm/__tests__/db/subscriptions-db-service.spec.d.ts +1 -1
  642. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +94 -93
  643. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js.map +1 -1
  644. package/dist/esm/__tests__/db/user-accounts-db-service.spec.d.ts +1 -1
  645. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +75 -74
  646. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js.map +1 -1
  647. package/dist/esm/__tests__/helpers/account-users-helper.spec.d.ts +1 -1
  648. package/dist/esm/__tests__/helpers/account-users-helper.spec.js +219 -218
  649. package/dist/esm/__tests__/helpers/account-users-helper.spec.js.map +1 -1
  650. package/dist/esm/__tests__/helpers/acuity-helper.spec.d.ts +1 -1
  651. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +68 -67
  652. package/dist/esm/__tests__/helpers/acuity-helper.spec.js.map +1 -1
  653. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -1
  654. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +81 -80
  655. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js.map +1 -1
  656. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.d.ts +1 -1
  657. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js +45 -44
  658. package/dist/esm/__tests__/helpers/cognito-auth-helper.spec.js.map +1 -1
  659. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.d.ts +1 -1
  660. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js +151 -150
  661. package/dist/esm/__tests__/helpers/order-calculation-helper.spec.js.map +1 -1
  662. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.d.ts +1 -1
  663. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js +56 -55
  664. package/dist/esm/__tests__/helpers/public-api-response-helper.spec.js.map +1 -1
  665. package/dist/esm/__tests__/identity-cache/helpers.spec.d.ts +1 -1
  666. package/dist/esm/__tests__/identity-cache/helpers.spec.js +591 -590
  667. package/dist/esm/__tests__/identity-cache/helpers.spec.js.map +1 -1
  668. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.d.ts +1 -1
  669. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js +69 -68
  670. package/dist/esm/__tests__/identity-cache/identity-cache-alias-write.spec.js.map +1 -1
  671. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
  672. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +675 -674
  673. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js.map +1 -1
  674. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.d.ts +1 -1
  675. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js +748 -725
  676. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-db-service.spec.js.map +1 -1
  677. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.d.ts +1 -1
  678. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +638 -629
  679. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js.map +1 -1
  680. package/dist/esm/__tests__/identity-cache/identity-client.spec.d.ts +1 -1
  681. package/dist/esm/__tests__/identity-cache/identity-client.spec.js +360 -357
  682. package/dist/esm/__tests__/identity-cache/identity-client.spec.js.map +1 -1
  683. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.d.ts +1 -1
  684. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js +136 -135
  685. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-hit.spec.js.map +1 -1
  686. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.d.ts +1 -1
  687. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js +163 -150
  688. package/dist/esm/__tests__/identity-cache/identity-gateway-cache-miss.spec.js.map +1 -1
  689. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.d.ts +1 -1
  690. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js +70 -69
  691. package/dist/esm/__tests__/identity-cache/identity-gateway-constructor.spec.js.map +1 -1
  692. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.d.ts +1 -1
  693. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js +93 -86
  694. package/dist/esm/__tests__/identity-cache/identity-gateway-edge-cases.spec.js.map +1 -1
  695. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.d.ts +1 -1
  696. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js +134 -133
  697. package/dist/esm/__tests__/identity-cache/identity-gateway-enqueue-async.spec.js.map +1 -1
  698. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.d.ts +1 -1
  699. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js +243 -221
  700. package/dist/esm/__tests__/identity-cache/identity-gateway-stale-cache.spec.js.map +1 -1
  701. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.d.ts +24 -28
  702. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js +89 -82
  703. package/dist/esm/__tests__/identity-cache/identity-gateway-test-setup.js.map +1 -1
  704. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.d.ts +1 -1
  705. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +1747 -1768
  706. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js.map +1 -1
  707. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.d.ts +1 -1
  708. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +817 -816
  709. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js.map +1 -1
  710. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -1
  711. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +583 -582
  712. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js.map +1 -1
  713. package/dist/esm/__tests__/libs/compress-decompress.spec.d.ts +1 -1
  714. package/dist/esm/__tests__/libs/compress-decompress.spec.js +15 -14
  715. package/dist/esm/__tests__/libs/compress-decompress.spec.js.map +1 -1
  716. package/dist/esm/__tests__/libs/contacts.spec.d.ts +1 -1
  717. package/dist/esm/__tests__/libs/contacts.spec.js +293 -292
  718. package/dist/esm/__tests__/libs/contacts.spec.js.map +1 -1
  719. package/dist/esm/__tests__/libs/currency.spec.d.ts +1 -1
  720. package/dist/esm/__tests__/libs/currency.spec.js +219 -218
  721. package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
  722. package/dist/esm/__tests__/libs/dates.spec.d.ts +1 -1
  723. package/dist/esm/__tests__/libs/dates.spec.js +129 -128
  724. package/dist/esm/__tests__/libs/dates.spec.js.map +1 -1
  725. package/dist/esm/__tests__/libs/domain.spec.d.ts +1 -1
  726. package/dist/esm/__tests__/libs/domain.spec.js +106 -105
  727. package/dist/esm/__tests__/libs/domain.spec.js.map +1 -1
  728. package/dist/esm/__tests__/libs/numbers.spec.d.ts +1 -1
  729. package/dist/esm/__tests__/libs/numbers.spec.js +260 -259
  730. package/dist/esm/__tests__/libs/numbers.spec.js.map +1 -1
  731. package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  732. package/dist/esm/__tests__/s3-client/s3-client.spec.js +30 -31
  733. package/dist/esm/__tests__/s3-client/s3-client.spec.js.map +1 -1
  734. package/dist/esm/__tests__/services/acuity-api-service.spec.d.ts +1 -1
  735. package/dist/esm/__tests__/services/acuity-api-service.spec.js +72 -69
  736. package/dist/esm/__tests__/services/acuity-api-service.spec.js.map +1 -1
  737. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.d.ts +1 -1
  738. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js +22 -21
  739. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -1
  740. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.d.ts +1 -1
  741. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js +3597 -3359
  742. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -1
  743. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.d.ts +1 -1
  744. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js +113 -112
  745. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js.map +1 -1
  746. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.d.ts +1 -1
  747. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js +463 -466
  748. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js.map +1 -1
  749. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.d.ts +1 -1
  750. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +450 -358
  751. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -1
  752. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +1 -1
  753. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js +37 -32
  754. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +1 -1
  755. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -1
  756. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +93 -91
  757. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js.map +1 -1
  758. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -1
  759. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +60 -55
  760. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js.map +1 -1
  761. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.d.ts +1 -1
  762. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js +230 -227
  763. package/dist/esm/__tests__/services/events/collect-queue-tracking-service.spec.js.map +1 -1
  764. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.d.ts +1 -1
  765. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js +192 -189
  766. package/dist/esm/__tests__/services/events/tracking-event-sqs-service.spec.js.map +1 -1
  767. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
  768. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +34 -33
  769. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js.map +1 -1
  770. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -1
  771. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +157 -156
  772. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js.map +1 -1
  773. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -1
  774. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +68 -67
  775. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js.map +1 -1
  776. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -1
  777. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +145 -144
  778. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js.map +1 -1
  779. package/dist/esm/clients/generic/cognito-client.d.ts +23 -23
  780. package/dist/esm/clients/generic/cognito-client.js +204 -204
  781. package/dist/esm/clients/generic/cognito-client.js.map +1 -1
  782. package/dist/esm/clients/generic/dynamodb-client.d.ts +20 -20
  783. package/dist/esm/clients/generic/dynamodb-client.js +231 -231
  784. package/dist/esm/clients/generic/dynamodb-client.js.map +1 -1
  785. package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
  786. package/dist/esm/clients/generic/eventbridge-client.js +47 -47
  787. package/dist/esm/clients/generic/eventbridge-client.js.map +1 -1
  788. package/dist/esm/clients/generic/http-client.d.ts +14 -14
  789. package/dist/esm/clients/generic/http-client.js +53 -53
  790. package/dist/esm/clients/generic/http-client.js.map +1 -1
  791. package/dist/esm/clients/generic/index.d.ts +13 -13
  792. package/dist/esm/clients/generic/index.js +13 -13
  793. package/dist/esm/clients/generic/lambda-invoke-client.d.ts +10 -10
  794. package/dist/esm/clients/generic/lambda-invoke-client.js +35 -35
  795. package/dist/esm/clients/generic/lambda-invoke-client.js.map +1 -1
  796. package/dist/esm/clients/generic/location-client.d.ts +8 -8
  797. package/dist/esm/clients/generic/location-client.js +27 -27
  798. package/dist/esm/clients/generic/location-client.js.map +1 -1
  799. package/dist/esm/clients/generic/redis-client.d.ts +33 -33
  800. package/dist/esm/clients/generic/redis-client.js +195 -184
  801. package/dist/esm/clients/generic/redis-client.js.map +1 -1
  802. package/dist/esm/clients/generic/s3-client.d.ts +22 -23
  803. package/dist/esm/clients/generic/s3-client.js +209 -209
  804. package/dist/esm/clients/generic/s3-client.js.map +1 -1
  805. package/dist/esm/clients/generic/singlestore-db-client.d.ts +21 -21
  806. package/dist/esm/clients/generic/singlestore-db-client.js +65 -65
  807. package/dist/esm/clients/generic/singlestore-db-client.js.map +1 -1
  808. package/dist/esm/clients/generic/sqs-bundled-client.d.ts +15 -15
  809. package/dist/esm/clients/generic/sqs-bundled-client.js +307 -307
  810. package/dist/esm/clients/generic/sqs-bundled-client.js.map +1 -1
  811. package/dist/esm/clients/generic/sqs-bundled-client.types.d.ts +53 -53
  812. package/dist/esm/clients/generic/sqs-bundled-client.types.js +14 -14
  813. package/dist/esm/clients/generic/sqs-client.d.ts +53 -53
  814. package/dist/esm/clients/generic/sqs-client.js +281 -281
  815. package/dist/esm/clients/generic/sqs-client.js.map +1 -1
  816. package/dist/esm/clients/generic/sqs-unbundle.d.ts +32 -32
  817. package/dist/esm/clients/generic/sqs-unbundle.js +137 -137
  818. package/dist/esm/clients/generic/sqs-unbundle.js.map +1 -1
  819. package/dist/esm/clients/index.d.ts +3 -3
  820. package/dist/esm/clients/index.js +3 -3
  821. package/dist/esm/clients/internal-api/accounts-client.d.ts +91 -91
  822. package/dist/esm/clients/internal-api/accounts-client.js +125 -125
  823. package/dist/esm/clients/internal-api/accounts-client.js.map +1 -1
  824. package/dist/esm/clients/internal-api/cache-lambda-client.d.ts +26 -26
  825. package/dist/esm/clients/internal-api/cache-lambda-client.js +85 -85
  826. package/dist/esm/clients/internal-api/cache-lambda-client.js.map +1 -1
  827. package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
  828. package/dist/esm/clients/internal-api/db-management-client.js +32 -32
  829. package/dist/esm/clients/internal-api/destinations-client.d.ts +34 -34
  830. package/dist/esm/clients/internal-api/destinations-client.js +75 -75
  831. package/dist/esm/clients/internal-api/destinations-client.js.map +1 -1
  832. package/dist/esm/clients/internal-api/event-collector-client.d.ts +122 -122
  833. package/dist/esm/clients/internal-api/event-collector-client.js +74 -74
  834. package/dist/esm/clients/internal-api/event-collector-client.js.map +1 -1
  835. package/dist/esm/clients/internal-api/identity-client.d.ts +41 -41
  836. package/dist/esm/clients/internal-api/identity-client.js +133 -133
  837. package/dist/esm/clients/internal-api/identity-client.js.map +1 -1
  838. package/dist/esm/clients/internal-api/index.d.ts +9 -9
  839. package/dist/esm/clients/internal-api/index.js +9 -9
  840. package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +37 -37
  841. package/dist/esm/clients/internal-api/shopify-app-install-client.js +77 -77
  842. package/dist/esm/clients/internal-api/subscriptions-client.d.ts +26 -26
  843. package/dist/esm/clients/internal-api/subscriptions-client.js +73 -73
  844. package/dist/esm/clients/internal-api/users-auth-client.d.ts +35 -35
  845. package/dist/esm/clients/internal-api/users-auth-client.js +106 -106
  846. package/dist/esm/clients/internal-api/users-auth-client.js.map +1 -1
  847. package/dist/esm/clients/third-party/acuity-client.d.ts +10 -10
  848. package/dist/esm/clients/third-party/acuity-client.js +36 -36
  849. package/dist/esm/clients/third-party/emailable-client.d.ts +7 -7
  850. package/dist/esm/clients/third-party/emailable-client.js +21 -21
  851. package/dist/esm/clients/third-party/emailable-client.js.map +1 -1
  852. package/dist/esm/clients/third-party/exchange-rate-api-client.d.ts +17 -17
  853. package/dist/esm/clients/third-party/exchange-rate-api-client.js +15 -15
  854. package/dist/esm/clients/third-party/index.d.ts +6 -6
  855. package/dist/esm/clients/third-party/index.js +6 -6
  856. package/dist/esm/clients/third-party/loops-client.d.ts +10 -10
  857. package/dist/esm/clients/third-party/loops-client.js +26 -26
  858. package/dist/esm/clients/third-party/loops-client.js.map +1 -1
  859. package/dist/esm/clients/third-party/open-exchange-rates-client.d.ts +8 -8
  860. package/dist/esm/clients/third-party/open-exchange-rates-client.js +23 -23
  861. package/dist/esm/clients/third-party/open-exchange-rates-client.js.map +1 -1
  862. package/dist/esm/clients/third-party/shopify/graphql-analytics-queries.d.ts +18 -18
  863. package/dist/esm/clients/third-party/shopify/graphql-analytics-queries.js +19 -19
  864. package/dist/esm/clients/third-party/shopify/graphql-order-queries.d.ts +25 -25
  865. package/dist/esm/clients/third-party/shopify/graphql-order-queries.js +1 -1
  866. package/dist/esm/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
  867. package/dist/esm/clients/third-party/shopify/graphql-product-queries.js +2 -2
  868. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.d.ts +42 -42
  869. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +348 -348
  870. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js.map +1 -1
  871. package/dist/esm/clients/third-party/shopify-client.d.ts +29 -29
  872. package/dist/esm/clients/third-party/shopify-client.js +142 -142
  873. package/dist/esm/clients/third-party/shopify-client.js.map +1 -1
  874. package/dist/esm/constants/index.d.ts +1 -1
  875. package/dist/esm/constants/index.js +1 -1
  876. package/dist/esm/constants/sqs.d.ts +20 -20
  877. package/dist/esm/constants/sqs.js +22 -22
  878. package/dist/esm/constants/sqs.js.map +1 -1
  879. package/dist/esm/helpers/account-users-helper.d.ts +2 -2
  880. package/dist/esm/helpers/account-users-helper.js +18 -18
  881. package/dist/esm/helpers/account-users-helper.js.map +1 -1
  882. package/dist/esm/helpers/acuity-helper.d.ts +4 -4
  883. package/dist/esm/helpers/acuity-helper.js +51 -51
  884. package/dist/esm/helpers/acuity-helper.js.map +1 -1
  885. package/dist/esm/helpers/api-key-auth-helper.d.ts +10 -9
  886. package/dist/esm/helpers/api-key-auth-helper.js +35 -35
  887. package/dist/esm/helpers/api-key-auth-helper.js.map +1 -1
  888. package/dist/esm/helpers/api-key-authorizer-helper.d.ts +36 -36
  889. package/dist/esm/helpers/api-key-authorizer-helper.js +83 -83
  890. package/dist/esm/helpers/api-key-authorizer-helper.js.map +1 -1
  891. package/dist/esm/helpers/cognito-auth-helper.d.ts +6 -5
  892. package/dist/esm/helpers/cognito-auth-helper.js +10 -10
  893. package/dist/esm/helpers/cognito-auth-helper.js.map +1 -1
  894. package/dist/esm/helpers/index.d.ts +12 -12
  895. package/dist/esm/helpers/index.js +12 -12
  896. package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
  897. package/dist/esm/helpers/input-validation-helper.js +18 -18
  898. package/dist/esm/helpers/input-validation-helper.js.map +1 -1
  899. package/dist/esm/helpers/logging-helper.d.ts +16 -16
  900. package/dist/esm/helpers/logging-helper.js +56 -56
  901. package/dist/esm/helpers/logging-helper.js.map +1 -1
  902. package/dist/esm/helpers/order-calculation-helper.d.ts +13 -13
  903. package/dist/esm/helpers/order-calculation-helper.js +111 -111
  904. package/dist/esm/helpers/order-calculation-helper.js.map +1 -1
  905. package/dist/esm/helpers/public-api-response-helper.d.ts +21 -21
  906. package/dist/esm/helpers/public-api-response-helper.js +38 -38
  907. package/dist/esm/helpers/public-api-response-helper.js.map +1 -1
  908. package/dist/esm/helpers/response-helper.d.ts +18 -18
  909. package/dist/esm/helpers/response-helper.js +37 -37
  910. package/dist/esm/helpers/response-helper.js.map +1 -1
  911. package/dist/esm/helpers/shopify-helper.d.ts +9 -9
  912. package/dist/esm/helpers/shopify-helper.js +21 -21
  913. package/dist/esm/helpers/shopify-helper.js.map +1 -1
  914. package/dist/esm/helpers/sqs-utils.d.ts +6 -6
  915. package/dist/esm/helpers/sqs-utils.js +14 -9
  916. package/dist/esm/helpers/sqs-utils.js.map +1 -1
  917. package/dist/esm/index.d.ts +7 -7
  918. package/dist/esm/index.js +7 -7
  919. package/dist/esm/libs/api-router/index.d.ts +2 -2
  920. package/dist/esm/libs/api-router/index.js +2 -2
  921. package/dist/esm/libs/api-router/public-api-router.d.ts +3 -3
  922. package/dist/esm/libs/api-router/public-api-router.js +32 -32
  923. package/dist/esm/libs/api-router/public-api-router.js.map +1 -1
  924. package/dist/esm/libs/api-router/route-matcher.d.ts +21 -21
  925. package/dist/esm/libs/api-router/route-matcher.js +30 -30
  926. package/dist/esm/libs/api-router/route-matcher.js.map +1 -1
  927. package/dist/esm/libs/click-id-parser.d.ts +23 -23
  928. package/dist/esm/libs/click-id-parser.js +45 -45
  929. package/dist/esm/libs/click-id-parser.js.map +1 -1
  930. package/dist/esm/libs/compression.d.ts +2 -2
  931. package/dist/esm/libs/compression.js +25 -25
  932. package/dist/esm/libs/compression.js.map +1 -1
  933. package/dist/esm/libs/contacts.d.ts +7 -7
  934. package/dist/esm/libs/contacts.js +143 -143
  935. package/dist/esm/libs/contacts.js.map +1 -1
  936. package/dist/esm/libs/cookie.d.ts +17 -17
  937. package/dist/esm/libs/cookie.js +70 -70
  938. package/dist/esm/libs/cookie.js.map +1 -1
  939. package/dist/esm/libs/crypto.d.ts +4 -4
  940. package/dist/esm/libs/crypto.js +15 -15
  941. package/dist/esm/libs/csv.d.ts +2 -2
  942. package/dist/esm/libs/csv.js +30 -30
  943. package/dist/esm/libs/csv.js.map +1 -1
  944. package/dist/esm/libs/currency.d.ts +1 -1
  945. package/dist/esm/libs/currency.js +22 -22
  946. package/dist/esm/libs/currency.js.map +1 -1
  947. package/dist/esm/libs/dates.d.ts +12 -12
  948. package/dist/esm/libs/dates.js +83 -83
  949. package/dist/esm/libs/dates.js.map +1 -1
  950. package/dist/esm/libs/domain.d.ts +2 -2
  951. package/dist/esm/libs/domain.js +33 -33
  952. package/dist/esm/libs/domain.js.map +1 -1
  953. package/dist/esm/libs/emails.d.ts +8 -8
  954. package/dist/esm/libs/emails.js +146 -146
  955. package/dist/esm/libs/emails.js.map +1 -1
  956. package/dist/esm/libs/http-error.d.ts +21 -21
  957. package/dist/esm/libs/http-error.js +59 -59
  958. package/dist/esm/libs/http-error.js.map +1 -1
  959. package/dist/esm/libs/http-status-codes.d.ts +58 -58
  960. package/dist/esm/libs/http-status-codes.js +59 -59
  961. package/dist/esm/libs/index.d.ts +19 -19
  962. package/dist/esm/libs/index.js +19 -19
  963. package/dist/esm/libs/numbers.d.ts +1 -1
  964. package/dist/esm/libs/numbers.js +11 -11
  965. package/dist/esm/libs/numbers.js.map +1 -1
  966. package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
  967. package/dist/esm/libs/referrer-parser/index.js +2 -2
  968. package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
  969. package/dist/esm/libs/referrer-parser/referrer-data.js +3304 -3304
  970. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +19 -20
  971. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +124 -124
  972. package/dist/esm/libs/referrer-parser/referrer-parser-util.js.map +1 -1
  973. package/dist/esm/libs/strings.d.ts +3 -3
  974. package/dist/esm/libs/strings.js +40 -40
  975. package/dist/esm/libs/strings.js.map +1 -1
  976. package/dist/esm/libs/traits.d.ts +6 -6
  977. package/dist/esm/libs/traits.js +54 -54
  978. package/dist/esm/libs/traits.js.map +1 -1
  979. package/dist/esm/libs/url.d.ts +1 -1
  980. package/dist/esm/libs/url.js +9 -9
  981. package/dist/esm/services/acuity-api-service.d.ts +9 -9
  982. package/dist/esm/services/acuity-api-service.js +69 -69
  983. package/dist/esm/services/acuity-api-service.js.map +1 -1
  984. package/dist/esm/services/cache/generic-cached-object.d.ts +5 -5
  985. package/dist/esm/services/cache/generic-cached-object.js +1 -1
  986. package/dist/esm/services/cache/index.d.ts +1 -1
  987. package/dist/esm/services/cache/index.js +1 -1
  988. package/dist/esm/services/cache/product-cache-service.d.ts +21 -21
  989. package/dist/esm/services/cache/product-cache-service.js +68 -68
  990. package/dist/esm/services/cache/product-cache-service.js.map +1 -1
  991. package/dist/esm/services/cost/cost-calculation-types.d.ts +69 -69
  992. package/dist/esm/services/cost/cost-calculation-types.js +15 -15
  993. package/dist/esm/services/cost/cost-calculation-types.js.map +1 -1
  994. package/dist/esm/services/cost/cost-calculator-service.d.ts +24 -24
  995. package/dist/esm/services/cost/cost-calculator-service.js +489 -456
  996. package/dist/esm/services/cost/cost-calculator-service.js.map +1 -1
  997. package/dist/esm/services/cost/cost-currency-service.d.ts +6 -6
  998. package/dist/esm/services/cost/cost-currency-service.js +84 -84
  999. package/dist/esm/services/cost/cost-currency-service.js.map +1 -1
  1000. package/dist/esm/services/cost/cost-filter-service.d.ts +10 -10
  1001. package/dist/esm/services/cost/cost-filter-service.js +127 -118
  1002. package/dist/esm/services/cost/cost-filter-service.js.map +1 -1
  1003. package/dist/esm/services/cost/index.d.ts +5 -5
  1004. package/dist/esm/services/cost/index.js +5 -5
  1005. package/dist/esm/services/cost/order-cost/index.d.ts +2 -2
  1006. package/dist/esm/services/cost/order-cost/index.js +2 -2
  1007. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.d.ts +23 -23
  1008. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js +302 -287
  1009. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js.map +1 -1
  1010. package/dist/esm/services/cost/order-cost/order-cost-resolution-types.d.ts +31 -31
  1011. package/dist/esm/services/cost/order-cost/order-cost-resolution-types.js +1 -1
  1012. package/dist/esm/services/currency-exchange-rate-lookup-service.d.ts +12 -12
  1013. package/dist/esm/services/currency-exchange-rate-lookup-service.js +93 -90
  1014. package/dist/esm/services/currency-exchange-rate-lookup-service.js.map +1 -1
  1015. package/dist/esm/services/db/accounts-db-service.d.ts +9 -9
  1016. package/dist/esm/services/db/accounts-db-service.js +29 -29
  1017. package/dist/esm/services/db/accounts-db-service.js.map +1 -1
  1018. package/dist/esm/services/db/api-keys-db-service.d.ts +10 -10
  1019. package/dist/esm/services/db/api-keys-db-service.js +32 -32
  1020. package/dist/esm/services/db/api-keys-db-service.js.map +1 -1
  1021. package/dist/esm/services/db/contact-enrichments-db-service.d.ts +15 -15
  1022. package/dist/esm/services/db/contact-enrichments-db-service.js +90 -90
  1023. package/dist/esm/services/db/contact-enrichments-db-service.js.map +1 -1
  1024. package/dist/esm/services/db/currency-exchange-rates-db-service.d.ts +21 -21
  1025. package/dist/esm/services/db/currency-exchange-rates-db-service.js +35 -35
  1026. package/dist/esm/services/db/custom-measures-db-service.d.ts +14 -14
  1027. package/dist/esm/services/db/custom-measures-db-service.js +44 -44
  1028. package/dist/esm/services/db/custom-measures-db-service.js.map +1 -1
  1029. package/dist/esm/services/db/destinations-db-service.d.ts +13 -13
  1030. package/dist/esm/services/db/destinations-db-service.js +70 -70
  1031. package/dist/esm/services/db/identity-cache-db-service.d.ts +28 -28
  1032. package/dist/esm/services/db/identity-cache-db-service.js +313 -313
  1033. package/dist/esm/services/db/identity-cache-db-service.js.map +1 -1
  1034. package/dist/esm/services/db/identity-cache-dynamodb-service/constants.d.ts +3 -3
  1035. package/dist/esm/services/db/identity-cache-dynamodb-service/constants.js +3 -3
  1036. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.d.ts +25 -25
  1037. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js +525 -521
  1038. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-cache-dynamodb-db-service.js.map +1 -1
  1039. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.d.ts +23 -23
  1040. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js +232 -218
  1041. package/dist/esm/services/db/identity-cache-dynamodb-service/identity-gateway-service.js.map +1 -1
  1042. package/dist/esm/services/db/identity-cache-dynamodb-service/index.d.ts +4 -4
  1043. package/dist/esm/services/db/identity-cache-dynamodb-service/index.js +4 -4
  1044. package/dist/esm/services/db/identity-cache-dynamodb-service/key-builders.d.ts +12 -12
  1045. package/dist/esm/services/db/identity-cache-dynamodb-service/key-builders.js +23 -23
  1046. package/dist/esm/services/db/identity-cache-dynamodb-service/types.d.ts +82 -82
  1047. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js +25 -25
  1048. package/dist/esm/services/db/identity-cache-dynamodb-service/types.js.map +1 -1
  1049. package/dist/esm/services/db/index.d.ts +22 -22
  1050. package/dist/esm/services/db/index.js +22 -22
  1051. package/dist/esm/services/db/log-events-db-service.d.ts +11 -11
  1052. package/dist/esm/services/db/log-events-db-service.js +177 -177
  1053. package/dist/esm/services/db/log-events-db-service.js.map +1 -1
  1054. package/dist/esm/services/db/pixels-db-service.d.ts +8 -8
  1055. package/dist/esm/services/db/pixels-db-service.js +31 -31
  1056. package/dist/esm/services/db/products-db-service-types.d.ts +10 -10
  1057. package/dist/esm/services/db/products-db-service-types.js +1 -1
  1058. package/dist/esm/services/db/products-db-service.d.ts +19 -19
  1059. package/dist/esm/services/db/products-db-service.js +306 -277
  1060. package/dist/esm/services/db/products-db-service.js.map +1 -1
  1061. package/dist/esm/services/db/purchasable-contacts-db-service.d.ts +9 -9
  1062. package/dist/esm/services/db/purchasable-contacts-db-service.js +39 -39
  1063. package/dist/esm/services/db/purchasable-contacts-db-service.js.map +1 -1
  1064. package/dist/esm/services/db/purchased-contacts/index.d.ts +2 -2
  1065. package/dist/esm/services/db/purchased-contacts/index.js +2 -2
  1066. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.d.ts +18 -18
  1067. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js +148 -148
  1068. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js.map +1 -1
  1069. package/dist/esm/services/db/purchased-contacts/types.d.ts +11 -11
  1070. package/dist/esm/services/db/purchased-contacts/types.js +1 -1
  1071. package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +10 -10
  1072. package/dist/esm/services/db/shopify-app-installs-db-service.js +48 -48
  1073. package/dist/esm/services/db/shopify-app-installs-db-service.js.map +1 -1
  1074. package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +16 -16
  1075. package/dist/esm/services/db/shopify-products-cache-db-service.js +66 -66
  1076. package/dist/esm/services/db/shopify-products-cache-db-service.js.map +1 -1
  1077. package/dist/esm/services/db/subscriptions-db-service.d.ts +11 -11
  1078. package/dist/esm/services/db/subscriptions-db-service.js +34 -34
  1079. package/dist/esm/services/db/subscriptions-db-service.js.map +1 -1
  1080. package/dist/esm/services/db/tracking-events-db-service.d.ts +21 -21
  1081. package/dist/esm/services/db/tracking-events-db-service.js +184 -184
  1082. package/dist/esm/services/db/tracking-events-db-service.js.map +1 -1
  1083. package/dist/esm/services/db/user-accounts-db-service.d.ts +7 -7
  1084. package/dist/esm/services/db/user-accounts-db-service.js +13 -13
  1085. package/dist/esm/services/email-verification/contact-email-verification-service.d.ts +7 -7
  1086. package/dist/esm/services/email-verification/contact-email-verification-service.js +97 -97
  1087. package/dist/esm/services/email-verification/contact-email-verification-service.js.map +1 -1
  1088. package/dist/esm/services/email-verification/email-verification-service.d.ts +19 -19
  1089. package/dist/esm/services/email-verification/email-verification-service.js +127 -127
  1090. package/dist/esm/services/email-verification/email-verification-service.js.map +1 -1
  1091. package/dist/esm/services/email-verification/index.d.ts +2 -2
  1092. package/dist/esm/services/email-verification/index.js +2 -2
  1093. package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
  1094. package/dist/esm/services/eventbridge-integration-service.js +24 -24
  1095. package/dist/esm/services/events/build-collect-queue-tracking-event.d.ts +11 -11
  1096. package/dist/esm/services/events/build-collect-queue-tracking-event.js +19 -19
  1097. package/dist/esm/services/events/build-collect-queue-tracking-event.js.map +1 -1
  1098. package/dist/esm/services/events/collect-queue-tracking-service.d.ts +12 -12
  1099. package/dist/esm/services/events/collect-queue-tracking-service.js +18 -18
  1100. package/dist/esm/services/events/collect-queue-tracking-service.js.map +1 -1
  1101. package/dist/esm/services/events/index.d.ts +5 -5
  1102. package/dist/esm/services/events/index.js +5 -5
  1103. package/dist/esm/services/events/log-event-service.d.ts +19 -19
  1104. package/dist/esm/services/events/log-event-service.js +73 -73
  1105. package/dist/esm/services/events/log-event-service.js.map +1 -1
  1106. package/dist/esm/services/events/metric-event-service.d.ts +9 -9
  1107. package/dist/esm/services/events/metric-event-service.js +45 -45
  1108. package/dist/esm/services/events/metric-event-service.js.map +1 -1
  1109. package/dist/esm/services/events/tracking-event-sqs-service.d.ts +8 -8
  1110. package/dist/esm/services/events/tracking-event-sqs-service.js +32 -32
  1111. package/dist/esm/services/events/tracking-event-sqs-service.js.map +1 -1
  1112. package/dist/esm/services/generic-cache-service.d.ts +7 -7
  1113. package/dist/esm/services/generic-cache-service.js +29 -29
  1114. package/dist/esm/services/generic-cache-service.js.map +1 -1
  1115. package/dist/esm/services/index.d.ts +11 -11
  1116. package/dist/esm/services/index.js +11 -11
  1117. package/dist/esm/services/ipdata-lookup-service.d.ts +20 -20
  1118. package/dist/esm/services/ipdata-lookup-service.js +108 -108
  1119. package/dist/esm/services/ipdata-lookup-service.js.map +1 -1
  1120. package/dist/esm/services/shopify/index.d.ts +2 -2
  1121. package/dist/esm/services/shopify/index.js +2 -2
  1122. package/dist/esm/services/shopify/products/index.d.ts +1 -1
  1123. package/dist/esm/services/shopify/products/index.js +1 -1
  1124. package/dist/esm/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
  1125. package/dist/esm/services/shopify/products/shopify-products-serviceV2.js +108 -108
  1126. package/dist/esm/services/shopify/products/shopify-products-serviceV2.js.map +1 -1
  1127. package/dist/esm/services/shopify/shopify-graphql-transformer.d.ts +8 -8
  1128. package/dist/esm/services/shopify/shopify-graphql-transformer.js +138 -138
  1129. package/dist/esm/services/shopify/shopify-graphql-transformer.js.map +1 -1
  1130. package/dist/esm/types/acuity-types.d.ts +74 -74
  1131. package/dist/esm/types/acuity-types.js +1 -1
  1132. package/dist/esm/types/api-response.d.ts +6 -6
  1133. package/dist/esm/types/api-response.js +1 -1
  1134. package/dist/esm/types/index.d.ts +6 -6
  1135. package/dist/esm/types/index.js +6 -6
  1136. package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
  1137. package/dist/esm/types/internal-events/event-detail-types.js +24 -24
  1138. package/dist/esm/types/internal-events/index.d.ts +1 -1
  1139. package/dist/esm/types/internal-events/index.js +1 -1
  1140. package/dist/esm/types/open-exchange-rates-types.d.ts +10 -10
  1141. package/dist/esm/types/open-exchange-rates-types.js +1 -1
  1142. package/dist/esm/types/public-api-types.d.ts +24 -24
  1143. package/dist/esm/types/public-api-types.js +10 -10
  1144. package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +123 -123
  1145. package/dist/esm/types/shopify-graphql-types/admin.generated.js +1 -1
  1146. package/dist/esm/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
  1147. package/dist/esm/types/shopify-graphql-types/admin.types.js +5299 -5299
  1148. package/dist/esm/types/shopify-graphql-types/index.d.ts +2 -2
  1149. package/dist/esm/types/shopify-graphql-types/index.js +2 -2
  1150. package/dist/esm/types/shopify-rest-types.d.ts +767 -767
  1151. package/dist/esm/types/shopify-rest-types.js +1 -1
  1152. package/dist/esm/utils/compression.d.ts +34 -36
  1153. package/dist/esm/utils/compression.js +187 -187
  1154. package/dist/esm/utils/compression.js.map +1 -1
  1155. package/dist/esm/utils/custom-measure-formula-utils.d.ts +6 -6
  1156. package/dist/esm/utils/custom-measure-formula-utils.js +201 -201
  1157. package/dist/esm/utils/custom-measure-formula-utils.js.map +1 -1
  1158. package/dist/esm/utils/index.d.ts +4 -4
  1159. package/dist/esm/utils/index.js +4 -4
  1160. package/dist/esm/utils/retry-envelope.d.ts +12 -12
  1161. package/dist/esm/utils/retry-envelope.js +22 -22
  1162. package/dist/esm/utils/retry-envelope.js.map +1 -1
  1163. package/dist/esm/utils/size.d.ts +2 -2
  1164. package/dist/esm/utils/size.js +44 -44
  1165. package/dist/esm/utils/size.js.map +1 -1
  1166. package/package.json +45 -40
@@ -1,630 +1,639 @@
1
- import { ADDRESS_INFO_SOURCE } from '@adtrackify/at-tracking-event-types';
2
- const mockLambdaInvoke = jest.fn();
3
- const mockBuildAndSendMessage = jest.fn();
4
- const mockSQSClientConstructor = jest.fn();
5
- jest.mock('../../clients/index.js', () => ({
6
- DynamoDbClient: {
7
- safeGet: jest.fn(),
8
- safePut: jest.fn(),
9
- safeDelete: jest.fn(),
10
- safeBatchGet: jest.fn(),
11
- safeBatchWrite: jest.fn(),
12
- safeQueryByGSI: jest.fn(),
13
- batchWrite: jest.fn(),
14
- },
15
- LambdaInvokeClient: jest.fn().mockImplementation(() => ({
16
- invokeFunction: mockLambdaInvoke,
17
- })),
18
- SQSClient: jest.fn().mockImplementation((_region, _accountId, _queueName) => {
19
- mockSQSClientConstructor(_region, _accountId, _queueName);
20
- return {
21
- buildAndSendMessage: mockBuildAndSendMessage,
22
- queueUrl: `https://sqs.${_region}.amazonaws.com/${_accountId}/${_queueName}`,
23
- };
24
- }),
25
- }));
26
- jest.mock('../../helpers/index.js', () => ({
27
- Logger: {
28
- debug: jest.fn(),
29
- info: jest.fn(),
30
- warn: jest.fn(),
31
- error: jest.fn(),
32
- },
33
- }));
34
- const mockGetIdentity = jest.fn();
35
- jest.mock('../../clients/internal-api/identity-client.js', () => ({
36
- IdentityClient: jest.fn().mockImplementation(() => ({
37
- getIdentity: mockGetIdentity,
38
- })),
39
- }));
40
- import { IdentityGatewayService, } from '../../services/db/identity-cache-dynamodb-service/identity-gateway-service.js';
41
- import { IDENTITY_CACHE_WITH_CACHING_OUTCOME, } from '../../services/db/identity-cache-dynamodb-service/types.js';
42
- import { DynamoDbClient, SQSClient } from '../../clients/index.js';
43
- const mockedDynamoDbClient = DynamoDbClient;
44
- const _mockedSQSClient = SQSClient;
45
- const createService = (options = { identifyPrivateLambdaArn: 'arn:aws:lambda:us-east-1:123456789:function:identity-private' }) => {
46
- return new IdentityGatewayService(options);
47
- };
48
- describe('Identity Cache Three-Tier Routing', () => {
49
- const pixelId = 'pixel123';
50
- let service;
51
- beforeEach(() => {
52
- jest.clearAllMocks();
53
- mockedDynamoDbClient.safeGet.mockReset();
54
- mockedDynamoDbClient.safePut.mockReset();
55
- mockedDynamoDbClient.safeDelete.mockReset();
56
- mockedDynamoDbClient.safeBatchGet.mockReset();
57
- mockedDynamoDbClient.safeBatchWrite.mockReset();
58
- mockedDynamoDbClient.safeQueryByGSI.mockReset();
59
- mockedDynamoDbClient.batchWrite.mockReset();
60
- mockGetIdentity.mockReset();
61
- mockBuildAndSendMessage.mockReset();
62
- mockSQSClientConstructor.mockReset();
63
- _mockedSQSClient.mockClear();
64
- service = createService();
65
- });
66
- describe('TIER: VOLATILE_ONLY — Returns merged identity, NO Neptune, NO cache write', () => {
67
- it('should return merged identity without Neptune call when only ipAddress is stale', async () => {
68
- const incomingIdentity = {
69
- identityId: 'identity456',
70
- traits: {
71
- emails: ['test@email.com'],
72
- ipAddress: '10.0.0.1',
73
- },
74
- };
75
- const cachedResponse = {
76
- pk: `identity#${pixelId}#identity456`,
77
- pixelId,
78
- identityId: 'identity456',
79
- response: {
80
- identityId: 'identity456',
81
- traits: {
82
- emails: ['test@email.com'],
83
- ipAddress: '192.168.1.1',
84
- },
85
- },
86
- updatedAt: new Date().toISOString(),
87
- };
88
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
89
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
90
- expect(result.identity).toBeDefined();
91
- expect(result.identity?.identityId).toBe('identity456');
92
- expect(mockGetIdentity).not.toHaveBeenCalled();
93
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
94
- });
95
- it('should return merged identity without Neptune call when only userAgent is stale', async () => {
96
- const incomingIdentity = {
97
- identityId: 'identity456',
98
- traits: {
99
- emails: ['test@email.com'],
100
- userAgent: 'Chrome/120.0',
101
- },
102
- };
103
- const cachedResponse = {
104
- pk: `identity#${pixelId}#identity456`,
105
- pixelId,
106
- identityId: 'identity456',
107
- response: {
108
- identityId: 'identity456',
109
- traits: {
110
- emails: ['test@email.com'],
111
- userAgent: 'Mozilla/5.0',
112
- },
113
- },
114
- updatedAt: new Date().toISOString(),
115
- };
116
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
117
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
118
- expect(result.identity).toBeDefined();
119
- expect(mockGetIdentity).not.toHaveBeenCalled();
120
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
121
- });
122
- it('should return merged identity without Neptune call when only IP-sourced addresses are stale', async () => {
123
- const incomingIdentity = {
124
- identityId: 'identity456',
125
- traits: {
126
- emails: ['test@email.com'],
127
- addresses: [{ city: 'New York', s: ADDRESS_INFO_SOURCE.IP_ADDRESS }],
128
- },
129
- };
130
- const cachedResponse = {
131
- pk: `identity#${pixelId}#identity456`,
132
- pixelId,
133
- identityId: 'identity456',
134
- response: {
135
- identityId: 'identity456',
136
- traits: {
137
- emails: ['test@email.com'],
138
- addresses: [{ city: 'Chicago', s: ADDRESS_INFO_SOURCE.IP_ADDRESS }],
139
- },
140
- },
141
- updatedAt: new Date().toISOString(),
142
- };
143
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
144
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
145
- expect(result.identity).toBeDefined();
146
- expect(mockGetIdentity).not.toHaveBeenCalled();
147
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
148
- });
149
- });
150
- describe('TIER: IDENTITY_STALE — Calls Neptune AND writes to cache', () => {
151
- it('should call Neptune and write to cache when emails are stale', async () => {
152
- const incomingIdentity = {
153
- identityId: 'identity456',
154
- traits: {
155
- emails: ['old@email.com', 'new@email.com'],
156
- },
157
- };
158
- const cachedResponse = {
159
- pk: `identity#${pixelId}#identity456`,
160
- pixelId,
161
- identityId: 'identity456',
162
- response: {
163
- identityId: 'identity456',
164
- traits: {
165
- emails: ['old@email.com'],
166
- },
167
- },
168
- updatedAt: new Date().toISOString(),
169
- };
170
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
171
- mockGetIdentity.mockResolvedValueOnce({
172
- identityId: 'identity456',
173
- traits: { emails: ['old@email.com', 'new@email.com', 'resolved@email.com'] },
174
- });
175
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
176
- expect(result.identity).toBeDefined();
177
- expect(mockGetIdentity).toHaveBeenCalled();
178
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
179
- });
180
- it('should call Neptune and write to cache when phones are stale', async () => {
181
- const incomingIdentity = {
182
- identityId: 'identity456',
183
- traits: {
184
- phones: ['+1234567890', '+9876543210'],
185
- },
186
- };
187
- const cachedResponse = {
188
- pk: `identity#${pixelId}#identity456`,
189
- pixelId,
190
- identityId: 'identity456',
191
- response: {
192
- identityId: 'identity456',
193
- traits: {
194
- phones: ['+1234567890'],
195
- },
196
- },
197
- updatedAt: new Date().toISOString(),
198
- };
199
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
200
- mockGetIdentity.mockResolvedValueOnce({
201
- identityId: 'identity456',
202
- traits: { phones: ['+1234567890', '+9876543210'] },
203
- });
204
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
205
- expect(result.identity).toBeDefined();
206
- expect(mockGetIdentity).toHaveBeenCalled();
207
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
208
- });
209
- it('should return NEPTUNE_WRITE_BACK outcome with staleTraits in summary', async () => {
210
- const incomingIdentity = {
211
- identityId: 'identity456',
212
- traits: {
213
- emails: ['old@email.com', 'new@email.com'],
214
- },
215
- };
216
- const cachedResponse = {
217
- pk: `identity#${pixelId}#identity456`,
218
- pixelId,
219
- identityId: 'identity456',
220
- response: {
221
- identityId: 'identity456',
222
- traits: { emails: ['old@email.com'] },
223
- },
224
- updatedAt: new Date().toISOString(),
225
- };
226
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
227
- mockGetIdentity.mockResolvedValueOnce({
228
- identityId: 'identity456',
229
- traits: { emails: ['old@email.com', 'new@email.com'] },
230
- });
231
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
232
- expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
233
- expect(result.stalenessResult?.staleTraits).toContain('emails');
234
- expect(result.didCallNeptune).toBe(true);
235
- expect(result.didWriteCache).toBe(false);
236
- });
237
- });
238
- describe('CACHE_MISS — Calls Neptune AND writes to cache', () => {
239
- it('should call Neptune and write to cache on complete cache miss', async () => {
240
- const incomingIdentity = {
241
- identityId: 'identity456',
242
- traits: { emails: ['test@email.com'] },
243
- };
244
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
245
- mockGetIdentity.mockResolvedValueOnce({
246
- identityId: 'identity456',
247
- traits: { emails: ['test@email.com'] },
248
- });
249
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
250
- expect(result.identity).toBeDefined();
251
- expect(mockGetIdentity).toHaveBeenCalled();
252
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
253
- });
254
- it('should return NEPTUNE_WRITE_BACK outcome for cache miss', async () => {
255
- const incomingIdentity = {
256
- identityId: 'identity456',
257
- traits: { emails: ['test@email.com'] },
258
- };
259
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
260
- mockGetIdentity.mockResolvedValueOnce({
261
- identityId: 'identity456',
262
- traits: { emails: ['test@email.com'] },
263
- });
264
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
265
- expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
266
- expect(result.didCallNeptune).toBe(true);
267
- expect(result.didWriteCache).toBe(false);
268
- });
269
- });
270
- describe('EMAIL_POINTER_DISCOVERY — Calls Neptune with discovered identityId', () => {
271
- it('should call Neptune with discovered identityId from email pointer', async () => {
272
- const incomingIdentity = {
273
- traits: { emails: ['test@email.com'] },
274
- };
275
- const pointerRecord = {
276
- pk: `email#${pixelId}#test@email.com`,
277
- pixelId,
278
- identityId: 'discovered-id',
279
- gsi1pk: 'discovered-id',
280
- updatedAt: new Date().toISOString(),
281
- };
282
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(pointerRecord);
283
- mockGetIdentity.mockResolvedValueOnce({
284
- identityId: 'discovered-id',
285
- traits: { emails: ['test@email.com', 'other@email.com'] },
286
- });
287
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
288
- expect(result.identity?.identityId).toBe('discovered-id');
289
- expect(mockGetIdentity).toHaveBeenCalledWith(pixelId, expect.objectContaining({
290
- identity: expect.objectContaining({
291
- identityId: 'discovered-id',
292
- traits: expect.objectContaining({ emails: ['test@email.com'] }),
293
- }),
294
- }));
295
- });
296
- });
297
- });
298
- describe('Identity Cache stripAddressTimestamps', () => {
299
- const pixelId = 'pixel123';
300
- let service;
301
- beforeEach(() => {
302
- jest.clearAllMocks();
303
- mockedDynamoDbClient.safeGet.mockReset();
304
- mockedDynamoDbClient.safeBatchWrite.mockReset();
305
- mockGetIdentity.mockReset();
306
- service = createService();
307
- });
308
- it('should strip cra and upa from addresses during comparison', async () => {
309
- const incomingIdentity = {
310
- identityId: 'identity456',
311
- traits: {
312
- emails: ['test@email.com'],
313
- addresses: [
314
- {
315
- city: 'Test City',
316
- s: ADDRESS_INFO_SOURCE.INPUT,
317
- cra: Date.parse('2024-01-01T00:00:00Z'),
318
- upa: Date.parse('2024-01-15T00:00:00Z'),
319
- },
320
- ],
321
- },
322
- };
323
- const cachedResponse = {
324
- pk: `identity#${pixelId}#identity456`,
325
- pixelId,
326
- identityId: 'identity456',
327
- response: {
328
- identityId: 'identity456',
329
- traits: {
330
- emails: ['test@email.com'],
331
- addresses: [
332
- {
333
- city: 'Test City',
334
- s: ADDRESS_INFO_SOURCE.INPUT,
335
- cra: Date.parse('2023-06-01T00:00:00Z'),
336
- upa: Date.parse('2023-12-01T00:00:00Z'),
337
- },
338
- ],
339
- },
340
- },
341
- updatedAt: new Date().toISOString(),
342
- };
343
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
344
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
345
- expect(result.identity).toBeDefined();
346
- expect(mockGetIdentity).not.toHaveBeenCalled();
347
- });
348
- it('should NOT mutate the original object when stripping timestamps', async () => {
349
- const originalAddress = {
350
- city: 'Original City',
351
- s: ADDRESS_INFO_SOURCE.INPUT,
352
- cra: Date.parse('2024-01-01T00:00:00Z'),
353
- upa: Date.parse('2024-01-15T00:00:00Z'),
354
- };
355
- const incomingIdentity = {
356
- identityId: 'identity456',
357
- traits: {
358
- emails: ['test@email.com'],
359
- addresses: [{ ...originalAddress }],
360
- },
361
- };
362
- const cachedResponse = {
363
- pk: `identity#${pixelId}#identity456`,
364
- pixelId,
365
- identityId: 'identity456',
366
- response: {
367
- identityId: 'identity456',
368
- traits: {
369
- emails: ['test@email.com'],
370
- addresses: [
371
- {
372
- city: 'Original City',
373
- s: ADDRESS_INFO_SOURCE.INPUT,
374
- cra: Date.parse('2023-06-01T00:00:00Z'),
375
- upa: Date.parse('2023-06-15T00:00:00Z'),
376
- },
377
- ],
378
- },
379
- },
380
- updatedAt: new Date().toISOString(),
381
- };
382
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
383
- await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
384
- expect(incomingIdentity.traits?.addresses?.[0]).toHaveProperty('cra');
385
- expect(incomingIdentity.traits?.addresses?.[0]).toHaveProperty('upa');
386
- expect(cachedResponse.response.traits?.addresses?.[0]).toHaveProperty('cra');
387
- expect(cachedResponse.response.traits?.addresses?.[0]).toHaveProperty('upa');
388
- });
389
- it('should handle identity with no addresses', async () => {
390
- const incomingIdentity = {
391
- identityId: 'identity456',
392
- traits: {
393
- emails: ['test@email.com'],
394
- },
395
- };
396
- const cachedResponse = {
397
- pk: `identity#${pixelId}#identity456`,
398
- pixelId,
399
- identityId: 'identity456',
400
- response: {
401
- identityId: 'identity456',
402
- traits: {
403
- emails: ['test@email.com'],
404
- },
405
- },
406
- updatedAt: new Date().toISOString(),
407
- };
408
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
409
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
410
- expect(result.identity).toBeDefined();
411
- expect(mockGetIdentity).not.toHaveBeenCalled();
412
- });
413
- it('should handle identity with empty addresses array', async () => {
414
- const incomingIdentity = {
415
- identityId: 'identity456',
416
- traits: {
417
- emails: ['test@email.com'],
418
- addresses: [],
419
- },
420
- };
421
- const cachedResponse = {
422
- pk: `identity#${pixelId}#identity456`,
423
- pixelId,
424
- identityId: 'identity456',
425
- response: {
426
- identityId: 'identity456',
427
- traits: {
428
- emails: ['test@email.com'],
429
- addresses: [],
430
- },
431
- },
432
- updatedAt: new Date().toISOString(),
433
- };
434
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
435
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
436
- expect(result.identity).toBeDefined();
437
- expect(mockGetIdentity).not.toHaveBeenCalled();
438
- });
439
- it('should handle addresses without cra/upa (no-op)', async () => {
440
- const incomingIdentity = {
441
- identityId: 'identity456',
442
- traits: {
443
- emails: ['test@email.com'],
444
- addresses: [{ city: 'Simple City', s: ADDRESS_INFO_SOURCE.INPUT }],
445
- },
446
- };
447
- const cachedResponse = {
448
- pk: `identity#${pixelId}#identity456`,
449
- pixelId,
450
- identityId: 'identity456',
451
- response: {
452
- identityId: 'identity456',
453
- traits: {
454
- emails: ['test@email.com'],
455
- addresses: [{ city: 'Simple City', s: ADDRESS_INFO_SOURCE.INPUT }],
456
- },
457
- },
458
- updatedAt: new Date().toISOString(),
459
- };
460
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
461
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
462
- expect(result.identity).toBeDefined();
463
- expect(mockGetIdentity).not.toHaveBeenCalled();
464
- });
465
- });
466
- describe('Identity Cache fastDeepEqual with Timestamp Stripping', () => {
467
- const pixelId = 'pixel123';
468
- let service;
469
- beforeEach(() => {
470
- jest.clearAllMocks();
471
- mockedDynamoDbClient.safeGet.mockReset();
472
- mockedDynamoDbClient.safeBatchWrite.mockReset();
473
- mockGetIdentity.mockReset();
474
- service = createService();
475
- });
476
- it('should treat cached and merged as equal when they differ ONLY in cra/upa', async () => {
477
- const incomingIdentity = {
478
- identityId: 'identity456',
479
- traits: {
480
- emails: ['test@email.com'],
481
- addresses: [
482
- {
483
- city: 'Same City',
484
- province: 'Same State',
485
- country: 'Same Country',
486
- s: ADDRESS_INFO_SOURCE.INPUT,
487
- cra: Date.parse('2024-06-01T00:00:00Z'),
488
- upa: Date.parse('2024-06-15T00:00:00Z'),
489
- },
490
- ],
491
- },
492
- };
493
- const cachedResponse = {
494
- pk: `identity#${pixelId}#identity456`,
495
- pixelId,
496
- identityId: 'identity456',
497
- response: {
498
- identityId: 'identity456',
499
- traits: {
500
- emails: ['test@email.com'],
501
- addresses: [
502
- {
503
- city: 'Same City',
504
- province: 'Same State',
505
- country: 'Same Country',
506
- s: ADDRESS_INFO_SOURCE.INPUT,
507
- cra: Date.parse('2024-01-01T00:00:00Z'),
508
- upa: Date.parse('2024-01-15T00:00:00Z'),
509
- },
510
- ],
511
- },
512
- },
513
- updatedAt: new Date().toISOString(),
514
- };
515
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
516
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
517
- expect(result.identity).toBeDefined();
518
- expect(mockGetIdentity).not.toHaveBeenCalled();
519
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
520
- });
521
- it('should treat cached and merged as NOT equal when address content differs (plus cra/upa)', async () => {
522
- const incomingIdentity = {
523
- identityId: 'identity456',
524
- traits: {
525
- emails: ['test@email.com'],
526
- addresses: [
527
- {
528
- city: 'Different City',
529
- province: 'Same State',
530
- s: ADDRESS_INFO_SOURCE.INPUT,
531
- cra: Date.parse('2024-06-01T00:00:00Z'),
532
- upa: Date.parse('2024-06-15T00:00:00Z'),
533
- },
534
- ],
535
- },
536
- };
537
- const cachedResponse = {
538
- pk: `identity#${pixelId}#identity456`,
539
- pixelId,
540
- identityId: 'identity456',
541
- response: {
542
- identityId: 'identity456',
543
- traits: {
544
- emails: ['test@email.com'],
545
- addresses: [
546
- {
547
- city: 'Original City',
548
- province: 'Same State',
549
- s: ADDRESS_INFO_SOURCE.INPUT,
550
- cra: Date.parse('2024-01-01T00:00:00Z'),
551
- upa: Date.parse('2024-01-15T00:00:00Z'),
552
- },
553
- ],
554
- },
555
- },
556
- updatedAt: new Date().toISOString(),
557
- };
558
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
559
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
560
- expect(result.identity).toBeDefined();
561
- });
562
- });
563
- describe('Identity Cache Logging Levels', () => {
564
- const pixelId = 'pixel123';
565
- let service;
566
- beforeEach(() => {
567
- jest.clearAllMocks();
568
- mockedDynamoDbClient.safeGet.mockReset();
569
- mockedDynamoDbClient.safeBatchWrite.mockReset();
570
- mockGetIdentity.mockReset();
571
- service = createService();
572
- });
573
- it('should return fresh cache hit without calling Neptune or writing cache', async () => {
574
- const incomingIdentity = {
575
- identityId: 'identity456',
576
- traits: {
577
- emails: ['test@email.com'],
578
- },
579
- };
580
- const cachedResponse = {
581
- pk: `identity#${pixelId}#identity456`,
582
- pixelId,
583
- identityId: 'identity456',
584
- response: {
585
- identityId: 'identity456',
586
- traits: {
587
- emails: ['test@email.com'],
588
- },
589
- },
590
- updatedAt: new Date().toISOString(),
591
- };
592
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
593
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
594
- expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.FRESH_CACHE_HIT);
595
- expect(mockGetIdentity).not.toHaveBeenCalled();
596
- expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
597
- });
598
- it('should return NEPTUNE_WRITE_BACK outcome with traitChanges for stale traits', async () => {
599
- const incomingIdentity = {
600
- identityId: 'identity456',
601
- traits: {
602
- emails: ['old@email.com', 'new@email.com'],
603
- },
604
- };
605
- const cachedResponse = {
606
- pk: `identity#${pixelId}#identity456`,
607
- pixelId,
608
- identityId: 'identity456',
609
- response: {
610
- identityId: 'identity456',
611
- traits: {
612
- emails: ['old@email.com'],
613
- },
614
- },
615
- updatedAt: new Date().toISOString(),
616
- };
617
- mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
618
- mockGetIdentity.mockResolvedValueOnce({
619
- identityId: 'identity456',
620
- traits: { emails: ['old@email.com', 'new@email.com'] },
621
- });
622
- const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
623
- expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
624
- expect(result.stalenessResult?.staleTraits).toContain('emails');
625
- expect(result.traitChanges).toBeDefined();
626
- expect(result.didCallNeptune).toBe(true);
627
- expect(result.didWriteCache).toBe(false);
628
- });
629
- });
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { ADDRESS_INFO_SOURCE } from '@adtrackify/at-tracking-event-types';
3
+ const mockLambdaInvoke = vi.fn();
4
+ const mockBuildAndSendMessage = vi.fn();
5
+ const mockSQSClientConstructor = vi.fn();
6
+ vi.mock('../../clients/index.js', () => ({
7
+ DynamoDbClient: {
8
+ safeGet: vi.fn(),
9
+ safePut: vi.fn(),
10
+ safeDelete: vi.fn(),
11
+ safeBatchGet: vi.fn(),
12
+ safeBatchWrite: vi.fn(),
13
+ safeQueryByGSI: vi.fn(),
14
+ batchWrite: vi.fn(),
15
+ },
16
+ LambdaInvokeClient: vi.fn().mockImplementation(function () {
17
+ return {
18
+ invokeFunction: mockLambdaInvoke,
19
+ };
20
+ }),
21
+ SQSClient: vi
22
+ .fn()
23
+ .mockImplementation(function (_region, _accountId, _queueName) {
24
+ mockSQSClientConstructor(_region, _accountId, _queueName);
25
+ return {
26
+ buildAndSendMessage: mockBuildAndSendMessage,
27
+ queueUrl: `https://sqs.${_region}.amazonaws.com/${_accountId}/${_queueName}`,
28
+ };
29
+ }),
30
+ }));
31
+ vi.mock('../../helpers/index.js', () => ({
32
+ Logger: {
33
+ debug: vi.fn(),
34
+ info: vi.fn(),
35
+ warn: vi.fn(),
36
+ error: vi.fn(),
37
+ },
38
+ }));
39
+ const mockGetIdentity = vi.fn();
40
+ vi.mock('../../clients/internal-api/identity-client.js', () => ({
41
+ IdentityClient: vi.fn().mockImplementation(function () {
42
+ return {
43
+ getIdentity: mockGetIdentity,
44
+ };
45
+ }),
46
+ }));
47
+ import { IdentityGatewayService, } from '../../services/db/identity-cache-dynamodb-service/identity-gateway-service.js';
48
+ import { IDENTITY_CACHE_WITH_CACHING_OUTCOME } from '../../services/db/identity-cache-dynamodb-service/types.js';
49
+ import { DynamoDbClient, SQSClient } from '../../clients/index.js';
50
+ const mockedDynamoDbClient = DynamoDbClient;
51
+ const _mockedSQSClient = SQSClient;
52
+ const createService = (options = {
53
+ identifyPrivateLambdaArn: 'arn:aws:lambda:us-east-1:123456789:function:identity-private',
54
+ }) => {
55
+ return new IdentityGatewayService(options);
56
+ };
57
+ describe('Identity Cache Three-Tier Routing', () => {
58
+ const pixelId = 'pixel123';
59
+ let service;
60
+ beforeEach(() => {
61
+ vi.clearAllMocks();
62
+ mockedDynamoDbClient.safeGet.mockReset();
63
+ mockedDynamoDbClient.safePut.mockReset();
64
+ mockedDynamoDbClient.safeDelete.mockReset();
65
+ mockedDynamoDbClient.safeBatchGet.mockReset();
66
+ mockedDynamoDbClient.safeBatchWrite.mockReset();
67
+ mockedDynamoDbClient.safeQueryByGSI.mockReset();
68
+ mockedDynamoDbClient.batchWrite.mockReset();
69
+ mockGetIdentity.mockReset();
70
+ mockBuildAndSendMessage.mockReset();
71
+ mockSQSClientConstructor.mockReset();
72
+ _mockedSQSClient.mockClear();
73
+ service = createService();
74
+ });
75
+ describe('TIER: VOLATILE_ONLY — Returns merged identity, NO Neptune, NO cache write', () => {
76
+ it('should return merged identity without Neptune call when only ipAddress is stale', async () => {
77
+ const incomingIdentity = {
78
+ identityId: 'identity456',
79
+ traits: {
80
+ emails: ['test@email.com'],
81
+ ipAddress: '10.0.0.1',
82
+ },
83
+ };
84
+ const cachedResponse = {
85
+ pk: `identity#${pixelId}#identity456`,
86
+ pixelId,
87
+ identityId: 'identity456',
88
+ response: {
89
+ identityId: 'identity456',
90
+ traits: {
91
+ emails: ['test@email.com'],
92
+ ipAddress: '192.168.1.1',
93
+ },
94
+ },
95
+ updatedAt: new Date().toISOString(),
96
+ };
97
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
98
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
99
+ expect(result.identity).toBeDefined();
100
+ expect(result.identity?.identityId).toBe('identity456');
101
+ expect(mockGetIdentity).not.toHaveBeenCalled();
102
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
103
+ });
104
+ it('should return merged identity without Neptune call when only userAgent is stale', async () => {
105
+ const incomingIdentity = {
106
+ identityId: 'identity456',
107
+ traits: {
108
+ emails: ['test@email.com'],
109
+ userAgent: 'Chrome/120.0',
110
+ },
111
+ };
112
+ const cachedResponse = {
113
+ pk: `identity#${pixelId}#identity456`,
114
+ pixelId,
115
+ identityId: 'identity456',
116
+ response: {
117
+ identityId: 'identity456',
118
+ traits: {
119
+ emails: ['test@email.com'],
120
+ userAgent: 'Mozilla/5.0',
121
+ },
122
+ },
123
+ updatedAt: new Date().toISOString(),
124
+ };
125
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
126
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
127
+ expect(result.identity).toBeDefined();
128
+ expect(mockGetIdentity).not.toHaveBeenCalled();
129
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
130
+ });
131
+ it('should return merged identity without Neptune call when only IP-sourced addresses are stale', async () => {
132
+ const incomingIdentity = {
133
+ identityId: 'identity456',
134
+ traits: {
135
+ emails: ['test@email.com'],
136
+ addresses: [{ city: 'New York', s: ADDRESS_INFO_SOURCE.IP_ADDRESS }],
137
+ },
138
+ };
139
+ const cachedResponse = {
140
+ pk: `identity#${pixelId}#identity456`,
141
+ pixelId,
142
+ identityId: 'identity456',
143
+ response: {
144
+ identityId: 'identity456',
145
+ traits: {
146
+ emails: ['test@email.com'],
147
+ addresses: [{ city: 'Chicago', s: ADDRESS_INFO_SOURCE.IP_ADDRESS }],
148
+ },
149
+ },
150
+ updatedAt: new Date().toISOString(),
151
+ };
152
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
153
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
154
+ expect(result.identity).toBeDefined();
155
+ expect(mockGetIdentity).not.toHaveBeenCalled();
156
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
157
+ });
158
+ });
159
+ describe('TIER: IDENTITY_STALE — Calls Neptune AND writes to cache', () => {
160
+ it('should call Neptune and write to cache when emails are stale', async () => {
161
+ const incomingIdentity = {
162
+ identityId: 'identity456',
163
+ traits: {
164
+ emails: ['old@email.com', 'new@email.com'],
165
+ },
166
+ };
167
+ const cachedResponse = {
168
+ pk: `identity#${pixelId}#identity456`,
169
+ pixelId,
170
+ identityId: 'identity456',
171
+ response: {
172
+ identityId: 'identity456',
173
+ traits: {
174
+ emails: ['old@email.com'],
175
+ },
176
+ },
177
+ updatedAt: new Date().toISOString(),
178
+ };
179
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
180
+ mockGetIdentity.mockResolvedValueOnce({
181
+ identityId: 'identity456',
182
+ traits: { emails: ['old@email.com', 'new@email.com', 'resolved@email.com'] },
183
+ });
184
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
185
+ expect(result.identity).toBeDefined();
186
+ expect(mockGetIdentity).toHaveBeenCalled();
187
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
188
+ });
189
+ it('should call Neptune and write to cache when phones are stale', async () => {
190
+ const incomingIdentity = {
191
+ identityId: 'identity456',
192
+ traits: {
193
+ phones: ['+1234567890', '+9876543210'],
194
+ },
195
+ };
196
+ const cachedResponse = {
197
+ pk: `identity#${pixelId}#identity456`,
198
+ pixelId,
199
+ identityId: 'identity456',
200
+ response: {
201
+ identityId: 'identity456',
202
+ traits: {
203
+ phones: ['+1234567890'],
204
+ },
205
+ },
206
+ updatedAt: new Date().toISOString(),
207
+ };
208
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
209
+ mockGetIdentity.mockResolvedValueOnce({
210
+ identityId: 'identity456',
211
+ traits: { phones: ['+1234567890', '+9876543210'] },
212
+ });
213
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
214
+ expect(result.identity).toBeDefined();
215
+ expect(mockGetIdentity).toHaveBeenCalled();
216
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
217
+ });
218
+ it('should return NEPTUNE_WRITE_BACK outcome with staleTraits in summary', async () => {
219
+ const incomingIdentity = {
220
+ identityId: 'identity456',
221
+ traits: {
222
+ emails: ['old@email.com', 'new@email.com'],
223
+ },
224
+ };
225
+ const cachedResponse = {
226
+ pk: `identity#${pixelId}#identity456`,
227
+ pixelId,
228
+ identityId: 'identity456',
229
+ response: {
230
+ identityId: 'identity456',
231
+ traits: { emails: ['old@email.com'] },
232
+ },
233
+ updatedAt: new Date().toISOString(),
234
+ };
235
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
236
+ mockGetIdentity.mockResolvedValueOnce({
237
+ identityId: 'identity456',
238
+ traits: { emails: ['old@email.com', 'new@email.com'] },
239
+ });
240
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
241
+ expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
242
+ expect(result.stalenessResult?.staleTraits).toContain('emails');
243
+ expect(result.didCallNeptune).toBe(true);
244
+ expect(result.didWriteCache).toBe(false);
245
+ });
246
+ });
247
+ describe('CACHE_MISS — Calls Neptune AND writes to cache', () => {
248
+ it('should call Neptune and write to cache on complete cache miss', async () => {
249
+ const incomingIdentity = {
250
+ identityId: 'identity456',
251
+ traits: { emails: ['test@email.com'] },
252
+ };
253
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
254
+ mockGetIdentity.mockResolvedValueOnce({
255
+ identityId: 'identity456',
256
+ traits: { emails: ['test@email.com'] },
257
+ });
258
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
259
+ expect(result.identity).toBeDefined();
260
+ expect(mockGetIdentity).toHaveBeenCalled();
261
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
262
+ });
263
+ it('should return NEPTUNE_WRITE_BACK outcome for cache miss', async () => {
264
+ const incomingIdentity = {
265
+ identityId: 'identity456',
266
+ traits: { emails: ['test@email.com'] },
267
+ };
268
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(null);
269
+ mockGetIdentity.mockResolvedValueOnce({
270
+ identityId: 'identity456',
271
+ traits: { emails: ['test@email.com'] },
272
+ });
273
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
274
+ expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
275
+ expect(result.didCallNeptune).toBe(true);
276
+ expect(result.didWriteCache).toBe(false);
277
+ });
278
+ });
279
+ describe('EMAIL_POINTER_DISCOVERY — Calls Neptune with discovered identityId', () => {
280
+ it('should call Neptune with discovered identityId from email pointer', async () => {
281
+ const incomingIdentity = {
282
+ traits: { emails: ['test@email.com'] },
283
+ };
284
+ const pointerRecord = {
285
+ pk: `email#${pixelId}#test@email.com`,
286
+ pixelId,
287
+ identityId: 'discovered-id',
288
+ gsi1pk: 'discovered-id',
289
+ updatedAt: new Date().toISOString(),
290
+ };
291
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(pointerRecord);
292
+ mockGetIdentity.mockResolvedValueOnce({
293
+ identityId: 'discovered-id',
294
+ traits: { emails: ['test@email.com', 'other@email.com'] },
295
+ });
296
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
297
+ expect(result.identity?.identityId).toBe('discovered-id');
298
+ expect(mockGetIdentity).toHaveBeenCalledWith(pixelId, expect.objectContaining({
299
+ identity: expect.objectContaining({
300
+ identityId: 'discovered-id',
301
+ traits: expect.objectContaining({ emails: ['test@email.com'] }),
302
+ }),
303
+ }));
304
+ });
305
+ });
306
+ });
307
+ describe('Identity Cache stripAddressTimestamps', () => {
308
+ const pixelId = 'pixel123';
309
+ let service;
310
+ beforeEach(() => {
311
+ vi.clearAllMocks();
312
+ mockedDynamoDbClient.safeGet.mockReset();
313
+ mockedDynamoDbClient.safeBatchWrite.mockReset();
314
+ mockGetIdentity.mockReset();
315
+ service = createService();
316
+ });
317
+ it('should strip cra and upa from addresses during comparison', async () => {
318
+ const incomingIdentity = {
319
+ identityId: 'identity456',
320
+ traits: {
321
+ emails: ['test@email.com'],
322
+ addresses: [
323
+ {
324
+ city: 'Test City',
325
+ s: ADDRESS_INFO_SOURCE.INPUT,
326
+ cra: Date.parse('2024-01-01T00:00:00Z'),
327
+ upa: Date.parse('2024-01-15T00:00:00Z'),
328
+ },
329
+ ],
330
+ },
331
+ };
332
+ const cachedResponse = {
333
+ pk: `identity#${pixelId}#identity456`,
334
+ pixelId,
335
+ identityId: 'identity456',
336
+ response: {
337
+ identityId: 'identity456',
338
+ traits: {
339
+ emails: ['test@email.com'],
340
+ addresses: [
341
+ {
342
+ city: 'Test City',
343
+ s: ADDRESS_INFO_SOURCE.INPUT,
344
+ cra: Date.parse('2023-06-01T00:00:00Z'),
345
+ upa: Date.parse('2023-12-01T00:00:00Z'),
346
+ },
347
+ ],
348
+ },
349
+ },
350
+ updatedAt: new Date().toISOString(),
351
+ };
352
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
353
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
354
+ expect(result.identity).toBeDefined();
355
+ expect(mockGetIdentity).not.toHaveBeenCalled();
356
+ });
357
+ it('should NOT mutate the original object when stripping timestamps', async () => {
358
+ const originalAddress = {
359
+ city: 'Original City',
360
+ s: ADDRESS_INFO_SOURCE.INPUT,
361
+ cra: Date.parse('2024-01-01T00:00:00Z'),
362
+ upa: Date.parse('2024-01-15T00:00:00Z'),
363
+ };
364
+ const incomingIdentity = {
365
+ identityId: 'identity456',
366
+ traits: {
367
+ emails: ['test@email.com'],
368
+ addresses: [{ ...originalAddress }],
369
+ },
370
+ };
371
+ const cachedResponse = {
372
+ pk: `identity#${pixelId}#identity456`,
373
+ pixelId,
374
+ identityId: 'identity456',
375
+ response: {
376
+ identityId: 'identity456',
377
+ traits: {
378
+ emails: ['test@email.com'],
379
+ addresses: [
380
+ {
381
+ city: 'Original City',
382
+ s: ADDRESS_INFO_SOURCE.INPUT,
383
+ cra: Date.parse('2023-06-01T00:00:00Z'),
384
+ upa: Date.parse('2023-06-15T00:00:00Z'),
385
+ },
386
+ ],
387
+ },
388
+ },
389
+ updatedAt: new Date().toISOString(),
390
+ };
391
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
392
+ await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
393
+ expect(incomingIdentity.traits?.addresses?.[0]).toHaveProperty('cra');
394
+ expect(incomingIdentity.traits?.addresses?.[0]).toHaveProperty('upa');
395
+ expect(cachedResponse.response.traits?.addresses?.[0]).toHaveProperty('cra');
396
+ expect(cachedResponse.response.traits?.addresses?.[0]).toHaveProperty('upa');
397
+ });
398
+ it('should handle identity with no addresses', async () => {
399
+ const incomingIdentity = {
400
+ identityId: 'identity456',
401
+ traits: {
402
+ emails: ['test@email.com'],
403
+ },
404
+ };
405
+ const cachedResponse = {
406
+ pk: `identity#${pixelId}#identity456`,
407
+ pixelId,
408
+ identityId: 'identity456',
409
+ response: {
410
+ identityId: 'identity456',
411
+ traits: {
412
+ emails: ['test@email.com'],
413
+ },
414
+ },
415
+ updatedAt: new Date().toISOString(),
416
+ };
417
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
418
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
419
+ expect(result.identity).toBeDefined();
420
+ expect(mockGetIdentity).not.toHaveBeenCalled();
421
+ });
422
+ it('should handle identity with empty addresses array', async () => {
423
+ const incomingIdentity = {
424
+ identityId: 'identity456',
425
+ traits: {
426
+ emails: ['test@email.com'],
427
+ addresses: [],
428
+ },
429
+ };
430
+ const cachedResponse = {
431
+ pk: `identity#${pixelId}#identity456`,
432
+ pixelId,
433
+ identityId: 'identity456',
434
+ response: {
435
+ identityId: 'identity456',
436
+ traits: {
437
+ emails: ['test@email.com'],
438
+ addresses: [],
439
+ },
440
+ },
441
+ updatedAt: new Date().toISOString(),
442
+ };
443
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
444
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
445
+ expect(result.identity).toBeDefined();
446
+ expect(mockGetIdentity).not.toHaveBeenCalled();
447
+ });
448
+ it('should handle addresses without cra/upa (no-op)', async () => {
449
+ const incomingIdentity = {
450
+ identityId: 'identity456',
451
+ traits: {
452
+ emails: ['test@email.com'],
453
+ addresses: [{ city: 'Simple City', s: ADDRESS_INFO_SOURCE.INPUT }],
454
+ },
455
+ };
456
+ const cachedResponse = {
457
+ pk: `identity#${pixelId}#identity456`,
458
+ pixelId,
459
+ identityId: 'identity456',
460
+ response: {
461
+ identityId: 'identity456',
462
+ traits: {
463
+ emails: ['test@email.com'],
464
+ addresses: [{ city: 'Simple City', s: ADDRESS_INFO_SOURCE.INPUT }],
465
+ },
466
+ },
467
+ updatedAt: new Date().toISOString(),
468
+ };
469
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
470
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
471
+ expect(result.identity).toBeDefined();
472
+ expect(mockGetIdentity).not.toHaveBeenCalled();
473
+ });
474
+ });
475
+ describe('Identity Cache fastDeepEqual with Timestamp Stripping', () => {
476
+ const pixelId = 'pixel123';
477
+ let service;
478
+ beforeEach(() => {
479
+ vi.clearAllMocks();
480
+ mockedDynamoDbClient.safeGet.mockReset();
481
+ mockedDynamoDbClient.safeBatchWrite.mockReset();
482
+ mockGetIdentity.mockReset();
483
+ service = createService();
484
+ });
485
+ it('should treat cached and merged as equal when they differ ONLY in cra/upa', async () => {
486
+ const incomingIdentity = {
487
+ identityId: 'identity456',
488
+ traits: {
489
+ emails: ['test@email.com'],
490
+ addresses: [
491
+ {
492
+ city: 'Same City',
493
+ province: 'Same State',
494
+ country: 'Same Country',
495
+ s: ADDRESS_INFO_SOURCE.INPUT,
496
+ cra: Date.parse('2024-06-01T00:00:00Z'),
497
+ upa: Date.parse('2024-06-15T00:00:00Z'),
498
+ },
499
+ ],
500
+ },
501
+ };
502
+ const cachedResponse = {
503
+ pk: `identity#${pixelId}#identity456`,
504
+ pixelId,
505
+ identityId: 'identity456',
506
+ response: {
507
+ identityId: 'identity456',
508
+ traits: {
509
+ emails: ['test@email.com'],
510
+ addresses: [
511
+ {
512
+ city: 'Same City',
513
+ province: 'Same State',
514
+ country: 'Same Country',
515
+ s: ADDRESS_INFO_SOURCE.INPUT,
516
+ cra: Date.parse('2024-01-01T00:00:00Z'),
517
+ upa: Date.parse('2024-01-15T00:00:00Z'),
518
+ },
519
+ ],
520
+ },
521
+ },
522
+ updatedAt: new Date().toISOString(),
523
+ };
524
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
525
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
526
+ expect(result.identity).toBeDefined();
527
+ expect(mockGetIdentity).not.toHaveBeenCalled();
528
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
529
+ });
530
+ it('should treat cached and merged as NOT equal when address content differs (plus cra/upa)', async () => {
531
+ const incomingIdentity = {
532
+ identityId: 'identity456',
533
+ traits: {
534
+ emails: ['test@email.com'],
535
+ addresses: [
536
+ {
537
+ city: 'Different City',
538
+ province: 'Same State',
539
+ s: ADDRESS_INFO_SOURCE.INPUT,
540
+ cra: Date.parse('2024-06-01T00:00:00Z'),
541
+ upa: Date.parse('2024-06-15T00:00:00Z'),
542
+ },
543
+ ],
544
+ },
545
+ };
546
+ const cachedResponse = {
547
+ pk: `identity#${pixelId}#identity456`,
548
+ pixelId,
549
+ identityId: 'identity456',
550
+ response: {
551
+ identityId: 'identity456',
552
+ traits: {
553
+ emails: ['test@email.com'],
554
+ addresses: [
555
+ {
556
+ city: 'Original City',
557
+ province: 'Same State',
558
+ s: ADDRESS_INFO_SOURCE.INPUT,
559
+ cra: Date.parse('2024-01-01T00:00:00Z'),
560
+ upa: Date.parse('2024-01-15T00:00:00Z'),
561
+ },
562
+ ],
563
+ },
564
+ },
565
+ updatedAt: new Date().toISOString(),
566
+ };
567
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
568
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
569
+ expect(result.identity).toBeDefined();
570
+ });
571
+ });
572
+ describe('Identity Cache Logging Levels', () => {
573
+ const pixelId = 'pixel123';
574
+ let service;
575
+ beforeEach(() => {
576
+ vi.clearAllMocks();
577
+ mockedDynamoDbClient.safeGet.mockReset();
578
+ mockedDynamoDbClient.safeBatchWrite.mockReset();
579
+ mockGetIdentity.mockReset();
580
+ service = createService();
581
+ });
582
+ it('should return fresh cache hit without calling Neptune or writing cache', async () => {
583
+ const incomingIdentity = {
584
+ identityId: 'identity456',
585
+ traits: {
586
+ emails: ['test@email.com'],
587
+ },
588
+ };
589
+ const cachedResponse = {
590
+ pk: `identity#${pixelId}#identity456`,
591
+ pixelId,
592
+ identityId: 'identity456',
593
+ response: {
594
+ identityId: 'identity456',
595
+ traits: {
596
+ emails: ['test@email.com'],
597
+ },
598
+ },
599
+ updatedAt: new Date().toISOString(),
600
+ };
601
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
602
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
603
+ expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.FRESH_CACHE_HIT);
604
+ expect(mockGetIdentity).not.toHaveBeenCalled();
605
+ expect(mockedDynamoDbClient.safeBatchWrite).not.toHaveBeenCalled();
606
+ });
607
+ it('should return NEPTUNE_WRITE_BACK outcome with traitChanges for stale traits', async () => {
608
+ const incomingIdentity = {
609
+ identityId: 'identity456',
610
+ traits: {
611
+ emails: ['old@email.com', 'new@email.com'],
612
+ },
613
+ };
614
+ const cachedResponse = {
615
+ pk: `identity#${pixelId}#identity456`,
616
+ pixelId,
617
+ identityId: 'identity456',
618
+ response: {
619
+ identityId: 'identity456',
620
+ traits: {
621
+ emails: ['old@email.com'],
622
+ },
623
+ },
624
+ updatedAt: new Date().toISOString(),
625
+ };
626
+ mockedDynamoDbClient.safeGet.mockResolvedValueOnce(cachedResponse);
627
+ mockGetIdentity.mockResolvedValueOnce({
628
+ identityId: 'identity456',
629
+ traits: { emails: ['old@email.com', 'new@email.com'] },
630
+ });
631
+ const result = await service.resolveIdentityWithCaching(pixelId, incomingIdentity);
632
+ expect(result.outcome).toBe(IDENTITY_CACHE_WITH_CACHING_OUTCOME.NEPTUNE_RESOLVED);
633
+ expect(result.stalenessResult?.staleTraits).toContain('emails');
634
+ expect(result.traitChanges).toBeDefined();
635
+ expect(result.didCallNeptune).toBe(true);
636
+ expect(result.didWriteCache).toBe(false);
637
+ });
638
+ });
630
639
  //# sourceMappingURL=identity-cache-tier-routing.spec.js.map