@adtrackify/at-service-common 4.0.3 → 4.0.4

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 (753) 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 +43 -43
  3. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.d.ts +1 -1
  4. package/dist/cjs/__tests__/clients/cross-platform-compression.spec.js +354 -354
  5. package/dist/cjs/__tests__/clients/dynamodb-client.spec.d.ts +1 -1
  6. package/dist/cjs/__tests__/clients/dynamodb-client.spec.js +194 -194
  7. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -1
  8. package/dist/cjs/__tests__/clients/sqs-bundled-client.spec.js +931 -931
  9. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -1
  10. package/dist/cjs/__tests__/clients/sqs-bundling-contracts.spec.js +563 -563
  11. package/dist/cjs/__tests__/clients/sqs-client.spec.d.ts +1 -1
  12. package/dist/cjs/__tests__/clients/sqs-client.spec.js +191 -191
  13. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.d.ts +1 -1
  14. package/dist/cjs/__tests__/clients/sqs-unbundle.spec.js +1357 -1357
  15. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -1
  16. package/dist/cjs/__tests__/db/contact-enrichments-db-service.spec.js +68 -68
  17. package/dist/cjs/__tests__/db/destinations-db-service.spec.d.ts +1 -1
  18. package/dist/cjs/__tests__/db/destinations-db-service.spec.js +125 -125
  19. package/dist/cjs/__tests__/db/products-db-service.spec.d.ts +1 -0
  20. package/dist/cjs/__tests__/db/products-db-service.spec.js +90 -0
  21. package/dist/cjs/__tests__/db/products-db-service.spec.js.map +1 -0
  22. package/dist/cjs/__tests__/db/shared-read-db-services.spec.d.ts +1 -1
  23. package/dist/cjs/__tests__/db/shared-read-db-services.spec.js +89 -89
  24. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -1
  25. package/dist/cjs/__tests__/db/shopify-app-installs-db-service.spec.js +104 -104
  26. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.d.ts +1 -1
  27. package/dist/cjs/__tests__/db/subscriptions-db-service.spec.js +95 -95
  28. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.d.ts +1 -1
  29. package/dist/cjs/__tests__/db/user-accounts-db-service.spec.js +76 -76
  30. package/dist/cjs/__tests__/helpers/account-users-helper.spec.d.ts +1 -1
  31. package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +220 -220
  32. package/dist/cjs/__tests__/helpers/acuity-helper.spec.d.ts +1 -1
  33. package/dist/cjs/__tests__/helpers/acuity-helper.spec.js +69 -69
  34. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -1
  35. package/dist/cjs/__tests__/helpers/api-key-auth-helper.spec.js +82 -82
  36. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
  37. package/dist/cjs/__tests__/identity-cache/identity-cache-db-service.spec.js +676 -676
  38. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.d.ts +1 -1
  39. package/dist/cjs/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +1140 -1140
  40. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.d.ts +1 -1
  41. package/dist/cjs/__tests__/identity-cache/identity-cache-tier-routing.spec.js +851 -851
  42. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.d.ts +1 -1
  43. package/dist/cjs/__tests__/identity-cache/trait-merging-and-staleness.spec.js +1060 -1060
  44. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.d.ts +1 -1
  45. package/dist/cjs/__tests__/identity-cache/volatile-traits-optimization.spec.js +818 -818
  46. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -1
  47. package/dist/cjs/__tests__/integration/sqs-bundling-roundtrip.spec.js +584 -584
  48. package/dist/cjs/__tests__/libs/compress-decompress.spec.d.ts +1 -1
  49. package/dist/cjs/__tests__/libs/compress-decompress.spec.js +16 -16
  50. package/dist/cjs/__tests__/libs/contacts.spec.d.ts +1 -1
  51. package/dist/cjs/__tests__/libs/contacts.spec.js +294 -294
  52. package/dist/cjs/__tests__/libs/currency.spec.d.ts +1 -1
  53. package/dist/cjs/__tests__/libs/currency.spec.js +220 -220
  54. package/dist/cjs/__tests__/libs/dates.spec.d.ts +1 -1
  55. package/dist/cjs/__tests__/libs/dates.spec.js +130 -130
  56. package/dist/cjs/__tests__/libs/domain.spec.d.ts +1 -1
  57. package/dist/cjs/__tests__/libs/domain.spec.js +107 -107
  58. package/dist/cjs/__tests__/libs/numbers.spec.d.ts +1 -1
  59. package/dist/cjs/__tests__/libs/numbers.spec.js +261 -261
  60. package/dist/cjs/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  61. package/dist/cjs/__tests__/s3-client/s3-client.spec.js +33 -33
  62. package/dist/cjs/__tests__/services/acuity-api-service.spec.d.ts +1 -1
  63. package/dist/cjs/__tests__/services/acuity-api-service.spec.js +71 -71
  64. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.d.ts +1 -0
  65. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js +24 -0
  66. package/dist/cjs/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -0
  67. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.d.ts +1 -0
  68. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js +3320 -0
  69. package/dist/cjs/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -0
  70. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.d.ts +1 -0
  71. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js +115 -0
  72. package/dist/cjs/__tests__/services/cost/cost-currency-service.spec.js.map +1 -0
  73. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.d.ts +1 -0
  74. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js +469 -0
  75. package/dist/cjs/__tests__/services/cost/cost-filter-service.spec.js.map +1 -0
  76. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.d.ts +1 -0
  77. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +207 -0
  78. package/dist/cjs/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -0
  79. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +1 -0
  80. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js +35 -0
  81. package/dist/cjs/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +1 -0
  82. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -1
  83. package/dist/cjs/__tests__/services/email-verification/contact-email-verification-service.spec.js +93 -93
  84. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -1
  85. package/dist/cjs/__tests__/services/email-verification/email-verification-service.spec.js +57 -57
  86. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
  87. package/dist/cjs/__tests__/shopify/shopify-graphql-transformer.spec.js +35 -35
  88. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -1
  89. package/dist/cjs/__tests__/unit/libs/api-router/public-api-router.spec.js +181 -181
  90. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -1
  91. package/dist/cjs/__tests__/unit/libs/api-router/route-matcher.spec.js +69 -69
  92. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -1
  93. package/dist/cjs/__tests__/utils/custom-measure-formula-utils.spec.js +139 -139
  94. package/dist/cjs/clients/generic/cognito-client.d.ts +23 -23
  95. package/dist/cjs/clients/generic/cognito-client.js +209 -209
  96. package/dist/cjs/clients/generic/dynamodb-client.d.ts +20 -20
  97. package/dist/cjs/clients/generic/dynamodb-client.js +235 -235
  98. package/dist/cjs/clients/generic/eventbridge-client.d.ts +14 -14
  99. package/dist/cjs/clients/generic/eventbridge-client.js +51 -51
  100. package/dist/cjs/clients/generic/http-client.d.ts +14 -14
  101. package/dist/cjs/clients/generic/http-client.js +61 -61
  102. package/dist/cjs/clients/generic/index.d.ts +13 -13
  103. package/dist/cjs/clients/generic/index.js +29 -29
  104. package/dist/cjs/clients/generic/lambda-invoke-client.d.ts +10 -10
  105. package/dist/cjs/clients/generic/lambda-invoke-client.js +39 -39
  106. package/dist/cjs/clients/generic/location-client.d.ts +8 -8
  107. package/dist/cjs/clients/generic/location-client.js +31 -31
  108. package/dist/cjs/clients/generic/redis-client.d.ts +33 -33
  109. package/dist/cjs/clients/generic/redis-client.js +191 -191
  110. package/dist/cjs/clients/generic/s3-client.d.ts +23 -23
  111. package/dist/cjs/clients/generic/s3-client.js +216 -216
  112. package/dist/cjs/clients/generic/singlestore-db-client.d.ts +14 -14
  113. package/dist/cjs/clients/generic/singlestore-db-client.js +67 -67
  114. package/dist/cjs/clients/generic/sqs-bundled-client.d.ts +15 -15
  115. package/dist/cjs/clients/generic/sqs-bundled-client.js +311 -311
  116. package/dist/cjs/clients/generic/sqs-bundled-client.types.d.ts +53 -53
  117. package/dist/cjs/clients/generic/sqs-bundled-client.types.js +17 -17
  118. package/dist/cjs/clients/generic/sqs-client.d.ts +53 -53
  119. package/dist/cjs/clients/generic/sqs-client.js +285 -285
  120. package/dist/cjs/clients/generic/sqs-unbundle.d.ts +32 -32
  121. package/dist/cjs/clients/generic/sqs-unbundle.js +144 -144
  122. package/dist/cjs/clients/index.d.ts +3 -3
  123. package/dist/cjs/clients/index.js +19 -19
  124. package/dist/cjs/clients/internal-api/accounts-client.d.ts +91 -91
  125. package/dist/cjs/clients/internal-api/accounts-client.js +129 -129
  126. package/dist/cjs/clients/internal-api/cache-lambda-client.d.ts +26 -26
  127. package/dist/cjs/clients/internal-api/cache-lambda-client.js +89 -89
  128. package/dist/cjs/clients/internal-api/db-management-client.d.ts +18 -18
  129. package/dist/cjs/clients/internal-api/db-management-client.js +36 -36
  130. package/dist/cjs/clients/internal-api/destinations-client.d.ts +34 -34
  131. package/dist/cjs/clients/internal-api/destinations-client.js +79 -79
  132. package/dist/cjs/clients/internal-api/event-collector-client.d.ts +20 -20
  133. package/dist/cjs/clients/internal-api/event-collector-client.js +36 -36
  134. package/dist/cjs/clients/internal-api/identity-client.d.ts +31 -31
  135. package/dist/cjs/clients/internal-api/identity-client.js +91 -91
  136. package/dist/cjs/clients/internal-api/index.d.ts +9 -9
  137. package/dist/cjs/clients/internal-api/index.js +25 -25
  138. package/dist/cjs/clients/internal-api/shopify-app-install-client.d.ts +37 -37
  139. package/dist/cjs/clients/internal-api/shopify-app-install-client.js +81 -81
  140. package/dist/cjs/clients/internal-api/subscriptions-client.d.ts +26 -26
  141. package/dist/cjs/clients/internal-api/subscriptions-client.js +77 -77
  142. package/dist/cjs/clients/internal-api/users-auth-client.d.ts +35 -35
  143. package/dist/cjs/clients/internal-api/users-auth-client.js +110 -110
  144. package/dist/cjs/clients/third-party/acuity-client.d.ts +10 -10
  145. package/dist/cjs/clients/third-party/acuity-client.js +40 -40
  146. package/dist/cjs/clients/third-party/emailable-client.d.ts +7 -7
  147. package/dist/cjs/clients/third-party/emailable-client.js +25 -25
  148. package/dist/cjs/clients/third-party/exchange-rate-api-client.d.ts +17 -17
  149. package/dist/cjs/clients/third-party/exchange-rate-api-client.js +19 -19
  150. package/dist/cjs/clients/third-party/index.d.ts +5 -5
  151. package/dist/cjs/clients/third-party/index.js +21 -21
  152. package/dist/cjs/clients/third-party/loops-client.d.ts +10 -10
  153. package/dist/cjs/clients/third-party/loops-client.js +30 -30
  154. package/dist/cjs/clients/third-party/shopify/graphql-order-queries.d.ts +25 -25
  155. package/dist/cjs/clients/third-party/shopify/graphql-order-queries.js +4 -4
  156. package/dist/cjs/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
  157. package/dist/cjs/clients/third-party/shopify/graphql-product-queries.js +5 -5
  158. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.d.ts +10 -10
  159. package/dist/cjs/clients/third-party/shopify/shopify-graphql-client.js +161 -161
  160. package/dist/cjs/clients/third-party/shopify-client.d.ts +29 -29
  161. package/dist/cjs/clients/third-party/shopify-client.js +146 -146
  162. package/dist/cjs/constants/index.d.ts +1 -1
  163. package/dist/cjs/constants/index.js +17 -17
  164. package/dist/cjs/constants/sqs.d.ts +20 -20
  165. package/dist/cjs/constants/sqs.js +26 -26
  166. package/dist/cjs/helpers/account-users-helper.d.ts +2 -2
  167. package/dist/cjs/helpers/account-users-helper.js +22 -22
  168. package/dist/cjs/helpers/acuity-helper.d.ts +4 -4
  169. package/dist/cjs/helpers/acuity-helper.js +56 -56
  170. package/dist/cjs/helpers/api-key-auth-helper.d.ts +9 -9
  171. package/dist/cjs/helpers/api-key-auth-helper.js +40 -40
  172. package/dist/cjs/helpers/api-key-authorizer-helper.d.ts +36 -36
  173. package/dist/cjs/helpers/api-key-authorizer-helper.js +87 -87
  174. package/dist/cjs/helpers/identity-cache-helper.d.ts +30 -30
  175. package/dist/cjs/helpers/identity-cache-helper.js +253 -253
  176. package/dist/cjs/helpers/index.d.ts +10 -10
  177. package/dist/cjs/helpers/index.js +26 -26
  178. package/dist/cjs/helpers/input-validation-helper.d.ts +3 -3
  179. package/dist/cjs/helpers/input-validation-helper.js +22 -22
  180. package/dist/cjs/helpers/logging-helper.d.ts +16 -16
  181. package/dist/cjs/helpers/logging-helper.js +84 -84
  182. package/dist/cjs/helpers/response-helper.d.ts +18 -18
  183. package/dist/cjs/helpers/response-helper.js +43 -43
  184. package/dist/cjs/helpers/shopify-helper.d.ts +9 -9
  185. package/dist/cjs/helpers/shopify-helper.js +26 -26
  186. package/dist/cjs/helpers/sqs-utils.d.ts +6 -6
  187. package/dist/cjs/helpers/sqs-utils.js +14 -14
  188. package/dist/cjs/index.d.ts +7 -7
  189. package/dist/cjs/index.js +23 -23
  190. package/dist/cjs/libs/api-router/index.d.ts +2 -2
  191. package/dist/cjs/libs/api-router/index.js +18 -18
  192. package/dist/cjs/libs/api-router/public-api-router.d.ts +3 -3
  193. package/dist/cjs/libs/api-router/public-api-router.js +36 -36
  194. package/dist/cjs/libs/api-router/route-matcher.d.ts +21 -21
  195. package/dist/cjs/libs/api-router/route-matcher.js +36 -36
  196. package/dist/cjs/libs/click-id-parser.d.ts +23 -23
  197. package/dist/cjs/libs/click-id-parser.js +49 -49
  198. package/dist/cjs/libs/compression.d.ts +2 -2
  199. package/dist/cjs/libs/compression.js +33 -33
  200. package/dist/cjs/libs/contacts.d.ts +7 -7
  201. package/dist/cjs/libs/contacts.js +152 -152
  202. package/dist/cjs/libs/cookie.d.ts +17 -17
  203. package/dist/cjs/libs/cookie.js +76 -76
  204. package/dist/cjs/libs/crypto.d.ts +4 -4
  205. package/dist/cjs/libs/crypto.js +25 -25
  206. package/dist/cjs/libs/csv.d.ts +2 -2
  207. package/dist/cjs/libs/csv.js +35 -35
  208. package/dist/cjs/libs/currency.d.ts +1 -1
  209. package/dist/cjs/libs/currency.js +29 -29
  210. package/dist/cjs/libs/dates.d.ts +12 -12
  211. package/dist/cjs/libs/dates.js +96 -96
  212. package/dist/cjs/libs/domain.d.ts +2 -2
  213. package/dist/cjs/libs/domain.js +38 -38
  214. package/dist/cjs/libs/emails.d.ts +8 -8
  215. package/dist/cjs/libs/emails.js +154 -154
  216. package/dist/cjs/libs/http-error.d.ts +21 -21
  217. package/dist/cjs/libs/http-error.js +63 -63
  218. package/dist/cjs/libs/http-status-codes.d.ts +58 -58
  219. package/dist/cjs/libs/http-status-codes.js +62 -62
  220. package/dist/cjs/libs/index.d.ts +19 -19
  221. package/dist/cjs/libs/index.js +35 -35
  222. package/dist/cjs/libs/numbers.d.ts +1 -1
  223. package/dist/cjs/libs/numbers.js +15 -15
  224. package/dist/cjs/libs/referrer-parser/index.d.ts +2 -2
  225. package/dist/cjs/libs/referrer-parser/index.js +18 -18
  226. package/dist/cjs/libs/referrer-parser/referrer-data.d.ts +9 -9
  227. package/dist/cjs/libs/referrer-parser/referrer-data.js +3307 -3307
  228. package/dist/cjs/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  229. package/dist/cjs/libs/referrer-parser/referrer-parser-util.js +131 -131
  230. package/dist/cjs/libs/strings.d.ts +3 -3
  231. package/dist/cjs/libs/strings.js +46 -46
  232. package/dist/cjs/libs/traits.d.ts +6 -6
  233. package/dist/cjs/libs/traits.js +65 -65
  234. package/dist/cjs/libs/url.d.ts +1 -1
  235. package/dist/cjs/libs/url.js +13 -13
  236. package/dist/cjs/services/acuity-api-service.d.ts +9 -9
  237. package/dist/cjs/services/acuity-api-service.js +73 -73
  238. package/dist/cjs/services/cache/generic-cached-object.d.ts +5 -5
  239. package/dist/cjs/services/cache/generic-cached-object.js +2 -2
  240. package/dist/cjs/services/cache/index.d.ts +1 -1
  241. package/dist/cjs/services/cache/index.js +17 -17
  242. package/dist/cjs/services/cache/product-cache-service.d.ts +21 -21
  243. package/dist/cjs/services/cache/product-cache-service.js +76 -76
  244. package/dist/cjs/services/cost/cost-calculation-types.d.ts +69 -0
  245. package/dist/cjs/services/cost/cost-calculation-types.js +20 -0
  246. package/dist/cjs/services/cost/cost-calculation-types.js.map +1 -0
  247. package/dist/cjs/services/cost/cost-calculator-service.d.ts +24 -0
  248. package/dist/cjs/services/cost/cost-calculator-service.js +457 -0
  249. package/dist/cjs/services/cost/cost-calculator-service.js.map +1 -0
  250. package/dist/cjs/services/cost/cost-currency-service.d.ts +6 -0
  251. package/dist/cjs/services/cost/cost-currency-service.js +88 -0
  252. package/dist/cjs/services/cost/cost-currency-service.js.map +1 -0
  253. package/dist/cjs/services/cost/cost-filter-service.d.ts +10 -0
  254. package/dist/cjs/services/cost/cost-filter-service.js +122 -0
  255. package/dist/cjs/services/cost/cost-filter-service.js.map +1 -0
  256. package/dist/cjs/services/cost/index.d.ts +5 -0
  257. package/dist/cjs/services/cost/index.js +22 -0
  258. package/dist/cjs/services/cost/index.js.map +1 -0
  259. package/dist/cjs/services/cost/order-cost/index.d.ts +2 -0
  260. package/dist/cjs/services/cost/order-cost/index.js +19 -0
  261. package/dist/cjs/services/cost/order-cost/index.js.map +1 -0
  262. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.d.ts +23 -0
  263. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js +362 -0
  264. package/dist/cjs/services/cost/order-cost/order-cost-resolution-service.js.map +1 -0
  265. package/dist/cjs/services/cost/order-cost/order-cost-resolution-types.d.ts +37 -0
  266. package/dist/cjs/services/cost/order-cost/order-cost-resolution-types.js +3 -0
  267. package/dist/cjs/services/cost/order-cost/order-cost-resolution-types.js.map +1 -0
  268. package/dist/cjs/services/currency-exchange-rate-lookup-service.d.ts +12 -11
  269. package/dist/cjs/services/currency-exchange-rate-lookup-service.js +94 -66
  270. package/dist/cjs/services/currency-exchange-rate-lookup-service.js.map +1 -1
  271. package/dist/cjs/services/db/accounts-db-service.d.ts +9 -9
  272. package/dist/cjs/services/db/accounts-db-service.js +33 -33
  273. package/dist/cjs/services/db/api-keys-db-service.d.ts +10 -10
  274. package/dist/cjs/services/db/api-keys-db-service.js +36 -36
  275. package/dist/cjs/services/db/contact-enrichments-db-service.d.ts +15 -15
  276. package/dist/cjs/services/db/contact-enrichments-db-service.js +94 -94
  277. package/dist/cjs/services/db/currency-exchange-rates-db-service.d.ts +21 -21
  278. package/dist/cjs/services/db/currency-exchange-rates-db-service.js +39 -39
  279. package/dist/cjs/services/db/custom-measures-db-service.d.ts +14 -14
  280. package/dist/cjs/services/db/custom-measures-db-service.js +48 -48
  281. package/dist/cjs/services/db/destinations-db-service.d.ts +13 -13
  282. package/dist/cjs/services/db/destinations-db-service.js +74 -74
  283. package/dist/cjs/services/db/identity-cache-db-service.d.ts +28 -28
  284. package/dist/cjs/services/db/identity-cache-db-service.js +320 -320
  285. package/dist/cjs/services/db/identity-cache-dynamodb-service.d.ts +44 -44
  286. package/dist/cjs/services/db/identity-cache-dynamodb-service.js +734 -734
  287. package/dist/cjs/services/db/index.d.ts +19 -17
  288. package/dist/cjs/services/db/index.js +35 -33
  289. package/dist/cjs/services/db/index.js.map +1 -1
  290. package/dist/cjs/services/db/log-events-db-service.d.ts +11 -11
  291. package/dist/cjs/services/db/log-events-db-service.js +181 -181
  292. package/dist/cjs/services/db/pixels-db-service.d.ts +8 -8
  293. package/dist/cjs/services/db/pixels-db-service.js +35 -35
  294. package/dist/cjs/services/db/products-db-service-types.d.ts +10 -0
  295. package/dist/cjs/services/db/products-db-service-types.js +3 -0
  296. package/dist/cjs/services/db/products-db-service-types.js.map +1 -0
  297. package/dist/cjs/services/db/products-db-service.d.ts +19 -0
  298. package/dist/cjs/services/db/products-db-service.js +282 -0
  299. package/dist/cjs/services/db/products-db-service.js.map +1 -0
  300. package/dist/cjs/services/db/purchasable-contacts-db-service.d.ts +9 -9
  301. package/dist/cjs/services/db/purchasable-contacts-db-service.js +43 -43
  302. package/dist/cjs/services/db/purchased-contacts/index.d.ts +2 -2
  303. package/dist/cjs/services/db/purchased-contacts/index.js +18 -18
  304. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.d.ts +18 -18
  305. package/dist/cjs/services/db/purchased-contacts/purchased-contacts-db-service.js +152 -152
  306. package/dist/cjs/services/db/purchased-contacts/types.d.ts +11 -11
  307. package/dist/cjs/services/db/purchased-contacts/types.js +2 -2
  308. package/dist/cjs/services/db/shopify-app-installs-db-service.d.ts +10 -10
  309. package/dist/cjs/services/db/shopify-app-installs-db-service.js +52 -52
  310. package/dist/cjs/services/db/shopify-products-cache-db-service.d.ts +16 -16
  311. package/dist/cjs/services/db/shopify-products-cache-db-service.js +73 -73
  312. package/dist/cjs/services/db/subscriptions-db-service.d.ts +11 -11
  313. package/dist/cjs/services/db/subscriptions-db-service.js +38 -38
  314. package/dist/cjs/services/db/tracking-events-db-service.d.ts +21 -21
  315. package/dist/cjs/services/db/tracking-events-db-service.js +188 -188
  316. package/dist/cjs/services/db/user-accounts-db-service.d.ts +7 -7
  317. package/dist/cjs/services/db/user-accounts-db-service.js +17 -17
  318. package/dist/cjs/services/email-verification/contact-email-verification-service.d.ts +7 -7
  319. package/dist/cjs/services/email-verification/contact-email-verification-service.js +101 -101
  320. package/dist/cjs/services/email-verification/email-verification-service.d.ts +19 -19
  321. package/dist/cjs/services/email-verification/email-verification-service.js +131 -131
  322. package/dist/cjs/services/email-verification/index.d.ts +2 -2
  323. package/dist/cjs/services/email-verification/index.js +18 -18
  324. package/dist/cjs/services/eventbridge-integration-service.d.ts +9 -9
  325. package/dist/cjs/services/eventbridge-integration-service.js +28 -28
  326. package/dist/cjs/services/events/index.d.ts +3 -3
  327. package/dist/cjs/services/events/index.js +19 -19
  328. package/dist/cjs/services/events/log-event-service.d.ts +19 -19
  329. package/dist/cjs/services/events/log-event-service.js +77 -77
  330. package/dist/cjs/services/events/metric-event-service.d.ts +9 -9
  331. package/dist/cjs/services/events/metric-event-service.js +49 -49
  332. package/dist/cjs/services/events/tracking-event-sqs-service.d.ts +8 -8
  333. package/dist/cjs/services/events/tracking-event-sqs-service.js +34 -34
  334. package/dist/cjs/services/generic-cache-service.d.ts +7 -7
  335. package/dist/cjs/services/generic-cache-service.js +33 -33
  336. package/dist/cjs/services/index.d.ts +11 -10
  337. package/dist/cjs/services/index.js +27 -26
  338. package/dist/cjs/services/index.js.map +1 -1
  339. package/dist/cjs/services/ipdata-lookup-service.d.ts +20 -20
  340. package/dist/cjs/services/ipdata-lookup-service.js +112 -112
  341. package/dist/cjs/services/shopify/index.d.ts +2 -2
  342. package/dist/cjs/services/shopify/index.js +18 -18
  343. package/dist/cjs/services/shopify/products/index.d.ts +1 -1
  344. package/dist/cjs/services/shopify/products/index.js +17 -17
  345. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
  346. package/dist/cjs/services/shopify/products/shopify-products-serviceV2.js +112 -112
  347. package/dist/cjs/services/shopify/shopify-graphql-transformer.d.ts +8 -8
  348. package/dist/cjs/services/shopify/shopify-graphql-transformer.js +141 -141
  349. package/dist/cjs/types/acuity-types.d.ts +74 -74
  350. package/dist/cjs/types/acuity-types.js +2 -2
  351. package/dist/cjs/types/api-response.d.ts +6 -6
  352. package/dist/cjs/types/api-response.js +2 -2
  353. package/dist/cjs/types/index.d.ts +4 -4
  354. package/dist/cjs/types/index.js +33 -33
  355. package/dist/cjs/types/internal-events/event-detail-types.d.ts +20 -20
  356. package/dist/cjs/types/internal-events/event-detail-types.js +27 -27
  357. package/dist/cjs/types/internal-events/index.d.ts +1 -1
  358. package/dist/cjs/types/internal-events/index.js +17 -17
  359. package/dist/cjs/types/shopify-graphql-types/admin.generated.d.ts +123 -123
  360. package/dist/cjs/types/shopify-graphql-types/admin.generated.js +2 -2
  361. package/dist/cjs/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
  362. package/dist/cjs/types/shopify-graphql-types/admin.types.js +5311 -5311
  363. package/dist/cjs/types/shopify-graphql-types/index.d.ts +2 -2
  364. package/dist/cjs/types/shopify-graphql-types/index.js +18 -18
  365. package/dist/cjs/types/shopify-rest-types.d.ts +767 -767
  366. package/dist/cjs/types/shopify-rest-types.js +2 -2
  367. package/dist/cjs/utils/compression.d.ts +36 -36
  368. package/dist/cjs/utils/compression.js +198 -198
  369. package/dist/cjs/utils/custom-measure-formula-utils.d.ts +6 -6
  370. package/dist/cjs/utils/custom-measure-formula-utils.js +209 -209
  371. package/dist/cjs/utils/index.d.ts +4 -4
  372. package/dist/cjs/utils/index.js +20 -20
  373. package/dist/cjs/utils/retry-envelope.d.ts +12 -12
  374. package/dist/cjs/utils/retry-envelope.js +28 -28
  375. package/dist/cjs/utils/size.d.ts +2 -2
  376. package/dist/cjs/utils/size.js +49 -49
  377. package/dist/esm/__tests__/clients/acuity-client.spec.d.ts +1 -1
  378. package/dist/esm/__tests__/clients/acuity-client.spec.js +41 -41
  379. package/dist/esm/__tests__/clients/cross-platform-compression.spec.d.ts +1 -1
  380. package/dist/esm/__tests__/clients/cross-platform-compression.spec.js +329 -329
  381. package/dist/esm/__tests__/clients/dynamodb-client.spec.d.ts +1 -1
  382. package/dist/esm/__tests__/clients/dynamodb-client.spec.js +192 -192
  383. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.d.ts +1 -1
  384. package/dist/esm/__tests__/clients/sqs-bundled-client.spec.js +906 -906
  385. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.d.ts +1 -1
  386. package/dist/esm/__tests__/clients/sqs-bundling-contracts.spec.js +538 -538
  387. package/dist/esm/__tests__/clients/sqs-client.spec.d.ts +1 -1
  388. package/dist/esm/__tests__/clients/sqs-client.spec.js +189 -189
  389. package/dist/esm/__tests__/clients/sqs-unbundle.spec.d.ts +1 -1
  390. package/dist/esm/__tests__/clients/sqs-unbundle.spec.js +1355 -1355
  391. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.d.ts +1 -1
  392. package/dist/esm/__tests__/db/contact-enrichments-db-service.spec.js +66 -66
  393. package/dist/esm/__tests__/db/destinations-db-service.spec.d.ts +1 -1
  394. package/dist/esm/__tests__/db/destinations-db-service.spec.js +123 -123
  395. package/dist/esm/__tests__/db/products-db-service.spec.d.ts +1 -0
  396. package/dist/esm/__tests__/db/products-db-service.spec.js +88 -0
  397. package/dist/esm/__tests__/db/products-db-service.spec.js.map +1 -0
  398. package/dist/esm/__tests__/db/shared-read-db-services.spec.d.ts +1 -1
  399. package/dist/esm/__tests__/db/shared-read-db-services.spec.js +87 -87
  400. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.d.ts +1 -1
  401. package/dist/esm/__tests__/db/shopify-app-installs-db-service.spec.js +102 -102
  402. package/dist/esm/__tests__/db/subscriptions-db-service.spec.d.ts +1 -1
  403. package/dist/esm/__tests__/db/subscriptions-db-service.spec.js +93 -93
  404. package/dist/esm/__tests__/db/user-accounts-db-service.spec.d.ts +1 -1
  405. package/dist/esm/__tests__/db/user-accounts-db-service.spec.js +74 -74
  406. package/dist/esm/__tests__/helpers/account-users-helper.spec.d.ts +1 -1
  407. package/dist/esm/__tests__/helpers/account-users-helper.spec.js +218 -218
  408. package/dist/esm/__tests__/helpers/acuity-helper.spec.d.ts +1 -1
  409. package/dist/esm/__tests__/helpers/acuity-helper.spec.js +67 -67
  410. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.d.ts +1 -1
  411. package/dist/esm/__tests__/helpers/api-key-auth-helper.spec.js +80 -80
  412. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.d.ts +1 -1
  413. package/dist/esm/__tests__/identity-cache/identity-cache-db-service.spec.js +674 -674
  414. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.d.ts +1 -1
  415. package/dist/esm/__tests__/identity-cache/identity-cache-dynamodb-service.spec.js +1138 -1138
  416. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.d.ts +1 -1
  417. package/dist/esm/__tests__/identity-cache/identity-cache-tier-routing.spec.js +849 -849
  418. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.d.ts +1 -1
  419. package/dist/esm/__tests__/identity-cache/trait-merging-and-staleness.spec.js +1058 -1058
  420. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.d.ts +1 -1
  421. package/dist/esm/__tests__/identity-cache/volatile-traits-optimization.spec.js +816 -816
  422. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.d.ts +1 -1
  423. package/dist/esm/__tests__/integration/sqs-bundling-roundtrip.spec.js +582 -582
  424. package/dist/esm/__tests__/libs/compress-decompress.spec.d.ts +1 -1
  425. package/dist/esm/__tests__/libs/compress-decompress.spec.js +14 -14
  426. package/dist/esm/__tests__/libs/contacts.spec.d.ts +1 -1
  427. package/dist/esm/__tests__/libs/contacts.spec.js +292 -292
  428. package/dist/esm/__tests__/libs/currency.spec.d.ts +1 -1
  429. package/dist/esm/__tests__/libs/currency.spec.js +218 -218
  430. package/dist/esm/__tests__/libs/dates.spec.d.ts +1 -1
  431. package/dist/esm/__tests__/libs/dates.spec.js +128 -128
  432. package/dist/esm/__tests__/libs/domain.spec.d.ts +1 -1
  433. package/dist/esm/__tests__/libs/domain.spec.js +105 -105
  434. package/dist/esm/__tests__/libs/numbers.spec.d.ts +1 -1
  435. package/dist/esm/__tests__/libs/numbers.spec.js +259 -259
  436. package/dist/esm/__tests__/s3-client/s3-client.spec.d.ts +1 -1
  437. package/dist/esm/__tests__/s3-client/s3-client.spec.js +31 -31
  438. package/dist/esm/__tests__/services/acuity-api-service.spec.d.ts +1 -1
  439. package/dist/esm/__tests__/services/acuity-api-service.spec.js +69 -69
  440. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.d.ts +1 -0
  441. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js +22 -0
  442. package/dist/esm/__tests__/services/cost/cost-calculation-types.spec.js.map +1 -0
  443. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.d.ts +1 -0
  444. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js +3318 -0
  445. package/dist/esm/__tests__/services/cost/cost-calculator-service.spec.js.map +1 -0
  446. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.d.ts +1 -0
  447. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js +113 -0
  448. package/dist/esm/__tests__/services/cost/cost-currency-service.spec.js.map +1 -0
  449. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.d.ts +1 -0
  450. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js +467 -0
  451. package/dist/esm/__tests__/services/cost/cost-filter-service.spec.js.map +1 -0
  452. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.d.ts +1 -0
  453. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js +205 -0
  454. package/dist/esm/__tests__/services/cost/order-cost/order-cost-resolution-service.spec.js.map +1 -0
  455. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.d.ts +1 -0
  456. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js +33 -0
  457. package/dist/esm/__tests__/services/currency-exchange-rate-lookup-service.spec.js.map +1 -0
  458. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.d.ts +1 -1
  459. package/dist/esm/__tests__/services/email-verification/contact-email-verification-service.spec.js +91 -91
  460. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.d.ts +1 -1
  461. package/dist/esm/__tests__/services/email-verification/email-verification-service.spec.js +55 -55
  462. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.d.ts +1 -1
  463. package/dist/esm/__tests__/shopify/shopify-graphql-transformer.spec.js +33 -33
  464. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.d.ts +1 -1
  465. package/dist/esm/__tests__/unit/libs/api-router/public-api-router.spec.js +156 -156
  466. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.d.ts +1 -1
  467. package/dist/esm/__tests__/unit/libs/api-router/route-matcher.spec.js +67 -67
  468. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.d.ts +1 -1
  469. package/dist/esm/__tests__/utils/custom-measure-formula-utils.spec.js +137 -137
  470. package/dist/esm/clients/generic/cognito-client.d.ts +23 -23
  471. package/dist/esm/clients/generic/cognito-client.js +204 -204
  472. package/dist/esm/clients/generic/dynamodb-client.d.ts +20 -20
  473. package/dist/esm/clients/generic/dynamodb-client.js +231 -231
  474. package/dist/esm/clients/generic/eventbridge-client.d.ts +14 -14
  475. package/dist/esm/clients/generic/eventbridge-client.js +47 -47
  476. package/dist/esm/clients/generic/http-client.d.ts +14 -14
  477. package/dist/esm/clients/generic/http-client.js +53 -53
  478. package/dist/esm/clients/generic/index.d.ts +13 -13
  479. package/dist/esm/clients/generic/index.js +13 -13
  480. package/dist/esm/clients/generic/lambda-invoke-client.d.ts +10 -10
  481. package/dist/esm/clients/generic/lambda-invoke-client.js +35 -35
  482. package/dist/esm/clients/generic/location-client.d.ts +8 -8
  483. package/dist/esm/clients/generic/location-client.js +27 -27
  484. package/dist/esm/clients/generic/redis-client.d.ts +33 -33
  485. package/dist/esm/clients/generic/redis-client.js +184 -184
  486. package/dist/esm/clients/generic/s3-client.d.ts +23 -23
  487. package/dist/esm/clients/generic/s3-client.js +209 -209
  488. package/dist/esm/clients/generic/singlestore-db-client.d.ts +14 -14
  489. package/dist/esm/clients/generic/singlestore-db-client.js +40 -40
  490. package/dist/esm/clients/generic/sqs-bundled-client.d.ts +15 -15
  491. package/dist/esm/clients/generic/sqs-bundled-client.js +307 -307
  492. package/dist/esm/clients/generic/sqs-bundled-client.types.d.ts +53 -53
  493. package/dist/esm/clients/generic/sqs-bundled-client.types.js +14 -14
  494. package/dist/esm/clients/generic/sqs-client.d.ts +53 -53
  495. package/dist/esm/clients/generic/sqs-client.js +281 -281
  496. package/dist/esm/clients/generic/sqs-unbundle.d.ts +32 -32
  497. package/dist/esm/clients/generic/sqs-unbundle.js +137 -137
  498. package/dist/esm/clients/index.d.ts +3 -3
  499. package/dist/esm/clients/index.js +3 -3
  500. package/dist/esm/clients/internal-api/accounts-client.d.ts +91 -91
  501. package/dist/esm/clients/internal-api/accounts-client.js +125 -125
  502. package/dist/esm/clients/internal-api/cache-lambda-client.d.ts +26 -26
  503. package/dist/esm/clients/internal-api/cache-lambda-client.js +85 -85
  504. package/dist/esm/clients/internal-api/db-management-client.d.ts +18 -18
  505. package/dist/esm/clients/internal-api/db-management-client.js +32 -32
  506. package/dist/esm/clients/internal-api/destinations-client.d.ts +34 -34
  507. package/dist/esm/clients/internal-api/destinations-client.js +75 -75
  508. package/dist/esm/clients/internal-api/event-collector-client.d.ts +20 -20
  509. package/dist/esm/clients/internal-api/event-collector-client.js +32 -32
  510. package/dist/esm/clients/internal-api/identity-client.d.ts +31 -31
  511. package/dist/esm/clients/internal-api/identity-client.js +87 -87
  512. package/dist/esm/clients/internal-api/index.d.ts +9 -9
  513. package/dist/esm/clients/internal-api/index.js +9 -9
  514. package/dist/esm/clients/internal-api/shopify-app-install-client.d.ts +37 -37
  515. package/dist/esm/clients/internal-api/shopify-app-install-client.js +77 -77
  516. package/dist/esm/clients/internal-api/subscriptions-client.d.ts +26 -26
  517. package/dist/esm/clients/internal-api/subscriptions-client.js +73 -73
  518. package/dist/esm/clients/internal-api/users-auth-client.d.ts +35 -35
  519. package/dist/esm/clients/internal-api/users-auth-client.js +106 -106
  520. package/dist/esm/clients/third-party/acuity-client.d.ts +10 -10
  521. package/dist/esm/clients/third-party/acuity-client.js +36 -36
  522. package/dist/esm/clients/third-party/emailable-client.d.ts +7 -7
  523. package/dist/esm/clients/third-party/emailable-client.js +21 -21
  524. package/dist/esm/clients/third-party/exchange-rate-api-client.d.ts +17 -17
  525. package/dist/esm/clients/third-party/exchange-rate-api-client.js +15 -15
  526. package/dist/esm/clients/third-party/index.d.ts +5 -5
  527. package/dist/esm/clients/third-party/index.js +5 -5
  528. package/dist/esm/clients/third-party/loops-client.d.ts +10 -10
  529. package/dist/esm/clients/third-party/loops-client.js +26 -26
  530. package/dist/esm/clients/third-party/shopify/graphql-order-queries.d.ts +25 -25
  531. package/dist/esm/clients/third-party/shopify/graphql-order-queries.js +1 -1
  532. package/dist/esm/clients/third-party/shopify/graphql-product-queries.d.ts +2 -2
  533. package/dist/esm/clients/third-party/shopify/graphql-product-queries.js +2 -2
  534. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.d.ts +10 -10
  535. package/dist/esm/clients/third-party/shopify/shopify-graphql-client.js +157 -157
  536. package/dist/esm/clients/third-party/shopify-client.d.ts +29 -29
  537. package/dist/esm/clients/third-party/shopify-client.js +142 -142
  538. package/dist/esm/constants/index.d.ts +1 -1
  539. package/dist/esm/constants/index.js +1 -1
  540. package/dist/esm/constants/sqs.d.ts +20 -20
  541. package/dist/esm/constants/sqs.js +22 -22
  542. package/dist/esm/helpers/account-users-helper.d.ts +2 -2
  543. package/dist/esm/helpers/account-users-helper.js +18 -18
  544. package/dist/esm/helpers/acuity-helper.d.ts +4 -4
  545. package/dist/esm/helpers/acuity-helper.js +51 -51
  546. package/dist/esm/helpers/api-key-auth-helper.d.ts +9 -9
  547. package/dist/esm/helpers/api-key-auth-helper.js +35 -35
  548. package/dist/esm/helpers/api-key-authorizer-helper.d.ts +36 -36
  549. package/dist/esm/helpers/api-key-authorizer-helper.js +83 -83
  550. package/dist/esm/helpers/identity-cache-helper.d.ts +30 -30
  551. package/dist/esm/helpers/identity-cache-helper.js +248 -248
  552. package/dist/esm/helpers/index.d.ts +10 -10
  553. package/dist/esm/helpers/index.js +10 -10
  554. package/dist/esm/helpers/input-validation-helper.d.ts +3 -3
  555. package/dist/esm/helpers/input-validation-helper.js +18 -18
  556. package/dist/esm/helpers/logging-helper.d.ts +16 -16
  557. package/dist/esm/helpers/logging-helper.js +56 -56
  558. package/dist/esm/helpers/response-helper.d.ts +18 -18
  559. package/dist/esm/helpers/response-helper.js +37 -37
  560. package/dist/esm/helpers/shopify-helper.d.ts +9 -9
  561. package/dist/esm/helpers/shopify-helper.js +21 -21
  562. package/dist/esm/helpers/sqs-utils.d.ts +6 -6
  563. package/dist/esm/helpers/sqs-utils.js +9 -9
  564. package/dist/esm/index.d.ts +7 -7
  565. package/dist/esm/index.js +7 -7
  566. package/dist/esm/libs/api-router/index.d.ts +2 -2
  567. package/dist/esm/libs/api-router/index.js +2 -2
  568. package/dist/esm/libs/api-router/public-api-router.d.ts +3 -3
  569. package/dist/esm/libs/api-router/public-api-router.js +32 -32
  570. package/dist/esm/libs/api-router/route-matcher.d.ts +21 -21
  571. package/dist/esm/libs/api-router/route-matcher.js +30 -30
  572. package/dist/esm/libs/click-id-parser.d.ts +23 -23
  573. package/dist/esm/libs/click-id-parser.js +45 -45
  574. package/dist/esm/libs/compression.d.ts +2 -2
  575. package/dist/esm/libs/compression.js +25 -25
  576. package/dist/esm/libs/contacts.d.ts +7 -7
  577. package/dist/esm/libs/contacts.js +143 -143
  578. package/dist/esm/libs/cookie.d.ts +17 -17
  579. package/dist/esm/libs/cookie.js +70 -70
  580. package/dist/esm/libs/crypto.d.ts +4 -4
  581. package/dist/esm/libs/crypto.js +15 -15
  582. package/dist/esm/libs/csv.d.ts +2 -2
  583. package/dist/esm/libs/csv.js +30 -30
  584. package/dist/esm/libs/currency.d.ts +1 -1
  585. package/dist/esm/libs/currency.js +22 -22
  586. package/dist/esm/libs/dates.d.ts +12 -12
  587. package/dist/esm/libs/dates.js +83 -83
  588. package/dist/esm/libs/domain.d.ts +2 -2
  589. package/dist/esm/libs/domain.js +33 -33
  590. package/dist/esm/libs/emails.d.ts +8 -8
  591. package/dist/esm/libs/emails.js +146 -146
  592. package/dist/esm/libs/http-error.d.ts +21 -21
  593. package/dist/esm/libs/http-error.js +59 -59
  594. package/dist/esm/libs/http-status-codes.d.ts +58 -58
  595. package/dist/esm/libs/http-status-codes.js +59 -59
  596. package/dist/esm/libs/index.d.ts +19 -19
  597. package/dist/esm/libs/index.js +19 -19
  598. package/dist/esm/libs/numbers.d.ts +1 -1
  599. package/dist/esm/libs/numbers.js +11 -11
  600. package/dist/esm/libs/referrer-parser/index.d.ts +2 -2
  601. package/dist/esm/libs/referrer-parser/index.js +2 -2
  602. package/dist/esm/libs/referrer-parser/referrer-data.d.ts +9 -9
  603. package/dist/esm/libs/referrer-parser/referrer-data.js +3304 -3304
  604. package/dist/esm/libs/referrer-parser/referrer-parser-util.d.ts +20 -20
  605. package/dist/esm/libs/referrer-parser/referrer-parser-util.js +124 -124
  606. package/dist/esm/libs/strings.d.ts +3 -3
  607. package/dist/esm/libs/strings.js +40 -40
  608. package/dist/esm/libs/traits.d.ts +6 -6
  609. package/dist/esm/libs/traits.js +54 -54
  610. package/dist/esm/libs/url.d.ts +1 -1
  611. package/dist/esm/libs/url.js +9 -9
  612. package/dist/esm/services/acuity-api-service.d.ts +9 -9
  613. package/dist/esm/services/acuity-api-service.js +69 -69
  614. package/dist/esm/services/cache/generic-cached-object.d.ts +5 -5
  615. package/dist/esm/services/cache/generic-cached-object.js +1 -1
  616. package/dist/esm/services/cache/index.d.ts +1 -1
  617. package/dist/esm/services/cache/index.js +1 -1
  618. package/dist/esm/services/cache/product-cache-service.d.ts +21 -21
  619. package/dist/esm/services/cache/product-cache-service.js +68 -68
  620. package/dist/esm/services/cost/cost-calculation-types.d.ts +69 -0
  621. package/dist/esm/services/cost/cost-calculation-types.js +16 -0
  622. package/dist/esm/services/cost/cost-calculation-types.js.map +1 -0
  623. package/dist/esm/services/cost/cost-calculator-service.d.ts +24 -0
  624. package/dist/esm/services/cost/cost-calculator-service.js +451 -0
  625. package/dist/esm/services/cost/cost-calculator-service.js.map +1 -0
  626. package/dist/esm/services/cost/cost-currency-service.d.ts +6 -0
  627. package/dist/esm/services/cost/cost-currency-service.js +85 -0
  628. package/dist/esm/services/cost/cost-currency-service.js.map +1 -0
  629. package/dist/esm/services/cost/cost-filter-service.d.ts +10 -0
  630. package/dist/esm/services/cost/cost-filter-service.js +119 -0
  631. package/dist/esm/services/cost/cost-filter-service.js.map +1 -0
  632. package/dist/esm/services/cost/index.d.ts +5 -0
  633. package/dist/esm/services/cost/index.js +6 -0
  634. package/dist/esm/services/cost/index.js.map +1 -0
  635. package/dist/esm/services/cost/order-cost/index.d.ts +2 -0
  636. package/dist/esm/services/cost/order-cost/index.js +3 -0
  637. package/dist/esm/services/cost/order-cost/index.js.map +1 -0
  638. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.d.ts +23 -0
  639. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js +356 -0
  640. package/dist/esm/services/cost/order-cost/order-cost-resolution-service.js.map +1 -0
  641. package/dist/esm/services/cost/order-cost/order-cost-resolution-types.d.ts +37 -0
  642. package/dist/esm/services/cost/order-cost/order-cost-resolution-types.js +2 -0
  643. package/dist/esm/services/cost/order-cost/order-cost-resolution-types.js.map +1 -0
  644. package/dist/esm/services/currency-exchange-rate-lookup-service.d.ts +12 -11
  645. package/dist/esm/services/currency-exchange-rate-lookup-service.js +90 -62
  646. package/dist/esm/services/currency-exchange-rate-lookup-service.js.map +1 -1
  647. package/dist/esm/services/db/accounts-db-service.d.ts +9 -9
  648. package/dist/esm/services/db/accounts-db-service.js +29 -29
  649. package/dist/esm/services/db/api-keys-db-service.d.ts +10 -10
  650. package/dist/esm/services/db/api-keys-db-service.js +32 -32
  651. package/dist/esm/services/db/contact-enrichments-db-service.d.ts +15 -15
  652. package/dist/esm/services/db/contact-enrichments-db-service.js +90 -90
  653. package/dist/esm/services/db/currency-exchange-rates-db-service.d.ts +21 -21
  654. package/dist/esm/services/db/currency-exchange-rates-db-service.js +35 -35
  655. package/dist/esm/services/db/custom-measures-db-service.d.ts +14 -14
  656. package/dist/esm/services/db/custom-measures-db-service.js +44 -44
  657. package/dist/esm/services/db/destinations-db-service.d.ts +13 -13
  658. package/dist/esm/services/db/destinations-db-service.js +70 -70
  659. package/dist/esm/services/db/identity-cache-db-service.d.ts +28 -28
  660. package/dist/esm/services/db/identity-cache-db-service.js +313 -313
  661. package/dist/esm/services/db/identity-cache-dynamodb-service.d.ts +44 -44
  662. package/dist/esm/services/db/identity-cache-dynamodb-service.js +727 -727
  663. package/dist/esm/services/db/index.d.ts +19 -17
  664. package/dist/esm/services/db/index.js +19 -17
  665. package/dist/esm/services/db/index.js.map +1 -1
  666. package/dist/esm/services/db/log-events-db-service.d.ts +11 -11
  667. package/dist/esm/services/db/log-events-db-service.js +177 -177
  668. package/dist/esm/services/db/pixels-db-service.d.ts +8 -8
  669. package/dist/esm/services/db/pixels-db-service.js +31 -31
  670. package/dist/esm/services/db/products-db-service-types.d.ts +10 -0
  671. package/dist/esm/services/db/products-db-service-types.js +2 -0
  672. package/dist/esm/services/db/products-db-service-types.js.map +1 -0
  673. package/dist/esm/services/db/products-db-service.d.ts +19 -0
  674. package/dist/esm/services/db/products-db-service.js +278 -0
  675. package/dist/esm/services/db/products-db-service.js.map +1 -0
  676. package/dist/esm/services/db/purchasable-contacts-db-service.d.ts +9 -9
  677. package/dist/esm/services/db/purchasable-contacts-db-service.js +39 -39
  678. package/dist/esm/services/db/purchased-contacts/index.d.ts +2 -2
  679. package/dist/esm/services/db/purchased-contacts/index.js +2 -2
  680. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.d.ts +18 -18
  681. package/dist/esm/services/db/purchased-contacts/purchased-contacts-db-service.js +148 -148
  682. package/dist/esm/services/db/purchased-contacts/types.d.ts +11 -11
  683. package/dist/esm/services/db/purchased-contacts/types.js +1 -1
  684. package/dist/esm/services/db/shopify-app-installs-db-service.d.ts +10 -10
  685. package/dist/esm/services/db/shopify-app-installs-db-service.js +48 -48
  686. package/dist/esm/services/db/shopify-products-cache-db-service.d.ts +16 -16
  687. package/dist/esm/services/db/shopify-products-cache-db-service.js +66 -66
  688. package/dist/esm/services/db/subscriptions-db-service.d.ts +11 -11
  689. package/dist/esm/services/db/subscriptions-db-service.js +34 -34
  690. package/dist/esm/services/db/tracking-events-db-service.d.ts +21 -21
  691. package/dist/esm/services/db/tracking-events-db-service.js +184 -184
  692. package/dist/esm/services/db/user-accounts-db-service.d.ts +7 -7
  693. package/dist/esm/services/db/user-accounts-db-service.js +13 -13
  694. package/dist/esm/services/email-verification/contact-email-verification-service.d.ts +7 -7
  695. package/dist/esm/services/email-verification/contact-email-verification-service.js +97 -97
  696. package/dist/esm/services/email-verification/email-verification-service.d.ts +19 -19
  697. package/dist/esm/services/email-verification/email-verification-service.js +127 -127
  698. package/dist/esm/services/email-verification/index.d.ts +2 -2
  699. package/dist/esm/services/email-verification/index.js +2 -2
  700. package/dist/esm/services/eventbridge-integration-service.d.ts +9 -9
  701. package/dist/esm/services/eventbridge-integration-service.js +24 -24
  702. package/dist/esm/services/events/index.d.ts +3 -3
  703. package/dist/esm/services/events/index.js +3 -3
  704. package/dist/esm/services/events/log-event-service.d.ts +19 -19
  705. package/dist/esm/services/events/log-event-service.js +73 -73
  706. package/dist/esm/services/events/metric-event-service.d.ts +9 -9
  707. package/dist/esm/services/events/metric-event-service.js +45 -45
  708. package/dist/esm/services/events/tracking-event-sqs-service.d.ts +8 -8
  709. package/dist/esm/services/events/tracking-event-sqs-service.js +30 -30
  710. package/dist/esm/services/generic-cache-service.d.ts +7 -7
  711. package/dist/esm/services/generic-cache-service.js +29 -29
  712. package/dist/esm/services/index.d.ts +11 -10
  713. package/dist/esm/services/index.js +11 -10
  714. package/dist/esm/services/index.js.map +1 -1
  715. package/dist/esm/services/ipdata-lookup-service.d.ts +20 -20
  716. package/dist/esm/services/ipdata-lookup-service.js +108 -108
  717. package/dist/esm/services/shopify/index.d.ts +2 -2
  718. package/dist/esm/services/shopify/index.js +2 -2
  719. package/dist/esm/services/shopify/products/index.d.ts +1 -1
  720. package/dist/esm/services/shopify/products/index.js +1 -1
  721. package/dist/esm/services/shopify/products/shopify-products-serviceV2.d.ts +17 -17
  722. package/dist/esm/services/shopify/products/shopify-products-serviceV2.js +108 -108
  723. package/dist/esm/services/shopify/shopify-graphql-transformer.d.ts +8 -8
  724. package/dist/esm/services/shopify/shopify-graphql-transformer.js +138 -138
  725. package/dist/esm/types/acuity-types.d.ts +74 -74
  726. package/dist/esm/types/acuity-types.js +1 -1
  727. package/dist/esm/types/api-response.d.ts +6 -6
  728. package/dist/esm/types/api-response.js +1 -1
  729. package/dist/esm/types/index.d.ts +4 -4
  730. package/dist/esm/types/index.js +4 -4
  731. package/dist/esm/types/internal-events/event-detail-types.d.ts +20 -20
  732. package/dist/esm/types/internal-events/event-detail-types.js +24 -24
  733. package/dist/esm/types/internal-events/index.d.ts +1 -1
  734. package/dist/esm/types/internal-events/index.js +1 -1
  735. package/dist/esm/types/shopify-graphql-types/admin.generated.d.ts +123 -123
  736. package/dist/esm/types/shopify-graphql-types/admin.generated.js +1 -1
  737. package/dist/esm/types/shopify-graphql-types/admin.types.d.ts +26289 -26289
  738. package/dist/esm/types/shopify-graphql-types/admin.types.js +5299 -5299
  739. package/dist/esm/types/shopify-graphql-types/index.d.ts +2 -2
  740. package/dist/esm/types/shopify-graphql-types/index.js +2 -2
  741. package/dist/esm/types/shopify-rest-types.d.ts +767 -767
  742. package/dist/esm/types/shopify-rest-types.js +1 -1
  743. package/dist/esm/utils/compression.d.ts +36 -36
  744. package/dist/esm/utils/compression.js +187 -187
  745. package/dist/esm/utils/custom-measure-formula-utils.d.ts +6 -6
  746. package/dist/esm/utils/custom-measure-formula-utils.js +201 -201
  747. package/dist/esm/utils/index.d.ts +4 -4
  748. package/dist/esm/utils/index.js +4 -4
  749. package/dist/esm/utils/retry-envelope.d.ts +12 -12
  750. package/dist/esm/utils/retry-envelope.js +22 -22
  751. package/dist/esm/utils/size.d.ts +2 -2
  752. package/dist/esm/utils/size.js +44 -44
  753. package/package.json +134 -134
