@adtrackify/at-service-common 4.0.31 → 4.0.33

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