@@ -1,355 +1,355 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- const zlib = __importStar(require("zlib"));
27
- const util_1 = require("util");
28
- const sqs_unbundle_1 = require("../../clients/generic/sqs-unbundle");
29
- const compression_1 = require("../../utils/compression");
30
- const sqs_bundled_client_types_1 = require("../../clients/generic/sqs-bundled-client.types");
31
- const gzip = (0, util_1.promisify)(zlib.gzip);
32
- const gunzip = (0, util_1.promisify)(zlib.gunzip);
33
- async function cfWorkerCompress(data) {
34
- const stream = new CompressionStream('gzip');
35
- const writer = stream.writable.getWriter();
36
- await writer.write(data);
37
- await writer.close();
38
- const chunks = [];
39
- const reader = stream.readable.getReader();
40
- for (;;) {
41
- const { done, value } = await reader.read();
42
- if (done)
43
- break;
44
- chunks.push(value);
45
- }
46
- const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
47
- const result = new Uint8Array(totalLength);
48
- let offset = 0;
49
- for (const chunk of chunks) {
50
- result.set(chunk, offset);
51
- offset += chunk.length;
52
- }
53
- return result;
54
- }
55
- function cfWorkerToBase64(bytes) {
56
- let binary = '';
57
- for (let i = 0; i < bytes.length; i++) {
58
- binary += String.fromCharCode(bytes[i]);
59
- }
60
- return btoa(binary);
61
- }
62
- async function createCfWorkerBundledMessage(messageType, items) {
63
- const json = JSON.stringify(items);
64
- const encoder = new TextEncoder();
65
- const uncompressed = encoder.encode(json);
66
- const compressed = await cfWorkerCompress(uncompressed);
67
- const base64 = cfWorkerToBase64(compressed);
68
- const envelope = {
69
- v: 1,
70
- c: 'gzip',
71
- n: items.length,
72
- p: base64,
73
- s: json.length,
74
- };
75
- return {
76
- messageId: crypto.randomUUID(),
77
- messageType,
78
- messageTime: new Date().toISOString(),
79
- messageBody: envelope,
80
- };
81
- }
82
- function createSQSRecord(body, messageId) {
83
- return {
84
- messageId: messageId ?? crypto.randomUUID(),
85
- receiptHandle: 'test-receipt-handle',
86
- body,
87
- attributes: {
88
- ApproximateReceiveCount: '1',
89
- SentTimestamp: Date.now().toString(),
90
- SenderId: 'test-sender',
91
- ApproximateFirstReceiveTimestamp: Date.now().toString(),
92
- },
93
- messageAttributes: {},
94
- md5OfBody: 'test-md5',
95
- eventSource: 'aws:sqs',
96
- eventSourceARN: 'arn:aws:sqs:us-east-1:123456789:test-queue',
97
- awsRegion: 'us-east-1',
98
- };
99
- }
100
- const GOLDEN_ITEMS = [
101
- { pixelId: 'px_golden_001', event: 'page_view', data: { url: 'https://example.com/test' } },
102
- { pixelId: 'px_golden_002', event: 'purchase', data: { amount: 99.99, currency: 'USD' } },
103
- ];
104
- const GOLDEN_GZIP_BASE64 = 'H4sIAAAAAAAACnXMvQrDIBhG4Xt5Z4lpN527dC6dShHRjyTgH0ZTS/DeS7YsXc+B57UjLY3c3UIiNTVFZymocbyAgTYK5eh6IrUt9AGD1UVD7qjZQWIuJa2Sc2raJ0eDiZ4XWgt6Z//k61mu2cx6pROsfazHE2IQgsHUnCmYLySejxt6f/8AfIEZO7MAAAA=';
105
- describe('Cross-Platform Compression Compatibility', () => {
106
- describe('CompressionStream (CF Worker) → zlib.gunzip (Lambda)', () => {
107
- it('basic payload round-trips correctly', async () => {
108
- const originalData = { pixelId: 'px_test', event: 'page_view' };
109
- const json = JSON.stringify([originalData]);
110
- const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
111
- expect(compressed[0]).toBe(0x1f);
112
- expect(compressed[1]).toBe(0x8b);
113
- const decompressed = await gunzip(Buffer.from(compressed));
114
- const parsed = JSON.parse(decompressed.toString('utf8'));
115
- expect(parsed).toEqual([originalData]);
116
- });
117
- it('CompressionStream output is valid GZIP decompressible by at-service-common', async () => {
118
- const items = [{ pixelId: 'px_001' }, { pixelId: 'px_002' }];
119
- const json = JSON.stringify(items);
120
- const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
121
- const base64 = cfWorkerToBase64(compressed);
122
- const result = await (0, compression_1.decompressFromBase64)(base64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
123
- expect(result).toEqual(items);
124
- });
125
- it('unbundleRecords handles CF Worker compressed messages', async () => {
126
- const items = [
127
- { pixelId: 'px_cfworker_001', event: 'PageView' },
128
- { pixelId: 'px_cfworker_002', event: 'AddToCart' },
129
- ];
130
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
131
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
132
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
133
- expect(result.items).toHaveLength(2);
134
- expect(result.failedMessageIds).toHaveLength(0);
135
- expect(result.items).toEqual(items);
136
- });
137
- });
138
- describe('Node zlib.gzip → zlib.gunzip (baseline)', () => {
139
- it('Node gzip/gunzip round-trips correctly', async () => {
140
- const original = { test: 'data', number: 123 };
141
- const json = JSON.stringify(original);
142
- const compressed = await gzip(Buffer.from(json, 'utf8'));
143
- const decompressed = await gunzip(compressed);
144
- expect(JSON.parse(decompressed.toString('utf8'))).toEqual(original);
145
- });
146
- it('Node gzip output is decompressible by at-service-common', async () => {
147
- const items = [{ id: 1 }, { id: 2 }];
148
- const json = JSON.stringify(items);
149
- const compressed = await gzip(Buffer.from(json, 'utf8'));
150
- const base64 = compressed.toString('base64');
151
- const result = await (0, compression_1.decompressFromBase64)(base64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
152
- expect(result).toEqual(items);
153
- });
154
- });
155
- describe('Golden Payload Compatibility', () => {
156
- it('golden payload from at-cf-tracking-api is decompressible', async () => {
157
- const result = await (0, compression_1.decompressFromBase64)(GOLDEN_GZIP_BASE64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
158
- expect(result).toEqual(GOLDEN_ITEMS);
159
- });
160
- it('golden payload works through full unbundleRecords path', async () => {
161
- const envelope = {
162
- v: 1,
163
- c: 'gzip',
164
- n: GOLDEN_ITEMS.length,
165
- p: GOLDEN_GZIP_BASE64,
166
- s: 179,
167
- };
168
- const wrapped = {
169
- messageId: 'golden-test-id',
170
- messageType: 'TRACKING_EVENT_COLLECT',
171
- messageTime: new Date().toISOString(),
172
- messageBody: envelope,
173
- };
174
- const sqsRecord = createSQSRecord(JSON.stringify(wrapped));
175
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
176
- expect(result.items).toEqual(GOLDEN_ITEMS);
177
- expect(result.stats.bundledSqsRecords).toBe(1);
178
- });
179
- it('CompressionStream output matches zlib output content', async () => {
180
- const json = JSON.stringify(GOLDEN_ITEMS);
181
- const cfCompressed = await cfWorkerCompress(new TextEncoder().encode(json));
182
- const nodeCompressed = await gzip(Buffer.from(json, 'utf8'));
183
- const cfDecompressed = await gunzip(Buffer.from(cfCompressed));
184
- const nodeDecompressed = await gunzip(nodeCompressed);
185
- expect(cfDecompressed.toString('utf8')).toBe(json);
186
- expect(nodeDecompressed.toString('utf8')).toBe(json);
187
- expect(cfDecompressed.toString('utf8')).toBe(nodeDecompressed.toString('utf8'));
188
- });
189
- });
190
- describe('Unicode and Special Characters', () => {
191
- it('emoji and CJK characters survive CF Worker compression round-trip', async () => {
192
- const unicodeItems = [
193
- { pixelId: 'px_emoji', event: '🎉_celebration', data: { message: 'Success! 🚀✨' } },
194
- { pixelId: 'px_cjk', event: 'page_view', data: { title: '中文页面标题', description: '日本語の説明' } },
195
- { pixelId: 'px_rtl', event: 'page_view', data: { title: 'مرحبا بالعالم', content: 'שלום עולם' } },
196
- ];
197
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', unicodeItems);
198
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
199
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
200
- expect(result.items).toHaveLength(3);
201
- expect(result.items).toEqual(unicodeItems);
202
- const item0 = result.items[0];
203
- const item1 = result.items[1];
204
- const item2 = result.items[2];
205
- expect(item0.event).toBe('🎉_celebration');
206
- expect(item0.data.message).toBe('Success! 🚀✨');
207
- expect(item1.data.title).toBe('中文页面标题');
208
- expect(item2.data.title).toBe('مرحبا بالعالم');
209
- });
210
- it('special characters in JSON survive round-trip', async () => {
211
- const specialItems = [
212
- { pixelId: 'px_special', data: { name: 'O\'Brien & Co.', note: 'Line1\nLine2\tTabbed' } },
213
- { pixelId: 'px_quotes', data: { text: 'He said "hello"', escaped: '\\backslash' } },
214
- ];
215
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', specialItems);
216
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
217
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
218
- expect(result.items).toEqual(specialItems);
219
- });
220
- });
221
- describe('Large Payload Handling', () => {
222
- it('100 items compressed by CF Worker decompresses correctly', async () => {
223
- const items = Array.from({ length: 100 }, (_, i) => ({
224
- pixelId: `px_${i.toString().padStart(4, '0')}`,
225
- event: i % 2 === 0 ? 'page_view' : 'purchase',
226
- timestamp: new Date(Date.now() - i * 1000).toISOString(),
227
- }));
228
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
229
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
230
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
231
- expect(result.items).toHaveLength(100);
232
- expect(result.items).toEqual(items);
233
- });
234
- it('deeply nested objects survive compression', async () => {
235
- const nestedItems = [
236
- {
237
- pixelId: 'px_nested',
238
- data: {
239
- level1: {
240
- level2: {
241
- level3: {
242
- level4: {
243
- value: 'deep value',
244
- array: [1, 2, 3, { nested: true }],
245
- },
246
- },
247
- },
248
- },
249
- },
250
- },
251
- ];
252
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', nestedItems);
253
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
254
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
255
- expect(result.items).toEqual(nestedItems);
256
- const item = result.items[0];
257
- expect(item.data.level1.level2.level3.level4.value).toBe('deep value');
258
- });
259
- });
260
- describe('Edge Cases', () => {
261
- it('empty array compresses/decompresses correctly', async () => {
262
- const items = [];
263
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
264
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
265
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
266
- expect(result.items).toHaveLength(0);
267
- expect(result.failedMessageIds).toHaveLength(0);
268
- });
269
- it('single item compresses/decompresses correctly', async () => {
270
- const items = [{ pixelId: 'px_single' }];
271
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
272
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
273
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
274
- expect(result.items).toEqual(items);
275
- });
276
- it('null and undefined values in objects preserved', async () => {
277
- const items = [
278
- { pixelId: 'px_nulls', value: null, nested: { alsoNull: null } },
279
- { pixelId: 'px_zero', count: 0, price: 0.0 },
280
- { pixelId: 'px_empty', name: '', items: [] },
281
- { pixelId: 'px_bool', enabled: false, disabled: true },
282
- ];
283
- const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
284
- const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
285
- const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
286
- expect(result.items).toEqual(items);
287
- const item0 = result.items[0];
288
- const item1 = result.items[1];
289
- const item2 = result.items[2];
290
- const item3 = result.items[3];
291
- expect(item0.value).toBeNull();
292
- expect(item0?.nested?.alsoNull).toBeNull();
293
- expect(item1.count).toBe(0);
294
- expect(item1.price).toBe(0.0);
295
- expect(item2.name).toBe('');
296
- expect(item2.items).toEqual([]);
297
- expect(item3.enabled).toBe(false);
298
- expect(item3.disabled).toBe(true);
299
- });
300
- });
301
- describe('GZIP Header Validation', () => {
302
- it('CF Worker compression produces valid GZIP header', async () => {
303
- const data = new TextEncoder().encode('test data');
304
- const compressed = await cfWorkerCompress(data);
305
- expect(compressed[0]).toBe(0x1f);
306
- expect(compressed[1]).toBe(0x8b);
307
- expect(compressed[2]).toBe(8);
308
- });
309
- it('Node zlib compression produces valid GZIP header', async () => {
310
- const compressed = await gzip(Buffer.from('test data', 'utf8'));
311
- expect(compressed[0]).toBe(0x1f);
312
- expect(compressed[1]).toBe(0x8b);
313
- expect(compressed[2]).toBe(8);
314
- });
315
- });
316
- describe('Mixed Batch Processing', () => {
317
- it('handles mix of CF Worker compressed and Node compressed records', async () => {
318
- const cfItems = [{ pixelId: 'px_cf_001' }, { pixelId: 'px_cf_002' }];
319
- const cfMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', cfItems);
320
- const nodeItems = [{ pixelId: 'px_node_001' }];
321
- const nodeJson = JSON.stringify(nodeItems);
322
- const nodeCompressed = await gzip(Buffer.from(nodeJson, 'utf8'));
323
- const nodeEnvelope = {
324
- v: 1,
325
- c: 'gzip',
326
- n: 1,
327
- p: nodeCompressed.toString('base64'),
328
- s: nodeJson.length,
329
- };
330
- const nodeMessage = {
331
- messageId: crypto.randomUUID(),
332
- messageType: 'TRACKING_EVENT_COLLECT',
333
- messageTime: new Date().toISOString(),
334
- messageBody: nodeEnvelope,
335
- };
336
- const legacyItem = { pixelId: 'px_legacy' };
337
- const records = [
338
- createSQSRecord(JSON.stringify(cfMessage), 'msg-cf'),
339
- createSQSRecord(JSON.stringify(nodeMessage), 'msg-node'),
340
- createSQSRecord(JSON.stringify(legacyItem), 'msg-legacy'),
341
- ];
342
- const result = await (0, sqs_unbundle_1.unbundleRecords)(records);
343
- expect(result.items).toHaveLength(4);
344
- expect(result.failedMessageIds).toHaveLength(0);
345
- expect(result.stats.bundledSqsRecords).toBe(2);
346
- expect(result.stats.legacySqsRecords).toBe(1);
347
- const pixelIds = result.items.map((item) => item.pixelId);
348
- expect(pixelIds).toContain('px_cf_001');
349
- expect(pixelIds).toContain('px_cf_002');
350
- expect(pixelIds).toContain('px_node_001');
351
- expect(pixelIds).toContain('px_legacy');
352
- });
353
- });
354
- });
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ const zlib = __importStar(require("zlib"));
27
+ const util_1 = require("util");
28
+ const sqs_unbundle_1 = require("../../clients/generic/sqs-unbundle");
29
+ const compression_1 = require("../../utils/compression");
30
+ const sqs_bundled_client_types_1 = require("../../clients/generic/sqs-bundled-client.types");
31
+ const gzip = (0, util_1.promisify)(zlib.gzip);
32
+ const gunzip = (0, util_1.promisify)(zlib.gunzip);
33
+ async function cfWorkerCompress(data) {
34
+ const stream = new CompressionStream('gzip');
35
+ const writer = stream.writable.getWriter();
36
+ await writer.write(data);
37
+ await writer.close();
38
+ const chunks = [];
39
+ const reader = stream.readable.getReader();
40
+ for (;;) {
41
+ const { done, value } = await reader.read();
42
+ if (done)
43
+ break;
44
+ chunks.push(value);
45
+ }
46
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
47
+ const result = new Uint8Array(totalLength);
48
+ let offset = 0;
49
+ for (const chunk of chunks) {
50
+ result.set(chunk, offset);
51
+ offset += chunk.length;
52
+ }
53
+ return result;
54
+ }
55
+ function cfWorkerToBase64(bytes) {
56
+ let binary = '';
57
+ for (let i = 0; i < bytes.length; i++) {
58
+ binary += String.fromCharCode(bytes[i]);
59
+ }
60
+ return btoa(binary);
61
+ }
62
+ async function createCfWorkerBundledMessage(messageType, items) {
63
+ const json = JSON.stringify(items);
64
+ const encoder = new TextEncoder();
65
+ const uncompressed = encoder.encode(json);
66
+ const compressed = await cfWorkerCompress(uncompressed);
67
+ const base64 = cfWorkerToBase64(compressed);
68
+ const envelope = {
69
+ v: 1,
70
+ c: 'gzip',
71
+ n: items.length,
72
+ p: base64,
73
+ s: json.length,
74
+ };
75
+ return {
76
+ messageId: crypto.randomUUID(),
77
+ messageType,
78
+ messageTime: new Date().toISOString(),
79
+ messageBody: envelope,
80
+ };
81
+ }
82
+ function createSQSRecord(body, messageId) {
83
+ return {
84
+ messageId: messageId ?? crypto.randomUUID(),
85
+ receiptHandle: 'test-receipt-handle',
86
+ body,
87
+ attributes: {
88
+ ApproximateReceiveCount: '1',
89
+ SentTimestamp: Date.now().toString(),
90
+ SenderId: 'test-sender',
91
+ ApproximateFirstReceiveTimestamp: Date.now().toString(),
92
+ },
93
+ messageAttributes: {},
94
+ md5OfBody: 'test-md5',
95
+ eventSource: 'aws:sqs',
96
+ eventSourceARN: 'arn:aws:sqs:us-east-1:123456789:test-queue',
97
+ awsRegion: 'us-east-1',
98
+ };
99
+ }
100
+ const GOLDEN_ITEMS = [
101
+ { pixelId: 'px_golden_001', event: 'page_view', data: { url: 'https://example.com/test' } },
102
+ { pixelId: 'px_golden_002', event: 'purchase', data: { amount: 99.99, currency: 'USD' } },
103
+ ];
104
+ const GOLDEN_GZIP_BASE64 = 'H4sIAAAAAAAACnXMvQrDIBhG4Xt5Z4lpN527dC6dShHRjyTgH0ZTS/DeS7YsXc+B57UjLY3c3UIiNTVFZymocbyAgTYK5eh6IrUt9AGD1UVD7qjZQWIuJa2Sc2raJ0eDiZ4XWgt6Z//k61mu2cx6pROsfazHE2IQgsHUnCmYLySejxt6f/8AfIEZO7MAAAA=';
105
+ describe('Cross-Platform Compression Compatibility', () => {
106
+ describe('CompressionStream (CF Worker) → zlib.gunzip (Lambda)', () => {
107
+ it('basic payload round-trips correctly', async () => {
108
+ const originalData = { pixelId: 'px_test', event: 'page_view' };
109
+ const json = JSON.stringify([originalData]);
110
+ const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
111
+ expect(compressed[0]).toBe(0x1f);
112
+ expect(compressed[1]).toBe(0x8b);
113
+ const decompressed = await gunzip(Buffer.from(compressed));
114
+ const parsed = JSON.parse(decompressed.toString('utf8'));
115
+ expect(parsed).toEqual([originalData]);
116
+ });
117
+ it('CompressionStream output is valid GZIP decompressible by at-service-common', async () => {
118
+ const items = [{ pixelId: 'px_001' }, { pixelId: 'px_002' }];
119
+ const json = JSON.stringify(items);
120
+ const compressed = await cfWorkerCompress(new TextEncoder().encode(json));
121
+ const base64 = cfWorkerToBase64(compressed);
122
+ const result = await (0, compression_1.decompressFromBase64)(base64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
123
+ expect(result).toEqual(items);
124
+ });
125
+ it('unbundleRecords handles CF Worker compressed messages', async () => {
126
+ const items = [
127
+ { pixelId: 'px_cfworker_001', event: 'PageView' },
128
+ { pixelId: 'px_cfworker_002', event: 'AddToCart' },
129
+ ];
130
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
131
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
132
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
133
+ expect(result.items).toHaveLength(2);
134
+ expect(result.failedMessageIds).toHaveLength(0);
135
+ expect(result.items).toEqual(items);
136
+ });
137
+ });
138
+ describe('Node zlib.gzip → zlib.gunzip (baseline)', () => {
139
+ it('Node gzip/gunzip round-trips correctly', async () => {
140
+ const original = { test: 'data', number: 123 };
141
+ const json = JSON.stringify(original);
142
+ const compressed = await gzip(Buffer.from(json, 'utf8'));
143
+ const decompressed = await gunzip(compressed);
144
+ expect(JSON.parse(decompressed.toString('utf8'))).toEqual(original);
145
+ });
146
+ it('Node gzip output is decompressible by at-service-common', async () => {
147
+ const items = [{ id: 1 }, { id: 2 }];
148
+ const json = JSON.stringify(items);
149
+ const compressed = await gzip(Buffer.from(json, 'utf8'));
150
+ const base64 = compressed.toString('base64');
151
+ const result = await (0, compression_1.decompressFromBase64)(base64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
152
+ expect(result).toEqual(items);
153
+ });
154
+ });
155
+ describe('Golden Payload Compatibility', () => {
156
+ it('golden payload from at-cf-tracking-api is decompressible', async () => {
157
+ const result = await (0, compression_1.decompressFromBase64)(GOLDEN_GZIP_BASE64, sqs_bundled_client_types_1.CompressionAlgorithm.GZIP);
158
+ expect(result).toEqual(GOLDEN_ITEMS);
159
+ });
160
+ it('golden payload works through full unbundleRecords path', async () => {
161
+ const envelope = {
162
+ v: 1,
163
+ c: 'gzip',
164
+ n: GOLDEN_ITEMS.length,
165
+ p: GOLDEN_GZIP_BASE64,
166
+ s: 179,
167
+ };
168
+ const wrapped = {
169
+ messageId: 'golden-test-id',
170
+ messageType: 'TRACKING_EVENT_COLLECT',
171
+ messageTime: new Date().toISOString(),
172
+ messageBody: envelope,
173
+ };
174
+ const sqsRecord = createSQSRecord(JSON.stringify(wrapped));
175
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
176
+ expect(result.items).toEqual(GOLDEN_ITEMS);
177
+ expect(result.stats.bundledSqsRecords).toBe(1);
178
+ });
179
+ it('CompressionStream output matches zlib output content', async () => {
180
+ const json = JSON.stringify(GOLDEN_ITEMS);
181
+ const cfCompressed = await cfWorkerCompress(new TextEncoder().encode(json));
182
+ const nodeCompressed = await gzip(Buffer.from(json, 'utf8'));
183
+ const cfDecompressed = await gunzip(Buffer.from(cfCompressed));
184
+ const nodeDecompressed = await gunzip(nodeCompressed);
185
+ expect(cfDecompressed.toString('utf8')).toBe(json);
186
+ expect(nodeDecompressed.toString('utf8')).toBe(json);
187
+ expect(cfDecompressed.toString('utf8')).toBe(nodeDecompressed.toString('utf8'));
188
+ });
189
+ });
190
+ describe('Unicode and Special Characters', () => {
191
+ it('emoji and CJK characters survive CF Worker compression round-trip', async () => {
192
+ const unicodeItems = [
193
+ { pixelId: 'px_emoji', event: '🎉_celebration', data: { message: 'Success! 🚀✨' } },
194
+ { pixelId: 'px_cjk', event: 'page_view', data: { title: '中文页面标题', description: '日本語の説明' } },
195
+ { pixelId: 'px_rtl', event: 'page_view', data: { title: 'مرحبا بالعالم', content: 'שלום עולם' } },
196
+ ];
197
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', unicodeItems);
198
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
199
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
200
+ expect(result.items).toHaveLength(3);
201
+ expect(result.items).toEqual(unicodeItems);
202
+ const item0 = result.items[0];
203
+ const item1 = result.items[1];
204
+ const item2 = result.items[2];
205
+ expect(item0.event).toBe('🎉_celebration');
206
+ expect(item0.data.message).toBe('Success! 🚀✨');
207
+ expect(item1.data.title).toBe('中文页面标题');
208
+ expect(item2.data.title).toBe('مرحبا بالعالم');
209
+ });
210
+ it('special characters in JSON survive round-trip', async () => {
211
+ const specialItems = [
212
+ { pixelId: 'px_special', data: { name: 'O\'Brien & Co.', note: 'Line1\nLine2\tTabbed' } },
213
+ { pixelId: 'px_quotes', data: { text: 'He said "hello"', escaped: '\\backslash' } },
214
+ ];
215
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', specialItems);
216
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
217
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
218
+ expect(result.items).toEqual(specialItems);
219
+ });
220
+ });
221
+ describe('Large Payload Handling', () => {
222
+ it('100 items compressed by CF Worker decompresses correctly', async () => {
223
+ const items = Array.from({ length: 100 }, (_, i) => ({
224
+ pixelId: `px_${i.toString().padStart(4, '0')}`,
225
+ event: i % 2 === 0 ? 'page_view' : 'purchase',
226
+ timestamp: new Date(Date.now() - i * 1000).toISOString(),
227
+ }));
228
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
229
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
230
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
231
+ expect(result.items).toHaveLength(100);
232
+ expect(result.items).toEqual(items);
233
+ });
234
+ it('deeply nested objects survive compression', async () => {
235
+ const nestedItems = [
236
+ {
237
+ pixelId: 'px_nested',
238
+ data: {
239
+ level1: {
240
+ level2: {
241
+ level3: {
242
+ level4: {
243
+ value: 'deep value',
244
+ array: [1, 2, 3, { nested: true }],
245
+ },
246
+ },
247
+ },
248
+ },
249
+ },
250
+ },
251
+ ];
252
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', nestedItems);
253
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
254
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
255
+ expect(result.items).toEqual(nestedItems);
256
+ const item = result.items[0];
257
+ expect(item.data.level1.level2.level3.level4.value).toBe('deep value');
258
+ });
259
+ });
260
+ describe('Edge Cases', () => {
261
+ it('empty array compresses/decompresses correctly', async () => {
262
+ const items = [];
263
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
264
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
265
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
266
+ expect(result.items).toHaveLength(0);
267
+ expect(result.failedMessageIds).toHaveLength(0);
268
+ });
269
+ it('single item compresses/decompresses correctly', async () => {
270
+ const items = [{ pixelId: 'px_single' }];
271
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
272
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
273
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
274
+ expect(result.items).toEqual(items);
275
+ });
276
+ it('null and undefined values in objects preserved', async () => {
277
+ const items = [
278
+ { pixelId: 'px_nulls', value: null, nested: { alsoNull: null } },
279
+ { pixelId: 'px_zero', count: 0, price: 0.0 },
280
+ { pixelId: 'px_empty', name: '', items: [] },
281
+ { pixelId: 'px_bool', enabled: false, disabled: true },
282
+ ];
283
+ const bundledMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', items);
284
+ const sqsRecord = createSQSRecord(JSON.stringify(bundledMessage));
285
+ const result = await (0, sqs_unbundle_1.unbundleRecords)([sqsRecord]);
286
+ expect(result.items).toEqual(items);
287
+ const item0 = result.items[0];
288
+ const item1 = result.items[1];
289
+ const item2 = result.items[2];
290
+ const item3 = result.items[3];
291
+ expect(item0.value).toBeNull();
292
+ expect(item0?.nested?.alsoNull).toBeNull();
293
+ expect(item1.count).toBe(0);
294
+ expect(item1.price).toBe(0.0);
295
+ expect(item2.name).toBe('');
296
+ expect(item2.items).toEqual([]);
297
+ expect(item3.enabled).toBe(false);
298
+ expect(item3.disabled).toBe(true);
299
+ });
300
+ });
301
+ describe('GZIP Header Validation', () => {
302
+ it('CF Worker compression produces valid GZIP header', async () => {
303
+ const data = new TextEncoder().encode('test data');
304
+ const compressed = await cfWorkerCompress(data);
305
+ expect(compressed[0]).toBe(0x1f);
306
+ expect(compressed[1]).toBe(0x8b);
307
+ expect(compressed[2]).toBe(8);
308
+ });
309
+ it('Node zlib compression produces valid GZIP header', async () => {
310
+ const compressed = await gzip(Buffer.from('test data', 'utf8'));
311
+ expect(compressed[0]).toBe(0x1f);
312
+ expect(compressed[1]).toBe(0x8b);
313
+ expect(compressed[2]).toBe(8);
314
+ });
315
+ });
316
+ describe('Mixed Batch Processing', () => {
317
+ it('handles mix of CF Worker compressed and Node compressed records', async () => {
318
+ const cfItems = [{ pixelId: 'px_cf_001' }, { pixelId: 'px_cf_002' }];
319
+ const cfMessage = await createCfWorkerBundledMessage('TRACKING_EVENT_COLLECT', cfItems);
320
+ const nodeItems = [{ pixelId: 'px_node_001' }];
321
+ const nodeJson = JSON.stringify(nodeItems);
322
+ const nodeCompressed = await gzip(Buffer.from(nodeJson, 'utf8'));
323
+ const nodeEnvelope = {
324
+ v: 1,
325
+ c: 'gzip',
326
+ n: 1,
327
+ p: nodeCompressed.toString('base64'),
328
+ s: nodeJson.length,
329
+ };
330
+ const nodeMessage = {
331
+ messageId: crypto.randomUUID(),
332
+ messageType: 'TRACKING_EVENT_COLLECT',
333
+ messageTime: new Date().toISOString(),
334
+ messageBody: nodeEnvelope,
335
+ };
336
+ const legacyItem = { pixelId: 'px_legacy' };
337
+ const records = [
338
+ createSQSRecord(JSON.stringify(cfMessage), 'msg-cf'),
339
+ createSQSRecord(JSON.stringify(nodeMessage), 'msg-node'),
340
+ createSQSRecord(JSON.stringify(legacyItem), 'msg-legacy'),
341
+ ];
342
+ const result = await (0, sqs_unbundle_1.unbundleRecords)(records);
343
+ expect(result.items).toHaveLength(4);
344
+ expect(result.failedMessageIds).toHaveLength(0);
345
+ expect(result.stats.bundledSqsRecords).toBe(2);
346
+ expect(result.stats.legacySqsRecords).toBe(1);
347
+ const pixelIds = result.items.map((item) => item.pixelId);
348
+ expect(pixelIds).toContain('px_cf_001');
349
+ expect(pixelIds).toContain('px_cf_002');
350
+ expect(pixelIds).toContain('px_node_001');
351
+ expect(pixelIds).toContain('px_legacy');
352
+ });
353
+ });
354
+ });
355
355
  //# sourceMappingURL=cross-platform-compression.spec.js.map